SSL - セキュアソケットレイヤー

SSL (Secure Socket Layer) は、Netscape によって初めて採用されたネットワーク セキュリティ プロトコルです。伝送通信プロトコル(TCP/IP)上に公開鍵技術を利用して実装されたセキュリティプロトコルですSSL はさまざまなタイプのネットワークを幅広くサポートし、公開キー技術を使用する 3 つの基本的なセキュリティ サービスを提供します。

セキュリティー・サービス

1)情報の機密性。公開鍵および対称鍵技術を使用して情報の機密性を実現します。SSL クライアントとサーバー間のすべてのトラフィックは、SSL ハンドシェイク中に確立されたキーとアルゴリズムを使用して暗号化されます。これにより、一部のユーザーが IP パケット スニッフィング ツールを使用して違法に盗聴するのを防ぎます。パケット スニッフィングでも通信の内容をキャプチャすることはできますが、解読することはできません。

2)すべての SSL サービスがその目標を確実に達成できるようにするための情報の完全性サーバーとクライアント間の情報コンテンツが破損から保護されていることを確認する必要があります。SSL は、秘密共有とハッシュ関数グループを利用してメッセージ整合性サービスを提供します。

3)双方向認証。クライアントとサーバーが相互に認識するプロセス。それらの識別番号は公開キーでエンコードされ、SSL ハンドシェイク中にそれぞれの識別番号が交換されます。証明書の所有者が正当なユーザーであること (偽者ではないこと) を検証するために、SSL では証明書の所有者がハンドシェイク中に交換されたデータをデジタル的に識別する必要があります。証明書所有者は、証明書を含むすべての情報とデータを特定して、証明書の法的所有者であることを示しますこれにより、他のユーザーが証明書を偽装するのを防ぎます。証明書自体は認証を提供しません。証明書とキーが連携するだけです。

4) SSL セキュリティ サービスは、エンド ユーザーに対して可能な限り透過的である必要があります。通常の状況では、ユーザーはデスクトップ上のボタンまたは接続をクリックするだけで SSL ホストに接続できます。標準の HTTP 接続リクエストとは異なり、SSL をサポートする一般的な Web ホストは、デフォルトでポート 80 ではなくポート 443 で SSL 接続を受け入れます。

アドバンテージ

SSL プロトコルの利点は、アプリケーション層プロトコルから独立していることです。高レベルのアプリケーション層プロトコル (HTTP、FTP、Telnet など) を SSL プロトコル上に透過的に構築できます。SSL プロトコルは、アプリケーション層プロトコル通信の前に、暗号化アルゴリズム、通信キーのネゴシエーション、およびサーバー認証の作業を完了します。その後、アプリケーション層プロトコルで送信されるデータは暗号化され、通信のプライバシーが確保されます。

SSLのアーキテクチャ

SSL は、TCP を使用して信頼性の高いエンドツーエンドのセキュリティ サービスを提供するように設計されています。これは単一のプロトコルではなく、2 層のプロトコルです。下位層は SSL レコード層であり、異なる上位層をカプセル化するために使用されます。もう 1 つの層はカプセル化されたプロトコルです。つまり、SSL ハンドシェイク プロトコルにより、サーバーとクライアントはアプリケーション データを送信する前に暗号化アルゴリズムと暗号化キーをネゴシエートできます。クライアントは、サポートできるすべての暗号化アルゴリズムを提案します。サーバーはそれに最適なアルゴリズムを選択します。

レコード プロトコルは、さまざまな上位レベルのプロトコルに基本的なセキュリティ サービスを提供します。その特徴は、Web クライアント/サーバーの対話にトランスポート サービスを提供するハイパーテキスト転送プロトコル (HTTP) が SSL 上で実行できることです。SSL の一部として、ハンドシェイク プロトコル、修正暗号文プロトコル、およびアラート プロトコルの 3 つの高レベル プロトコルが定義されています。

SSL の 2 つの重要な概念は SSL セッションと SSL 接続であり、その仕様は次のとおりです。

1) 接続: 接続は、適切なタイプのサービスを提供するトランスポートであり、SSL のような接続の場合、ポイントツーポイント関係です。接続の有効期間は短く、各接続はセッションに関連付けられます。

2) セッション: SSL セッションはクライアントとサーバー間の関連付けであり、セッションはハンドシェイク プロトコルを通じて作成されます。セッションは、複数の接続で共有できる暗号化セキュリティ パラメータのセットを定義します。セッションを使用すると、接続ごとに新しいセキュリティ パラメータの高価なネゴシエーションを回避できます。

相互作用するエンティティの任意のペアの間に、複数の安全な接続が存在する場合があります。理論的には、対話するエンティティ間に複数の同時セッションが存在することもありますが、実際には、各セッションには一連の状態があります。セッションが確立されると、読み取りと書き込み (つまり、受信と送信) の現在の動作状態になります。さらに、ハンドシェイク プロトコル中に、保留中の読み取りおよび書き込み状態が作成されます。ハンドシェイク プロトコルが成功すると、保留状態が現在の状態になります。

SSLレコードプロトコル

SSL レコード プロトコルは、SSL 接続用に 2 つのサービスを提供します。

1) 機密性: ハンドシェイク プロトコルは、SSL ペイロードの一般的な暗号化に使用できる共有キーを定義します。

2) メッセージの整合性: ハンドシェイク プロトコルは、メッセージの認証コード (MAC) を形成するために使用できる共有キーも定義します。

レコード プロトコルは、送信されたアプリケーション メッセージを受信し、データを管理可能なチャンクに断片化し、必要に応じてデータを圧縮し、MAC を適用し、暗号化してヘッダーを追加し、結果のユニットを TCP セグメントで送信します。受信したデータは、より上級のユーザーに配信される前に、復号化、認証、解凍、および再構築されます。

暗号文プロトコルを変更する

Change Cipher Spec Protocol (暗号仕様変更プロトコル) は、SSL レコード プロトコルを使用する 3 つの SSL 関連プロトコルの 1 つで、新しくネゴシエートされた暗号化方式と整合性方式を使用するための最も単純なプロトコルです。このプロトコルは、値 1 の 1 バイトで構成される 1 つのメッセージで構成されます。

アラームプロトコル

アラーム プロトコルは、SSL 関連のアラームを取引相手エンティティに送信するために使用されます。SSL が使用される他のケースと同様に、アラート メッセージは現在の状態の仕様に従って圧縮および暗号化されます。このプロトコルの各メッセージは 2 バイトで構成されます。最初のバイトの値は警告または致命的で、メッセージの重大度レベルを伝えるために使用されます。レベルが致命的である場合、SSL は接続を直ちに終了します。同じセッションへの他の接続は継続できますが、このセッションに対して新しい接続を確立することはできません。2 番目のバイトには、特定のアラームを示すコードが含まれます。

SSL の最も複雑かつ重要な部分はハンドシェイク プロトコルです。このプロトコルは、セッションを確立するために使用されます。サーバーとクライアントが相互に識別できるように、暗号化方法、認証方法、圧縮方法、および初期化操作をネゴシエートし、暗号化と MAC アルゴリズムをネゴシエートし、SSL で送信されるデータを保護するために使用されるキーを暗号化します。記録。アプリケーション データが送信される前に、ハンドシェイク プロトコルが使用されます。これは、クライアントとサーバー間で交換される一連のメッセージで構成されます。すべてのメッセージの形式は図 4(c) に示されています。各メッセージには 3 つのフィールドがあります。

(1)種類(1バイト):10種類のメッセージのいずれかを示す。表 2 に、定義されたメッセージ タイプを示します。

(2) 長さ (3 バイト): メッセージの長さ (バイト単位)。

(3) コンテンツ (1 バイト以上)。

SSLハンドシェイクのプロセス

SSL ハンドシェイクには次のイベントが発生します。

A) クライアントとサーバーは X を交換します。509 証明書を使用して、双方が相互に確認できるようにします。このプロセス中に、プルーフ チェーン全体を交換することも、基になる一部のプルーフのみを交換することもできます。証明書の検証には、有効期限の確認と証明書の署名機関の検証が含まれます。

B)クライアント コンピュータは、情報の暗号化と MAC 計算に使用されるキーのセットをランダムに生成しますこれらのキーは、サーバーに送信される前にサーバーの公開キーで暗号化されます。サーバーからクライアントおよびクライアントからサーバーの通信には、合計 4 つのキーがあります

C) 情報暗号化アルゴリズム(暗号化)とハッシュ関数(情報の完全性確保)を併用しています。Netscape の SSL 実装は次のとおりです。クライアントはサポートするすべてのアルゴリズムのリストを提供し、サーバーは最も効果的と思われる暗号を選択します。サーバー管理者は、特定のパスワードを使用または禁止できます。

セキュアソケットレイヤーのセキュリティは、SSLハンドシェイクプロトコル、SSL暗号文プロトコル、SSLアラームプロトコル、SSLレコードプロトコルによって実現されており、Webセキュリティではセキュリティ技術が信頼できるため、上記の方式を利用することができます。

プロセス 

双方向の証明書認証のための SSL ハンドシェイク プロセス。

以下に、SSL プロトコルがどのように機能するかを簡単に説明します。クライアントは、いくつかのハンドシェイク信号を送受信する必要があります。

1) 「ClientHello 」メッセージを送信し、サポートする暗号アルゴリズムのリスト、圧縮方法、および最高のプロトコル バージョンを示します。また、後で使用する乱数も送信します。

2) 次に、最初にクライアントによって提供されたClientHello 」から派生した、サーバーによって選択された接続パラメータを含む「 ServerHello 」メッセージを受信します。

3) 双方が接続パラメータを知っている場合、クライアントとサーバーは証明書を交換します(選択した公開キー システムに応じて)。これらの証明書は通常 X.509 に基づいていますが、OpenPGP ベースの証明書をサポートするためのドラフトもあります。

4) サーバーはクライアントの公開キーを要求します。クライアントが証明書を持っている場合は双方向の ID 認証を意味し、証明書がない場合は公開鍵がランダムに生成されます。

5)クライアントとサーバーは、慎重に設計された擬似乱数関数によって実現される公開鍵の機密性 (2 者間のランダムなネゴシエーション) を通じて、共通のマスター鍵と秘密鍵をネゴシエートしますその結果、Diffie-Hellman 交換、または各当事者が独自の秘密鍵で復号化する簡素化された公開鍵暗号化が使用される場合があります。他のすべての重要なデータは、この「マスター キー」を使用して暗号化されます。

6) サーバーはハンドシェイク メッセージの MAC アドレスをクライアントに送信します。

データ送信では、レコード層 (レコード層) を使用して、HTTP などの上位レベルのプロトコルをカプセル化します。レコード層データは自由に圧縮、暗号化でき、メッセージ検証コードとともに圧縮することもできます。各レコード層パケットには、上位層で使用されるプロトコルを記録するContent-Typeセグメントがあります。

TLSとSSLの違い

SSL (Secure Sockets Layer) は、Netscape によって設計され、主に Web で使用される安全な伝送プロトコルです。このプロトコルは Web で広く使用されています。IETF は SSL、すなわちRFC2246を標準化し、それをTLS (Transport Layer Security)と呼び、その最新バージョンはRFC5246バージョン 1.2 です。技術的に言えば、TLS1.0 と SSL3.0 の違いは非常に小さいです。

TLS は、鍵アルゴリズムを使用して、公開鍵インフラストラクチャ (PKI) に基づいて、インターネット上でエンドポイント ID 認証と通信の機密性を提供します。ただし、典型的な実装例では、Web サーバーのみが確実に認証され、必ずしもそのクライアントは認証されませんこれは、公開鍵インフラストラクチャが商業的に使用されることが一般的であり、電子署名証明書は通常、有料で購入されるためです。プロトコルの設計により、マスター/スレーブ アーキテクチャのアプリケーション通信自体が盗聴、改ざん、メッセージ偽造をある程度防ぐことができます。

TLS は 3 つの基本フェーズで構成されます。

1) ピアツーピアネゴシエーションによってサポートされる主要なアルゴリズム。

2) 情報伝送の暗号化と非対称鍵による本人認証、PKI証明書による本人認証。

3) 対称鍵に基づくデータ送信の機密性

最初のフェーズでは、クライアントは使用する暗号アルゴリズムをサーバーとネゴシエートします。現在広く実装されているアルゴリズムの選択肢は次のとおりです。

  • 公開キー秘密キー非対称キー暗号化システム: RSA、Diffie-Hellman、DSA、Fortezza。

  • 対称キー暗号化システム: RC2、RC4、IDEA、DES、Triple DES、AES、Camellia。

  • 一方向ハッシュ関数: MD5、SHA1、および SHA256。

TLS/SSL にはさまざまなセキュリティ保護手段があります。

  • すべてのレコード層データには、メッセージ認証コードを検証するために番号が付けられます。

 転載元: https://baike.baidu.com/item/%E5%AE%89%E5%85%A8%E5%A5%97%E6%8E%A5%E5%B1%82/9442234?fromtitle= SSL&fromid =320778

おすすめ

転載: blog.csdn.net/fuhanghang/article/details/131956163