2023年8月14日~2023年8月20日に読んだ中で気になったニュースとメモ書き(TLSらじお*1第119回の原稿)です。
全文を公開している投銭スタイルです。
[chrome: HTTPSファーストモードへ]
こちらのツイートから。
Taking steps towards HTTPS by default in Chrome https://t.co/KdJZk9xdeI
— David Adrian (@davidcadrian) 2023年8月16日
リンク先はこちら。
Chromeユーザーの接続のうち、5-10%程度がHTTPSでなくプレーンなHTTPを利用しているらしい。デフォルトで安全であるために、HTTPSファーストモードをデフォルトにしていく予定とのこと。
HSTSと類似した形で、HTTPSへの自動アップグレード機能が既に実験中。サーバ側でHSTSの設定をミスると、セルフDoSになってしまう懸念があったが、クライアント側でHTTPへのフォールバックを実装してくれているので、こちらの方が良さそう。
また、2023年9月中旬以降、混合ダウンロード(HTTPSサイト上でのHTTPダウンロード)の実行時に警告を表示予定とのこと。でも悪意のあるファイルをHTTPSサイト上で公開されたらあまり意味ないしな...と思ったけどその場合はサイト本体のCSP(Content Security Policy)設定で回避可能か。
開発者向け、ということでちらっと触れられていたのが、HTTPの場合にアクセスできるCookieの寿命を減らすことでリスク削減を検討中とのこと。色々やってるなあ...。
[ハッシュ関数の衝突]
こちらのツイートから。
なんかMD5関連で巷が騒がしいからとりあえず最新のCRYPTREC暗号リストでも貼っておこうかな。https://t.co/6G6E2tnSc2
— Ryoma Ito (@itorym) 2023年8月16日
この騒ぎで面白い記事も見つけたからこれも貼っておこう。
「知られざる王小雲。米国の暗号学的ハッシュ関数MD5、SHA-1を過去に葬り去った女性研究者」https://t.co/pfjAaXa7Im
リンク先はこちら。
騒ぎの元になったパスワードハッシュの流出の件は置いておくとして...。
『プロフェッショナルSSL/TLS』p.86でも触れられている、ハッシュ関数MD5の世界初の完全な衝突事例を示したWang氏に関する記事。SHA-1についても衝突事例を発見したほか、中国独自のハッシュ関数SM3を開発したことでも知られているとのこと。
『プロフェッショナルSSL/TLS』ではなぜかSHA-1の衝突についてはWang氏に触れず、2017年のMarc Stevens氏らの事例を紹介している。
SM3については2021年8月21日のニュースでちらっと触れたことがある。これもWang氏だったのか...。
そういえば、SHA-2はまだ大丈夫なのかな。
[その他のニュース]
▼Cloudflareのホスト名別TLS設定
こちらのツイートから。
今まではゾーンごとのみだったのが、ホスト名ごとにTLS設定(2つの主要なコントロール:最小TLSバージョンの設定、およびサポートされる暗号スイートのリストの制限)を制御できるようになりました! 特定のホスト名に適用される設定は、ゾーンレベルの設定よりも優先されますhttps://t.co/Yv4ICjb5xl
— kyhayama (@kyhayama) 2023年8月14日
リンク先はこちら。
設定できるようになったらしい。今までできなかったんだ...意外。
サポートされる暗号スイートのリストについては、modern/compatible/legacyの3パターンから選べるほか、個別に設定することもできるらしい。AWSのALBの設定より柔軟だ。
▼step-ca(smallstep)で自前認証局構築
こちらの記事から。
2022年6月27日のニュースで取り上げたSmallstepを実際に使うとこういう感じ、というのが分かる。
サーバー証明書のデフォルトの有効期限が24時間(変更は可能)だったりするのが大変かも。certbot使ってれば大丈夫なのかな...何らかの問題でcertbot実行できなかった時のために有効期限はせめて数日は欲しい気もする。
認証局を気軽に作れるのは便利かもしれないけど、ルート認証局のようにしっかりしたサーバの管理も同時に要求されるようになるわけで、あまり気軽には使えない気もする。SSL化するだけならmkcertとかでもできるし...。
▼Fiddler Classicの起動失敗
こちらのツイートから。
Wondering why @TelerikFiddler always fails its startup version check? It's because Telerik turned off TLS/1.0 on their servers. Fiddler Classic was never updated to allow TLS/1.2 by default.
— 🎻 Eric Lawrence (@ericlaw) 2023年8月16日
Fix it by clicking Tools > Options > HTTPS; click this link and make it look like this: pic.twitter.com/rpqiy54dYJ
Fiddler ClassicはWindows用のプロキシ。新しいバージョンのFiddler EverywhereがあるためかTLS設定が更新されておらず、サーバ側のTLS設定とズレがあるため、起動時のバージョンチェックに失敗するらしい。
提供してるサービスのクライアントとサーバのデフォルトの設定はきちんと把握しておかないとな...。
▼nginx/njs-acme
こちらのツイートから。
Looks like you Nginx users no longer need to HUP Nginx after a certificate change or hassle with an external ACME client. https://t.co/aCCD8s8ckB :)
— Ryan Hurst (@rmhrisk) 2023年8月17日
リンク先はこちら。
Nginxで利用する証明書変更などの際には、HUPシグナルを送信してNginxに設定ファイルの再読み込みが必要だったが、njs-acmeを利用するとACMEプロトコルを利用して自動化できるらしい。
そもそもnginxをJavaScriptで拡張できるnjsを知らなかった...luaで拡張できるのは知ってたけどこっちの方がとっつきやすそう。
▼OpenSSLのQUIC実装
こちらのツイートから。
History for ssl/quic - openssl/openssl https://t.co/bOwtVhuJn9 OpenSSL の QUIC 実装進んできてるなぁ。うちはコレに乗っかるがよさそう。コレの上に Erlang で HTTP/3 と WebTransport 実装すれば充分な気がする。
— V (@voluntas) 2023年8月19日
リンク先はこちら。
進んできているらしい。v3.1.0がリリースされたのが2023年3月なので、来年の春あたりにリリースされるんだろうか。
2022年8月の段階では、curlの作者さんはOpenSSLでQUICが使えないのでwolfSSL推しだったっぽい。
▼Internet Explorer 28周年
こちらのツイートから。
28 years is a long time. https://t.co/ULHPUvEz0l
— 🎻 Eric Lawrence (@ericlaw) 2023年8月20日
リンク先はこちら。
アドレスバーが全部http://始まりで、確かに90年代はこんな感じだったな、と思う。学校にあったPCがWindows 95だったか98だったか思い出せない...。
[暗認本:18 鍵共有]
引き続き、ニュース以外のメインコンテンツとして『暗号と認証のしくみと理論がこれ1冊でしっかりわかる教科書』を読んでいく。
今週はChapter 4 公開鍵暗号から、セクション18をざっとまとめた。
- 現代暗号の始まり
- ベキ乗
- 鍵共有の仕組みの説明の前におさらい
- (g^a)^b=(g^b)^a=g^(ab)
- r = x mod n または x ≡ r (mod n)
- 例) (107 * 108) mod 100 = (107 mod 100) * (108 mod 100) = 56
- 例) 104^4 mod 100 = (104 mod 100)^4 mod 100 = 56
- A = g^a mod n, B = g^b mod nとするとA^b ≡ B^a (mod n)
- DH鍵共有(ディフィー・ヘルマン鍵共有)
- DH鍵共有の安全性
- 攻撃者:g、n、A、Bを入手可能
- DH Problem:g^(ab) mod nを計算できるか?
- nが10進数で600桁以上(2048ビット)の素数などの条件があれば解けないはず(今後20年くらいは)
- DLPと一方向性関数
- ベキ乗の計算方法
- x^a mod nの効率良い計算方法を考える
- a=100だと99回掛け算が必要
- aが2048ビットだと計算が終わらない
- 2進数表記を使う
- 100は0b1100100なので
- x^100=x^64 * x^32 * x^4
- x^4は2乗の2乗で計算2回、x^32はその8乗なので計算3回..
- 最終的に8回の計算でx^100が求められる
- この方法なら2000ビットのaでも高々4000回の掛け算で計算可能
[まとめ]
TLSしゃべれないので門前払いだ...。TLSっていうかECDHEとかAES-128-GCMとかが無理。
最近だとSSL/TLSを話せないと門前払いされそうなイメージ https://t.co/GN1YVgp6eq
— yoh (@yohhoy) 2023年8月15日
※以降に文章はありません。投銭スタイルです。