🐥

SSL/TLSについてまとめてみた

2024/10/13に公開

はじめに

最近以下の本を読みました。
SSL/TLSが整理できてよかったので、本テーマで、インプットした知識を記事にしていきたいと思います。
https://www.amazon.co.jp/ゼロからスタート-教育系YouTuberまさるの情報処理安全確保支援士1冊目の教科書-まさる/dp/4046061979

https://www.amazon.co.jp/セキュリティ技術の教科書-第3版-長嶋-仁/dp/4865752749

対象

・サーバやネットワーク関連の基礎知識を習得されている方
・暗号技術の基本について理解されている方

本記事で細かく説明しない内容

恐れ入りますが、以下の概念について詳細な説明は省かせていただきます。

機密性 (Confidentiality)
情報が許可されていない人や事に対して開示されないこと。暗号化によって実現される。

完全性 (Integrity)
情報が許可なく変更されていないこと。ハッシュ関数やMACによって検証される。

真正性 (Authenticity)
情報の出所や実体が本物であること。デジタル署名や認証プロトコルによって確認される。

共通鍵暗号化方式
暗号化と復号化に同じ鍵を使用する方式。高速だが、鍵の安全な共有が課題。主に機密性を提供。

公開鍵暗号化方式
暗号化には公開鍵、復号化には秘密鍵を使用する方式。鍵配送問題を解決するが、処理が遅い。機密性と真正性を提供可能。

ハイブリッド暗号化方式
共通鍵で本文を暗号化し、その共通鍵を公開鍵で暗号化する方式。両方の利点を組み合わせ、効率的に機密性を確保。

デジタル署名
メッセージのハッシュを送信者の秘密鍵で暗号化したもの。メッセージの完全性と送信者の真正性を保証。

デジタル証明書
信頼できる第三者(認証局)が発行する電子文書。公開鍵の所有者の身元を証明し、真正性を確立。

メッセージ認証コード (MAC)
共有秘密鍵とメッセージから生成される短いビット列。メッセージの完全性と認証(真正性の一部)を提供する。

SSL/TLSハンドシェイクについて

では早速本記事のメインテーマに踏み込んでいきます。
私たちがインターネットを利用する際、SSL/TLSハンドシェイクという技術によって、通信の完全性/機密性/真正性が保たれています。
図示すると、以下のようになります。

※こちらの図では以下暗号スイートを使用すると仮定しています。
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

図では、以下を実施しています。
暗号化アルゴリズムの合意
サーバーの認証(場合によってはクライアントの認証も)
セッション鍵の確立

暗号スイートの見方ですが、以下のようになります。
例:TLS_①ECDHE_➁RSA_WITH_③AES_256_④GCM_⑤SHA384
①鍵交換アルゴリズム
➁認証アルゴリズム
③やり取りするデータを暗号化するアルゴリズム
④暗号利用モード
⑤メッセージ認証コード生成のハッシュ関数

つまり、この図で実施していることは
①Client Hello~Server Helloで使用する暗号を決定
➁クライアント側が、共有されたでデジタル証明書で、サーバを認証
※具体的な認証の仕組みは省略しますが、使用されるアルゴリズムはRSAとSHA384となります。
③ECDHEアルゴリズムで共通鍵の生成
ということになります。
実際のデータは、③で生成した鍵とAES_256アルゴリズムを用いて、暗号化されます。

おわりに

本当は、デジタル証明書を用いたサーバの検証方法なども深堀したかったのですが、
それについては別記事にします。

Discussion