Snažím sa otestovať rýchlosť RSA a AES s openssl v ubuntu.
Použil som nasledujúci kód na otestovanie.
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
výsledky:
$ 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
Ukazuje, že šifrovanie RSA je rýchlejšie ako šifrovanie AES.
AES by nemala byť rýchlejšia? Robím niečo nesprávne?
Vďaka.
odpovede:
5 pre odpoveď č. 1Okrem správneho bodu o správnosti rôznych účelov týkajúcich sa šifrovania RSA a AES, je v návrhu vášho benchmarku niečo zásadne chybné.
To, čo merate tu, nie je len rutina RSA alebo AES šifrovania, ale celá realizácia týchto openssl
príkazy.
Zatiaľ čo môže mať zmysel používať časovače vonkuváš externý program na meranie toho, ako funguje jedna z jeho funkcií, vyžaduje to, že čas strávený vykonávaním iných vecí (napríklad parsovanie parametrov príkazového riadku, nájdenie správneho podmodulu OpenSSL, otvorenie súboru, čítanie súboru) je zanedbateľné v porovnaní s časom potrebným na vykonanie časovanej funkcie.
Tu to jednoznačne nie je, najmä s takýmto krátkym testovacím posolstvom.
3 pre odpoveď č. 2
Prečo záleží na tom, ktorý z nich je rýchlejší. Naozaj ich nemôžete použiť na rovnakú vec. RSA môže iba šifrovať a veľmi malé množstvo údajov.
Ale všeobecne, ak potrebujete šifrovať niečoveľký s RSA používate to šifrovať náhodný AES kľúč a AES robiť svoj plaintext, ale to je viac z bezpečnostných dôvodov na základe veľkosti bloku a rýchlosť dešifrovania skôr šifrovacie rýchlosti.