A stream cipher is basically any
cipher whereby elements are dependent upon previous elements for
decryption. The problem with a traditional
stream cipher is that each
element in the chain contains the method for decrypting the next element. Why is this bad? Well if you get the
packets out of order (
TCP helps with this), then you have a
perfectly random stream of bits (thanks to the
waterfall theory; which states that for security to be in place
ciphertext should have nothing to do with
plaintext). Should something go wrong, you have a
random bit firehose, in theory. It should also look like that to any third party who can see your data.
There are very few, if any, publicly used stream ciphers. There are some
advantages to them (and i personally know of several apps that take advantage of this for numerous reasons), but all in all, it is best to stick with a
block cipher, whereby each data is encrypted the same (ala
DES, or
3DES).