Tenable ブログ
ブログ通知を受信するNessusの最新情報:SSHによる楕円曲線暗号化
暗号化は、システムの脆弱性を見つけてパッチを適用することに似ています。どちらも競争です。前者は数学者たちの間での競争であり、効率的で逆演算が難しい計算を見つけ出した数学者に対し、その難しい数値問題を解決した数学者が勝つことになります。後者は、ITと悪意のある攻撃者との間の競争です。悪意のある攻撃者は、最初に脆弱性を見つけて、その脆弱性を悪用しようとします。暗号化の競争は、ムーアの法則で説明されている計算能力の爆発的増大に伴い激化しており、私たちが使用するアルゴリズムは常に衰退へと追いやられています。
長い間、強力な暗号化において信頼できる基準は、2つの素数を乗算した結果を使用したスキームに基づいていました。
暗号化を解除するには、乗算すると元の値になる2つの素数を見つけなければなりません。これらの素数は、乗算された値の 整数因数 とも呼ばれます。1985年、Neal Koblitz氏とVictor Miller氏がそれぞれ独自に考案した暗号化は、いずれも離散対数 をランダムな 楕円曲線から見つける難しさをベースとしたものです。
この比較的新しい手法には、整数の因数分解よりも計算時間が短いという利点があります。また、サイズの小さい鍵を使用して、同じレベルのセキュリティを確保することもできます。
Koblitz氏とMiller氏の研究の成果は、楕円曲線暗号化(ECC)と呼ばれています。整数の因数分解における数体ふるいなどの数値的改善により、比較的サイズの大きい鍵を使用する従来のRSA形式のアルゴリズムは存続の危機にさらされ、演算の速さと鍵サイズの小ささにより、楕円曲線暗号化が魅力的な選択肢となっています。
数学的手法で整数を因数分解できる場合、あるいは楕円曲線の離散対数を見つけられる場合は、その手法を使用して秘密鍵を見つけ出し、暗号化を解除することが可能になります。将来的には、量子計算によって、ECCはRSAよりも大きな存続の危機にさらされることになるでしょう。その根拠は、Shorのアルゴリズムにあります。Shorのアルゴリズムは、効率的に離散対数を計算するための理論的量子計算手法です。同じくこれを競争で例えるとしたら、自動車がスーパーチャージャーを使用するようなものです。その一方で、ECCはRSAよりも安全な手法です。
Tenableでは最近、資格情報に基づくスキャンにおいて、SSHでECCアルゴリズムを使用できるようにするためのサポートを追加しました。これも、お客様が競争でトップの座を守るために利用できるツールです。
新しいアルゴリズム
楕円曲線の追加により、Diffie-Hellman鍵交換に対応する新しい3つのアルゴリズムが追加されたため、DHアルゴリズムは合計6つとなっています。
元のDHアルゴリズム |
現在のDHアルゴリズム |
|
|
新しい6つの署名アルゴリズムも追加され、署名アルゴリズムは合計13となっています。
元の署名アルゴリズム |
現在の署名アルゴリズム |
|
|
一般に、非対称暗号化(RSA、DSS、ECCなど)は、SSHで次の3つの役割を果たします。
- 鍵交換
- ホストに対するクライアントの認証
- クライアントに対するホストの認証
鍵交換は、共有シークレット(この場合は Diffie-Hellman) )を生成するプロセスの暗号化と、鍵交換メッセージの整合性を暗号論的に検証するプロセスの2つで使用されます。Nessus®を導入して、これらのプロセスに新しいアルゴリズムで対応するためには、スキャンターゲット上でSSHサーバーを構成して有効化し、対応する資格情報をスキャンポリシー内で設定すればよいだけです。
ECCによるスキャン
認証に新しいアルゴリズムを使用するには、スキャンポリシー内のSSH資格情報の設定を再構成する必要があるので、これについて簡単に触れていきます。
クライアントの認証
Nessusでは、暗号鍵を使用した2つの形式のクライアント認証をサポートしています。
- その1つは、公開鍵認証です。この場合、スキャナーごとに鍵のペアを生成し、各ペアの公開鍵をSSHサーバーに送信します。
- もう1つの形式は、証明書認証(CA)です。概念は公開鍵認証と同じですが、認証局の鍵(CA)によって各スキャナーの公開鍵に暗号化された署名が付けられるため、サーバー側での管理が容易になります。証明書認証の利点としては、特定のCAを信頼するようにサーバーを構成するだけで、そのCAによって署名された証明書を処理して任意のクライアントを認証できることが挙げられます。
公開鍵認証は、スキャナー独自の秘密鍵をSSH資格情報に追加するだけで使用できます。秘密鍵には公開鍵のコピーが含まれていて、この公開鍵だけが、認証のためにネットワークで送信されます。Nessusでは、認証メッセージが転送中に改ざんされていないことを確認するためにSSHサーバーが使用できるような形で、秘密鍵を使って認証メッセージに暗号化された署名を付けます。資格情報は、次のように構成します。
新しい資格情報認証方式を使用するには、スキャンターゲット用に、信頼されているCAの鍵ペアを作成します。そしてスキャナー用に作成した鍵ペアの公開鍵に、CAによる署名を付けます。OpenSSHを使用する際のコマンドは次のようになります。
ssh-keygen -s ca_user_key_ecdsa_521 -n user1,user2,user3 -I a_certificate_name ./ssh_user_ecdsa_521.pub
これにより、「ssh_user_ecdsa_521-cred.pub」という名前の証明書が生成されます。ここで、SSH資格情報には、証明書とスキャナーの秘密鍵の両方が必要になります。以下をご覧ください。
ホストの認証
さらに、Nessusは、非対称暗号化を使用することにより、SSHサーバーを認証することができます。これは既知ホスト検証とも呼ばれます。つまり、NessusによりSSHサーバーのIDが検証されます。ここでは役割が逆になっています。鍵ペアがスキャンターゲット上で生成され、Nessusは「既知ホスト」ファイルを使用してそれらを認識するように設定されています。各スキャンターゲットの公開鍵が、「既知ホスト」ファイルの中に、それぞれ別個の行として入れられます。このファイルは、SSH資格情報グローバル設定の一部としてアップロードされます。以下はその例です。
your-host.your.domain.com ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAHR4cqH8yZbXVOSPSdOBUhIkELzANlgWOkNcdWZrRq95lglrf1ILe5Q0jukTKgjt413ie0TTKsTYG1nwaFJxKdRqAFw1NAGJxz3eVaf/6SN3kadNtcyPIPy5SbCF++G6iqhN1TuXenoXjwspCn3yWdiXF5rDoR5dDCLSMjJgH9tQaFanQ==
your-host2.your.domain.com ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzODQAAABhBP20zV8o3Ui4xSM0+3R/VtozwyzJXeurOirgvK3jWifV3/Re9XU/ZUeSeZBgDBdsvSQ+ym+At6CNU5o2Q9jUhHVSYo5tzYrS/pvD2uDykvy9M2oGG9XdxvWh5CrEbQRA0g==
@revoked your-host3.your.domain.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLEPTqn+R5BsCTy8Qvq+Fga/pflGdeH0GHnksLlE65MiWOKWc4WvFuscS0wYVIWSLzrq3g+q739pz3j9HbgO10I="
証明書ベースの既知ホスト検証もサポートされています。Nessusスキャナーから信頼されるよう、CA鍵ペアが生成されます。各スキャンターゲットは、それぞれのホスト鍵の公開部分をスキャナーに送り、CAによって署名が付けられます。署名を受けた証明書はスキャンターゲットに返送され、プロトコル交換のホスト認証部分で使用されます。Nessusで使用される既知ホストファイルは、さらに単純なものになります。その内容は、CAの公開鍵を含んだ単一行です(下記参照)。
@cert-authority *.your.domain.com ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzODQAAABhBJCQqR5NFoGJ8olau6CR3eOg0QZau0H2a4Li+ABmIYVgPscd2VhjBWE3N6WbMiWVk9dCy8Ih+rV62tsA9XbzgzUX0fw+ICkMP0ZlD8ER9MtfRoK4a8hOiy8IoMxORarZaA==
終わりのない道のり:暗号化の研究はこれからも続きます
暗号化は複雑です。数学は奥が深く、暗号化を取り巻く法的・政治的な現実も同じく複雑です。
それでも当面の間は、ECCの使用が存続すると見込まれます。Shorのアルゴリズムでは、256ビットモジュールで楕円曲線をクラックするために、理論上、 2,330 量子ビット の量子コンピューターが必要です。文脈を考慮:昨年、IBMは17量子ビットを特徴とする量子CPUを発表し、さらに50量子ビットも視野に入れています。少なくともそれより大規模な量子コンピューターはそもそも不可能であろうと考える研究者が1人は存在しています。
IoTの出現により、近年では、さらに小さい鍵でより優れた保護を実現できるECCへの関心が高まってきました。ストレージに限界がある小さなデバイスでは、これは重要なメリットとなります。
とはいえ、ECCには多くの問題があり、素因数分解による暗号化に比べてセキュリティ上の欠陥が発生しやすいことが明らかになっています。バイナリー体上または素体上の楕円曲線など、特定の楕円曲線は退化します。また、その他の種類の退化曲線が存在することも推測されています。特にECCは、その基礎となるシステムの乱数生成ルーチンの質に依存しており、サイドチャネル攻撃に対して脆弱性があります。
つまり、これが結論というわけではなく、現在までにわかっていることを解説しているに過ぎません。Tenableでは、現在も暗号化を研究中であり、お客様に競争上トップの座を維持していただけるよう取り組んでいます。
関連記事
- Nessus