Re: [Libaes-devel] Proposed API for libaes
Status: Pre-Alpha
Brought to you by:
nigel
|
From: Sandy H. <sa...@st...> - 2002-01-25 22:43:16
|
Nigel Metheringham wrote: > In general aes.h is getting less complex, and is losing its block size > dependancy. libaes is going to support the 3 main block sizes - 128, > 192 and 256 bits. Key sizes supported will be the same Those are all the sizes in the original Rijndael spec. That allows key and block sizes to vary independently over 128, 192, 256. However, AES as standardised is /not/ identical to that. See below. > - I am not > currently intending to do anything to support weird intermediate key > sizes (OK thats pejorative language, but are there any reasonable > requirements for intermediate keysizes especially as it really hits > efficiency at present). Why even consider it? Neither the original Rijndael nor the AES spec have those, and you aren't doing research on cipher variations. You're either implementing the cipher or providing a new interface for Brian Gladwin's code. Either way, you have no business adding things. > There will be 4 sets of function entries:- > aes_... - any block size handling code > aes128_... - 128 bit block size code > aes192_... - 192 bit block size code > aes256_... - 256 bit block size code > > Ideally all of the aes<nnn>_ entries will use a highly optimised version > of the code - assembler if we have it. I think even this complexity is unnecessary. The AES contest specified that all entries must use a 128-bit block size. All the evaluation of Rijndael (security and speed) during the AES process used that size, so much less is known about whether the other sizes might have security weaknesses. The AES standard is for a cipher with 128-bit block size, Rijndael minus the variable block size feature. Last time I looked, that was all Brian Gladwin's code supported as well. I think you should do only the one block size, unless someone can turn up a compelling reason that the others are quite useful. If you really want to do them all, then I think the names should be: aes 128-bit block #ifdef REST_OF_RIJNDAEL rijndael any block size rijndael_128blk 128-bit block rijndael_192blk 192-bit block rijndael_256blk 256-bit block #endif You cannot call it AES if it uses any block size other than 128. You need rijndeal_128blk, not just rijndael_128, to make it clear |