盗み見されても中身が読めないようにする「暗号」。SG試験で頻出の共通鍵暗号・公開鍵暗号・ハッシュ関数の3つを、鍵の配り方の違いに注目して整理しましょう。
ネットで買い物すると鍵マークが出るじゃん? あれって結局、通信が暗号化されてるってことだよね?
そのとおりよ。
データを第三者に読めない形に変換するのが暗号化、元に戻すのが復号。
この暗号方式は大きく2種類あるの。
1つ目が共通鍵暗号方式ですね。
暗号化と復号で同じ鍵を使うので、対称鍵暗号とも呼ばれます。
同じ鍵で閉めて開けるって、家のドアの鍵みたいですねぇ。
わかりやすいですぅ。
いい例えね。
代表例がAESよ。
処理が速くて大量のデータ暗号化に向いているの。
でも共通鍵には大きな弱点があるわ。
弱点? 同じ鍵で速いなら最高じゃないの?
相手に鍵をどうやって安全に渡すか、という鍵配送問題があります。
鍵をそのままネットで送ると、途中で盗まれたら暗号の意味がなくなりますからね。
たしかに…鍵を盗まれたら、いくら頑丈な錠前でも開けられちゃいますねぇ。
そこで2つ目の公開鍵暗号方式の出番よ。
こちらは鍵が『公開鍵』と『秘密鍵』のペアになっているの。
公開鍵は誰に見られても構わない鍵で、秘密鍵は自分だけが厳重に持つ鍵です。
代表例がRSAですね。
え、鍵が2つ? どっちで暗号化してどっちで戻すの? こんがらがってきた…
秘密のメッセージを送るときは『受信者の公開鍵』で暗号化するの。
すると、それを戻せるのは対になった『受信者の秘密鍵』だけ。
だから公開鍵はいくらばらまいても安全なのよ。
この仕組みなら、事前に秘密の鍵を配っておく必要がありません。
公開鍵は公開してよいので、共通鍵の鍵配送問題が解決するわけです。
ポストの投入口みたいですねぇ。
入れるのは誰でもできるけど、取り出せるのは鍵を持つ人だけ、っていう…
ねむちゃん、まさにその通りの名比喩よ! ただし公開鍵暗号は計算が重くて処理が遅いの。
だから実際のHTTPS通信では、公開鍵暗号で共通鍵を安全に配り、その後は高速な共通鍵暗号で本文をやり取りする『ハイブリッド方式』を使うわ。
なるほど! 両方のいいとこ取りなのね。
ところで暗号化じゃないハッシュ関数ってのも聞いたことある。
ハッシュ関数ですね。
これは暗号化とは目的が違います。
元に戻すためではなく、データが改ざんされていないか確かめるために使うんです。
ハッシュ関数は同じ入力からは必ず同じハッシュ値を出すけれど、入力が1文字でも変わると全く別の値になるの。
しかも、ハッシュ値から元データは復元できない一方向性を持つのよ。
代表例がSHA-256ね。
戻せないなら暗号化とは違うんですねぇ。
改ざんされてないか照らし合わせる、指紋みたいなものですぅ。
その理解でばっちりよ。
共通鍵は速いけど鍵配送が課題、公開鍵は鍵配送を解決するが遅い、ハッシュは復元不可で改ざん検知に使う。
この3つの役割の違いをつかめば大丈夫よ。
確認クイズ
公開鍵暗号方式を用いて、送信者が受信者だけに読める暗号文を送りたい。送信者が暗号化に使用する鍵として適切なものはどれか。
- 送信者の公開鍵
- 送信者の秘密鍵
- 受信者の公開鍵
- 受信者の秘密鍵
こたえを見る
正解: 3. 受信者の公開鍵
正解は「受信者の公開鍵」。公開鍵暗号では、受信者の公開鍵で暗号化した暗号文は、対になる受信者の秘密鍵でしか復号できない。よって受信者だけが読める。送信者の鍵で暗号化しても受信者は復号できず、受信者の秘密鍵は送信者が持っていないため使えない。なお送信者の秘密鍵で暗号化するのは「暗号化」ではなく電子署名の用途である。