HTTPS、TLSとは
HTTPを暗号化してより安全にデータを送受するための技術。SSLを使用していた(今はSSLの上位バージョンのTLSが主流)
SSLやTLSによる暗号化や認証を行う。
TLSのバージョンについて(TLS1.0、1.2、1.3)
TLS1.0、TLS1.1
TLS1.0は1999年にSSL3.0の後継として開発・発表された。
TLS1.0、TLS1.1は古く脆弱性もあるため、ほとんど使用されない。
初期バージョンの「TLS 1.0」や「TLS 1.1」はすでに設計が古く、もはや安全なプロトコルとは言えない。そのため、ほとんどのWebブラウザーですでに既定で無効化されている。「Microsoft 365」などのWebサービスでもサポートが打ち切られている。
Windowsで「TLS 1.0」「TLS 1.1」が非推奨に ~2023年9月のプレビュービルドで既定無効/窓の杜
TLS 1.0は1999年にリリースされた、約20年前のプロトコルです。BEASTやPOODLEなどの攻撃に脆弱であることが、何年も前から知られており、また脆弱な暗号しかサポートしていないため、現在の通信を十分に安全に保つことができません。
TLS 1.1 は、忘れられた**「真ん中の子」**です。既知のプロトコルの脆弱性はありませんが、不正な暗号をサポートしています。ほとんどのソフトウェアで、TLS 1.2によってカバーされ、TLS 1.1が使われることはめったにありません。
TLS 1.0および1.1の廃止について - DigiCert.com
TLS1.2 (2008年~)
TLS1.2は、それまでのTLSのセキュリティ上の問題を克服する事に重点を置いた。
SHA-256などのより強力なハッシュ関数の導入やより安全な暗号スイートへの移行、暗号化アルゴリズムの構成の改善が行われた。
TLS1.3 (2018年~)
TLS1.3からさらに性能とセキュリティを向上させたもの。以下のような特徴がある。
- ハンドシェイクの手順が簡素化されたため、接続時間が短縮
- 古い暗号スイートを削除、Forward Secrecy(前方秘匿性)の強制等によるセキュリティ強化
- 効率的で安全な暗号化メカニズムの導入
- Forward Secrecy(前方秘匿性):仮に秘密鍵が流出したとしても、過去に暗号化された通信データの安全性を守る事ができる特性
*「 データを暗号化する鍵から別のカギを生成しない」「鍵生成の元となるデータは使い捨て」等の要求を守る事で実現できる
- Forward Secrecy(前方秘匿性):仮に秘密鍵が流出したとしても、過去に暗号化された通信データの安全性を守る事ができる特性
暗号スイートとは
鍵交換アルゴリズム、鍵認証方式、サイファー、メッセージ認証符号の組み合わせの事。
例: ECDHE_RSA_WITH_AES_128_GCM_SHA256
・鍵交換アルゴリズム:ECDHE
・鍵認証方式:RSA暗号
・サイファー(暗号方式):AES-128
・暗号利用モードはGCM(Galois/Counter Mode)
・メッセージ認証符号:SHA256
※ビット超256のハッシュ関数。送信・受信のハッシュ値を比較する事で改ざんされていない事を確認する
TLS/SSLハンドシェイク
TLS通信を開始する前に行う動作。その後のTLSで使用するTLSのverや暗号方式の決定、サーバの公開鍵とSSL証明書認証局のデジタル署名を使ってサーバの認証、セッションキーの生成等を行う
TLS1.2のハンドシェイク
TLS1.2とTLS1.3で若干フローが異なる。TLS1.3では、フローが簡略化されてより効率的になった。
TLS1.3のハンドシェイク
クライアントハロー、サーバハローでまとめて情報を送る事で「Server Hello Done」「Change Cipher Spec」といった中間状態は不要になった。TLS1.2よりもハンドシェイクの往復が1回分減った。
背景に、前方匿名性を確保するためにRSA暗号が使われなくなりディフィー・ヘルマン型の暗号のみとなった。
参考
安全な通信を実現するTLS 1.3のプロトコル概要をTCPクライアント/サーバーの拡張を例に紹介 CodeZine