Internet Engineering Task Force(IETF)は何年にもわたって、Transport Layer Security(TLS)プロトコルの改善に取り組んでいる、このプロトコルはデータをインターネット上で移動させる際に、開発者がデータ保護を行いやすくするためのものだ。FacebookはFizzというAPIライブラリを開発していた。これは最新版であるTLS1.3を、Facebbokネットワーク上で改善するためのものだ。本日(米国時間8月6日)Facebookは、Fizzをオープンソース化し、誰でもアクセスできるようにそれをGitHub上に置いたことを発表した。
Facebookは現在、トラフィックの50%以上をTLS 1.3とFizzを通じて扱っており、彼らはそれをこれまでで最も大規模なTLS 1.3の実装だと考えている。
これらはすべて、トラフィックがインターネット上をどのように動くのか、サーバー同士がどのように安全に通信するのかに関係している、これは、Facebookも指摘しているように、とても重要なことだ。なぜなら現代のインターネットサーバーアーキテクチャの中ではプロセスの重要な部分が世界中のあちこちに分散してしまっていることが珍しくないからだ。またこのことにより、データをサーバーからサーバーへ移動させる際のレイテンシー(遅延時間)を削減するという課題も生まれる。
主要な問題の1つは、膨大なデータをメモリ領域に書き込むことで、リソースのオーバーヘッドと速度低下が起きることだ。この問題を回避するために、Facebookはデータをメモリに移す際に、小さなチャンクに分割し、それらをその場で暗号化することを決定した。このプロセスはscatter/gather I/O(分断/結合を行うI/O)という名で呼ばれている。
TLS 1.3では、”early data”(これはゼロラウンドトリップデータ、もしくは0-RTTデータとしても知られている)という概念が導入され、レイテンシーの削減を助ける。ITEFによれば、これは「クライアントが直近にアクセスしたものと同じサーバーに接続しているのなら、クライアントが接続時の最初のラウンドトリップの際に、TLSハンドシェイクの成立を待たずにデータを送ることを可能にする」ものだ。問題は、このコンセプトが安全でない場合があることだ。そこでFizzはこのコンセプトに基くAPIを取り込み、既知の脆弱性を取り除きながらそのAPIの上にシステムを構築した。
FacebookはIETFと協力してきた、同社は日々扱う膨大な数のトランザクションに由来するユニークなニーズを抱えているからだ。Facebookによれば、TLS 1.3は「インターネットトラフィックをより安全にするための新しい機能が取り込まれている。例えば証明書をプライベートに保つための暗号化されたハンドシェイクメッセージの取り込みや、秘密鍵の導出方法の再設計、そしてゼロラウンドトリップコネクションセットアップ(これによりいくつかのリクエストは確かにTLS 1.2よりも速くなる)などだ」。
Fizzに関してFacebookは「TLS 1.3で実現された改良点に加えて、Fizzはミドルボックスハンドシェイクエラーへの改良されたソリューション、ディフォルトでの非同期I/Oサポート、そして余計なデータコピーを取り除くためにscatter/gather I/Oを利用する」と、ライブラリのオープンソース化を発表したブログ投稿の中で述べている。
Fizzは、Transport Layer Security(TLS)プロトコルの最新バージョンを改良したものだ。そしてそれをオープンソース化することにより、Facebookはこのテクノロジーを広くコミュニティで共有し、誰もがFacebookの作り上げた成果物を利用して開発が行えるようにしたのだ。
[原文へ]
(翻訳:sako)