コンテンツへスキップ
uencoder

ChaCha20 ストリーム暗号でデータを暗号化する

ChaCha20 は Daniel J. Bernstein が設計した高速な ARX ベースのストリーム暗号で、TLS で採用され、AES のモバイル向け代替としても使われます。

  1. 1

    ChaCha20 は 256 ビット鍵・96 ビット nonce のストリーム暗号で、加算・回転・XOR(ARX)演算で構成されます。ハードウェアアクセラレーションなしで高速性を達成するため、モバイルデバイスに理想的です。ここでは、同じ運用パターンを示すため、ストリーム暗号のワークフローを RC4(レガシーなストリーム暗号)でデモします。

  2. 2
    RC4 暗号化ツール →

    RC4 でデータを暗号化すると、ストリーム暗号のインターフェースがわかります。鍵と平文を与え、同じ長さの暗号文を受け取ります。ChaCha20 は同じ API を使いますが、RC4 のステートフルな初期化の代わりに 96 ビットの nonce を使います。

  3. 3
    RC4 復号ツール →

    同じ鍵で復号して平文を復元します。ストリーム暗号は対称です。暗号化と復号は同じ操作(キーストリームとの XOR)を使います。

  4. 4

    決定的な違い:RC4 は破られており、本番環境で使ってはなりません。ChaCha20-Poly1305(認証付きの変種)が現代の選択です。上のワークフローはストリーム暗号の API パターンを示すものであり、RC4 の安全性を示すものではありません。

よくある質問

なぜ AES の代わりに ChaCha20 を使うのですか?
AES ハードウェアアクセラレーション(AES-NI)のないデバイスでは、ChaCha20 の方が高速で、設計上定数時間であり、タイミングサイドチャネルを回避します。ARM Android 上の Google Chrome TLS のデフォルトです。
ChaCha20-Poly1305 とは何ですか?
ChaCha20(機密性)と Poly1305(整合性)を組み合わせた認証付き暗号です。RFC 8439 として標準化され、TLS 1.3 で使われています。認証なしの ChaCha20 単体は決して使わないでください。

このタスクを解決するワークフロー

関連ツール