共通鍵暗号方式は「暗号化と復号に同じ鍵を使う」方式です。速くて効率的ですが、鍵の管理に工夫が必要です。代表格のAESやDES、そしてストリーム暗号まで正確に押さえましょう。
共通鍵暗号ってさ、暗号化する鍵と、元に戻す鍵が同じってことだよね?
その通りよ。
共通鍵暗号方式は、暗号化と復号に同じ鍵を使う方式なの。
だから秘密鍵暗号方式や対称鍵暗号方式とも呼ばれるわ。
同じ鍵ということは、送る側と受け取る側が、事前にその鍵を共有しておく必要がありますね。
ええ。
そこが最大の弱点で、鍵をどうやって安全に相手へ渡すかという鍵配送問題が生じるの。
それから、通信相手ごとに別々の鍵が必要だから、n人が相互通信すると鍵の数はn(n-1)/2個に膨らむのも課題ね。
たくさんの人とやり取りすると、鍵が爆発的に増えちゃうんですねぇ。
でも同じ鍵を使うぶん、処理は速いんでしょ?
そう、公開鍵暗号方式に比べて処理速度が速いのが大きな長所よ。
だから大量のデータ本体の暗号化には共通鍵暗号が向いているの。
代表的なアルゴリズムを見ていきましょう。
現在の標準はAESですね。
ええ。
AES(Advanced Encryption Standard)は、データを一定の塊ごとに暗号化するブロック暗号で、ブロック長は128ビット。
鍵長は128・192・256ビットから選べるわ。
米国NISTが標準として採用した、現在最も広く使われている暗号よ。
じゃあ昔使われてたDESっていうのは?
DES(Data Encryption Standard)はAESの前の標準だけど、鍵長が実質56ビットと短くて、今の計算能力では総当たりで破れてしまうの。
だから使ってはいけない危殆化した暗号よ。
それを補うために鍵を3回かけ直した3DES(トリプルDES)もあったけど、これも今は非推奨ね。
ブロック単位ではなく、1ビットや1バイトずつ処理する方式もあると聞きました。
それがストリーム暗号ね。
鍵から擬似乱数の流れ(鍵ストリーム)を作り、データと1ビットずつ排他的論理和(XOR)をとって暗号化するの。
RC4が有名だけど脆弱性のため非推奨で、今はChaCha20などが使われるわ。
逐次処理できるので、音声や動画のリアルタイム通信に向いているのよ。
ブロックでまとめて処理するのがブロック暗号、流れるように少しずつ処理するのがストリーム暗号なんですねぇ。
確認クイズ
共通鍵暗号方式の特徴として、適切なものはどれか。
- 暗号化に使う鍵と復号に使う鍵が異なる
- 公開鍵暗号方式に比べて暗号化・復号の処理が高速である
- n人が相互に通信する場合、必要な鍵の総数は2n個である
- 鍵を公開できるため、鍵配送問題が生じない
こたえを見る
正解: 2. 公開鍵暗号方式に比べて暗号化・復号の処理が高速である
正解は「処理が高速である」。共通鍵暗号は同じ鍵を使うため公開鍵暗号より高速で、データ本体の暗号化に向く。選択肢1は公開鍵暗号の説明で誤り(共通鍵は暗号化・復号とも同じ鍵)。鍵の総数はn(n-1)/2個なので選択肢3も誤り。共通鍵は秘密に共有する必要があり鍵配送問題が生じるため選択肢4も誤り。