AESとは

えーいーえす

Advanced Encryption Standardの略。米国のNISTが2001年にFIPS 197として標準化した共通鍵のブロック暗号で、現在最も広く使われている。ブロック長は128ビット、鍵長は128・192・256ビットで、鍵長に応じてラウンドの回数は10・12・14回になる。ベルギーの研究者が設計したRijndaelをもとにしている。長いデータの暗号化には、GCMやCTRなどの暗号利用モードと組み合わせて使う。多くのCPUは、AES-NIのような専用の命令を備えている。

「AES」は、4分野の10問の練習問題に出てきます(暗号技術の基礎と応用, ハードウェアセキュリティ, 量子コンピュータのハードウェアなど)。

この用語の分野: 暗号技術の基礎と応用

ラウンドの処理

1ラウンドは、バイトごとの非線形な置き換え(SubBytes)、行ごとのずらし(ShiftRows)、列ごとの混ぜ合わせ(MixColumns)、ラウンド鍵とのXOR(AddRoundKey)の4つの処理からなります(最後のラウンドではMixColumnsを省きます)。ラウンド鍵は、元の鍵から鍵スケジュールで作ります。これを繰り返すことで、平文や鍵の1ビットの違いが、出力全体に広がります。

安全性の目安

AES-128の鍵の候補は 2¹²⁸ 個(約3.4 × 10³⁸ 個)あり、総当たりは現実的ではありません。知られている最良の攻撃でも、総当たりよりわずかに速いだけです。量子コンピュータのグローバーのアルゴリズムを考えると、単純な目安では安全性のビット数が半分になるため、長期の安全性が必要な用途ではAES-256が選ばれることがあります。

実装の注意

ソフトウェアで表を引く実装では、どの位置を読んだかがキャッシュの状態に残り、キャッシュを使ったサイドチャネル攻撃で鍵を推測されるおそれがあります。AES-NIなどの専用命令や、表を使わない定数時間の実装を使うと、この問題を避けられます。また、AESそのものが安全でも、ECBモードの使用やナンスの再利用など、使い方の誤りで安全性が失われます。

AESの練習問題に挑戦

現在広く使われているブロック暗号AESの、ブロック長と鍵長の組み合わせとして正しいものはどれか。

  1. Aブロック長は128ビット、鍵長は128・192・256ビットのいずれか
  2. Bブロック長は64ビット、鍵長は56ビット
  3. Cブロック長も鍵長も、128・192・256ビットから組み合わせて選べる
答えと解説を見る

正解:A. ブロック長は128ビット、鍵長は128・192・256ビットのいずれか

AESは、米国のNISTが2001年にFIPS 197として標準化したブロック暗号で、ブロック長は128ビットに固定され、鍵長は128、192、256ビットの3種類です。鍵長に応じて、ラウンド(変換の繰り返し)の回数は10、12、14回になります。もとになったRijndaelはブロック長も選べる設計でしたが、AESとして標準化されたのは128ビットのブロックだけです。ブロック長64ビット・鍵長56ビットは、AESの前の標準だったDESの値です。

画像のデータをAESのECBモードで暗号化したところ、暗号化した後の画像でも、元の絵の輪郭が見分けられた。この原因として正しいものはどれか。

  1. AAESの鍵が短すぎて、一部のブロックが暗号化されずにそのまま残ったから
  2. BECBモードでは、ブロックごとに異なる鍵を自動で作るので、その鍵の模様が暗号化した後の画像に現れるから
  3. CECBモードでは、同じ平文ブロックが常に同じ暗号文ブロックになるので、同じ色の部分の模様が残るから
答えと解説を見る

正解:C. ECBモードでは、同じ平文ブロックが常に同じ暗号文ブロックになるので、同じ色の部分の模様が残るから

ECB(電子コードブック)モードは、各ブロックを同じ鍵でそれぞれ独立に暗号化するだけの方式です。そのため、平文の中に同じ内容のブロックがあると、暗号文でも同じブロックが同じ位置に現れます。背景のように同じ色が続く画像では、どこが同じ色かという情報が残り、ペンギンの画像を暗号化した例がよく知られています。このため、一般のデータの暗号化にはECBモードを使わず、同じ平文からでも毎回違う暗号文ができるCBCモード、CTRモード、GCMなどを使います。

よくある質問

AES-256はAES-128の2倍安全なのですか?

総当たりの手間で比べると、2倍ではなく 2¹²⁸ 倍です。ただし、AES-128でも古典のコンピュータでの総当たりは現実的でないので、多くの用途ではどちらも十分です。AES-256は、量子コンピュータに対する余裕が欲しい場合や、規則で求められる場合に選ばれます。処理の量はラウンドの数にほぼ比例し、AES-256はAES-128の約1.4倍(14 ÷ 10)です。

AESだけでデータを安全に守れますか?

AESは128ビットのブロックを1つ変換する部品で、それだけでは長いデータの暗号化も改ざんの検出もできません。実際には、GCMのような認証付き暗号のモードで使い、ナンスを正しく管理し、鍵を安全に作って保管する必要があります。

解説の中の「AES」

「AES」が出てくる問題(10問)

  1. 現在広く使われているブロック暗号AESの、ブロック長と鍵長の組み合わせとして正しいものはどれか。
  2. 画像のデータをAESのECBモードで暗号化したところ、暗号化した後の画像でも、元の絵の輪郭が見分けられた。この原因として正しいものはどれか。
  3. AESをCBCモードで使うときの、初期化ベクトル(IV)の扱いとして適切なものはどれか。
  4. AES(ブロック長16バイト)をCBCモードで使い、パディングにはPKCS#7方式を使う。PKCS#7方式では、足りないバイト数をnとして値がnのバイトをn個足し、平文の長さがちょうど16の倍数のときも、値が16のバイトを16個足す。96バイトの平文を暗号化したときの暗号文の長さ(IVは含めない)はどれか。
  5. TLS 1.3の暗号スイート TLS_AES_128_GCM_SHA256 が指定するものの組み合わせとして、正しいものはどれか。
  6. CPUにAESの暗号の専用の命令(AES-NIなど)を持たせる利点として、速さのほかに挙げられるものはどれか。
  7. 大規模な誤り耐性量子コンピュータが実現したとき、ショアのアルゴリズムによって安全性が大きく損なわれると考えられている暗号はどれか。
  8. 共通鍵暗号の特徴として正しいものはどれか。
  9. 共通鍵暗号のうち、ブロック暗号とストリーム暗号の違いの説明として、正しいものはどれか。
  10. 1 GiB = 2³⁰ バイト、1 EiB = 2⁶⁰ バイトとする。ブロック長が64ビットのブロック暗号(3DESなど)をCBCモードで使い、1つの鍵で大量のデータを暗号化する。暗号文ブロックをランダムな64ビットの値とみなすとき、誕生日のパラドックスにより、同じ暗号文ブロックの組が現れる確率が無視できなくなるデータ量の目安はどれか。

暗号技術の基礎と応用の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

関連する用語

暗号利用モード 認証付き暗号(AEAD) 共通鍵暗号 ナンス TLS RSA暗号 ディフィー・ヘルマン鍵交換 ハッシュ関数 HMAC ショアのアルゴリズム

用語集の一覧へ