Stream cipher

related topics
{math, number, function}
{system, computer, user}
{style, bgcolor, rowspan}
{rate, high, increase}
{war, force, army}
{water, park, boat}

In cryptography, a stream cipher is a symmetric key cipher where plaintext bits are combined with a pseudorandom cipher bit stream (keystream), typically by an exclusive-or (xor) operation. In a stream cipher the plaintext digits are encrypted one at a time, and the transformation of successive digits varies during the encryption. An alternative name is a state cipher, as the encryption of each digit is dependent on the current state. In practice, the digits are typically single bits or bytes.

Stream ciphers represent a different approach to symmetric encryption from block ciphers. Block ciphers operate on large blocks of digits with a fixed, unvarying transformation. This distinction is not always clear-cut: in some modes of operation, a block cipher primitive is used in such a way that it acts effectively as a stream cipher. Stream ciphers typically execute at a higher speed than block ciphers and have lower hardware complexity. However, stream ciphers can be susceptible to serious security problems if used incorrectly: see stream cipher attacks — in particular, the same starting state must never be used twice.

Contents

Loose inspiration from the one-time pad

Stream ciphers can be viewed as approximating the action of a proven unbreakable cipher, the one-time pad (OTP), sometimes known as the Vernam cipher. A one-time pad uses a keystream of completely random digits. The keystream is combined with the plaintext digits one at a time to form the ciphertext. This system was proved to be secure by Claude Shannon in 1949. However, the keystream must be (at least) the same length as the plaintext, and generated completely at random. This makes the system very cumbersome to implement in practice, and as a result the one-time pad has not been widely used, except for the most critical applications.

Full article ▸

related documents
PHP
Threaded code
TeX
AppleScript
Filename extension
Object-relational mapping
Berkeley sockets
Common Object Request Broker Architecture
Jackson Structured Programming
Maildir
Wikipedia:Free On-line Dictionary of Computing/C - D
Bzip2
Active Directory
GNU Compiler Collection
Classless Inter-Domain Routing
YUV
Java Virtual Machine
List of computing topics
Header file
White noise
Prototype-based programming
Interpreter (computing)
Atari BASIC
MathML
Brute force attack
Befunge
Linear feedback shift register
Arithmetic coding
Orthogonality
.NET Framework