Kaasaegsed krüpteerimisalgoritmid. Andmete krüpteerimismeetodid – veebiprogrammeerija ajaveeb

Kirjavahetuse krüpteerimise vajadus tekkis iidses maailmas ja ilmusid lihtsad asendusšifrid. Krüpteeritud sõnumid määrasid paljude lahingute saatuse ja mõjutasid ajaloo kulgu. Aja jooksul leiutasid inimesed üha rohkem täiuslikud viisid krüpteerimine.

Kood ja šifr on muide erinevad mõisted. Esimene tähendab sõnumis iga sõna asendamist koodsõnaga. Teine on teabe iga sümboli krüpteerimine kindla algoritmi abil.

Pärast seda, kui matemaatika hakkas teavet kodeerima ja krüptograafia teooria välja töötati, avastasid teadlased palju kasulikud omadused see rakendusteadus. Näiteks on dekodeerimisalgoritmid aidanud dešifreerida surnud keeli, nagu iidne egiptuse või ladina keel.

Steganograafia

Steganograafia on vanem kui kodeerimine ja krüpteerimine. See kunst ilmus kaua aega tagasi. See tähendab sõna otseses mõttes " peidetud kiri"või "salajane kirjutamine". Kuigi steganograafia ei vasta täpselt koodi või šifri definitsioonile, on see mõeldud teabe varjamiseks uudishimulike pilkude eest.

Steganograafia on kõige lihtsam šifr. Tüüpilised näited on vahaga kaetud allaneelatud noodid või sõnum raseeritud peas, mis on peidetud kasvanud juuste alla. Kõige selgem näide Steganograafia on paljudes ingliskeelsetes (ja mitte ainult) detektiiviraamatutes kirjeldatud meetod, mille käigus edastatakse sõnumeid ajalehe kaudu, kus tähed on märkamatult märgistatud.

Steganograafia peamine puudus on ettevaatlikkus võõras võib teda märgata. Seega järjekorras salajane sõnum ei olnud kergesti loetav, kasutatakse krüpteerimis- ja kodeerimismeetodeid koos steganograafiaga.

ROT1 ja Caesari šifr

Selle šifri nimi on ROTate 1 letter forward ja see on teada paljudele koolilastele. See on lihtne asendusšifr. Selle olemus seisneb selles, et iga täht krüpteeritakse, nihutades tähestikku 1 tähe võrra ettepoole. A -> B, B -> B, ..., I -> A. Krüpteerime näiteks fraasi "meie Nastja nutab valjult" ja saame "obshb Obtua dspnlp rmbsheu".

ROT1 šifrit saab üldistada suvaline arv nihkeid, siis nimetatakse seda ROTN-iks, kus N on arv, mille võrra tähe krüptimist tuleks nihutada. Sellisel kujul on šifrit tuntud iidsetest aegadest ja seda nimetatakse "Caesari šifriks".

Caesari šifr on väga lihtne ja kiire, kuid see on lihtne ühe permutatsiooniga šifr ja seetõttu on seda lihtne murda. Sarnase puudusega sobib see ainult laste naljaks.

Transpositsiooni või permutatsiooni šifrid

Seda tüüpi lihtsad permutatsioonišifrid on tõsisemad ja neid on aktiivselt kasutatud mitte nii kaua aega tagasi. Ameerika kodusõja ja Esimese maailmasõja ajal kasutati seda sõnumite edastamiseks. Selle algoritm seisneb tähtede ümberpaigutamises – kirjuta sõnum vastupidises järjekorras või järjesta tähed ümber paarikaupa. Näiteks krüpteerime fraasi "Morse kood on ka šifr" -> "Akubza ezrom - ezhot rfish".

Hea algoritmiga, mis määras iga tähemärgi või nende rühma jaoks suvalised permutatsioonid, muutus šifr lihtsaks murdumiseks vastupidavaks. Aga! Ainult õigel ajal. Kuna šifrit saab hõlpsalt lahti murda lihtsa toore jõu või sõnastiku sobitamise abil, saab tänapäeval seda dešifreerida iga nutitelefon. Seetõttu sai sellest šifrist arvutite tulekuga ka laste kood.

Morse kood

Tähestik on teabe vahetamise vahend ja selle peamine ülesanne on muuta sõnumid edastamiseks lihtsamaks ja arusaadavamaks. Kuigi see on vastuolus krüpteerimisega. Sellest hoolimata töötab see nagu kõige lihtsamad šifrid. Morse süsteemis on igal tähel, numbril ja kirjavahemärgil oma kood, mis koosneb sidekriipsude ja punktide rühmast. Teate edastamisel telegraafi abil tähistavad kriipsud ja punktid pikki ja lühikesed signaalid.

Telegraaf ja tähestik patenteeris esimesena "oma" leiutise 1840. aastal, kuigi sarnaseid seadmeid leiutati enne teda nii Venemaal kui Inglismaal. Aga keda see nüüd huvitab... Telegraaf ja morsekood avaldasid maailmale väga suurt mõju, võimaldades sõnumeid peaaegu hetkega edastada mandrite vahemaadel.

Monoalfabeetiline asendus

Ülalkirjeldatud ROTN ja Morse kood on monoalfabeetiliste asendusfontide esindajad. Eesliide "mono" tähendab, et krüptimise ajal asendatakse algse sõnumi iga täht mõne teise tähe või koodiga ühest krüpteerimistähestikust.

Lihtsate asendusšifrite dešifreerimine pole keeruline ja see on nende peamine puudus. Neid saab lahendada lihtsalt otsides või Näiteks on teada, et vene keeles on enim kasutatud tähed “o”, “a”, “i”. Seega võime eeldada, et šifritekstis esinevad tähed tähendavad kõige sagedamini kas “o”, “a” või “i”. Nendest kaalutlustest lähtudes saab sõnumit dešifreerida ka ilma arvutiotsinguta.

Mary I, Šotimaa kuninganna aastatel 1561–1567, kasutas teadaolevalt väga keerulist monoalfabeetilist asendusšifrit koos mitme kombinatsiooniga. Ometi suutsid tema vaenlased sõnumid dešifreerida ja sellest teabest piisas kuninganna surmamõistmiseks.

Gronsfeldi šifr ehk polüalfabeetiline asendus

Krüptograafia peab lihtsaid šifreid kasutuks. Seetõttu on paljusid neist muudetud. Gronsfeldi šifr on Caesari šifri modifikatsioon. See meetod on häkkimise suhtes palju vastupidavam ja seisneb selles, et kodeeritud teabe iga tähemärk krüpteeritakse ühe erineva tähestiku abil, mida korratakse tsükliliselt. Võime öelda, et see on kõige lihtsama asendusšifri mitmemõõtmeline rakendus. Tegelikult on Gronsfeldi šifr väga sarnane allpool käsitletavaga.

ADFGX krüpteerimisalgoritm

See on kõige kuulsam I maailmasõja šifr, mida sakslased kasutasid. Šifer sai oma nime, kuna see taandas kõik šifrigrammid nende tähtede vaheldumiseks. Tähtede endi valiku määras nende mugavus telegraafiliinide kaudu edastamisel. Iga tähte šifris tähistab kaks. Mõelgem veel huvitav versioon ruut ADFGX, mis sisaldab numbreid ja kannab nime ADFGVX.

A D F G V X
A J K A 5 H D
D 2 E R V 9 Z
F 8 Y I N K V
G U P B F 6 O
V 4 G X S 3 T
X W L K 7 C 0

ADFGX ruudu koostamise algoritm on järgmine:

  1. Veergude ja ridade tähistamiseks võtame juhuslikult n tähte.
  2. Koostame N x N maatriksi.
  3. Sisestame maatriksisse tähestiku, numbrid, märgid, mis on juhuslikult lahtritesse hajutatud.

Teeme samasuguse ruudu vene keele jaoks. Loome näiteks ruudu ABCD:

A B IN G D
A TEMA N b/b A I/Y
B H V/F H/C Z D
IN Sh/Shch B L X I
G R M KOHTA Yu P
D JA T C Y U

See maatriks näeb imelik välja, kuna mitmes lahtris on kaks tähte. See on vastuvõetav, et sõnumi tähendus ei lähe kaduma. Seda saab kergesti taastada. Krüpteerime fraasi "Compact Cipher" selle tabeli abil:

1 2 3 4 5 6 7 8 9 10 11 12 13 14
Fraas TO KOHTA M P A TO T N Y Y Sh JA F R
Šifr bv valvurid GB gd ah bv db ab dg põrgu va põrgu bb ha

Seega näeb lõplik krüpteeritud sõnum välja selline: "bvgvgbgdagbvdbabdgvdvaadbbga." Muidugi ajasid sakslased sarnase liini läbi veel mitme šifri. Ja tulemuseks oli väga häkkimiskindel krüpteeritud sõnum.

Vigenère'i šifr

See šifr on suurusjärgu võrra vastupidavam mõranemisele kui monoalfabeetiline šifr, kuigi see on lihtne tekstiasendusšifr. Küll aga tänu robustsele algoritmile pikka aega peeti võimatuks häkkida. Selle esimesed mainimised pärinevad 16. sajandist. Vigenère'i (Prantsuse diplomaat) peetakse ekslikult selle leiutajaks. Et paremini aru saada, mida me räägime, kaaluge vene keele jaoks Vigenère'i tabelit (Vigenère'i ruut, tabula recta).

Alustame fraasi "Kasperovitš naerab" krüpteerimist. Kuid krüptimise õnnestumiseks vajate märksõna - olgu selleks "parool". Nüüd alustame krüptimist. Selleks kirjutame võtit kordades või ära lõigates võtme nii mitu korda üles, et sellest pärit tähtede arv vastaks krüptitud fraasi tähtede arvule:

Nüüd otsime koordinaattasandit kasutades lahtrit, mis on tähepaaride ristumiskoht ja saame: K + P = b, A + A = B, C + P = B jne.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Šifr: Kommersant B IN Yu KOOS N Yu G SCH JA E Y X JA G A L

Saame, et "Kasperovich naerab" = "abvyusnyugshch eykhzhgal".

Vigenère'i šifri murdmine on nii keeruline, sest sagedusanalüüs nõuab pikkuse teadmist märksõna. Seetõttu hõlmab häkkimine märksõna pikkuse juhuslikku viskamist ja salasõnumi murdmist.

Olgu ka mainitud, et lisaks täiesti juhuslikule võtmele saab kasutada hoopis teistsugust Vigenère'i tabelit. IN antud juhul Vigenère'i ruut koosneb vene tähestikust, mis on kirjutatud rida-realt ühe nihkega. Mis toob meid ROT1 šifri juurde. Ja nagu Caesari šifris, võib nihe olla ükskõik milline. Pealegi ei pea tähtede järjekord olema tähestikuline. Sel juhul võib tabel ise olla võti, mille teadmata on sõnumit võimatu lugeda isegi võtit teades.

Koodid

Päriskoodid koosnevad iga sõna vastetest eraldi kood. Nendega töötamiseks on vaja niinimetatud koodiraamatuid. Tegelikult on see sama sõnastik, mis sisaldab ainult sõnade tõlkeid koodideks. Tüüpiline ja lihtsustatud näide koodidest on ASCII tabel- lihtsate märkide rahvusvaheline šifr.

Koodide peamine eelis on see, et neid on väga raske dešifreerida. Sagedusanalüüs nende häkkimisel peaaegu ei tööta. Koodide nõrkus on tegelikult raamatud ise. Esiteks on nende valmistamine keeruline ja kulukas protsess. Teiseks muutuvad need vaenlaste jaoks soovitud objektiks ja isegi osa raamatu pealtkuulamine sunnib neid kõiki koode täielikult muutma.

20. sajandil kasutasid paljud osariigid salajaste andmete edastamiseks koode, muutes aja jooksul koodiraamatut. teatud periood. Ja nad jahtisid aktiivselt oma naabrite ja vastaste raamatuid.

"Enigma"

Kõik teavad, et Enigma oli II maailmasõja ajal natside peamine krüpteerimismasin. Enigma struktuur sisaldab elektriliste ja mehaaniliste ahelate kombinatsiooni. See, kuidas šifr välja tuleb, sõltub Enigma algkonfiguratsioonist. Samal ajal muudab Enigma töötamise ajal automaatselt oma konfiguratsiooni, krüpteerides ühe sõnumi mitmel viisil kogu selle pikkuses.

Vastupidiselt kõigele lihtsad šifrid Enigma pakkus triljoneid võimalikke kombinatsioone, muutes krüpteeritud teabe murdmise peaaegu võimatuks. Natsid omakorda lasid igaks päevaks ette valmistada kindla kombinatsiooni, mida nad konkreetsel päeval sõnumite edastamiseks kasutasid. Seetõttu, isegi kui Enigma sattus vaenlase kätte, ei aidanud see mingil viisil sõnumite dešifreerimisele ilma tutvustamata nõutav konfiguratsioon iga päev.

Nad püüdsid kogu Hitleri sõjalise kampaania jooksul aktiivselt Enigmat murda. Inglismaal ehitati 1936. aastal selleks üks esimesi arvutusseadmeid (Turingi masin), millest sai tulevikus arvutite prototüüp. Tema ülesandeks oli simuleerida üheaegselt mitmekümne Enigma tööd ja juhtida nende kaudu pealtkuulatud natside sõnumeid. Kuid isegi Turingi masin suutis vaid aeg-ajalt mõne sõnumi murda.

Avaliku võtmega krüptimine

Kõige populaarsem krüpteerimisalgoritm, mida kasutatakse kõikjal tehnoloogias ja arvutisüsteemid. Selle olemus seisneb reeglina kahe võtme juuresolekul, millest üks edastatakse avalikult ja teine ​​on salajane (privaatne). Avalik võti kasutatakse sõnumi krüpteerimiseks ja salajane kasutatakse sõnumi dekrüpteerimiseks.

Avaliku võtme rolli mängib kõige sagedamini väga suur hulk, millel on ainult kaks jagajat, arvestamata ühte ja arvu ennast. Need kaks jagajat moodustavad koos salajase võtme.

Vaatame lihtsat näidet. Lase avalik võti on 905. Selle jagajad on numbrid 1, 5, 181 ja 905. salajane võti seal on näiteks number 5*181. Kas te ütleksite, et see on liiga lihtne? Mis siis, kui avalik number on 60-kohaline number? Suure arvu jagajaid on matemaatiliselt raske arvutada.

Reaalsema näite jaoks kujutage ette, et võtate sularahaautomaadist raha välja. Kaardi lugemisel krüpteeritakse isikuandmed teatud avaliku võtmega ja panga poolel dekrüpteeritakse teave salajase võtmega. Ja seda avalikku võtit saab iga toimingu jaoks muuta. Kuid selle pealtkuulamisel ei ole võimalik kiiresti leida võtmejagajaid.

Fondi vastupidavus

Krüpteerimisalgoritmi krüptograafiline tugevus seisneb selle võimes seista vastu häkkimisele. See parameeter on mis tahes krüptimise jaoks kõige olulisem. On ilmne, et lihtne asendusšifr, mida igaüks saab dešifreerida elektrooniline seade, on üks ebastabiilsemaid.

Tänapäeval ei eksisteeri ühised standardid, mille järgi sai hinnata šifri tugevust. See on töömahukas ja pikk protsess. Siiski on mitmeid komisjone, kes on selles valdkonnas standardeid koostanud. Näiteks miinimumnõuded NIST USA poolt välja töötatud Advanced Encryption Standard või AES krüpteerimisalgoritmile.

Võrdluseks: Vernami šifrit peetakse kõige purunemiskindlamaks. Samal ajal on selle eeliseks see, et algoritmi järgi on see kõige lihtsam šifr.

Sergei Panasenko,
arendusosakonna juhataja tarkvara firma "Ankad"
[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 on see teisendus kujutatud järgmised sõltuvused, kirjeldades toiminguid koos esialgse teabega:

C = Ek1(M)

M" = Dk2(C),

kus M (sõnum) - avatud teave(infoturbealases kirjanduses nimetatakse seda sageli " allikas");
C (šifreeritud tekst) - krüptimise tulemusena saadud šifritekst (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 parameetrite hulgast. sellest algoritmist Teisisõnu, võti on ainulaadne element, mille abil saate muuta krüpteerimisalgoritmi tulemusi: sama lähtetekst, kui seda kasutatakse erinevad võtmed krüpteeritakse 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ümmeetrilised 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 krüpteerimisvõti k1 võtmest k2 nii, et pöördkonversioon võimatu, näiteks kasutades valemit k1 = ak2 mod p (a ja p on kasutatud 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 rakendada. erinevaid süsteeme andmete krüpteerimine. 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 see olemas üksikasjalik kirjeldus) ja pöördume moodsamate krüpteerimisalgoritmide poole. Väärib märkimist, et krüpteerimisstandardi muutmise peamine põhjus on selle suhteliselt nõrk krüptograafiline tugevus, mille põhjuseks on see, et DES-võtme pikkus on vaid 56 olulised bitid. On teada, et iga tugevat krüpteerimisalgoritmi saab murda, proovides kõiki võimalikke krüpteerimisvõtmeid (nn meetod toore jõud- toore jõu 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 arvutusvõimsus on üsna reaalsed, on selge, et 56-bitine võti on liiga lühike ja DES algoritm tuleb vahetada tugevama vastu.

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 loogiline XOR-operatsioon- "eksklusiivne või") ja seejärel alamplokid vahetatakse. See transformatsioon jooksmine teatud arv korda (“ringid”): 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äisvõti krüpteerimist kujutatakse 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 - laua vahetus. 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 ...). Algoritm, mis on määratletud GOST 28147-89, pakub nelja töörežiimi: lihtne asendamine, mängimine, mängimine ja imiteerivate eesliidete 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.

Sisse dekodeerimine see režiim viiakse läbi täpselt samal viisil, kuid veidi erineva alamvõtmete kasutamise järjestusega:

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 šifreeritud tekstiplokid identsed, mis annab lisa kasulikku teavet krüptoanalüütiku jaoks, kes üritab šifrit murda. 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 plokk lihttekst bitipõhiselt lisatud modulo 2 koos 64-bitise šifri gammaplokiga. 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 sammu 2 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 korral saadakse algtekst (tabel).

Krüptimine 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 imitatsioon on krüptograafia kontrollsumma, mis arvutatakse krüpteerimisvõtme abil ja on mõeldud sõnumite terviklikkuse kontrollimiseks. 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. Nendest teisendustest tulenevat registrite N1 ja N2 64-bitist sisu või osa sellest nimetatakse imitatsiooniprefiksiks. Imiteeritava 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 biti imitatsiooni eesliidet, st 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, muu krüptograafilised meetodid- peamiselt elektrooniline digitaalallkiri.

Teabe vahetamisel toimib imitatsiooni eesliide omamoodi täiendavaid vahendeid kontrolli. 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. Imiteeriv eesliide on eriti kasulik dekrüpteerimise õigsuse kontrollimiseks põhiteave mitme võtmega skeemide kasutamisel.

Algoritmi GOST 28147-89 peetakse väga tugevaks algoritmiks - praegu pole selle avalikustamiseks rohkem välja pakutud tõhusad meetodid kui ülalmainitud "toore jõu" meetod. Selle kõrge vastupidavus saavutatakse eelkõige tänu pikk pikkus võti - 256 bitti. Salajase sünkroonimissõnumi kasutamisel suureneb efektiivne võtme pikkus 320 bitini ja asendustabeli krüptimine suureneb lisabitte. 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 GOST 28147-89 algoritmist, mis jäi pikka aega saladuseks, Ameerika standard AES krüptimine DES-i asendamiseks mõeldud , valiti välja avaliku konkursi korras, kus kõik huvitatud organisatsioonid ja üksikisikud 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 on see, et sisendväärtus jagatakse kaheks või enamaks alamplokiks, millest osa töödeldakse igas voorus teatud seadus, mille järel see kantakse töötlemata alamplokkidele (vt joonis 1).

Erinevalt kodumaisest krüpteerimisstandardist kujutab Rijndaeli algoritm andmeplokki kahemõõtmelise baitimassiivi kujul, mille suurus on 4X4, 4X6 või 4X8 (mitu kasutamine on lubatud fikseeritud suurused krüpteeritud teabeplokk). Kõik toimingud tehakse nii massiivi üksikute baitidega kui ka edasi sõltumatud veerud ja jooned.

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. Tabel pööratakse ümber ja tabel asendatakse pöördtabeliga (võrreldes krüpteerimiseks kasutatava tabeliga). 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 annab see suur kiirus krüpteerimine kõigil platvormidel: nii tarkvara kui ka riistvara rakendamisel. Seda eristatakse võrreldamatult parimad võimalused arvutuste paralleelsus võrreldes teiste konkursile esitatud algoritmidega. 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 uuritud ja erinevalt neist võib Rijndael sisaldada varjatud haavatavused, mida saab avastada alles mõne aja möödudes selle laialdase leviku 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 kõigi jaoks arvutada võimalikud variandid x ja enamiku võimalike y väärtuste puhul on üsna raske arvutada x väärtust, mille puhul y = f(x).

Ühesuunalise funktsiooni näide on kahe suure arvu korrutamine: N = P*Q. See korrutamine ise on lihtne operatsioon. Pöördfunktsioon (N-i lagunemine kaheks suureks teguriks), mida tänapäevaste hinnangute kohaselt nimetatakse faktoriseerimiseks, on aga üsna keeruline. matemaatika ülesanne. 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 tagauksega ühesuunaline, kui see on ühesuunaline ja seda saab tõhusalt arvutada pöördfunktsioon x = f-1(y), st kui "salajane läbipääs" on teada (teatud salajane number, asümmeetriliste krüpteerimisalgoritmide puhul - 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üsteemi moodul N, mille järgi teostatakse kõik arvutused süsteemis ja N = P*Q (P ja Q on salajased juhuslikud lihtsad suured numbrid, tavaliselt sama suur).

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 salavõ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.
  2. Krüptograafiline teisendusalgoritm. - M.: NSV Liidu riiklik standard, 1989.
  3. AES-algoritm: http://www.nist.gov/ae.

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 ei tohiks te karta, 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, “Grassnechik”Õppetund 4. Tänapäevased võõršifrid. Mille poolest erinevad Bruce Schneieri 3DES, AES, Blowfish, IDEA, Threefish ja kuidas need töötavad
  • (kas sa oled 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üptimise algoritmina (DEA). See püsis maailmastandardina üle kahekümne aasta, enne kui selle asendas Triple DES.

  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 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 koos 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. Kahekordne 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 salateksti 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, NSA-le esitatud süüdistused loobuti ja 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.

21. sajandil mängib krüptograafia kaasaegsete inimeste digitaalses elus tõsist rolli. Vaatame lühidalt teabe krüptimise viise.

Krüptograafia pole lihtsalt arvutiasi

Tõenäoliselt olete juba põhilise krüptograafiaga kokku puutunud ja võib-olla teate mõnda krüpteerimismeetodit. Näiteks kasutatakse Caesari šifrit sageli laste harivates mängudes.

ROT13 on veel üks levinud sõnumite krüptimise tüüp. Selles nihutatakse iga tähestiku tähte 13 positsiooni võrra, nagu on näidatud joonisel:

Nagu näete, ei paku see šifr tõeliselt usaldusväärset teabeturvet: see on lihtne ja arusaadav näide kogu krüptograafia ideest.

Täna räägime krüptograafiast kõige sagedamini mõne tehnoloogia kontekstis. Kuidas edastatakse turvaliselt isiklikku ja finantsteavet, kui sooritame veebist ostu või vaatame pangakontosid? Kuidas saate andmeid turvaliselt salvestada nii, et keegi ei saaks lihtsalt teie arvutit avada, kõvaketast välja tõmmata ja kogu sellel olevale teabele täielikult juurde pääseda? Nendele ja teistele küsimustele vastame selles artiklis.

Küberturvalisuse määratlused ja kiirjuhend

Küberturvalisuses teevad kasutajad mis tahes andmetega seoses muret mitmed asjad. Need hõlmavad teabe konfidentsiaalsust, terviklikkust ja kättesaadavust.

Konfidentsiaalsus– volitamata kasutajad ei saa andmeid vastu võtta ega lugeda.

Teabe terviklikkus– kindlustunne, et teave jääb 100% puutumatuks ja seda ei muuda ründaja.

Teabe kättesaadavus– vajadusel andmetele juurdepääsu saamine.

Selles artiklis vaadeldakse ka digitaalse krüptograafia erinevaid vorme ja seda, kuidas need aitavad ülaltoodud eesmärke saavutada.

Põhilised krüpteerimismeetodid:
  • Sümmeetriline
  • Asümmeetriline
  • Räsimine
  • Digiallkiri

Sümmeetriline krüptimine

Enne teemasse sukeldumist vastame lihtsale küsimusele: mida täpselt tähendab “krüptimine”? Krüpteerimine on teabe muutmine, et varjata seda volitamata isikute eest, võimaldades samal ajal volitatud kasutajatel sellele juurdepääsu.

Andmete õigeks krüpteerimiseks ja dekrüpteerimiseks vajate kahte asja: andmeid ja dekrüpteerimisvõtit. Sümmeetrilise krüptimise kasutamisel on andmete krüptimise ja dekrüpteerimise võti sama. Võtame stringi ja krüpteerime selle Ruby ja OpenSSL-i abil:

Rubiin

nõuda "openssl" nõuda "pry" data_to_encrypt = "nüüd saate mind lugeda!" šifr = OpenSSL::Cipher.new("aes256") cipher.encrypt key = cipher.random_key iv = cipher.random_iv data_to_encrypt = cipher.update(data_to_encrypt) + cipher.final sitomine.pry true

nõua "openssl"

nõuda "pry"

šifr = OpenSSL::Cipher. uus("aes256")

šifr krüpteerida

võti = šifr . juhuslik_võti

iv = šifr . juhuslik_iv

krüpteeritavad andmed = šifr . värskendus(andmed_krüptimiseks) + šifr. lõplik

siduv. piiluma

tõsi

See on see, mida programm väljastab:

Pange tähele, et muutuja krüptitavad_andmed, mis oli algselt rida "nüüd saate mind lugeda!", on nüüd hunnik arusaamatuid tegelasi. Pöörame protsessi tagasi, kasutades algselt muutujasse salvestatud võtit võti.

Pärast sama võtme kasutamist, mille krüpteerimiseks määrasime, dekrüpteerime sõnumi ja saame algse stringi.

Vaatame teisi krüptimismeetodeid.

Asümmeetriline krüptimine

Sümmeetrilise krüptimise probleem on järgmine: oletame, et peate saatma mõned andmed Interneti kaudu. Kui andmete krüptimiseks ja dekrüpteerimiseks on vaja sama võtit, siis selgub, et võti tuleb kõigepealt saata. See tähendab, et võti tuleb saata ebaturvalise ühenduse kaudu. Kuid nii saab võtit kinni pidada ja kolmas osapool kasutada. Selle tulemuse vältimiseks leiutati asümmeetriline krüptimine.

Asümmeetrilise krüptimise kasutamiseks peate genereerima kaks matemaatiliselt seotud võtit. Üks on privaatvõti, millele on juurdepääs ainult teil. Teine on avatud, mis on avalikult kättesaadav.

Vaatame näidet asümmeetrilist krüptimist kasutavast suhtlusest. Selles saadavad server ja kasutaja üksteisele sõnumeid. Igal neist on kaks võtit: privaatne ja avalik. Varem räägiti, et võtmed on ühendatud. Need. Privaatvõtmega krüpteeritud sõnumit saab dekrüpteerida ainult kõrvaloleva avaliku võtme abil. Seetõttu peate suhtluse alustamiseks vahetama avalikke võtmeid.

Aga kuidas mõista, et serveri avalik võti kuulub sellele konkreetsele serverile? Selle probleemi lahendamiseks on mitu võimalust. Kõige tavalisem (ja Internetis kasutatav) meetod on avaliku võtme infrastruktuuri (PKI) kasutamine. Veebilehtede puhul on sertifitseerimiskeskus, millel on kataloog kõigist veebisaitidest, millele on väljastatud sertifikaate ja avalikke võtmeid. Kui loote ühenduse veebisaidiga, kontrollib sertifitseerimisasutus esmalt selle avaliku võtme.

Loome avaliku ja privaatvõtme paari:

Rubiin

nõuda "openssl" nõuda "pry" data_to_encrypt = "nüüd saate mind lugeda!" võti = OpenSSL::PKey::RSA.new(2048) binding.pry true

nõua "openssl"

nõuda "pry"

data_to_encrypt = "Nüüd saate mind lugeda!"

võti = OpenSSL::PKkey::RSA. uus (2048)

siduv. piiluma

tõsi

Selgub:

Pange tähele, et privaatvõti ja avalik võti on erinevad olemid, millel on erinevad identifikaatorid. Kasutades #privaatne_krüpt, saate stringi krüpteerida, kasutades privaatvõtit ja kasutades #public_decrypt- sõnumi dekrüpteerimine:

Teabe räsimine

Erinevalt sümmeetrilisest ja asümmeetrilisest krüptimisest on räsimine ühesuunaline funktsioon. Mõnest andmetest on võimalik luua räsi, kuid protsessi pole võimalik tagasi pöörata. See muudab räsimise mitte eriti mugavaks andmete salvestamise viisiks, kuid sobib mõne andmete terviklikkuse kontrollimiseks.

Funktsioon võtab sisendiks teatud teabe ja väljastab näiliselt juhusliku stringi, mis on alati sama pikk. Ideaalne räsifunktsioon loob erinevatele sisenditele ainulaadseid väärtusi. Sama sisend tekitab alati sama räsi. Seetõttu saab andmete terviklikkuse kontrollimiseks kasutada räsimist.

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 teadsid?
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. Nende hulgas on olulisemad 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üpteeritud 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 tuntakse seda "privaatse" võtmena. 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ünnakuvormina meest keskel. 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 ja ta ei 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äsi andmete dekrüpteerimine peaaegu võimatu. 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 ülitõ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 loetamatusse vormingusse, mis tagab nende turvalisuse. Enamik kaasaegseid süsteeme kasutab turvalisuse parandamiseks tavaliselt nende krüpteerimismeetodite kombinatsiooni ja tugevaid algoritmirakendusi. 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.