HTTP/2

私は2000年代初頭にソフトウェア会社に入社し、いわゆる社会人になって初めて携わったプロジェクトはPKI(公開鍵基盤)関連のクライアント – サーバーシステムでした。

そのシステムでは通信プロトコルにHTTP, HTTPSを用いており、セキュアな通信の裏では認証、暗号化のための手続きがあり平文での通信にはない複雑さ、処理コストがかかることを実感しました。

それから10年ほど経ち、Googleを始めとするWebサイトの通信が常時SSL化されるようになりました。
(例えば、google.co.jpは2012年3月6日にHTTPSでの接続がデフォルトになったようです)

G-Mail, Googleカレンダー等のWebサービスならば通信を常時SSL化する必要があることは自明でしたが、検索エンジンまでも常時SSL化することについて、処理コストがかかるデメリットを上回るメリットがあるのかどうか気になり、(ちょうど社内の勉強会のネタ集めをする必要もあったので)SSL/TLSプロトコルまわりの状況を調べたことがありました。

2000年代初頭と比べ2012年にもなると多くの拡張仕様が提唱され、標準化されていました。その一部を以下に示します。

  • Server Name Indication(SNI) (RFC 4366)
  • TLS Session Cache (RFC 5246 section 7.3)、TLS Session Ticket (RFC 5077)
  • Next Protocol Negotiation (NPN)、Application-Layer Protocol Negotiation (ALPN) (ALPNは2014年7月31日にRFC 化(RFC 7301))

NPN、ALPNを調べた際、SPDY(スピーディー)というGoogleが実装したプロトコルが使用されていることを知りました。SPDYはTLS上にセッション層を追加し、HTTPよりも効率のよい方式で通信することによって高速化を実現しています。TLS上でSPDYを使えば、セキュアな通信を確立するだけでなくHTTPよりも効率のよい通信が可能であることを知りました。

前置きが長くなりましたが、本稿タイトルのHTTP/2はHTTPの新しいバージョンであり、SPDYをベースに仕様が規定され2015年5月14日にRFC 7540として標準化されたプロトコルです。HTTP/2はHTTP/1.1を置き換えるものではなく、HTTP1.1の後方互換性を保っています。RFC7540のAbstractでそれが述べられています。

HTTP/2では平文での通信に関する仕様もあり、TLSでの使用が必須ということではないようです。しかし、2016年5月時点では主要なWebブラウザーのHTTP/2対応はTLSでの使用(HTTP/2 over TLS)のみとなっているため、HTTP/2の機能をフルで利用するには実質的にTLSでの使用が必須となっています。

私はHTTP/2が標準化された際、SPDYの機能がHTTP通信でも使えるようになることを期待したのですが現時点ではそうではありませんでした。現状は、今までTLS拡張として使用されてきたSPDYがHTTP/2と呼ばれるようになった程度のように感じられます。
現在のHTTP/2の実装状況では、HTTP接続のみのWebサイトや中小のWebサービス、コンテンツの容量が比較的小さいWebサイトではHTTP/2導入のメリットはなく、使用される通信プロトコルはHTTP/1.1のまま変わらないと考えられます。一方で、大手のWebサービス、官公庁のような社会的影響が大きいWebサイトでは、常時SSL化とともにHTTP/2の使用が進んでいくと考えられます。Googleは2016年5月15日にGoogle ChromeのSPDYのサポート終了をアナウンスしており、SPDYをサポートする既存のWebサイトはHTTP/2に移行していくと思われます。

最近では、Wikipediaが2015年6月にHTTPSでの接続を義務付けるようになりました。また、米国では2016年末までに政府関係機関のWebサイトはHTTPSの使用が義務化されるそうです。
普段何気なくWebを利用している立場から見ると、ある日ブラウザーのアドレスバーを見たらいつの間にかアイコンが錠前のマークになっていたり、色が緑色に変わっていたりする程度の変化しか目にしないかもしれませんが、その裏では様々な動きがあることを知っておくとよいかもしれません。
既にGoogleは2013年からQUIC(Quick UDP Internet Connections)という新しいプロトコルの標準化に取り組んでいます。これはUDPをベースに現在の「TCP + TLS」の通信の改良を目指すもので、私はその動向に注目しています。