kdnakt blog

hello there.

今週気になったTLS関連のニュース

2023年8月21日~2023年8月27日に読んだ中で気になったニュースとメモ書き(TLSらじお*1第120回の原稿)です。
全文を公開している投銭スタイルです。

[mTLS実装の問題点]

こちらのツイートから。

リンク先の記事はこちら。

github.blog

Cloudflare以外にもmTLSを使ってる。だいぶ市民権を得てきたのだろうか。「the padlock icon used by web browsers」とあるがChromeのそれはもうすぐなくなるんだよな...かなしみ。

本題は、クライアント証明書を利用する相互認証TLSJavaOSSプロジェクトでの実装を調査したところ、以下のような問題があったという話。

  • クライアント証明書の不適切な取得
  • クライアント証明書によるSSRF

前者は実際にKeycloakで問題が見つかっている。

github.com

後者は、BouncyCastleで問題が見つかっている。証明書のSubjectフィールドに含まれる特殊文字によりLDAPクエリをインジェクションしたり、証明書拡張の失効情報を取得するためのURLを利用してSSRFが可能とのこと。

github.com

証明書拡張から取得したURLを使わずに失効確認をしろってのは確かにその通りなんだけど、そう言われてもなあ...事前にホワイトリストを持っておくような実装をするしかないんだろうか。メンテナンスが大変そう...。

[AndroidChromeのKey Pinning]

こちらのツイートから。

リンク先はこちら。

security.googleblog.com

Yurikaさんが言っているように、HPKPはうまくいかなかったけど、ピンニング自体はまだまだ使われている。上記記事によると、ブラウザ以外にも自動ソフトウェア更新、パッケージマネージャなど、サーバと特権的な通信を行うユースケースで特に利用されているとのこと。

Androidでは再起動不要なChromeの動的部分アップデートが可能になっており、ピンニングで利用される証明書(ピンセットと呼ばれる)の更新もこの仕組みを利用している。これによって、古いピンニング証明書が利用されて接続できなくなるリスクを劇的に軽減しているとのこと。
ピンニング用証明書の更新だけでなく、Chrome Root Storeの更新や、CTログリストの更新も同じ動的アップデートの仕組みで実施されているらしい。CTログリスト、動的に更新してくれるのは良さそうだけどChromeが保持してたのあまり認識できてなかった気がする。

ブラウザの挙動、知らないことだらけだ...。

[その他のニュース]

▼OpenSSLとDownfall/Inception脆弱性

こちらのツイートから。

リンク先はこちら。

www.openssl.org

CPUのサイドチャネル脆弱性IntelDownfallAMDInceptionがOpenSSLに与える影響について。暗号鍵マテリアルや、暗号化前の平文など、CPUのプロセスが扱うあらゆるデータが危険に晒される可能性があるとのこと。
OpenSSLの脆弱性ではないものの、AWSなどクラウドベンダ側の対応が気になるところ。AWSの場合ユーザー側の対応は不要っぽい。

aws.amazon.com

▼PQCに備える2023年

こちらのツイートから。

リンク先はこちら。

www.insidequantumtechnology.com

RainbowやSIKEといった耐量子暗号・署名アルゴリズムが破られたことなどを受けて、新しい要素技術を速やかに導入できる能力を組織が持つ必要がある、とのこと。
そろそろ動かないとマズい予感...。

AWS Certificate ManagerのIAM条件サポート

こちらの記事から。

aws.amazon.com

AWS Certificate Manager(ACM)はAWS上でサーバ証明書などを管理・発行できるサービス。そのAPI利用を制御するためのIAMポリシーで、以下のような制限をかけられるようになったとのこと。

  • 証明書の検証方法(メールまたはDNS
  • 発行可能な証明書のドメイン
  • 利用可能なキーアルゴリズムやキーサイズ
  • CTの必須制御

▼PQCのFIPSドラフト

こちらのツイートから。

リンク先はこちら。

csrc.nist.gov

他のもFIPSドラフトになってるっぽい。

いろんな標準があって違いがよくわからない...。

[暗認本: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が素数の時は逆数表作れるが、6や12など合成数では逆数なしあり
    • 前回出てきたDH鍵共有は有限体上のDH鍵共有
  •  拡大体
    • 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」を利用する

[まとめ]

数学成分強めだったので頭が疲れた...。

※以降に文章はありません。投銭スタイルです。

*1:TLSらじおは社内勉強会です。このブログを読み上げつつ弊社サービスの実情を語ったりします。

この続きはcodocで購入