PR

 前回はインターネットの代名詞と言えるプロトコルのHTTPを解説しました(前回の解説はこちら)。その中で、HTTPの暗号化に多用されているSSL(およびその発展型であるTLS)についてはHTTPと「事実上不可分」と書きました。今回はそのSSL/TLSについての解説です。

 HTTPの解説でも述べたように、SSL 3.0とTLS 1.0の基本動作はほぼ同じです。今回の解説ではSSL 3.0を基本として、TLSについては必要に応じて注釈を入れることにします。使用する用語もSSL/TLS共通の内容については「SSL」を基本とし、TLSに特有の記述のみ「TLS」と記します。

SSLの基本動作

 SSLの動作は「初期情報交換(Hello)」「暗号鍵の交換(Key Exchange)」「暗号通信の開始(Change Cipher Spec)」の3段階から成ります。簡単に書くと以下のようになります。

 以降の通信は暗号化されます。これだけなら単純な動作に見えます。

 SSLの通信データ構造は「レコード」という外枠にまとめられ、必要に応じてレコードの中に「メッセージ」が含まれます。C言語風に書くと以下のような構造となります。


struct Message {
  unsigned char msg_type;
  unsigned char length[3];
  unsigned char body[*];
};
  
struct Record {
  unsigned char type;
  unsigned char version[2];
  unsigned char length[2];
  union {
  struct Message message[*];
  unsinged char plain_data[*];
  } record_data;
};

この記事は会員登録で続きをご覧いただけます

日経クロステック登録会員になると…

新着が分かるメールマガジンが届く
キーワード登録、連載フォローが便利

さらに、有料会員に申し込むとすべての記事が読み放題に!
有料会員と登録会員の違い