"SSL"とは
多くの場合はSSL3.0/TLSの2つの事を指す
下位互換はないものの、ほぼ同じ機能を提供する為に呼ばれている。
"https"とは
ご存知、
Web通信で使用されるHTTPプロトコルをSSL/TLSプロトコルで保証するプロトコル
https通信をする上で重要な登場人物
種類 | 説明 |
---|---|
証明書 | WEBサイトが安全であるという事を外部に示す電子証明書 |
公開鍵・秘密鍵 | WEBサーバで使用する暗号化・復号化の鍵 |
暗号化アルゴリズム | データ転送時に用いる暗号化・復号化のルール |
SSLライブラリ | SSLプロトコルを実装する暗号化・復号化モジュール |
"SSH"とは
ご存知の通り、リモートでコンピュータにログイン・操作プロトコル。
いつも使うコマンド。
アプリケーション層で実装される暗号化方式
SFTPやポート制御でも利用される
"TLS" とは
SSLとの違いは、暗号アルゴリズムをサポートしたという点。
「SSL通信でxxする。」という会話も実際にはTLSだったりする事が多い。
DH,DSS,3DESなど。
3DES(トリプルデス)はDESで3回暗号化する方式。
SSLハンドシェイク
方法
公開鍵暗号方式で共通鍵を交換などを行う
ステップ
- 使用するアルゴリズムの合意
クライアントが対応しているアルゴリズムのリストを送付
クライアントに実際に使用するアルゴリズムを返す
伝える情報
- SSL version
- サーバ認証アルゴリズム
- 鍵交換アルゴリズム
- データ転送で使用するデータ保護用の鍵共通方式アルゴリズム
- データ転送で使用するデータの完全性を確認するためのMACアルゴリズム
- MACアルゴリズム チェック
- 圧縮アルゴリズム
-
アルゴリズムの確定
通信で使うアルゴリズムを確定し、
自身の公開鍵を含む証明書を送付
-
ランダムな文字列をserverの公開鍵で暗号化
ランダムな文字列はクライアントで生成される
serverの公開鍵で暗号化して送付する -
ランダムな文字列をserverの秘密鍵で復号化
クライアントとサーバそれぞれで作成した2つの乱数を -
暗号化鍵とMAC鍵を作成
鍵生成関数の入力に追加し、暗号化鍵とMAC鍵を生成
SSLで暗号化される範囲
全てのパケットを暗号化する訳ではない
SSL プロトコルはOSI参照モデルのセッション層に位置する為、
OSI参照モデルの上位3層
(セッション層、プレゼンテーション層、アプリケーション層)を暗号化する。
それ以下の層(レイヤ1-4)については暗号化しない。
つまり、SSLを導入したからと言っても、誰宛かのパケットかは隠せない。
「AさんからBさんへ連絡した」という事を隠すことはできない。
当然会話の内容は暗号化される。
イメージ的には大勢の前で、暗号化された言葉で話しているような感じ。
SSLで保証されるもの
-
転送中のデータ
盗聴されても、解読する事はできない。
仮に改ざんされても、MACという技術により検知することができる
-
通信相手が正しいマシンであること
サーバの公開鍵の証明書を確認することで
「なりすまし」されても偽物だと気付ける