脆弱性を軽減するCDN戦略には、適切なSSL/TLS暗号化の実行や特殊な暗号ハードウェアの使用が含まれます。
この記事を読み終えると、以下のことができるようになります。
関連コンテンツ
是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!
記事のリンクをコピーする
インターネットに公開されるすべてのネットワークと同様に、CDNはオンパス攻撃、データ漏えい、DDoS攻撃を使い、オリジンサーバーを標的としてネットワークを過負荷状態にする企てに対策を講じる必要があります。CDNは、適切なSSL/TLS暗号化の実行や特殊な暗号ハードウェアの使用といった、脆弱性を軽減する複数の戦略を持つことができます。
Transport Layer Security(TLS)はインターネット経由で送信されるデータを暗号化するプロトコルのことです。TLSは最初に広く採用されたWeb暗号化プロトコルであるSecure Sockets Layer(SSL)から派生したものであり、初期のプロトコルで多く見られたセキュリティ上の欠陥を修復したものです。業界では、歴史的経緯から2つの用語を同義語のように使っています。閲覧しているWebサイトがhttp://ではなく、https://から始まる場合、ブラウザとサーバー間の通信にTLS/SSLを使用しています。
適切な暗号化は、攻撃者が重要なデータにアクセスするのを防ぐために必要です。インターネットはデータが多くの場所を通って転送するように設計されているため、全世界を移動する際に重要なパケットを傍受することが可能です。暗号化プロトコルを利用することで、正当な受信者のみがデータを解読できるようにして、中間者が転送されたデータの中身を解読できないようにすることができます。
Cloudflareが提供する無償のSSL/TLSの詳細は、こちらをご覧ください。
TLSを有効にするためには、サイトでSSL証明書とそれに対応するキーを揃える必要があります。証明書とは、サイトの所有者に関する情報と非対称キーペアのパブリックキーが含まれているファイルです。認証局(CA)が電子署名をして証明書内の情報が正確であることを確認します。証明書を信頼するということは、認証局によりデューディリジェンスが実行されたことを信用するという意味です。
通常、オペレーティングシステムやブラウザには絶対的に信頼する認証局の一覧が存在します。Webサイトが信頼されていない認証局によって署名された証明書を提示した場合、ブラウザは訪問者に注意を促します。
証明書とその実装方法は、強度、プロトコルサポート、ほかの特性に基づいて個別に評価することもできます。新しいより良い実装が可能になったり、証明書の実装の全体的な安全性を落とすほかの要素が明らかになるたびに、評価は変わる可能性があります。オリジンサーバーにグレードの低い、古いSSLバージョンが実装されている場合、一般に評価は低くなり侵害を受けやすくなると考えられています。
CDNには、CDN提供の証明書を使用して、ネットワーク内でホストされているプロパティの訪問者にセキュリティを提供するという追加のメリットがあります。訪問者はCDNにのみアクセスするため、オリジンサーバーとCDN間で使用される安全性の低い、古い証明書はクライアントのパフォーマンスに影響しません。
現実的には、この弱いサーバー/エッジ間のセキュリティは依然として脆弱性を呈するものであり回避すべきです。特に、無償のオリジン暗号化を用いることでオリジンサーバーのセキュリティを強化できる可能性がある点を考慮すれば、なおさらです。
適切なセキュリティはオーガニック検索にとっても重要です。暗号化されたWebプロパティは、Googleの検索順位を上げます。
SSL/TLS接続は、従来のTCP/IP接続とは異なる動作をします。TCP接続の初期段階が完了すると、別の交換が行われてセキュアな接続を確立します。本記事では、ユーザーがSSL/TLSで暗号化されたWebページを読み込む場合と同様に、セキュアな接続を要求するデバイスをクライアント、セキュアな接続を提供するデバイスをサーバーと呼びます。
TCP/IPハンドシェイクが行われると、TLS暗号化されたハンドシェイク が始まります。このガイドでは、TLSハンドシェイクの実装の背後にある詳しいプロセスについては取り上げません。代わりに、ハンドシェイクの主な目的とプロセスを完了するまでに要する時間に焦点を当てます。
以下の図では、TCP/IPハンドシェイクとTLSハンドシェイクに関する各手順を視覚化しています。それぞれの矢印は、クライアントとサーバー間を物理的に移動する必要がある個別の通信を表しています。送受信されるメッセージの総数はTLSで暗号化すると増えるため、Webページのロード時間は長くなります。
たとえば、TCPハンドシェイクには約50ミリ秒、TLSハンドシェイクには約110ミリ秒かかるとします。これは主に、クライアントとサーバー間の双方向でデータを送信するのにかかる時間です。情報が1つのデバイスと別のデバイスを往復するのにかかる時間であるラウンドトリップ時間(RTT)の概念を使用して、接続を確立するのにかかる「費用」を数量化することができます。最適化もCDNの使用もしない場合、追加のRTTは、エンドユーザーにとって遅延の増加およびロード時間の増大を意味します。幸い、合計ロード時間を短縮して往復する回数を削減する最適化策があります。
SSLの最適化により、RTTとページのロード時間を短縮できます。TLS接続を最適化するには、次のような3つの方法があります:
TLSセッション再開 - CDNは同じセッションを追加のリクエストのために再開することで、オリジンサーバーとCDNネットワーク間で接続を維持できます。持続的な接続を維持することで、クライアントがキャッシュされていないオリジンを取得する場合に、CDNとオリジンサーバー間の接続を再交渉するのにかかる時間を節約できます。CDNとの接続が維持されている間に、オリジンサーバーが追加のリクエストを受信する限り、後続のサイト訪問者の遅延を減らすことができます。
セッション再開の全体的なコストは完全なTLSハンドシェイクの50%未満です。これは主に完全なTLSハンドシェイクには2往復分のコストがかかるのに対して、セッション再開は1往復分のコストで済むためです。また、セッション再開は大きな有限フィールドの計算を必要としない(新規セッションは必要とする)ため、クライアントのCPUコストは完全なTLSハンドシェイクのそれと比べてごくわずかです。モバイルユーザーの場合、セッション再開によるパフォーマンスの向上は、バッテリー寿命を気にせずに極めて応答性の高いネットサーフィンを楽しめることを意味します。
TLS False Startの有効化 - 訪問者が初めてサイトを閲覧するとき、上述のセッション再開は役に立ちません。TLS False Startにより、送信者は完全なTLSハンドシェイクを行わずにアプリケーションを送信することができます。
False Startは、TLSプロトコル自体を変更するのではなく、データが転送されるタイミングのみを変更します。クライアントが鍵交換を開始すると、暗号化が保証されてデータ転送が始まります。この変更により、ラウンドトリップの総数が減り、遅延が60ミリ秒減少します。
Zero Round Trip Time Resumption(0-RTT) - O-RTTにより、接続に追加のRTT遅延が加わることなくセッション再開できるようになります。TLS 1.3と0-RTTを使用して再開された接続の場合、接続速度が向上し、ユーザーが定期的に訪問するWebサイトの体験がより高速でスムーズなものになります。この速度向上は、モバイルネットワークで特に顕著です。
0-RTTは有効な向上策ですが、セキュリティ上のトレードオフがあります。いわゆるリプレイ攻撃のリスクを克服するには、CDNサービスはHTTPリクエストのタイプと許可されるパラメーターを制限する場合があります。詳細については、0-RTT概説をお読みください。
現代のインターネット上のWebプロパティの最も重大なセキュリティ上の脆弱性の1つは、分散サービス妨害(DDoS)攻撃です。時間の経過とともに、DDoS 攻撃の規模と複雑性は増し、攻撃者はボットネットを利用して攻撃のトラフィックでWebサイトを圧倒させるようになりました。適切に設定された大きなCDNには、DDoS攻撃対策における潜在的なスケールメリットがあります。十分なデータセンターの数と帯域幅機能を備えることで、CDNは標的にされたオリジンサーバーを簡単に圧倒する攻撃のトラフィックの量に持ちこたえて攻撃を軽減することができます。
TLS接続を保護するのに、他の手順を踏むことができます。こちらではCloudflare CDNの詳細、TLS攻撃の最新情報についてもご覧いただけます。Cloudflare診断センターでは、お客様のWebサイトでHTTPSが適切に使用されているかを検証できます。
利用開始
CDNについて
CDNの機能
CDNサーバー
CDN用語集
ラーニングセンターナビゲーション