暗号の詳細解説
Nudge がメッセージを保護する方法(そしてなぜそれが重要か)
Nudge は高リスクの通信のために構築されています:エンドツーエンド暗号化されたメッセージングと通話で、敵対者や能力が進化しても安全を保つように設計されています。このページでは、すべての暗号プリミティブ、Swift パッケージ、およびそれらがどのように連携するかを含む、詳細で技術的なレベルで暗号化を説明します。
メッセージコンテンツはデバイス上で暗号化され、意図された受信者のみが復号化します。サーバーはデータを中継できますが、読み取ることはできません。
将来デバイスキーが侵害された場合でも、メッセージキーが継続的に進化するため、過去のメッセージは保護されたままです。
侵害後、プロトコルは新しい秘密が導入されるにつれて「回復」でき、攻撃者がトラフィックを読み続けられる時間を制限します。
Swift パッケージとアーキテクチャ
Nudge の暗号スタックは、安全なポスト量子メッセージングを提供する上でそれぞれ特定の役割を持つ、いくつかのオープンソース Swift パッケージから構築されています。
PostQuantumSolace
github.com/needletails/post-quantum-solace
すべての暗号操作を調整する高レベルセッション管理 SDK。PostQuantumSolace は、セッションの作成、メッセージの送信、デバイスの管理、キーローテーションの処理のための PQSSession API を提供します。前方秘匿性と侵害後セキュリティを備えたエンドツーエンド暗号化メッセージングを提供するために、Double Ratchet プロトコル実行とポスト量子鍵交換を組み合わせます。
依存関係: DoubleRatchetKit, NeedleTailLogger, NeedleTailAlgorithms
DoubleRatchetKit
github.com/needletails/double-ratchet-kit
Post-Quantum X3DH (PQXDH) 統合を備えた Double Ratchet アルゴリズムを実装します。このパッケージは、前方秘匿性と侵害後セキュリティのためのコアプロトコルを提供します。ハイブリッド鍵交換(Curve25519 + MLKEM1024)、メッセージ鍵導出、ヘッダー暗号化、安全なメッセージングセッションの状態管理を処理します。DoubleRatchetStateManager アクターはラチェット状態を管理し、スレッドセーフな暗号化/復号化操作を提供します。
依存関係: NeedleTailCrypto, NeedleTailLogger, BinaryCodable
NeedleTailCrypto
github.com/needletails/needletail-crypto
Swift Crypto (swift-crypto) と CryptoKit を囲む包括的な暗号ラッパー。NeedleTailCrypto は、鍵生成(Curve25519、P256、P384、P521、MLKEM1024)、対称暗号化/復号化(AES-GCM)、鍵合意(ECDH)、鍵導出(HKDF)、および Apple プラットフォームでの Keychain と Secure Enclave を介した安全な鍵ストレージのための高レベル API を提供します。このパッケージは低レベルの暗号操作を抽象化し、一貫した本番準備が整ったインターフェースを提供します。
依存関係: swift-crypto (Apple), swift-collections
NeedleTailAlgorithms
github.com/needletails/needletail-algorithms
暗号スタック全体で使用されるアルゴリズム実装を提供し、暗号操作のためのデータ構造とユーティリティを含みます。このパッケージには、PostQuantumSolace およびその他の NeedleTails パッケージで使用される共有アルゴリズムコンポーネントが含まれています。
NeedleTailLogger
github.com/needletails/needletail-logger
デバッグ、監視、監査証跡のために暗号スタック全体で使用されるロギングフレームワーク。設定可能なログレベルとスレッドセーフなロギング操作を備えた構造化ロギングを提供します。
BinaryCodable
github.com/needletails/binary-codable
暗号データ構造の効率的なバイナリエンコーディングとデコーディングを提供します。コンパクトでプラットフォームに依存しない形式で鍵、メッセージ、プロトコル状態をシリアル化するために使用されます。
swift-crypto
github.com/apple/swift-crypto
基本的な暗号プリミティブを提供する Apple のクロスプラットフォーム暗号ライブラリ。このパッケージは MLKEM1024 (Kyber)、Curve25519、AES-GCM、SHA-256、SHA-512、HKDF、HMAC、およびその他の標準アルゴリズムを実装します。NeedleTailCrypto とスタック全体を動かす低レベル暗号エンジンです。
暗号プリミティブ
Nudge は、特定のセキュリティ特性、パフォーマンス特性、および古典的攻撃と量子攻撃の両方に対する耐性のために選択された、慎重に選択された暗号プリミティブのセットを使用します。
MLKEM-1024 (Kyber-1024)
何か: MLKEM-1024 は、Kyber アルゴリズムに基づく NIST 標準化ポスト量子鍵カプセル化メカニズム(KEM)です。古典的コンピューターと量子コンピューターの両方からの攻撃に耐えるように設計されています。
何をするか: MLKEM-1024 により、2 つの当事者が安全でないチャネル上で共有秘密鍵を確立できます。一方の当事者が公開/秘密鍵ペアを生成し、もう一方の当事者が公開鍵を使用して共有秘密をカプセル化します。秘密鍵の保持者は、その後秘密をデカプセル化できます。これにより、量子コンピューターを持つ敵対者に対してもセキュリティが提供されます。
なぜ重要か: 古典的鍵交換アルゴリズム(RSA、ECC など)は、大規模な量子コンピューターによって破られます。MLKEM-1024 は「今収穫し、後で復号化」保護を提供します—攻撃者が今日暗号化されたトラフィックを記録したとしても、将来量子コンピューターを使用して復号化することはできません。
実装: swift-crypto (Apple) によって提供され、PQXDH ハンドシェイクで使用
Curve25519
何か: Curve25519 は、楕円曲線 Diffie-Hellman (ECDH) 鍵合意のために設計された高性能楕円曲線です。128 ビットのセキュリティを提供し、現代の暗号システムで広く展開されています。
何をするか: 2 つの当事者が公開鍵を交換することで共有秘密を確立できるようにします。各当事者は、同じ共有秘密を導出するために、秘密鍵を相手の公開鍵と組み合わせます。Curve25519 は、Nudge で鍵合意(ECDH)とデジタル署名(Ed25519)の両方に使用されます。
なぜ重要か: 量子耐性ではありませんが、Curve25519 は古典的攻撃者に対して即座のセキュリティを提供し、非常に高速です。Nudge のハイブリッド PQXDH 設計では、Curve25519 が今日のセキュリティを提供し、MLKEM-1024 が将来の量子脅威に対するセキュリティを提供します。攻撃者がセッションを侵害するには、両方を破る必要があります。
実装: swift-crypto (Apple) によって提供され、PQXDH ハンドシェイクとデバイス鍵署名で使用
HKDF (HMAC ベースの鍵導出関数)
何か: HKDF は、単一の共有秘密または高エントロピー入力から安全に複数の鍵を導出する鍵導出関数です。基礎となるプリミティブとして HMAC(ハッシュベースのメッセージ認証コード)を使用します。
何をするか: 共有秘密(鍵交換から)を取り、暗号化、認証、その他の用途のための目的固有の鍵を導出します。HKDF は、異なる目的に対して異なる鍵が導出されることを保証するために、ソルト(ドメイン分離用)とオプションのコンテキスト情報を使用します。Nudge は、PQXDH 共有秘密からセッション鍵を導出するために SHA-512 を使用した HKDF を使用します。
なぜ重要か: 鍵導出は、異なるコンテキスト間での鍵の再利用を防ぎ、セキュリティにとって重要です。各導出鍵は暗号的に独立しているため、1 つの鍵を侵害しても他の鍵には影響しません。HKDF は、Double Ratchet プロトコルでチェーン鍵からメッセージ鍵を導出するためにも使用されます。
実装: swift-crypto からの HKDF<SHA512> と HKDF<SHA256>、プロトコル全体で使用
AES-GCM (高度暗号化標準 - Galois/カウンターモード)
何か: AES-GCM は、単一の操作で機密性(暗号化)と完全性(認証)の両方を提供する認証暗号アルゴリズムです。Galois/カウンターモードで AES ブロック暗号を使用します。
何をするか: メッセージコンテンツを暗号化し、メッセージが改ざんされていないことを証明する認証タグを生成します。AES-GCM は、Nudge 内のすべてのメッセージペイロードを暗号化するために使用され、メッセージが攻撃者によって読み取られたり変更されたりできないことを保証します。
なぜ重要か: 認証暗号化は、盗聴と改ざんの両方を防ぎます。攻撃者が暗号化されたメッセージを変更すると、認証タグが無効になり、復号化が失敗します。Nudge は AES-256-GCM を使用し、256 ビットのセキュリティを提供します。
実装: swift-crypto (Apple) によって提供され、NeedleTailCrypto を介したすべてのメッセージ暗号化に使用
SHA-256 および SHA-512 (セキュアハッシュアルゴリズム)
何か: SHA-256 と SHA-512 は、任意の入力から固定サイズの出力(それぞれ 256 ビットと 512 ビット)を生成する暗号ハッシュ関数です。一方向関数であり、計算は簡単ですが、計算上逆転することは不可能です。
何をするか: さまざまな目的で暗号スタック全体で使用されます:SHA-256 は Double Ratchet のチェーン鍵導出のために HMAC で使用され、SHA-512 は PQXDH 共有秘密からのセッション鍵導出のために HKDF で使用され、両方とも完全性検証と鍵導出に使用されます。
なぜ重要か: ハッシュ関数は基本的な構成要素です。鍵が決定論的に導出されること、データの完全性を検証できること、暗号操作が一貫した結果を生成することを保証します。SHA-512 は、鍵導出操作に追加のセキュリティマージンを提供します。
実装: swift-crypto (Apple) によって提供され、HKDF、HMAC、および鍵導出で使用
HMAC (ハッシュベースのメッセージ認証コード)
何か: HMAC は、秘密鍵と組み合わせた暗号ハッシュ関数(SHA-256 など)を使用して、メッセージの真正性と完全性の両方を検証するタグを生成するメッセージ認証コードです。
何をするか: Nudge では、HMAC-SHA256 が Double Ratchet プロトコルでチェーン鍵とメッセージ鍵を導出するために使用されます。各ラチェットステップは HMAC を使用して鍵チェーンを進め、鍵が決定論的かつ安全に進化することを保証します。
なぜ重要か: HMAC は、鍵導出が安全で決定論的であることを保証します。前方秘匿性を提供するために Double Ratchet で広く使用されており、各メッセージは前の鍵から導出された一意の鍵を使用するため、1 つの鍵を侵害しても過去または将来の鍵は明らかになりません。
実装: swift-crypto からの HMAC<SHA256>、Double Ratchet 鍵導出で使用
すべてがどのように連携するか
1) ポスト量子ハンドシェイク (PQXDH)
2 人のユーザーが会話を開始すると、Nudge はハイブリッド鍵交換を実行します:
- Curve25519 ECDH: 両当事者が Curve25519 公開鍵を交換し、楕円曲線 Diffie-Hellman を使用して共有秘密を導出
- MLKEM-1024 カプセル化: 一方の当事者が他方の MLKEM-1024 公開鍵を使用して共有秘密をカプセル化
- 秘密の結合: Curve25519 共有秘密と MLKEM-1024 共有秘密が連結される
- HKDF 導出: HKDF-SHA512 が結合された秘密からルート鍵と初期チェーン鍵を導出
このハイブリッドアプローチは、古典的攻撃者(Curve25519)と量子攻撃者(MLKEM-1024)の両方に対するセキュリティを保証します。セッションを侵害するには、両方を破る必要があります。
2) 継続的な鍵進化 (Double Ratchet)
ハンドシェイク後、Double Ratchet プロトコルは前方秘匿性を提供します:
- 対称ラチェット: 各メッセージが HMAC-SHA256 を使用してチェーン鍵を進め、一意のメッセージ鍵を導出
- メッセージ暗号化: メッセージ鍵が AES-256-GCM と共に使用され、メッセージペイロードを暗号化
- DH ラチェット: 定期的に、新しい Diffie-Hellman 鍵交換がルート鍵を更新し、新しいチェーン鍵を作成
- 鍵ローテーション: 古い鍵が破棄され、前方秘匿性を保証—現在の鍵を侵害しても過去のメッセージは明らかにならない
Double Ratchet は、各メッセージが一意の暗号鍵を使用し、鍵が継続的に進化して侵害後セキュリティを提供することを保証します。
何が暗号化されるか(そして何がされないか)
強力な暗号化がメッセージコンテンツを保護します。すべてのメッセージングシステムと同様に、一部のネットワークレベルのメタデータ(例:IP ルーティング)が依然として存在する可能性があります。Nudge のスタックは、トラフィック分析信号を減らすための暗号化ヘッダーなどのメタデータ保護技術もサポートしています。
- 暗号化: メッセージコンテンツ、セッション秘密、機密メタデータ(サポートされている場合)
- 露出の削減: ヘッダー暗号化を介したカウンター/鍵識別子(該当する場合)
- 依然として可能: ネットワーク条件に応じたトランスポートレベルの観察(タイミング、エンドポイント)
セキュリティ特性
Nudge の暗号設計は、複数のセキュリティ層を提供します:
- ポスト量子セキュリティ: MLKEM-1024 は将来の量子攻撃から保護します
- 前方秘匿性: 現在の鍵が侵害されても、過去のメッセージは安全のままです
- 侵害後セキュリティ: セッションは鍵侵害から回復できます
- 認証暗号化: AES-GCM は盗聴と改ざんの両方を防ぎます
- メタデータ保護: ヘッダー暗号化によりトラフィック分析が削減されます
プライベート Nudge コミュニティをお探しですか?
NeedleTails は、プライベートデプロイメント、ガバナンス制御、および運用責任を必要とする組織向けに有料のサーバー実装サービスを提供しています。