Header Fields

Headers on ciphertext files are sometimes present. Those digital data fields may contain useful information like the algorithm name, mode, initialization fields, and key. Usually the key is not included in the header. A hash or message authentication code (MAC) may be concatenated on the block of ciphertext.

OpenSSL does not put header fields on ciphertext files for its AES functions. It does pad plaintext so each block is 128 bits long. OpenSSL is now (July 7, 2010) installed at Popular Cryptography Magazine's offices to use AES to encrypt essays. To get OpenSSL, first install a Microsoft program from
http://www.microsoft.com/downloads/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&displaylang=en
file is called vcredist_x86.exe 1.7 megabytes, (Visual C++ Redistributables program)

Second install the OpenSSL executable from
http://www.slproweb.com/products/Win32OpenSSL.html
Win32OpenSSLv0.9.8o_Light.exe

______________________________________________________

Old Notes from June, 2010:
Popular Cryptography Magazine is investigating why its AES software adds 16 bytes to every ciphertext file encrypted. For example, a 128 bit binary block was written in a binary mode file using Perl. The file size is 16 bytes. After encryption, the file size is 32 bytes. The software that produced the ciphertext is called Perfect File Encryption with AES, and called Perfect-AES-Rijndael Pro with Key Generation sold by Cosmi in 2004, version 1.3 Pro, Copyright 2000 Sublimated Software Inc.

Plan of Action
Plan to investigate aes header added to ciphertext 7/3/2010

Test 1: Program hextobin128.pl takes 32 hex digits (256 bits of ascii, 32 bytes) and writes binary file of 128 bits (16 bytes). The aes ciphertext of the 128 bit input is known to grow to 256 bits. Program bintohex256.pl takes the 32 byte ciphertext and writes ascii text of hex codes for that binary ciphertext. That file has 64 hex codes using a file size of 64 bytes (512 bits) when examining that last file, the header might be seen.
Plaintext file is binary128.dat, ciphertext is binary256.aes, ascii result is

in hex512.txt

test vectors :

COUNT = 0
KEY = 00000000000000000000000000000000
PLAINTEXT = 80000000000000000000000000000000 into hex32.txt
CIPHERTEXT expected = 3ad78e726c1ec02b7ebfe92b23d9ec34

Actual result IS TWO BLOCKS LONG! b37dcac9488dd1cbb51010cd56a783bd0318e084e1666e699891c78f8aa98960 in binary256.aes

decrypt binary256.aes to hex512_decrypted.txt plaintext
convert that binary plaintext to ascii plaintext with program bintohex128.pl
80000000000000000000000000000000 is correct.
But Why is the size doubled during encryption? Header fields? MAC (Message Authentication Code)? Assume that a MAC is 128 bits of the 256 bit output from the AES software, cut the string in half and evaluate each half.

____________________________________________________________

A reader is helping with this work. We are trying to decrypt a test vector,
but my software for AES gives "I/O error 998" when 128 bits are the input. This AES software expects 256 bits as ciphertext to decrypt. This AES software (from 2000-2003 era) seems incompatible with anything except itself. Here are my notes:


decrypt 128 bit block (FAILS: I/O ERROR 998)
prepare hex256.txt using notepad for ciphertext representation in ascii
use program hextobin128.pl to make ciphertext binary128.dat
decrypt to produce binary128_decrypted.dat
FAILS I/O ERROR 998

A new AES program was obtained. Several programs have been examined but few can use 128 bit blocks with 128 bit keys. Mostly, passphrases are required and keys are not allowed in TrueCrypt, AES Crypt, Perfect AES, and AxCrypt. OpenSSL works correctly for the goals of PopCryMag. OpenSSL is used here for AES encrypted essays.

____________________________________________

August 9, 2010

Header Fields Include Padding

An investigation of padding for block ciphers will be considered, soon. Verification of padding truthfulness may be a goal.

_______________________________

December 23, 2010

Conclusion

The ciphertext should be the same size as the plaintext, rounded up to have an integer number of 128 bit blocks of ciphertext. If the ciphertext exceeds that size, it is suspected of having header fields.