Ett strömchiffer är en typ av algoritm som används vid datakryptering där källan som behöver krypteras bearbetas mot en nyckelsekvens som verkar slumpmässig. Denna typ av chiffer är något flexibel i den meningen att den kan variera krypteringen när texten bearbetas. De kallas också ibland för ett tillståndschiffer eftersom kryptering också beror på det aktuella tillståndet för operationen. I motsats till blockchiffer, som fungerar på bitar av data 64 bitar åt gången, kan ett strömchiffer arbeta på en enda bit. Av denna anledning kan en ström bearbetas i höga hastigheter med mycket liten processorkraft.
Det första strömchifferet utarbetades av Gilbert Vernam 1917. Vernam hjälpte senare också till att skapa ett chiffer känt som engångsplattan, vilket är en form av strömchiffer som använder en engångsnyckel för att kryptera data. I en engångsplatta är nyckeln som genereras samma längd som den data som behöver krypteras, är helt slumpmässig och används aldrig igen någon annanstans, därav namnet.
När den bearbetas mot data som ska krypteras, vanligtvis kallad klartext, är den resulterande chiffertexten omöjlig att dekryptera utan nyckeln. Engångsplattan är svår att hantera i de flesta scenarier och används därför endast för mycket exklusiva situationer. Ändå anses ett strömchiffer vanligtvis vara användbart, så nycklarna förkortades och gjordes pseudoslumpmässiga, vilket betyder att de är statistiskt slumpmässiga men i verkligheten inte.
Stream chiffer har förmågan att kryptera i farten. På så sätt är det till och med lätt för enkla strömchiffer att utföras av människor på penna och papper, medan ett blockchiffer vanligtvis kräver användning av en dator för att bearbeta. Klartexten flödar genom krypteringsprocessen tillsammans med nyckelströmmen, den pseudoslumpmässiga sekvens som utgör nyckeln, där den konverteras och kommer ut i andra änden som chiffertext.
Vanligtvis sker denna kryptering via en exklusiv-eller (XOR) operation på de individuella bitarna när de passerar genom chifferen. Ett enkelt XOR-chiffer använder en typ av logisk disjunktion som grund, vilket i huvudsak säger att resultatet kan vara sant om endera operanden är sann, men inte båda. Till exempel, om en bit som rör sig genom krypteringsprocessen är en nolla eller en etta, och den parade nyckelströmsbiten inte matchar, är den resulterande utmatningen en etta. Om biten och den parade nyckelströmsbiten matchar, där båda är en etta, eller båda är en nolla, blir resultatet en nolla. Den krypterade strömmen av ettor och nollor dekrypteras sedan i andra änden av överföringen med samma nyckelström för att konvertera tillbaka bitarna till sin ursprungliga klartext.
Det finns två typer av strömchiffer. Med hjälp av en synkron metod skapas nyckelströmmen separat från klartexten eller chiffertexten och slås sedan samman för att tillhandahålla krypteringen eller dekrypteringen. Med denna metod måste både sändnings- och mottagningsändarna av överföringen förbli synkroniserade där de arbetar på samma nyckel och samma position i nyckeln. Om ett problem skulle uppstå måste dekrypteringen antingen börja om, eller så kan det finnas flaggor placerade intermittent i chiffertexten som indikerar nya startpunkter. Ett självsynkroniserande chiffer, å andra sidan, kommer att uppdatera nyckelströmmen baserat på ett antal tidigare siffror i chiffertexten.
En av de mest använda strömchiffrorna, kallad RC4, skapades av RSA Data Security®. Den är licensierad för och används i ett antal mjukvaruprodukter, såväl som SSL-protokollet (Secure Socket Layer) som används i säker internetkommunikation och WEP-krypteringen (Wired Equivalent Privacy) som används med trådlösa enheter. Ett annat ofta använt chiffer är känt som ORYX, som har funnit användning i mobiltelefondataöverföringar som behöver krypteras. IBM® har också utvecklat en strömkrypteringsmetod känd som SEAL, som har funnits vid hårddiskkryptering.