|
A stream cipher is a symmetric encryption
algorithm. Stream ciphers can be designed to be exceptionally fast, much
faster in fact than any block cipher. While block ciphers operate on large
blocks of data, stream ciphers typically operate on smaller units of
plaintext, usually bits. The encryption of any particular plaintext with a
block cipher will result in the same ciphertext when the same key is used.
With a stream cipher, the transformation of these smaller plaintext units
will vary, depending on when they are encountered during the encryption
process.
A stream cipher generates what is called a keystream
and encryption is provided by combining the keystream with the plaintext,
usually with the bitwise XOR operation. The generation of the keystream
can be independent of the plaintext and ciphertext (yielding what is
termed a synchronous stream cipher) or it can depend on the data
and its encryption (in which case the stream cipher is said to be
self-synchronizing). Most stream cipher designs are for synchronous
stream ciphers.
Current interest in stream ciphers is most commonly
attributed to the appealing theoretical properties of the one-time pad,
but there have been, as of yet, no attempts to standardize on any
particular stream cipher proposal as has been the case with block ciphers.
Interestingly, certain modes of operation of a block cipher effectively
transform it into a keystream generator and in this way, any block cipher
can be used as a stream cipher. However, stream ciphers with a dedicated
design are likely to be much faster.
What is a Linear Feedback Shift Register
A Linear Feedback Shift Register (LFSR) is a
mechanism for generating a sequence of binary bits. The register consists
of a series of cells that are set by an initialization vector that is,
most often, the secret key. The behavior of the register is regulated by a
clock and at each clocking instant, the contents of the cells of the
register are shifted right by one position, and the XOR of a subset of the
cell contents is placed in the leftmost cell. One bit of output is usually
derived during this update procedure.
LFSRs are fast and easy to implement in both hardware
and software. With a judicious choice of feedback taps the
sequences that are generated can have a good statistical appearance.
However, the sequences generated by single LFSRs are not secure because a
powerful mathematical framework has been developed over the years which
allows for their straightforward analysis. However, LFSRs are useful as
building blocks in more secure systems.
![[LFSR]](/nav/images/lfsr.gif)
What are Shift Register Cascades
A shift register cascade is a set of LFSRs
connected together in such a way that the behavior of one particular LFSR
depends on the behavior of the previous LFSRs in the cascade. This
dependent behavior is usually achieved by using one LFSR to control the
clock of the following LFSR. For instance one register might be advanced
by one step if the preceding register output is 1 and advanced by two
steps otherwise. Many different configurations are possible and certain
parameter choices appear to offer very good security.
What are the Shrinking and Self-Shrinking Generators
The shrinking generator was developed by
Coppersmith, Krawczyk, and Mansour. It is a stream cipher based on the
simple interaction between the outputs from two LFSRs. The bits of one
output are used to determine whether the corresponding bits of the second
output will be used as part of the overall keystream. The shrinking
generator is simple and scaleable, and has good security properties. One
drawback of the shrinking generator is that the output rate of the
keystream will not be constant unless precautions are taken. A variant of
the shrinking generator is the self-shrinking generator, where
instead of using one output from one LFSR to “shrink” the output of
another (as in the shrinking generator), the output of a single LFSR is
used to extract bits from the same output. There are as yet no results on
the cryptanalysis of either technique.
What Other Stream Ciphers Are There
There are a vast number of alternative stream ciphers
that have been proposed in cryptographic literature as well as an equally
vast number that appear in implementations and products world-wide. Many
are based on the use of LFSRs since such ciphers tend to be more amenable
to analysis and it is easier to assess the security that they offer.
Rueppel suggests that there are essentially four
distinct approaches to stream cipher design. The first is termed the
information-theoretic approach as exemplified by Shannon’s analysis of
the one-time pad. The second approach is that of system-theoretic
design. In essence, the cryptographer designs the cipher along established
guidelines which ensure that the cipher is resistant to all known attacks.
While there is, of course, no substantial guarantee that future
cryptanalysis will be unsuccessful, it is this design approach that is
perhaps the most common in cipher design. The third approach is to attempt
to relate the difficulty of breaking the stream cipher (where “breaking”
means being able to predict the unseen keystream with a success rate
better than can be achieved by guessing) to solving some difficult
problem. This complexity-theoretic approach is very appealing, but
in practice the ciphers that have been developed tend to be rather slow
and impractical. The final approach highlighted by Rueppel is that of
designing a randomized cipher. Here the aim is to ensure that the cipher
is resistant to any practical amount of cryptanalytic work rather than
being secure against an unlimited amount of work, as was the aim with
Shannon’s information-theoretic approach.
What is a One-time Pad
A one-time pad, sometimes called the Vernam
cipher, uses a string of bits that is generated completely at random.
The keystream is the same length as the plaintext message and the random
string is combined using bitwise XOR with the plaintext to produce the
ciphertext. Since the entire keystream is random, an opponent with
infinite computational resources can only guess the plaintext if he sees
the ciphertext. Such a cipher is said to offer perfect secrecy and the
analysis of the one-time pad is seen as one of the cornerstones of modern
cryptography.
While the one-time pad saw use during wartime, over
diplomatic channels requiring exceptionally high security, the fact that
the secret key (which can be used only once) is as long as the message
introduces severe key-management problems. While perfectly secure, the
one-time pad is impractical.
Stream ciphers were developed as an approximation to the
action of the one-time pad, and while contemporary stream ciphers are
unable to provide the satisfying theoretical security of the one-time pad,
they are at least practical.
|