Krüptograafia tunnid. Kaasaegsed plokkšifrid. RSA häkkimisvõistlused. Täiendavad teabeallikad

09.07.2003

Mis on krüpteerimine?

Inimkond on krüptimist kasutanud alates hetkest, mil ilmus esimene salajane teave, st selline teave, millele juurdepääs peaks olema piiratud. See oli väga kaua aega tagasi - näiteks üks kuulsamaid krüpteerimismeetodeid on saanud nime Caesari järgi, kes, kui ta seda ise välja ei mõelnud, siis aktiivselt kasutas (vt külgriba).

Krüptograafia tagab, et sõnumi tähendus on peidetud ja see selgub spetsiaalsete algoritmide ja võtmete abil dekrüpteerimisel. Me mõistame võtit kui krüpteerimis- ja dekrüpteerimisalgoritmide parameetrite spetsiifilist salajast olekut. Võtme tundmine võimaldab salasõnumit lugeda. Kuid nagu allpool näete, ei taga võtme mittetundmine alati seda, et võõras ei saa sõnumit lugeda.

Võtme teadmata šifri purustamise protsessi nimetatakse krüptoanalüüsiks. Šifri purustamiseks kuluva aja määrab selle krüptograafiline tugevus. Mida suurem see on, seda tugevam on krüpteerimisalgoritm. Veelgi parem, kui esialgu on võimatu üldse teada saada, kas häkkimise tulemus on saavutatav.

Põhilised kaasaegsed krüpteerimismeetodid

Erinevate krüpteerimismeetodite hulgast saab eristada järgmisi põhimeetodeid:

  • Asendus- või asendusalgoritmid - lähteteksti märgid asendatakse teise (või sama) tähestiku tähemärkidega vastavalt etteantud skeemile, mis on selle šifri võti. Eraldi seda meetodit tänapäevastes krüptosüsteemides praktiliselt ei kasutata selle äärmiselt madala krüptotugevuse tõttu.
  • Ümberpaigutamisalgoritmid – algteksti tähemärke vahetatakse kindla põhimõtte järgi, milleks on salavõti. Permutatsioonialgoritmil endal on madal krüptotugevus, kuid see on paljudes kaasaegsetes krüptosüsteemides elemendina kaasatud.
  • Gamma algoritmid - lähteteksti märgid lisatakse teatud juhusliku järjestuse tähemärkidele. Levinuim näide on failide “username.pwl” krüptimine, milles Microsoft Windows 95 operatsioonisüsteem salvestab antud kasutaja võrguressursside paroolid (NT-serveritesse sisselogimise paroolid, DialUp Interneti-juurdepääsu paroolid jne). .

Kui kasutaja sisestab Windows 95 sisse logides oma parooli, genereeritakse sellest RC4 krüpteerimisalgoritmi abil gamma (alati sama), mida kasutatakse võrguparoolide krüptimiseks. Parooli valiku lihtsus on antud juhul tingitud sellest, et Windows eelistab alati sama värviskeemi.

  • Algteksti keerukatel matemaatilistel teisendustel põhinevad algoritmid kindla valemi järgi. Paljud neist kasutavad lahendamata matemaatikaülesandeid. Näiteks Internetis laialdaselt kasutatav RSA krüpteerimisalgoritm põhineb algarvude omadustel.

Sümmeetrilised ja asümmeetrilised krüptosüsteemid

Enne üksikute algoritmide juurde asumist vaatleme lühidalt sümmeetriliste ja asümmeetriliste krüptosüsteemide mõistet. Salajase võtme genereerimine ja sellega sõnumi krüpteerimine on vaid pool võitu. Kuid kuidas saab sellist võtit saata kellelegi, kes peab seda kasutama algse sõnumi dekrüpteerimiseks? Krüpteerimisvõtme edastamist peetakse krüptograafia üheks peamiseks probleemiks.

Jäädes sümmeetrilise süsteemi (nii nimetatakse seetõttu, et krüpteerimiseks ja dekrüpteerimiseks kasutatakse sama võtit) raamistikku, on salajase võtme edastamiseks vajalik usaldusväärne sidekanal. Kuid selline kanal pole alati saadaval ja seetõttu töötasid Ameerika matemaatikud Diffie, Hellman ja Merkle 1976. aastal välja avaliku võtme ja asümmeetrilise krüptimise kontseptsiooni. Sellistes krüptosüsteemides on avalikult kättesaadav ainult krüpteerimisprotsessi võti ja dekrüpteerimisprotseduur on teada ainult salajase võtme omanikule.

Näiteks kui ma tahan, et mulle saadetakse sõnum, genereerin avaliku ja privaatvõtme. Ma saadan selle teile, teie krüpteerite sõnumi ja saadate selle mulle. Ainult mina saan sõnumi dekrüpteerida, kuna ma ei andnud salajast võtit kellelegi. Loomulikult on mõlemad võtmed seotud erilisel viisil (igas krüptosüsteemis erineval viisil) ja avaliku võtme levitamine ei hävita süsteemi krüptograafilist tugevust.

Asümmeetrilistes süsteemides peab olema täidetud järgmine nõue: puudub algoritm (või see pole veel teada), mis tuletaks algteksti krüptotekstist ja avalikust võtmest. Sellise süsteemi näiteks on tuntud RSA krüptosüsteem.

RSA algoritm

RSA-algoritm (selle loojate Rivest-Shamir-Adlemani perekonnanimede esitähtede järgi) põhineb algarvude (ja väga suurte) omadustel. Algarvud on need arvud, millel pole peale enda ja ühe jagajaid. Ja koaprarvud on need arvud, millel pole peale 1 ühiseid jagajaid.

Kõigepealt valime kaks väga suurt algarvu (suurte tugevate võtmete konstrueerimiseks on vaja suuri algarvu. Näiteks Unixi programm ssh-keygen genereerib vaikimisi 1024 biti pikkuseid võtmeid).

Määratleme parameetri n korrutamise tulemusena lk Ja q. Valime suure juhusliku numbri ja helistame sellele d, ja see peab olema korrutustulemusega kaasalgne (p -1)* (q -1).

Leiame arvu e, mille puhul seos on tõene

(e*d) mod ((p -1)*(q -1)) = 1

(mod- jagamise jääk, st kui e korrutatud d-ga jagatakse ((p -1)*(q -1)), siis jääk on 1).

Avalik võti on numbripaar e ja n ja suletud - d ja n.

Krüpteerimisel käsitletakse lähteteksti kui numbriseeriat ja iga numbriga teeme toimingu

C(i)= (M(i) e) mod n.

Tulemuseks on järjestus C(i), mis moodustab krüptoteksti. Teabe dekodeerimine toimub valemi järgi

M(i) = (C(i) d) mod n.

Nagu näete, nõuab dekrüpteerimine salajase võtme tundmist.

Proovime seda väikeste arvudega.

Paigaldame p = 3, q ​​= 7. Siis n=p*q=21. Vali d nagu 5. Valemist (e*5) mod 12=1 arvutama e=17. Avalik võti 17, 21 , saladus - 5, 21 .

Krüpteerime jada "12345":

C(1) = 1 17 mod 21 = 1

C(2) = 2 17 mod 21 = 11

C(3) = 3 17 mod 21 = 12

C(4) = 4 17 mod 21 = 16

C(5) = 5 17 mod 21 = 17

Krüptotekst – 1 11 12 16 17.

Kontrollime dekrüpteerimist:

M(1) = 15 mod 21 = 1

M(2) = 11 5 mod 21 = 2

M(3) = 12 5 mod 21 = 3

M(4) = 16 5 mod 21 = 4

M(5) = 17 5 mod 21 = 5

Nagu näha, langes tulemus kokku.

RSA krüptosüsteemi kasutatakse Internetis laialdaselt. Kui loote ühenduse turvalise serveriga SSL-i kaudu, installite oma arvutisse WebMoney sertifikaadi või loote ühenduse Open SSH või SecureShelli abil kaugserveriga, kasutavad kõik need programmid avaliku võtmega krüptimist, kasutades RSA algoritmi ideid. Kas see süsteem on tõesti nii usaldusväärne?

RSA häkkimisvõistlused

Alates selle loomisest on RSA-d pidevalt rünnatud jõhkra jõuga. 1978. aastal avaldasid algoritmi autorid artikli, kus nad esitasid stringi, mis oli krüpteeritud nende äsja leiutatud meetodil. Esimene inimene, kes sõnumi dešifreeris, sai 100 dollari suuruse preemia, kuid selleks tuli jagada 129-kohaline arv kaheks teguriks. See oli esimene võistlus RSA purustamiseks. Probleem lahenes alles 17 aastat pärast artikli avaldamist.

RSA krüptograafiline tugevus põhineb eeldusel, et avalikust võtmest privaatvõtme määramine on äärmiselt keeruline, kui mitte võimatu. Selleks oli vaja lahendada tohutu täisarvu jagajate olemasolu probleem. Seni pole keegi seda analüütiliste meetoditega lahendanud ja RSA algoritmi saab lahti murda vaid toore jõu abil. Rangelt võttes ei ole tõestatud ka väide, et faktoriseerimise probleem on keeruline ja RSA süsteemi murdmine keeruline.

Sõnumi teksti räsifunktsiooniga töötlemise tulemusel saadud number krüpteeritakse RSA algoritmi abil kasutaja privaatvõtmel ja saadetakse adressaadile koos kirja ja avaliku võtme koopiaga. Saaja, kasutades saatja avalikku võtit, täidab sissetuleval kirjal sama räsifunktsiooni. Kui mõlemad numbrid on võrdsed, tähendab see, et sõnum on ehtne, kuid kui vähemalt üks märk on muudetud, siis numbrid ei ühti.

Ühel Venemaa levinumal meiliklientil The Bat! on sisseehitatud võimalused kirjadele digiallkirjade lisamiseks (kirja redigeerimisel pöörake tähelepanu menüüpunktile Privaatsus). Loe selle tehnika kohta lähemalt artiklist (vt “PC World”, nr 3/02).

Riis. 3

Krüptograafia

Krüptograafia on teadus teabe muutmise põhimõtetest, vahenditest ja meetoditest, et kaitsta seda volitamata juurdepääsu ja moonutamise eest. Viimasel ajal on see väga-väga kiiresti arenenud. See on lõputu põnev võistlus, mis nõuab palju aega ja vaeva: krüptoanalüütikud murravad algoritme, mis olid kuni viimase ajani standardid ja laialdaselt kasutusel. Muide, hiljuti tõestasid matemaatikud Dan Goldston (USA) ja Kem Ildirim (Türgi) esimest seaduspärasust algarvude jaotuses (seni polnud selliseid seaduspärasusi märganud). Algarvud paiknevad teatud klastrites arvuteljel, mis teeb nende leidmise mõnevõrra lihtsamaks.

Üle maailma läbi viidud matemaatilised uuringud viivad pidevalt uute avastusteni. Kes teab, võib-olla oleme lahendamata matemaatiliste probleemide põhjal RSA algoritmi või muude krüptosüsteemide lõhkumise äärel.

Oleg Bunin- suurte Interneti-projektide tarkvaraarenduse spetsialist, ettevõtte Rambler töötaja, http://www..htm).

  • Sissejuhatus krüptograafiasse / Toim. V.V. Jaštšenko. M.: MTsNMO, 2000.
  • Nosov V. A. Krüptograafia arengu lühike ajalooline ülevaade // Konverentsi "Moskva ülikool ja krüptograafia areng Venemaal" materjal, MSU, 17.-18. oktoober 2002.
  • Salomaa A. Avaliku võtme krüptograafia. M., 1996.
  • Zimmerman F. PGP – avaliku võtmega krüptimine kõigile.
  • Caesari šifrisüsteem

    Asendusalgoritmi näide on Caesari krüpteerimissüsteem. See meetod põhineb sõnumi iga tähe asendamisel teise tähega, nihutades originaalist kindla arvu märkide võrra. Proovige dešifreerida Omar Khayyami nelikvärve (valmimisaeg - 10 minutit).

    RLZ YOMEIZ AVBZHU IYZAVLU, BZHSCHLU ZHSCHEZZHZ ZHUOSCHZ, EYSH YSHCHAZhFO ISHCHYVESH BSHCHIZHV EESH ZHSCHRSCHG: LF EMRSYU ЪZEZESCHG, RYYO RLZ IZISHCHEZZHEZ, INDUSTRIES ZEUKZLUYM IZISHCHEZ.

    Kas sa said hakkama? Siin on vastus:

    Et elada oma elu targalt, pead teadma palju,

    Alustamiseks pidage meeles kahte olulist reeglit:

    Pigem nälgida kui midagi süüa

    Ja parem on olla üksi kui lihtsalt kellegagi.

    Dekrüpteerimisvõti: nihutage seitsme tähemärgi võrra (võtke seitsmes) tähestikulises järjekorras vasakule. Tähestik on silmuseline. Tähemärgid ei ole tundlik.

    Windows ja paroolid

    Kuidas Windows paroole krüpteerib?

    Süsteem võtab parooli, teisendab selle suurtähtedeks, kärbib selle 14 tähemärgini, jagab need siis kaheks pooleks 7, krüpteerib mõlemad eraldi ja salvestab selle nii, mis muudab häkkimise pisut lihtsamaks. Muide, parooli väljamõtlemisel pidage meeles, et üle 14 märgi pikkusel kombinatsioonil on vähe tähendust.

    AES (Advanced Encryption Standard) võistlus

    80ndatel USA-s võtsid nad kasutusele sisekasutuseks mõeldud sümmeetrilise krüpteerimisstandardi - DES ((Data Encryption Standard, Venemaal on sarnane standard). Kuid aastal 1997, kui selgus, et 56-bitisest DES-võtmest ei piisa usaldusväärseks krüptosüsteem kuulutas Ameerika standardiinstituut välja konkursi uue standardalgoritmi loomiseks. 15 variandi hulgast valiti parim: Belgia algoritm Rijndael (selle nimi koosneb autorite nimedest - Rijmen ja Daemen, loetakse "Rijndael". See algoritm on juba sisse ehitatud erinevatesse krüptograafilistesse tööriistadesse, mida turule tarnisid teised finalistid. Konkursi võitjad olid MARS, RC6, Serpent, TwoFish. Kõik need algoritmid osutusid üsna tugevateks ja peavad edukalt vastu kõigile tuntud krüptoanalüüsi meetoditele .

    Krüptograafilised räsifunktsioonid

    Krüptograafilised räsifunktsioonid teisendavad mis tahes suurusega sisendandmed fikseeritud suurusega stringiks. Nende jaoks on äärmiselt raske leida:

    • kaks erinevat andmekogumit sama teisendustulemusega (kokkupõrkekindlus); näiteks aritmeetiliste toimingute arv, mis on vajalik andmeploki leidmiseks, millel on ka MD5 räsifunktsiooni lühisõnum, on ligikaudu 2 64;
    • sisendväärtus teadaoleva räsimise tulemuse põhjal (pöördumatus); MD5 puhul on esialgse sõnumi arvutamiseks vajalike operatsioonide hinnanguline arv 2128.

    Sergei Panasenko,
    Ankadi tarkvaraarenduse osakonna juhataja,
    [e-postiga kaitstud]

    Põhimõisted

    Avaandmete krüptitud andmeteks teisendamise protsessi ja vastupidi nimetatakse tavaliselt krüpteerimiseks ning selle protsessi kahte komponenti nimetatakse vastavalt krüpteerimiseks ja dekrüpteerimiseks. Matemaatiliselt esindavad seda teisendust järgmised sõltuvused, mis kirjeldavad toiminguid algse teabega:

    C = Ek1(M)

    M" = Dk2(C),

    kus M (sõnum) on avatud informatsioon (infoturbealases kirjanduses nimetatakse seda sageli „lähtetekstiks“);
    C (šifreeritud tekst) - krüptimise tulemusena saadud šifreeritud tekst (või krüptogramm);
    E (krüpteerimine) - krüpteerimisfunktsioon, mis teostab lähtetekstil krüptograafilisi teisendusi;
    k1 (võti) - funktsiooni E parameeter, mida nimetatakse krüpteerimisvõtmeks;
    M" - dekrüpteerimise tulemusena saadud teave;
    D (dekrüpteerimine) - dekrüpteerimisfunktsioon, mis teostab krüptograafilise teksti pöördteisendusi;
    k2 on teabe dekrüpteerimiseks kasutatav võti.

    Võtme mõiste standardis GOST 28147-89 (sümmeetriline krüpteerimisalgoritm) on määratletud järgmiselt: "krüptograafilise teisendusalgoritmi teatud parameetrite konkreetne salajane olek, mis tagab ühe teisenduse valimise võimalike teisenduste hulgast. antud algoritm." Teisisõnu, võti on unikaalne element, millega saab krüpteerimisalgoritmi tulemusi muuta: erinevate võtmete kasutamisel krüpteeritakse sama lähtetekst erinevalt.

    Selleks, et dekrüpteerimistulemus vastaks algsele sõnumile (st M" = M puhul), peavad üheaegselt olema täidetud kaks tingimust. Esiteks peab dekrüpteerimisfunktsioon D vastama krüpteerimisfunktsioonile E. Teiseks peab dekrüpteerimisvõti k2 vastama krüptimisele võti k1.

    Kui krüpteerimiseks kasutati krüptograafiliselt tugevat krüpteerimisalgoritmi, siis õige võtme k2 puudumisel on võimatu saada M" = M. Krüptograafiline tugevus on krüpteerimisalgoritmide põhiomadus ja näitab eelkõige originaali hankimise keerukuse astet tekst krüptitud tekstist ilma võtmeta k2.

    Krüpteerimisalgoritmid võib jagada kahte kategooriasse: sümmeetriline ja asümmeetriline krüptimine. Esimese puhul on krüpteerimis- ja dekrüpteerimisvõtmete suhe määratletud kujul k1 = k2 = k (st funktsioonid E ja D kasutavad sama krüpteerimisvõtit). Asümmeetrilise krüptimise korral arvutatakse võtmest k2 krüpteerimisvõti k1 selliselt, et pöördteisendus on võimatu, näiteks kasutades valemit k1 = ak2 mod p (a ja p on kasutatava algoritmi parameetrid).

    Sümmeetriline krüptimine

    Sümmeetrilised krüpteerimisalgoritmid pärinevad iidsetest aegadest: just seda teabe peitmise meetodit kasutas Rooma keiser Gaius Julius Caesar 1. sajandil eKr. e. ja tema leiutatud algoritmi tuntakse kui "Caesari krüptosüsteemi".

    Praegu on tuntuim sümmeetriline krüpteerimisalgoritm DES (Data Encryption Standard), mis töötati välja 1977. aastal. Kuni viimase ajani oli see “USA standard”, kuna selle riigi valitsus soovitas seda kasutada erinevate andmete krüpteerimissüsteemide juurutamiseks. Hoolimata asjaolust, et DES-i plaaniti algselt kasutada mitte kauemaks kui 10-15 aastat, hakati seda asendama alles 1997. aastal.

    Me ei käsitle DES-i üksikasjalikult (peaaegu kõigil lisamaterjalide loendis olevatel raamatutel on selle üksikasjalik kirjeldus), vaid pöördume kaasaegsemate krüpteerimisalgoritmide poole. Tasub vaid märkida, et krüpteerimisstandardi muutmise peamiseks põhjuseks on selle suhteliselt nõrk krüptograafiline tugevus, mille põhjuseks on see, et DES-võtme pikkus on vaid 56 olulist bitti. On teada, et kõiki võimalikke krüpteerimisvõtmeid proovides saab murda iga tugeva krüpteerimisalgoritmi (nn brute force rünnak). Lihtne on arvutada, et 1 miljonist protsessorist koosnev klaster, millest igaüks arvutab 1 miljon võtit sekundis, kontrollib peaaegu 20 tunni jooksul 256 DES-võtme varianti Ja kuna selline arvutusvõimsus on tänapäevaste standardite järgi üsna realistlik, on see selge et 56-bitine võti on liiga lühike ja DES-algoritm tuleb asendada tugevamaga.

    Tänapäeval kasutatakse üha enam kahte kaasaegset tugevat krüpteerimisalgoritmi: kodumaine standard GOST 28147-89 ja uus USA krüptostandard - AES (Advanced Encryption Standard).

    Standard GOST 28147-89

    GOST 28147-89 (joonis 1) määratletud algoritmi krüpteerimisvõtme pikkus on 256 bitti. See krüpteerib teabe 64-bitistes plokkides (sellisi algoritme nimetatakse plokialgoritmideks), mis seejärel jagatakse kaheks 32-bitiseks alamplokiks (N1 ja N2). Alamplokki N1 töödeldakse teatud viisil, misjärel lisatakse selle väärtus alamploki N2 väärtusega (liitmine toimub modulo 2, st rakendatakse loogilist XOR-operatsiooni - “eksklusiivne või”) ja seejärel alamplokid vahetatakse. Seda teisendust tehakse teatud arv kordi (“ringe”): 16 või 32, olenevalt algoritmi töörežiimist. Igas voorus tehakse kaks operatsiooni.

    Esimene on võtmete sisestamine. Alamploki N1 sisule lisatakse modulo 2 võtme Kx 32-bitise osaga. Täielik krüpteerimisvõti on kujutatud 32-bitiste alamvõtmete konkatenatsioonina: K0, K1, K2, K3, K4, K5, K6, K7. Krüpteerimisprotsessi käigus kasutatakse ühte neist alamvõtmetest olenevalt ümmargusest numbrist ja algoritmi töörežiimist.

    Teine operatsioon on laua vahetamine. Pärast võtme sisestamist jagatakse alamplokk N1 8 4-bitiseks osaks, millest igaühe väärtus asendatakse vastavalt alamploki selle osa asendustabelile. Seejärel pööratakse alamplokki 11 biti võrra vasakule.

    Tabelite asendused(Asenduskast - S-kast) kasutatakse sageli tänapäevastes krüpteerimisalgoritmides, seega tasub selgitada, kuidas selline toiming on korraldatud. Plokkide väljundväärtused registreeritakse tabelis. Teatud mõõtmega (meie puhul 4-bitise) andmeplokil on oma numbriline esitus, mis määrab väljundväärtuse arvu. Näiteks kui S-kast näeb välja nagu 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 ja 4-bitine plokk "0100" tuli sisendisse (väärtus 4), siis on tabeli järgi väljundi väärtus 15, st “1111” (0 a 4, 1 a 11, 2 a 2 ...).

    GOST 28147-89 määratletud algoritm pakub nelja töörežiimi: lihtne asendamine, gamma, gamma tagasisidega ja imitatsioonimanuste genereerimine. Nad kasutavad sama ülalkirjeldatud krüpteerimisteisendust, kuid kuna režiimide eesmärk on erinev, viiakse see teisendus igas neist läbi erinevalt.

    Režiimis lihtne asendamine Iga 64-bitise teabeploki krüptimiseks tehakse ülalkirjeldatud 32 vooru. Sel juhul kasutatakse 32-bitiseid alamvõtmeid järgmises järjestuses:

    K0, K1, K2, K3, K4, K5, K6, K7, K0, K1 jne - voorudes 1-24;

    K7, K6, K5, K4, K3, K2, K1, K0 - voorudes 25-32.

    Dekrüpteerimine selles režiimis toimub täpselt samal viisil, kuid alamvõtmete kasutamise järjestusega veidi erinev:

    K0, K1, K2, K3, K4, K5, K6, K7 - voorudes 1-8;

    K7, K6, K5, K4, K3, K2, K1, K0, K7, K6 jne – voorudes 9-32.

    Kõik plokid krüpteeritakse üksteisest sõltumatult, st iga ploki krüpteerimistulemus sõltub ainult selle sisust (algteksti vastav plokk). Kui originaalteksti (liht)teksti plokki on mitu identset, on ka vastavad šifriplokid identsed, mis annab krüptoanalüütikule, kes üritab šifrit lahti murda, kasulikku lisateavet. Seetõttu kasutatakse seda režiimi peamiselt krüpteerimisvõtmete endi krüpteerimiseks (väga sageli rakendatakse mitme võtmega skeeme, kus mitmel põhjusel krüpteeritakse võtmed üksteisega). Teabe enda krüptimiseks on ette nähtud veel kaks töörežiimi – gamma ja gamma koos tagasisidega.

    IN gamma režiim Iga lihtteksti plokk lisatakse bittide kaupa modulo 2 64-bitisesse šifri gammaplokki. Gamma šifr on spetsiaalne jada, mis saadakse teatud toimingute tulemusena registritega N1 ja N2 (vt joonis 1).

    1. Nende esialgne täitmine kirjutatakse registritesse N1 ja N2 – 64-bitine väärtus, mida nimetatakse sünkroniseerimissõnumiks.

    2. Registrite N1 ja N2 sisu (antud juhul sünkroonimisteated) krüpteeritakse lihtsas asendusrežiimis.

    3. Registri N1 sisu liidetakse modulo (232 - 1) konstandiga C1 = 224 + 216 + 28 + 24 ja liitmise tulemus kirjutatakse registrisse N1.

    4. Registri N2 sisu liidetakse mooduliga 232 konstandiga C2 = 224 + 216 + 28 + 1 ja liitmise tulemus kirjutatakse registrisse N2.

    5. Registrite N1 ja N2 sisu väljastatakse šifri 64-bitise gammaplokina (sel juhul moodustavad N1 ja N2 esimese gammaploki).

    Kui on vaja järgmist gammaplokki (st krüpteerimist või dekrüpteerimist tuleb jätkata), naaseb see 2. sammu juurde.

    Dekrüpteerimiseks genereeritakse gamma sarnasel viisil ning seejärel muudetakse šifritekst ja gammabitid uuesti XOR-iga. Kuna see toiming on pööratav, siis õigesti arendatud skaala puhul saadakse algtekst (tabel).

    Krüpteerimine ja dekrüpteerimine gammarežiimis

    Gamma dekrüpteerimiseks vajaliku šifri väljatöötamiseks peab krüptogrammi dekrüpteerival kasutajal olema sama võti ja sama sünkroonimissõnumi väärtus, mida kasutati teabe krüptimisel. Vastasel juhul ei ole võimalik krüpteeritud tekstist originaalteksti kätte saada.

    Enamikus GOST 28147-89 algoritmi rakendustes ei ole sünkroonimisteade salajane, kuid on süsteeme, kus sünkroonimisteade on krüpteerimisvõtmega sama salajane element. Selliste süsteemide puhul suurendatakse algoritmi efektiivset võtme pikkust (256 bitti) salajase sünkroniseerimissõnumi veel 64 biti võrra, mida võib samuti pidada võtmeelemendiks.

    Tagasiside gammarežiimis ei kasutata N1 ja N2 registrite täitmiseks alates 2. plokist eelmist gammaplokki, vaid eelmise tavateksti ploki krüpteerimise tulemust (joonis 2). Esimene plokk selles režiimis genereeritakse täiesti sarnaselt eelmisele.

    Riis. 2. Šifreeritud gamma arendamine gammarežiimis koos tagasisidega.

    Režiimi arvestades imiteerivate eesliidete genereerimine, tuleks määratleda genereerimise subjekti mõiste. Eesliide on krüptograafiline kontrollsumma, mis arvutatakse krüpteerimisvõtme abil ja mille eesmärk on kontrollida sõnumite terviklikkust. Imitatsiooniprefiksi genereerimisel tehakse järgmised toimingud: infomassiivi esimene 64-bitine plokk, mille jaoks arvutatakse imitatsiooniprefiks, kirjutatakse registritesse N1 ja N2 ning krüpteeritakse vähendatud lihtasendusrežiimis ( sooritatakse esimesed 16 vooru 32-st). Saadud tulemus liidetakse moodul 2 järgmise teabeplokiga ja tulemus salvestatakse N1 ja N2.

    Tsükkel kordub kuni viimase teabeplokini. Nende teisenduste tulemusena tekkivat N1 ja N2 registrite või nende osade 64-bitist sisu nimetatakse imitatsiooniprefiksiks. Imitatsiooni eesliite suurus valitakse sõnumite nõutava usaldusväärsuse alusel: imitatsiooni eesliite r biti pikkusega on tõenäosus, et sõnumi muutus jääb märkamatuks, 2-r Kasutatakse 32-bitist imitatsiooni eesliidet ehk pool registrite sisust. Sellest piisab, sest nagu iga kontrollsumma, on ka imitatsioonimanus mõeldud eelkõige kaitsma teabe juhusliku moonutamise eest. Andmete tahtliku muutmise eest kaitsmiseks kasutatakse muid krüptograafilisi meetodeid – eelkõige elektroonilist digitaalallkirja.

    Teabe vahetamisel toimib imiteeriv eesliide omamoodi täiendava kontrollivahendina. See arvutatakse lihtteksti jaoks, kui mis tahes teave on krüptitud, ja saadetakse koos šifreeritud tekstiga. Pärast dekrüpteerimist arvutatakse imitatsiooni eesliite uus väärtus ja võrreldakse saadetud väärtusega. Kui väärtused ei ühti, tähendab see, et šifritekst oli edastamise ajal rikutud või dekrüpteerimisel kasutati valesid võtmeid. Imitatsiooniprefiks on eriti kasulik võtmeteabe õige dekrüpteerimise kontrollimiseks mitme võtmega skeemide kasutamisel.

    Algoritmi GOST 28147-89 peetakse väga tugevaks algoritmiks - praegu pole selle avalikustamiseks välja pakutud tõhusamaid meetodeid kui ülalmainitud “toore jõu” meetod. Selle kõrge turvalisus saavutatakse peamiselt tänu suurele võtme pikkusele - 256 bitti. Salajase sünkroonimissõnumi kasutamisel suureneb efektiivne võtme pikkus 320 bitini ja asendustabeli krüpteerimine lisab bitte juurde. Lisaks sõltub krüptograafiline tugevus teisendusringide arvust, mis vastavalt standardile GOST 28147-89 peaks olema 32 (sisendandmete hajutamise täielik mõju saavutatakse pärast 8 ringi).

    AES standard

    Erinevalt pikka aega saladuseks jäänud algoritmist GOST 28147-89 valiti DES-i asendamiseks mõeldud Ameerika krüpteerimisstandard AES välja avaliku konkursi korras, kus kõik huvitatud organisatsioonid ja eraisikud said kandidaatalgoritme uurida ja kommenteerida.

    Konkursi DES-i asendamiseks kuulutas 1997. aastal välja USA riiklik standardite ja tehnoloogia instituut (NIST – National Institute of Standards and Technology). Konkursile esitati 15 kandidaatalgoritmi, mis on välja töötatud nii krüptograafia alal tuntud organisatsioonide (RSA Security, Counterpane jt) kui ka eraisikute poolt. Konkursi tulemused kuulutati välja 2000. aasta oktoobris: võitjaks tunnistati Rijndaeli algoritm, mille töötasid välja kaks Belgia krüptograafi Vincent Rijmen ja Joan Daemen.

    Rijndaeli algoritm ei sarnane enamiku tuntud sümmeetriliste krüpteerimisalgoritmidega, mille struktuuri nimetatakse Feisteli võrguks ja mis on sarnane Venemaa GOST 28147-89-ga. Feisteli võrgu eripära seisneb selles, et sisendväärtus jagatakse kaheks või enamaks alamplokiks, millest osa igas voorus töödeldakse vastavalt kindlale seadusele, misjärel kantakse see töötlemata alamplokkidele (vt joonis 1).

    Erinevalt kodumaisest krüpteerimisstandardist kujutab Rijndaeli algoritm andmeplokki kahemõõtmelise baidimassiivi kujul, mille suurus on 4X4, 4X6 või 4X8 (krüptitud teabeploki mitme fikseeritud suuruse kasutamine on lubatud). Kõik toimingud tehakse massiivi üksikute baitidega, aga ka sõltumatute veergude ja ridadega.

    Rijndaeli algoritm teostab neli teisendust: BS (ByteSub) - massiivi iga baidi tabeli asendamine (joonis 3); SR (ShiftRow) - massiivi ridade nihe (joonis 4). Selle toimingu puhul jääb esimene rida muutumatuks ja ülejäänud nihutatakse tsükliliselt bait-baidi haaval kindla arvu baitide võrra vasakule, olenevalt massiivi suurusest. Näiteks 4X4 massiivi puhul nihutatakse ridu 2, 3 ja 4 vastavalt 1, 2 ja 3 baiti. Edasi tuleb MC (MixColumn) – tehing sõltumatute massiivi veergudega (joonis 5), kui iga veerg korrutatakse kindla reegli järgi fikseeritud maatriksiga c(x). Ja lõpuks AK (AddRoundKey) - võtme lisamine. Massiivi igale bitile lisatakse modulo 2 ümmarguse võtme vastav bitt, mis omakorda arvutatakse teatud viisil krüpteerimisvõtmest (joonis 6).


    Riis. 3. Operatsioon BS.

    Riis. 4. Operatsioon SR.

    Riis. 5. Operatsioon MC.

    Krüpteerimisvoorude arv (R) Rijndaeli algoritmis on muutuv (10, 12 või 14 ringi) ning sõltub ploki suurusest ja krüpteerimisvõtmest (võtme jaoks on ka mitu fikseeritud suurust).

    Dekrüpteerimine toimub järgmiste pöördoperatsioonide abil. Tabeli inversioon ja tabeli asendamine tehakse pöördtabelis (võrreldes krüpteerimisel kasutatavaga). SR-i pöördoperatsioon on ridade pööramine paremale, mitte vasakule. MC pöördtehte on korrutamine samu reegleid kasutades teise maatriksiga d(x), mis vastab tingimusele: c(x) * d(x) = 1. Võtme AK lisamine on iseenda pöördtehte, kuna see kasutab ainult XOR-i. operatsiooni. Neid pöördoperatsioone rakendatakse dekrüpteerimisel krüptimisel kasutatavale vastupidises järjestuses.

    Rijndaelist on saanud andmete krüptimise uus standard, kuna sellel on teiste algoritmide ees mitmeid eeliseid. Esiteks tagab see kõrge krüpteerimiskiiruse kõigil platvormidel: nii tarkvara kui ka riistvara juurutamisel. Seda eristavad teiste konkursile esitatud algoritmidega võrreldes võrreldamatult paremad võimalused arvutuste paralleelseerimiseks. Lisaks on selle tööks vajalikud ressursinõuded minimaalsed, mis on oluline, kui seda kasutatakse piiratud arvutusvõimega seadmetes.

    Algoritmi ainsaks puuduseks võib pidada selle loomupärast ebatavalist skeemi. Fakt on see, et Feisteli võrgul põhinevate algoritmide omadused on hästi läbi uuritud ja Rijndael võib seevastu sisaldada varjatud turvaauke, mida saab avastada alles mõne aja möödudes selle laialdase kasutamise algusest.

    Asümmeetriline krüptimine

    Nagu juba märgitud, kasutavad asümmeetrilised krüpteerimisalgoritmid kahte võtit: k1 - krüpteerimisvõti ehk avalik ja k2 - dekrüpteerimisvõti ehk salajane võti. Avalik võti arvutatakse saladusest: k1 = f(k2).

    Asümmeetrilised krüpteerimisalgoritmid põhinevad ühesuunaliste funktsioonide kasutamisel. Definitsiooni järgi on funktsioon y = f(x) ühesuunaline, kui: seda on lihtne arvutada kõigi x võimalike väärtuste korral ja enamiku y võimalike väärtuste jaoks on üsna raske arvutada x väärtust nii, et y = f(x).

    Ühesuunalise funktsiooni näide on kahe suure arvu korrutamine: N = P*Q. Iseenesest on selline korrutamine lihtne tehe. Pöördfunktsioon (N-i lagunemine kaheks suureks teguriks), mida tänapäevaste hinnangute kohaselt nimetatakse faktoriseerimiseks, on aga üsna keeruline matemaatiline probleem. Näiteks faktoriseerimine N mõõtmega 664 bitti P ? Q vajab ligikaudu 1023 tehtet ja x pöördvõrdeliseks arvutamiseks mooduleksponenti y = ax mod p jaoks teadaolevate a, p ja y (samade a ja p mõõtmetega) jaoks peate tegema ligikaudu 1026 tehtet. Viimast toodud näidet nimetatakse diskreetse logaritmi probleemiks (DLP) ja seda tüüpi funktsiooni kasutatakse sageli asümmeetrilistes krüpteerimisalgoritmides, aga ka elektroonilise digitaalallkirja loomiseks kasutatavates algoritmides.

    Teine oluline asümmeetrilises krüptimises kasutatav funktsioonide klass on ühesuunalised tagaukse funktsioonid. Nende definitsioon ütleb, et funktsioon on ühesuunaline tagauksega, kui see on ühesuunaline ja on võimalik tõhusalt arvutada pöördfunktsioon x = f-1(y), st kui "tagauks" (mingi salajane arv, mida kasutatakse asümmeetrilise krüptimise jaoks algoritmid – salajase võtme väärtus).

    Ühesuunalisi tagaukse funktsioone kasutatakse laialdaselt kasutatavas asümmeetrilises krüpteerimisalgoritmis RSA.

    RSA algoritm

    1978. aastal kolme autori (Rivest, Shamir, Adleman) poolt välja töötatud see sai oma nime arendajate perekonnanimede esitähtede järgi. Algoritmi usaldusväärsus põhineb suurte arvude faktoriseerimise ja diskreetsete logaritmide arvutamise raskusel. RSA algoritmi peamiseks parameetriks on süsteemimoodul N, millega tehakse süsteemis kõik arvutused ja N = P*Q (P ja Q on salajased juhuslikud algarvud, tavaliselt sama mõõtmega).

    Salavõti k2 valitakse juhuslikult ja see peab vastama järgmistele tingimustele:

    1

    kus GCD on suurim ühisjagaja, st k1 peab vastama Euleri funktsiooni F(N) väärtusele, kusjuures viimane on võrdne positiivsete täisarvude arvuga vahemikus 1 kuni N ja arvutatakse järgmiselt. F(N) = (P – 1)*(Q – 1).

    Seosest arvutatakse avalik võti k1 (k2*k1) = 1 mod F(N), ja selleks kasutatakse üldistatud eukleidilist algoritmi (algoritm suurima ühisjagaja arvutamiseks). Andmeploki M krüpteerimine RSA-algoritmi abil toimub järgmiselt: C=M [võimsusele k1] mood N. Pange tähele, et kuna reaalses RSA-d kasutavas krüptosüsteemis on arv k1 väga suur (praegu võib selle mõõde ulatuda kuni 2048 bitini), siis M otsene arvutamine [võimsusele k1] ebareaalne. Selle saamiseks kasutatakse M korduva kvadratuuri ja tulemuste korrutamise kombinatsiooni.

    Selle funktsiooni ümberpööramine suurte mõõtmete korral ei ole teostatav; teisisõnu on teadaolevate C, N ja k1 juures võimatu M leida. Kuid salajase võtme k2 olemasolul saab lihtsate teisenduste abil arvutada M = Ck2 mod N. Ilmselgelt on lisaks salajasele võtmele endale vaja tagada ka parameetrite P ja Q salastatus. Kui ründaja saab nende väärtused , saab ta arvutada salajase võtme k2.

    Milline krüptimine on parem?

    Sümmeetrilise krüptimise peamiseks puuduseks on võtmete ülekandmine "käest kätte". See puudus on väga tõsine, kuna see muudab võimatuks sümmeetrilise krüptimise kasutamise piiramatu arvu osalejatega süsteemides. Kuid muidu on sümmeetrilisel krüptimisel mõned eelised, mis on asümmeetrilise krüptimise tõsiste puuduste taustal selgelt nähtavad.

    Esimene neist on krüpteerimis- ja dekrüpteerimistoimingute madal kiirus, mis on tingitud ressursimahukate toimingute olemasolust. Teine "teoreetiline" puudus on see, et asümmeetriliste krüpteerimisalgoritmide krüptograafiline tugevus ei ole matemaatiliselt tõestatud. Selle põhjuseks on eelkõige diskreetse logaritmi probleem – pole veel tõestatud, et selle lahendamine vastuvõetava aja jooksul on võimatu. Asjatuid raskusi tekitab ka vajadus kaitsta avalikke võtmeid asendamise eest – seadusliku kasutaja avalikku võtit asendades saab ründaja olulise sõnumi oma avaliku võtmega krüpteerida ja seejärel oma privaatvõtmega hõlpsasti dekrüpteerida.

    Need puudused ei takista aga asümmeetriliste krüpteerimisalgoritmide laialdast kasutamist. Tänapäeval on krüptosüsteeme, mis toetavad avalike võtmete sertifitseerimist, aga ka kombineerivad sümmeetrilisi ja asümmeetrilisi krüpteerimisalgoritme. Kuid see on eraldi artikli teema.

    Täiendavad teabeallikad

    Tõsiselt krüpteerimise vastu huvi tundvatel lugejatel soovitab autor oma silmaringi avardada järgmiste raamatute abil.

    1. Brassard J. "Moodne krüptoloogia".
    2. Petrov A. A. "Arvuti turvalisus: krüptograafilised kaitsemeetodid."
    3. Romanets Yu V., Timofeev P. A., Shangin V. F. "Teabekaitse kaasaegsetes arvutisüsteemides."
    4. Sokolov A.V., Shangin V.F. "Teabekaitse hajutatud ettevõtete võrkudes ja süsteemides."

    Krüpteerimisalgoritmide täieliku kirjelduse leiate järgmistest dokumentidest:

    1. GOST 28147-89. Infotöötlussüsteem. Krüptograafiline kaitse. Krüptograafiline teisendusalgoritm. - M.: NSV Liidu riiklik standard, 1989.
    2. AES-algoritm: http://www.nist.gov/ae.
    3. RSA algoritm: http://www.rsasecurity.com/rsalabs/pkcs/pkcs-1.

    Viimati tutvusite suurte ja kohutavate kodumaiste šifritega. See oli väga raske õppetund, sest need krüptosüsteemid valvavad riigisaladusi. Kas saate mulle öelda, kus see on keerukam? Aga siin, palun! Tegelikult ärge kartke, seekord me ei sukeldu nii sügavale matemaatikasse ega kaalu krüpteerimisrežiime - olete nende põhimõtted juba õppinud (või mitte). Vaatame läbi välismaa tippšifrid ja vaatame, kuidas neid praktikas kasutatakse.

    Teekaart

    See on sarja “Sukeldu krüptosse” neljas õppetund. Kõik seeria õppetunnid kronoloogilises järjekorras:

    • Põhialused ja ajaloolised kodeerijad. Kuidas nihke-, asendus-, Richard Sorge, Vernam ja šifreerimismasinad töötavad (ja neid analüüsitakse)
    • Mis see on, kuidas võtmete levitamine toimub ja kuidas tugevat võtit valida
    • Mis on Feisteli võrk ja millised on kaasaegsetes protokollides kasutatavad kodumaised plokkšifrid - GOST 28147-89, “Kuznechik”
    • Õppetund 4. Tänapäevased võõršifrid. Mille poolest erinevad Bruce Schneieri 3DES, AES, Blowfish, IDEA, Threefish ja kuidas need töötavad (oled sa siin)
    • Elektrooniliste allkirjade tüübid, kuidas need töötavad ja kuidas neid kasutada
    • Õppetund 6. Kvantkrüptograafia. Mis see on, kus seda kasutatakse ja kuidas see aitab salajaste võtmete levitamisel, juhuslike numbrite ja elektrooniliste allkirjade genereerimisel

    3DES

    Niisiis, esmalt välismaiste šifrite seerias vaatleme 3DES-i või pigem selle lähimat sugulast DES-i (Data Encryption Standard), mis, kuigi seda enam sellisena ei kasutata, on 3DES-i esivanem.

    DES töötas välja IBMi uurimislabori matemaatikute meeskond, kuhu kuulus juba tuttav Feistel. Šifri esimene versioon kandis nime "Lucifer", kuid hiljem seda muudeti ja lõpuks võeti see kasutusele ametliku andmete krüpteerimisalgoritmina (DEA). See püsis maailmastandardina üle kahekümne aasta, enne kui asendati Triple DES-iga.

    Vaatame, kuidas DES-i krüpteerimisalgoritm töötab. Selleks peate meeles pidama Feisteli võrgu toimimist. DES on 16-ringiline sümmeetriliste krüpteerimisvõtmetega Feisteli võrk. Tekstiploki pikkus on 64 bitti, ümmarguse võtme pikkus 48 bitti. Niisiis, vaatame läbi DES-krüptimise põhietapid, jättes välja karmi matemaatilise poole:

    1. Tekst, nagu iga muu krüptimise puhul, on jagatud 64-bitisteks plokkideks.
    2. 56-bitisest võtmest genereeritakse 16 48-bitist ümarat võtit.
    3. Iga plokk läbib permutatsiooni, see tähendab, et kõik sisendploki bitid segatakse vastavalt teatud tabelile.
    4. Plokk jagatakse pooleks ja siseneb tuttavasse Feisteli võrku, kus keritakse 16 ringi.
    5. Me ühendame pooled.
    6. Ja veel üks muudatus.

    Alguse ja lõpu permutatsioonid ei oma DES-i krüptograafia jaoks tähendust. Mõlemad permutatsioonid on ilma võtmeteta ja nende jaoks on tabelid eelnevalt määratletud. Põhjus, miks need DES-i kaasatakse, on ebaselge ja DES-i disainerid pole selle kohta midagi öelnud. Võib eeldada, et algoritm oli plaanitud realiseerida riistvaras (kiipides) ja need kaks keerulist permutatsiooni oleks pidanud muutma tarkvaras krüpteerimismehhanismi simuleerimise keeruliseks.

    Siin on tegelikult kõik, mida pead teadma DES-algoritmi toimimise kohta. Kui süveneda sellesse, kuidas Feisteli võrgus defineeritud funktsioon töötab, siis on sellega kõik korras. See teostab nii permutatsiooni kui ka asendamist (S-kastid, nagu võib-olla mäletate eelmisest artiklist) ja lisamist ümara võtmega.

    Kuid pöördume tagasi kolmekordse DES või kolmekordse DES juurde. See muutus vajalikuks, kuna 56-bitine DES-võti oli toore jõu suhtes haavatav ja arvutusvõimsuse kasvuga muutus see probleem üha teravamaks. Tänapäeval saadaoleva tehnoloogia abil saab kontrollida miljon võtit sekundis. See tähendab, et DES-i jõhkra jõuga dekrüpteerimiseks, kasutades ainult ühe protsessoriga arvutit, kuluks rohkem kui kaks tuhat aastat.

    Aga kui võtame ühe miljoni protsessorituumaga arvuti, mis töötleb võtmeid paralleelselt, saame kogu võtmekomplekti kontrollida umbes 20 tunniga. Kui DES kasutusele võeti, oli sellise arvuti maksumus mitu miljonit dollarit, kuid see langes kiiresti. 1998. aastal loodi spetsiaalne arvuti – ja leidis võtme 112 tunniga.

    Võtme kiire leidmise probleemi lahendamiseks soovitasid nutikad välismaised krüptograafid kasutada kahte võtit ja kaks korda kasutada DES-i. Topelt-DES oli aga haavatav kohtumise keskel. Selle ründe läbiviimiseks peab ründajal olema tavatekst ja vastav šifritekst. Ründaja krüpteerib lihtteksti kõigi võimalike võtmetega, kirjutades tulemused tabelisse 1. Seejärel dekrüpteerib šifreeritud teksti kõigi võimalike võtmetega ja kirjutab tulemuse tabelisse 2. Seejärel otsib ründaja tabelitest 1 ja 2 vasteid.

    Seda tüüpi rünnak hõlmab võtmete toore jõuga krüptimist nii šifri- kui ka lihtteksti poolel ning nõuab umbes neli korda rohkem arvutusi kui tavaline DES-võtme toores jõud ja vahetulemuste salvestamiseks üsna palju mälu. Praktikas on rünnak siiski teostatav, muutes Double DES kasutuskõlbmatuks.

    Triple DES-iga on asjad täiesti erinevad. Kolme võtme kasutamine ja algoritmide rakendamine diagrammil näidatud järjestuses pikendas DES eluiga veel mitu aastat.


    Imeline DES

    Mis siis DES-is nii head on? Seda krüpteerimisalgoritmi on põhjalikult analüüsitud. DES-il oli plokkšifrite kaks väga olulist omadust – laviin ja täielikkus. On aeg oma krüptosõnavara laiendada!
    Laviiniefekt tähendab, et väikesed muudatused algtekstis (või võtmes) võivad põhjustada suuri muudatusi šifreeritud tekstis.

    On tõestatud, et DES-il on kõik selle omaduse tunnused.

    Kuigi kaks lihtteksti plokki erinevad ainult kõige parempoolsema biti poolest, erinevad šifreeritud tekstiplokid 29 biti võrra. See tähendab, et lihtteksti umbes 1,5% muudatus põhjustab umbes 45% šifreeritud teksti muutuse.

    Täielikkuse efekt seisneb selles, et iga šifriteksti bitt peab sõltuma paljudest lihtteksti bittidest. Nagu juba teada saime, kasutab DES nii permutatsioone kui ka asendusi – kõik teisendused määravad iga šifreeritud teksti biti sõltuvuse mitmest algteksti bitist.

    Kus DES-i kasutatakse? Jah, peaaegu kõikjal on selle rakendused enamikus tarkvarateekides olemas. Kuid kes teab, kui turvaline on tänapäeval DES-i kasutamine? Kuigi IBM väitis, et algoritm oli 17 inimaasta pikkuse intensiivse krüptoanalüüsi tulemus, kartsid mõned inimesed, et NSA on sisestanud algoritmi lünga, mis võimaldas agentuuril pealtkuulatud sõnumeid hõlpsasti dekrüpteerida. USA senati luurekomitee uuris seda teemat hoolikalt ja loomulikult ei leidnud midagi, süüdistused NSA vastu loobuti ning uuringu tulemused salastati sellegipoolest. Ühesõnaga, Ameerikas on juba pikemat aega keerlenud kuulujutud ja spekulatsioonid selle üle, kas DES-i peaks usaldama või mitte. Aga nagu ma usun, kirjeldab siinset olukorda ütlus: "Tark inimene ei räägi, loll ei mõista." Lõppkokkuvõttes tunnistas NSA, et ta ei saa IBM-ile nii tähtsat ülesannet usaldada ja tegi mitmeid muudatusi, näiteks täpsustas S-kaste.

    Kogu oma eksisteerimise ajal on DES olnud erinevate krüptoanalüüsi tehnikate sihtmärk. Krüptoanalüütikud ei lõpetanud kunagi DES-i purustamismasinate testimist, et näha, kui kaua teksti dešifreerimine aega võtab. Sellega seoses on selle algoritmi lugematul hulgal erinevaid modifikatsioone ilmunud ja 3DES pole kaugeltki kõige keerukam.

    Märkus: Sellel loengul on mitu eesmärki. Näidake erinevust traditsiooniliste ja kaasaegsete sümmeetriliste võtmešifrite vahel. Esitage kaasaegseid plokkšifreid ja arutlege nende omaduste üle. Selgitage, miks tänapäevased plokkšifrid tuleb kujundada asendusšifritena. Tutvustage plokkšifrite komponente, nagu P-kastid ja S-kastid. Arutage ja näidake erinevust kahe šifriklassi vahel: Feisteli šifrid ja mitte Feisteli šifrid. Arutage kahte tüüpi rünnakuid, mis on spetsiaalselt suunatud tänapäevaste plokkšifrite purustamisele: diferentsiaal- ja lineaarne krüptoanalüüs. Tutvustage mõistet "voošifrid" ja näidake erinevust sünkroonsete ja mittesünkroonsete šifrite vahel. Arutage lineaarse ja mittelineaarse nihkeregistri tagasisidet voošifrite rakendamiseks.

    Traditsioonilised šifrid koos sümmeetriline võti, mida oleme seni uurinud, on iseloomule orienteeritud. Arvuti tulekuga muutusid vajalikuks bitipõhised šifrid. Kuna teave, mida tuleb krüpteerida, ei ole alati ainult tekst; see võib koosneda ka numbritest, graafikast, heli- ja videoandmetest. Seda tüüpi andmeid on mugav teisendada bitivooks, see voog krüpteerida ja seejärel krüptitud voog edastada. Lisaks, kui teksti töödeldakse bititasemel, asendatakse iga märk 8 (või 16) bitiga, mis tähendab, et märkide arv muutub 8 (või 16) korda suuremaks. Rohkemate märkide segamine suurendab turvalisust.

    See peatükk annab vajaliku aluse tänapäevaste plokk- ja voošifrite uurimiseks, mida käsitletakse järgmises kolmes peatükis. Suurem osa sellest peatükist on pühendatud tänapäevaste plokkšifrite üldiste ideede käsitlemisele ja ainult väike osa on pühendatud tänapäevaste voošifrite põhimõtetele.

    7.1. Kaasaegsed plokkšifrid

    Kaasaegne sümmeetrilise võtmega plokkšifr krüpteerib n-bitise lihtteksti ploki või dekrüpteerib n-bitise šifriteksti ploki. Krüpteerimis- või dekrüpteerimisalgoritm kasutab k-bitist võtit. Dekrüpteerimisalgoritm peab olema krüpteerimisalgoritmi pöördväärtus ja mõlemad töötavad sama salajase võtmega, et Bob saaks Alice'i saadetud sõnumi rekonstrueerida. Joonis 7.1 näitab krüptimise ja dekrüpteerimise üldist ideed kaasaegses plokkšifris.


    Riis. 7.1.

    Kui teade on väiksem kui n bitti, tuleb selle n-bitise ploki loomiseks lisada täidis; kui sõnumil on rohkem kui n bitti, tuleb see jagada n-bitisteks plokkideks ning vajadusel lisada viimasele plokile vastav täidis. Tavalised väärtused n jaoks on tavaliselt 64, 128, 256 või 512 bitti.

    Näide 7.1

    Mitu täiendavat bitti tuleb 100-märgilisele sõnumile lisada, kui kodeering on 8-bitine ASCII ja plokišifr aktsepteerib 64-bitiseid plokke?

    Lahendus

    Kodeerige 100 tähemärki 8-bitise ASCII abil. See teade sisaldab 800 bitti. Algtekst peab olema jagatav 64-ga. Kui | M | ja | Pad |- siis sõnumi pikkus ja polsterduse pikkus

    | M | + | Pad | == 0 mod 64 -> | Pad | = -800 mod 64->32 mod 64

    See tähendab, et sõnumile tuleb lisada 32 bitti täidist (näiteks nullid). Seejärel koosneb tekst 832 bitist ehk kolmeteistkümnest 64-bitisest plokist. Pange tähele, et ainult viimane plokk sisaldab polsterdust. Krüpteerija kasutab krüpteerimisalgoritmi kolmteist korda, et luua kolmteist šifriteksti plokki.

    Asendamine või ülevõtmine

    Kaasaegse plokkšifri saab konstrueerida nii, et see toimiks kas asendusšifrina või transpositsioonišifrina. See on sama idee, mida kasutatakse traditsioonilistes šifrites, välja arvatud see, et asendatavad või teisaldatavad märgid sisaldavad märkide asemel bitte.

    Kui šifr on kujundatud nii asendusšifr, saab lähtetekstis olevad bitiväärtused 1 või 0 asendada kas 0 või 1-ga. See tähendab, et tavatekstil ja šifreeritud tekstil võib olla erinev arv ühikuid. 64-bitist lihtteksti plokki, mis sisaldab 12 nulli ja 52 ühte, saab šifreeritud tekstis esitada 34 nulliga ja 30 ühega. Kui šifr on kujundatud nii permutatsiooni šifr (transpositsioon), muudavad bitid ainult oma järjestust (liikumist), säilitades originaalis ja šifreeritud tekstis sama arvu märke. Mõlemal juhul on võimalike n-bitiste lihttekstide või šifreeritud tekstide arv 2n, kuna igal plokis kasutataval n bitil võib olla üks kahest väärtusest – 0 või 1,2 64 64-bitist plokki ühe leidmiseks, mis teeb meel. Kui Eve saaks proovida 1 miljard plokki sekundis, kuluks sadu aastaid, enne kui see töö õnnestuks.

    b. Teisel juhul (ülevõtmine) teab Eve, et algtekstis on täpselt 10 ühte, sest transponeerimine ei muuda üheliste (ehk nullide) arvu šifritekstis. Eve saab käivitada ammendava otsingurünnaku, kasutades ainult neid 64-bitisi plokke, millel on täpselt 10. On ainult (64!) / [(10!) (54!)] = 151 473 214 816 2 64 sõna 64 bitist, milles on täpselt 10 ühikut. Eve saab neid kõiki testida vähem kui 3 minutiga, kui ta suudab teha 1 miljard testi sekundis.

    Ammendavale otsingurünnakule vastupidav kaasaegne plokkšifr peab olema kujundatud asendusšifrina.

    Andmete krüpteerimine on eraelu puutumatuse kaitsmiseks äärmiselt oluline. Selles artiklis käsitlen erinevaid krüptimise tüüpe ja meetodeid, mida tänapäeval andmete kaitsmiseks kasutatakse.

    Kas sa teadsid?
    Juba Rooma ajal kasutas Julius Caesar krüptimist, et muuta kirjad ja sõnumid vaenlasele loetamatuks. See mängis olulist rolli sõjalise taktikana, eriti sõdade ajal.

    Kuna Interneti võimalused kasvavad jätkuvalt, toimub üha enam meie äritegevust veebis. Neist olulisemad on internetipank, internetimakse, e-kirjad, era- ja ametlike teadete vahetamine jms, millega kaasneb konfidentsiaalsete andmete ja teabe vahetamine. Kui need andmed satuvad valedesse kätesse, võib see kahjustada mitte ainult üksikut kasutajat, vaid ka kogu veebipõhise ärisüsteemi.

    Et seda ei juhtuks, on isikuandmete edastamise kaitsmiseks kasutusele võetud mitmeid võrgu turvameetmeid. Peamised neist on andmete krüpteerimise ja dekrüpteerimise protsessid, mida nimetatakse krüptograafiaks. Enamikus süsteemides kasutatakse tänapäeval kolme peamist krüpteerimismeetodit: räsimine, sümmeetriline ja asümmeetriline krüptimine. Järgmistes ridades räägin kõigist nendest krüpteerimistüüpidest üksikasjalikumalt.

    Krüpteerimise tüübid

    Sümmeetriline krüptimine

    Sümmeetrilise krüptimise korral krüpteeritakse tavalised loetavad andmed, mida nimetatakse lihttekstiks, nii et need muutuvad loetamatuks. See andmete skrambleerimine toimub võtme abil. Kui andmed on krüptitud, saab need turvaliselt vastuvõtjale saata. Vastuvõtja juures dekodeeritakse krüptitud andmed sama võtmega, mida kasutati kodeerimiseks.

    Seega on selge, et võti on sümmeetrilise krüptimise kõige olulisem osa. See peab olema autsaiderite eest varjatud, kuna igaüks, kellel on sellele juurdepääs, saab privaatseid andmeid dekrüpteerida. Seetõttu tuntakse seda tüüpi krüptimist ka "salajane võtmena".

    Kaasaegsetes süsteemides on võtmeks tavaliselt andmejada, mis on tuletatud tugevast paroolist või täiesti juhuslikust allikast. See sisestatakse sümmeetrilisse krüpteerimistarkvarasse, mis kasutab seda sisendandmete salajas hoidmiseks. Andmete skrambleerimine saavutatakse sümmeetrilise krüpteerimisalgoritmi abil, nagu andmete krüpteerimisstandard (DES), täiustatud krüpteerimisstandard (AES) või rahvusvaheline andmete krüpteerimisalgoritm (IDEA).

    Piirangud

    Seda tüüpi krüptimise nõrgim lüli on võtme turvalisus nii salvestamise kui ka autentitud kasutajale edastamise osas. Kui häkker suudab selle võtme hankida, saab ta krüptitud andmed kergesti dekrüpteerida, rikkudes kogu krüptimise eesmärgi.

    Puuduseks on ka see, et andmeid töötlev tarkvara ei saa krüptitud andmetega töötada. Seetõttu tuleb selle tarkvara kasutamiseks andmed esmalt dekodeerida. Kui tarkvara ise on rikutud, saab ründaja andmed hõlpsasti kätte.

    Asümmeetriline krüptimine

    Asümmeetrilise võtmega krüptimine toimib sarnaselt sümmeetrilise võtmega, kuna see kasutab edastatavate sõnumite krüptimiseks võtit. Selle sõnumi dekrüpteerimiseks kasutab ta aga sama võtme kasutamise asemel hoopis teistsugust.

    Kodeerimiseks kasutatav võti on saadaval kõigile võrgukasutajatele. Sellisena on see tuntud kui "avalik" võti. Seevastu dekrüpteerimiseks kasutatud võtit hoitakse saladuses ja see on mõeldud kasutaja enda isiklikuks kasutamiseks. Seetõttu nimetatakse seda "privaatvõtmeks". Asümmeetrilist krüptimist tuntakse ka kui avaliku võtmega krüptimist.

    Kuna selle meetodi puhul ei pea sõnumi dekrüpteerimiseks vajalikku salajast võtit iga kord edastama ja see on tavaliselt teada ainult kasutajale (vastuvõtjale), on tõenäosus, et häkker suudab sõnumi dekrüpteerida, suur. madalam.

    Diffie-Hellman ja RSA on näited algoritmidest, mis kasutavad avaliku võtmega krüptimist.

    Piirangud

    Paljud häkkerid kasutavad seda tüüpi krüptimisest möödahiilimiseks ründevormina man-in-the-middle. Asümmeetrilise krüptimise korral antakse teile avalik võti, mida kasutatakse turvaliseks andmete vahetamiseks teise isiku või teenusega. Häkkerid kasutavad aga võrgupettust, et meelitada teid nendega suhtlema, samal ajal kui teid pannakse uskuma, et olete turvalisel liinil.

    Seda tüüpi häkkimise paremaks mõistmiseks kaaluge kahte suhtlevat osapoolt, Sasha ja Nataša, ning häkkerit Sergeit, eesmärgiga nende vestlust pealt kuulata. Esiteks saadab Sasha Natašale mõeldud võrgu kaudu sõnumi, küsides tema avalikku võtit. Sergei püüab selle sõnumi kinni ja hangib temaga seotud avaliku võtme ning kasutab seda krüptimiseks ja Natašale valesõnumi saatmiseks, mis sisaldab tema avalikku võtit Saša oma asemel.

    Nataša, arvates, et see sõnum tuli Sashalt, krüpteerib selle nüüd Sergei avaliku võtmega ja saadab tagasi. Sergei võttis selle sõnumi uuesti kinni, dekrüpteeris, muutis (soovi korral), krüpteeris uuesti avaliku võtmega, mille Sasha algselt saatis, ja saatis Sashale tagasi.

    Seega, kui Sasha selle sõnumi saab, on ta pannud uskuma, et see tuli Natašalt ega ole kurjast mängust teadlik.

    Räsimine

    Räsitehnika kasutab räsifunktsioonina tuntud algoritmi, et genereerida antud andmetest spetsiaalne string ehk räsi. Sellel räsil on järgmised omadused:

    • samad andmed toodavad alati sama räsi.
    • Ainuüksi räsist ei ole võimalik toorandmeid genereerida.
    • Sama räsi genereerimiseks pole otstarbekas proovida erinevaid sisendite kombinatsioone.

    Seega on peamine erinevus räsimise ja kahe teise andmete krüptimise vahel see, et kui andmed on krüptitud (räsitud), ei saa neid algsel kujul tagasi hankida (dekrüpteerida). See asjaolu tagab, et isegi kui häkker saab räsi kätte, pole sellest talle kasu, kuna ta ei saa sõnumi sisu dekrüpteerida.

    Message Digest 5 (MD5) ja Secure Hashing Algorithm (SHA) on kaks laialdaselt kasutatavat räsialgoritmi.

    Piirangud

    Nagu varem mainitud, on antud räsist andmeid peaaegu võimatu dekrüpteerida. See kehtib aga ainult siis, kui rakendatakse tugevat räsimist. Räsitehnika nõrga juurutamise korral, kasutades piisavalt ressursse ja toore jõu rünnakuid, suudab püsiv häkker leida räsile vastavaid andmeid.

    Krüpteerimismeetodite kombinatsioon

    Nagu eespool mainitud, on kõigil neil kolmel krüpteerimismeetodil mõned puudused. Nende meetodite kombinatsiooni kasutamisel moodustavad need aga turvalise ja väga tõhusa krüpteerimissüsteemi.

    Kõige sagedamini kombineeritakse ja kasutatakse koos privaat- ja avaliku võtme tehnikaid. Privaatvõtme meetod võimaldab kiiret dekrüpteerimist, samas kui avaliku võtme meetod pakub turvalisemat ja mugavamat viisi salajase võtme edastamiseks. Seda meetodite kombinatsiooni nimetatakse "digitaalseks ümbrikuks". PGP e-posti krüpteerimistarkvara põhineb "digitaalse ümbriku" tehnikal.

    Räsimist kasutatakse parooli tugevuse kontrollimise vahendina. Kui süsteem salvestab parooli enda asemel parooli räsi, on see turvalisem, sest isegi kui häkker selle räsi kätte satub, ei saa ta sellest aru (lugeda). Kontrollimise ajal kontrollib süsteem sissetuleva parooli räsi ja vaatab, kas tulemus vastab salvestatule. Nii on tegelik parool nähtav vaid lühikestel hetkedel, kui seda on vaja muuta või kontrollida, vähendades oluliselt selle valedesse kätesse sattumise tõenäosust.

    Räsimist kasutatakse ka andmete autentimiseks salajase võtme abil. Andmete ja selle võtme abil luuakse räsi. Seetõttu on nähtavad ainult andmed ja räsi ning võtit ennast ei edastata. Nii on andmete või räsi muutmise korral need hõlpsasti tuvastatavad.

    Kokkuvõtteks võib öelda, et neid tehnikaid saab kasutada andmete tõhusaks kodeerimiseks loetamatus vormingus, mis tagab nende turvalisuse. Enamik kaasaegseid süsteeme kasutab turvalisuse parandamiseks tavaliselt nende krüpteerimismeetodite kombinatsiooni koos tugevate algoritmidega. Lisaks turvalisusele pakuvad need süsteemid ka palju lisahüvesid, näiteks kontrollivad kasutaja identiteeti ja tagavad, et saadud andmeid ei ole võimalik rikkuda.