AESの用途とアルゴリズムの概要について説明した後、STマイクロエレクトロニクス(以下、ST)の汎用32ビットマイコン「STM32U5シリーズ」*2)に搭載されているAESアクセラレーターを例にして解説します。
*2)STM32U5マイコン
AESは、以下のような用途で使用されます。
AESには、128/192/256ビットの3種類の鍵ビット長があります。ビット長が長いほど安全性は高まる一方、処理時間も長くなります。多くのセキュリティ関連規格で、128ビットが最低限の実装、256ビットがより高度なセキュリティ向けのオプションとして要求されます。
ブロック暗号には下記の使用モードがあります。用途に応じてそれぞれのモードを使用します(表1)
| 用途 | 略称 | モード名称 | 仕様書 |
|---|---|---|---|
| 秘密保持 | ECB | Electronic Codebook | NIST SP 800-38A |
| CBC | Cipher Block Chaining | NIST SP 800-38A | |
| CFB | Cipher Feedback | NIST SP 800-38A | |
| OFB | Output Feedback | NIST SP 800-38A | |
| CTR | Counter | NIST SP 800-38A | |
| XTS | XEX Tweakable Block Cipher with Ciphertext Stealing | NIST SP 800-38E | |
| 認証 | CBC-MAC | Cipher Block Chaining - Message Authentication Code | ISO/IEC 9797-1 |
| CMAC | Cipher-based Message Authentication Code | NIST SP 800-38B | |
| HMAC | Keyed-hash Message Authentication Code | NIST FIPS PUB 198-1 | |
| GMAC | Generating a Message Authentication Code | NIST SP 800-38D | |
| 認証付き 暗号化 |
CCM | Counter with Cipher Block Chaining-Message Authentication Code | NIST SP 800-38C RFC3610 |
| GCM | Galois/Counter Mode | NIST SP 800-38D | |
暗号化の開始時、入力データ(平文)はStateと呼ばれる4×4バイト(全128ビット)の2次元配列にコピーされます(図1)
最初のラウンド鍵の追加後、State配列はラウンド関数を10回、12回、14回(鍵長に依存)実行することで変換されます。最終ラウンドは若干処理が異なり、MixColumns処理がスキップされます。最終的にState配列出力データである暗号文が出力されます(図2)
ラウンド関数は、次頁で説明するKey Expansionを用いて生成された鍵スケジュールKを用いてパラメータ化されます。暗号化時のラウンド関数の処理フローは、以下4つの処理で構成されています。
Copyright © ITmedia, Inc. All Rights Reserved.
記事ランキング