サーバーにSSH接続する際に「** WARNING: connection is not using a post-quantum key exchange algorithm.」という警告が表示されることがあります。これは主に、サーバー側が耐量子計算機暗号(PQC)の鍵交換アルゴリズムに対応していないために表示されるものです。そこで今回は、この警告の原因と対処方法をまとめてみました。
関連記事:PQC(耐量子計算機暗号)とは? 次世代暗号を5分で解説
原因
OpenSSH のクライアント側バージョンが 10.1 以降になり、接続先(サーバー側)が耐量子計算機暗号の鍵交換アルゴリズムに対応していない場合に、この警告が表示されるようになったことが原因です。
** This session may be vulnerable to "store now, decrypt later" attacks.
** The server may need to be upgraded. See https://openssh.com/pq.html
OpenSSH では、耐量子計算機暗号の鍵交換アルゴリズムとしてバージョン9.0で「sntrup761x25519-sha512」、バージョン9.9で「mlkem768x25519-sha256」がサポートされています。
対処方法
サーバー側で対応している鍵交換アルゴリズムを確認します。この一覧に「sntrup761x25519-sha512」や「mlkem768x25519-sha256」が含まれていれば、耐量子計算機暗号の鍵交換アルゴリズムに対応しています。
diffie-hellman-group1-sha1
diffie-hellman-group14-sha1
diffie-hellman-group14-sha256
diffie-hellman-group16-sha512
diffie-hellman-group18-sha512
diffie-hellman-group-exchange-sha1
diffie-hellman-group-exchange-sha256
ecdh-sha2-nistp256
ecdh-sha2-nistp384
ecdh-sha2-nistp521
curve25519-sha256
curve25519-sha256@libssh.org
sntrup761x25519-sha512
sntrup761x25519-sha512@openssh.com
mlkem768x25519-sha256
耐量子計算機暗号の鍵交換アルゴリズムに対応していない場合は、OpenSSH のアップデート、もしくはサーバーOSのアップデートを検討してください。
crypto-policies(RHEL系特有の仕組み)の確認
AlmaLinux や Rocky Linux など RHEL系サーバーOSは、crypto-policies という仕組みで、sshdで利用される鍵交換アルゴリズムが指定されています。
例えば、AlmaLinux 9.8 にインストールされている sshdは、「sntrup761x25519-sha512」と「mlkem768x25519-sha256」の鍵交換アルゴリズムに対応しているのですが、crypto-policies で利用される鍵交換アルゴリズムに指定されていないため「** WARNING: connection is not using a post-quantum key exchange algorithm.」警告が表示されてしまいます。
実際に有効になっている鍵交換アルゴリズム(デフォルト値も含めて実効値)を表示すると、「sntrup761x25519-sha512」と「mlkem768x25519-sha256」が含まれていないことが確認できると思います。
(略)
kexalgorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512
sshd の crypto-policies は、以下のファイルで設定されていますが、このファイルを直接編集することは推奨されません。 また、編集しても将来的に上書きされる可能性があります。
そのため、AlmaLinux 9.8 では「PQ」という、耐量子計算機暗号の鍵交換アルゴリズムを追加するためのポリシーモジュールが用意されていますのでこちらを利用します。
現在の crypto-policies を確認します。
DEFAULT
現在の crypto-policies に加えて PQ モジュールを有効化し、OSを再起動します。
$ sudo shutdown -r now
再起動後に実際に有効になっている鍵交換アルゴリズムを表示すると「mlkem768x25519-sha256」が含まれていることが確認できます。
kexalgorithms mlkem768x25519-sha256,curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512
おわりに
現在の鍵交換(ECDHなど)は、量子コンピュータで解読可能になる恐れがあります。攻撃者が今のうちに暗号化通信を記録しておき(Harvest Now)、将来量子コンピュータが実用化された時点で復号する(Decrypt Later)「HNDL攻撃(ハーベスト攻撃)」により、長期秘匿性が必要な通信内容が今後漏洩するリスクがあります。耐量子計算機暗号の鍵交換アルゴリズムはこれを防ぐための対策です。
SSH の WarnWeakCrypto クライアント側オプションを使用して、警告を非表示にすることもできますが、あくまで一時的な対策として、耐量子計算機暗号の鍵交換アルゴリズムに対応することをおすすめします。


コメント