seegongsik
セキュリティ

共通鍵暗号 わかりやすく

家の玄関の扉を思い浮かべてください。出かけるときに鍵で閉め、帰ってきたら同じ鍵で開けます。鍵一つが、閉めることも開けることも受け持っているのです。共通鍵暗号も、このように閉めるときと開けるときに同じ鍵を使います。単純で速いのですが、やっかいな問題が一つ隠れています。遠くの友だちが鍵のかかった手紙を開けるには、友だちも同じ鍵を持っていなければなりません。その鍵を、どうやって安全に渡せばよいのでしょうか。

01

一つの鍵で閉めて開ける

前のレッスンでは、暗号化とは中身に鍵をかけておき、正しい鍵でだけ開けられるようにすることだと学びました。共通鍵という名前は、閉める鍵と開ける鍵がまったく同じ一つであることから来ています。
手紙をその鍵で閉めれば誰にも読めなくなり、同じ鍵を使えば元の中身に戻ります。閉める側と開ける側が同じ鍵を共有して使うので、共通鍵と呼ぶのです。

K
鍵
HELLO
開いている
同じ鍵で開いて読めます

「閉める」と「開ける」を順に押してみましょう。閉めると読めなくなり、同じ鍵で開けると元の文が戻ります。

閉めると文字がごちゃごちゃになり、同じ鍵を使うと、またすっきり読めるようになりました。玄関の鍵一つで扉を閉めたり開けたりするのと同じです。
仕組みがこれほど単純なので、大きな長所がついてきます。とても速いということです。

02

速くてかんたん

共通鍵暗号は計算が比較的単純で軽いので、小さなメモでも大きなファイルでも、あっという間に閉めたり開けたりします。スマートフォンの写真や動画、記憶装置まるごとのような大きなデータも、すばやく処理できます。いまのコンピュータやスマートフォンには、この計算を専門に受け持つ回路まで入っています。
いま最も広く使われている共通鍵暗号は、AESという方式です。Wi-Fiやメッセージアプリ、機器のストレージの暗号化の多くが、こうした共通鍵暗号でデータを守っています。

大きさを選んで閉めましょう

小さいデータと大きいデータを選んで閉めてみましょう。大きくても、同じ鍵ですぐに閉まり、開きます。

データが大きくなっても、閉めるのはすぐに終わりました。この速さのおかげで、共通鍵暗号は実際にとても広く使われています。けれども、ここで考えておきたいことがあります。
自分のファイルを自分だけで閉めたり開けたりするなら、鍵は自分だけが持っていれば十分です。でも、遠くにいる人に鍵のかかった手紙を送って開けてもらうには、その人も同じ鍵を持っていなければなりません。

03

その鍵をどう渡すか

鍵のかかった手紙だけを送っても、友だちは開けられません。そこで鍵も送らなければなりませんが、鍵が通る道を思うと不安になります。その道に誰かが入りこんでいれば、通りかかった鍵をこっそり写し取れるからです。
鍵がもれた瞬間、鍵をかけた意味はなくなります。写し取った人も同じように開けられるからです。かといって鍵まで暗号化して送ろうとすると、その暗号を開ける別の鍵が必要になり、問題がいつまでもくり返されます。

自分友だち
K
道には誰もいません
鍵を送ってみましょう

「鍵を送る」を押してみましょう。道に誰かが入りこんでいると、通りかかった鍵がコピーされうることがわかります。

道に誰かがいたので、鍵はそのままコピーされてしまいました。コピーされた鍵は、こちらの鍵と同じように開けられます。かといって鍵をまったく送らなければ、友だちはいつまでも手紙を開けられません。
送ればコピーが心配で、送らなければ使えません。直接会って渡せばよいのですが、インターネットで初めて出会う数えきれない相手と、いちいちそうするわけにはいきません。

04

送っても行き止まり、送らなくても行き止まり

二つの道を並べてみましょう。一つ目は鍵を送る道です。速くて手軽ですが、途中でコピーされれば鍵をかけた意味がなくなります。二つ目は鍵を送らない道です。コピーの心配はありませんが、相手には手紙を開ける方法がありません。
一方は危険でふさがり、もう一方は役に立たずにふさがっています。しかも、人が増えるほど組ごとに別の鍵が必要になるので、分け合う鍵の数もどんどんふくらみます。

鍵を送る? 送らない?

二つの選択肢を一つずつ押して比べてみましょう。送ればコピーされる危険があり、送らなければ開けられないので、どちらの道もふさがっています。

どちらを選んでも行き止まりでした。これが有名な鍵配送問題です。共通鍵暗号がどれほど速くて便利でも、二人で分け合う秘密になったとたん、鍵を安全に渡す方法が必要になります。人々は長いあいだ、ここで立ち止まっていました。
そこへ、まったく違う発想が現れました。閉める鍵と開ける鍵をそもそも二つに分ける、公開鍵暗号です。実際のインターネットでは、公開鍵暗号で共通鍵を安全に渡してから、速い共通鍵暗号でデータをやりとりするというように、二つをいっしょに使っています。

05

まとめ

まとめるとこうです。共通鍵暗号は、閉めるときと開けるときに同じ鍵一つを使います。だから単純で、大きなデータもとても速く処理できます。けれども、離れた相手と使うには同じ鍵を渡さなければならず、送ればコピーが心配で、送らなければ相手が開けられません。
この行き止まりが鍵配送問題です。速さはそのまま生かしながらこの問題を解く道が、次のレッスンの公開鍵暗号です。

1同じ鍵で閉める・開ける
2速くてかんたん
3鍵をどう渡す?
4送っても送らなくても行き止まり

要点を順に押して振り返りましょう。(同じ鍵で閉めて開ける → 速くてかんたん → 鍵をどう渡すか → 送っても送らなくても行き止まり) 次のレッスンの公開鍵暗号が、この行き止まりを解きます。

これで、共通鍵暗号の光と影をどちらも見ました。同じ鍵一つで速く閉めたり開けたりできるという、はっきりした長所。そして、その鍵をどう分け合うかという、むずかしい宿題です。よい道具ほど、弱点を知っておかないと、うまく使えません。
次のレッスンでは、閉める鍵と開ける鍵を二つに分ける公開鍵暗号が、この宿題をどう解くのかを見ていきます。

一言でいうと共通鍵暗号は、閉めるときと開けるときに同じ鍵を使います。鍵が一つなので仕組みが単純で、大きなデータもとても速く閉めたり開けたりできるため、AESのような方式がWi-Fiやメッセージアプリ、機器のストレージなどで広く使われています。けれども、離れた相手が開けるには、その人も同じ鍵を持たなければならず、鍵を送る道そのものが危険です。途中でコピーされれば鍵をかけた意味がなくなり、送らなければ相手は開けられません。これが鍵配送問題です。そこで実際には、次のレッスンで見る公開鍵暗号で共通鍵を安全に渡してから、速い共通鍵暗号でデータをやりとりしています。
← セキュリティ
このページがお役に立ったなら支援する