RHEL10とDebian13のApacheでPQ (Post Quantum)対応のためハイブリッド鍵交換しようとしたら既に使われていた件

こんにちは。tukapiyoです。
かなり長いタイトルですが、結論はそういうことです。

最近至る所で耐量子計算機暗号だったり、PQ(Post Quantum)対応、PQC(Post Quantum Cryptography)みたいなキーワードを聞くので、うちのサーバも対応させておこうと思いました。
色々試してみたのですが微妙に情報が古かったのか、特に特別な対応しなくてもPQ対応ができていたことが分かりました。
なので対応できていることを確認する方法をまとめておきます。

背景

具体的にやろうとしていたことは、ApacheのTLS通信で、鍵交換部分をPQ対応させるというものです。
現在のところ鍵交換がPQ対応できていればよい(HNDL(Harvest Now、Decrypt Later)攻撃に対策できる)ということのようで、証明書の署名や共通鍵暗号の部分のPQ対応はまだ先という状況です。
証明書の署名については、そもそもPQ対応している商用認証局はまだないようですし、Let’s EncryptがPQ対応の計画を発表したという記事がありましたね。

ということでハイブリッド鍵交換に対応させてみようということです。

PQ対応

手順を試してみるが…

実際の対応に先駆けて、さまざまな記事を確認していたのですが、例えば以下の記事でAlma Linux 10(RHEL10互換)ではcrypto-policies-pq-previewパッケージをインストールして、PQ対応のサブポリシー(TEST-PQ)を設定するというのが手順でした。

ところがやってみると記事にあるような結果になりません。具体的には、

  • そもそもcrypto-policies-pq-previewパッケージは存在せず、crypto-policiesパッケージに含まれていそう
  • TEST-PQサブポリシーを有効化しても、ハイブリッド鍵交換とは関係ないとは思いますがopensslsignature-algorithmoqsproviderのキーワードが出てこない

という状況です。

デフォルトでPQ対応が始まっていた…

調べてみると、どうやらRHEL10.1からデフォルトでPQCが有効になったり、TEST-PQサブポリシーの扱いが変わっていることが分かりました。

ということで、実際に鍵交換でPQ対応ができているかどうかは以下のコマンドで確認ができます。

$ cat /etc/crypto-policies/state/CURRENT.pol | grep key_exchange
key_exchange = KEM-ECDH ECDHE DHE DHE-RSA PSK DHE-PSK ECDHE-PSK RSA-PSK ECDHE-GSS DHE-GSS
key_exchange@nss-smime = RSA DH ECDH

key_exchange行にKEM-ECDHが含まれていれば、鍵交換でPQ対応(ハイブリッド鍵交換)ができているということです。

HTTPS(TLS)通信でハイブリッド鍵交換ができていることを確認

opensslのs_clientで確認

$ openssl s_client -connect www2.filewo.net:443 -tls1_3 | grep "Negotiated TLS1.3 group"
Connecting to 2001:19f0:7002:f75:5400:2ff:fe92:1a3a
depth=2 C=US, O=Internet Security Research Group, CN=ISRG Root X1
verify return:1
depth=1 C=US, O=Let's Encrypt, CN=E7
verify return:1
depth=0 CN=filewo.net
verify return:1
Negotiated TLS1.3 group: X25519MLKEM768

Negotiated TLS1.3 groupX25519MLKEM768と表示されていれば、ハイブリッド鍵交換できています。

ブラウザ(Firefox)で確認

鍵共有グループにmlkem768x25519と表示されていれば、ハイブリッド鍵交換ができています。

おすすめ

コメントを残す