共通鍵暗号(Symmetric Key Cryptography)とは、暗号化するときと元に戻すときで、同じ一つの鍵を使う暗号の方式のことです。「対称鍵暗号」「秘密鍵暗号」とも呼ばれ、暗号の最も基本的な形にあたります。
現実世界に例えると、共通鍵暗号は合鍵を渡してある宅配ボックスのようなものです。同じ鍵で閉めることも開けることもできます。速くて手軽な代わりに、その鍵をどうやって相手に渡すかが問題になります。
公開鍵暗号との違い
| 項目 | 共通鍵暗号 | 公開鍵暗号 |
|---|---|---|
| 鍵の数 | 1つ | 2つで一組 |
| 処理の速さ | 速い | 遅い |
| 鍵の受け渡し | 難しい | 公開してよい |
| 向いている用途 | 大量のデータ | 鍵そのものの受け渡し |
とにかく速い
最大の長所がこれです。公開鍵暗号に比べて処理が桁違いに軽く、動画のような大きなデータでも実用的な速さで扱えます。この速さがあるからこそ、通信の中身そのものを暗号化する用途では、いまもこちらが使われています。
鍵をどう渡すかが難題
裏返しの弱点です。相手と同じ鍵を持たなければ始まりませんが、その鍵を通信で送れば、途中で盗まれるおそれがあります。安全に渡すために暗号を使いたいのに、そのための鍵を安全に渡せない。これが長く課題でした。
人数が増えると鍵も増える
もう一つの弱点があります。相手ごとに別の鍵が必要なため、やり取りする人数が増えると鍵の数が急激に膨らみます。十人が互いにやり取りするだけで四十五本の鍵が要ります。管理しきれなくなるのは目に見えています。しかも、どれか一本でも漏れれば、そのやり取りだけは丸ごと読まれてしまいます。
公開鍵暗号と組み合わせて使う
この二つの課題は、組み合わせで解決されました。まず公開鍵暗号を使って共通鍵を安全に相手へ渡し、そのあとの本番の通信は速い共通鍵暗号で行うという方式です。HTTPSをはじめ、いまの暗号通信はほぼこの形です。
代表的な方式
いま使われているものは限られます。標準として広く採用されているのがAESで、鍵の長さは128ビットか256ビットが一般的です。かつて使われたDESは鍵が短く、現在の計算機では破られるため、使ってはいけません。
鍵の長さと安全性
数字の意味を押さえておくと役立ちます。鍵が1ビット長くなると、総当たりで試す手間は倍になります。128ビットでも当面は現実的な時間で破れないとされますが、より長期の保管には256ビットが選ばれます。
実際に触れる場面
身近なところで使われています。パスワード付きの圧縮ファイル、無線LANの暗号化、ディスク全体の暗号化、そしてHTTPSでやり取りされる中身。意識せず使っている場面がほとんどですが、いずれも土台はこの方式です。速さが求められる場所では、いまも中心にあり続けています。

コメント