Simetrinė ir asimetrinė kriptografija
Simetrinė kriptografija
Viešo rakto algoritmai naudoja skirtingą raktą užkodavimui ir atkodavimui ir atkodavimo raktas praktiškai negali būti išvestas iš užkodavimo rakto. Viešo rakto metodai yra svarbūs nes jie gali būti naudojami perduodant užkodavimo raktus ir kitus duomenis saugiai net jei šalys neturi galimybės susitarti dėl saugumo rakto privačiai. Visi žinomi metodai yra gana lėti ir jie naudojami tik užkoduoti sesijos raktus (atsitiktinai sugeneruotus “normalius” raktus), kurie paskui yra naudojami užkoduoti pagrindinę duomenų masę naudojant simetrinį koderį.
RSA (Rivest-Shamir-Adelman) yra dažniausiai naudojamas viešo rakto algoritmas. Gali būti naudojamas ir užkodavimui ir dekodavimui. Iš principo jis skaitomas saugus, kai naudojami ilgi raktai (512 bitų – nesaugu, 768 – vid. Saugumas, 1024 – gerai). RSA saugumas remiasi ilgų sveikų skaičių faktoringu. Todėl dėl didelių sveikų skaičių faktoringo pagerėjimo RSA algoritmas taptų pažeidžiamas. Šiuo metu RSA yra labai svarbus viešo rakto algoritmas.
Kas dėl algoritmo stiprumo, tai: 512 bitų raktas silpnas, 1024 – pakankamas daugeliui sričių ir 2048 – panašu kad liks nenulaužiamas šimtmečiams. Beje, reikia žinoti, jog RSA yra labai pažeidžiamas pasirenkamų duomenų atakoms. Taip pat RSA rakto atakai gali būti naudojama nauja timing ataka, kuri gali būti naudojama laužiant daugelį RSA taikymų. Sakoma kad RSA algoritmas yra saugus kai atitinkamai naudojamas, tačiau reikia būti atsargiam siekiant išvengti šių atakų.
Daug RSA taikymų yra laisvai gaunamų, pvz. ftp.funet.fi:/pub/crypt/cryptography/asymmetric/rsa
Diffie-Hellman yra dažniausiai naudojamas raktas apsikeitimui. Jis laikomas saugiu, kai pasirenkami pakankamai ilgi raktai ir naudojami atitinkami generatoriai. DH saugumas remiasi diskretaus logaritmo sunkumo problema (kuris manoma yra ekvivalentus ilgų skaičių faktoringo problemai).
DH yra jautrus stiprios pradžios ir generatoriaus pasirinkimui. Saugumo eksponentės dydis yra taip pat svarbus jo saugumui. Konservatyvus patarimas būtų padaryti atsitiktinę eksponentę dvigubai ilgesnę, negu numatoma skirti sesijos raktui.
Reiktų atkreipti dėmesį, kad darant perskaičiavimus yra įmanoma paskaičiuoti diskrečius logaritmus reliatyvius pradžios efektyvumui. Darbas reikalingas perskaičiavimams yra lygus ar kiek didesnis nei darbas reikalingas sudedamųjų to paties dydžio skaičių faktoringui. Praktikoje tai reiškia, kad jei ta pati pradžia naudojama dideliam sukeitimų kiekiui, ji turėtų būti didesnė nei 512 bitų, pageidautina 1024 bitų. Šio algoritmo raktui nulaužti taip pat gali būti pritaikyta timing ataka.
Eliptinės kreivės viešojo rakto kriptosistemos. Jos lėtai veikia, bet tampa vis labiau pritaikomos modernioms kompiuteriams. Jos yra gana saugios, bet dar nėra taip ištyrinėtos kaip pvz. RSA.
DSS (Digital Signature Standard). Tik-parašo mechanizmas patvirtintas JAV vyriausybės. Jis dar nėra viešai atskleistas, ir dėl to žmonės turi potencialių problemų (pvz. galimas slaptos informacijos nutekėjimas ir rakto atskleidimas, jei pasitaikys pasirašyti du skirtingus pranešimus tuo pačiu raktu).
ElGamal viešojo rakto kriptosistema. Pagrįsta diskretaus logaritmo problema.
LUC viešojo rakto kriptosistema. Ji naudoja Luko funkcijas vietoj eksponentinių. Išradėjas Peteris Smits pritaikė keturis kitus algoritmus su Luko funkcijomis: LUCDIF, Rakto derybų metodas panašus į Diffie-Hellman; LUCELG PK, ekvivalentus El Gamal viešojo rakto kodavimui; LUCELG DS, ekvivalentus El Gamal skaitmeniniam parašui; ir LUCDSA, ekvivalentus JAV skaitmeninio parašo standartui.
Išeities tekstai: ftp.funet.fi:/pub/crypt/cryptography/asymmetric/luc
Asimetrinė kriptografija
Slapto rakto algoritmai naudoja tą patį (arba lengvai vieną iš kito išvedamą) raktą užkodavimui ir dekodavimui.
DES algoritmas išvystytas 1970m. Jis tapo JAV vyriausybės standartu ir adaptuotas keletui kitų pasaulio valstybių. Šis raktas plačiai naudojamas, ypač finansų industrijoje.
DES yra blokinis koderis, imantis 64 bitų bloką. Jis naudoja 56 bitų raktus. Tai leidžia lengvai nulaužti naudojant modernius kompiuterius arba specialią įrangą. Kita vertus DES yra pakankamai stiprus apsisaugoti nuo atsitiktinių hakerių ir vartotojų, bet gali būti lengvai nulaužiamas vyriausybių, nusikaltėlių organizacijų arba korporacijų. DES nulaužimo kaina tampa lygi dešimtims dolerių. Jis yra per silpnas, ir neturėtų būti naudojamas naujuose projektuose.
DES algoritmo variantas yra Trigubas-DES arba 3DES, paremtas DES algoritmo panaudojimu 3 kartus (paprastai užkoduojama-dekoduojama-užkoduojama su 3 skirtingais nesusijusiais raktais). Daugelis žmonių laiko 3DES daug saugesniu negu paprastas DES.
Blowfish algoritmą sukūrė Bruce Schneier. Tai yra blokinis koderis su 64-bitų bloko dydžiu ir kintamo ilgio raktais (iki 448 bitų). Šis algoritmas pripažintas daugybėje taikymų. Prieš jį nežinoma atakų. Blowfish naudojamas įvairiuose programiniuose paketuose (pvz. Nautilus ir PGPfone).
IDEA (International Data Encryption Algorithm) algoritmas sukurtas ETH Šveicarijoje. Jis naudoja 128 bitų raktą ir iš principo laikomas labai saugiu. Šiuo metu tai vienas iš geriausių viešų algoritmų. Tai gana naujas algoritmas, bet jokių praktinių atakų nebuvo publikuota, nors jis jau egzistuoja keleri metai ir daug kas bandė jį analizuoti.
IDEA patentuotas JAV ir daugelyje Europos valstybių. Nekomercinis naudojamas yra neapmokestintas.
RC4 yra koderis sudarytas RSA Data Security. Tai buvo komercinė paslaptis, kol kažkas paskelbė išeities tekstus Usenet News’uose, sakydamas, kad jie ekvivalentūs RC4. Yra tvirtų įrodymų, jog paskelbtas algoritmas iš tikro ekvivalentus RC4. Algoritmas labai greitas. Jo saugumas nežinomas, bet nulaužimas visgi neatrodo paprastas. Dėl greičio jis gali būti naudojamas atitinkamuose taikymuose. Jis taip pat gali priimti įvairaus ilgio raktus. RC4 iš esmės yra pseudo atsitiktinių skaičių generatorius, kurio rezultatas yra XOR’inamas su koduojamais duomenimis. Dėl to labai svarbu, kad tas pats RC4 raktas nebūtų naudojamas dviem skirtingiem duomenų srautams užkoduoti.
JAV vyriausybė leido eksportuoti RC4 su 40 bitų ilgio raktais. Šie raktai yra pakankamai maži, kad būtų nulaužti vyriausybių, kriminalistų ir netgi mėgėjų.
SAFER algoritmą išvystė J.L. Massey (vienas iš IDEA kūrėjų). Jis paskelbė galintis saugiai koduoti su greita programinės įrangos realizacija net ant 8-bitų procesorių. Yra prieinami 2 variantai, 1 su 64 bitų raktais ir kitas su 128 bitų raktais. Realizacija yra: ftp.funet.fi:/pub/crypt/cryptography/symmetric/safer.
Koderis yra pagrįstas išmaišymo funkcija. Kiekviena kriptografiškai stipri išmaišymo funkcija gali būti pervesta į koderį. Yra keletas galimų susitarimų; pagrindinė idėja ta, kad išmaišymo funkcija yra naudojama kaip atsitiktinių skaičių generatorius, išmaišymo reikšmė yra XOR’inama su koduojamais duomenimis. Kai visi išmaišymo reikšmės baitai panaudoti, nauja išmaišymo reikšmė yra gaunama kažkokiu tai būdu modifikuojant raktą. Išmaišomi duomenys gali turėti savyje raktąs, ankstesnę išmaišymo reikšmę, eilės nr., įvairų tekstą.
Enigma koderis buvo naudojamas vokiečių per 2 pasaulinį karą. Jį paprasta nulaužti su moderniais kompiuteriai. Šis kodas buvo išanalizuotas ir nulaužtas lenkų anglų mokslininkų, dėl to sąjungininkai galėjo perimti slaptus pranešimus, dėl ko vokiečiai patyrė didelių nuostolių. Šis koderis naudojamas unix crypt programos.
Kriptografinės sumos
Kriptografinės sumos yra vienas iš naudingiausių priemonių protokolų kūrėjams. Kriptografinės sumos arba pranešimų vientisumo kontrolinė suma (message integrity checksum (MIC)) užtikrina perduodamų duomenų neišsikraipymą. Pavyzdžiui “Secure SNMP” ir “SNMPv2” abu skaičiuoja MD5 kriptografines kontrolines sumas, kai siunčiamas slaptas raktas ar kiti autentifikacijos duomenys. Tai tarnauja nustatyti duomenų kilmę. Šis metodas neužtikrina ar patys duomenys yra teisingi, tačiau užtikrina, kad duomenys buvo siusti iš ten iš kur jie turėjo būti atsiusti. Kriptografinės sumos suteikia pakankamai stipria autentifikacija ir ypač yra naudingos “host-to-host” komunikacijų nustatyme. Pagrindinė šio metodo realizavimo problema yra rakto platinimas.