Prestandatester av hashfunktioner

Den senaste tiden har jag tittat en del på prestanda och beteende hos olika kryptografiska hashfunktioner. OpenSSL innehåller funktioner och kommandon (kommandot speed) för att utföra prestandatester på den plattform dom körs. Maskinen jag kör på är utrustad med en 2.7 GHz Intel Core i7 och kör ett 64-bitars operativsystem. Den testade versionen av OpenSSL är 0.9.8r. När jag testar på min huvudmaskin får jag följande resultat:

Resultat från prestandatest av OpenSSL

Resultat från prestandatest av OpenSSL

Som förväntat är MD5 snabbast, tätt följt av SHA-1. Men en sak värd att lägga märke till är prestandan för SHA-2-funktionerna SHA-256 och SHA-512. För alla andra testfall än 16 Bytes data är SHA-512 snabbare. Detta kan tyckas underligt, om man tänker sig att göra avvägning mellan prestanda och säkerhet – att SHA-512 ger högre säkerhet till priset av prestanda. SHA-512 utför även 80 iterationer för att bearbeta ett datablock, och SHA-256 bara 64 iterationer. Men SHA-512 använder 64-bitarsoperationer och arbetar på större block än SHA-256 – 128 Bytes kontra 64 Bytes. Detta gör att SHA-512 på en maskin som min blir effektivare.

NIST, organisationen som specificerat SHA-2 (och SHA-1 samt arbetar med att ta fram SHA-3) har insett detta och presenterade i början av 2011 en ny version av specifikationen FIPS 180. Detta dokument specificerar SHA-1 och SHA-2. I den nya versionen finns det två nya funktioner – SHA-512/224 och SHA-512/256. Precis som SHA-384 är dessa funktioner SHA-512, men där det genererade hashvärdet kapas av till den bitstorlek som önskas. Använder du SHA-256 och har prestandaproblem kan det därför vara värt att titta SHA-512/256 på dessa funktioner.

Notera att SHA-384, SHA-512/224 och SHA-512/256 inte är exakt samma funktion som SHA-512. Det som skiljer är initialvärdena i interntillståndet. Dvs att implementera SHA-512/256 kräver lite mer än att köra med SHA-512 och kasta bort den högra halvan av hashvärdet. Koden i implementationen måste ändras, om än i liten grad.

För den som vill titta närmare på prestandan hos många olika hashfunktioner inklusive finalisterna i SHA-3-tävlingen finns det massor med data hos EU-projektet eBASH.

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *

Följande HTML-taggar och attribut är tillåtna: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>