Most stream ciphers consist of a pseudorandom number generator(PRNG) and an XOR gate. The PRNG is initialized with a key, and outputs a sequence of bits known as a keystream. Encryption consists of XORing the plaintext bits with the corresponding bits of the keystream; decryption consists of XORing the ciphertext bits with the corresponding keystream bits. This means that a single bit of ciphertext error results in a single bit of plaintext error; this property is useful when the transmission error rate is high. However, a stream cipher is susceptible to bitfiddling attacks  dropping a bit will result in complete garbage. Some ciphers, called selfsynchronizing stream ciphers, use several previous ciphertext bits to compute the keystream (as opposed to synchronous stream ciphers, in which the keystream is generated independently of the plaintext and the ciphertext). A singlebit error then turns into a long burst of garbage, but the cipher will recover from a lost bit after the erroneous bit falls off the shift register.
Keystream generators are often constructed using linear feedback shift registers.
Search Encyclopedia

Featured Article
