あどけない話

Internet technologies

2025-01-01から1年間の記事一覧

HaskellによるQPACKの実装

いやいや、難産だったよ。 2020年から2021年にかけて、HaskellでHTTP/3ライブラリを作成する過程で、QPACKを実装した。HPACKやQPACKでは、圧縮を担う符号器(encoder)よりも、伸長を担う復号器(decoder)の方が、圧倒的に簡単である。このため、Haskellの復号…

Encrypted Client Hello の実装

TLS

ECHをHaskell tlsライブラリに実装した話。先に「Encrypted Client Hello の仕様」を参照のこと。Haskellで実装した経験談なので、Haskellの知識を前提に書く。 ライブラリの構成 バックエンド・サーバの設定情報である ECHConfigList は、DNSを通じて提供さ…

Encrypted Client Hello の仕様

TLS

ECH(Encrypted Client Hello) とは何か TLS 1.3のハンドシェイクは、EncryptedExtensionsから暗号化されるが、それより前のClientHello と ServerHelloは平文のままで交換される。ClientHelloに含まれるSNI(Server Name Indication、サーバ名)は、特にプライ…

TLS レコード・サイズ制限拡張

TLS

tlsfuzzer 僕が tlsfuzzer を知ったのは、知人からのメールがきっかけだった。tlsfuzzerは、fuzzer という名前には反して、対象であるTLSの中身を高度に理解して実装されている強力なテストツールである。各テスト項目が、それぞれのPythonスクリプトとして…

Channel Bindings 備忘録

TLS

RFC 5056 や RFC 9266で定められている TLS Channel Bindings の備忘録。 Channel bindings とは何か Channel bindingsは、本質的に TLS の Finished の値である。Finishedは、一連のハンドシェイク・メッセージに対するハッシュ値である。この値は、TLSセッ…