web-dev-qa-db-ja.com

すでに生成された番号を持つRSA公開鍵と秘密鍵のペアを作成します

正しい構文で動作するRSAキーペアを生成するの方法を知りたい。 (512bitキーに対してmy numbersがすでに何らかの方法で生成されているとしましょう。

e = 065537

d = 2a3ff2f501835d7d0f7ccad34265525b0c91f800fc252324e4bb5668392ba55a65d812d658b7065725c259a12115918dbdbbea6cead9225a91c3fcc6b43f1cb

m = 4bb26cf2e1e1cdbbf78f89a60d5af5cf094a7216f9fe2d0e2288dc14e6005e0b6de46dc38f0e92b8b3281e9f1cf87257fb54bff579907e8a3c114133b74cb815

これから適切なキーペアをどのように生成できますか?それを自動化するジェネレーターはどこにありますか?私にとって最善の解決策は、ここで機能するJavaScriptでそのキーペアを生成することです https://www.pidder.com/pidcrypt/?page=demo_rsa-encryption pidcryptを使用します。

7
magnac

RSAキーペアは次のもので構成されます。

  • モジュラスn、2つの大きな素数整数の積に等しい大きな整数、pq
  • 公開指数e
  • プライベート指数ddは、ed = 1 when moduloの場合) p-1、およびモジュロq-1を使用した場合。
  • 最初の因子p
  • 2番目の要素q
  • dp = d modp-1
  • dq = d modq-1.
  • q '= q-1modp

公開キーには、neのみが含まれています。

秘密鍵には、上記で指定したすべての値が含まれています。 厳密なsensundのみが、機能的なRSA実装に必要です、しかし、他の値はより高速な操作と「マスキング」(サイドチャネルリークに対する保護)を可能にするため、 RSA標準 は、秘密鍵にすべての値が含まれることを定義します( 付録A.1 )。

あなたが持っている値から、あなたの "m"が実際にRSAモジュラスであると仮定すると、他の値は少し努力して再計算できます(1秒未満のCPUですが、私が気にかけるよりも多くの人間の時間)。これらすべての値から、標準に準拠したRSA公開鍵と秘密鍵をエンコードできます。ただし、これには ASN.1 の知識が必要です。最後に、512ビットのRSA鍵は脆弱です。少なくとも1024ビット、できればそれ以上を使用してください(2048ビットで十分です)。一部のRSA実装は、1024ビットより短いRSAキーでの動作を拒否します。

ボトムライン:自分でキーを生成しないでください。 OpenSSL を使用します。コマンドラインツールで:

openssl genrsa -out rsakey.pem 2048

すべての適切なエンコーディングで2048ビットのRSA秘密鍵を生成します。次にこれ:

openssl rsa -in rsakey.pem -pubout

公開キーを出力し、エンコードが完了した状態で再び出力します。

9
Thomas Pornin