Swift、Homomorphic Encryption(準同型暗号)パッケージを公開
(swift.org)- 新しいSwiftのオープンソースパッケージ
swift-homomorphic-encryptionを公開 - 準同型暗号(HE)は、暗号化されたデータを復号せずに演算できる暗号技術
- クライアントが暗号化されたデータをサーバーに送り、サーバーはそれを演算して結果を返す
- サーバーは元データを復号せず、復号鍵にもアクセスしない
- クラウドサービスにおいて、ユーザーデータのプライバシーとセキュリティを保護する新たな機会を提供
Appleの活用事例
- iOS 18の新機能 Live Caller ID Lookup に準同型暗号を使用
- Live Caller ID Lookup は暗号化されたクエリをサーバーに送り、電話番号に関する情報を提供
- サーバーはリクエスト内の特定の電話番号を知ることができない
live-caller-id-lookup-exampleパッケージを通じて機能をテスト可能
主な機能
- Swift on Server、Hummingbird HTTPフレームワーク、クロスプラットフォームをサポート
- Benchmarkライブラリによる容易なベンチマーク
- Swift Crypto の高性能な低レベル暗号プリミティブ
Private Information Retrieval(PIR)
- Live Caller ID Lookup は Private Information Retrieval(PIR)に依存
- クライアントがサーバーにキーワードを送り、関連する値を取得
- サーバーがキーワードを知らないように実装
- 準同型暗号を使って大規模データベースを効率的に処理
準同型暗号
- 準同型暗号では、復号なしで暗号化データに対して演算が可能
- 一般的なワークフロー:
- クライアントが機密データを暗号化してサーバーに送信
- サーバーが暗号文に対して演算を実行
- サーバーが結果の暗号文をクライアントに送信
- クライアントが結果を復号
- Brakerski-Fan-Vercauteren(BFV)HEスキームを実装
- BFV は量子耐性を持つ RLWE 問題に基づく
準同型暗号の使用例
- さまざまなプライバシー保護アプリケーションに有用
- サンプルコード:
import HomomorphicEncryption // Bfv 체계에 대한 몇 가지 암호화 파라미터를 선택하는 것으로 시작 // *이 암호화 파라미터는 안전하지 않으며 테스트용으로만 적합* let encryptParams = try EncryptionParameters(from: .insecure_n_8_logq_5x18_logt_5) // 매개변수를 사용하여 HE 계산을 위한 사전 계산을 수행 let context = try Context(encryptionParameters: encryptParams) // Coefficient 인코딩을 사용하여 N 값을 인코딩 let values: [UInt64] = [8, 5, 12, 12, 15, 0, 8, 5] let plaintext: Bfv.CoeffPlaintext = try context.encode(values: values, format: .coefficient) // 비밀 키를 생성하고 이를 사용하여 일반 텍스트를 암호화 let secretKey = try context.generateSecretKey() let ciphertext = try plaintext.encrypt(using: secretKey) // 일반 텍스트를 해독하면 원래 값을 얻을 수 있음 let decrypted = try ciphertext.decrypt(using: secretKey) let decoded: [UInt64] = try decrypted.decode(format: .coefficient) precondition(decoded == values)
GN⁺の要約
- 準同型暗号は、データプライバシーを保護しつつクラウドサービスの新たな可能性を開く
- AppleのiOS 18機能に適用され、実用性を実証
- Swiftコミュニティで多様なプライバシー保護アプリケーションを開発可能
- 類似機能を提供する他のプロジェクトには Microsoft SEAL、IBM HELib などがある
1件のコメント
Hacker Newsの意見