Crypto
Inleiding §
De Caesar cipher is een van de vroegst bekende en eenvoudigste cijfers. Het is een soort substitutiecodering waarbij elke letter in de platte tekst een bepaald aantal plaatsen in het alfabet wordt’ verschoven’. Bijvoorbeeld, met een verschuiving van 1, zou A worden vervangen door B, B zou C worden, enzovoort. De methode is vernoemd naar Julius Caesar, die het blijkbaar gebruikte om met zijn generaals te communiceren.
complexere encryptie schema ‘ s zoals de Vigenère cipher gebruiken de Caesar cipher als een element van het encryptie proces. De alom bekende ROT13 ‘encryptie’ is gewoon een Caesar cipher met een offset van 13. De Caesar cipher biedt in wezen geen communicatiebeveiliging, en het zal worden aangetoond dat het gemakkelijk kan worden gebroken, zelfs met de hand.
voorbeeld §
om een versleuteld bericht van de ene persoon naar de andere door te geven, is het eerst noodzakelijk dat beide partijen de ‘sleutel’ voor de versleuteling hebben, zodat de afzender het kan versleutelen en de ontvanger het kan ontcijferen. Voor de caesar cipher, de sleutel is het aantal tekens om het cijfer alfabet te verschuiven.
Hier is een snel voorbeeld van de encryptie en decryptie stappen die betrokken zijn bij de caesar cipher. De tekst die we zullen versleutelen is ‘verdedig de oostelijke muur van het kasteel’, met een shift (sleutel) van 1.
plaintext: defend the east wall of the castleciphertext: efgfoe uif fbtu xbmm pg uif dbtumf
Het is gemakkelijk te zien hoe elk teken in de platte tekst wordt verschoven naar het alfabet. Decryptie is net zo eenvoudig, met behulp van een offset van -1.
plain: abcdefghijklmnopqrstuvwxyzcipher: bcdefghijklmnopqrstuvwxyza
Het is duidelijk dat, als een andere sleutel wordt gebruikt, het versleutelingsalabet een andere hoeveelheid zal worden verschoven.
wiskundige beschrijving §
waarbij k de sleutel is (de shift) die op elke letter wordt toegepast. Na het toepassen van deze functie is het resultaat een getal dat vervolgens terug in een letter moet worden vertaald. De decryptie functie is:
JavaScript voorbeeld van de Caesar Cipher §
platte tekst
shift:
versleutelde tekst
andere implementaties §
voor Caesar cipher code in verschillende programmeertalen, zie de pagina implementaties.
om uw eigen berichten in python te coderen, kunt u de pycipher module gebruiken. Om het te installeren, gebruik pip install pycipher. Om berichten te coderen met de Caesar cipher (of een andere cipher, zie hier voor documentatie):
Cryptanalysis §
zie Cryptanalysis of the Caesar Cipher voor een manier om deze cipher automatisch te breken.
cryptografie is de kunst van het breken van codes en cijfers. De Caesar cipher is waarschijnlijk het makkelijkst te kraken. Aangezien de verschuiving een getal moet zijn tussen 1 en 25, (0 of 26 zou resulteren in een ongewijzigde platte tekst) kunnen we gewoon elke mogelijkheid proberen en zien welke resulteert in een stuk leesbare tekst. Als je toevallig weet wat een stuk van de cijfertekst is, of je kunt een stuk raden, dan zal dit je in staat stellen om onmiddellijk de sleutel te vinden.
indien dit niet mogelijk is, is een meer systematische benadering het berekenen van de frequentieverdeling van de letters in de versleutelingstekst. Dit bestaat uit het tellen hoe vaak elke letter verschijnt. Natuurlijke Engelse tekst heeft een zeer verschillende distributie die kan worden gebruikt help crack codes. Deze verdeling ziet er als volgt uit:
Dit betekent dat de letter e de meest voorkomende is en bijna 13% van de tijd voorkomt, terwijl z veel minder dan 1% van de tijd voorkomt. Toepassing van de Caesar cipher verandert deze letterfrequenties niet, het verschuift ze slechts een beetje (voor een verschuiving van 1 wordt de meest voorkomende versleutelde letter f). Een cryptanalyst hoeft alleen maar de verschuiving die ervoor zorgt dat de versleutelde frequenties nauw overeenkomen met de natuurlijke Engels frequenties te vinden, dan decoderen van de tekst met behulp van die verschuiving. Deze methode kan worden gebruikt om Caesar cijfers gemakkelijk met de hand te breken.
Als u nog steeds problemen ondervindt, probeer dan de cryptanalysesectie van de pagina met substitutiecodes. Alle strategieën die werken met de substitutie cipher zullen ook werken met de Caesar cipher (maar methoden die werken met de Caesar cipher niet noodzakelijkerwijs werken met de Algemene substitutie cipher).
voor een methode die goed werkt op computers, hebben we een manier nodig om uit te zoeken welke van de 25 mogelijke decrypties het meest op Engelse tekst lijkt. Zie cryptanalyse van de Caesar Cipher voor een walkthrough van hoe het te breken met behulp van quadgram statistieken. De sleutel (of shift) die resulteert in een decryptie met de hoogste waarschijnlijkheid dat het Engelse tekst is, is hoogstwaarschijnlijk de juiste sleutel. Natuurlijk, hoe meer cijfertekst je hebt, hoe groter de kans dat dit waar is (dit is het geval voor alle statistische metingen, inclusief de frequentiebenadering hierboven). Dus de gebruikte methode is om de versleuteling te nemen, probeer het te decoderen met elke sleutel, dan zien welke decryptie ziet er het beste. Deze simplistische methode van cryptanalyse werkt alleen op zeer eenvoudige cijfers zoals de Caesar cipher en de rail fence cipher, zelfs iets meer complexe cijfers kunnen veel te veel toetsen om ze allemaal te controleren.
referenties §
- Wikipedia heeft een goede beschrijving van het Encryptie/decryptie proces, geschiedenis en cryptanalyse van dit algoritme
- Simon Singh ‘S’ The Code Book ‘ is een uitstekende introductie tot versleutelingen en codes, en bevat een sectie over caesar versleutelingen.
- Singh, Simon (2000). The Code Book: The Science of Secrecy from Ancient Egypt to QuantumCryptography. ISBN 0-385-49532-3.