2023年8月21日~2023年8月27日に読んだ中で気になったニュースとメモ書き(TLSらじお*1第120回の原稿)です。
全文を公開している投銭スタイルです。
[mTLS実装の問題点]
こちらのツイートから。
mTLS: When certificate authentication is done wrong https://t.co/mwYJKtlZKx
— /r/netsec (@_r_netsec) 2023年8月21日
リンク先の記事はこちら。
Cloudflare以外にもmTLSを使ってる。だいぶ市民権を得てきたのだろうか。「the padlock icon used by web browsers」とあるがChromeのそれはもうすぐなくなるんだよな...かなしみ。
本題は、クライアント証明書を利用する相互認証TLSのJavaのOSSプロジェクトでの実装を調査したところ、以下のような問題があったという話。
- クライアント証明書の不適切な取得
- クライアント証明書によるSSRF
前者は実際にKeycloakで問題が見つかっている。
後者は、BouncyCastleで問題が見つかっている。証明書のSubjectフィールドに含まれる特殊文字によりLDAPクエリをインジェクションしたり、証明書拡張の失効情報を取得するためのURLを利用してSSRFが可能とのこと。
証明書拡張から取得したURLを使わずに失効確認をしろってのは確かにその通りなんだけど、そう言われてもなあ...事前にホワイトリストを持っておくような実装をするしかないんだろうか。メンテナンスが大変そう...。
[Android版ChromeのKey Pinning]
こちらのツイートから。
Chrome 106 から有効化されたKey Pinning がAndroid版Chromeにも。
— Yurika (@EurekaBerry) 2023年8月25日
Key Pinningはあらかじめ正規の証明書のキーを保持しておくことで、CAが侵害されて不正な証明書が発行された場合のリスク低減するもの。
HPKPは廃止されたけどブラウザが自動で運用するKP進化してるなーhttps://t.co/eTAxhsEMYC
リンク先はこちら。
Yurikaさんが言っているように、HPKPはうまくいかなかったけど、ピンニング自体はまだまだ使われている。上記記事によると、ブラウザ以外にも自動ソフトウェア更新、パッケージマネージャなど、サーバと特権的な通信を行うユースケースで特に利用されているとのこと。
Androidでは再起動不要なChromeの動的部分アップデートが可能になっており、ピンニングで利用される証明書(ピンセットと呼ばれる)の更新もこの仕組みを利用している。これによって、古いピンニング証明書が利用されて接続できなくなるリスクを劇的に軽減しているとのこと。
ピンニング用証明書の更新だけでなく、Chrome Root Storeの更新や、CTログリストの更新も同じ動的アップデートの仕組みで実施されているらしい。CTログリスト、動的に更新してくれるのは良さそうだけどChromeが保持してたのあまり認識できてなかった気がする。
ブラウザの挙動、知らないことだらけだ...。
[その他のニュース]
▼OpenSSLとDownfall/Inception脆弱性
こちらのツイートから。
日本ではあまり話題になってない気がするけど、どうなんでしょう。https://t.co/a4rSKmnluO
— kjur (@kjur) 2023年8月21日
リンク先はこちら。
CPUのサイドチャネル脆弱性、IntelのDownfallとAMDのInceptionがOpenSSLに与える影響について。暗号鍵マテリアルや、暗号化前の平文など、CPUのプロセスが扱うあらゆるデータが危険に晒される可能性があるとのこと。
OpenSSLの脆弱性ではないものの、AWSなどクラウドベンダ側の対応が気になるところ。AWSの場合ユーザー側の対応は不要っぽい。
▼PQCに備える2023年
こちらのツイートから。
んまぁ〜、2023年はPQC準備の年にはなるよね。
— 菅野 哲 / GMOイエラエ 取締役CTO (@satorukanno) 2023年8月22日
暗号移行の2030年問題ってやつですねっ
--
Why 2023 is the year to become PQC-ready,https://t.co/ig7aqzfV8o
リンク先はこちら。
www.insidequantumtechnology.com
RainbowやSIKEといった耐量子暗号・署名アルゴリズムが破られたことなどを受けて、新しい要素技術を速やかに導入できる能力を組織が持つ必要がある、とのこと。
そろそろ動かないとマズい予感...。
▼AWS Certificate ManagerのIAM条件サポート
こちらの記事から。
AWS Certificate Manager(ACM)はAWS上でサーバ証明書などを管理・発行できるサービス。そのAPI利用を制御するためのIAMポリシーで、以下のような制限をかけられるようになったとのこと。
▼PQCのFIPSドラフト
こちらのツイートから。
FIPS 203: Module-Lattice-Based Key-Encapsulation Mechanism Standard のInitial Public Draft が公開された!
— 菅野 哲 / GMOイエラエ 取締役CTO (@satorukanno) 2023年8月24日
ML-KEMって名前になってますがCRYSTALS-Kyberですね〜。
詳細はココから!https://t.co/IBntbWXwDH pic.twitter.com/WTxV7LrwDa
リンク先はこちら。
他のもFIPSドラフトになってるっぽい。
FIPS 204: Module-Lattice-Based Digital Signature Standard のInitial Public Draft も公開された!
— 菅野 哲 / GMOイエラエ 取締役CTO (@satorukanno) 2023年8月24日
ML-DSAって名前ですが、親しみがある名前だと CRYSTALS-Dilithium ですね!
詳細はココから!https://t.co/dwp0ZROmLP pic.twitter.com/0IjRfU7nS3
そんでもって FIPS 205: Stateless Hash-Based Digital Signature StandardのInitial Public Draft も公開された!
— 菅野 哲 / GMOイエラエ 取締役CTO (@satorukanno) 2023年8月24日
SLH-DSA という名前で登場していますが、馴染みある名前だと SPHINCS+ です!!
詳細はココから!https://t.co/nv6VamMfT1 pic.twitter.com/GL3rP2kRJO
いろんな標準があって違いがよくわからない...。
[暗認本:19 有限体と拡大体]
引き続き、ニュース以外のメインコンテンツとして『暗号と認証のしくみと理論がこれ1冊でしっかりわかる教科書』を読んでいく。
今週はChapter 4 公開鍵暗号から、セクション19をざっとまとめた。
- AESや楕円曲線暗号を実装するときに必要になる知識。
- 有限体:四則演算可能な有限個からなる集合
- 整数をnで割った余りの集合S={0,1,...,n-1}の性質
- n=5の時の乗算表は以下のようになる
a\b | 1 | 2 | 3 | 4 |
1 | 1 | 2 | 3 | 4 |
2 | 2 | 4 | 1 | 3 |
3 | 3 | 1 | 4 | 2 |
4 | 4 | 3 | 2 | 1 |
-
- 除算:1÷3(≡6÷3)=2のように考える
- 逆数表(1/a)は以下のようになる
a | 1 | 2 | 3 | 4 |
1/a | 1 | 3 | 2 | 4 |
- 拡大体
- n=2の時の有限体F2={0, 1}
- 拡大体:F2を複数まとめて扱う。AESで利用。
- 2ビットの集合Xを考える:{00, 01, 10, 11}
- 上位ビットをb1、下位をb0とすると次のようになる
00 | 01 | 10 | 11 | |
b1*x + b0 | 0 | 1 | x | x + 1 |
-
- 集合Xは{0, 1, x, x+1}と考えられる
- F2の中で考える(つまり2=0)ので、x+(x+1)=2x+1=1
- 乗算の場合x^2は x+1 に置き換えるルール
- 以上より以下の表が得られる
加算表(a+b) | 0 | 1 | x | x+1 |
0 | 0 | 1 | x | x+1 |
1 | 1 | 0 | x+1 | x |
x | x | x+1 | 0 | 1 |
x+1 | x+1 | x | 1 | 0 |
乗算表(a(x)b) | 0 | 1 | x | x+1 |
0 | 0 | 0 | 0 | 0 |
1 | 0 | 1 | x | x+1 |
x | 0 | x | x+1 | 1 |
x+1 | 0 | x+1 | 1 | x |
-
- x (x + 1) = 1なので逆数表は以下のようになる
a | 1 | x | x+1 |
逆数表(1/a) | 1 | x+1 | x |
-
- 集合Xは四則演算ができた=有限体
- 特に、x^2を置き換えるルールを使ったのでF2の2次拡大体F22という
- AESではF28と変換規則「x^8→x^4+x^3+x^2+1」、AES-GCMやXTS-AESではF2128と変換規則「x^128→x^7+x^2+x+1」を利用する
[まとめ]
数学成分強めだったので頭が疲れた...。
※以降に文章はありません。投銭スタイルです。