Functional Encryption
定義
Functional Encryptionは、暗号化されたデータに対して特定の関数を適用することを可能にする暗号システムです。これにより、データの機密性を保ちながら、限定的な情報や計算結果のみを取得することができます。
基本的な仕組み
暗号化: データはパブリックキーで暗号化されます。
関数キー生成: 特定の関数fに対応する関数キーSK_fが生成されます。
復号: 暗号文とSK_fを用いて、f(データ)の結果のみが得られます。
https://scrapbox.io/files/66b9fd368737cb001ccafdee.png
種類
Public-key Functional Encryption: 誰でも暗号化できますが、関数キーは制御されています。
Private-key Functional Encryption: 暗号化と関数キー生成の両方が制御されています。
課題
効率性: 現在の構成は多くの場合、実用的な効率性を達成していません。
表現力: サポートできる関数の範囲を広げる研究が進行中です。
セキュリティモデル: さまざまな攻撃モデルに対する安全性の証明が必要です。
FEとHEの相違点
Functional Encryption (FE) と Homomorphic Encryption (HE) は、両者とも暗号化されたデータに対する計算を可能にする先進的な暗号システムですが、いくつかの重要な違いと共通点があります。これらを比較して説明します。
共通点:
両方とも、暗号化されたデータに対して何らかの計算や操作を行うことができます。
どちらも、元のデータを露出させずに計算を行うことで、データのプライバシーを保護します。
クラウドコンピューティング、プライバシー保護データ分析、セキュアな機械学習などの分野で応用が期待されています。
違い:
計算結果の形式:
- HE: 計算結果も暗号化された状態で得られます。
- FE: 計算結果は平文で得られます。
計算の柔軟性:
- HE: 理論上、任意の計算が可能です(特に完全準同型暗号の場合)。
- FE: あらかじめ定義された特定の関数のみが適用可能です。
アクセス制御:
- HE: 計算は誰でも行えますが、結果の解読には秘密鍵が必要です。
- FE: 特定の関数に対応する関数キーを持つ人のみが計算を行え、結果を得られます。
キー管理:
- HE: 通常、単一の鍵ペア(公開鍵と秘密鍵)を使用します。
- FE: マスター鍵と、各関数に対応する関数キーが必要です。
用途の特化:
- HE: データの所有者が知らない任意の計算を行う場合に適しています。
- FE: データの所有者が許可した特定の計算のみを行う場合に適しています。
構成方法:
- HE: 格子ベースの暗号や整数ベースの暗号など、特定の数学的問題に基づいて構成されます。
- FE: さまざまな暗号プリミティブ(ペアリングベース、格子ベース、iOなど)を用いて構成されます。
参考文献