Het belangrijkste verschil tussen een blokcijfer en een stroomcijfer is dat het blokcijfer een blok van de tekst tegelijkertijd versleutelt en decodeert. Aan de andere kant codeert en codeert stream-cipher de tekst door de ene byte van de tekst tegelijk te nemen.
Vergelijkingstabel
Basis voor vergelijking | Block cipher | Stream cipher |
---|---|---|
basis- | Converteert de platte tekst door het blok tegelijk te nemen. | Converteert de tekst door één byte van de platte tekst tegelijk te nemen. |
ingewikkeldheid | Simpel ontwerp | Complex in vergelijking |
Aantal gebruikte bits | 64 bits of meer | 8 beetjes |
Verwarring en diffusie | Gebruikt zowel verwarring als diffusie | Vertrouwt alleen op verwarring |
Gebruikte algoritmemodi | ECB (Elektronisch codeboek) CBC (Cipher Block Chaining) | CFB (Cipher Feedback) OFB (output feedback) |
reversibiliteit | Het omkeren van versleutelde tekst is moeilijk. | Het gebruikt XOR voor de codering die eenvoudig kan worden teruggedraaid naar de platte tekst. |
Implementatie | Feistel Cipher | Vernam Cipher |
Definitie van Block Cipher
Block Cipher neemt een bericht en splitst het in een vaste grootte van blokken en converteert één blok van het bericht op een bepaald moment. We hebben bijvoorbeeld een bericht in platte tekst 'STREET_BY_STREET' vereist om te worden gecodeerd. Met behulp van bock cipher, moet "STREET" eerst worden gecodeerd, gevolgd door "_BY_" en uiteindelijk "STREET".
In de praktijk vindt communicatie alleen in bits plaats. Daarom betekent STREET eigenlijk het binaire equivalent van ASCII-karakter van STREET. Vervolgens codeert elk algoritme deze; de resulterende bits worden terug omgezet in hun ASCII-equivalent.
Een duidelijk probleem met betrekking tot het gebruik van blokcijfers is het herhalen van tekst, waarvoor hetzelfde cijfer wordt gegenereerd. Daarom zou het een hint geven aan de cryptanalyst, waardoor het eenvoudiger wordt om de terugkerende strings van platte tekst te achterhalen. Als gevolg hiervan kan het de hele boodschap onthullen.
Om dit probleem te verhelpen, wordt de ketenmodus gebruikt. In deze techniek wordt het voorgaande blok codeertekst vermengd met het huidige blok, zodat de gecodeerde tekst vaag is, dit vermijdt de terugkerende patronen van blokken met dezelfde inhoud.
Definitie van Stream Cipher
Stream Cipher versleutelt meestal één byte van het bericht op dat moment in plaats van blokken te gebruiken. Laten we een voorbeeld nemen, stel dat het oorspronkelijke bericht (platte tekst) "blauwe lucht" is in ASCII (dwz tekstformaat). Wanneer u deze ASCII in equivalente binaire waarden converteert, wordt de uitvoer in de vorm van 0 en 1 weergegeven. Laat het worden vertaald in 010111001.
Voor codering en decodering wordt een pseudowillekeurige bitgenerator gebruikt waarin een sleutel en platte tekst worden geladen. Een pseudorandom- bitgenerator creëert een stroom van 8-bit-nummers die schijnbaar willekeurig bekend staan als keystream . Laat de invoersleutel 100101011 zijn. Nu zijn de sleutel en leesbare tekst XORed. De XOR-logica is eenvoudig te begrijpen.
XOR produceert een uitvoer van 1 wanneer één invoer 0 is en de andere is 1. De uitvoer is 0 als beide ingangen 0 zijn of beide ingangen 1 zijn.
Verwarring is een methode die garandeert dat een coderingstekst geen aanwijzing geeft over de oorspronkelijke platte tekst.
Diffusie is een strategie die wordt gebruikt om de redundantie van de platte tekst te verbeteren door deze over rijen en kolommen te spreiden.
Belangrijkste verschillen tussen Block Cipher en Stream Cipher
- Block cipher-techniek omvat versleuteling van één blok tekst per keer, dat wil zeggen alleen. Versleutel de tekst op dezelfde manier door het ene blok na het andere te nemen. Stream-coderingstechniek daarentegen heeft betrekking op codering en decodering van één byte van de tekst per keer.
- Blockcipher gebruikt zowel verwarring als diffusie, terwijl streamcipher alleen afhankelijk is van verwarring.
- De gebruikelijke grootte van het blok kan 64 of 128 bits zijn in het blokcijfer. Daartegenover staat dat 1 byte (8 bits) per keer in het stroomcijfer wordt omgezet.
- Block cipher gebruikt algoritme-modi van de ECB (Electronic Code Book) en CBC (Cipher Block Chaining) . Integendeel, Stream cipher gebruikt CFB (Cipher Feedback) en OFB (Output Feedback) algoritmemodi.
- Stream cipher gebruikt de XOR-functie voor het omzetten van de platte tekst in cipher-tekst, dat is de reden waarom het gemakkelijk is om de XOR-bits om te keren. Waar Block Cipher XOR niet gebruikt om dit te doen.
- Blokcijfer gebruikt dezelfde sleutel om elk blok te coderen, terwijl het stroomcijfer een andere sleutel gebruikt voor elke byte.
Conclusie:
Block Cipher en Stream Cipher verschillen in de manier waarop platte tekst wordt gecodeerd en gedecodeerd. Het idee achter het blokcijfer is om de platte tekst in blokken te verdelen en die blokken verder te versleutelen. Terwijl het stroomcijfer gewone tekst bit voor bit converteert, vergelijkbaar met stream.