Cryptographic Technology Interests
Current AES Code with Optional Support
for Intel AES NI and VIA ACE
My current AES code is available
here.
Code for AES and
Combined Encryption/Authentication
Modes
Here is C code for
AES and a number of the combined encryption/authentication modes being studied
by NIST. This code contains an earlier version of my AES code
but the modes source code should work with my current AES code (linked above).
Older C Code for AES and Rijndael
in C/C++
Here is my previous C/C++
code for AES and Rijndael (with full Rijndael support).
SHA1, SHA2, HMAC and Key Derivation
in C
Here is C code for these
algorithms.
A Password Based File Encryption
Example with AES and HMACSHA1
The code described and provided
here puts a number of the algorithms
available on these pages together to provide an example of password based
file encryption. This has been used by
WinZip as a basis for its standard
for the encryption of WinZip archives described
here.
The Advanced Encryption Standard
(AES) Development Effort
AES First Round
DES is arguably the most important cryptographic
algorithm that the world has seen. It is used in many products and has
stood the test of time in that after many years of international scrutiny
noone has found a significant attack on it.
However it is now widely recognised that DES is
near the end of its life and the US National Institute of Standards
and Technology (NIST) is running a far sighted effort to replace DES
with a new algorithm, the Advanced Encryption Standard (AES), selected
through competition. . This effort, which is described in more
detail here, has
been seeking algorithm nominations in a process that has now been completed.
The list of candidates that were successful in the first selection round
is now known and work is now underway to determine their cryptographic
strength and their performance.
I have no doubt that AES will replace DES as soon
as it is available and the competition now going on is of enormous significance
for the future of protective information security. All paper submissions
for AES are openly available from NIST but algorithm source code falls
within US export control constraints which limit the availability of
some implementations.
I am taking a strong interest in the AES activity
and, since my interests are in implementation, I have decided to see
what is involved in implementing a number of the AES candidate algorithms
from scratch using the paper descriptions rather than any published
source code as a basis. This will hopefully show that the paper
descriptions are sound whilst also providing an independent implementation
of at least some of the algorithms being submitted.
The results of this work are given
here
Here are papers I have written on a number
of aspects of the AES effort:
 AES Algorithm Performance Assessment
� gladman.pdf
(45.12KB, 46204 bytes)
 The Need for Multiple AES Winners
� winners.pdf (39.60KB,
40547 bytes)
 AES Input Output Conventions �
bit_order.pdf (65.72KB,
67295 bytes)
AES Second Round
In early August this year (1999) NIST
selected five algorithms � Mars, Rc6, Rijndael, Serpent and Twofish
the second round and invited extensive study of them. I have made
a start by doing some recoding to look at performance in both C and
C++ and the results are given here.
The AES Winner  Rijndael
RIjndael has been selected as the AES
algorithm and here is my code for the
algorithm in C++ .
Serpent
I have worked on Serpent, the AES candidate with UK
content, to improve its implementation performance using a boolean function
analyser. I have also worked with Sam Simpson to search for
for efficient decompositions of the Serpent Sboxes. Further details
of this work are here.
Back to Brian
Gladman's Home Page
