コンテンツへスキップ
uencoder

AES を CTR モードでストリーム暗号として使う

AES-CTR はブロック暗号をキーストリーム生成器に変え、パディングを不要にします。カウンタの正しい管理と、認証を別途追加しなければならない理由を学びましょう。

  1. 1

    CTR モードは、カウンター値を AES で暗号化してキーストリームブロックを生成し、平文と XOR します。暗号文の長さは平文と等しくなります (パディング不要)。同じ鍵のもとでカウンターが繰り返されてはなりません。そうなれば nonce 再利用の悲劇が当てはまります。

  2. 2
    AES 暗号化ツール →

    AES の CTR モードでデータを暗号化します。出力長は入力長と完全に一致します (パディングなし)。同じ鍵のもとで暗号化ごとに一意でなければならない nonce/カウンターを指定してください。

  3. 3
    AES 復号ツール →

    同じキーストリームを XOR して復号します。CTR の復号は暗号化と同一の演算 (同じ AES-CTR 操作) であり、実装が簡単です。

  4. 4

    警告: CTR モードは整合性を提供しません。攻撃者は暗号文のビットを反転でき、復号された平文の対応するビットが変化します。CTR は必ず HMAC と組み合わせる (encrypt-then-MAC) か、CTR + 認証内蔵である GCM を使ってください。

よくある質問

CTR と GCM はどちらを使うべきですか?
GCM を使ってください。GCM は認証内蔵 (GHASH) の CTR モードです。認証なしの生の CTR はよくある脆弱性です。攻撃者に検出されずに暗号文を改変されてしまいます。
カウンターはどう管理すればよいですか?
128 ビットブロックを nonce (例: 96 ビット) とカウンター (32 ビット) に分割します。カウンターはブロックごとにインクリメントします。複数のメッセージには、新しいランダム nonce を使ってください。カウンターの桁あふれは決して起こしてはいけません。

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

関連ツール