62

さまざまな資料を読んで少しでも理解できるように、公開鍵と秘密鍵のペアは非対称暗号化の基礎であり、2 つの素数 (おおよその秘密鍵) の選択とそれらの乗算 (おおよその公開鍵) に関するものでもあります。秘密鍵を知っていれば、公開鍵を生成できるようです。それは正しいですか、それとも何か間違っていますか?

私をさらに混乱させたのは、(.NET クラスの RSACryptoServiceProvider を使用して) 秘密鍵のみを使用して RSA キーを XML にシリアライズできないことでした。この制限が意図的なものかどうかはわかりません!

4

10 に答える 10

55

ほとんどの非対称暗号システムの実装では、唯一保証されている事実は、公開鍵から秘密鍵を見つけることができないということです。逆に言えば、ほとんどの場合、秘密鍵から公開鍵を見つけるのは簡単です。

たとえば、RSA では、次の方法で秘密鍵から公開鍵を作成できます。

openssl rsa -in private.pem -pubout -out public.pem

誤解を招くのは用語です。「秘密鍵」は、理論について話しているのか、実際の実装について話しているのかに関係なく、2 つの異なる概念を指します。

  • 理論上の秘密鍵は、 (e, n)と完全に対称な (数学的な) 関係を共有する(d, n)の対です。これらを比較する場合、一方から他方を計算することはできません。
  • 実際の秘密鍵 (openssl の実装など) は、 (d, n)を含むファイルを参照しますが、速度をデコードするためのいくつかの重要な中間値も参照します。それに加えて、公開鍵eの理論的に「不明な」部分は、慣例により共通の値に固定されることがよくあります (これは0x10001デフォルトで openssl にあり、変更することはできますが、非常に具体的な値のみに固執することを強くお勧めします) 。 . したがって、秘密鍵から公開鍵(e, n)を推測することは、複数の理由から簡単です。
于 2009-09-03T12:22:13.717 に答える
41

それは暗号システムに依存します。

RSAには、次のものがあります (ウィキペディアを引用)。

公開鍵は、係数 n と公開 (または暗号化) 指数 e で構成されます。秘密鍵は、法 n と、秘密にしておく必要がある秘密 (または復号化) 指数 d で構成されます。

n と d (秘密鍵) がある場合、公開鍵の e だけが不足しています。しかし、多くの場合、e はかなり小さい (3 桁未満) か、固定されています (一般的な値は 65537 です)。このような場合、公開鍵を取得するのは簡単です。

楕円曲線 Diffie-Hellmanの場合、秘密鍵は d であり、公開鍵は dG (G も公開) であるため、これも自明です。

于 2009-03-30T09:22:48.670 に答える
9

アルゴリズムと、「秘密鍵」の意味によって異なります。

RSA 秘密鍵は、多くの場合、「中国剰余定理」形式で格納されます。たとえば、RSAPrivateKeyPKCS #1 で定義され、他の多くの暗号標準で再利用される構造は、この形式をとります。この形式には、しばしば と で示される 2 つの秘密の数が含まれてpおりq、そこから totient が計算されます。totient とプライベート指数を使用すると、パブリック指数がすばやく計算されます。

いずれにせよ、ほとんどの RSA キー ペアは公開指数として 65537 を使用し、モジュラスは常に秘密キーの一部として運ばれます。

于 2009-04-02T22:57:56.277 に答える
6

公開鍵暗号システムでは、公開鍵は数学的に秘密鍵に関連付けられています。とても簡単です。

公開鍵は生成時に秘密鍵から導出され、将来の任意の時点で秘密鍵を使用して公開鍵を簡単に再導出することができます。

他の方法で行くことは現実的ではありません。公開鍵が与えられた場合、秘密鍵を導出するのは容易ではありません。そのため、公開鍵を他の人と安全に共有できます。十分な時間/CPU サイクルがあれば、力ずくで攻撃することもできますが、キーに対する数学的攻撃を待つ方がおそらく簡単です。

于 2009-03-30T09:27:18.940 に答える
3

OpenSSH およびssh-keygenの特定のケースでは、はい、次のことができます

ssh-keygen -y

このオプションは、秘密の OpenSSH 形式のファイルを読み取り、公開鍵を stdout に出力します。


一般に、アルゴリズムと、秘密鍵に何をラベル付けするかによって異なります。ただし、適切な実装では、シークレット ファイルに完全な情報 (公開鍵と秘密鍵) が含まれます。

于 2012-08-21T14:40:33.650 に答える
0

はい、秘密鍵にアクセスして公開鍵を生成できます

于 2009-03-30T08:59:04.640 に答える
0

公開鍵はモジュラス N (および公開指数 e、通常は 65537) であり、秘密鍵は 2 つの素数 p、q (および秘密指数 d、場合によっては高速化のための CRT 部分 d_p、d_q) によって与えられます。d=1 mod ((p-1) (q-1))、与えられた秘密鍵を使用して CRT を使用して d_p と d_q を計算することもできます。公開鍵のモジュラスの計算は「退屈な」乗算であり、公開指数は仕様にあるか、拡張を使用して計算されます。標準 e が十分でない場合は、euclid アルゴリズム。公開鍵が与えられた場合、秘密鍵の計算には、d (RSA 問題) または p,q (因数分解、これを行うための最適なアルゴリズムについては数値フィールドふるいを参照) のいずれかを見つける必要があります。これらの問題は、合理的な条件下で同等であることが示されています [Breaking RSA Generically is Equivalent to Factoring, D. Aggarwal and U. Maurer, 2008]

于 2016-01-25T15:44:39.630 に答える
-3

理論的には可能ですが、大きなキーの場合、計算上実行不可能です。

于 2009-03-30T08:58:41.753 に答える