AESは電子政府推奨暗号リストに載ってる共通鍵暗号方式

前回の勉強内容

ponsuke-tarou.hatenablog.com

AESは、暗号化の規格です。

  • 正式名称 : Advanced(高度な) Encryption(暗号化) Standard(標準)

アメリカで標準規格として採用されていたDESにとって変わって登場した暗号化方式です。

暗号化と復号で同じ鍵を使う共通鍵暗号方式です。

暗号方式に関する記述のうち,適切なものはどれか。

  1. AESは公開鍵暗号方式RSA共通鍵暗号方式の一種である。
  2. 共通鍵暗号方式では,暗号化及び復号に同一の鍵を使用する。
  3. 公開鍵暗号方式を通信内容の秘匿に使用する場合は,暗号化に使用する鍵を秘密にして,復号に使用する鍵を公開する。
  4. ディジタル署名公開鍵暗号方式が使用されることはなく,共通鍵暗号方式が使用される。

平成29年秋期問41 暗号方式に関する記述|応用情報技術者試験.com

使う鍵の組み合わせはこんな感じです。

使う鍵 共通鍵暗号方式 公開鍵暗号方式
暗号化 共通鍵 公開鍵
復号 共通鍵 秘密鍵

f:id:ponsuke_tarou:20210413225125j:plain

暗号方式のうち,共通鍵暗号方式はどれか。

  1. AES
  2. ElGamal暗号
  3. RSA
  4. 楕円曲線暗号

平成28年春期問37 共通鍵暗号方式はどれか|応用情報技術者試験.com

データベースで管理されるデータの暗号化に用いることができ,かつ,暗号化と復号とで同じ鍵を使用する暗号化方式はどれか。

  1. AES
  2. PKI
  3. RSA
  4. SHA-256

平成27年春期問39 同じ鍵を使用する暗号化方式|基本情報技術者試験.com

上記過去問の選択肢を分類するとこんな感じです。

問題の選択肢 共通鍵
暗号方式
公開鍵
暗号方式
暗号方式じゃない
AES o
ElGamal暗号 o
RSA o
楕円曲線暗号 o
PKI PKIは、暗号化技術と電子署名で世の中の安全を守る仕組みです。
SHA-256 ハッシュ関数です。

データを決まった長さに区切って暗号化するブロック暗号です。

ブロック暗号は、元のデータを決まった長さに区切って、その区切った単位ごとに暗号化します。
この区切ったデータをブロックと言います。
AESでは、このブロックの長さ(ブロック長)を128bitで分けています。
f:id:ponsuke_tarou:20210413225305j:plain
もう一つストリーム暗号という方式があります。
ストリーム暗号は、元のデータを端から1bitまたは1byte単位で次々に暗号化します。
端からバンバン暗号化するのでデータを全部受信していなくてもさくさく暗号化できちゃいます。
だから、早い!

が、ブロック暗号の方が研究が進んでいて安全だそうです。
研究が進んでいるおかげかAESは、早いそうです。

ブロック暗号 ストリーム暗号
暗号化の単位 ブロック 1bitまたは1byte
逐次生 o
安全性 o
暗号方式 DES, AES RC4

f:id:ponsuke_tarou:20210415202903j:plain
荒川区の藤の湯

電子政府推奨暗号リストは、安全性及び実装性能が確認された暗号方式を載せたリストです。

暗号化技術の安全性を評価したりしている、CRYPTRECというプロジェクトがあります。

  • 正式名称 : Cryptography(暗号技術) Research(調査) and Evaluation(評価) Committees(委員会)

CRYPTREC とはCryptography Research and Evaluation Committees の略であり、電子政府推奨暗号の安全性を評価・監視し、暗号技術の適切な実装法・運用法を調査・検討するプロジェクトである。
CRYPTREC | CRYPTRECとは

このCRYPTRECから「電子政府推奨暗号リスト」というものが出されています。

電子政府推奨暗号リストとは,CRYPTRECによって安全性及び実装性能が確認された暗号技術のうち,市場における利用実績が十分であるか今後の普及が見込まれると判断され,当該技術の利用を推奨するもののリストである。
平成27年春期問8 CRYPTREC 暗号リスト|情報処理安全確保支援士.com

AESは、安全性及び実装性能が確認された暗号方式です。

CRYPTREC | CRYPTREC暗号リスト(電子政府推奨暗号リスト)にあるPDFで「電子政府推奨暗号リスト」を確認すると(2021-04-13時点)
共通鍵暗号」の「128ビットブロック暗号」のところにAESが載っています。

ということで、「CRYPTRECにより安全性及び実装性能が確認された暗号方式」ということですね。

AESは、鍵長が長いほど暗号文は解読されにくくなります。

鍵長は、そのままの意味で鍵の長さ(単位はbit)です。
AESでは、暗号化で使う共通鍵の鍵長が「128bit」「192bit」「256bit」から選べます。
悪い人が共通鍵を総当たりで割り出そうとした時に「0」「1」の組み合わせといえど長くなれば長くなるほど大変になるわけですね。

AES-256で暗号化されていることが分かっている暗号文が与えられているとき,ブルートフォース攻撃で鍵と解読した平文を得るまでに必要な試行回数の最大値はどれか。

  1. 256
  2. 2^{128}
  3. 2^{255}
  4. 2^{256}

平成30年秋期問37 ブルートフォース攻撃の試行回数|基本情報技術者試験.com

ブルートフォース攻撃は、根性で不正ログインを頑張る総当たり攻撃です。
ブルートフォース攻撃をする悪い人は、復号する共通鍵をどんどん変えて復号を頑張ります。
鍵長が「256bit」の「0」「1」の組み合わせパターンを頑張って鍵を見つけるために最大2^{256}回鍵を変えて復号を試し続けることになるのです。
頑張りますね。

AESの特徴は、「鍵長によって段数が決まる」です。

AESの特徴はどれか。

  1. 鍵長によって,段数が決まる。
  2. 段数は,6回以内の範囲で選択できる。
  3. データの暗号化,復号,暗号化の順に3回繰り返す。
  4. 同一の公開鍵を用いて暗号化を3回繰り返す。

平成29年春期問1 AESの特徴はどれか|情報処理安全確保支援士.com

暗号化では、ラウンド関数という関数を繰り返し処理します。
その関数を処理する回数を段数とかラウンド数といい、この数が多いほど強度の高い暗号文になります。

鍵長と段数の組み合わせ

鍵長 段数
128bit 10
192bit 12
256bit 14

というわけで、「使う共通鍵の鍵長が大きい」->「暗号化の段数が多い」->「解読されにくい暗号文ができる」ということになります。

f:id:ponsuke_tarou:20210415203026j:plain
豊島区の前田湯はお花屋さんと一緒になっている

最後にAESで暗号化と復号をしてみます。

参考 : コマンドラインで簡単にAES暗号化、または Java での AES 暗号化 - 理系学生日記

# Macに入っているopensslコマンドを使います。
$ openssl version
LibreSSL 2.8.3

# 使えるAESの暗号方式をみてみます。
$ openssl list-cipher-commands | grep aes
aes-128-cbc
aes-128-ecb
aes-192-cbc
aes-192-ecb
aes-256-cbc
aes-256-ecb

# 鍵長256bitの共通鍵を使ったAESで暗号化します。
$ echo "ponsuke" | openssl aes-256-cbc -e -base64 -p -pass pass:password
salt=1CD83F097F07009C
key=8E71364EB09F97B6BACAC68B1EB944FC416CE8EBBF81E8B2681667AEE7991D63  # << 共通鍵
iv =68F150FA9F95D8590F8FE50002A1571E
U2FsdGVkX18c2D8JfwcAnEg69cNx1g30btqEdInz7TQ=   # << 暗号化された暗号文

# 暗号文を復号します。
$ echo "U2FsdGVkX18c2D8JfwcAnEg69cNx1g30btqEdInz7TQ=" | openssl aes-256-cbc -d -base64 -pass pass:password
ponsuke

f:id:ponsuke_tarou:20210415203128j:plain
板橋区大和町の愛染湯

次回の勉強内容

ponsuke-tarou.hatenablog.com