1

ワイヤレスおよびセンサー ネットワーク セキュリティ用の暗号化ソリューションを実装しています。したがって、この実装の 1 つのステップで、センサー ノードは CA の証明書を取得します。センサーは対称鍵を生成し、CA の公開鍵で暗号化して CA に送信することになっています。

証明書とキーの生成には openssl を使用します。私は、対称鍵に 128 ビット鍵の AES を使用することを考えました。当面の問題は、「データが大きすぎます」というエラーが発生するため、次のように128ビットデータを暗号化できないことです。

openssl rsautl -encrypt -inkey id_rsa.pub.pem -pubin -in key1.bin -out key1.bin.enc 

したがって、別の方法を使用して 128 ビット キーを暗号化する必要があるか、センサー ネットワーク環境では問題にならない小さなキーを使用する必要があるようです。

私の質問は、「より小さなキーを使用した対称キー暗号化はありますか、または証明書を直接使用して 128 ビット キーを暗号化する方法はありますか」です。

PS

これが私が鍵を生成する方法です。

openssl genrsa -out mykey.pem 1024
openssl rsa -in mykey.pem -pubout > mykey.pub
openssl rand 128 > key1.bin

ありがとうございました

4

1 に答える 1

1

openssl rsautl ドキュメントページから:

rsautl は RSA アルゴリズムを直接使用するため、小さなデータの署名または検証にのみ使用できます。

したがって、大量のデータを RSA キーで暗号化できるとは期待しないでください。

ただし、RSAアルゴリズムは、提案していることを正確に行うために頻繁に使用されます... AESキーを暗号化し、それを使用してより大きなファイルを暗号化します。

公開鍵のサイズまで (ほぼ) 暗号化できるはずです。ここで何かが間違っているようです。公開鍵のサイズが 2048 ビット (256 バイト) の場合、質問と同じ openssl コマンドを使用して 1960 ビット (245 バイト) のファイルを暗号化できます。1024 ビットの公開鍵の場合、936 ビット (117 バイト) を暗号化できます。

それでは、これらの項目をチェックして、問題が見つかるかどうかを確認しましょう。

まず、あなたの RSA 公開鍵の大きさは? (ビットとバイトを混同しないように注意してください。) 1024 ビット以上である必要があります。

次に、AES キーの大きさは? (繰り返しますが、ビットとバイトを必ず確認してください。)質問によると、128ビットである必要があります。

両方のキーのサイズが正しければ、AES キーを RSA キーで暗号化しても問題はありません。

于 2013-08-13T02:52:21.940 に答える