2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SSL通信のプロセス:

Last updated at Posted at 2015-12-18

SSL(Secure Socket Layer)って?

通信時のセキュリティ担保のための技術で、通信時に使われている(ブラウザに出てくる鍵マークとか)ってことはわかるんだけど、実際どんな技術を使っているのかイマイチ理解出来ない。

ってことでいろいろ調べた結果を以下にまとめてみました。

参考:


SSLのプロセスざっくり

まず認証のプロセスとして、安全を保つために大きく2つのプロセスに分かれてます。

(1)ネゴシエーション
 接続相手を認識して、通信に必要な共通鍵を作成するプロセス。

(2)暗号化通信
 作成した共通鍵で通信するプロセス。

※公開鍵認証 / 共通鍵認証については、時間があったら。
知らないひとはQiiてね。


細かいプロセス

(1)ネゴシエーション

 ネゴシエーションって交渉とか折衝とかいう意味。
 まず、通信開始する前に、サーバ、クライアントが 

 「全く同じ共通鍵を作ってデータ通信したい。
  でも直接共通鍵渡すとパクられたりしそうでちょっと怖い」
  
 を解決するためにちょっと面倒な手順を踏む。
 公開鍵/秘密鍵の暗号/複合を使って確認する。




 a)接続要求  [クライアント → サーバ]
 
  倉:「おーい、SSL通信したいんだけどOK?」
  鯖:「ちょいまちー」

 b)返答:公開鍵(サーバ証明書)の送付[サーバ → クライアント]

  鯖:「通信暗号化するための公開鍵送るんで受け取ってー。」
  倉:「おK。待ってる・・・公開鍵キタコレ」
  
  ※共通鍵作成のための公開鍵を、サーバからクライアントに渡す(同じ公開鍵を持つ)
            
 c)通信用データ作成、送付 [クライアント → サーバ]

 倉:「したら通信用のデータ作っておくるわー。暗号化してくれる?」
 鯖:「まかせろー」

 ※通信用公開鍵作成のためのデータをクライアントからサーバに渡す(同じデータを持つ)

 d)暗号化通信用鍵作成 [クライアント & サーバ]
 
 鯖:「そしたらもらったデータ暗号化して共通鍵作るわー(作った)」
 倉:「おけおけ。こっちも作る(出来た)」
 
 ※同じ公開鍵で同じデータを暗号化することで、サーバとクライアントが同じ共通鍵を持つ。

  
 重要なのは「サーバ側が持つ公開鍵」と「クライアントがつくるデータ」を掛けあわせて共通鍵を作ること。
 通信でやりとりをするのはこの2つ。
 
 これで、直接(メールとかで)共通鍵を渡すことなく
 全く同じ共通鍵をクライアントとサーバが持つことになる。

(2)暗号化通信

 作成した共通鍵を使ってデータのやりとりをする。



a)データ送信 [クライアント → サーバ」

 倉:「データ暗号化しておくるよー。(共通鍵を使って暗号化)」
 鯖:「ばっちこーい。」
 
b)データ受信「サーバ」

 鯖:「届いたー、復号すんね(共通鍵を使って復号)」
 倉:「りょ。つづけておくるよー(エンドレス)」

負荷の高い公開鍵/秘密鍵暗号化を、相互の認証(共通鍵作成)のために使い、
その後は負荷の小さい共通鍵を使う、というSSLの仕組みでした。

ではまた!!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?