これだけは知っておこうTLS
記事について
セキュリティのためにTLSを導入しようとはよく聞くが、 そもそもTLSは何を担保するものなのかを整理する。
前提として知っておくべきこと
- デジタル署名
- デジタル証明書
TLSは何を担保するのか?
下記の3つを担保する。 つまるところ、man in the middle攻撃への対策となる。
- 正真性
- 改ざんがなされていないこと
- 機密性
- 通信盗聴されても大丈夫なよう暗号化されていること
- 認証
- 正しい相手と通信をしていること
TLSの通信の流れ
引用: SSL暗号化通信の仕組み
クライアント -> サーバ
- 接続要求をおこなう
サーバ -> クライアント
クライアント
サーバ
どうやって3つの目的を担保しているか?
- 認証
- デジタル証明書と共通鍵によって想定通りの相手と通信していることを担保する
- 機密性
- セッション鍵による共通鍵方式の暗号化通信により、機密性を担保する
- 正真性
- 暗号化されたデータにMessage Authentication Codeというデータのハッシュ値を付与し、これを受け取った側がハッシュ比較することで担保する
mTLSについて
厳密には上記のTLS通信だけでは認証の要件を担保できないこともある。 たとえば、企業間の外部公開されていないシステムを連携させるような、少しセキュリティ要件の高いケースなど、 サーバにアクセスしてくるクライアントもちゃんと保証したいようなケースである。 そのときに使うのが相互TLS通信というものである。(以下mTLS) mTLSはサーバに加えて、クライアントにも証明書を要求することでクライアントの身元を保証することができる。