2022年12月19日~12月25日に読んだ中で気になったニュースとメモ書き(TLSらじお第86回の前半用原稿)です。
[AdGuard DNSの部分的ダウン]
こちらのツイートから。
『最初のミスは、11月28日にAdGuard DNSのTLS証明書を更新したときに起こりました。
— Autumn Good (@autumn_good_35) 2022年12月19日
新しい証明書はRSAで、いつも使っているECDSAではありませんでした。』
2022年12月19日
2022年11月30日のAdGuard DNS部分的ダウンについてhttps://t.co/kPkZRpyMo4
リンク先の記事はこちら。
AdGuardは広告ブロックツールを提供している会社。同社の提供している広告ブロック型DNSであるAdGuard DNSが部分的にダウンした原因がTLS証明書にあるという。
AdGuard DNSはGoで実装されており、新しくデプロイされた証明書がRSAだった結果、パフォーマンスに問題が発生したとのこと。おそらく下記の未解決のissueのものと思われる(起票は2017年、Go1.8の時代)。
TLSセッションは通常使い回されるので、最初は問題がなかったものの、BGP設定変更やサーバー再起動などの結果TLSハンドシェイクを伴うトラフィックが増大し、障害に至ったという。
記事では他に、AndroidのDoT(DNS over TLS)実装について、ネットワーク変更やエラーからの復旧の際に複数のテストクエリを実行する点にも問題があったとされている。
原因の特定から1時間ちょっとでDoT停止+ECDSA証明書適用で復旧を完了していてすごい。
[curl-7.87.0:CVE-2022-43551]
こちらの記事から。
curlにIDN(Internationalized Domain Names、国際化ドメイン名)経由でHSTS(HTTP Strict Transport Security)を迂回する脆弱性があった模様。詳細はこちら。
国際化ドメイン名といえば先日のOpenSSL 3.0系のCriticalの誤報の件を思い出す。
[その他のニュース]
▼Zig言語のTLS対応
こちらのツイートから。
Zig に TLS 実装が入るにあたり、夏休みの学生 OSS お仕事で zig で TLS 1.3 を開発していた @PiBVT が Zig 作者から "参考にすることができ、非常に助かりました" と行ってもらえるの最高の結果では。おめでとう @PiBVT !!! https://t.co/eOavn4N4i7 pic.twitter.com/vUQ61hX6Up
— V (@voluntas) 2022年12月20日
zig の std に TLS1.3がやってくる?https://t.co/nkFkwjIK9U
— VTb (@PiBVT) 2022年12月19日
ZigのDiscordを見てなかったから気が付いてなかったけど、僕の実装も参考にしているらしいhttps://t.co/wWq2GKsMOT
— VTb (@PiBVT) 2022年12月19日
Zigのissueはこちら。失敗しているビルドもあり、TODOもまだたくさんありそうなので、リリースは2023年になりそう(あるいはもっと先?)。
言語の発展に貢献していてとてもすごい。元になった時雨堂のリポジトリはこちら。
▼Chromiumのenforce_anchor_constraintsフラグ
こちらのツイートから。
[chromium] enforce_anchor_constraints: if basicConstraints present, require CA=truehttps://t.co/jLbVi2gjQp pic.twitter.com/mDhWfWE57e
— ゆき (@flano_yuki) 2022年12月20日
リンク先はこちら。
デフォルトではオフになっているenforce_anchor_constraintsフラグ(?)の挙動を変更し、basicConstraintsがある場合はCA=trueを必須としたらしい。
Chrome(108.0.5359.124, arm64)のフラグページ(chrome://flags)を見てもそれらしいフラグはなかったし、サーバー証明書の場合普通はCA=falseのはずなので、どういうタイミングで必要になるのかよく分からない...と思ったけど、トラストアンカー(ルート証明書)の検証時に利用されるソースっぽい。
フラグがオンになった場合、オレオレ証明書を使っているサイトで問題になりそう。
▼OpenSSL 3.1.0-beta1
こちらのツイートから。
OpenSSL version 3.1.0-beta1 published https://t.co/EG5oAm4Wyt
— OpenSSL announce (@OpenSSLannounce) 2022年12月21日
リンク先はこちら。
3.0.0からの変更として、コンパイル時の-DOPENSSL_TLS_SECURITY_LEVELを0に設定しないとTLS1.1以下が利用できなくなる模様。まあもう本番環境では使わないだろうし...。
レベルは最高で5まであり、レベル1=80ビット安全性、レベル2=112ビット、レベル3=128ビット、レベル4=192ビット、レベル5=256ビットとなっている。現在一般的な2048ビットのRSA証明書はレベル2相当。レベル5だとRSA鍵で15360ビット、ECC鍵で512ビットが必要となる。
(CRYPTRECの暗号強度要件(アルゴリズム及び鍵長選択)に関する設定基準 v1.0より)
▼RFC 9336
こちらのツイートから。
RFC 9336: X.509 Certificate General-Purpose Extended Key Usage (EKU) for Document Signing, T. Ito, et al., https://t.co/HqhKzMXMfK, RFC 5280 specifies several extended key purpose identifiers (KeyPurposeIds) for X.509 certificates. 1/3
— rfceditor (@RFCEditor) 2022年12月21日
This document defines a general-purpose Document-Signing KeyPurposeId for inclusion in the Extended Key Usage (EKU) extension of X.509 public key certificates. Document-Signing applications may require that the EKU extension be present and that a 2/3
— rfceditor (@RFCEditor) 2022年12月21日
Document-Signing KeyPurposeId be indicated in order for the certificate to be acceptable to that Document-Signing application. 3/3
— rfceditor (@RFCEditor) 2022年12月21日
リンク先はこちら。
拡張鍵用途(Extended Key Usage、EKU)にドキュメント署名(id-kp-documentSigning)を設定できるようになったとのこと。これまで、id-kp-emailProtectionやid-kp-codeSigning、ベンダーの独自定義のKeyPurposeIdを利用していたものを置き換える狙い。
元になったRFC 5280はX.509証明書とCRLの仕様を定めたもので、拡張鍵用途として以下がリストアップされ、それぞれ対応する必須の鍵用途(Key Usage)としてデジタル署名や否認防止が挙げられている。
- id-kp-serverAuth
- id-kp-clientAuth
- id-kp-codeSigning
- id-kp-emailProtection
- id-kp-timeStamping
- id-kp-OCSPSigning
▼robot-detect
Bulletproof TLS and PKI, Second Edition、より。
2018年に問題が明らかとなったROBOT Attack(Return Of Bleichenbacher's Oracle Threat)の自動診断ツールがあるらしい。
ROBOT AttackはRSA鍵交換におけるPKCS #1 v1.5のパディングエラーをオラクル(ヒント)として利用し、TLSサーバー証明書の秘密鍵を明らかにするもの。やはり前方秘匿性は大事ですね...。
▼イベント情報
こんな勉強会があったみたい。時間的に無理だから参加できなかったけど...CA/B Forum最新動向気になる。
【WebPKIとセキュリティに関するアーキテクチャ勉強会 12/21(水) 18:30-20:00 (要事前申込)】CA/Browserフォーラムの最新動向とWebのトラストに関する勉強会を行います。WebPKIは今後どうなる❓ オンライン/無料 https://t.co/lFEzV9Aa1e #JPNIC
— JPNIC_info (@JPNIC_info) 2022年12月19日
他にはこんなイベントもあるみたい。2023年2月25日とちょっと先だけど、土曜日なのでライブストリーミングを聞けるかもしれない(忘れてなかったら)。
招待講演3はFastly Sr. Principal Engineerの奥一穂さんです。CDN等で使われているHTTPサーバ「H2O」を開発されており、QUIC, TLS, HTTP/2, HTTP/3といった通信プロトコルを実装されるとともに、標準化にも関わられています。H2Oでは組み込み言語としてmrubyが採用されています
— ruby30th (@ruby30th) 2022年12月23日
[まとめ]
2023年もTLSらじおをよろしくお願いします。