CHAMELEON File Encryption Tools
Version 0.1

Copyright (C) 2000 Ulli Meybohm, www.meybohm.de
License: GNU General Public License


Introduction

Chameleon is a little file encryption tool using a symetric encryption, a plaintext-feedbacked 2048 bit key generated by a password, xor-chains and a dummy-header system.

Compilation and Installation

In the moment, the program is written in pure ansi-c. It should compile on every system with a c-compiler. If you haven't got the GNU gcc compiler, then you should change the makefile entry $(COMPILER)=gcc to whatever compiler you use on your system. Pre-Compiled binaries exist for Linux i386, Windows and Solaris.

To compile the program, simply open a shell, change to the directory where you extracted the files from the tar-archive and run make. If succeeded, you should find the executable files cenc and cdec in the same directory. Copy both to a directory which is listet in the $PATH variable. On Linux/Unix Systems this is normally /usr/local/bin and on Windows Systems c:\windows\command. On Linux/Unix Systems you can also use make install to install the files.

Encryption with CENC

To encrypt files, you need the cenc program. Start the program like this:

	
	cenc <files>
	
	Examples:
	
	cenc mysecretfile.txt
		
	cenc `ls *`

The program is interactive, and you will be asked for a password and the dummy-header size.

Decryption with CDEC

The decryption-process is quite the same:

	
	cdec <files>
	
	Examples:
	
	cdec mysecretfile.txt
		
	cdec `ls *`

The program is also interactive, and you will be asked for a password and the dummy-header size like in cenc.

How Chameleon Works

If you use the chameleon tools the first time, you may get confused by the dummy-header concept. On most encryption programs, you only need a password to encrypt files. So why the additional dummy-header (dh)? The answer is, that it gives you a much better security. And if you don't want to use the dh-system, simply enter 0 when using cenc.

The dummy header is implemented for a better security againts brute-force dictionary and known-plaintext attacks. There are programs which try to break the encryption simply by trying to decrypt a encrypted file by trying to use possible passwords which may be listed in a dictionary file and analyise the decrypted file, if the content is valid.
To give you an example: Encrypting a GIF-image. The image-file starts always with the header GIF89. So all the program has to do, is to decrypt the first 5 bytes of the file with all possible passwords/keys until they find this header. On normal computers, this may take much to long to be practical, but for high-speed cluster of the NSA this may be a peace of cake, if you choose a password which is listed in their dictionary file.

With the chameleon tools, you have an easy tool to generate a random dummy-header with a variable length which will be set in front of the files that you want to encode. If someone wants to break the encryption, it is now harder to break, because the attacker doesn't know exactly, how long the header is. Because the header-size length number is also used to modify the encryption-key, the attacker has to try every password with all possible header-lengths and has to go through the dummy-header bytes every time he tries a password. This should secure the file against the strongest number-crunching clusters if you use a good password and an appropriate header-size.

Choosing a dummy-header size

For local usage on a harddisk, you should use a size between 100Kb-1Mb. If you want to send the files through a slow internet connection, then use 10Kb-100Kb. If you are unsure about this option, then simply type 0 and the default value 10000 will be used.

Choosing a password

Don't use a password, which is part of the cracker-dictionaries! Check your password with the vpass utility first, if you are unsure. Use also numbers and special characters. The password input is case-sensitive. Use a password with mixed upper/lowercase charachters for better security.

Compression

The Chameleon tools don't have an internal compression routine yet. Please compress the files that you like to encode with gzip or bz2 before you encrypt them. The encrypted file is so random, that the tools can't compress them very well.