SSL/TLS通信の仕組みってよく忘れてしまい毎回ググってるのでメモがてら整理してみた。
仕組みを理解するには、デジタル署名、デジタル証明書の理解が肝となる。
デジタル署名
デジタル署名は、送信されてきたデータが間違いなく本人のものであるのかを証明するのための技術で公開鍵暗号よって実現してます。
送信者の送信データをハッシュ値に算出し暗号化したものがデジタル署名にあたり、受信者は受信データをハッシュ値に算出しデジタル署名を復号して結果と比較します。ハッシュ値と一致するば送信者のもの判断しデータの改ざん確認を行えます。

- 送信者が公開鍵、秘密鍵を発行する
- 事前に送信者が受信者へ公開鍵を渡す
- 送信者がメッセージを作成
- メッセージからハッシュ値を算出
- ハッシュ値を秘密鍵で暗号化しデジタル署名を作成
- メッセージとデジタル署名を送信
- 受信したメッセージからハッシュ値を算出
- 公開鍵を利用してデジタル署名を復号する
- 算出したハッシュ値と復号したハッシュ値を比較する
デジタル署名のアルゴリズム
デジタル署名アルゴリズムは、公開鍵暗号方式とハッシュ関数を組み合わせたもので代表的なものに次がある。
アルゴリズム | 組み合わせ |
---|---|
Sha-1WithRSAEncryption | ハッシュ関数にSHA-1、公開鍵暗号方式にRSA |
id-dsa-with-sha1 | ハッシュ関数にSHA-1、公開鍵暗号方式にDSA |
ecdsa-with-SHA1 | ハッシュ関数にSHA-1、公開鍵暗号方式にECDSA |
Sha-1WithRSAEncryption | ハッシュ関数にSHA-1、公開鍵暗号方式にRSA |
Sha-256WithRSAEncryption | ハッシュ関数にSHA-256、公開鍵暗号方式にRSA |
デジタル証明書
デジタル証明書は、認証局(CA)へCSR(公開鍵と申請情報)を送付し発行されたもので、通信時に相手に渡して自身がなりすましでなく本人と証明することができます。SSL/TLS通信では事前に安全に公開鍵を渡す必要があり、公開鍵とデジタル署名を組み合わせたデジタル証明書が実現してくれます。

- 公開鍵、秘密鍵を発行
- CSR(公開鍵と申請情報)を含め認証局へ送付し、デジタル証明書の発行依頼する
- 認証局はCSRをハッシュ化して秘密鍵でデジタル署名したデジタル証明書を生成する
- クライアントへデジタル証明書を発行する
- クライアントがサーバーへリクエスト
- サーバーはクライアントへデジタル証明書を渡す
- ブラウザがプリインストールされている認証局の公開鍵でデジタル証明書のデジタル署名を復号し、なりすまし確認をする
- サーバーの正当確認がとれればデジタル証明書の公開鍵でSSL/TLS通信を開始する
SSL/TLS通信の仕組み
SSL/TLS通信は、インターネット上で通信相手を証明し通信データを暗号化して安全にやりとりするプロトコルです。
これまでのデジタル署名、デジタル証明書を組み合わせて実現されています。
- ざっくり要点だけ
- デジタル証明書からデジタル署名でなりすまし確認が行え、安全に公開鍵を渡せる
- 公開鍵暗号で安全に共通鍵をサーバへ渡せる
- 共通鍵でデータ暗号化させた通信を行える

- SSLリクエスト
- デジタル証明証を送る
- クライアントが共通鍵を生成(正確には共通鍵のSecretKeyを生成)
- サーバの公開鍵で共通鍵を暗号化
- サーバへ共通鍵を送る
- サーバは秘密鍵で共通鍵を復号
- サーバー、クライアントが共に共通鍵を持てたのでデータ暗号化通信を行います
参考
デジタル署名の仕組み
デジタル証明書の仕組み
SSLとは
PKI関連技術に関するコンテンツ
SSL/TLSの仕組みを知っていますか?