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:

  1. 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).

  2. 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:

  1. 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.

  2. 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:

  1. 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.

  2. 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