TLS1.3の0-RTT通信と、HTTP 4NN(未定) ステータスコードの提案仕様

TLS1.3では、0-RTTハンドシェイクの際にearly_dataとしてアプリケーションデータを送信できます。しかし、この0-RTTハンドシェイクで送信するデータには、リプレイ攻撃のリスクがあります。 そのリスクをさけるための機能をHTTPに追加する提案が出ています。…

QUIC標準化現状確認メモ

Googleの考案したQUICは現在IETFで標準化が進められており、多くの人々によって議論されております。QUICの中身よりも現在の状況について、自分用に整理する。Issueが追えてないので残念感ある。 概要 UDP上で信頼性のある暗号化されたHTTP/2通信を行うQUIC…

CookieのNoHttp属性の提案仕様

以前、「Cookieの仕様改定版、RFC6265bisの議論」でも書いたとおり、IETFのHTTPBis WGではCookieのセキュリティ向上に向けて改訂作業が行われています。Cookieの改訂版のAuthorでもあるGoogleのMike West氏が、それとは別に新しくCookieに「NoHttp」属性を追…

署名式 SRI(Subresource Integrity)の議論

w3c

W3CのWeb Application Securityワーキンググループで、署名式 SRIの議論が出ていたので簡単に書く 背景 セキュリティ向上の目的で、Webページ上で読み込まれるリソース(JavaScript等)を制限する方法に、CSP(Content Security Policy)やSRI(Subresource Integ…

Apache2のmod_proxy_http2を試す

去年ぐらいからApache2.4にも実装されたmod_proxy_http2を今更ながら試す。mod_proxy_http2はリバースプロキシとして動作する際に、バックエンドのサーバと通信する際にもhttp2を使えるようにするモジュールである。 今回はxenialを使うが、通常降ってくるap…

DNS ANAMEレコードの提案仕様

IETFでのDNS関連の標準化は普段追ってないので恐縮だが、DNSOP(DNS OPerations)WGで気になったドラフトがあったので読んで見る。「Address-specific DNS Name Redirection (ANAME)」という提案仕様であり、先日WGドラフトになったようだ。著者は、ISC, Power…

NginxのstreamモジュールがDTLSに対応した(パッチ)

NginxのL4レイヤのProxy機能である、streamモジュールのDTLS対応パッチが公開されていたので試す。 (まだ検証段階で、フィードバック募集中らしい)簡単に言うと、以下のようににDTLS -> Plain UDPや、その逆にPlain UDP -> DTLSへのProxyが出来る。 DTLS -> …

RFC8174「RFC 2119のキーワードにおける大文字と小文字の曖昧性」

RFCやInternet-Draftを読んだことある人であれば、文中にMUSTやSHOULDといった大文字のキーワードが用いられてるのを見たことあるかと思います。たとえば、このように An endpoint MUST treat this as a stream error (Section 5.4.2) of type PROTOCOL_ERRO…

TCP Fast Openの闇と、Kernelの緩和コミット

TCP Fast Open TCP Fast Openと呼ばれる技術があり、RFC 7413として標準化されている。このTCP Fast Openを使うと、一度コネクションを貼った相手とは、TCPの3ウェイハンドシェイク中にデータを送受信できるようになる。クライアントからSYNとともにデータを…

hxxp URIスキームの仕様化

追記 20170510 draft-01 より、hxxpsも予約されました 「The "hxxp" and "hxxps" URI Schemes」 hxxpの背景 hxxp URIを定義する「The "hxxp" URI Scheme」という仕様が提案されています。hxxp://... は、例えばセキュリティの話をする際にURLがリンクとして…

Cookieの仕様改定版、RFC6265bisの議論

Cookieの仕様と拡張仕様 HTTPのCookieの仕様は RFC 6265 - HTTP State Management Mechanism で定義されております。2015年頃より、IETFのHTTPbisワーキンググループではCookieのセキュリティを向上させる目的で拡張仕様が3つほど議論されていました。 Cooki…

WebサーバとのコネクションでDNS通信もする拡張仕様

追記 20170510 この提案仕様は、draft01でauthor自ら廃案とされました。 昨日の「DNS over QUICの提案仕様が出た」引き続きDNS関連の記事 DNSとHTTP 近年注目されている、"DNS over HTTP"は例えば「DNS-over-HTTPS」としてGoogleが提供していたり、IETF97で…

DNS over QUICの提案仕様が出た

QUICの標準化とアプリケーションレイヤ IETFでQUICの標準化が活発に行われており、トランスポート・TLS・HTTP各レイヤのドラフト仕様の改定が進められております。 標準化を行うにあたって当初より、DNSのトランスポートとしてQUICを使用したいという話題は…

マルチパスQUICにおけるOne Way Latencyの考察

QUICの各仕様のdraft-02が出た一方で、マルチパスQUICに関する考察ドラフトが出ています。 マルチパスQUICはマイルストーン上は2017年の後半に拡張の仕様が出て来る予定ですが、それに先立って考察のドラフトが出ている状況です。今後関連するドラフトも出て…

TLSにおける証明書チェーンを圧縮する拡張仕様

GoogleとCloudflareの方による「Transport Layer Security (TLS) Certificate Compression」という、証明書チェーンの圧縮を行う拡張仕様の提案が出ています。 TLSハンドシェイクの大部分は証明書が占めているらしく、サーバ側から送る証明書チェーンをgzip…

CSPの仕様に report-sample が追加された

w3c

まだ、WIPではあるもののCSPの仕様に "report-sample" と言う機能が追加されました(URL)。 これは、違反したインラインのScriptやStyleの最初の40文字がレポートに追加されます。外部ファイルの場合はレポートされません。昨年から議論がされていましたが、…

HTTP over マルチキャストQUIC とは

「Hypertext Transfer Protocol (HTTP) over multicast QUIC」で、マルチキャストのQUIC上でHTTP通信を行う仕様が提案されている。マルチキャストQUICは単方向通信であり、その上でサーバプッシュを行う感じである。 現状QUICの仕様ではIPマルチキャストの利…

Nginxがstale-while-revalidateに対応した

20170214 追記このコミット(URL)で入った proxy_cache_background_update で、stale-while-revalidateを使わなくてもバックグラウンドでキャッシュ更新するように設定できるようになる模様 このコミット(URL)で、Nginxのproxy_cache機能がstale-while-revali…

WiresharkのTLS1.3対応 動いた

TLS

TLS1.3動いたシリーズの第3回目(?) WiresharkはTLSの実装一覧ページ(URL)では、以前よりTLS1.3対応をうたっていたがあまり出来は芳しくなかった。しかし、先日 TLS1.3絡みのコミットが幾つか入ったので、実際に改善されていることを確認した コミットログ(UR…

Content-Encoding: aes128gcm とは (RFC8188)

20170624追記 RFC8188 として標準化されました HTTPリクエスト・レスポンスのボディを暗号化する、「Content-Encoding: aes128gcm」を新しく標準化する「Encrypted Content-Encoding for HTTP」という仕様が議論されております。 提案自体は数年前に行われて…

QUICのヘッダ圧縮QPACKとは

20170209追記背景と基本的なコンセプトは変わりませんが、新しくでた draft02ではこの記事と多少細部が異なっております。 https://tools.ietf.org/html/draft-bishop-quic-http-and-qpack-02 QUICのヘッダ圧縮であるQPACKについて 現在のQUICの策定中仕様の…

NginxでTLS1.3 動いた(OpenSSL)

昨日書いた「OpenSSLのTLS1.3対応」の続き 特に何かしたわけではないが、OpenSSLのTLS1.3対応が進んでいたのでインストールしてNginxで動かす。 ビルド openssl 今回はインストールしてしまう。 $ git clone https://github.com/openssl/openssl.git $ cd ./…

PerformancePaintTiming API(First Paint Timing API)とは

w3c

昨今、「Navigation Timing API」といったクライアント側でのページの処理時間を取得する機能が充実してきております。 W3CのWeb Performance WGでは、Navigation Timing、User Timing、Resource TimingそれぞれLevel2, Level3が改訂作業が行われております…

OpenSSLのTLS1.3対応 喋れる

追記 20170120 NginxでTLS1.3 動いた(OpenSSL) 後日Nginxでも動いたので、上記記事に記載 セキュリティとパフォーマンスが向上したTLS1.3の登場が待ち望まれております。 標準化としては、現在IETFのTLSワーキンググループではWGラストコールという段階に入…

2016年振り返り

早いもので2016年も終わりですね。 今年は、毎月コンスタントにブログ記事を書けたもの、記事数39と去年よりも少なくなってしまいました。internet-draft絡みも9本でした。 ただ反面、OSSにPR投げてマージされたり、英語でissue投げてみたり、Nginxのモジュ…

varnishtestのHTTP/2対応 アップデート

これは、http2 Advent Calendar 2016の10日目の記事です。 今年の頭に書いた「varnishtestがHTTP2対応して超便利!」で紹介しましたvarnishtestのHTTP/2対応ですが、シンタックスの一部変更で当時のサンプルが使えなくなっていたのでアップデートについて軽…

103 EarlyHintsを送信するNginxモジュール書いた

これは、nginx Advent Calendar 2016の8日目の記事です。 103 Early Hints 先日の「Apache mod_http2 で 103 EarlyHints を試す」という記事でも書きましたが。軽くおさらい。 103 Early Hintsは、@kazuho氏によって提案されている仕様です。すでに Individu…

Apache mod_http2 で 103 EarlyHints を試す

これは、http2 Advent Calendar 2016の5日目の記事です。 20161208 今回はtoy serverを使用しましたが、103 EarlyHintsを送信できるNginxモジュールを書きました 103 EarlyHintsを送信するNginxモジュール書いた 103 Early Hints 103 Early Hintsは、@kazuho…

ntpdのLeap Smearingを有効にし、うるう秒を24時間かけて調整する

うるう秒を挿入せず、1秒分を長い時間で少しずつ適応することでソフトウェアなどのバグを回避する Leap Smearingは ntpdでも使用できる。 4.2.8.p3 と 4.3.47以降でサポートしているが、defaultでは無効になっているので自身でビルドする必要がある。 ubuntu…

Nginxのtoken binding実装を試す

Token Binding CookieやOAuth2.0のトークンはbearer tokenと呼ばれ、そのトークンを持ってる人であれば使用することができます。Token Bindingは、各TLSコネクション固有の秘密鍵で署名することで、第三者による別のコネクションにおけるそれらの使用を制限…

NTP leap indicatorを上書きするProxyを書いた

前置き かなり無理矢理かつ、動作を保証するものではありません。 手習いで試しに書いてみたぐらいの温度感です うるう秒 ”元旦「うるう秒」でエンジニア悲鳴 「年末年始がなくなる」”と言ったニュースサイトでも取り上げられているように、1月1日 日本時間…

CT対応を示すExpect-CTヘッダとは

正式に、Expect-CTのDraftが出ました (10/31 追記)https://tools.ietf.org/html/draft-stark-expect-ct-00 Certificate Transparency Certificate Transparencyと呼ばれる、不正な証明書の発行を検知する仕組みがGoogle社によって考案され、RFC 6962として標…

CloudFlareの提案するHTTP/2の圧縮辞書拡張

IETFのHTTPbis wgでCloudFlareの方より「Compression Dictionaries for HTTP/2」(URL)という仕様が提案されている。 これは、Content-Encodingヘッダで指定される圧縮アルゴリズム向けの初期ウィンドウに使用される辞書データを事前に送る拡張を定義する。 C…

googleの新しい時刻同期プロトコル Roughtimeとは

Googleの「Adam Langley氏のブログ」で、新しい時刻同期プロトコルについて紹介されている。このRoughtimeは特定のタイムサーバに依存しないセキュアな方法で時刻同期を行うことを目的としたプロトコルです。すでに、googleのサーバで動作しており、roughtim…

XSSを防ぐ新しいXSS-Protectionヘッダ

w3c

evalとreportOnlyについて追記しました (2016/10/10) 2016/10/20 仕様名は以下の通りになりました。Anti-XSS Response-Time Uniqueness Requirement また、ヘッダ名は、XSS-Protectionヘッダではなく、ARTURヘッダとなっておりますが、また変更される可能性…

Chrome 56 のHTTPサイトへの日本語版警告

Web

「Moving towards a more secure web」でアナウンスされているように、2017年1月にリリースされる予定のChrome 56でHTTPサイトへの警告が表示されるようになる。 日本語のサイトでも取り上げられている Google、2017年からChromeでいくつかのHTTPサイトを「…

Secure Contextsに関する localhost と、IETFでの新提案

Secure Contexts Service Workers、Web BluetoothといったAPIは、安全に使用するためにセキュリティ上の条件があります。 その条件がSecure Contextと呼ばれるコンテキストであり、W3CのSecure Contexts(URL)というドキュメントで定義されています。 このSec…

wicgのFace detection API

w3c

wicgで議論になっている「Face detection API」の仕様が「Shape Detection in Images」としてwicgのリポジトリで公開されている。 https://wicg.github.io/shape-detection-api/ Shape Detection in Images HTMLImageElement、HTMLCanvasElement、ImageData…

HTTP/2のデバック用情報エンドポイントの仕様

HTTP/2 Implementation Debug State 「HTTP/2 Implementation Debug State」というHTTP/2用のデバッグ情報を表示するエンドポイントの仕様が、IETFに提出されています。https://tools.ietf.org/html/draft-benfield-http2-debug-state-01 サーバの「.well-kn…

Site-Wide HTTP Headers とは

Mark Nottingham氏から、HTTPレスポンスヘッダをサイト全体で使いまわせるようにする 「Site-Wide HTTP Headers」 という仕様が提案されています。https://tools.ietf.org/html/draft-nottingham-site-wide-headers-00 例えば、Public-Key-PinsやStrict-Tran…

ポリシーをオリジン全体に適応する Origin Policy

w3c

WICGで議論されている「Set origin-wide policies via a manifest」の仕様がGoogleのMike West氏から提案されています。この「Origin Policy」と言う仕様は、氏のGithubリポジトリから確認できます。 これは、Content-Security-PolicyやReferrer-Policyとい…

QUICの仕様を翻訳していく

QUIC in ietf96 「Google の試験的トランスポート、QUIC のアップデート」などでも紹介されている、Googleが提案・実装してるQUIC。 すでに関連するドキュメントはChromium Projects配下のページで公開されていますが、先日IETFにQUICの仕様が提出されていま…

iframeのアプリケーションにPermissionを委譲する仕様

w3c

Permission Delegation To Embedded Web Applications iframeで埋め込まれたクロスオリジンのWebアプリケーションがPermissionを要求するとこともあります、しかしユーザにとっても分かりづらく、扱いづらい点があります。Googleの調査でも、ユーザはiframe…

Go実装のWebサーバ CaddyのQUICを試す

2016/060/15追記 alt-svcヘッダのセットは、有効な証明書を使用したhttpsで行う必要がありました ブラウザは53.0.2768.0 (Official Build) canaryでのみ動作確認しました Go実装のWebサーバであるCaddyが実験的にQUICのサポートをしました。簡単に動かしてみ…

Feature Policy、ブラウザの特定機能を無効にする仕様

w3c

W3CでFeature Policyという仕様が議論されています。仕様は著者であるGoogleのIlya Grigorik氏のリポジトリ(URL)より確認できます。 このドキュメントはまだW3C公式のドキュメントとはなってはいませんが、先月行われたFace-to-Faceのミーティングでも議論が…

Firefox Nightly がTLS1.3対応したので試す

TLS

Chrome canaryも、chrome://flagsよりTLS1.3を有効にできるようになりました(2016/08/08) FirefoxがNgithlyでTLS1.3に対応したので試す TLS1.3 TLS1.3は、TLS1.2より様々な改善が行なわれています。 個人的には、大きな所で ハンドシェイクのRTT削減 セキュ…

安全でない通信路でセットされたCookieの有効期限を短くする仕様

安全でない通信路で設定されたCookieについて有効期限を短くする「Expiring Aggressively Those HTTP Cookies」という仕様がMozillaのMartin Thomsonから提案されています。 Expiring Aggressively Those HTTP Cookies https://tools.ietf.org/html/draft-th…

Mixed ContentのブロックされたURIをレポートさせる仕様追加

w3c

Mixed Content Mixed Contentと言う仕様により、httpsで提供しているページの中でhttpで提供するリソース(script等)があるとそのリソースはブロックされます。 このMixed Contentには、Content Security Policyのblock-all-mixed-contentディレクティブも定…

Cache-Control: immutableについて

こちらの記事で紹介されている、"Cache-Control: immutable"について試してみる https://bitsup.blogspot.jp/2016/05/cache-control-immutable.html?m=1 Cache-Control: immutable 基本的にブラウザは、画像などのリソースをキャッシュします。 ページ遷移な…

CloudFlareのNGINX HTTP/2 + SPDY両対応するパッチを試す

CloudFlareから、「Open sourcing our NGINX HTTP/2 + SPDY code」という記事にて、NginxをHTTP2とSPDYに両方に対応するパッチが公開されました。 NginxはHTTP2対応に伴い、SPDYのコードは削除されました。しかし、一部古いブラウザはSPDYまでしか対応してな…