A stream cipher is a symmetric cipher which operates with a time-varying transformation on individual digits of the plaintext. This is achieved by adding a digit from a keystream to a plaintext digit. The keystream, also called the running-key, is a pseudo-random sequence (a sequence that appear like a random sequence to an attacker) produced by a finite state automaton whose initial state is determined by a secret key and a public parameter.
The security of a stream cipher completely depends on the keystream. The keystream must be unpredictable to prevent a successful attack.
Stream ciphers sometimes require fewer resources, e.g., code size or chip area, for implementation than block ciphers, and they are attractive for use in constrained environments such as cell phones.
Stream ciphers are less popular than block ciphers in most domains such as Internet security. There are exceptions, for instance, the popular stream cipher RC4.
A stream cipher generates successive elements of the keystream based on an internal state. In a synchronous stream cipher, the state update mechanism is updated independently of the plaintext and the ciphertext. By contrast, self-synchronising stream ciphers update their state based on previous ciphertext digits.
Synchronous stream ciphers
A synchronous stream cipher is a stream cipher, in which the keystream is generated independently of the plaintext and of the ciphertext. The keystream is usually produced by a pseudorandom generator, parameterized by a key, which is the secret key of the whole scheme.
Some important properties of synchronous stream ciphers include the following:
Self-Synchronizing Stream Cipher
In a self-synchronizing, or asynchronous, stream cipher, the keystream depends on the secret key of the scheme, but also of a fixed number, say t, of ciphertext digits (that have already been produced, or read; this distinguishes it from a synchronous stream cipher).
Self-synchronizing The main properties of this scheme are the following: