Cryptography Reference
In-Depth Information
The algorithm is one of the fastest ciphers in software that are currently
considered to be secure: it achieves 58 Mbits/s on a 50-MHz PC-486 (that
translates in 7 Mbytes/s, about five times faster than my RC5a implemen-
tation on a 133-MHz Pentium!).
The computation of special tables about 3 Kbytes long from the key is
much slower than the encryption. This prevents trial-and-error attacks,
such as dictionary attacks or brute-force attacks, against a different subset
of all keys.
The key byte sequence does not have to be computed sequentially (as
with other algorithms); you can skip an arbitrary number of bytes. This
makes SEAL ideally suited for encrypting entire hard disks or single
distributed database entries. In contrast to other stream ciphers, SEAL-
encrypted messages can be sent over channels that lose data from time
to time — there is no synchronization problem.
However, SEAL is patented by IBM and has not yet been publicly cryptana-
lyzed. But when Coppersmith designs an algorithm you may reasonably assume
that it is well designed.
SEAL takes a secret 160-bit key, k , and creates a sequence k(n) of pseudo-
random character strings of length L for an arbitrarily given number L (not
greater than 2 16 , corresponding to 64 Kbytes), where index n is a 32-bit number.
The details of this algorithm are rather complex; an implementation in C is
included on the Web site associated with this topic (see www.wileyeurope.
com/go/cryptology ).
Blowfish
The Blowfish block algorithm is also fairly new. It was introduced by Bruce
Schneier, the author of the seminal cryptographic topic [SchnCr], in [Schn-
Blow1] and [SchnBlow2] in 1994. In contrast to SEAL, Blowfish is free and
has been cryptanalyzed. It is also used practically, namely in FolderBolt for MS
Windows and Macintosh as well as in Nautilus and PGPfone . Because it's free,
it is also used in many public-domain products, including SSH (Section 7.3)
and GnuPG (Section 7.1.4).
Blowfish is essentially a Feistel network with 64-bit blocks, 16 rounds, and
variable key lengths (up to 448 bits, i.e., 56 bytes). Figure 5.24 shows its round
function.
Search WWH ::




Custom Search