AkamaiとMicrosoftらによって、QUIC用APIを実装したOpenSSLのforkが公開されています。
github.com
これらは、公式がQUIC用APIをサポートするまでの一次的なソリューションとのことですが、流れを簡単に整理しておく。
目次
背景: QUICとTLS
QUICと呼ばれる新しいトランスポートプロトコルは、IETFで標準化が進められていましたが、RFCがもうすぐ出るところまできています。
このQUICでは通信を暗号化しますが、コネクションを確立する際に、TLS1.3相当のメッセージをやりとりしサーバ認証および鍵の共有を行います。
(詳細については 「QUIC-TLS」の仕様を御覧ください)
そこで、QUICを実装するに当たり暗号ライブラリとしてOpenSSLを使いたいところです。
OpenSSL 3.0とQUICサポートの見解
OpenSSLのQUICに対する見解は、2020年2月に投稿された「QUIC and OpenSSL」で述べられています。
OpenSSL 3.0ではQUICをサポートをしない事が述べられています。
QUICが非常に重要だと述べつつも、その時点ではOpenSSL 3.0に注力する事。2020年2月時点では、QUICが成熟しているか判断できないことに触れています。
2019年頃には、QUICをサポートするプルリクエストも出されていますが、上記の理由によりマージされてはいません。
https://github.com/openssl/openssl/pull/8797
forkされたOpenSSL
QUICの標準化も終わりが見えてきており、様々なところでQUICの実装が進められています。各コミュニティのOpenSSLのQUIC APIサポートのニーズは高くなってきているようです。
そのような中で、AkamaiとMicrosoftらによって、QUIC用APIを実装したOpenSSLのforkが公開されました。詳細については、Readmeにかかれているとおりだが、ここでは簡単にかいつまんで紹介する
github.com
このforkは、公式がQUICをサポートするまでな一次的なソリューションとして公開されている。
実装的には、上述の"プルリクエスト"を取り込んだ形です。このAPI実装はBoringSSLから取り込まれており、すでにChromiumやMSQuicで使用されている。
また、本家のリリースには、1日遅れを目安に追従していくとのことです。
その他の動き
もともとAkamaiはOpenSSLをforkしていたが、MSと共同で、コミュニティー利用のためのforkとして新しく公開した形になるようだ。
Akamai版OpenSSLを利用していたNode.jsは、すでに新しいforkに切り替える準備が進められている。
github.com