ChaCha20-Poly1305は、ChaCha20ストリーム暗号とPoly1305メッセージ認証コードを組み合わせた、関連データ付き認証暗号化(AEAD)アルゴリズムです。 [1]ソフトウェアパフォーマンスが高速で、ハードウェアアクセラレーションがない場合でも、通常はAES-GCMよりも高速です。[1] : §B
歴史
構築の2つの構成要素であるPoly1305アルゴリズムとChaCha20アルゴリズムは、2005年と2008年にDaniel J. Bernsteinによって独立して設計されました。[2] [3]
2013年3月、IETF TLSワーキンググループに、古くなったRC4ベースの暗号スイートを置き換えるため、 eSTREAMコンペティション[4]の優勝者であるSalsa20を組み込む提案がなされました。その後、IETF TLSメーリングリストで議論が行われ、Salsa20の代わりにChacha20を使用することや、パフォーマンスのためにユニバーサルハッシュベースのMACを使用することなど、さまざまな機能強化の提案が出されました。このプロセスの結果として、Adam Langleyの提案である、オリジナルのChaCha20アルゴリズムのバリアント(32ビットカウンターと96ビットノンスを使用)とオリジナルのPoly1305のバリアント(2つの文字列を認証)がIETFドラフト[5] [6]で統合され、 TLSとDTLSで使用されることになり、[7]セキュリティとパフォーマンス上の理由から、新しくサポートされる暗号として選ばれました。[8] IETFがTLSを採用した直後、ChaCha20、Poly1305、および複合AEADモードが認証暗号化暗号を介してOpenSSHに追加されました[9] [10]が、ChaCha20アルゴリズムの元の64ビットカウンターと64ビットノンスは維持されました。
chacha20-poly1305@openssh.com
2015年に、AEADアルゴリズムはRFC 7539 [11]およびRFC 7634 [12]で標準化され、IPsecで使用されました。同年、Cloudflareによって代替暗号スイートとして統合されました。[13]
2016年にRFC 7905 [14]では、TLS 1.2およびDTLS 1.2プロトコルでこれを使用する方法が説明されています。
2018年6月にRFC 7539が更新され、RFC 8439に置き換えられました。[1]
説明
ChaCha20-Poly1305 アルゴリズムは、256 ビットのキーと 96 ビットのnonceを入力として受け取り、平文を暗号化します[1] 。暗号文の拡張は 128 ビット (タグ サイズ) です。ChaCha20-Poly1305 構造では、ChaCha20 をカウンター モードで使用して、平文とXOR 演算されるキー ストリームを導出します。次に、暗号文と関連データは、最初に 2 つの文字列を 1 つにエンコードする Poly1305 のバリアントを使用して認証されます。暗号とワンタイム認証子を組み合わせる方法は、最初のブロックを使用して認証子をシードし、その後暗号文を 16 バイトのタグで認証する方法において、 AES-GCM構造とまったく同じです。
ChaCha20 の主な外見上の違いは、AES-128 と AES-256 の両方で 16 バイト (128 ビット) であるのに対し、ChaCha20 では 64 バイト (512 ビット) のブロック サイズであることです。ブロック サイズが大きいほど、最新の CPU でより高いパフォーマンスが得られ、32 ビット カウンターがオーバーフローする前により大きなストリームが可能になります。

バリエーション
XChaCha20-Poly1305 – 拡張ノンスバリアント
XChaCha20-Poly1305構造は、ChaCha20-Poly1305構造の拡張された192ビットノンスバリアントであり、ChaCha20の代わりにXChaCha20を使用します。ノンスをランダムに選択する場合、XChaCha20-Poly1305構造は元の構造よりも優れたセキュリティを実現します。この構造を標準化する草案は2020年7月に期限切れになりました。[15]
Salsa20-Poly1305 および XSalsa20-Poly1305
Salsa20-Poly1305とXSalsa20-Poly1305はChaCha20-Poly1305とXChaCha20-Poly1305アルゴリズムの派生版で、ChaCha20とXChaCha20の代わりにSalsa20とXSalsa20を使用しています。これらはNaCl [16]とlibsodium [17]に実装されていますが、標準化されていません。ChaChaを使用する派生版はSalsaよりもラウンドあたりの拡散が優れているため、実際には好まれています。 [2]
ラウンド数を減らしたバージョン
ChaCha20は、ラウンド数を減らしたChaCha12とChaCha8に置き換えることができ、ChaCha12-Poly1305とChaCha8-Poly1305が生成されます。同じ変更をXChaCha20-Poly1305に適用できます。これらはRustCryptoチームによって実装されており、標準化されていません。[18]
使用
ChaCha20-Poly1305は、IPsec、[1] SSH、[19] TLS 1.2、DTLS 1.2、TLS 1.3、[14] [19] WireGuard、[20] S/MIME 4.0、[21] OTR v4 [22]などの複数のプロトコルで使用されており、OpenSSLとlibsodiumに実装されています。さらに、このアルゴリズムは、標準的なデータ暗号化を提供するためにバックアップソフトウェアBorg [23]で使用され、オプションでファイルシステム全体の暗号化を行うためにコピーオンライトファイルシステムBcachefsでも使用されています。 [24]
パフォーマンス
ChaCha20-Poly1305 は通常、より普及しているAES - GCMアルゴリズムよりも優れたパフォーマンスを発揮しますが、CPU にAES-NI 命令セット拡張[1]があるシステムでは例外です。その結果、ChaCha20-Poly1305 は、セキュリティ レベルが同等であることや、主にARMベースの CPU を使用するモバイル デバイスに関連する特定のユース ケースでは、AES-GCM よりも好まれることがあります。ChaCha20-Poly1305 は AES-GCM よりもオーバーヘッドが少ないため、モバイル デバイス上の ChaCha20-Poly1305 は AES-GCM よりも消費電力が少ない可能性があります。
安全
ChaCha20-Poly1305構造は、標準モデルと理想的な順列モデルにおいて、シングルユーザーとマルチユーザー設定で一般的に安全です。 [25]しかし、GCMと同様に、セキュリティは暗号化されたメッセージごとに一意のナンスを選択することに依存しています。AES-GCMと比較すると、ChaCha20-Poly1305の実装はタイミング攻撃に対して脆弱ではありません。
注意すべき点は、SSHプロトコルが ChaCha20-Poly1305 を基礎プリミティブとして使用する場合、 Terrapin 攻撃に対して脆弱であるということです。
参照
外部リンク
- Josefsson, Simon (2013-03-17). 「TLS における Salsa20 ストリーム暗号」。mailarchive.ietf.org。IETF。2024-07-31取得。参考までに、 Salsa20ストリーム暗号がどのように機能
するかを説明するドラフトの -00 を公開しました
。
参考文献
- ^ abcdef Y. Nir; A. Langley (2018 年 6 月). IETF プロトコル用の ChaCha20 および Poly1305. Internet Research Task Force (IRTF). doi : 10.17487/RFC8439 . ISSN 2070-1721. RFC 8439. 情報提供。 RFC 7539 は 廃止されます。
- ^ ab Bernstein, DJ (2008 年 1 月). ChaCha, a different of Salsa20 (PDF) . The State of the Art of Stream Ciphers. Vol. 8. pp. 3–5.
- ^ Bernstein, Daniel J. (2005)、「The Poly1305-AES Message-Authentication Code」、Fast Software Encryption、Lecture Notes in Computer Science、vol. 3557、ベルリン、ハイデルベルク:Springer Berlin Heidelberg、pp. 32–49、doi:10.1007/11502760_3、ISBN 978-3-540-26541-2
- ^ Josefsson, Simon (2013 年 3 月). トランスポート層セキュリティ (TLS) およびデータグラム トランスポート層セキュリティ (DTLS) 用の Salsa20 ストリーム暗号。ID draft-josefsson-salsa20-tls-00。
- ^ Langley, Adam (2013 年 9 月)。TLS 用の ChaCha20 および Poly1305 ベースの暗号スイート。ID draft-agl-tls-chacha20poly1305-00。
- ^ Nir, Yoav (2014 年 1 月 27 日). IETF プロトコルの ChaCha20 および Poly1305。ID draft-nir-cfrg-chacha20-poly1305-00。
- ^ Langley, Adam; Chang, Wan-Teh; Mavrogiannopoulos, Nikos; Strombergson, Joachim; Josefsson, Simon (2014 年 1 月 24 日)。トランスポート層セキュリティのための ChaCha ストリーム暗号。ID draft-mavrogiannopoulos-chacha-tls-01。
- ^ Bursztein, Elie (2014 年 4 月 24 日)。「Android 版 Chrome の HTTPS 接続の高速化と強化」。Googleオンライン セキュリティ ブログ。2016 年 9 月 28 日時点のオリジナルよりアーカイブ。2021年 12 月 27 日閲覧。
- ^ Miller, Damien. 「Super User's BSD Cross Reference: /OpenBSD/usr.bin/ssh/PROTOCOL.chacha20poly1305」。bxr.su。2013年12月13日時点のオリジナルよりアーカイブ。2021年12月28日閲覧。
- ^ Miller, Damien (2013年11月29日). 「ChaCha20 and Poly1305 in OpenSSH」。2013年12月13日時点のオリジナルよりアーカイブ。2021年12月28日閲覧。
- ^ Y. Nir; A. Langley (2015 年 5 月). IETF プロトコルの ChaCha20 および Poly1305.インターネット技術タスク フォース(IETF). doi : 10.17487/RFC7539 . ISSN 2070-1721. RFC 7539. 廃止。RFC 8439 により廃止されました。
- ^ Y. Nir 編 (2015 年 8 月)。ChaCha20、Poly1305、およびインターネット キー交換プロトコル (IKE) と IPsec でのそれらの使用。インターネット技術タスク フォース(IETF)。doi : 10.17487 / RFC7634。ISSN 2070-1721。RFC 7634 。 提案された標準。
- ^ 「ChaCha を実行: 暗号化によるモバイル パフォーマンスの向上」。Cloudflare ブログ。2015 年 2 月 23 日。2021年 12 月 28 日閲覧。
- ^ ab A. Langley; W. Chang; N. Mavrogiannopoulos; J. Strombergson; S. Josefsson (2016 年 6 月). ChaCha20-Poly1305 トランスポート層セキュリティ (TLS) 用暗号スイート。インターネット技術タスク フォース(IETF)。doi : 10.17487 /RFC7905。ISSN 2070-1721。RFC 7905 。 提案された標準。RFC 6347 および 5246 を 更新します。
- ^ Arciszewski, Scott (2020年1月10日). XChaCha: eXtended-nonce ChaCha および AEAD_XChaCha20_Poly1305. ID draft-irtf-cfrg-xchacha.
- ^ 「NaCl: ネットワークおよび暗号化ライブラリ - 秘密鍵認証暗号化」。2009 年 6 月 30 日時点のオリジナルよりアーカイブ。
- ^ 「libsodium - 認証された暗号化」。2020年8月4日時点のオリジナルよりアーカイブ。
- ^ "chacha20poly1305 - Rust". docs.rs。
ChaCha8Poly1305 / ChaCha12Poly1305 - 非標準の短縮ラウンドバリアント (短縮ラウンド Cargo 機能によって制御されます)。これらの構造をいつ使用できるかの背景と根拠については、Too Much Crypto の論文を参照してください。疑わしい場合は、ChaCha20Poly1305 を優先してください。 XChaCha8Poly1305 / XChaCha12Poly1305 - 上記と同じですが、拡張された 192 ビット (24 バイト) の nonce を使用します。
- ^ ab M. Thomson; S. Turner編 (2021年5月)。TLSを使用したQUICのセキュリティ保護。インターネットエンジニアリングタスクフォース。doi : 10.17487 / RFC9001。ISSN 2070-1721。RFC 9001 。 提案された標準。
- ^ Donenfeld, Jason A. 「プロトコルと暗号化 - WireGuard」www.wireguard.com . 2021年12月28日閲覧。
- ^ R. Housley (2017 年 2 月)。CMS (Cryptographic Message Syntax) での ChaCha20-Poly1305 認証暗号化の使用。インターネット技術タスク フォース(IETF)。doi : 10.17487 / RFC8103。ISSN 2070-1721。RFC 8103 。 提案された標準。
- ^ OTRv4、OTRv4、2021-12-25、2021-12-28取得
- ^ borg rcreate、borgbackup、2022-08-03、2023-01-28取得
- ^ Overstreet, Kent (2024年9月11日). “Encryption”. bcachefs . 2024年5月26日時点のオリジナルよりアーカイブ。 2024年6月8日閲覧。
- ^ Degabriele, Jean Paul; Govinden, Jérôme; Günther, Felix; Paterson, Kenneth G. (2021-11-12)、「マルチユーザー設定でのChaCha20-Poly1305のセキュリティ」、2021 ACM SIGSACコンピューターおよび通信セキュリティ会議の議事録、ニューヨーク、ニューヨーク、米国:Association for Computing Machinery、pp. 1981–2003、doi:10.1145/3460120.3484814、ISBN 978-1-4503-8454-4, S2CID 244077782 , 2021-12-27取得
