5

ubuntu で openssl を使用して RSA と AES の速度をテストしようとしています。

次のコードを使用してテストしました。

echo -n "0123456789012345" > message.txt

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


for i in {1..1000}
do
    openssl rsautl -encrypt -inkey public.pem -pubin -in message.txt -out message_enc.txt
done

for i in {1..1000}
do
    openssl rsautl -decrypt -inkey private.pem -in message_enc.txt -out message_dec.txt
done

for i in {1..1000}
do
    openssl enc -e -aes-128-cbc -in message.txt -out aes.bin -K ddf -iv 345

done

結果:

$ time ./rsa_enc 
real    0m3.697s
user    0m1.308s
sys     0m0.680s

$ time ./rsa_dec
real    0m14.273s
user    0m3.172s
sys     0m0.696s

$ time ./aes

real    0m3.790s
user    0m1.408s
sys     0m0.500s

これは、RSA 暗号化が AES 暗号化よりも高速であることを示しています。

AES の方が速いのではないでしょうか? 私は何か間違ったことをしていますか?

ありがとう。

4

2 に答える 2

5

RSA と AES 暗号化の異なる目的に関する @jbtule の正しい指摘に加えて、ベンチマークの設計には根本的な欠陥があります。

ここで測定しているのは、RSA または AES 暗号化ルーチンだけではなく、これらのopensslコマンドの実行全体です。

外部プログラムの外部でタイマーを使用して、その機能の 1 つがどのように実行されているかを測定することは理にかなっていますが、そうすると、他のこと (コマンド ライン パラメーターの解析、適切な OpenSSL サブモジュールの検索、ファイルを開くなど) に費やす時間が必要になります。 、ファイルの読み取り) は、時限機能を実行するのに必要な時間と比較して無視できます。

ここでは、特にこのような短いテスト メッセージでは、明らかにそうではありません。

于 2013-02-01T13:58:32.513 に答える
2

とにかくどちらが速いかが重要なのはなぜですか。それらを同じものに使用することはできません。RSA は、ごく少量のデータしか暗号化できません。

ただし、一般に、RSAで大きなものを暗号化する必要がある場合は、ランダムなAESキーとaesを暗号化して平文を実行しますが、暗号化速度ではなくブロックサイズと復号化速度に基づくセキュリティ上の理由からです。

于 2013-02-01T13:46:56.703 に答える