Secret key systemy (systemy s tajnym klicem)

stejny klic je pouzit pro sifrovani i desifrovani
Mnoho z dnes pouzivanych systemu jsou Feistelovy sifry.

Obecny tvar jednoho cyklu Feistelovy sifry:
Obrazek Obecneho tvaru jednoho cyklu Feistelovy sifry


Kryptosystem DES

Vyvinula firma IBM na zakazku NBS pocatkem 70. let. Puvodni nazev DEA, v USA DEA 1. Jako standard prijat 23. 11. 1976
Dodnes pouzivan v komercni sfere, pro vojenske ucely neni certifikovan ani pro ochranu neklasifikovanych informaci. Patrne nejrozsahleji pouzivany sifrovaci algoritmus vsech dob.

Norma ANSI X3.92
Sifruje 64 bitove bloky otevreneho textu na na stejne dlouhe bloky vystupni, delka klic 64 bitu, z toho nezavislych bitu je 56.

Pozadavky zadavatele

  1. Algoritmus musi poskytovat vysoky stupen ochrany
  2. Musi byt formalne popsatelny a snadno pochopitelny
  3. Bezpecnost algoritmu nesmi zaviset na znalosti ci neznalosti samotneho algoritmu.
  4. Musi byt dostupny pro nejsirsi verejnost.
  5. Musi byt pouzitelny v nejruznejsich aplikacich.
  6. Musi byt efektivni.
  7. Musi byt overitelny.
  8. Musi byt exportovatelny.

Rezimy cinnosti

  1. ECB (electronic code book) - pouze sifrovani klicu
    C = E(K, P)
  2. CBC (cipher block chaining) - vhodny pro sifrovani zprav
    Cn = E(K, Pn xor Cn-1)
  3. CFB (cipher feed back) - pro sifrovani podobne proudovym sifram
    Cn = Pn xor E(K, shl(Reg, k) + left(Cn-1, k))
  4. OFB (output feed back) - pro aplikace, kdy je treba eliminovat sireni prenosovych chyb, vysokokapacitni spoje s velkou redundanci (rec, video)
    Hn = E(K, shl(Reg, k) + left(Hn-1, k))
    Cn = Pn xor Hn

Analyza

Mozne zpusoby zvyseni bezpecnosti

Sifrovani

Uvodni permutace:
Schema uvodni permutace

Vlastni sifrovani: Schema sifrovani DESem


System Blowfish

Opet Feistelova sifra, delka bloku 64 bitu, promenna delka klice az 448 bitu

Subklice

predpocitavaji se pred kazdym sifrovanim

Nereverzibilni funkce F

F(xL) = ((S1,a + S2,b mod 232) xor S3,c) + S4,d mod 232
xL = a|b|c|d

Generovani podklicu

  1. Inicializujeme P-pole a vsechny S-boxy pevnym retezcem
  2. xor P1 s prvnimi 32 bity klice, xor P2 s dalsimi 32 bity klice atd.
  3. Zasifrujeme nulovy retezec
  4. P1 a P2 nahradime vystupem predchoziho kroku
  5. Zasifrujeme vystup kroku 3
  6. P3 a P4 nahradime vystupem predchoziho kroku
  7. Stejne pro ostatni polozky P-pole a vsechny S-boxy
Algoritmus provadi 16 cyklu nad vstupem delky 64 bitu. Pro ucely analyzy byly navrzeny jeho zmensene varianty (MiniBlowfish) pracujici nad vstupem 32 resp. 16 bitu.

Sifrovani systemem Blowfish:
Schema sifrovani systemem Blowfish

Jedna F transformace:
Schema jedne F transformace systemu Blowfish


Kryptosystem VINO

blokova sifra, blok 64bitu, klic 128 bitu

Veta(Vinogradov):
Necht m, n jsou cela cisla. Uvazujme poslouonist 1, 2, ..., n, n, n-1, ..., 2, 1, 2, ..., n, n-1, ... Z teto posloupnosti postupne vybirame 1., (m+1), (2m+1), ... prvek az ziskame n cisel. Popsanou operaci opakujeme se ziskanymi cisly.
Vysledkem k-teho opakovani bude puvodni retezec cisel prave kdyz

m**k = +/- 1 mod (2n-1)
Popsany postup muze byt pouzit k permutaci retezce, celkovy pocet takto ziskanych permutaci je n.
Zlepseni:
oznacme P - sekvenci, kterou chceme permutovat a K klic
K rozdelime na ctyri casti a provedeme nasledujici postup:
  1. vybime z P s krokem m, kde m je rovno prvni casti K. Ziskame P'
  2. provedeme cyklicky posuv P' rizeny druhou casti K. Ziskame P''
  3. krok 1. opakujeme pro P'' a treti ca K, ziskame P'''
  4. krok 2. opakujeme pro P''' a ctvrtou ca K, ziskame P'''
Popsany postup oznacujeme V-permutace

Schema cyklu

oznacme znamenko + v krouzku bitove xor a znamenko + ve ctverecku scitani celych cisel modulo 2n. Vstup cyklu podrobime V-permutaci, vysledek rozdelime na ctyri bloky po 16ti bitech.
Vypocet probiha v souladu s nasledujicim obrazkem:
Schema cyklu sifry VINO

Tvorba podklicu

V prvnim cyklu je podklic cyklu K1 roven klici K. Dalsi klice jsou ziskany nasledujicim zpusobem:
  1. provedeme V-permutaci klice Kj-1 rizenou klicem Kj-1, ziskame K'j-1
  2. ucinime posuv Kj-1 o jeden bit vlevo, zprava doplnime 0 a invertujeme sude bity , ziskame K''j-1
  3. Kj = K'j-1 znamenko + v krouzku K''j-1.

Celkove schema

Algoritmus nejprve nad vstupni zpravou provede t cyklu a na zaver jeste jednu V-permutaci rizenou klicem Kt. Pro rozumnou miru bezpecnosti staci t = 4.

Analyza

Algoritmus byl publikovan v roce 1993, dosud neni znama analyza.

Proudove sifry

zpracovavaji otevreny text po jednotlivych bitech

System Fish

proudova sifra zalozena na Fibonacciho generatoru pseudonahodnych cisel

Vypoustejici generatory (shrinking generators)

predp. dva generatory pseudonahodnych cisel A a S.
A generuje posloupnost a0, a1, ... prvku GF(2)nA
S obdobne posloupnost s0, s1, ... prvku GF(2)nS
dale budeme pouzivat funkci d: GF(2)nS -> GF(2)
Vypoustejici procedura ponecha k dalsimu zpracovani prvky ai a si pokud d(si)=1
aplikaci vypousteci procedury ziskame posloupnosti z0, z1, ... z a0, a1, ... h0, h1, ... resp. z s0, s1, ...

Popis algoritmu Fish

zvolime nA, nS rovno 32
jako A i S budeme pouzivat uzavreny Fibonacciho generator
ai = ai-55 + ai-24 mod 232

si = si-52 + si-19 mod 232

Samozrejme prvky a-55, a-54, ..., a-1 musi byt vhodnym zpusobem odvozeny z klice. Obdobne pro posloupnost si.
Funkce d mapuje 32-bitovy vektor na jeho nejmene vyznacny bit.

Neni bezpecne pouzivat k sifrovani poimo posloupnost z0, z1, ... : s pravdepodobnosti 1/8 totiz trojice ai, ai-55, ai-24 projde cela do posloupnosti {zi}

rozdelime posloupnost z0, z1, ... na pary (z2i, z2i+1), h0, h1, ... na pary (h2i, h2i+1) a vypocitame vysledne hodnoty r2i, r2i+1:

c2i = z2i znamenko + v krouzku (h2i striska h2i+1)

d2i = h2i+1 striska (c2i znamenko + v krouzku z2i+1)

r2i = c2i znamenko + v krouzku d2i

r2i+1 = z2i+1 znamenko + v krouzku d2i

Jako tradicne znamenko + v krouzku znaci xor, striska oznacuje bitove and.
Protoze h2i, h2i+1 maji nejnizsi bit jednickovy, je vhodne nastavovat nejnizsi bit z2i, z2i+1 v zavislosti na hodnote r2i, r2i+1.

Sifrovani se provadi napr. xorovanim vysledne posloupnosti s otevrenym textem.

Analyza

Algoritmus byl publikovan koncem roku 1993, dodnes neni znama analyza.
© Tonda Benes, 1995
S prevodem tohoto dokumentu do HTML pomahal ©Dan Lukes, 1995
Toto je revision 1.0, 29.11.95
Tuto stranku shledlo jiz <pocet navstevniku> zvedavcu ...