Kriptológia, kriptográfia és kriptoanalízis
Ugorjunk bele az elméleti tudásba, amelyre a záróprojekt megírásakor szüksége lesz. Tudjunk meg többet a kriptográfiáról és annak alkotórészeiről. Ugyanakkor többet megtudunk a titkosításról, amelyet a végleges projekt megírásakor fog használni.
1. Kriptológia és alkotórészei
A kriptológia egy olyan tudásterület, amely magában foglalja:
-
Kriptográfia (a rejtjelek tudománya).
A kriptográfia az információk titkosításáról szól, hogy megvédje azokat a jogosulatlan hozzáféréstől. Ez az információ lehet szöveg, digitális kép, hangjel stb. A titkosítási folyamat az információ (adat) titkosított változatát állítja elő, amelyet titkosított szövegnek vagy kódszövegnek neveznek.
-
Kriptanalízis (módszerek ezeknek a rejtjeleknek a feltörésére).
A kriptoanalízis megvizsgálja a titkosítások feltörésének módszereit és azt, hogy ezek a módszerek hogyan alkalmazhatók. Más szóval, a kriptoanalízis az inverz feladatot hajtja végre, és azt vizsgálja, hogyan lehet a titkosított információkat egyszerű szöveggé alakítani.
2. Kriptográfiai kulcs
A kulcs az adatok titkosítására és visszafejtésére használt adatok válogatása. Az információ sikeres visszafejtésének képessége a használt kulcstól függ. Ha egy kulcs valamilyen okból elveszett, akkor az adatok visszafejtése lehetetlen.
A kriptográfiai kulcsok méretét bitekben mérik. Ez pedig azt jelenti, hogy a kriptográfiai kulcsnak van egy hosszúsága . Jó titkosítási erősséget biztosít a 128 bites hosszúság.
A kriptográfiai kulcsok típusai:
-
Szimmetrikus kulcsok (titkos kulcsok). Nem meglepő módon az ilyen kulcsokat az úgynevezett szimmetrikus kulcsú algoritmusok használják. Fő céljuk a forward vagy reverse kriptográfiai transzformációk végrehajtása (titkosítás/dekódolás, üzenet hitelesítő kód ellenőrzése).
-
Aszimmetrikus billentyűk. Aszimmetrikus kulcsú titkosítási algoritmusokban használatosak (például elektronikus digitális aláírás ellenőrzésekor).
Mivel szimmetrikus kulcsú titkosítási algoritmussal fogunk dolgozni, itt nem megyünk túl sok részletbe.
3. Helyettesítő ábécé
A helyettesítő ábécé a bemeneti karakterek kódolására használt karakterek teljes halmaza.
4. A kriptoanalízis megközelítései
Számos különböző kriptográfiai megközelítés és módszer létezik, azaz a titkosítások feltörésének módja.
Leírjuk ezek közül a legegyszerűbbet:
-
Brute force (vagy brute force search) minden lehetséges kulcsot kipróbál, amíg meg nem találjuk a megfelelőt. Ennek a módszernek az előnye az egyszerűsége. Hátránya, hogy nem alkalmas sok lehetséges kulcsot tartalmazó titkosításokhoz.
-
Statisztikai adatokon alapuló kriptoanalízis – ebben a megközelítésben statisztikát gyűjtünk a különböző karakterek titkosított szövegben való előfordulásáról, majd a különböző karakterek egyszerű szövegben való előfordulási gyakoriságára vonatkozó statisztikák alapján dekódoljuk.
Például: tudjuk, hogy a P betű gyakorisága az angol szövegekben 1,9%. A rejtjelezett szöveg elemzése során keresünk egy szimbólumot, amely ugyanolyan gyakorisággal fordul elő, majd arra a következtetésre jutunk, hogy az a P betű.
Ennek a megközelítésnek a hátránya, hogy a szöveg konkrét nyelvétől, szerzőjétől és stílusától függ.
5. Caesar-rejtjel
Ez az egyik legegyszerűbb és legismertebb titkosítási módszer. A neve természetesen Gaius Julius Caesar császártól származik, aki ezt a módszert használta a tábornokokkal való titkos levelezéshez.
A Caesar-rejtjel olyan helyettesítő rejtjel, amelyben a nyílt szövegben minden karaktert lecserélnek egy olyan karakterre, amely az ábécében balra vagy jobbra van néhány állandó számú pozícióban.
Tegyük fel, hogy az eltolást 3-ra állítjuk. Ebben az esetben A helyére D, B-ből E lesz, és így tovább.
Ez a minimális elméleti mennyiség, amelyre a végső projekt befejezéséhez szüksége lesz. Térjünk át a feladatleírásra!
A Java Syntax modul végső projektje. Írjunk egy kriptoanalizátort
Az Ön feladata egy olyan program megírása, amely Caesar titkosításokkal működik.
A kriptográfiai ábécé az angol ábécé összes betűjéből, valamint írásjelekből álljon (. , ”” : - ! ? SZÓKÖZ). Ha olyan karakterekkel találkozik, amelyek nem tartoznak a helyettesítő ábécénkbe, egyszerűen hagyja ki őket.
Kötelező követelmények
A programnak 2 üzemmóddal kell rendelkeznie:
-
Titkosítás/dekódolás. A programnak egy adott kriptográfiai kulccsal kell titkosítania és visszafejteni a szöveget.
A programnak meg kell kapnia a forrásszöveget tartalmazó szövegfájl elérési útját, és létre kell hoznia a megfelelő titkosított szöveget tartalmazó fájlt.
-
Kriptanalízis nyers erő támadással
Ebben a módban a programnak fel kell törnie a bemeneti szövegfájlban található titkosított szöveget.
Ha a felhasználó a nyers erőt választja, akkor a programnak önállóan fel kell sorolnia a lehetséges kulcsokat, ki kell választania a megfelelő kulcsot, és vissza kell fejteni a szöveget.
Gondolja át, milyen kritériumokat kell alkalmaznia a programnak a megfelelő kulcs sikeres azonosításához. Előfordulhat, hogy ügyelnie kell a szavak közötti szóközökre vagy az írásjelek helyes használatára.
További (nem kötelező) követelmények
1. Kriptanalízis statisztikai elemzéssel
A felhasználónak képesnek kell lennie két kriptográfiai módszer közül választani. Ha a felhasználó a statisztikai elemzési módot választja, akkor kérje meg a felhasználót, hogy töltsön be egy további szöveges fájlt egyszerű szöveggel, lehetőleg ugyanazon szerzőtől és ugyanabban a stílusban. A második fájl tartalma alapján a programnak statisztikát kell készítenie a karakterek előfordulásáról, majd megpróbálja ezeket a statisztikákat felhasználni a rejtjelezett szöveg kriptográfiai elemzésére.
2. Felhasználói felület
Készítsen párbeszédpaneleket a felhasználóval való interakcióhoz saját belátása szerint. Ha szükséges, használhatja a Swing és a JavaFX grafikus keretrendszert.
Töltse fel a kész megoldást egy nyilvános Git-tárba.
A projektet akkor ellenőrizzük, amikor a csoport átmegy rajta
GO TO FULL VERSION