Botan 1.9.10: Constant time AES-128 using SSSE3, dynamic Engines
This new release adds a constant-time AES implementation using SSSE3. This code is based on public domain assembly written by Mike Hamburg and described in his CHES 2009 paper "Accelerating AES with Vector Permute Instructions". In addition to being constant time, it is also significantly faster than the table-based implementation on some processors. The current code has been tested with GCC 4.5, Visual C++ 2008, and Clang 2.8.
Support for dynamically loading Engine objects at runtime was also added. This will be especially useful for algorithm implementations which are in some way hardware dependent (for instance using CUDA). Currently only system that use dlopen-style dynamic linking are supported but a future release should also support Windows.
GCC 4.3 and later support new builtins for byte swapping values which work on a variety of processors. These builtins are now used when possible; this allows for fast byte swapping on platforms which were not previously supported (for instance ARM, PowerPC, and IA-64), and allows better scheduling on x86 processors as well.
This releases drops support for configuring the build with Python 2.4; Python 2.5 or later is now required. At this time, the only current distro that still ships with 2.4 is RedHat Enterprise 5, so this hopefully should not affect too many users.
The class previously named S2K has been renamed PBKDF. This matches the general terminology for algorithms which transform passphrases into keys; the old S2K naming is historical and due to the fact that the first such algorithm added to botan was the one used in PGP, which is called S2K; the algorithms included in PKCS #5, which use the somewhat more conventional PBKDF term, were not added until version 1.1.0.
A bug in 1.9.9 that prevented benchmarking of ECB-mode ciphers was fixed.
If you have 10 minutes, please fill out the user survey. Knowing what users think of the library, how they are using it, and what the trouble spots are will greatly help in terms of improving future releases.
Posted 2010/08/12 in releases; 5 comments
< 2010 User Survey | 1.8.10 released >
Hi,
As per my email, I'm especially interested in the TLS/SSL support.
Thanks,
Hany
Please make Python wrapper makeefiles available for VC++. Thanks.
C2D 2.2Gz, 16Mb source data
Botan SSSE3 AES128
SetKey: ( 0.000001 sec) 2'409 tics
Encode: ( 0.190040 sec) 419'077'021 tics 84.192871 Mb/s
Decode: ( 0.210981 sec) 465'256'605 tics 75.836210 Mb/s
Generic classic AES128
SetKey: ( 0.000001 sec) 1'991 tics
Encode: ( 0.131447 sec) 289'867'490 tics 121.722162 Mb/s
Decode: ( 0.131142 sec) 289'195'676 tics 122.004928 Mb/s
SSSE3 version is 31-39% slower. :(
@Cray
This is not surprising; the SSSE3 version makes heavy use of the byte shuffle operation pshufb. On the Core2, this operation has a very high latency. This is why I said 'on some processors'. On my Core i7, the SSSE3 version is about 75% faster than the table version, for instance.
2Jack Lloyd
Thanks for details.
I thought that C2D is 'new enough' :)
Looks like it's time to upgrade.