タグ別アーカイブ: コンフィデンシャルコンピューティング

コンフィデンシャルコンピューティングとクラウドデータセキュリティ

CSAジャパン理事 諸角昌宏
2023/2/5

本ブログは、最近注目を集めているコンフィデンシャルコンピューティングについて、クラウドのデータセキュリティの観点から説明する。特に、クラウド環境での暗号化の基本である利用者鍵管理との関係について触れる。

  1. コンフィデンシャルコンピューティングとクラウドデータセキュリティ
    コンフィデンシャルコンピューティングの詳細については、様々な資料や情報が出ているのでそちらを参照していただくとして、ここではクラウドのデータセキュリティの観点からコンフィデンシャルコンピューティングを説明する。

    コンフィデンシャルコンピューティングを推進しているConfidential Computing Consortium(CCC)では、「ハードウェアベースの信頼できる実行環境Trusted Execution Environment(TEE)で計算を実行することで使用中のデータを保護する」と定義している。そうすると、コンフィデンシャルコンピューティングによって、利用者はデータがどのように保護されているかを気にしなくてもすむようになる。

    これを、クラウドにおけるデータセキュリティの観点で説明すると以下のようになる。
    クラウド(だけではないが)でのデータセキュリティを考える場合、以下の3つのデータの状態を考慮する必要がある。

    • 保存中のデータ(Data At Rest)
    • 移動中のデータ(Data In MotionあるいはData In Transit)
    • 使用中のデータ(Data In Use)

データを保護するためには暗号化が重要な技術となる。暗号化することで、マルチテナント環境における隔離を超えたアクセスや不正アクセスに対してデータを保護することができる(情報を保護するといった方が正しいが、ここではデータと情報を特に区別しない)。これらの3つの状態において、保存中と移動中のデータに対しては暗号化を行うことができるが、使用中のデータには暗号化を行うことができない。それは、アプリケーションが暗号化されたデータを処理することができないためで、アプリケーションが処理を行うためには暗号化されたデータは必ず復号する必要がある。クラウドにおいてはこれが特に問題となる。クラウド上のアプリケーションは仮想マシンなどの仮想環境で動作しているのがほとんどであるため、ハイパーバイザや仮想マシンを狙った攻撃により、暗号化されていない使用中のデータが狙われる可能性がある。コンフィデンシャルコンピューティングでは、この使用中のデータを保護するため、プロセッサ上の隔離された環境でプログラムを実行し、データに不正アクセスしたり書き換えたりすることができないようにしている。これにより、使用中のデータを保護することが可能になる。

このように、コンフィデンシャルコンピューティングにより、データの3つの状態のすべてにおいてデータを保護することが可能になる。すでにAWS, Azure, Google等で採用されているように、コンフィデンシャルコンピューティングを提供することはクラウドサービスプロバイダにとって重要なこととなると思われる。

  1. コンフィデンシャルコンピューティングと利用者鍵管理

    クラウドにおけるデータ保護としてもう1つ考慮する必要があるのが鍵の管理である。これは、データの暗号化に使用される鍵の管理方法の問題で、クラウドにおいては利用者が鍵を管理することが必要である。それは、プロバイダが鍵を保持した場合、クラウド側のインサイダー(管理者)による情報侵害などの問題を引き起こすからである。一方、利用者が鍵を保持した場合、アプリケーションがそのデータを処理できないという問題が発生する。特にSaaS環境においてはこの問題に直面する。そこで用いられているのが、「利用者鍵管理」という方法で、プロバイダが暗号化エンジンを管理するのに対して、利用者が自身の鍵を管理できるようにする仕組みである。BYOKやHYOKという言葉を耳にすることも多いだろう。この詳細については、以下のブログを参照していただきたい。
    https://cloudsecurityalliance.jp/newblog/2022/02/09/%e3%83%87%e3%83%bc%e3%82%bf%e3%81%ae%e6%9a%97%e5%8f%b7%e5%8c%96%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8b%e5%88%a9%e7%94%a8%e8%80%85%e9%8d%b5%e7%ae%a1%e7%90%86%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/

    利用者鍵管理では、一時的にせよプロバイダが鍵を保持することになる(一時的というのは、実装の仕方は様々なのでこの言い方を取る)。また、その鍵を使用して復号し、アプリケーションが処理を行うことになる。したがって、使用中のデータに対する保護はできない。
    一方、コンフィデンシャルコンピューティングでは、使用中のデータの保護はできるが、アプリケーションが処理した後のデータの保存時の暗号化を行うことはできない、というか、暗号化はプロバイダが管理する鍵を用いて行うしかない。そうすると、コンフィデンシャルコンピューティングを利用したとしても、引き続き利用者鍵管理は必要となると考えられる。

  2. まとめ

    使用中のデータの保護と保存時のデータの暗号化を両立させる方法としては、完全準同型暗号が解となる。完全準同型暗号については、先のブログに記載しているのでそちらを参照していただきたい。しかしながら、完全準同型暗号が一般的に利用されるようになるまでにはまだ時間がかかりそうである。
    コンフィデンシャルコンピューティングは、使用中のデータの保護として非常に重要な技術であり、引き続き理解を深めていく必要がある。また、利用者鍵管理も引き続き必要となるし、特に、ISMAP等の要求事項となっているので、こちらの理解も深めていく必要がある。

以上