Kryptologi, kryptografi och kryptoanalys
Låt oss hoppa in i de teoretiska kunskaper du behöver när du skriver slutprojektet. Låt oss lära oss mer om kryptografi och dess beståndsdelar. Och samtidigt lär vi oss mer om chifferet som du ska använda när du skriver slutprojektet.
1. Kryptologi och dess beståndsdelar
Kryptologi är ett kunskapsområde som inkluderar:
-
Kryptografi (vetenskapen om chiffer).
Kryptografi handlar om att kryptera information för att skydda den från obehörig åtkomst. Denna information kan vara text, en digital bild, en ljudsignal, etc. Krypteringsprocessen producerar en krypterad version av informationen (data), som kallas chiffertext eller kodtext.
-
Kryptanalys (metoder för att knäcka dessa chiffer).
Cryptanalysis undersöker metoder för att bryta chiffer och hur dessa metoder kan tillämpas. Med andra ord utför kryptoanalys den omvända uppgiften och studerar sätt att omvandla krypterad information till klartext.
2. Kryptografisk nyckel
En nyckel är ett urval av data som används för att kryptera och dekryptera information. Möjligheten att framgångsrikt dekryptera information beror på vilken nyckel som används. Om en nyckel försvinner av någon anledning kommer det att vara omöjligt att dekryptera data.
Storleken på kryptografiska nycklar mäts i bitar. Och det betyder att en kryptografisk nyckel har en längd . God krypteringsstyrka är försedd med en längd på 128 bitar.
Typer av kryptografiska nycklar:
-
Symmetriska nycklar (hemliga nycklar). Föga överraskande används sådana nycklar i så kallade symmetriska nyckelalgoritmer. Deras huvudsakliga syfte är att utföra framåt eller bakåt kryptografiska transformationer (kryptering/dekryptering, verifiering av meddelandeautentiseringskoden).
-
Asymmetriska nycklar. De används i krypteringsalgoritmer med asymmetrisk nyckel (till exempel vid verifiering av en elektronisk digital signatur).
Eftersom vi kommer att arbeta med en krypteringsalgoritm med symmetrisk nyckel, kommer vi inte att gå in på för mycket detaljer här.
3. Ersättningsalfabet
Ett substitutionsalfabet är en komplett uppsättning tecken som används för att koda inmatade tecken.
4. Tillvägagångssätt för kryptoanalys
Det finns många olika tillvägagångssätt och metoder för kryptoanalys, det vill säga sätt att knäcka chiffer.
Vi kommer att beskriva de enklaste av dem:
-
Brute force (eller brute force search) försöker alla möjliga nycklar tills vi hittar den rätta. Fördelen med denna metod är dess enkelhet. Nackdelen är att den inte är lämplig för chiffer som involverar ett stort antal möjliga nycklar.
-
Krypteringsanalys baserad på statistiska data — i detta tillvägagångssätt samlar vi statistik om förekomsten av olika tecken i chiffertexten, och sedan dekrypterar vi baserat på statistik om frekvensen av förekomsten av olika tecken i klartext.
Till exempel: vi vet att frekvensen av bokstaven P i engelska texter är 1,9 %. När vi analyserar chiffertexten letar vi efter en symbol som förekommer med samma frekvens och drar slutsatsen att det är bokstaven P.
Nackdelen med detta tillvägagångssätt är dess beroende av textens specifika språk, författare och stil.
5. Caesar chiffer
Detta är en av de enklaste och mest välkända krypteringsmetoderna. Dess namn kommer naturligtvis från kejsaren Gaius Julius Caesar, som använde denna metod för att i hemlighet korrespondera med generaler.
Ett Caesar-chiffer är ett substitutionschiffer där varje tecken i klartexten ersätts av ett tecken som är ett konstant antal positioner till vänster eller höger i alfabetet.
Låt oss säga att vi sätter skiftet till 3. I det här fallet kommer A att ersättas av D, B blir E, och så vidare.
Detta är den minsta mängd teori du behöver för att slutföra det slutliga projektet. Låt oss gå vidare till uppgiftsbeskrivningen!
Slutprojekt för Java Syntax-modulen. Låt oss skriva en kryptoanalysator
Din uppgift är att skriva ett program som fungerar med Caesar-chiffer.
Låt ditt kryptografiska alfabet bestå av alla bokstäverna i det engelska alfabetet samt skiljetecken (. , ”” : - ! ? MELLANSLAG). Om du stöter på karaktärer som inte är en del av vårt substitutionsalfabet är det bara att hoppa över dem.
Obligatoriska krav
Programmet bör ha 2 lägen:
-
Kryptering/dekryptering. Programmet måste kryptera och dekryptera text med en given kryptografisk nyckel.
Programmet ska ta emot en sökväg till en textfil som innehåller källtext och skapa en fil som innehåller motsvarande chiffertext.
-
Kryptanalys genom brute force attack
I detta läge måste programmet knäcka chiffertexten som finns i en inmatad textfil.
Om användaren väljer brute force måste programmet självständigt räkna upp de möjliga nycklarna, välja rätt nyckel och dekryptera texten.
Fundera på vilka kriterier programmet ska använda för att framgångsrikt identifiera rätt nyckel. Du kan behöva vara uppmärksam på mellanrummen mellan ord eller korrekt användning av skiljetecken.
Ytterligare (valfritt) krav
1. Krypteringsanalys genom statistisk analys
Användaren ska kunna välja en av två kryptoanalysmetoder. Om användaren väljer statistisk analysläge, uppmana användaren att ladda en extra textfil i klartext, helst av samma författare och i samma stil. Baserat på innehållet i den andra filen bör programmet sammanställa statistik om förekomsten av tecken och sedan försöka använda denna statistik för att utföra kryptoanalys av chiffertexten.
2. Användargränssnitt
Skapa dialogrutor för interaktion med användaren efter eget gottfinnande. Om så önskas kan du använda Swing och JavaFX grafiska ramverk.
Ladda upp din färdiga lösning till ett offentligt Git-förråd.
Projektet kommer att kontrolleras när gruppen går igenom det
GO TO FULL VERSION