2022年12月26日~2023年1月8日に読んだ中で気になったニュースとメモ書き(TLSらじお第87回の前半用原稿)です。
年末年始を挟んだので2週間分まとめてお送りします。
- [RSA Broken?]
- [Bulletproof TLS Newsletter #96]
- [Chromeのセキュリティ総括2022年7-9月]
- [Androidのルート証明書ストア]
- [HTTPS RR@DNS DAY]
- [韓国のプロトコル事情]
- [その他のニュース]
- [まとめ]
[RSA Broken?]
こちらのツイートから。
Breaking RSA with a Quantum Computer https://t.co/MDsey5KExG
— Schneier Blog (@schneierblog) 2023年1月3日
リンク先の記事はこちら。
こちらの記事も。
話の元になったのは2022年12月23日にarxiv.orgで公開された論文:Factoring integers with sublinear resources on a superconducting quantum processor*1。
48ビットの整数を効率的に10個の量子ビット(キュビット)で因数分解できた、2048ビットのRSAにトライするには372個のキュビットが必要(未確認)、ということらしい。2022年11月にはIBMのOspreyが433キュビットを達成しているので、もしかしたらもうRSAはおしまいなのか?
アメリカの研究者Bruce Schneier氏によると「I don’t think this will break RSA」とのこと。違う、ということの根拠として、この論文が依拠している別の論文が大きな整数では成り立たない点を指摘している。
もしこの仮説が成り立つとすれば、耐量子暗号の根拠となっている格子ベースの公開鍵暗号も破られる危険性があるとのこと。
IBMが検証結果を出してくれたら面白いのに(仕事が色々とやばいことになりそうだけど)。
[Bulletproof TLS Newsletter #96]
こちらのツイートから。
Bulletproof TLS Newsletter is out! In this issue:
— Feisty Duck (@feistyduck) 2022年12月29日
- TrustCor and browser vendors
- Short news from Decemberhttps://t.co/4y3qvgKJKp
ニュースレターはこちら。
トップニュースはTrustCorというCAが各ルートストアから削除された件。以前にうちでも取り上げた。CAをビジネスとして運営することの難しさや、EUが目指しているeIDASとの関連についても触れられている。
その他の主なニュースは以下。
- Let's EncryptのCAAリソースレコードの拡張サポート追加(accounturiとvalidationmethods)
- OpenSSL 3.0のパフォーマンス問題(GitHubのissueあり)
- コンテナイメージ中のトラストストアを調査するためのツールParanoia
- MSのデジタル証明書がマルウェアの署名に利用された件(署名サービスを提供する専門の業者がいるかもとのこと)
- Chromeのセキュリティ総括2022年7-9月(後述)
- Android 14でルート証明書ストアがファームウェアから独立予定(後述)
[Chromeのセキュリティ総括2022年7-9月]
Bulletproof TLS Newsletter #96より。
TLSに関係のあるところだと以下の内容。
ECHは2022年10月にバージョン15のドラフトが出ていた。前のバージョンとの差分を確認すると、ECHのゴールとしてTLSのセキュリティの維持、ハンドシェイクのプライバシーに加えて、ECH非利用のハンドシェイクへのダウングレード耐性が追加されていた。
iOSのHTTPSファーストモード、どうやって使うんだろうと思ったら「Settings > Privacy and Security」で「Always Use Secure Connections」をオンにすると使えそう。デフォルトではオフだったのでオンにしておいた。
[Androidのルート証明書ストア]
Bulletproof TLS Newsletter #96より。
Let's Encryptのルート証明書起源切れ問題や、TrustCorの件を受けて、Googleが動いたらしい。
この機能のベースとなったのは、Androidのシステムコンポーネントを独立モジュールとして提供可能にするProject Mainlineで、Android用のTLS実装としてConscriptというモジュールある。ここに更新可能なルートストアが実装予定。
[HTTPS RR@DNS DAY]
こちらのツイートから。
【自分用メモ】DNS DAYの記事。 #iw2022jp
— Yasuhiro Morishita (@OrangeMorishita) 2022年12月27日
本当にあった「SaaSタグ×ドロップキャッチ」の怖い話……組織におけるドメイン名管理に必要な要件とは【Internet Week 2022】 - INTERNET Watch https://t.co/j1zoZeVaQB
DNS DAYというイベントがあったらしい。記事はこちら。
TLS関連では、ECHにも利用されるHTTPSリソースレコードについて触れられていた(仕様はまだドラフト段階)。
小坂氏によると、2019年から2021年にかけて観測されたクエリ数の急増は落ち着きを見せたものの、その原因の1つであるHTTPSリソースレコード(RR)のクエリ数の増加は現在も続いており、2022年10月現在で全体の15%に達した
HTTPS RRが設定されているユニークなドメイン名の数は19万を超えており、実際に使われ始めていること、夜(21時ごろ)にレスポンス数が増えることから、HTTPS RRは現時点ではビジネス用途よりも、コンシューマーがアクセスするドメイン名に設定されている傾向にあるように思える
HTTPS RRのalpnパラメーター(アクセス先のウェブサーバーで使用可能なプロトコル)の内容を見ると、QUICで通信するHTTP/3にウェブサーバーを対応させる際、HTTPS RRを設定しているのではないか
とのこと。HTTPSリソースレコード結構使われてるんだな。
以下の記事によると、2022年3月時点でAレコード、AAAAレコードに次いでHTTPSレコードが10%ということなので、半年で約5%増加したことになる。
[韓国のプロトコル事情]
こちらのツイートから。
韓国は歴史的に米国の暗号輸出規制に晒され自国でのプロトコル開発に勤しみ、2010年代以降にそれの見直しが訴えられても変わらないままの所がある。韓国では銀行へのアクセスのためにローカルサーバを持つセキュリティSWをインストールせねばならないがそれらに大きな問題が存在している。 https://t.co/x9y4v1mGdE
— 高梨陣平 (@jingbay) 2023年1月4日
リンク先の記事はこちら。
TLSの脆弱性FREAKなどに繋がった1990年代アメリカの暗号輸出規制は、日本については2000年に解除された(参考:ホワイトハウスの声明のアーカイブ)が、韓国についてはしばらく規制が残っていたようである。
現在の輸出規制を定めた文書では韓国は日本と同じ扱いになっているので、どこかのタイミングで規制が解除されたものと思われる。
ただ、その過程でアメリカを信用しない韓国はSSL/TLSの上にActiveXでしか動かない独自プロトコルを実装したため、銀行のサイトなどを利用する際には複数のアプリケーションをインストールする必要があるとのこと。辛い...。
なにをやっているアプリケーションなんだろう?と思ったら、「暗号化というよりは難読化(cryptography is merely being used as obfuscation)」らしい...いいのかそれで。
本件については3月までに複数回追加の情報開示が行われる予定とのこと。ちょっと楽しみ。
[その他のニュース]
▼crip: Certificate Ripper v2
こちらのツイートから。
Certificate Ripper v2 released - tool to extract server certificates https://t.co/olWh7mFwYC
— @_r_netsec@infosec.exchange (@_r_netsec) 2022年12月28日
picocliとGraalVMを使っているみたい。
ちなみにOpenSSLで同じようなことをやる場合は次のようになる。
$ echo quit | openssl s_client -showcerts -connect curl.se:443 > cacert.pem
参考。出力した証明書をcurlで使うには--cacertオプションを使う。
daniel.haxx.se
▼rust-tls
こちらのツイートから。
Rustで、TLSのLinuxカーネルモジュールを実装してみました。QUICも実装し、コネクションが確立できました(それ以上はできない)。TLS handshake機能は複雑でリスクが大きいという意見が多くて、マージされていないのですが、Rustで実装するとどうでしょう? https://t.co/xO4R9oTa5D
— FUJITA Tomonori (@brewaddict) 2022年12月27日
リポジトリはこちら。LinuxカーネルでRustが使えるようになったので...ということらしい。
TLS1.3のみ実装されている。tls.rsを見ると見慣れたハンドシェイクメッセージが並んでいて勉強になる。
use kernel::Result;
とかはRust By Exampleで見たやつだ!と2022年の勉強の甲斐があってよかった。
▼Go 1.20の変更点
こちらのツイートから。
We got a lot of exciting cryptography changes into Go 1.20! ✨
— Filippo Valsorda (@FiloSottile) 2023年1月4日
Some highlights: the crypto/ecdh package, no more math/big, and Ed25519ctx 💥
I wrote 4000 words covering over 69 CLs with implementation and motivation details for Maintainer Dispatches 📮https://t.co/F34K9ZOfXn
リンク先はこちら。
新しくcrypto/ecdhが標準パッケージとして追加されるのと、タイミングサイドチャネル攻撃に利用されがちだったmath/bigパッケージを置き換えるbigmodパッケージが追加されるとのこと。
他にも、ルートストアのないコンテナで実行するTLSクライアント向けにSetFallbackRootsというAPIが追加されたり、ハンドシェイクが証明書検証で失敗する場合にCertificateVerificationErrorを返すようになるとか。証明書検証、むしろ今までどうしてたんだろう...。
[まとめ]
2023年もTLSらじおをよろしくお願いします。
*1:上の記事によると、どうやらこの論文は査読を受けていないらしい。