2016-03-24 9 views
2

OpenSSLのRSAキーサイズ

openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048 

を私はバイナリ形式であるDER形式への鍵を輸出しました。キーは2kビット以上のウェイです。テストのために、公開鍵をDER形式にエクスポートしました。これは2kビットをわずかに上回ります。

質問には、2048ビットは何ですか?生成されたファイルから生のビットを取得するにはどうすればよいですか?

おかげで、 レフ

+0

ここで、生のビットを取得したいですか?どの言語やツールを使いたいですか? – user2807083

+0

Stack Overflowは、プログラミングおよび開発に関する質問のサイトです。この質問は、プログラミングや開発に関するものではないので、話題にはならないようです。ヘルプセンターの[ここではどのトピックを参照できますか](http://stackoverflow.com/help/on-topic)を参照してください。おそらく、[スーパーユーザー](http://superuser.com/)や[情報セキュリティスタックエクスチェンジ](http://security.stackexchange.com/)の方が良いかもしれません。また、[Dev Opsについての質問はどこに投稿しますか?](http://meta.stackexchange.com/q/134306)。 – jww

+0

私はこのキーをCPUのFLASHに書きたいと思っています。 CPUは、このキーを使用してメッセージの暗号化/復号化を行い、ワイヤレスインターフェイス経由で送信します。 – Lev

答えて

0

RSA鍵を使用して暗号化および復号化を行うには、モジュラス、プライベートおよびパブリック指数が必要です。

通常、カップル(モジュラス、公開指数)およびカップル(モジュラス、プライベート指数)を使用した復号を使用して暗号化が実行されます。

埋め込み型デバイスのようないくつかの実装では、公開指数はデフォルトでF4という数字に設定されています。これは0x10001または65537の小数です。

2048ビットのRSA鍵では、秘密指数は厳密に2048ビットであり、モジュラスでもあります。

あなたは、いくつかの文字列操作を行うことによって、バイナリ形式でプライベート指数を取得することができます:

openssl rsa -in key.der -inform der -text -noout | awk '/^[^ ]/{if($1 == "privateExponent:") {dump=1} else {dump=0}} /^ /{if(dump==1){gsub(":","");printf "%s", $1}}END{print ""}' | xxd -ps -r -c256 > pr_key.bin 

ます。また、awkコマンドで文字列を置換することによって、弾性を得ることができます。

2048ビットの秘密鍵を保存するには、4096ビット(512バイト)が必要です。公開鍵を格納するには、2048ビット(256バイト)が必要です。

+0

ありがとう、これは私が探していたものです。しかし、使用しているライブラリにはDER形式が必要であることが判明しました.DER形式は簡単に生成できます。立派な愚かな、そして騒音のために残念。 – Lev

0

EDIT 3月4日:私はそれを行うにはとても便利な方法を発見していない

。とにかく、あなたは次のことを試してみてください:

openssl rsa -in <yourfile> -noout -text

それはプライベートキーの詳細情報が表示されます。与えられた情報でキーを計算する方法についてはwikipediaをチェックしてください。

旧ソリューション(仕事なので、それを無視しません)自動化されたプロセスのためにか、単に教育目的のために

マニュアルアプローチ(あなたがLinuxユーザだと仮定した場合)、次のことができます:

  • 鍵ファイルのコピー

  • は、VI(M)を使用してPEMファイルを開いて作成し、最初と最後の行を削除し、改行を削除

  • (/ END PRIVATE KEYをBEGIN):

  • 保存(例:%sの/ \ N // g)をファイルを(base64では[your file name here] > [destination]を-d)

しかし、最も可能性の高いOpenSSLは、この目標を達成するためのより多くとても便利な方法を提供し

  • 今base64でデコードを提出

    EDIT 1:

    これは、pem/derがキーの他に追加の情報を格納する場合には間違っている可能性があります。

    EDIT 2:

    私はまだ秘密鍵を抽出する(あるいはあなたのやり方で1を生成する)理由を見たことがないほか。

    達成したい目標は何ですか?

  • +0

    * "改行を取り除く..." * - 前後のカプセル化ヘッダ( '----- BEGIN X -----'と '----- END)の改行を削除するとX ----- ')、キーが解析されず、*** PEM_read_bio:no start ...' ***エラーが発生する可能性があります。 – jww

    +0

    それで、最初のステップは鍵のコピーを作ることです;)ので、後で動作する正しいpemファイルがまだあります。 –

    +0

    これを行うと、DER形式を使用した場合と同じ結果になります。まだ2048ビットではありません。キーをMCUのメモリに保存したい。 – Lev

    関連する問題