rc5pipe by HardCore Software
(C) 2002 HardCore Software

Distributed under the terms and conditions of the GNU GPL.
See the file "LICENSE" for details.

Some code taken from RSA RC5 reference implementation.
See copyright below.

RC5REF.C -- Reference implementation of RC5-32/12/16 in C.
Copyright (C) 1995 RSA Data Security, Inc.


rc5pipe is a small unix utility that will decrypt everthing from stdin to
stdout using the algorithm RC5-32/12/16.

With 16 bytes in the key, this means the key is 128 bits long.
There is 2^128 possibilities for keys, or

  340282366920938463463374607431768211456

different possible keys.


rc5pipe also implements a variable-length padding mechanism. Before encrypting,
rc5pipe prepends a randomly determined string to the plaintext. The result is
that 2 identical messages, encrypted with identical keys will encrypt to
different ciphertexts, but encrypt back to the same plaintexts. If you're using
rc5pipe as a pipe for secure chat and you are in the habit of always saying
'hi', then this padding technique will stop an eavesdropper from knowning
whenever you say 'hi'. More formally, this padding technique virtually
eliminates most methods of getting known-plaintext for known-plaintext attacks.

Unfortunatley, rc5pipe doubles the size of the piped data (actually slightly
more than doubles when headers and padding are accounted for). This is
often not a problem, but you might also want to pipe through zcat if size
is a concern. Generally, compressing AFTER encrypting is a bad idea, because
encrypted data is seemingly random, and hence, very difficult to compress.
However, rc5pipe goes through a considerable expansion technique to ensure
that all encrypted data is human readable, so there is quite a bit of
redundancy in the rc5pipe data streams. Compressing the stream (with zcat)
should get it back down to about it's original size. If you're really
concerned with size, you might want to zcat before AND after the encryption
process, or find a different encryption product.


Doug

doug@bearcountry.cjb.net
