HTTP/3とは?

HTTP/3はハイパーテキスト転送プロトコル(HTTP)の次期メジャーリビジョンです。高速化、セキュリティおよび信頼性の向上が図られています。

学習目的

この記事を読み終えると、以下のことができるようになります。

  • HTTP/3で期待される改善点を理解する
  • プロトコルがどのようにユーザーエクスペリエンスを形成するかを認識する
  • 期待されるセキュリティ効果を説明する

記事のリンクをコピーする

HTTP/3とは?

HTTPはインターネットの基盤となるバックボーンであり、通信プラットフォームとデバイスがどのように情報を交換し、リソースを取得するかを決定しています。簡単に言うと、ユーザーがWebサイトを読み込めるようにするものです。

HTTP/3は、Webブラウザとサーバの通信方法に影響を与える開発中の新しい規格であり、パフォーマンス、信頼性、セキュリティなど、ユーザーエクスペリエンスが大幅にアップグレードされています。

1991年に最初のハイパーテキスト転送プロトコル(HTTP)がリリースされて以来、基本的なコードに変更を加えることなくWebサイトの高速化が繰り返し行われてきました。

HTTP/3では何が新しくなったのか?

HTTP/3は、2015年にHTTP/2が承認されて以来、初のハイパーテキスト転送プロトコルのメジャーアップグレードとなります。

HTTP/3にある重要な違いは、新しいトランスポートプロトコルであるQUICで動作することです。QUICは、スマートフォンを持ち歩き、常にネットワークを切り替えながら移動するような、モバイルを中心としたインターネット利用を想定して設計されています。最初のインターネットプロトコルが開発された当時の端末は携帯性が低く、ネットワークを頻繁に切り替えることがなかったため、このようなことはありませんでした。

QUICを使用するということは、HTTP/3がTransmission Control Protocol(TCP)ではなく、User Datagram Protocol(UDP)を使用することを意味します。UDPに切り替えることで、より高速な接続が可能になり、オンラインでブラウザを操作する際のユーザーエクスペリエンスが向上します。

QUICプロトコルは2012年にGoogleによって開発され、ベンダーニュートラルな標準化団体であるInternet Engineering Task Force(IETF)がHTTP/3の新規格策定に着手した際に採用されたものです。世界中の専門家と協議した結果、IETFは多くの変更を加え、独自のバージョンのQUICを開発しました。

なぜ新しいバージョンのHTTPが必要なのか?

QUICは、HTTP/2の最大の欠点のいくつかを修正するのに役立ちます:

  • 外出時など、スマートフォンがWiFiからモバイルデータ通信に切り替わる際のパフォーマンスの低下に対する回避策を開発
  • パケットロスの影響を低減 - 1つの情報パケットが宛先に到達しなかった場合でも、すべての情報ストリームをブロックすることはない(「ヘッドオブラインブロッキング」と呼ばれる問題)

その他にも、以下のようなメリットがあります:

  • 接続確立の高速化:QUICにより、TLSのネゴシエーションを、暗号化とトランスポートのハンドシェイクと同時に行うことができます。
  • ゼロラウンドトリップタイム(0-RTT):すでに接続しているサーバーに対して、クライアントはハンドシェイク要件(通信方法を決定するために互いに確認し合うプロセス)を省略することができます。
  • より包括的な暗号化:QUICのハンドシェイクへの新しいアプローチは、デフォルトで 暗号化 を提供します。これはHTTP/2からの大幅なアップグレードであり、攻撃のリスクを軽減することができます。

デフォルトでの暗号化とは?

アプリケーション層ではなく、トランスポート層で暗号化を要求することは、セキュリティ上重要な意味を持ちます。これは、接続が常に暗号化されることを意味します。以前のHTTPSでは、暗号化とトランスポート層の接続は別々に行われていました。TCP 接続では、暗号化されたデータも暗号化されていないデータも伝送することができ、TCPハンドシェイクとTLSハンドシェイクは別個のイベントでした。しかし、QUICが確立するのはデフォルトで暗号化されたトランスポート層の接続です。そのためアプリケーション層のデータは常に暗号化されます。

QUICは、2つのハンドシェイクを1つのアクションにまとめることでこれを実現します。アプリケーションがデータを送信する前に待つ必要があるのは1回のハンドシェイクのみであるため、待ち時間を短縮することができます。また、各接続に関するメタデータ(パケット番号やその他のヘッダーの一部などを含む)を暗号化することで、ユーザーの行動に関する情報を攻撃者の手に渡らないようにすることもできます。この機能はHTTP/2にはありませんでした。このデータを暗号化することで、ユーザーの行動に関する実用的な情報を攻撃者の手に渡らないようにすることができます。

従来からのHTTPではリクエストとレスポンスに平文を使用してきましたが、これは通信を監視している誰もが読むことができるため、セキュリティにとってマイナスの影響を与えます。デフォルトで暗号化することで、誰もがより高い安全性を保ち、機密データを保護することができます。

HTTP/3は現在利用可能か?

この規格はまだ開発中ではあるものの、Webサイトの所有者や訪問者は、ブラウザ、オペレーティングシステム、その他のクライアントを通じてHTTP/3のサポートを得ることができます。もちろん、この規格はすでに何度も実装を繰り返しているため、今後さらに多くの変更が加えられる可能性があります。

HTTP/3リリース後に、Web全体が一気に切り替わるわけではありません。多くのサイトは未だHTTP/2にさえ対応していません。

新しいプロトコルに潜む課題の一つに、サーバーとクライアントの両方でCPUの使用率が上がることが挙げられます。これは、技術の進化に伴い、時間の経過とともに影響が減少するでしょう。

HTTP/3に含める内容は誰が決めるのか?

2016年に、QUICワーキンググループがIETFによって立ち上げられました。開発プロセスには、Cloudflareを含む多くの組織や企業の人々が参加しています。

現在のHTTP/3という名称になる前は、この規格は「HTTP-over-QUIC」や「HTTP/2 Semantics Using The QUIC Transport Protocol」という名称で呼ばれていました。

Webサイトの所有者が、HTTP/3を有効にするには?

Cloudflareでは、Webサイト所有者がオリジンを変更することなく、HTTP/3のサポートを有効にすることができます。お客様のドメインで切り替えを行う方法についてご覧ください。