HTTPS について話す前に、まず HTTP について理解する必要があります。HTTP は HTTPS 通信の基礎だからです。 HTTP (HyperText Transport Protocol) クライアント側とサーバー側のデータの送信に使用されるハイパーテキスト転送プロトコル。
HTTP は非常にシンプルで使いやすいですが、次の 3 つの致命的な問題があります。
クリア テキスト通信を使用すると、コンテンツは盗聴される。
通信相手の正体が確認できない場合、なりすましが行われる可能性があります。
メッセージの整合性は証明できず、簡単に改ざんされてしまいます。
上記の問題を考慮して、現在のシステムでは HTTP の代わりに HTTPS が使用されます。
まず、HTTPS は新しいプロトコルではなく、HTTP プロトコルに基づいた暗号化メカニズム SSL (Secure Socket Layer) または TLS (Transport) を追加します。 )。 HTTPS = HTTP 暗号化、認証、整合性保護。
SSL と TLS:
SSL (Secure Socket Layer) は、SSL 3.0 と 3.0 より前のバージョンを開発したブラウザ開発会社 Netscape によって最初に開発されました。 SSL は Internet Engineering Task Force (IETF) に引き継がれ、IETF は SSL 3.0 に基づいて TLS 1.0 を開発したため、TLS は SSL の「新しいバージョン」と考えることができます。
HTTPS に関しては、最初に解決すべきは信頼問題、つまり本人確認の問題です。サーバー偽装、つまり「中間者攻撃」問題です。いわゆる中間者攻撃とは、通常の状況ではクライアントとサーバーが直接対話する必要があることを意味しますが、ここではクライアントとサーバーの間に「悪者」(中間者)が出現します。
は、両者間の通信内容を盗用および改ざんするためのサーバーであり、次の図に示されています。
HTTPSデジタル証明書を使用して信頼性の問題を解決します。 解決策は、サーバーが最初に作成されるときに、まず誰もが認識するサードパーティのプラットフォームから信頼できるデジタル証明書を申請し、次にクライアントが (サーバーに) アクセスすると、サーバーがまずクライアントに、あなたが「仲介者」ではなく信頼できるサーバーであることを証明する番号証明書を与えます。このとき、電子証明書の有効性の検証とチェックはブラウザが行い、電子証明書に問題があればクライアントはただちに通信を停止し、問題がなければ次の処理を実行します。
以下に示すように:
デジタル証明書を使用すると、サーバーの本当の身元を確認できます。 「中間者攻撃」の問題を解決し、偽装の問題も解決します。
上記の信頼問題は解決しましたが、両者は平文で通信するため、通信内容が漏洩する危険性は依然としてあります。通信中に盗聴されてしまった、この時どうすればいいでしょうか?そこで、情報漏えいの問題を解決するために暗号化を使用することを考えました。
暗号化は主に 対称暗号化と非対称暗号化の 2 つのカテゴリに分類されます。
対称暗号化では、共有秘密鍵があり、この共有秘密鍵を介して情報の暗号化と情報の復号化が可能であり、暗号化と復号の速度が速いという特徴があります。共有秘密鍵の問題により、共有秘密鍵が傍受されると、いわゆる暗号化と復号化は空話になってしまいます。
非対称暗号化には、公開キーと秘密キーという秘密キーのペアがあります。公開キーは情報の暗号化に使用できますが、復号化することはできません。キーを使用して情報を復号化できます。特徴としては、サーバーが秘密鍵を保存し外部に公開せず、公開鍵のみをクライアントに送信することで、他人が公開鍵を入手しても暗号化された情報を復号することができないという点にあります。より安全ですが、非対称暗号化 実行速度は比較的遅いです。
では、HTTPS では対称暗号化と非対称暗号化を使用する必要がありますか?高速ですが安全ではない対称暗号化を使用し、安全ではありますが低速である非対称暗号を使用します。選択を行うのは子供だけであり、大人が行うため、HTTPS は非対称暗号化と対称暗号化の両方を使用します。その対話プロセス全体は次のようになります:
HTTPS の実行プロセスは次のとおりです。
クライアントは HTTPS を使用してサーバーにアクセスします。
サーバーはデジタル証明書を返し、非対称暗号化を使用してクライアントに公開キーを生成します (サーバー自体が秘密キーを保持します)。
クライアントはデジタル証明書が有効かどうかを検証します。無効な場合は、アクセスが終了します。有効な場合:
暗号化を使用すると、間接的にデータの完全性も保証されます。不完全なデータや冗長なデータがある場合、復号化中にエラーが報告されるため、間接的にデータの完全性が保証されます。
以上がJava で HTTPS を使用する理由と利点は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。