View in English

  • メニューを開く メニューを閉じる
  • Apple Developer
検索
検索を終了
  • Apple Developer
  • ニュース
  • 見つける
  • デザイン
  • 開発
  • 配信
  • サポート
  • アカウント
次の内容に検索結果を絞り込む

クイックリンク

5 クイックリンク

ビデオ

メニューを開く メニューを閉じる
  • コレクション
  • トピック
  • すべてのビデオ
  • 利用方法

WWDC25に戻る

  • 概要
  • トランスクリプト
  • コード
  • 量子セキュリティ対応の暗号化の最前線

    量子コンピューティングにおける新たな脅威から、アプリの機密ユーザーデータを保護し、ユーザーのプライバシーを確保する方法を学びましょう。量子攻撃のさまざまな手法、既存の暗号化プロトコルへの影響、量子セキュリティ対応の暗号化により量子攻撃に対抗する方法について説明します。量子セキュリティ対応TLSを使用してネットワークデータを保護する方法や、CryptoKitの量子セキュリティ対応APIを使用してアプリケーションデータを保護する方法についても確認します。

    関連する章

    • 0:00 - イントロダクション
    • 1:18 - 量子攻撃
    • 4:49 - 量子セキュリティ対応の暗号化
    • 8:56 - ネットワークデータの保護
    • 12:08 - カスタムプロトコルの保護

    リソース

    • Apple CryptoKit
    • Message with PQ3: The new state of the art in quantum-secure messaging at scale
    • Prepare your network for quantum-secure encryption in TLS
    • Using the quantum-secure APIs
      • HDビデオ
      • SDビデオ
  • このビデオを検索

    こんにちは 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)

Developer Footer

  • ビデオ
  • WWDC25
  • 量子セキュリティ対応の暗号化の最前線
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習とAI
    • オープンソース(英語)
    • セキュリティ
    • SafariとWeb(英語)
    メニューを開く メニューを閉じる
    • 英語ドキュメント(完全版)
    • 日本語ドキュメント(一部トピック)
    • チュートリアル
    • ダウンロード(英語)
    • フォーラム(英語)
    • ビデオ
    Open Menu Close Menu
    • サポートドキュメント
    • お問い合わせ
    • バグ報告
    • システム状況(英語)
    メニューを開く メニューを閉じる
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles(英語)
    • フィードバックアシスタント
    メニューを開く メニューを閉じる
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(英語)
    • News Partner Program(英語)
    • Video Partner Program(英語)
    • セキュリティ報奨金プログラム(英語)
    • Security Research Device Program(英語)
    Open Menu Close Menu
    • Appleに相談
    • Apple Developer Center
    • App Store Awards(英語)
    • Apple Design Awards
    • Apple Developer Academy(英語)
    • WWDC
    Apple Developerアプリを入手する
    Copyright © 2025 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン