質問

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

[編集]

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

役に立ちましたか?

解決

それは暗号化システムによって異なります。

RSA, 、(Wikipediaを引用)次のようになります。

公開キーは、法 n と公開 (または暗号化) 指数 e で構成されます。秘密鍵は、弾性率nと秘密にしなければならないプライベート(または復号化)指数Dで構成されています。

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

のために 楕円曲線 ディフィー・ヘルマン, 、秘密鍵は d、公開鍵は dG (G も公開) なので、これも自明です。

他のヒント

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

たとえば、RSA では、次のようにして秘密鍵から公開鍵を作成できます。

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

誤解を招きやすいのは次のような用語です。「秘密キー」は、理論について話している場合でも、実際の実装について話している場合でも、2 つの異なる概念を指します。

  • 理論的 秘密鍵はカップルです (d,n) と完全な対称 (数学的) 関係を共有します。 (e、n). 。これらを比較する場合、一方を他方から計算することはできません。
  • 実用的 秘密キー (openssl 実装など) は、次の内容を含むファイルを指します。 (d,n) デコード速度を目的としたいくつかの重要な中間値も含まれます。それに加えて、公開鍵の理論的には「不明」な部分 e 多くの場合、慣例により共通の値に固定されます (つまり、 0x10001 openssl のデフォルトでは、変更可能ではありますが、のみに固執することを強くお勧めします。 非常に具体的な値)。したがって、公開鍵を推測すると、 (e、n) 秘密キーからの情報の取得は、複数の理由から簡単ではありません。

これは、アルゴリズムに依存し、あなたが「秘密鍵」によって何を意味しますか。

RSA秘密鍵は、多くの場合、彼らの「中国の剰余定理」形式で保存されます。例えば、RSAPrivateKey構造は、PKCS#1で定義され、他の多くの暗号規格で再使用されるこの形を取ります。この形式はトーティエントが計算された2つの秘密の数字が多い示さpqを、含まれています。トーティエントと民間指数では、公開指数が急速に計算されます。

いずれにせよ、ほとんどのRSA鍵ペアは、公開指数として65537を使用し、弾性率は常に、秘密鍵の一部として行われます。

ANY公開鍵暗号システムでは、公開鍵、秘密鍵と数学的に関連しています。それは非常に簡単です。

公開鍵が生成時に秘密鍵から導出され、将来の任意の時点で秘密鍵で、それは簡単に再派生公開鍵することも可能です。

他の道を行くことは不可能です。公開鍵を考えると、秘密鍵を導出することは容易ではありません。私たちが安全に他の人と公開鍵を共有することができた理由です。あなたは十分な時間/ CPUサイクルを持っている場合、あなたはそれをブルートフォースでしたが、それはキーの数学的な攻撃を待つ方が簡単でしょう。

のOpenSSHと SSH-keygenは、特定の場合にはに、をはいすることができます

  

のssh-keygenは-y

     

このオプションは、民間のOpenSSH形式のファイルを読み込み、標準出力への公開鍵を表示します。

<時間>

一般的には、アルゴリズムに依存しますが、秘密鍵をラベル付けするもの。しかし、任意の賢明な実装では、秘密のファイルに完全な情報(公開鍵と秘密鍵)が含まれます。

秘密鍵が何であるかの誤解があります。秘密鍵が唯一のことを考えると、単に(D、N)のペアであり、あなたが公開指数が65537であると仮定することができない限り、ほとんどすべてのRSAキーのケースである、それから公開鍵を生成するために実行不可能です。

場合は、何らかの理由で、公開指数は、あなたがプライベート1から公開鍵を作成することはできませんより多くのです。

、PEMファイルに「秘密鍵」として格納された値がちょうど秘密鍵ではなく、また、(とりわけ)素因数を含んでおり、それゆえ、それはそれから公開鍵を生成するのは簡単です。言ったこと

はい、公開鍵を生成することができた秘密鍵へのアクセス権を持つ

の公開鍵は、モジュラスN(および公開指数e、通常65537)であり、 秘密鍵は(時にはCRT部品は高速化のために、d_qをD_Pおよび秘密指数d)は、2つの素数p、qで与えられます。 本質的に、あなたがN = PQおよびe D = 1つのMOD((P-1)(Q-1))、あなたもD_Pを計算し、CRTを使用することができるd_q有します 与えられた秘密鍵、公開鍵係数の計算は、「退屈」の乗算と公開指数は仕様であるか、標準の電子が十分でなかった場合は、拡張ユークリッドアルゴリズムを使用して計算しました。 公開鍵与えられ、秘密鍵の計算は、D(RSA問題)またはp、qは(ファクタリング、これを行うための最善のアルゴために数体ふるいを参照)を求めるのいずれかが必要です。これらの問題は、合理的な条件の下で同等であることが示されている[壊すRSA総称的には、ファクタリングに相当し、D.アガルワルとU.マウラー、2008]

これは、理論的には可能であるが、大きな鍵の計算上不可能ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top