Hogyan tudom elérni, hogy a rejtjelem megmutassa a lavina hatást?

Kezdő vagyok a rejtjelezés terén. Terveztem egy jelszó alapú titkosítási-visszafejtési algoritmust, amely véletlenszerű sót és jelszót használ az üzenet titkosításához. SHA-512-et használok hash-hoz, mátrix-műveleteket keveréshez, bitenként XOR-ot az adatok keveréséhez és visszakereséshez. A só és a titkosított szöveg hossza 256 betű.

Tudomásom szerint a lavinaeffektus azt jelenti, hogy az alábbiak bármelyikén enyhén változtat:

  • titkosítás
  • jelszó
  • salt

drasztikusan meg kell változtatnia a kimenetet.

Megvalósításomban, ha megváltoztatom a sót vagy a titkosítást, akkor nem látok nagy változásokat a Kimenet. Ha azonban a jelszó enyhén megváltozik, a kimenet drasztikusan megváltozik.

Tehát, a kérdéseim:

  • Általában helyes vagyok a lavinahatás megértésében? Ha nem, akkor mi legyen az?
  • Mit tehetek azért, hogy a lavinahatást a legjobban produkálhassam a titkosításomban (vagy bármely más)? kevesebbet kell csökkentenem a só hosszát, és generálnom egy kisebb titkosítást, hogy lavina hatást keltsek? Ha nem, akkor hogyan érhetem el ezt?

Megjegyzések

  • Kíváncsiságból mire használod a kivonatot?
  • Üdvözöljük a Cryptography Stack Exchange szolgáltatásban. @Avinash, a kérdésedet ide költöztették, mert itt több a téma, mint a Stack Overflow-nál. Kérjük, itt regisztrálja fiókját, hogy hozzászólhasson és elfogadhassa a választ.
  • Ha bármilyen konstruktív választ szeretne, akkor be kell mutatnia a titkosításának jelenlegi működését (előnyösen matematikai képletekben). Ezután megnézhetjük, hogyan lehetne javítani rajta.
  • I ‘ eltávolítottam a megjegyzéseket a ” don ‘ t megtervezheti saját titkosítását ” – itt a kriptográfia ‘ s teljesen elfogadható a kipróbáláshoz, bár meg kell értenie, hogy mindez természetesen a saját felelősségére történik: én is ‘ én is szerkesztettem egy kicsit a kérdést, hogy távollétében inkább a lavina hatásra koncentráljak a vonatkozó rejtjelszerkezetek. Ha valaki úgy érzi, hogy ez felesleges, nyugodtan tekerjen vissza, vagy javítson azon, amit ‘ tettem.

Válasz

Ne foglalkozzon a tényleges rejtjelezési algoritmus megváltoztatásával. Olvassa el a Kerckhoffs elvét : érdemes csak olyan dolgokon változtasson, mint a kulcs és az IV, a tényleges algoritmuson kívül.

A lavina teszteléséhez fordítson egyet egy kicsit a kulcsában. Ennek meg kellene változtatnia a kimenet bitjeinek felét.

A titkosítás tervezéséhez az Applied Cryptography t már javasolták. Amellett, hogy meg kell vizsgálnia a diffúzió és zavartság bevezetését az algoritmusba. Érdemes tanulmányozni a meglévő algoritmusokat, hogy lássuk, hogyan mennek a dolgok. Azzal kezdtem, hogy megterveztem a saját egyszerű Feistel rejtjelemet , így a környező struktúrák nagy része már megtörtént az Ön számára. Egyszerűsíti a kialakítást is, mivel az F függvénynek nem kell invertálhatónak lennie. Ez sokkal nagyobb rugalmasságot enged meg ezen a területen.

Jó figyelmeztetés arra, hogy saját tervét ne használja másra, mint egy tanulási gyakorlatra.

Megjegyzések

  • Sokkal többet ….
  • A cifrázás / titkosítás az Egyesült Királyság / Egyesült Államok dolga.

Válasz

Szerintem fantasztikus, hogy saját titkosítási-visszafejtési algoritmust építesz. Sokat megtudhatsz a kriptográfiáról így. Eddig mindenki, aki épít egy a kriptográfiai-titkosító-visszafejtő algoritmus az első alkalommal valami szörnyen elhibázottat hoz létre, ilyen vagy olyan módon – nagyon oktató jellegű.

terminológia

Ha jól értem kérdését, akkor tökéletesen rendelkezik ésszerű kérdés a lavina effektussal kapcsolatban, de az ezen az oldalon lévő emberek többsége annyira meg van zavarodva a nem szabványos terminológiádtól, hogy “még azt sem tudják megérteni, amit kérdezel.

Ha jól értem a kérdésedet, olyan titkosítási-visszafejtési rendszert épít, amely A sima szöveget bevitellel veszi fel, az adatokat titkosított fájlként tárolja, majd később a megfelelő jelszóval rendelkező valakinek lehetővé teszi a tárolt fájlok visszafejtését és a visszafejtett sima szöveg bit-for-bit helyreállítását, amely megegyezik az eredeti sima szöveg bevitelével. valószínűleg már tudják, egy tipikus titkosító program létrehoz egy titkosított fájlokat, amelyek egy inicializáló vektorral (IV) kezdődnek, amelyet a kriptográfiailag biztonságos véletlenszám-generátor újonnan generált a titkosított fájl létrehozásakor.A titkosító program ezután feldarabolja a bemeneti fájlt néhány rögzített blokkméretû szövegblokkba, használ néhány blokkosírási módot. a művelet “titkosítási módban” az egyes blokkok (és a titkosítási kulcsok) feldolgozásához egy blokk titkosítón keresztül , hogy végül egy titkosított blokk kerüljön ugyanaz a blokkméret, amelyet a titkosított fájlhoz csatolnak. A végén gyakran vannak apró bitek a “kitöltéssel” és az “üzenet hitelesítésével” kapcsolatban.

Később a visszafejtő program ugyanazon fix blokkméretű titkosított blokkokká aprítja a titkosított fájlt, és betáplálja az egyes blokkokat ( és a titkosítási kulcsot) a blokkos kódoláson keresztül, ugyanazzal a blokkos titkosítási üzemmóddal “visszafejtési módban” a sima szöveg blokk helyreállításához, és az összes sima szöveg blokkot összefűzi, hogy az eredeti sima szöveg fájllal bitenként bitet állítson össze. .

Az SHA-512-et használom hasításhoz

OK, Az SHA-512 kiváló hash algoritmus. Ha ezt a belső körfüggvény részeként használja, vagy alkulcsokat generál a fő titkosítási kulcsból, akkor ez működni fog; ez egyszerűen feleslegesen bonyolultnak tűnik. egy kulcsszármazási függvény (KDF) a fő titkosítási kulcs előállításához a jelszóból, sokan azt mondanák, hogy ez nem elég bonyolult.

mátrix műveletek keverés

Ez szokatlan, de működhet.

bitenként XOR az adatok keveréséhez és visszakereséshez.

Gyakorlatilag az összes modern titkosítási algoritmus sok bitenként XOR műveletet használ. Számos modern titkosítási algoritmust úgy terveztek, hogy csak moduláris kiegészítéseket, fix forgatású forgatásokat és XOR-okat (ARX) használjon a belső hurokban (kerek iteráció).

Nagyon szép, hogy egy belső kerek függvény, amely A only XOR vagy a only rotation, vagy a only moduláris hozzáadás végzetesen bizonytalan lesz, függetlenül attól, hogy hány kerek iterációt használnak.

(Nem tudom annyira, hogy bármit is elmondhassak az XOR és a mátrix műveletek kombinációjának biztonságáról).

A hossza só és a rejtjelezett szöveg 256 betű.

Feltételezem, hogy azt akartad mondani, hogy “Az inicializáló vektor (IV) és az egyes rejtjelezett szövegblokkok hossza 256 betű. . “

A” sót “egyirányú kriptográfiai kivonatolásban használják – lásd: Tudna segíteni abban, hogy megértsem, mi az a kriptográfiai “>

só ” az? . A “IV” -et kétirányú titkosításban használják – titkosításban és visszafejtésben egyaránt. A “só” és a “IV” egyaránt frissen generált véletlenszerű értékek, amelyekről feltételezzük, hogy nyilvánosan ismertek, de a terminológia arra utal, hogy ezeket különféle rendszerekben fogják használni.

Nagyjából mindenki meghatározza a a IV megegyezik a blokkmérettel, így nagyszerű.

Megértésem szerint az 1997-es AES-verseny kiírása előtt kifejlesztett összes titkosítás 64 bites (8 bájt) vagy annál kisebb blokkméretet használt. Néhány kriptográfus nyilvánvalóan azt gondolta, hogy ez nem volt elég, de ha jól tudom, úgy tűnik, hogy mindenki úgy gondolja, hogy a 128 bites (16 bájtos) blokkméret megfelelő.

A 256 bájtos blokkméret működne; egyszerűen feleslegesen nagynak tűnik.

a lavinaeffektus

Amikor az egyes sima szöveg blokkokat a blokkos kódoláson keresztül futtatja (bizonyos titkosítási módokban), akkor a lavina effektus azt jelenti, hogy egyetlen az alábbiak bármelyike:

  • a sima szövegblokk adatai
  • jelszó
  • IV

meg kell változtatniuk a kimeneti rejtjelezési blokk drasztikusan (a bitek fele).

Amikor az egyes rejtjelszöveg-blokkokat a blokkos titkosítón keresztül futtatja (bizonyos visszafejtési módokban), a lavinaeffektus azt jelenti, hogy egyetlen bit változik a következők bármelyikében:

  • rejtjeles szövegblokk
  • jelszó
  • IV

drasztikusan meg kell változtatnia a kimeneti “sima szöveg” blokkot (kb. a bitek fele).

Megvalósításomban, ha megváltoztatom a sót vagy a titkosítást, nem látok nagy változásokat a kimenetemben.

Azt hiszem, két dolog egyikét akartad mondani:

  • “ha egyetlen bitet változtatok a kezdete o A titkosított fájlban (azaz a IV-ben vagy valamilyen korai titkosítási blokkban) nem látok nagy változásokat a kimeneti sima szöveges fájlom vége felé.

A a változás mindig a (biztonságos) Cipher Block Chaining (CBC) vagy más működési módok használatakor történik. Tehát nem feltétlenül jelent problémát.

Ez azonban problémát jelenthet, ha úgy gondolta, hogy a (biztonságos) Propagating Cipher Block Chaining (PCBC) módot használja, ahol ez a változás hiánya egy hiba a megvalósításban.

Ez a változáshiány a várt eredmény a (nem biztonságos) elektronikus kódkönyv (ECB) mód használata esetén is.

Nem számít, milyen működési módot választ, a visszafejtő program -eknek nagy félelmetes figyelmeztetéseket kell kinyomtatniuk arról, hogy a fájl nem tudta ellenőrizni a MAC hitelesítési ellenőrzését, valahányszor a titkosított fájl bármelyik bitje megsérült.

  • “ha egyetlen bitet módosítok egy egyetlen titkosított titkosítási blokk egy titkosított fájlban, nem látok nagy változásokat a megfelelő sima szövegblokkban a kimeneti sima szöveges fájlomban. “

Igen, ez komoly hibát jelez – a A blokkos titkosító algoritmusnak nincs jó lavina hatása. Ez annak a jele, hogy az algoritmus nem rendelkezik elegendő keveréssel. Ez általában azt jelenti, hogy a rendszer kiszolgáltatott a választott titkosított szöveges támadásnak és hasonló támadásoknak.

Mit tehetek annak érdekében, hogy a lavina-hatást a legjobban előhívjam a titkosításomban (vagy bármely más) kevesebbet kell csökkentenem a só hosszát, és generálnom egy kisebb rejtjelszöveget, hogy lavina hatást keltsek?

Feltételezem, hogy kérdezni akartad ” a IV és a blokkméret lavina effektus létrehozásához? “

Ez általában nem szükséges.

A lavina effektus előállításának leggyakoribb módszereit a Wikipédia sorolja fel blokkos titkosító cikk :

Nem ismerek olyan blokkos titkosítást, amely egyetlen menet után teljes lavinát produkál. A blokkos titkosítást tervező emberek megpróbálnak kiválasztani néhány olyan kört, amely elegendő ahhoz, hogy a blokkos titkosítás ellenálljon az összes szabványos kriptográfiai támadásnak , ami több mint elegendő egy teljes lavina előidézéséhez .

A blokkos titkosítást tervező emberek általában kiválasztanak egy általános blokkos titkosítási tervezési sémát, és a blokkos titkosító programot a kiválasztott fordulószámok többször ismétlik. A legnépszerűbb általános blokkos titkosítási sémák a következők:

  • helyettesítési-permutációs hálózat
  • Feistel titkosítás
  • Lai-Massey titkosítás

Ezek mindegyikéhez szükség van valamilyen belső nemlineáris függvényre. A korai blokkjelzõk gyakran minden bonyolult belsõ funkciót használnak minden körben, amely szinte lavinát ér el egyetlen körben. A modern rejtjelek gyakran nagyon egyszerű, gyors belső funkciót használnak minden körben (néhány ARX funkció), csak annyi nemlinearitással, hogy végül sok lavina után lavinát érhessenek el.

Megjegyzések

  • Mellékjegyzet: A khazad rejtjel egyetlen kör után teljesen elterjed. ‘ Olyan játékokat készítettem, amelyek ezt is csinálják, ez minden bizonnyal lehetséges ‘, és ennek felfedezése szórakoztató.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük