AES を CTR モードでストリーム暗号として使う
AES-CTR はブロック暗号をキーストリーム生成器に変え、パディングを不要にします。カウンタの正しい管理と、認証を別途追加しなければならない理由を学びましょう。
- 1
CTR モードは、カウンター値を AES で暗号化してキーストリームブロックを生成し、平文と XOR します。暗号文の長さは平文と等しくなります (パディング不要)。同じ鍵のもとでカウンターが繰り返されてはなりません。そうなれば nonce 再利用の悲劇が当てはまります。
- 2 AES 暗号化ツール →
AES の CTR モードでデータを暗号化します。出力長は入力長と完全に一致します (パディングなし)。同じ鍵のもとで暗号化ごとに一意でなければならない nonce/カウンターを指定してください。
- 3 AES 復号ツール →
同じキーストリームを XOR して復号します。CTR の復号は暗号化と同一の演算 (同じ AES-CTR 操作) であり、実装が簡単です。
- 4
警告: CTR モードは整合性を提供しません。攻撃者は暗号文のビットを反転でき、復号された平文の対応するビットが変化します。CTR は必ず HMAC と組み合わせる (encrypt-then-MAC) か、CTR + 認証内蔵である GCM を使ってください。
よくある質問
- CTR と GCM はどちらを使うべきですか?
- GCM を使ってください。GCM は認証内蔵 (GHASH) の CTR モードです。認証なしの生の CTR はよくある脆弱性です。攻撃者に検出されずに暗号文を改変されてしまいます。
- カウンターはどう管理すればよいですか?
- 128 ビットブロックを nonce (例: 96 ビット) とカウンター (32 ビット) に分割します。カウンターはブロックごとにインクリメントします。複数のメッセージには、新しいランダム nonce を使ってください。カウンターの桁あふれは決して起こしてはいけません。
このタスクを解決するワークフロー
関連ツール
AES 暗号化ツール
Encrypt text or binary data with AES (CBC/GCM/ECB) using Web Crypto API。無料、プライベート、100%クライアントサイド。 ツール
AES 復号ツール
Decrypt AES-encrypted data (CBC/GCM/ECB) using Web Crypto API。無料、プライベート、100%クライアントサイド。 ツール
HMAC ジェネレーター
Generate HMAC (Keyed-Hash Message Authentication Code) with SHA-1/256/512。無料、プライベート、100%クライアントサイド。 ツール