ほとんどの非対称暗号システムの実装では、唯一保証されている事実は、公開鍵から秘密鍵を見つけることができないということです。逆に言えば、ほとんどの場合、秘密鍵から公開鍵を見つけるのは簡単です。
たとえば、RSA では、次の方法で秘密鍵から公開鍵を作成できます。
openssl rsa -in private.pem -pubout -out public.pem
誤解を招くのは用語です。「秘密鍵」は、理論について話しているのか、実際の実装について話しているのかに関係なく、2 つの異なる概念を指します。
- 理論上の秘密鍵は、 (e, n)と完全に対称な (数学的な) 関係を共有する(d, n)の対です。これらを比較する場合、一方から他方を計算することはできません。
- 実際の秘密鍵 (openssl の実装など) は、 (d, n)を含むファイルを参照しますが、速度をデコードするためのいくつかの重要な中間値も参照します。それに加えて、公開鍵eの理論的に「不明な」部分は、慣例により共通の値に固定されることがよくあります (これは
0x10001
デフォルトで openssl にあり、変更することはできますが、非常に具体的な値のみに固執することを強くお勧めします) 。 . したがって、秘密鍵から公開鍵(e, n)を推測することは、複数の理由から簡単です。