はじめに
httpsを理解する時、httpにSSLを加えて通信経路での第三者による情報の盗聴や改ざんのリスクを防止できるということがわかったが、裏側がわからなくて結局SSLってなんでセキュアなのか肌で感じることができなかった。
SSLが動作する原理を理解するため、今回はSSLが動く対称鍵方式と非対称鍵方式についてしらべてみた。
非対称鍵方式
①キーペアの生成
PCでPCのPublic key
+ PCのPrivate Key
を生成
サーバーでサーバーのPublic key
+ サーバーのPrivate Key
を生成
ここで、Public keyは暗号化だけに使われて、Private keyは復元にだけ使われる
②キー交換
お互いのPublic keyを送り合う
PCが持っている鍵
PCのPublic key
+ PCのPrivate Key
+ サーバーのPublic Key(交換で獲得)
サーバーが持っている鍵
サーバーのPublic key
+ サーバーのPrivate Key
+ PCのPublic Key(交換で獲得)
③流れ
しかし、この非対称鍵方式が一般的に使われることはない
非対称鍵の何が問題?
キーペアを生成するために演算処理がかかりすぎる。しかも作ったものを長い間使い回しすることはできない(セキュリティのため)
例えば、コーヒーを飲むために使ったマグカップを毎回使い捨てているようなことをしている。
対称鍵方式
そのような非対称鍵方式のデメリットを回避するため、通信する前にキーペアを作ってディスクなどに保存しておく方法が生まれた。
効率
対称鍵が圧倒的にいい。先に作っておいてそもそもの計算量も少ないためCPUの使用量も少ないし、場合によってはもっとセキュアな面もある。
よく使われている対称鍵方式のAES-256と非対称鍵方式RSA 2048を比べてみると、RSAはbit数が大きいものの素因数分解のような仕組みをしているため今後量子コンピューターで容易に解読できる可能性がある反面、AES-256は単純な演算処理で構成されているが、量子コンピューターなどは得意としない演算になっているため解読しにくいらしい。
①対称鍵の生成
PCで対称鍵を1つ生成する(サーバーで作るパターンもあるが、今回はPCで作る方を見ていく)
サーバーではキーペアを用意する(サーバーのPublic Key
+ サーバーのPrivate Key
)
②キー交換
PCはサーバーのPublic Key
を受け取る
PCが持っている鍵
PCの対称鍵
+ サーバーのPublic Key(交換で獲得)
サーバーが持っている鍵
サーバーのPublic key
+ サーバーのPrivate Key
+ PCの対称鍵(③流れの一番上で受け取る予定)
③流れ
おわりに
結局もっと深いところまではわからなかったが、これだけでなぜSSLがいいのかは理解できた。
曖昧な知識をどんどん固めていきたいな〜