Stream Cipher vs Block Cipher | State Cipher vs Block Cipher
In cryptografie zijn Stream-coderingen en Blokcoderingen twee coderings- / decoderingsalgoritmen die behoren tot de familie van symmetrische sleutelcodes. Een cijfer neemt meestal een platte tekst als invoer en produceert een cijfertekst als uitvoer. Blokcoderingen versleutelen blok met vaste lengte van bits met behulp van een niet-veranderende transformatie. Streamcoders coderen stromen van bits met variërende lengte en gebruiken variërende transformatie op elk bit.
Wat is een Stream Cipher?
Stroomcodes behoren tot de familie van symmetrische sleutelcodes. Streamcoders combineren tekst in platte tekst met een pseudo- enomcijferbits-stroom met gebruik van XOR (exclusief of). Stream-coderingen coderen platte-tekstcijfers één voor één met variërende transformaties voor opeenvolgende cijfers. Omdat de codering van elk cijfer afhangt van de huidige status van de codeerengine, zijn stroomcijfers ook wel statuscodes genoemd. Typisch, worden enkele bits / beten gebruikt als enkele cijfers. Om beveiligingsproblemen te voorkomen, moet ervoor worden gezorgd dat dezelfde starttoestand niet vaker dan één keer wordt gebruikt. Meest gebruikte stream-codering is RC4.
Wat is een Block Cipher?
Een blokcijfer is een ander symmetrisch sleutelcijfer. Blokcijfers werken op blokken (groepen bits) met een vaste lengte. Blokcijfers gebruiken een vaste (onveranderlijke) transformatie voor alle cijfers in het blok. Wanneer bijvoorbeeld een x-bitblok platte tekst (samen met een geheime sleutel) wordt verschaft als invoer voor de blokcijferingsmachine, produceert deze het overeenkomstige x-bitblok van cijfertekst. De eigenlijke transformatie is afhankelijk van de geheime sleutel. Evenzo herstelt het ontcijferingsalgoritme het originele x-bitblok van leesbare tekst door gebruik te maken van het x-bitblok van cijfertekst en de bovenstaande geheime sleutel als de invoer. In het geval dat het invoerbericht te lang is in vergelijking met de grootte van het blok, zal het worden onderverdeeld in blokken en deze blokken zullen (individueel) worden gecodeerd met dezelfde sleutel. Omdat dezelfde sleutel wordt gebruikt, wordt elke herhaalde reeks in de platte tekst dezelfde herhaalde reeks in de codetekst en dit kan beveiligingsproblemen veroorzaken. Populaire blokcodes zijn DES (Data Encryption Standard) en AES (Advanced Encryption Standard).
Wat is het verschil tussen een Stream Cipher en een Block Cipher?
Hoewel beide stroomcodes en blokcoderingen tot de familie van symmetrische versleutelingscodes behoren, zijn er enkele belangrijke verschillen. Blokcoders coderen blokken met vaste lengte van bits, terwijl stroomcoders platte-tekstbits combineren met een pseudo- enomcijferbitsstroom met behulp van XOR-bewerking. Hoewel blokcoderingen dezelfde transformatie gebruiken, gebruiken stroomcoderingen verschillende transformaties op basis van de staat van de motor. Streamcodes worden meestal sneller uitgevoerd dan blokcijfers. In termen van hardware-complexiteit zijn stroomcijfers relatief minder complex. Streamcodes hebben de voorkeur boven blokcoderingen als de platte tekst beschikbaar is in verschillende hoeveelheden (bijvoorbeeld een beveiligde wifi-verbinding), omdat blokcoderingen niet rechtstreeks op blokken kunnen werken die korter zijn dan de blokgrootte. Maar soms is het verschil tussen stroomcodes en blokcijfers niet erg duidelijk. De reden hiervoor is dat, bij gebruik van bepaalde werkingsmodi, een blokcijfer kan worden gebruikt om als een stroomcijfer te fungeren door deze de kleinste beschikbare gegevenseenheid te laten coderen.