The Hasty Pudding Cipher -- A Tasty Morsel

Jun 12, 1999 added Tweak & Update; updated Spec
Dec 21, 1998 added Alpha times

The Hasty Pudding Cipher is a variable length block cipher. The block size may be *any* number of bits, even fractional bit values are permitted. The arbitrary block size means that anything can be encrypted without expansion. Arbitrary sets, such as dates, or the printable subset of ascii, or the 20-bit primes, can be encrypted to themselves.

The key size may be any (whole) number of bits.

The Hasty Pudding Cipher has a 512-bit secondary key, the SPICE. The spice may be changed in one instruction. Concealment of the spice is optional.

I estimate the actual security level of the Hasty Pudding Cipher as 400 bits. I am offering a token prize for successful cryptanalytic work.

The Hasty Pudding Cipher is fast, achieving 247 megabits per second on 512-bit blocks on a 300 MHz DEC Alpha.

The Hasty Pudding Cipher is in the public domain; there are no known patent restrictions.

Update on the Hasty Pudding Cipher http://www.cs.arizona.edu/~rcs/hpc/hpc-oneyearlater
Explains why HPC should be chosen as the AES: it's very very fast on 64-bit machines. Includes new Pentium assembly language timings, discusses the tweak to fix the equivalent key problem, and answers various objections.

The Tweak http://www.cs.arizona.edu/~rcs/hpc/tweak
David Wagner found an equivalent key problem. This is the fix.

Encryption Times for Alpha platform http://www.cs.arizona.edu/~rcs/hpc/hpc-times-alpha.html

Overview of the Hasty Pudding Cipher (19KB) (gzip 7KB) http://www.cs.arizona.edu/~rcs/hpc/hpc-overview

Specific Cipher Claims for NIST (14KB) (gzip 5KB) http://www.cs.arizona.edu/~rcs/hpc/hpc-nist-doc

Specification for the Hasty Pudding Cipher (50KB) (gzip 17KB) http://www.cs.arizona.edu/~rcs/hpc/hpc-spec
This version of the specification includes the one line tweak to fix the Equivalent Key problem that David Wagner found.

Help File for the Hasty Pudding Cipher (12KB) (gzip 5KB) http://www.cs.arizona.edu/~rcs/hpc/hpc.hlp

Overview+Claims+Help+Spec (94K) (gzip 33K) http://www.cs.arizona.edu/~rcs/hpc/hpc-ov-cl-hl-sp
Note: Contains UNTWEAKED version of the Spec

Summmary of diskettes submitted to NIST http://www.cs.arizona.edu/~rcs/hpc/README

Compiling and Testing the Hasty Pudding Cipher http://www.cs.arizona.edu/~rcs/hpc/README2

Directory of Tests for the Hasty Pudding Cipher http://www.cs.arizona.edu/~rcs/hpc/test-index.html
Note: These tests are for the UNTWEAKED version of HPC.

The code for the Hasty Pudding Cipher is freely available in the US and Canada. Send me email with a phone number, the city where you will receive the reply message, and stating your citizenship. I will email you the program. (You get to compile it).

Five versions are available, each roughly 100KB.

hpc-gcc.c           Compilers with a 64-bit integer or long long data type.
hpc-ansi.c          Compilers restricted to 32-bit operations.  Slower.
HPC-standalone.java Standalone Java version.
HPC_Algorithm.java  NIST/Cryptix interface.

(new 12/21/98)  hpc-gcc-98dec21.c  includes fastest Alpha code
I'd like to acknowledge Peter Bigot for help with Java and Tex, Dave McGrew and Trusted Information Systems (now part of Network Associates) for assistance with the Borland C compiler, and Hilarie Orman for converting my collage of sentence fragments into English prose.

email rcs@cs.arizona.edu

Rich Schroeppel's home page http://www.cs.arizona.edu/~rcs

Rich Schroeppel rcs@cs.arizona.edu