セキュリティ

計算エラーの発生時にSSHの秘密鍵が盗み取られる危険があることを研究者が実証


SSHは暗号や認証技術を利用して安全にリモートコンピュータと通信するためのプロトコルですが、その通信の開始時に行うRSA署名の際に計算エラーが発生するとSSH秘密鍵が解析されてしまうことが実証されました。

(PDF)Passive SSH Key Compromise via Lattices
https://eprint.iacr.org/2023/1711.pdf


In a first, cryptographic keys protecting SSH connections stolen in new attack | Ars Technica
https://arstechnica.com/security/2023/11/hackers-can-steal-ssh-cryptographic-keys-in-new-cutting-edge-attack/


SSHでは接続時にユーザーが「署名」を作成し、サーバーが署名を検証することで正しいユーザーかどうかを確かめています。その署名作成のアルゴリズムとしてRSAを採用しており、署名の作成時に計算エラーが発生した場合に秘密鍵が盗み取られてしまうとのこと。

RSA署名の実装では計算コストがかかる演算を2つの小さな演算に分割するという一般化が行われていますが、2つの演算のうち一方がハードウェア障害やオーバーフローなどのバグによって1bitでも正しくない結果を返した場合に秘密鍵を解析可能な署名が生成される可能性が発生します。

論文では実際に、公共のインターネットスキャンによって過去7年間にわたって収集されたSSHの通信データを解析しました。データに含まれていた約32億件の署名のうち、約12億件がRSA暗号方式での署名で、その0.048%にあたる59万件がエラーのある署名でした。


この59万件に対して今回の攻撃を適用したところ、4962件の秘密鍵を取り出すことができたとのこと。多くのホストがSSH鍵を共有していたり、複数回署名を作成したりしていたためユニークな秘密鍵の数は189個にとどまったと述べられています。

基本的な攻撃のしくみはRSAを採用している通信に共通して適用可能で、2015年にはTLSへの攻撃が実証されていました。今回の論文ではこの攻撃の手法をSSHへ拡張した形となります。

今回の脆弱(ぜいじゃく)性へは署名の送信前に一度正しく署名が生成されているかどうかを確認するだけで対応できるとされており、例えばLinuxに統合されているSSHソフトウェアのOpenSSHは1999年の公開当初から対策済みとなっています。一方、署名のバージョン情報を元にどのSSHソフトウェアが問題のある署名を作成したのかを調べたところ、下図の通り「Zyxel」が最も多く、そのほか「SSHD」「Mocana」「Cisco」でも問題が確認されました。


今回の論文の筆頭著者であるキーガン・ライアン氏は「メモリが1bit反転するだけで秘密鍵が暴露される危険が発生するため、エラーを検出して抑制する対策が100%の精度で機能することが重要だ」と述べています。

この記事のタイトルとURLをコピーする

・関連記事
SSHの公開鍵暗号には「RSA」「DSA」「ECDSA」「EdDSA」のどれを使えばよいのか? - GIGAZINE

OpenSSLで史上2度目の「致命的」レベルの脆弱性が発見される、2022年11月1日夜間に修正版がリリースされるため即更新を - GIGAZINE

混乱しがちな「SSHトンネルの確立方法」をイメージ図とセットでまとめたコマンド集 - GIGAZINE

SSHのポート番号が「22」に決まった経緯を開発者のTatu Ylonen氏が公開 - GIGAZINE

開発者たちが慣れ親しんだ「scp」コマンドはなぜ「時代遅れで柔軟性がなくすぐに修正できない」のか? - GIGAZINE

in セキュリティ, Posted by log1d_ts

You can read the machine translated English article here.