Welcome to Our Website

Salaus 101: Symmetrinen Salaus

Tämä on ensimmäinen viesti 3 osa sarjan perusasiat salausta. Sarja on kuvattu seuraavasti:

  1. Symmetrinen Salaus
  2. Tietojen Eheys & Todennettu Salaus
  3. Epäsymmetrinen Salaus Julkisen/Yksityisen Avaimen Paria

Sukellus maailmaan computer science voi olla pelottava tehtävä. Varsinkin yksin!, Tässä blogi-sarjassa, haluaisin tarjota korkean tason yleiskuvan perusteet salausta niille, jotka haluavat kaivaa syvemmälle aihe, joka ei välttämättä tiedä, mistä aloittaa. Tämä yleiskatsaus perustuu erityisesti minun tärkein takeaways Stanfordin kryptografia I kurssin opettama Dan Boneh, saatavilla Coursera.

päätin ottaa tämän kurssin, koska olen blockchain kehittäjä, joka ei ollut peräisin perinteinen comp-sci tausta. Opiskelin yliopistossa taloustiedettä, mutta suuntauduin enemmän tietokoneohjelmointiin, kun aloitin urani., Siitä lähtien, kun aloin koodaus, olen ollut lähetystyöhön päästä ”lähemmäs tietokone” — kuoria takaisin kerroksia abstraktio nautin web-kehittäjä ja ymmärtää, mitä tapahtuu alla huppu. Siirtymässä osaksi kryptovaluutta ja hajautetut järjestelmät, web-kehitys on ollut villi ja ihana askel siihen suuntaan monin tavoin, ei vähiten joka oli tulossa enemmän tuttuja käsitteitä salausta. Halusin kuitenkin vankemman pohjan., Koska se on melko laaja ala, ajattelin, että se oli sen arvoista pudottaa $70 kuluttaa tätä tietoa foorumissa erityisesti kuratoitu Stanfordin yliopistosta. Kurssin voi myös tarkastaa antamatta tehtäviä ilmaiseksi. Internetin ihmeet!

aloitetaan.

pohjimmiltaan salaus on turvallisen viestinnän käytäntö mahdollisten kolmansien osapuolten vastustajien läsnä ollessa. Turvallisen viestinnän käsite koostuu kahdesta pääkohdasta:

  1. tietoturva salakuuntelua vastaan: näin varmistetaan tietojen luottamuksellisuus.,
  2. tietoturva tietojen manipulointia vastaan: näin varmistetaan tietojen eheys eli kukaan ei voi manipuloida lähettämiäsi tietoja ja pettää vastaanottajaa hyväksymään manipuloituja tietoja päteviksi.

tietojen luottamuksellisuus saavutetaan salauksella, joka voi olla kahta muotoa: symmetrinen ja epäsymmetrinen.

  • symmetrinen salaus käyttää yhtä ainoaa avainta, joka on jaettava kaikkien viestintään osallistuvien kesken.
  • epäsymmetrinen salaus käyttää henkilökohtaisia avaimia., Jokaisella osallistujalla on oma julkinen avain ja yksityinen avainpari viestien salaamiseen ja purkamiseen viestiessä.

(Huom.: tässä blogipostissa puhutaan kryptografiasta symmetrisen salauksen yhteydessä. Seurannassa sukellamme epäsymmetriseen salaukseen.)

Tietojen Salaus: kahdenlaisia Salaus

Salaus varmistaa tietojen luottamuksellisuus ja liittyy kaksi tärkeää komponenttia:

  1. salainen avain: yhteydessä symmetrisen salauksen, voimme olettaa meidän osallistujat, Alice ja Bob, on yhteinen salainen avain.,
  2. salakirjoituksen: joukko algoritmeja, yksi salaus ja salauksen.

on tärkeää huomata, että salaus ja salauksen algoritmit ovat julkisesti tiedossa. Ainoa salattu asia on avain.

kahdenlaisia ciphers ovat stream ciphers ja block ciphers. Mahdollinen edellytys riittävästi ymmärrystä sekä näiden salaus on tietoa bitwise-operaatiot (operations suoritetaan bittiä). Tarkemmin sanottuna käsite exclusive-tai (XOR). Löysin tämä kirjoitus antaa hyvin selkeä selitys bitwise-operaatioita., Tai voit yrittää ymmärtää xorin käsitettä alla olevan kuvan avulla. Periaatteessa kaksi bittiä yhdistetään, ja jos ne ovat erilaisia (yksi 0 ja 1) ne johtavat 1, ja jos ne ovat samat, (molemmat 0: n tai 1: n) tuloksena 0. Tästä lähtien, voin olettaa, että lukija ymmärtää käsite XOR ja että yleinen merkintätapa XOR on: ⊕

Stream Cipher

stream cipher on symmetrisen avaimen salakirjoitus, jossa selväkielisenä (tavuina muodossa) on XOR olisi vähän kerrallaan avaimella (myös tavuina muodossa) tuottaa salattu salakieli., Samaa prosessia käytetään salauksen purkamiseen. Kun otetaan huomioon xor-operaation luonne, jos XOR ciphertext avain, tämä johtaa takaisin alkuperäisen plaintext.

Ansiokas lukija voisi ymmärtää, mistä tämä kuvaus, että avain (merkitty yllä olevassa kuvassa, kuten ”stream Cipher”) ja selväkielisenä täytyy olla jotain hyvin tärkeää yhteistä. Juuri niin! Avaimen ja selityksen on oltava saman pituisia., Tämä ei tietenkään ole kovin käytännöllistä.

jotta stream-salakirjoituksesta tulisi käytännöllisempi, esitellään ajatus pseudorandom-generaattorista. Pseudorandomigeneraattori on deterministinen menettely, joka ottaa syötön ja tuottaa vielä pidemmän pseudorandom-tuloksen. On deterministinen menettely tarkoittaa, että se palaa aina saman ulostulon, jos annetaan sama tulo (eli ”abc123” tuloksia ”8474f24e0d72e1b949ffd2…” joka kerta)., Sana pseudorandom tarkoittaa, että vaikka lähtö on ei todella satunnainen (kun se on määritetty perustuen tietyn input), se on itse asiassa mahdoton erottaa todella satunnainen merkkijono. Toisin sanoen, koska näyte tulot ja lähdöt, ei ole vihjeitä siitä, mikä tuotos vastaa tiettyä tulo-ja päinvastoin, siksi on pseudorandom. Se on mahdollista käyttää jaetun salaisen avaimen kuin tulo tuottaa jopa pidempään pseudorandom avain toimia pitkän avain XOR olisi yhtä pitkä selväkielisenä.,

tätä toistaiseksi kuvaamamme stream-salakirjoituksen konkreettista toteutusta kutsutaan ”kertaluonteiseksi padiksi”. Kertatyynyn erittäin tärkeä ominaisuus on se, että kertatyynyn voi käyttää vain kerran. Kun sitä käytetään toisen kerran, näiden viestien turvallisuus vaarantuu.

alla on liukumäki kurssilta. PRG (K) tarkoittaa pseudorandom-sekvenssiä, joka syntyy jaetusta avaimestamme K. symboli ⊕ merkitsee XORIA. c tarkoittaa ciphertextiä. m tarkoittaa viestiä (tai selitystekstiä).,

Pohjimmiltaan, tämä dia on selvää, että kun avain on käyttää kahdesti, voimme XOR, että ciphertexts yhdessä, ja se on täsmälleen sama XOR ’ ing kaksi plaintexts yhdessä. Koska on tarpeeksi irtisanominen Englanti, taju hyökkääjä voi käyttää tätä tietoa palauttaa viestit kokonaan.

säilyttääkseen yhden jaetun salaisen avaimen, noncen käsitettä voidaan käyttää varmistamaan, ettemme koskaan toista kertaavainta., Nonce on mielivaltainen luku, jota voidaan käyttää vain kerran kryptografisessa viestinnässä. Kun lähetät salakieli, lähettäjä voi myös lähettää pedo yli voidaan yhdistää salainen avain sitten käyttää kuten input tuottaa erillinen pseudorandom avain kunkin salaus.

(olet ehkä huomannut edellä olevan liukumäen sanoo hyökkäys 1., Sivuhuomautuksena niille ihmettelet, mikä Attack 2 on, Attack 2 on se, että kun stream cipher tarjoaa tietojen luottamuksellisuuden, se EI tarjoa tietojen eheys on määritelty ensimmäinen jakso)

Block Cipher

toinen tyyppi cipher on Block Cipher. Block cipher vie kiinteän pituuden tulo ja iteratiivisesti salaa selkokielisen uudestaan ja uudestaan käyttämällä eri avain (”pyöreä avain”) jokaisella kierroksella ja lopulta tuottaa salateksti on sama pituus. 3DES ja AES ovat kaksi esimerkkiä block ciphers, joka ottaa syöttö 48 bittiä ja 128 bittiä, vastaavasti.,

Dia edellä osoittaa perus arkkitehtuuri block cipher. Voit nähdä, että avain laajennusmekanismilla on uusi avain jokaiselle kierrokselle. Selkokielisen, merkitään (m) viesti, saa salattu uudelleen ja uudelleen, kunnes lopulta vastaava salatekstin (c) sama pituus on palannut.

brevityn tähden, I ’ ll cover AES in this blogpost., Vaikka DES/3DES on historiallisesti merkittävä, nykyään AES on laajemmin käytetty ja hyväksytty.

AES on rakennettu Korvaaminen Permutaatio Verkkoon. AES toimii 128-bittisellä lohkolla, joka vastaa 16 tavua. Kuten yllä kuvassa ylhäällä vasemmalla, me kirjoittaa 16 tavua kuin 4-4 matriisi. Tämä matriisi toimii tietorakenne hyvä laahustavat tiedot noin., Kullakin kierroksella, prosessi on seuraava:

  1. Me XOR kierros-näppäintä, ensimmäinen (k0), nykyisen viesti
  2. Sitten me käydä läpi korvaaminen prosessi, jossa korttelin tietoja vaihdetaan muiden lohkojen perustuu tietyn korvaaminen taulukko (kuvassa yllä (1) ByteSub).
  3. käydään läpi permutaatio kerros, jossa bitit ovat muunnosten ja sekoitetaan noin(kuvassa yllä (2) ShiftRow & (3) MixColumn).
  4. sitten toistamme tätä prosessia 10 kierroksen ajan.,

Kuvassa yllä, huomaat, että viime kierroksella ohittaa Sekoita Sarake, vaihe, XOR on tuloksen viimeinen kierros-näppäintä ja lähdöt meidän saatu salateksti. Purkua varten yksinkertaisesti peruutamme prosessin. Kurssi tarjoaa korkean tason yleiskatsauksen tämä salaus prosessi ja kannustaa opiskelijoita katsoa syvemmälle, jos se kiinnostaa sinua. Siksi jätän AES: n sisäisen toiminnan tähän. Suosittelisin ihmisiä tutkimaan Fiestel Network menettelyä 3DES hauskaa verrata ja kontrasti eri lohko salakirjoituslaitteet.,

laitteiston kannalta, koska käynnistää Intelin Westmere, Intel on suunniteltu niiden prosessorit erityiset ohjeet AES optimointi rakennettu suoraan niiden laitteisto-ja AMD perässä pian sen jälkeen.

Block Cipher Toimintatilaa

toisin Kuin stream cipher, block cipher kestää vain kiinteän pituuden tulo. Ilmeisesti haluamme käsitellä dataa, joka on suurempi kuin 16 tavua kerrallaan. Joten seuraavaksi on tärkeää ymmärtää toimintatapoja, joissa voimme käyttää lohkosiipureita salaamaan suuria tietokokonaisuuksia., Soveltaa tätä block cipher suuri aineisto, ensimmäinen toimintatapa, joka voi tulla mieleen on nimeltään ”Electronic Code Book” (EKP). EKP yksinkertaisesti jakaa tiedot 16 tavun lohkoihin ja suorittaa AES-salauksen yhdenmukaisesti. Se voitaisiin tehdä jopa rinnakkain. Erittäin nopeasti! Mutta se ei ole kovin turvallinen.

Se on epävarma, koska jos 16 tavun viesti toistuu, salateksti on myös toistuva tietoja., Tämä luovuttaa tietoja datastamme mahdolliselle hyökkääjälle. Voimme soveltaa tätä haavoittuvuutta tapaukseen, jossa salaamme kuvan EKP: llä. Kuten näet alla, on selvää, että kuvamme on pääisku. Voimakkaasti mustalla alueella näkyy siluetti tummien hiusten ja paidan kautta.

On tärkeää, että meidän salaus järjestelmät ovat semanttisesti turvallista., Semanttinen Turvallisuus on käsite, että jos meillä on salakieli, joka vastaa yhden kaksi eri plaintexts, vihollinen ei voi arvata kanssa paremmin todennäköisyys kuin 1/2, joka selkokielisen salakieli vastaa. EKP ei selvästikään ole semanttisesti turvallinen. Salattu kuva antaa meille runsaasti tietoa arvailemaan sen vastaavan tavallisen kuvan.

EKP: n on esimerkki yksi-aika-näppäintä toimintatila (merkitys, kuten one-time-pad, avainta voi käyttää vain kerran). Toinen varmempi kertaluonteinen toimintatapa on deterministinen vastatila. Voitte tutkia asiaa itse., Siirryn turvallisiin toimintatapoihin, jotka mahdollistavat moniaikaiset avaimet!

Cipher Block Chaining (CBC) on toimintatapa, että ketjut jokaisen 16-tavun lohko selkokielisen yhdessä läpi XOR ’ ing salakieli edellisen selkokielisen meidän nykyinen selkokielisen ennen kuin suoritat block cipher-salaus (eli AES). Alla oleva kuva selventää tätä käsitettä:

ensin aloittaa satunnaisella IV., IV tarkoittaa alustusvektoria, joka voidaan määritellä seuraavasti: alkuarvo, jota käytetään jonkin iteroidun prosessin käynnistämiseen. CBC: n tapauksessa IV: n on oltava satunnainen (siten arvaamaton), joten sen on oltava yksilöllinen kunkin tapahtuman osalta. Ensimmäinen lohko salateksti on yksinkertaisesti salaamaton satunnainen IV. Tuottaa loput salakieli, ensimmäinen, satunnainen IV on XOR ’ d ensimmäinen lohko selväkielisenä (m). Tulos sitten saa salattu pyöreä avain k palauttaa ensimmäisen lohkon salaus salateksti (c)., Tuo salakieli sitten saa XOR olisi seuraava lohko selväkielisenä (m), tulos on salattu pyöreä avain on k ja palauttaa toisen lohkon salaus salateksti (c). Prosessia jatketaan, kunnes kaikki lohkot on salattu.

purkaa, me vain kääntää prosessi.

tärkeä osa CBC salaus on, että satunnainen IV on arvaamaton., Jos IV on ennustettavissa, sitten meidän salaus järjestelmä tulee alttiita valittu selväteksti-iskut. Valittu Selväteksti-Hyökkäys (CPA) on hyökkäys malli, joka olettaa, että hyökkääjä voi saada ciphertexts mielivaltaisia plaintexts, ja käyttää näitä tietoja salattuja viestejä. Siksi CPA: n turvallisuuden varmistamiseksi tarvitaan arvaamaton IV.

– vastaa minulle täällä niin minä yritän selittää, miten tämä hyökkäys olisi työtä: Se on mahdollista suorittaa valittu selväteksti-hyökkäys läsnäolo ennustettavissa IV: n luonteen takia XOR., Jos XOR sama arvo yhdessä (0101 ⊕ 0101) se on aina yhtä 0, joten se peruuttaa ulos. Joten jos epäilet, on havaittu salateksti c vastaa tiettyä selkokielisen m voit testata hypoteesia, jossa on ennustettavissa IV. Jos selkokielisen kyseessä oli salattu IV1 siten, että c = E(k, m ⊕ IV1) voit lähettää uuden selkokielisen olla salattu ja katso jos voit saada matching tulos: c. Koska et voi ennustaa IV on IV2, lähetät m ⊕ IV1 ⊕ IV2., CBC prosessi on XOR tämä tulo ensi IV, IV2 siten, että: c = E(k, m ⊕ IV1 ⊕ IV2 ⊕ IV2) siten IV2 peruuttaa pois, ja jälleen kerran olemme salaamalla E(k, IV1 ⊕ m) mikä olisi tulos, kun taas c-ja jos näin tapahtuu, olemme voineet arvata, mitä oli aiemmin salattu IV1.

Todella mahtava homma jos sait läpi—^,

Kanssa, että haluaisin tarkistaa yhden block cipher toimintatapa joka päättää ensimmäinen kirjoitus tässä 3 osassa sarjassa. Jos se on ollut iso ponnistus päästä näin pitkälle, nyt voisi olla hyvä hetki pikatauolle ennen kuin jatketaan!,

Ok, joten olemme tarkastaneet ECB, CBC, ja niiden haavoittuvuuksia, mutta lopuksi, ja ehkä kaikkein tärkeintä aion esitellä Satunnaistettu Counter Mode (CTR). Tämä on uusin, varmin toimintatapa, ja se on myös tehokkaampi kuin CBC.

Satunnaistettu Counter Mode myös ottaa satunnainen IV. IV palvelee eri tarkoitusta varten täällä kuitenkin. Avaimemme yhdistetään (esim., via AES) kanssa iteroitu versio meidän IV: yllä pidämme lisäämällä 1 Meidän IV kunkin iteraation, tai muuten saamme toistuvan tuloksen. Teemme tämän, kunnes meillä on lehtiö niin kauan kuin tekstiviesti. Aivan kuten kerran-pad stream cipher, me nyt XOR meidän selitysteksti viesti meidän pseudorandom pad johtaa ciphertext. Jos laitteisto on useita AES-moottorit, tämä on erittäin tehokas, koska se on parallelizable. Vuonna CBC, jokainen salakieli riippui edellisen lohkon salakirjoitusta, joten se oli mahdotonta parallelize.,

Emme edes välttämättä tarvitse block cipher yhdistää meidän IV ja keskeiset osaksi pseudorandom pad. Salakirjoitusten on oltava palautuvia. Jos katsot tarkasti, mekaniikka, satunnaistettu counter-tilassa, huomaat, että salauksen purku ei vaadi meitä muuttamaan F(k, IV) . Luonteen XOR, kaikki meidän täytyy tehdä, on uudistua sama pseudorandom pad ja XOR se meidän salakieli. Salauksen purkamiseksi meidän on siis toistettava operaatio, ei peruutettava sitä.,

Abstraktisti puhuen (niin pitkälle olen välttää abstrakteja käsitteitä), se tarkoittaa, että menettely käytämme yhdistää meidän salainen avain ja IV F(k, IV) täytyy olla Pseudorandom-Toiminto (PRF) vastakohtana Pseudorandom Permutaatio (PRP). Olemme itse asiassa soveltaa näitä käsitteitä koko tämän blogipost. Sekä PRPs että PRFs ovat deterministisiä menettelyjä, jotka tietyn panoksen perusteella johtavat pseudorandom-ulostuloon. (TS.AES, XOR). PRP on kuitenkin tiukempi siinä mielessä, että sen on oltava käännettävissä., Itse asiassa, termejä, PRP ja block cipher (kuten AES) käytetään usein synonyyminä. PRF: n ei kuitenkaan tarvitse olla palautuva. Jos palaat takaisin edellisiin tässä viestissä näytettyihin dioihin, ymmärrät nyt merkintätavan PRF ja PRP.

tähän päättyy yleiskatsaukseni symmetrisestä salauksesta! Tutkimme virtojen salakirjoituksia ja salakirjoituksia. Sitten, koska block ciphers voidaan suorittaa vain noin 16 tavua kerrallaan, me kattaa toimintatilaa käytetään suorittamaan block ciphers suuri plaintexts. Selvitimme myös PRPs vs PRFs-käsitteet.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *