kdnakt blog

hello there.

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

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

[RFC 9345 Delegated Credentials]

こちらのツイートから。

リンク先はこちら。

www.rfc-editor.org

Googleが進めている短命証明書だが、そうした証明書の場合更新頻度が増えるため、更新タイミングでの認証局障害による影響を受ける確率が高まる。
そのような問題を回避するために、元々の証明書の有効期間内かつ同一ドメインについて、まるで中間認証局のように「Delegated Credentials」を発行し、新しい秘密鍵での通信が可能になるとのこと。

TLS拡張としてdelegated_credential(34)をClientHelloメッセージに含め、サーバはCertificateメッセージの拡張としてDelegatedCredentialを埋め込んで送信する。

// Certificateハンドシェイクメッセージ
struct {
  opaque certificate_request_context<0..2^8-1>;
  CertificateEntry certificate_list<0..2^24-1>;
} Certificate;

struct {
  select (certificate_type) {
    case RawPublicKey:
    /* From RFC 7250 ASN.1_subjectPublicKeyInfo */
      opaque ASN1_subjectPublicKeyInfo<1..2^24-1>;
    case X509:
      opaque cert_data<1..2^24-1>;
  };
  Extension extensions<0..2^16-1>;
} CertificateEntry;

// CertificateEntryのExtensionとして送信
struct {
  Credential cred;
  SignatureScheme algorithm;
  opaque signature<1..2^16-1>;
} DelegatedCredential;

struct {
  uint32 valid_time;
  SignatureScheme dc_cert_verify_algorithm;
  opaque ASN1_subjectPublicKeyInfo<1..2^24-1>;
} Credential;

Wikipediaの記載によると、仕様の提案元のCloudFlareとFacebookが既にサポートしているらしい。ブラウザ側ではFirefox(のNightlyまたはBeta)がサポートしているとのこと。

en.wikipedia.org

[オンプレ製品の証明書]

こちらのツイートから。

リンク先はこちら。

t-dilemma.info

ソフトウェアに同梱されてる証明書の類はこの手の問題がある...。ルートユーザーのパスワード期限とかもそうだけど。

ところで、サーバ証明書の有効期限は2018年に2年間、2020年以降は13ヶ月となったけど、vSphereはまだ2年のままなのだろうか。

ssl.sakura.ad.jp

加えて、Googleサーバ証明書の有効期限を90日にしようとしているけれど、これが実現したら、この手の問題がさらに加速しそう...。

kdnakt.hatenablog.com

製品インストール時に別途ルート証明書を各端末にインストールするようになれば、Chromeの場合はCA/B Forumの398日の有効期限の制限を受けないから、そういう方向になるのだろうか。とはいえ10年以上の期限を指定するのは問題がありそうだから、結局問題発生を先送りするだけか...。

kdnakt.hatenablog.com

[その他のニュース]

▼Let's Encryptのクロス署名廃止

こちらの記事から。

letsencrypt.org

gigazine.net

2024年9月末にクロス署名に利用されている証明書の有効期限が切れること、Let's Encryptのルート証明書であるISRG Root X1を搭載したAndroid 7.1以降が93%を超えたこと、などを理由に、クロス署名を廃止するらしい。

Android、昔使ってた時はバージョン4とかだったのにいつの間にか随分バージョン番号が進んでいる...。

クロス署名は他にもいろんなところで使われている。

AWSACMの場合はStarfield G2がそれに当たる。ACMのルートがiOSのトラストストアに入ったのはiOS 11以降らしい。

docs.aws.amazon.com

▼パケットキャプチャで理解する TLS1.3

こちらのツイートから。

リンク先はこちら。

zenn.dev

無料で読めるらしい。ありがたや。

OpenSSLの代わりにCloudFlareのツールcfsslを利用して認証局を構築・証明書を発行し、Wiresharkでパケットを復号できるようにして通信を理解していく流れ。GoのHTTPサーバがTLS1.3で必須ではないChangeCipherSpecを送っていたりして面白い。

github.com

▼HTTP/3と日本

こちらのツイートから。

リンク先はこちら。

arxiv.org

HTTP/3が標準化される少し前の2021年の論文。自サービスで利用しているロードバランサのHTTP対応バージョンをどうするべきか悩んでたけど、1.1のままでいいのかもしれない。

▼証明書のアジリティ

こちらのツイートから。

リンク先はこちら。

scotthelme.co.uk

Googleの進めている証明書の有効期限短縮について、認証局やCTログの視点からも分析している。Let's Encryptも発行数が増加したら耐えられるのだろうか...。

▼WebSocket ALBのBlue/Greenデプロイ

こちらのツイートから。

リンク先はこちら。

engineering.nature.global

ALB2台を使って綺麗にブルーグリーンを実現していてすごい。

▼安全なSSL/TLS証明書更新

こちらのツイートから。

リンク先はこちら。

heartbeats.jp

証明書のチェックツールとしてcheck-tls-certコマンドが紹介されていた。

github.com

オンラインで利用できるDigiCertのチェッカーも良さそうだけど、SSL Server Test (Powered by Qualys SSL Labs)の方が機能が多いので、オンラインで使うならこっちかな。

[暗認本:13 ブロック暗号]

引き続き、ニュース以外のメインコンテンツとして『暗号と認証のしくみと理論がこれ1冊でしっかりわかる教科書』を読んでいく。
今週はChapter 3 共通鍵暗号から、セクション13をざっとまとめた。

  • ブロック暗号
    • ブロックごとに暗号化。あまりはパディングで処理。
    • 暗号化モードによりブロックごとの暗号化方法が異なる
  • ブロック暗号の歴史
    • 1970年代:DES(Data Encryption Standard)
      • 64ビットブロック、鍵長56ビット
    • 1990年代:DESへの攻撃が発展、一日足らず
    • 1997年:NISTがAES(Advanced Encryption Standard)公募
    • 1998年:AES決定までのつなぎとして3DES利用開始
    • 2001年:Rijndael暗号がAESとして選出
  • AESの概要
    • 128ビットブロック、鍵長は128/192/256ビット
    • 暗号化=初期設定+ラウンド関数の繰り返し+最終ラウンド
    • ラウンド関数:鍵長に応じて9/11/13回
    • 鍵長128ビット=全探索でO(2^128)のコスト
      • 2011年のO(2^126.1)のBiclique攻撃が2020年時点で最も高効率
  • AESの初期設定
    • 128ビットのブロックを8ビットずつ16個に分割(x0-x15)
      • 左上から縦にx0, x1, x2...
    • AddRoundKey処理:ラウンド鍵とブロックの排他的論理和
  • ラウンド関数
    • SubBytes、ShiftRows、MixColumns、AddRoundKey
    • SubBytes:256文字の換字表S-Boxで8ビットずつ置き換え
    • ShiftRows:以下のようにずらす
x0  x4  x8 x12      x0  x4  x8 x12 
x1  x5  x9 x13  ->  x5  x9 x13  x1 
x2  x6 x10 x14     x10 x14  x2  x6
x3  x7 x11 x15     x15  x3  x7 x11
    • MixColumns:縦の列ごとに決められた行列Aをかける
      • 拡大体については詳細はセクション19
      • 最終ラウンド関数ではMixColumns以外を実行
  • AES-NI:New Instructions
    • IntelAMDのCPUのAESを高速処理する専用命令
      • aeskeygenassist
      • aesimc
      • aesenc
      • aesenclast
      • aesdec
      • aesdeclast
    • スマホでもARMで専用命令あり

[まとめ]

物理オレオレ証明書初めて見た...。

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

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

この続きはcodocで購入