· 12 min read
Every time you see that little padlock icon in your brow
ブラウザのアドレスバーに小さな南京錠のアイコンが表示されるたびに、SSL/TLS暗号化が機能しているのを目撃しています。しかし、舞台裏では正確に何が起こっているのでしょうか?HTTPSはどのようにして機密データをハッカーを寄せ付けない判読不可能な形式に変換しているのでしょうか?
この包括的なガイドでは、SSL/TLSプロトコルの謎を解き明かし、オンライン通信をどのように保護しているかを探り、これらの重要なセキュリティ技術を実装およびトラブルシューティングする実用的な方法を紹介します。
SSL(Secure Sockets Layer)とTLS(Transport Layer Security)は、コンピュータネットワーク上で安全な通信を提供するために設計された暗号化プロトコルです。SSLは1990年代にNetscapeによって開発された元のプロトコルでしたが、TLSはその後継であり、今日使用されている現代の標準です。
HTTPS(HTTP Secure)を使用してウェブサイトにアクセスすると、TLS暗号化を使用しています。HTTPSの「S」は「Secure」を意味し、そのセキュリティはTLSがHTTPトラフィックを暗号化されたトンネルで包むことから来ています。
SSL/TLSが達成すること:
クイックヒント: 「SSL証明書」や「SSL暗号化」とよく言いますが、現代の文脈ではほとんど常にTLSを指しています。SSL 3.0はセキュリティの脆弱性により2015年に廃止されました。
SSL/TLSは非対称暗号化と対称暗号化の組み合わせを使用してデータを保護します。このハイブリッドアプローチを理解することは、プロトコルがセキュリティとパフォーマンスの両方をどのように達成するかを把握する鍵です。
非対称暗号化は、数学的に関連する2つの鍵を使用します:公開鍵と秘密鍵。公開鍵で暗号化されたデータは、対応する秘密鍵でのみ復号化でき、その逆も同様です。
郵便受けのようなものと考えてください:誰でも手紙を投函できます(公開鍵で暗号化)が、鍵を持っている人だけがそれを開けて内容を読むことができます(秘密鍵で復号化)。
課題は?非対称暗号化は計算コストが高く、大量のデータには遅いということです。
対称暗号化は、暗号化と復号化の両方に単一の共有鍵を使用します。非対称暗号化よりもはるかに高速で、送信される実際のデータを暗号化するのに理想的です。
問題は?両者が同じ鍵を持つ必要があり、その鍵を安全に共有することが困難です。
SSL/TLSは両方のアプローチを巧みに組み合わせています:
| 暗号化タイプ | 使用される鍵 | 速度 | TLSでの使用例 |
|---|---|---|---|
| 非対称 | 公開鍵 + 秘密鍵 | 遅い | 初期ハンドシェイク、鍵交換 |
| 対称 | 単一の共有鍵 | 速い | バルクデータ暗号化 |
TLSハンドシェイクは魔法が起こる場所です。これは、ブラウザとサーバーが接続を暗号化する方法について合意する交渉フェーズです。その重要なミリ秒で何が起こるかを分解してみましょう。
1. Client Hello
ブラウザは次を含む「Client Hello」メッセージを送信します:
2. Server Hello
サーバーは次で応答します:
3. 証明書の検証
ブラウザは次によってサーバーの証明書を検証します:
4. 鍵交換
クライアントは「プリマスターシークレット」を生成し、サーバーの公開鍵(証明書から)で暗号化してサーバーに送信します。サーバーのみが秘密鍵でこれを復号化できます。
5. セッション鍵の作成
クライアントとサーバーの両方が、プリマスターシークレットと以前に交換された乱数を使用して、同じ対称セッション鍵を独立して生成します。
6. 完了メッセージ
両側が暗号化された「Finished」メッセージを送信して、ハンドシェイクが成功し、安全に通信できることを確認します。
プロのヒント: 最新のTLS 1.3はこのプロセスを1回のラウンドトリップに合理化し、レイテンシを大幅に削減しています。サーバーを構成する場合は、パフォーマンス向上のために常にTLS 1.3を有効にしてください。
SSLチェッカーツールを使用して、任意のウェブサイトの証明書と接続の詳細を分析することで、このハンドシェイクを実際に観察できます。
SSL/TLS証明書は、暗号鍵ペアを組織の詳細に結び付けるデジタル文書です。ウェブサイトの身元を証明するデジタルパスポートのようなものです。
すべてのSSL/TLS証明書には次が含まれます:
| 証明書タイプ | 検証レベル | 最適な用途 | 一般的なコスト |
|---|---|---|---|
| ドメイン検証(DV) | 基本 - ドメイン所有権を証明 | ブログ、個人サイト、小規模ビジネス | 無料 - $50/年 |
| 組織検証(OV) | 中程度 - 組織の身元を確認 | ビジネスウェブサイト、eコマース | $50 - $200/年 |
| 拡張検証(EV) | 最高 - 徹底的な組織審査 | 銀行、大企業、高セキュリティサイト | $200 - $1000/年 |
| ワイルドカード | すべてのサブドメインをカバー | 複数のサブドメインを持つサイト | $100 - $500/年 |
| マルチドメイン(SAN) | 複数の異なるドメインをカバー | 複数のドメインを持つ組織 | $100 - $400/年 |
認証局(CA)は、SSL/TLS証明書を発行することを信頼されている組織です。ブラウザとオペレーティングシステムには、信頼されたルートCAの事前インストールされたリストが付属しています。
人気のあるCAには次が含まれます:
CAが証明書を発行するとき、証明書保持者の身元を保証しています。証明書が信頼されたCAによって署名されている場合、ブラウザは自動的にそれを信頼します。
これらのプロトコルの進化を理解することは、情報に基づいたセキュリティの決定を下すのに役立ちます。完全なタイムラインは次のとおりです:
セキュリティ警告: 最新のサーバーではTLS 1.2とTLS 1.3のみを有効にする必要があります。すべてのバージョンのSSLと古いTLSバージョンには既知の脆弱性があり、無効にする必要があります。
TLS 1.3は大幅な改善をもたらします:
暗号スイートは、ネットワーク接続を保護するために連携して機能するアルゴリズムのセットです。TLSハンドシェイク中に、クライアントとサーバーはどの暗号スイートを使用するかを交渉します。
典型的な暗号スイート名は次のようになります:TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
分解してみましょう:
TLS 1.2の場合、これらの暗号スイートを優先してください:
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
TLS 1.3の場合、暗号スイートは簡素化されています:
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
TLS_AES_128_GCM_SHA256
プロのヒント: 常に名前に「ECDHE」または「DHE」を含む暗号スイートを優先してください - これらは前方秘匿性を提供し、サーバーの秘密鍵が侵害されても過去の通信が安全であることを意味します。
SSL/TLSを正しく設定することは、ウェブサイトのセキュリティにとって重要です。最も一般的なシナリオの実用的なガイドは次のとおりです。
1.com — Free Online Network Tools