背景: SSL/TLS周りが仕事で出てきて混乱したので整理
SSL/TLS
Wikipediaの要約
SSL: Secure Socket Layer
TLS: Transport Layer Security
- 通信を暗号化
- 通信相手の認証
- 改ざんの検出
の機能を提供するプロトコル
SSL/TLSで得られるのは、機密性"confidentiality"、完全性"integrity"、真正性"authenticity"5の3要素です。
ーSSL/TLSの見落とされがちな「認証」という基本機能 - Qiita
正しい呼び方はTLSで,前身のSSL呼びが習慣で残ってる
2022年現在の最新版はTLS 1.3(まだメジャーバージョン1なんだね)
HTTPはもちろん,多くのアプリケーション層プロトコルで採用されている
- 利用方法
- 先に下位層(TCPとか)の接続後にTLS接続を確立し,アプリケーションを開始
- アプリケーション開始してからTLSへ切り替え(STARTTLS方式)
- セキュリティ上の考察
- TLS適用の有無と使用アルゴリズムの強度
- TLS導入→セキュリティ確保ではない
- 計算能力を使うため何でもかんでも導入しないほうが良い(特に画面遷移しまくるWeb)
- バージョンや使用するアルゴリズムによっては使用できなくはないが褒められない通信になることもある
- 証明書の正当性
- ルート証明書が本当に意図する認証局のものかどうかの注意
- 正当な証明書を持ったサーバでも,ユーザの意図したサーバかはわからない
- サーバ証明書は第三者でも取得できるため,サーバ認証局の発行先を確認する必要がある
- TLS適用の有無と使用アルゴリズムの強度
他の言葉との関連
公開鍵暗号
暗号化と復号に個別の鍵(手順)を用い暗号化の鍵を公開できるようにした暗号方式.
デジタル署名も広義には公開鍵暗号方式になる.(秘匿を目的にしない)
SSL/TLSはプロトコルなのに対して公開鍵暗号は暗号方式
SSL/TLSといプロトコルはネットワーク上で通信を暗号化するために公開鍵暗号という方式を利用する.
そこで確率された通信は,通信相手の認証,改ざんの検出まで行ってくれる.
つまり: 公開鍵暗号方式だけでは通信できず,通信するためにいろいろ決めているのがSSL/TLS
補足: 公開鍵暗号で共通鍵を交換し,実際に通信する際は共通鍵暗号を用いている
HTTPS
HTTPによる通信をよりセキュアに行うためのプロトコルおよびURIスキーム.
厳密に言えば,HTTP自体はプロトコルではなく,SSL/TLSプロトコルによって提供されるセキュアな接続の上でHTTP通信を行うことをHTTPSと読んでいる.ウェルノウンポートとして443が使用される.
メッセージを平文で送るHTTPを,SSL/TLSプロトコルを用いてサーバの認証・通信内容の暗号化・改ざん検出を行ってから通信することでセキュリティを高める.
SSLはあくまでHTTPにかぶさっているだけ.
つまり: HTTPだと危ないのでSSL/TLSで暗号化してる
補足:
・ 導入に関して,
1: HTTPSは無料発行サービスを除き費用がかかる.
2: SSL証明書(サーバ証明書)を定期的(90d/1y)に更新する必要がある.
・ HTTPSの通信時に関して
1: プロキシサーバを用いてアクセスする場合,プロキシサーバをトンネリングする必要がある場合がある.
2: 上記の場合,CONNECTメソッドを使用する.(GET, POSTとかの一種)
プロキシは、セキュリティー保護されたサーバーへの接続を開き、セキュリティー保護されたトランザクションには介入せず、データを双方向にコピーします。
ーProxy Server を介した SSL のトンネリング
AES
Advanced Encryption Standard.共通鍵暗号アルゴリズム.共通鍵の一つで,ブロック暗号に分類される.
同じく共通鍵暗号アルゴリズムのストリーム暗号ではRC4などがある.
SSL/TLSが公開鍵暗号方式で交換する共通鍵で使用できるアルゴリズム.
つまり: AESはSSL/TLSの通信暗号に用いることができるアルゴリズム
RSA
発明者であるロナルド・リベスト、アディ・シャミア、レオナルド・エーデルマンの原語表記の頭文字をつなげてこのように呼ばれる.公開鍵暗号の一つ.
SSL/TLSが公開鍵暗号で使用できるアルゴリズム.
つまり: RSAはSSL/TLSの通信暗号化のための共通鍵を暗号化してやりとりするのに用いることができるアルゴリズム.
CSR
Certificate Signing Request.証明書署名要求.公開鍵証明書を申し込むために申請者から認証局へ送られるメッセージのこと.
SSL/TLSでの認証機能で用いるサーバ証明書について,その正当性の証明をCA局に依頼するために,サーバがCA局に送るメッセージ.
つまり: サーバからCA局へサーバ証明書に署名を求めるリクエストメッセージ.
Base64
エンコード方式.
データを64種類の印字可能な英数字(A-Za-z0-9+/=)のみを用いて、それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うために使用される.
メールやHTTPヘッダー,SSL証明書などに使用される.
SSL/TLSでの認証機能で使用するSSL証明書のエンコードの一つ.このエンコード方法で生成された証明書は.PEMファイルとして保存されることが多い.
つまり: SSL証明書.pemファイルのエンコード方式の一つ
OpenSSL
SSL/TLSの、オープンソースで開発・提供されるソフトウェアである。中心となっているライブラリ(C言語)は基本的な暗号化関数と様々なユーティリティ関数を実装している。
つまり: SSL/TLSを実装するのに使用できるオープンソースライブラリ.
編集履歴
2022/06/06 公開
2022/06/07 他の言葉との関連にAES,RSA,CSR,Base64,OpenSSLを追加