Sì, AES-NI accelera sia AES-128 che AES-256, e sì, c'è una differenza di prestazioni tra AES-128 e AES-256 con accelerazione hardware, secondo il software link :
On Ivy Bridge here are the raw numbers for both
Cyber-Block-Chaining (CBC) and XEX-based
tweaked-codebook mode with ciphertext
stealing (XTS) modes with both 128- and 256-bit keys.
Note that for XTS mode, only half the key is used,
so XTS-512 essentially utilizes a 256-bit key.
# Tests are approximate using memory only (no storage IO).
# Algorithm | Key | Encryption | Decryption
aes-cbc 128b 581.3 MiB/s 1961.8 MiB/s
aes-cbc 256b 431.4 MiB/s 1503.1 MiB/s
aes-xts 256b 1665.6 MiB/s 1642.3 MiB/s
aes-xts 512b 1318.3 MiB/s 1282.1 MiB/s
And for Haswell:
# Tests are approximate using memory only (no storage IO).
# Algorithm | Key | Encryption | Decryption
aes-cbc 128b 663.8 MiB/s 2486.8 MiB/s
aes-cbc 256b 493.9 MiB/s 2043.6 MiB/s
aes-xts 256b 2265.2 MiB/s 2261.1 MiB/s
aes-xts 512b 1778.0 MiB/s 1778.7 MiB/s
We made the following observations:
- For CBC encryption, we see a 40% improvement for 128-bit keys over 256-bit keys.
- For XTS encryption, we see a 30% improvement for 256-bit keys over 512-bit keys.
- For CBC decryption, we see a 20% improvement for 128-bit keys over 256-bit keys.
- For XTS decryption, we see a 30% improvement for 256-bit XTS keys over 512-bit keys.
Si noti che questa è la prestazione non elaborata dell'istruzione AES-NI. Nel mondo reale, l'I / O del disco o l'I / O di rete si verificano mentre i dati vengono crittografati / decodificati, il che influirebbe sulle prestazioni del mondo reale.
Inoltre, ritengo che i numeri di cui sopra siano per prestazioni single core, in implementazioni che utilizzano più core, persino AES-256 può facilmente saturare l'intera larghezza di banda I / O di un SSD e della maggior parte delle reti.
Come notato qui, però, assicurati di utilizzare la giusta modalità di concatenamento per il tuo scopo in realtà influisce sulla velocità di trasmissione molto più significativamente delle dimensioni della chiave.