Digest Ciphers, Stream Digests, and Winnowing Stream Ciphers

Raphael A. Finkel · 1998

A digest algorithm such as MD5 can be used to create a stream cipher by setting $cipher[k i ~\dots~ k i + k - 1] = digest(key \parallel i) $, where the digest produces $k$ bits. We call such a stream cipher a {\it digest cipher}. A stream cipher can be used to build a $k$-bit digest of an arbitrary string by letting $digest(string) = \bigoplus_{i} cipher[256 k i + string_i ~\dots~ 256 k i + string_i + k - 1]$. We call such a digest a {\it stream digest}. This paper describes the characteristics necessary for high-quality digest ciphers and stream digests and reports on experiments with the MD5 algorithm in building digest ciphers. Finally, the paper shows how chaffing and winnowing can be added to messages encrypted by any stream cipher by appending to each $n$ bits of plaintext $m$ bits of sequence number and a bit count.

Read the paper · More papers on PaperTik