中年プログラマーの息抜き

ブログをはじめました。気の向くままにプログラム関連ネタをメモしていきます。

自分なりに整理する - SSLの仕組みと証明書について -

なりすましの防止

(開始:クライアント)
使用できる暗号化仕様をクライアントで発生させた乱数(C)と一緒にサーバーへ送信

 ↓ ・・・暗号化/圧縮仕様

(応答:サーバー)
暗号化仕様を決定しサーバーで発生させた乱数(S)とともに応答し、続けてサーバー証明書を送信する

 ↓ ・・・暗号化/圧縮仕様
 ↓ ・・・サーバー証明書

(終了:クライアント)
受け取ったサーバー証明書に含まれているディジタル署名認証局の公開鍵で複合し、メッセージダイジェストを計算する
またサーバー証明書のメッセージダイジェストを計算した結果が上と一致すると、正当なサーバー証明書であることを認証局が証明したことになる
最後にサーバー証明書を確認して、サーバー公開鍵を取得する

暗号化通信の準備

(開始:クライアント)
プリマスタシークレット(M)を作成し、サーバーの公開鍵で暗号化して送信する
乱数(C)、乱数(S)、プリマスタシークレット(M)をもとにマスターシークレット(S)を作成し、それをもとにクライアント送信用の共通鍵とサーバー送信用の共通鍵を生成する

↓ ・・・暗号化したプリマスタシークレット

(応答:サーバー)
乱数(C)、乱数(S)、プリマスタシークレット(M)をもとにマスターシークレット(S)を作成し、それをもとにクライアント送信用の共通鍵とサーバー送信用の共通鍵を生成する

暗号化通信の送信

(開始:クライアント)
送信内容をクライアント共通鍵で暗号化して送信

↓ ・・・クライアント共通鍵で暗号化した電文

(応答:サーバー)
受信内容をクライアント共通鍵で複合化

暗号化通信の受信

(開始:サーバー)
送信内容をサーバー送信用共通鍵で暗号化して送信

↓ ・・・サーバー送信用共通鍵で暗号化した電文

(応答:クライアント)
受信内容をサーバー送信用共通鍵で複合化

まとめ

忘れてきたので思い出したいなと思いまとめました。