よくわかっていなかったSSL通信を学んだので書きます。学習中なので誤りを含むかもしれません。
SSL通信とは
SSLとは通信を安全にするための施策です。以下のような方法を通じて通信のセキュリティを確保します。
- ハイブリッド暗号方式
- メッセージ符号認証(MAC)を用いた改ざん検出
- デジタル署名
ハイブリッド暗号方式
ハイブリッド暗号方式とは共通鍵暗号方式と公開鍵暗号方式を組み合わせた暗号方式のことです。 ハイブリッド暗号方式を用いることで両方の暗号方式の良いとこどりができます。
ハイブリッド暗号化方式の通信方法は、以下です。
- 公開鍵暗号方式で共通鍵を通信相手と安全にやり取りする
- 以降の通信は共通鍵を用いて暗号通信を行う
最初に公開鍵暗号方式で鍵をやり取りした以降の通信で共通鍵を利用する理由としては、公開鍵暗号方式は通信の暗号化方式が共通鍵方式と比べ複雑であるため、復号化に時間がかかるためです。共通鍵は暗号化、復号化に共通の鍵を用いるシンプルな方式であるため、高速に復号化できます。
共通鍵方式であると、鍵の漏洩がセキュリティリスクになるといえますが、セッションが切れると共通鍵も使い捨てにするというごく短い時間のみの使用であるため、鍵の漏洩もほぼ無視してよいといえます。
このように、速く、安全に通信を行うことができるのがハイブリッド暗号化方式です。
メッセージ符号認証(MAC)を用いた改ざん検出
メッセージ符号認証(MAC)はハッシュ値を用いた改ざん検出方法です。
方法は、
- データ送信者はメッセージと共通鍵をMAC関数に入れて、ハッシュ値を得ます。
- データ送信者は得られたハッシュ値とメッセージを合わせて、通信相手にデータを送信します。
- データ受信者は送信者がハッシュ値を計算した方法と同様にハッシュ値を取得します。
- 受信者が算出したハッシュ値とデータとして送られてきたハッシュ値が同じであったら改ざんが行われておらず、異なっていた場合は改ざんが行われたといえます。
MAC関数は何回同じ値を入れても同じ結果が得られ、また、ハッシュ値から元のデータを求められないようにする必要があります。この特性から、データの改ざんが検出できることを保証します。
デジタル署名
デジタル署名は、情報の発信者であることを証明するものです。
デジタル署名の方法としては情報の送信者が秘密鍵で署名を行います。その後、情報の受信者が公開鍵にて復号します。公開鍵暗号方式のデータ送信の逆の方法であるといえます。秘密鍵と公開鍵が一対になっていることを利用した署名方法です。
秘密鍵は情報発信者しか持ちえないということから、情報の発信者は秘密鍵の保持者であるということを証明します。
感想
最近仕事で、https周りで困っている状況が続いたのでヒントになるようにSSLの勉強を行いました。今回本を読んで体系的に学んだことで少しは理解できたかなと思います。しかし、まだまだ自分の中で消化しきれていないので引き続き学んでいきたいと思います。