web-dev-qa-db-ja.com

秘密鍵ファイルの失われたパスフレーズを回復することは可能ですか?

サーバーには公開鍵と秘密鍵のセットと証明書があります。問題は、パブリック暗号化が正常に機能しているときに、.keyファイルのパスフレーズが失われたことです。

したがって、次のコマンドを実行しようとすると、

openssl rsa -in the.key

それは明らかにパスフレーズを要求します。失われたパスフレーズを何らかの方法で取得することは可能ですか?

16
Alex Karshin

パスフレーズを持つことの全体のポイントは、それを知らない人をロックアウトすることです。回復を許可すると、原則に逆らって、証明書にアクセスしたハッカーが鍵を回復できるようになります。

いいえ、そのようなことはありません。

あなたがしなければならないことは、発行者が鍵を失ったものとして宣言し、証明書を失効させることです。次に、新しいものを最初から作成する必要があります。

43
M'vy

あなたの説明から、サーバーが現在キーを使用しているように聞こえます。これは、サーバーがパスフレーズを「知っている」ことを意味します。これが正しく、サーバーへの適切なアクセス権がある場合は、サーバーを抽出できるはずです。それをどのように行うかは、サーバーソフトウェアとは何か、そのセットアップ方法によって異なります。

例として、Apacheを実行していて、httpd.confファイルに次のようなものがあった場合:

SSLPassPhraseDialog exec:/etc/Apache2/getsslpassphrase

つまり、Apacheは/ etc/Apache2/getsslpassphraseを実行してパスフレーズを取得します。同じことができます:

Sudo /etc/Apache2/getsslpassphrase server.example.com:443 RSA

server.example.comキーのパスフレーズを出力する必要があります。

他のサーバーソフトウェア(または異なる構成オプションのApache)の場合は、詳細を指定する必要があります。

14
Gordon Davisson

状況によっては、秘密キーを新しいパスワードで回復できる場合があります。発行CAが秘密キーの回復をサポートする証明書を作成している必要があります。

これは通常、キーを使用して情報を暗号化する場合を除いて行われません。電子メールまたはファイルの暗号化に使用する場合。発行元のCAは、キーの回復が可能かどうかを通知でき、可能であれば新しいパスワードでキーを再作成するのに役立ちます。

11
Jenny D

私たちの現在の知識に関する限り、ブルートフォースしか利用できません。キーを作成した人に、パスフレーズを覚えてみてみてください。これが利用できない場合は、一般的なパスワードをパスフレーズ生成プログラムとして生成するクラッキングプログラムを試してください。

ただし、パスフレーズが適切に選択されていれば、キーを解読する可能性は最小限です。

別の見方を提供するために、私はそれが最も確かに可能だと思います。しかし、それはおそらくまったく実用的ではありません

プロセスはcrackingとして知られており、通常、ブルートフォース攻撃または辞書ベースの攻撃(おそらく、新しく検出されたアルゴリズムの弱点の助けとなる)が含まれます。ただし、使用するパスフレーズの複雑さやコンピューティング能力によっては、数分から数十億年かかる場合があります。

したがって、パスフレーズのほとんどの単語を覚えているか、それが非常に短く、暗号化されたデータがあなたにとって非常に重要であり、そうでなければ入手できない場合、試してみる価値があるかもしれません。そうでなければ、他の人が言うように、それはなくなった(もちろん、重要なアルゴリズムの弱点が次の年に公開されない限り)。

試してみる価値があると判断した場合のプロセス自体については、たとえば この質問 を参照してください。

3
Matija Nalis