2023年10月16日~2023年10月22日に読んだ中で気になったニュースとメモ書き(TLSらじお*1第128回の原稿)です。
全文を公開している投銭スタイルです。
- [0-RTTリプレイ攻撃対策TLS Guard]
- [RHELとExtended Master Secret拡張]
- [TLS Trust Expressions]
- [その他のニュース]
- [暗認本:27 SHA-1の衝突]
- [まとめ]
[0-RTTリプレイ攻撃対策TLS Guard]
こちらのツイートから。
『TLS Guard for TLS 1.3 Zero Round-Trip Time (0-RTT) in a Distributed Environment』https://t.co/ti6sCzFfuh
— ゆき (@flano_yuki) 2023年10月20日
TLS 1.3 0-RTTハンドシェイクのリプレイ攻撃対策として、TLS Guardという仕組みを提案するペーパー。後で読む
リンク先はこちら。
https://www.sciencedirect.com/science/article/pii/S1319157823003518
Bulletproof TLS and PKI(プロフェッショナルSSL/TLSの特別版PDF)の解説によると、0-RTTの場合に送信されるearly_data拡張を含む0-RTTのClientHelloに続くApplicationDataをサーバ側で記録しておき、再利用のリクエストを弾くことでリプレイ攻撃に対処することが理論上可能とされている。ただし、分散環境の場合、複数サーバでのデータの同期が複雑になり大変なのは容易に想像できる。
他の対策として、今回の論文では、時刻ベースの対策や、セッションチケットの利用回数制限、PPRF(Puncture Pseudorandom Function)などが紹介されているが、いずれも分散環境での対策としては不十分とされている。
TLSガードを導入すると、TLSクライアント側の変更は不要で、サーバ側のCPU使用量を30%程度追加することでクラウドやCDNなどの分散環境でのリプレイ攻撃を防止できるとのこと。分散システムで使われるRaftアルゴリズムを用いて分散システムのリーダーを決定し、分散システムクラスター内の各サーバーにTLSセッション情報をコピーすることで、0-RTTのリプレイ攻撃に対処可能になる。
有用だ、ということになればCloudflareとかGoogleとかAmazonが採用してくれるだろうか...?
[RHELとExtended Master Secret拡張]
こちらのツイートから。
RHELにおけるTLSのExtended Master Secret拡張対応について。RHEL7等の古いOSは対応していないが、2023/5/16以降、NIST(米国国立標準技術研究所)のFIPS 140-3では対応が必須に。RHEL9ではOpenSSLとNSSを2023/5/15に提出することで要件を回避。 https://t.co/8gJvLRuHdU
— kokumօtօ (@__kokumoto) 2023年10月17日
リンク先はこちら。
安全な再ネゴシエーションを悪用したトリプルハンドシェイク攻撃への対策として、2015年に導入されたのがExtended Master Secret(EMS)拡張である(RFC 7627)。マスターシークレットの計算に、ClientHelloとServerHelloのランダム値を利用する既存のやり方をやめ、Finishedメッセージの計算に利用される各ハンドシェイクメッセージを連結した値のハッシュ値を利用することで、中間者による未知の鍵共有が発生するのを防ぐことができる。
NISTが定めるFIPS 140-3では、2023年5月以降のFIPS準拠モジュールが、TLS1.2の場合EMSに対応することを必須としている。RHEL7など古いOSはOpenSSL 1.0を同梱しておりEMS(とTLS1.3)をサポートしていないため、RHEL9ではOpenSSL 3.0を同梱することでFIPSに対応したとのこと。
TLS1.2は一応安全に使えるバージョンのTLSとはいえ、やはり気をつけるポイントが多い...。古いOSとかは特に気をつけないと。
[TLS Trust Expressions]
こちらのツイートから。
『TLS Trust Expressions』https://t.co/Rv2tkxqYPX
— ゆき (@flano_yuki) 2023年10月20日
google勢の提案。信頼できるトラストアンカーを通知できるようにするTLS拡張?#yuki_id
リンク先はこちら。
新しいインターネットドラフトが出た。ルートプログラムまたはCAが事前に共有した情報を利用することで、サポートしているトラストアンカー(=ルート証明書)についてネゴシエートできるようになるとか。
具体的には、trust_expressions拡張がClientHelloかCertificateRequestに含まれるようになり、以下のようにトラストストアの名前とバージョンを含んだ値が送信される。この拡張を受信した側は、該当のトラストストアをもとに、証明書パスを選択して証明書を返す。
struct { opaque name<1..2^8-1>; uint24 version; } TrustStore; struct { TrustStore trust_store; uint24 excluded_labels<0..2^16-1>; } TrustExpression; TrustExpression TrustExpressionList<1..2^16-1>;
ルートの異なる複数の証明書をデプロイして、ルートキーのローテーションが可能になるほか、新しいCAを併用したり、バックアップとして複数のCAから取得した証明書をデプロイしたり、といった用途が想定されている。
[その他のニュース]
▼偽サイトの見分け方
こちらのツイートから。
📣ご注意ください
— ユニクロ (@UNIQLO_JP) 2023年10月17日
ユニクロを装った偽サイトが複数確認されています。
偽サイトで注文した場合、商品が届かない、偽物が届くといった事例が確認されています。
ユニクロ公式サイトには[https://t.co/mH5Z4d9BJC]が含まれます。…
某経済新聞と違ってちゃんとした見分け方を提示していて良い。
とはいえ、目視に頼りすぎると、以下のような事例もあるので悩ましいところ...uniqlοとか書かれてたら確実に間違える気がする(oではなくギリシャ文字のオミクロンοを利用)。
Google検索で偽サイトに誘導する広告が出てくる事案が発生したそうです。誘導先の「keeppass .info」の先頭の「k」をセディーユ付きの「ķ」に変えたドメインを投入するコンボ攻撃だったとか。検索結果の偽サイト誘導広告はしばしば発生しますが、識別困難なドメイン名の使用は珍しいかもしれません。 https://t.co/7CXQRSiPly pic.twitter.com/ZTbskhrFjY
— Naomi Suzuki (@NaomiSuzuki_) 2023年10月20日
ドメインに国際化文字列が入ると脆弱性に繋がるケースもあったし、そういうのやめた方がいいと思うんだけど、完全なる後知恵なのでなんとも...。
▼DiStefano
こちらのツイートから。
We have updated our DiSteffano paper of private attestations over TLS1.3 encrypted data with e2e results and a full security model. Check it out: https://t.co/xyHV006snh (work with @joerowell @alxdavids @gpestana @realhamed) and our code: https://t.co/uBEiAWqW96 pic.twitter.com/81VtNrzrKW
— sofía celi (@claucece) 2023年10月20日
リンク先はこちら。
https://eprint.iacr.org/2023/1063.pdf
TLSって書いてあったからとりあえずピックアップしてみたけど、private attestationsとかcommitmentsって何なのか謎。
論文を流し読みすると、『暗認本』のChapter 9にある「秘密計算」とか「ゼロ知識証明」といった用語がたくさんでてくるのが分かる。ちょっと今の自分には発展的すぎるのでパス...。
[暗認本:27 SHA-1の衝突]
引き続き、ニュース以外のメインコンテンツとして『暗号と認証のしくみと理論がこれ1冊でしっかりわかる教科書』を読んでいく。
今週はChapter 5 認証から、セクション27をざっとまとめた。
- SHA-1への攻撃の歴史
- SHA-1=160ビットのハッシュ値。80ビット安全性
- 理論的には2005年の攻撃方法で63ビット安全性と評価
- 実際には2017年にオランダの研究機関CWI(Centrum Wiskunde & Informatica)とGoogleがPDFで突破
- 2020年に改良した攻撃でPGPが突破された
- 衝突したPDFとSHA-1のアルゴリズム
- 衝突困難性の破り方
- ハッシュ値を計算するための内部状態S0
- S0に対して圧縮関数fを2回適用したときに、同じS2が得られるようなブロックのペアを探す
- PDFに2個のJPEGを埋め込む方法
[まとめ]
今週は割とガッツリTLS仕様に関わるネタが多めだった。
※以降に文章はありません。投銭スタイルです。