
-
量子セキュリティ対応の暗号化の最前線
量子コンピューティングにおける新たな脅威から、アプリの機密ユーザーデータを保護し、ユーザーのプライバシーを確保する方法を学びましょう。量子攻撃のさまざまな手法、既存の暗号化プロトコルへの影響、量子セキュリティ対応の暗号化により量子攻撃に対抗する方法について説明します。量子セキュリティ対応TLSを使用してネットワークデータを保護する方法や、CryptoKitの量子セキュリティ対応APIを使用してアプリケーションデータを保護する方法についても確認します。
関連する章
- 0:00 - イントロダクション
- 1:18 - 量子攻撃
- 4:49 - 量子セキュリティ対応の暗号化
- 8:56 - ネットワークデータの保護
- 12:08 - カスタムプロトコルの保護
リソース
-
このビデオを検索
こんにちは Cryptography Engineering チームのCathieです このビデオでは量子セキュリティ対応の 暗号化を進める方法について紹介します
皆さんは人々の生活の中で特権的な位置を 占めるアプリを作り出しています アプリはユーザーに関する個人データや 機密データにアクセスでき 暗号化を使用してそのデータを保護します
しかし 量子コンピューティングの台頭は この暗号化のセキュリティを脅かし 量子攻撃は 広く使用されている多くの アルゴリズムを破ったり弱めたりします このリスクに先んじて 量子セキュリティ 対応の暗号化に移行する必要があります まず 暗号化に関する 様々な量子攻撃について説明し 影響を受けるプロトコルや 量子セキュリティ対応の暗号化で どのように防御できるかを説明します 次に TLSで量子セキュリティ対応の 暗号化を使用して量子攻撃から ネットワークデータを 保護する方法について説明します 最後に CryptoKitの新しい量子 セキュリティ対応APIを使って カスタムプロトコルを保護する 方法について説明します
では 暗号に対する 量子攻撃から始めましょう
個人データや機密データにアクセスできる アプリについて考えてみましょう 健康状態 位置情報 写真などです アプリは暗号化を使ってデータを保護します 例えば このデータをサーバにアップロードし デバイス間でバックアップや 同期を行います このデータはTLSで保護されています これらやその他多くのワークフローでは 暗号化はユーザーデータの セキュリティにとって重要です
しかし この暗号化が 量子攻撃の脅威にさらされています これには データの機密性を確保するために 使用される暗号化と データの信頼性を保証するために 使用される署名が含まれます エキスパートは 十分に強力な量子 コンピュータが登場することに同意していて 量子コンピュータが存在する以前から いくつかの量子攻撃は有効だとしています
例えば 攻撃者が 暗号化されたデータを現在収集しているのは 「ハーベスト攻撃」の可能性があります 攻撃の仕組みを説明します
前の例に戻りますが アプリには 健康 位置情報 写真などの 機密性の高いユーザーデータが含まれます それをサーバに送信する必要があります TLSでデータを暗号化して送信します ネットワークを監視している攻撃者は 暗号化されたデータを収集して保存できます まだそれを復号できませんが 将来 十分に強力な 量子コンピュータが登場するまで待ち 利用できるようになったら 収集したデータを解読して 機密性の高い ユーザーデータにアクセスできます
「ハーベスト攻撃」は 攻撃者がアクセスできる 暗号化されたデータ 特に転送中のデータに影響します サーバにデータを送信したり デバイス間でデータを同期したり 暗号化したデータをネットワークで 送信したりするアプリに影響します 機密性が破られ 攻撃者はネットワークトラフィックを 復号化した後に読み取ることができます 攻撃者はすでにネットワークトラフィックを 収集している可能性があります 私たちは皆 この攻撃を軽減するために 今すぐ対策を講じる必要があります 受動的な情報の収集とは対照的に 後で復号する攻撃である 能動的な攻撃の例を説明します 量子コンピュータを持つ攻撃者は プロトコルに能動的に 関与する必要があります
署名鍵がユーザーに紐づけられている アプリの例を想像してみてください アプリはその鍵を使って 署名でユーザーをサーバに認証します
ネットワークトラフィックを監視している 攻撃者は その署名を傍受します 十分に強力な量子コンピュータを使用して 暗号を解読し署名鍵を盗みます 盗んだ鍵を使って署名し サーバに送信しユーザーを偽装します サーバは攻撃者の署名をユーザーからの ものであるかのように受け入れます その後 攻撃者はユーザーに代わって アクションを実行します
先ほど説明した能動的な攻撃は 署名に影響を与えます 攻撃者は認証を偽造し 被害者に代わってアクションを 実行できるため 信頼性が損なわれます 影響を受けるのは WebAuthや 多要素認証などの ユーザー認証を行うアプリや 資産署名などのデータ認証を行うアプリです この攻撃を実行できるほど強力な 量子コンピュータはまだ存在しないため これは将来の脅威です しかし量子コンピュータの登場は間近です
量子攻撃は 広く普及している暗号の セキュリティにとって 非常に現実的な脅威です これらの攻撃に先手を打つために 暗号化コミュニティは 新しいアルゴリズムの作成と 標準化に注力してきました これは量子攻撃に対して安全であり 量子セキュリティ対応の暗号化と呼ばれます これらのアルゴリズムは今すぐ 導入する準備ができています 今日使用されている従来の 非量子コンピュータで実行できますが 従来のコンピュータと量子コンピュータの 両方による攻撃からは安全であり続けます より詳細に説明しますが 暗号化が複雑であっても 修正は簡単です
暗号化は 公開鍵暗号化と 対称鍵暗号化に分けることができます
これらのカテゴリは量子攻撃によって 異なる影響を受けるため 対処方法が異なります まず 公開鍵暗号化から説明します これには 公開鍵暗号と署名が含まれます 従来の公開鍵暗号化は 数学的問題に基づいています たとえばRSAや楕円曲線上の 離散対数などですが これは従来のコンピュータでは 演算負荷が高く 解くことができません
しかし 量子コンピュータは従来の コンピュータよりも指数関数的に速く これらの問題を解くことができるようになり アルゴリズムを破ることになります したがって 量子セキュリティ対応 アルゴリズムに置き換える必要がありますが これは従来のコンピュータでも 量子コンピュータでも演算負荷が高く 解くことができません
量子セキュリティ対応の暗号化の場合 ポスト量子ハイブリッド公開鍵暗号化 略して ポスト量子HPKEを使う必要があります
量子セキュリティ対応の署名の場合は ポスト量子ハイブリッド署名を使うべきです これらはどちらもポスト量子ハイブリッド 構造であり つまり新しい ポスト量子アルゴリズムと現在の標準的 アルゴリズムを組み合わせています ハイブリッド構造を破るには ポスト量子アルゴリズムと 標準的アルゴリズムの両方を 破る必要があるため ハイブリッド構造は 最高のセキュリティ保証を提供する Appleが推奨する 量子セキュリティ対応の暗号化です 対称鍵暗号化には対称鍵暗号と メッセージ認証コードが含まれます これらのアルゴリズムも 数学的問題に基づいており 従来のコンピュータでは困難です しかし これらの問題は 従来の公開鍵 アルゴリズムとは全く異なる 量子コンピュータの影響を受けます 量子コンピュータは これらの問題の安全性を 小さな一定の係数に縮小するだけなので 対称鍵暗号化を弱めることしかできません したがって 従来の安全な 対称鍵アルゴリズムは 鍵のサイズを2倍にすることで 量子的に安全にできます
128ビット鍵暗号化をアップグレードし 代わりに256ビット鍵を使用します 例えば AES-128からAES-256に移行します 先ほど説明した量子攻撃と関連づけると 量子セキュリティ対応の暗号化への移行で 最も優先されるのは 「ハーベスト攻撃」を防御することです というのも 暗号化されたデータを 転送中に送信するプロトコルでは 今すぐにでもデータを収集されてしまう 可能性があるからです これを防御するには 転送中のデータに量子セキュリティ対応の 暗号化を使うように移行する必要があります これは機密性の高いユーザーデータを プロトコルが処理する場合に特に重要です
実際 この攻撃から保護することは 非常に重要であり AppleはすでにiMessageで この対策を行っています
iMessageはネットワーク経由で送信される 機密性の高いユーザーの会話を保護します 量子攻撃に先んじるために iOS 17.4では iMessage PQ3をリリースしました これは大規模な量子セキュリティ対応の メッセージングにおける最先端技術です iMessageの暗号プロトコルを一から作り直し 最初の鍵確立と会話中の再暗号化に 量子セキュリティ対応の ハイブリッド暗号化を提供します iMessage PQ3のモチベーションと デザインの詳細については Apple Security Blogをお読みください iMessage PQ3は大規模な量子 セキュリティ対応のメッセージングにおいて 大きな進歩を遂げましたが ネットワークデータ保護の一部にすぎません すべてのHTTPSトラフィックを含む ほとんどのネットワークデータは TLSで保護されています 量子セキュリティ対応TLSに アップグレードして 量子攻撃からデータを守る方法を紹介します
TLS 1.3は 量子セキュリティ対応の 暗号化のアップグレードを行い ネットワークデータを ハーベスト攻撃から保護します アップグレードでは 量子セキュリティ対応の鍵交換を使用します このような標準化を実現したのが 米国立標準技術研究所と Internet Engineering Task Forceです TLSにおける 量子セキュリティ対応の暗号化は すでに主要なサービスプロバイダに 採用されており すぐに使用し簡単に有効にできます
iOS 26以降 Appleのオペレーティング システムでは 推奨されるネットワークAPI URLSession Network.frameworkで TLSの量子セキュリティ対応の暗号化が デフォルトで有効になりました 従来のTLSと同様に クライアントとTLS終端サーバ間の 通信を保護します
Secure Transportのような 従来のネットワーキングAPIは 量子セキュリティ対応TLSをサポート しないため 移行する必要があります カスタムネットワークスタックは アップグレードが簡単ではありません これは URLSessionに移行したり Network.frameworkで ネットワークスタックを 強化したりする絶好の機会です
デバイスとサーバの間で TLSの量子セキュリティ対応の 暗号化を機能させるには サーバ側でも有効にする必要があります 大半のデベロッパは コンテンツ/Webサイト ホスティングプロバイダを使います これらのほとんどはTLSの量子セキュリティ 対応の暗号化をすでにサポートしています デフォルトで有効になっているか 構成を変更することで簡単に有効にできます 独自のサーバを展開する場合 TLSライブラリと構成を明示的に アップグレードする必要があるため 少し手間がかかります ドキュメントで詳細をご確認の上 ネットワークを準備し TLSに量子セキュリティ対応の 暗号化を導入しましょう
デバイスからAppleサーバへのデータを 暗号化するシステムサービスを 使っている方もいるかと思います Appleは模範を示しており iOS 26では これらのシステムサービスではTLSの量子 セキュリティ対応の暗号化が クライアント側で有効になり サーバ側でも展開されます CloudKitはアプリのデータを iCloudに保存し デバイス間や Web上で同期します
Appleのプッシュ通知では アプリが タイムリーで関連性の高いコンテンツを ユーザーに配信します
iCloudプライベートリレーは アプリ内の DNSと暗号化されていないHTTP トラフィックを保護します これらのシステムサービスはすべてTLSの 量子セキュリティ対応の暗号化を実現します
機密性の高いユーザーデータを扱う Appleの組み込みアプリである Safari 天気 マップなども TLSの量子セキュリティ対応の暗号化の サポートを展開しています そして あなたのアプリもそうあるべきです
ほとんどのデベロッパは TLSの量子 セキュリティ対応の暗号化を使えば ハーベスト攻撃から保護するのに十分です ただ 転送中のデータを保護する方法は TLSだけではありません カスタム暗号化プロトコルを 使うこともできます この場合は暗号化APIを直接使用して データを保護します その際は 代わりに量子セキュリティ対応の 暗号化のAPIを使用するように移行します
そのためには まず現在の暗号化の 使用状況を把握する必要があります 暗号化されたデータの転送や署名など プロトコルがどこで量子の影響を受ける 暗号化を使用するかを 特定する必要があります プロトコルを更新して量子セキュリティ 対応の暗号化を使用する方法を計画します その後 CryptoKitを使用して アップデートを実装します 新しい量子セキュリティ対応 APIのおかげです
CryptoKitは全Appleプラットフォームで 利用可能なSwiftフレームワークで 暗号アルゴリズムのAPIを備えています iOS 26ではCryptoKitに新しい 量子セキュリティ対応APIが導入されました パフォーマンスが高く 使いやすく 安全です タイミング攻撃やサイドチャネル攻撃に 対する保護も強化され Secure Enclaveでハードウェアから 分離された実行を強制します 正確性の保証もあります コアの実装が正式に検証されており 標準化された仕様と 機能的に同等であることが 証明されています
新しいCryptoKit APIの使用方法として 例えば クライミングアプリは カスタム暗号化プロトコルを使用して 転送中のアプリデータを保護します
例えば ユーザーの健康データ 地理的位置トラッキング クライミングで撮った写真に アクセスできるアプリを作るとします このデータのエンドツーエンドの暗号化を ユーザーの他のデバイスに提供する場合 これは機密情報であり サーバからも攻撃者からも 秘匿したいものです そのためには カスタムプロトコルを作成し ユーザーの他のデバイスへの データを暗号化し 暗号化されたデータを サーバ経由で中継します
この場合 量子セキュリティ対応TLS だけでは不十分です TLSはクライアントと終端サーバ間の 通信を保護するものであり この例ではユーザーデータを サーバに公開したくないからです
このクライミングアプリの例のように 転送中のデータを暗号化するアプリは 量子セキュリティ対応の暗号化を使用して ハーベスト攻撃から防御する必要があります
iOS 26以降 CryptoKitは ポスト量子ハイブリッド公開鍵暗号化 略して ポスト量子HPKEに基づく 量子セキュリティ対応の 暗号化APIをサポートしています これは量子攻撃から機密性の高い ユーザーデータを保護するため 例として挙げたクライミングアプリの 移行先として最適です この新しいAPIの使用方法を示す コードサンプルを紹介します
送信者と受信者の両方が Xウイングのポスト量子 HPKE暗号スイートを定義します Xウイングについては サンプルコードの デモの後で詳しく説明します 受信者側では Xウイングの鍵のペアを作成します アプリがすでにCryptoKitで 従来のHPKEを使用している場合 ポスト量子HPKEへの移行は 暗号スイートと鍵タイプを 変更するだけでかまいません したがって 量子セキュリティ対応 HPKE APIに固有の唯一の部分は 最初の数行だけです
受信者は公開鍵を共有します
次に 受信者の公開鍵で送信者を作成し
送信者のカプセル化鍵で受信者を作成します
送信者は 認証されたメタデータとともに 健康データ 地理的位置トラッキング 写真などの機密性の高い ユーザーデータを暗号化して 暗号文を作成します それを受信者に送信します
受信者は 同じ認証済みメタデータとともに 暗号文を開いて暗号文を復号します
これでユーザーのクライミングデータは 送信者から受信者のデバイスに 量子セキュリティ対応のエンドツーエンド 暗号化で送信されたことになります
サンプルコードで説明したように 量子セキュリティ対応の暗号化には ポスト量子HPKEを使用するべきです これは Xウイングの鍵カプセル化 メカニズム(KEM)を使ってHPKEの 共有鍵を確立します
ポスト量子HPKEとXウイングは ポスト量子ハイブリッド構造であり ポスト量子アルゴリズムと 従来のアルゴリズムを組み合わせて 両者の安全性を保証しています
ML-KEMは XウイングKEMや 他のポスト量子KEMのための ポスト量子構成要素です ML-KEMの暗号化サイズの オーバーヘッドは従来に比べて大きいですが パフォーマンスは従来のものと同等か それ以上です CryptoKitは正式に検証された ML-KEMの実装を使用しており FIPS 203標準仕様と機能的に 同等であることが証明されています Secure Enclaveもサポートしています つまり ML-KEM操作に対して ハードウェア分離実行を適用できます
ポスト量子HPKEを使って データを暗号化する方法を説明しました これはCryptoKitで利用可能な 高レベルAPIです プロトコル仕様のサポートなど 独自の暗号化プロトコルを 実装する必要がある場合 CryptoKitには 低レベルの量子 セキュリティ対応APIも用意されています
ポスト量子HPKEは 鍵のカプセル化にXウイングを使用し ML-KEMをポスト量子 構成要素として使用します CryptoKitは現在 これらすべてを 暗号化APIとしてサポートしています 同様に 量子セキュリティ対応の署名は ML-DSAを ポスト量子構成要素として使用します CryptoKitは現在 署名APIとして ML-DSAもサポートしています ML-KEMと同様に ML-DSA実装は Secure Enclaveをサポートしています
ML-DSA APIは アプリのコード レベルでポスト量子ハイブリッド署名を 構築するために使用できます
CryptoKit APIはクライアント側の デバイス上で実行されます 一部のプロトコルでは クライアントとサーバ間の 暗号相互運用性を必要とします これをサポートする最も簡単な方法の1つは サーバでSwift Cryptoを使うことです Swift CryptoはSwiftライブラリであり サーバ用のCryptoKitとAPIの 互換性を提供して シームレスな開発を保証します これには iOS 26でCryptoKitが サポートするすべての量子セキュリティ対応 APIのためのサーバ互換性が含まれます これらの量子セキュリティ対応APIは 標準化されたプロトコルの実装であるため サーバ側では標準互換の ライブラリを使用できます CryptoKitとSwift Cryptoの新しい 量子セキュリティ対応APIにより 量子セキュリティ対応の暗号化に 移行することで 量子攻撃からアプリを保護する ツールを入手できます これらの新しいAPIの使い方については ビデオリソースの サンプルコードをご覧ください
これで アプリのデータを量子攻撃から 保護する方法がわかりました 何よりもまず ネットワークデータの保護に TLSの量子セキュリティ対応の 暗号化を活用しましょう これは 推奨のネットワークAPIを使えば 特に簡単です デフォルトで有効になっています
サーバ構成を更新して サーバ側で有効にします
カスタム暗号化プロトコルでは 新しい量子 セキュリティ対応CryptoKit APIを使用します データの暗号化には 例のクライミングアプリのように ポスト量子HPKEを使用します
量子攻撃は遠い未来の話ではありません 現実に迫っている話なのです だからこそ先手を打って 量子セキュリティ対応の 暗号化に移行しましょう クライマーのようにやりきりましょう
-
-
15:00 - HPKE code sample
let ciphersuite = HPKE.Ciphersuite.XWingMLKEM768X25519_SHA256_AES_GCM_256 // Recipient let privateKey = try XWingMLKEM768X25519.PrivateKey.generate() let publicKey = privateKey.publicKey // Sender var sender = try HPKE.Sender(recipientKey: publicKey, ciphersuite: ciphersuite, info: info) let encapsulatedKey = sender.encapsulatedKey // Recipient var recipient = try HPKE.Recipient(privateKey: privateKey, ciphersuite: ciphersuite, info: info, encapsulatedKey: encapsulatedKey) // Sender encrypts data let ciphertext = try sender.seal(userData, authenticating: metadata) // Recipient decrypts message let decryptedData = try recipient.open(ciphertext, authenticating: metadata) #expect(userData == decryptedData)
-