Webサイトのパフォーマンスを向上させるためのSSL/TLS最適化手法

今日、HTTPSはより高速で安全になり、より多くのビジネスWebサイトがこれまでになくHTTPSを使用しています。Web開発者やネットワークアーキテクトが忙しいままである限り、インターネット技術の最新の開発についていくのは難しいかもしれません。

この記事では、SSLを使用して最新のWebサイトを保護するための最良の方法について説明します。最新のSSLは、企業のWebサイトのセキュリティを確保するだけでなく、パフォーマンスも考慮に入れています。したがって、この記事では、Webサイトのパフォーマンスを向上させるのに役立つSSL最適化方法について説明します。

いわゆる最良のアプローチについて説明する前に、まずいくつかのSSLおよびTLSの用語を見てみましょう。技術的には、SSLはTLS(Transport Layer Security)プロトコルに置き換えられましたが、ほとんどの人は依然としてSSLとTLSをSSLと混同しています。この記事では、SSLの後にバージョン番号がない限り、このイディオムを引き続き使用します。

次に、議論に入る前に、SSL/TLSハンドシェイクの基本を理解することも重要です。このハンドシェイクは、ブラウザがHTTPS経由でサーバーに接続するときに発生し、セッション暗号化についてクライアントとサーバーによって合意された方法です。TLSハンドシェイクにはいくつかの異なるタイプがありますが、RSAハンドシェイク図は関連する部分を示しています。

まず、ブラウザは大きな乱数と暗号スイートのリストをWebサーバーに送信し、TLSハンドシェイクを開始します。Webサーバーは、このTLSセッションに使用されるハンドシェイクのタイプと暗号化メカニズムを決定するプライマリ暗号スイートを選択します。次に、Webサーバーは暗号スイートをブラウザーに送信し、別の大きな乱数とサーバーのパブリックSSL証明書をブラウザーに返します。ブラウザはSSL証明書が取り消されているかどうかを知る必要があるため、CAの証明書失効リストをチェックします(OCSPラッパーがサポートされている場合を除く)。

証明書がまだ有効である場合、ブラウザは「プレマスターキー」を生成して対称セッションキーを生成します。ブラウザは、「プレマスターキー」をサーバーの公開キー(サーバーのSSL証明書に含まれている)で暗号化し、サーバーに送り返します。サーバーが秘密鍵を使用して「プレマスター鍵」を復号化した後、ブラウザーとサーバーの両方が対称鍵を取得します。この対称鍵は、残りのTLSセッションの暗号化に使用されます。

この記事で説明する各対策により、これらの手順をより安全または迅速に行うことができます。ssl証明書アプリケーションはWeiKeyunで適用できます。

最新のSSLのセキュリティ機能を活用する

TLSハンドシェイクには多くのステップがあります。つまり、セキュリティ管理者にはWebサイトのセキュリティを向上させる多くの機会があります。ここでは、最初にHSTS強制HTTPS接続について説明し、次にSHA-1とSHA-2の現在の状態、将来のユーザーセッションデータを保護する方法、および最新のTLSバージョンにアップグレードすることの重要性について説明します。

HSTSヘッダーをサポート

HSTSプロトコルをサポートすることは、Webサイト、API、およびモバイルアプリケーションをより安全にするための最も簡単な方法の1つです。HSTSは、HTTPプロトコルの拡張機能であり、クライアントがWebサーバーへのすべての要求に対して安全な接続を使用するように強制します。Strict Transport Security(STS)ヘッダーを提供することにより、Webサーバーは、指定された期間のみHTTPS経由でWebサイトに接続するようにブラウザーに指示できます。

次に、ブラウザは、ユーザーのリクエストをサーバーに送信する前に、すべてのhttpリクエストを自動的にhttpsリクエストに変換します。HSTSは、接続のセキュリティに問題がある場合(たとえば、サーバーのTLS証明書が信頼されなくなった場合)にエラーページを表示するようにブラウザーに指示します。このタイプのエラーは、ユーザーが直感的に無視できるエラーとは異なり、回避することはできません。

このタイプのリンク書き換えは、SSLストリッピング攻撃などの特定のタイプの「ダウングレード攻撃」に対する保護を提供します。SSLストリッピング攻撃は、HTTPS要求をHTTP要求に変換することにより、中間者がユーザー通信をスヌーピングするのを防ぎます。

SHA-2証明書署名をサポートする

SHA-2は、SHA(Secure Hash Algorithm)の次世代バージョンです。ハッシュアルゴリズムは、メッセージの一意のフィンガープリントを生成する一方向性関数であり、インターネットの開始以来重要なコンポーネントでした。

CAはWebサイトのTLS証明書を発行した後、証明書内のすべての情報(ドメイン名、有効期間、公開鍵、シリアル番号など)情報を取得して、署名を作成し、秘密署名鍵を生成します。ブラウザがサーバーの証明書を信頼する前に、証明書情報をハッシュし、CAの公開鍵を使用して、指紋が証明書の署名と一致することを確認する必要があります。

攻撃者が異なる証明書情報を使用して同じデジタル指紋を生成できる場合、CA署名で検証できる偽の証明書を生成する可能性があります。攻撃者はこの偽造された証明書を中間者として使用する可能性があり、エンドユーザーは機密情報を安全なWebサーバーではなくインターネット上の誰かに送信しているかどうかを判断できません。

このようなハッシュ衝突を生成するには、かなりの計算リソースが必要です。コンピュータが高速化および安価化するにつれて、攻撃者がSHA-1で署名されたTLS証明書を偽造する可能性が高くなります。解決策はSHA-2です。

最新のWebサイトはすべて、SHA-1ではなくSHA-2で署名されたTLS証明書を使用しています。企業のWebサイトがまだSHA-1証明書を使用している場合、主要なブラウザベンダーは、サイトの訪問者に安全でないサイトにアクセスしていることを通知する警告メッセージを表示します。2016年末までに、ブラウザはユーザーによるそのようなサイトへのアクセスを完全にブロックします。アップグレードするには、企業のWebサイトが自社のCAから新しいSHA-2証明書を購入し、それをWebサーバーにインストールする必要があります。

それでも企業がSHA-2を使用できないユーザーをサポートする必要がある場合は、最高のセキュリティを選択し、ユーザーのブラウザがサポートする証明書の利用を検討してください。

フォワードフォワーディングのEDH(Ephemeral Diffie-Hellman)サポートによる暗号化

サーバーが同じ秘密鍵を使用して対称TLSセッション鍵を取得し続けると、秘密鍵はチェーン内の弱いリンクになります。たとえば、攻撃者がサーバーとユーザーの間で大量の通信をログに記録した場合、サーバーから秘密鍵が盗まれ、通信が復号化される可能性があります。

EDH(Ephemeral Diffie-Hellman)またはDHEは、後日秘密鍵が盗まれた場合でも、ユーザーの暗号化されたセッションをより安全にすることができます。EDHは、セッションごとに一意の対称鍵を生成する鍵交換メカニズムです。つまり、サーバーの秘密鍵が何年も盗まれたとしても、攻撃者はそれを使用して記録されたセッションを復号化することはできません。

TLS1.2のみをサポート

暗号化システムは静的ではないため、安全なWebサーバーは、インターネットセキュリティの最新かつ最大の改善を常に完全にサポートする必要があります。理想的には、企業のWebサイトは、最新バージョンのTLSより前のシステムをサポートするべきではありません。TLSおよびSSLプロトコルの初期のバージョンには、古い暗号スイートまたはいくつかの安全でない実装が含まれていたため、企業の暗号化された通信は攻撃に対して脆弱になりました。

TLS接続は、クライアントとサーバーの機能に依存しています。セキュリティ管理者は、企業のWebサイトが古いバージョンをサポートしていない場合、カスタマーエクスペリエンスに影響を与える可能性があることを懸念する場合がありますが、実際、ほとんどのブラウザは長い間TLS1.2をサポートしています。

2016年6月末までに、PCIに準拠する必要のある企業にはTLS1.2へのアップグレードが必須になります。したがって、WebサイトにTLS1.2のみのポリシーを実装する理由があります。

サーバーのSSLを最新の状態に保つことは、企業のWebサイトのセキュリティに大きな影響を及ぼします。SSL3.0は、POODLE攻撃に対して脆弱であり、セキュリティの問題を伴う侵害されたRC4暗号化に対しても脆弱です。TLS 1.0はこの問題を修正しましたが、新しい脆弱性を発見しました。暗黙の初期化ベクトルとパディングエラーの誤った処理により、安全でない暗号化されたCBCが発生します。TLS1.1は同じであり、Lucky13攻撃に対して脆弱です。TLS 1.2は、CBCモード暗号化と同じ脆弱性なしにAES-GCM暗号スイートの使用をサポートします。

最新のSSLパフォーマンスの最適化を最大限に活用する

SSLは以前はHTTPよりもはるかに低速でした。そのため、多くのWeb開発者やネットワーク管理者は「http://」を使用することを好みます。ただし、インターネットテクノロジーの開発により、SSLはより効率的になりました。最新のTLSパフォーマンス機能とSPDYまたはhttp/2テクノロジーを利用することにより、最新のSSLWebサイトは暗号化されていないWebサイトよりも高速になる傾向があります。

OCSPカプセル化をサポートする

CAとTLSは常に信頼できるとは限りません。CAが予期しない証明書を発行したり、会社がセキュリティポリシーを変更して証明書を無効にしたり、悪意のあるユーザーによって証明書のキーが盗まれたりすることがあります。理由が何であれ、CAとブラウザベンダーは、侵害される可能性のある証明書を取り消す方法が必要であることを認識しています。

Webサイトのユーザーが、サーバーから渡されたTLS証明書を信頼できるようにするには、CAが管理する証明書失効リスト(CRL)を照会して、証明書が取り消されているかどうかを確認する必要があります。残念ながら、この追加の失効チェックはユーザーのページの読み込みを遅らせる可能性があり、ブラウザはCAがTLS証明書のステータスを返すまで待機する必要があります。このチェックでは、多くの場合、DNSルックアップと多くの失効した証明書のダウンロードが必要になるため、パフォーマンスが大幅に低下します。

OCSPラッパーはOCSPの一部であり、リアルタイムの失効チェックに関するいくつかのパフォーマンスの問題を修正します。したがって、WebサーバーはユーザーのブラウザにCAを直接クエリするように強制しなくなりましたが、サーバー自体が特定の時間にCAにクエリを実行してOCSP応答を取得します。この応答はCAによって発行され、指定された期間のTLS証明書の有効性を証明します。サーバーは、ユーザーのブラウザーへの不要なラウンドトリップ時間をなくすことができます。

ECC(Elliptic Curve Cryptography)をサポートします

ECCはRSAの現代的な代替手段です。ECCは、楕円曲線の数学的特性を使用して一方向性関数を作成します。これが公開鍵暗号の基礎になります。

ECCを使用する利点は、ECCに必要なキーが短いため、エンドユーザーのコンピューターにデータを送信する必要がほとんどなく、最初のTLSハンドシェイクが高速化されることです。また、ECCはRSAの10分の1の署名時間で済みます。すべてのハンドシェイクは秘密鍵で署名する必要があるため、ECCは実際にサーバーの負荷を軽減できます。

セッションチケット(セッションチケット)を介したTLSセッションの復元のサポート

言うまでもなく、TLSは高価ですが、TLSには不要なハンドシェイクを回避する方法が含まれています。TLSのセッション再開では、前のセッションの対称鍵を使用して、クライアントとサーバーを再接続できます。これにより、追加のデータラウンドトリップの必要性と新しい対称鍵を取得するコストが排除されます。TLSリカバリメカニズムには、チケットとIDの2つがあります。

ブラウザとサーバーの両方がTLSセッションチケットをサポートしている場合、サーバーはハンドシェイクの一部として対称鍵を含むチケットを返します。このチケットは、サーバーだけが知っている暗号化キーで暗号化されているため、TLSセッション情報を安全に保存できます。ブラウザがサーバーに再接続しようとすると、暗号化されたセッションチケットが返されます。両方の当事者が対称セッションキーにアクセスできるため、誰もが残りのTLSハンドシェイクをバイパスできます。

残念ながら、SafariとIEはセッションチケットをサポートしていません。これらのブラウザは、セッションIDと呼ばれるメカニズムを使用してTLSセッションを再開します。セッション情報はクライアントではなくサーバーに保存され、クライアントはセッションのIDをサーバーに返します。すべてのTLS接続パラメーターのキャッシュを保持することはサーバーの負担になる可能性がありますが、TLSセッションの再開をより広くサポートする場合は、セッションチケットとセッションIDの両方をサポートすることをお勧めします。

SPDYまたはHTTP/2をサポート

SPDYとHTTP/2は、Webサイトの読み込み速度を大幅に向上させることができるインターネットプロトコルです。技術的には、SSLはこれらのプロトコルを必要としませんが、主要なブラウザベンダーはSPDYまたはhttp/2をサポートしています。

HTTP / 1.1は、すべての要求に対してTCP接続を強制し、ブラウザーは一度に限られた数のTCP接続しか開くことができません。その結果、WebサイトのHTML、CSS、JavaScript、メディアアセットなどがすべて継続的にダウンロードされます。HTTP / 2とSPDYは、ブラウザがWebサイト全体で単一のTCP接続を使用できるようにする多重化と呼ばれるいくつかの新機能を追加しました。HTTP / 1.1とは異なり、多重化により、ブラウザはWebサイトのすべてのアセットを並行してダウンロードできます。したがって、HTTP/1.1よりもはるかに高速です。

ほとんどのインターネット通信はSPDYまたはHTTP/2をサポートしています。Webサーバーがこの広くサポートされているSPDYおよびHTTP/2ブラウザーをサポートしていない場合、TLS対応のWebサーバーの価値を最大限に活用することはできません。これは、最初はハンドシェイクにいくらかのコストがかかりますが、最新のSSLが実際にWebサーバーを高速化する方法の良い例です。

結論:HTTPSのすべて

最新のSSLのセキュリティとパフォーマンスの利点を考慮した後、企業のWebサイトがすべての要求にHTTPSを使用しない理由はなくなりました。これにより、一部のページにHTTPを使用し、他のページにHTTPSを使用するために複雑なURLリダイレクトを作成する必要がなくなるため、Web開発者とシステム管理者の作業が簡素化されます。

TLSを選択すると、企業と企業のWebサイト間の信頼も構築されます。HTTPSを使用すると、Webサイトへの訪問者は、ビジネスWebサイトに表示される内容を確認できます。HTTPSを介してコンテンツを提供することにより、企業は、通常のHTTPを使用しているときにISPが企業のWebページに広告を挿入する状況を回避できます。

企業のWebサイトを保護する場合のSSLの4つのベストプラクティスは次のとおりです。

1.HSTSヘッダーをサポートする

2.SHA-2証明書で署名します

3.EDHハンドシェイクを使用した転送暗号化

4.TLS1.2にアップグレードします

また、SSL対応のビジネスWebサイトのパフォーマンスを向上させるための4つの最良の方法は次のとおりです。

1.OCSPパッケージをサポートします

2.楕円曲線暗号(ECC)を利用する

3.TLSセッションリカバリをサポートします

4. HTTP/2とSPDYをサポートします

おすすめ

転載: blog.csdn.net/wecloud1314/article/details/123345665