SSL/TLS証明書におけるSHA-256
SHA-256がSSL/TLS証明書をどのように保護するかを解説。証明書署名、SHA-1からの移行、証明書チェーン検証、ブラウザが証明書の整合性を検証する仕組みを学びます。
詳細な説明
SHA-256はSSL/TLS証明書署名に使用される標準ハッシュアルゴリズムです。認証局(CA)が証明書に署名する際、証明書の内容をSHA-256でハッシュし、秘密鍵でハッシュを暗号化します。ブラウザは同じSHA-256ハッシュを計算し、復号された署名と照合して証明書を検証します。
証明書署名の仕組み:
証明書にはドメイン名、公開鍵、有効期間、発行者情報がASN.1 DER形式でエンコードされています。CAはこのエンコードデータのSHA-256を計算し、RSAまたはECDSAでハッシュに署名します。TLSハンドシェイク中、クライアント(ブラウザ)は証明書の内容を抽出し、独立にSHA-256ハッシュを計算し、CAの公開鍵で署名を復号して両方の値が一致するか検証します。
SHA-1からSHA-256への移行:
2016年以前、ほとんどの証明書はSHA-1を使用していました。SHA-256への業界全体の移行はインターネット史上最大規模の協調的セキュリティ変更の一つでした。CA/Browserフォーラムは2016年1月1日をCAがSHA-1証明書の発行を停止する期限としました。Google Chromeは2015年(Chrome 42)からSHA-1証明書の警告を表示し、2017年(Chrome 56)で完全にブロックしました。
証明書チェーン検証:
典型的なTLS接続では、サーバーはリーフ証明書(ドメイン)→中間CA署名→ルートCA署名のチェーンを提示します。チェーン内の各署名はSHA-256を使用します。ブラウザは下位の証明書をSHA-256でハッシュし、上位の証明書の署名を検証します。ルートCAの証明書はブラウザやOSの信頼ストアに事前インストールされているため信頼されます。
Certificate Transparency:
現代の証明書セキュリティにはCertificate Transparency(CT)ログが含まれ、SHA-256を使用したMerkleツリー構造で追記専用の公開監査記録を作成します。ドメイン所有者は不正発行された証明書を検出できます。
ユースケース
SHA-256はWeb全体の信頼モデルを支え、ブラウザが検証する証明書署名を通じて数十億の日常のHTTPS接続を保護しています。