Cryptographic Technology Interests
Current AES Code with Optional Support
for 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 HMAC-SHA1
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 no-one 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 S-boxes. Further details of this
work are here.
Back to Brian Gladman's Home Page
|