Ich versuche, die Geschwindigkeit von RSA und AES mit openssl in Ubuntu zu testen.
Ich habe den folgenden Code verwendet, um es zu testen.
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
Ergebnisse:
$ 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
Es zeigt, dass die RSA-Verschlüsselung schneller ist als die AES-Verschlüsselung.
Sollte AES nicht schneller sein? Mache ich etwas falsch?
Vielen Dank.
Antworten:
5 für die Antwort № 1Neben dem korrekten Standpunkt von @jbtule zu den verschiedenen Zwecken der RSA- und AES-Verschlüsselung ist etwas grundlegend fehlerhaft bei der Gestaltung Ihres Benchmarks.
Was Sie hier messen, ist nicht nur eine RSA- oder AES-Verschlüsselungsroutine, sondern deren Ausführung openssl
Befehle.
Es kann zwar sinnvoll sein, Timer außerhalb zu verwendenWenn Ihr externes Programm die Leistung einer seiner Funktionen misst, erfordert dies Zeitaufwand für andere Aufgaben (z. B. das Parsen der Befehlszeilenparameter, das Finden des richtigen OpenSSL-Submoduls, das Öffnen der Datei, das Lesen der Datei), um vernachlässigbar zu sein mit der Zeit, die zur Ausführung der zeitgesteuerten Funktion erforderlich ist.
Dies ist hier insbesondere bei einer so kurzen Testmeldung eindeutig nicht der Fall.
3 für die Antwort № 2
Warum spielt es eine Rolle, welche schneller ist? Sie können sie wirklich nicht für dasselbe verwenden. RSA kann nur eine verschlüsseln sehr kleine Datenmenge.
Aber im Allgemeinen, wenn Sie etwas verschlüsseln müssenMit RSA verwenden Sie eine große Zahl, mit der Sie einen zufälligen AES-Schlüssel und einen AES-Schlüssel für Ihren Klartext verschlüsseln können. Es ist jedoch aus Sicherheitsgründen mehr auf die Blockgröße und die Entschlüsselungsgeschwindigkeit als auf die Verschlüsselungsgeschwindigkeit zurückzuführen.