セキュリティ

「量子コンピュータがヤバいらしい」を卒業するための暗号入門
第2回:AESは実はそんなに困っていない

第2回は暗号技術の基礎知識です。
この回と次の回が大変です。
頑張りましょう。

こんにちは。
オフィス近くのラーメン店のサービス券を密かに集めているKENONです。

第2回にお越しくださり、ありがとうございます。
これからも読んでいただけるよう、頑張ります。

早速ですが、本題です。

■シーザー暗号から始めましょう

最も原始的な暗号であるシーザー暗号から。古代ローマのカエサルが使ったとされる、最もシンプルな暗号です。最もシンプルですが、最新の暗号技術でも本質は同じです。

元の文:HELLO
 ↓ 文字を3つずらす(+3)
暗号文:KHOOR

“HELLO”が、意味の無い“KHOOR”に早変わりです。“KHOOR”を敵国ゲルマン人に見られたとて、“HELLO”だと気付けた人は居なかったでしょう。

一方、カエサル率いるローマ軍は“HELLO”という元の文字列に戻せました。
「文字を3つずらす」というルールを知っていたからです。

ここで、少しだけ専門用語を覚えてください。

このシーザー暗号における、
“HELLO”のことを平文といい、
“KHOOR”のことを暗号文といい、
「文字を3つずらす」の内、「文字をx個ズラす」を暗号アルゴリズムといい、
xの部分を暗号鍵といい、
暗号文を平文に戻すことを復号と言います。

練習問題です。解きやすいよう、アルファベットを書いておきます。
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

<問題その1>
平文“TOKYO”を暗号化してみてください。
暗号鍵は「文字を1つずらす(+1)」です。
答え:UPLZP

<問題その2>
暗号文“HOHFWURQ”を復号化してみてください。
暗号鍵は「文字を3つずらす(+3)」です。
※ヒント…復号化は暗号化の逆なので、文字を3つ戻します(-3)。
答え:ELECTRON

■シーザー暗号の弱点を知ると、PQCが超ザックリ分かる

シーザー暗号はアルファベット順にずらすだけなので、そのパターン数が文字数である26に制限されます。1つの平文に対し、暗号文は25パターンしか作れないということです。25パターン試すだけで復号できてしまうのであれば、全パターン総当たりでなんとかなりそうです(これを総当たり攻撃と呼びます)。この、暗号鍵のパターン数の少なさに起因する、“解読の簡単さ”はシーザー暗号の弱点と言えます。

裏を返せば、暗号鍵のパターン数を増やせば、総当たり攻撃への耐性を高められます。このパターン数を増やすアプローチは単純なようですが、耐量子コンピュータ暗号(PQC)でも基本的な考え方は同じです。暗号鍵のパターン数を、量子コンピュータであっても全パターン総当たりし尽せないような膨大な数にすることで対策する(※)わけです。

※厳密には、量子コンピュータでも解けないアルゴリズムを採用することが対策になります。
 結果として、暗号鍵の取り得るパターンがより膨大になる傾向があります。

■シーザー暗号を機械語に置き換えると

さて、シーザー暗号は人が認識する前提だったのでアルファベットを使っていましたが、残念ながら機械は0と1しか扱えません。0の次は1、1の次は0に戻ってしまいます。困った。

そこで、機械の世界では考え方を変えます。XOR(エックスオア / エクスオア)演算です。

まずは以下の表を読んでください。同じ数字の場合は0、異なる数字の場合は1、ということを表した対応表です。

対応表

ただ、具体例を見た方が早く理解できると思います。

<具体例>

平文 :01010100(大文字のTを表しています)
暗号鍵:00101110
暗号文:01111010(小文字のzを表しています)

平文と暗号鍵を左から順に比較して、同じであれば0を、異なる場合は1を返しています。その結果、元は大文字のTを表していた平文が、小文字のzに変換されました。これがXOR演算です。XOR演算ほど単純ではないのですが、現代で最も使われている暗号方式であるAESでも、根っこの動きはXOR演算です。

XOR演算は、逆の操作をすると必ず平文に戻る、という便利な特徴があります。
シーザー暗号の使い勝手を受け継いでいますね。

暗号文:01111010(小文字のzを表しています)
暗号鍵:00101110
平文 :01010100(8bitで大文字のTを表しています)

このように、暗号化する時も復号化する時も同じ暗号鍵を用いる方式のことを、共通鍵暗号方式と言います。また、この時の暗号鍵のことを共通鍵といいます。

■共通鍵暗号方式の強度を高める方法

さて、暗号の強度を高めるためには、暗号鍵の取り得るパターン数を増やせばよいのでしたよね。先ほどの例題の暗号鍵は、8ケタの二進数だったので、2の8乗パターン、つまり256パターン存在するわけです。25パターンしか無かったシーザー暗号と比べると、えらい進化です。ただ、2の8乗パターン程度だと、コンピュータにとっては朝飯前だったりします。では何パターンならコンピュータでも解けないかと言うと、一般に2の128乗(約340澗)パターンであれば、解読に1,000京年以上かかるとされているため、セキュリティ上問題無いと言われています。

2の128乗パターンを表現できる暗号鍵とは、つまり128ケタの二進数ということになります。0と1が128連続する文字列、めちゃくちゃ長いですね。この、暗号鍵のケタ数のことを鍵長(かぎちょう)といいます。つまり、鍵長を長くすればセキュリティ強度が高まる、といえます。

現在主流の共通鍵暗号であるAESというアルゴリズムでは、128ビット、192ビット、256ビットの鍵長が用意されています。鍵長が長いほど強度が高いものの、処理が重たくなります。それもあってか、HTTPS通信におけるAES-256の普及率は約16%に留まり、8割以上がAES-128を利用している状況です。

AES-128の利用状況

出典:https://almanac.httparchive.org/en/2025/security

確かに、AES-128であれば、コンピュータを使っても解読に1,000京年かかるので安心かもしれません。しかし、量子コンピュータはヤバいらしいのです。

■量子コンピュータはAES-128を6ヶ月で解読する

一説では、量子コンピュータでGroverのアルゴリズムを駆使することで、AES-128を6ヶ月で解読可能にすると言われています。1,000京年と比べると現実的な時間軸ですから、より長い鍵長で暗号化する必要があります。

詳細は省きますが、鍵長を2倍にすると元の暗号強度に戻ります。つまり、AES-256にすることで、量子コンピュータでも解読に1,000京年かかるということです。このことから、AES-256は一定の量子耐性がある暗号アルゴリズムと言われています。語弊を恐れずに言えば、「暗号アルゴリズムをAES-256に切り替えること」が「共通鍵暗号における量子コンピュータ対策」といえます。

■暗号方式は共通鍵暗号方式だけではない

ここまで読んだ方は「あれ、連載2回目で量子コンピュータ対策が終わったぞ」と感じたはずです。
実際、共通鍵暗号方式に限っては正しいと言えます。

実は、量子コンピュータが本当に脅かしているのはAESではありません。公開鍵暗号方式という、もう一つの暗号方式です。一般にPQCと呼ばれる技術は、公開鍵暗号方式の対策を指すことが多いです。つまり、ここからが本番です。

次回からは、「公開鍵暗号方式とは何か」を解説していきます。
ここまでお読みいただき、ありがとうございました!

それでは。

この記事に関連する記事