Mikä on RSA-salaus ja miten se toimii?

Mikä on RSA-salaus ja miten se toimii_


RSA-salaus on järjestelmä, joka ratkaisee sen, mikä oli aikoinaan yksi suurimmista salauksen ongelmista: Kuinka voit lähettää jollekin koodatun viestin ilman mahdollisuutta jakaa koodia aiemmin heidän kanssaan?

Tämä artikkeli opettaa sinulle kaiken mitä sinun tarvitsee tietää miten RSA-salausta kehitettiin, kuinka se toimii, matematiikka sen takana, mihin sitä käytetään samoin kuin jotkut suurimpia turvallisuuskysymyksiä, joita se kohtaa. RSA: sta oppiminen antaa sinulle jonkin verran perustietoa, joka auttaa sinua ymmärtämään kuinka monta osaa online-elämästämme pidetään turvassa.

Mikä on RSA-salaus?

Oletetaan, että haluat kertoa ystävällesi salaisuuden. Jos olet heiden vieressä, voit kuiskata sen. Jos olet maan vastakkaisilla puolilla, se ei tietenkään toimi. Voit kirjoittaa sen muistiin ja lähettää heille tai käyttää puhelinta, mutta kukin näistä viestintäkanavista on epävarma ja kuka tahansa jolla on riittävän vahva motivaatio, voisi helposti siepata viestin.

Jos salaisuus oli tarpeeksi tärkeä, et olisi vaarassa kirjoittaa sitä normaalisti - vakoojat tai roistolainen postityöntekijä voi etsiä postiasi. Samoin joku voisi napauttaa puhelintasi tietämättäsi ja kirjata jokaisen soittamasi puhelun.

Yksi ratkaisu estää salakuuntelijoita pääsemästä viestin sisältöön on salaa se. Tämä tarkoittaa periaatteessa koodin lisäämistä viestiin, joka muuttaa sen sekoittuneeksi sekaksi. Jos koodisi on riittävän monimutkainen, ainoat ihmiset, jotka pääsevät alkuperäiseen viestiin, ovat ne, joilla on pääsy koodiin.

Jos sinulla oli mahdollisuus jakaa koodi etukäteen ystäväsi kanssa, niin jompikumpi teistä voi lähettää salatun viestin milloin tahansa, tietäen, että olette molemmat ainoat, jotka kykenevät lukemaan viestin sisällön. Entä jos sinulla ei olisi ollut mahdollisuutta jakaa koodia etukäteen?

Tämä on yksi salauksen perusongelmista, johon on puututtu julkisen avaimen salausjärjestelmät (tunnetaan myös nimellä epäsymmetrinen salaus), kuten RSA.

RSA-salauksessa viestit salataan koodilla, jonka nimi on a julkinen avain, joka voidaan jakaa avoimesti. Joidenkin RSA-algoritmin matemaattisten ominaisuuksien vuoksi, Kun viesti on salattu julkisella avaimella, se voidaan purkaa vain toisella avaimella, joka tunnetaan nimellä yksityinen avain. Jokaisella RSA-käyttäjällä on avainpari, joka koostuu heidän julkisista ja yksityisistä avaimista. Kuten nimestä voi päätellä, yksityinen avain on pidettävä salassa.

Julkisen avaimen salausmenetelmät eroavat toisistaan symmetrisen avaimen salaus, jossa sekä salaus että salauksen purkuprosessi käyttävät samaa yksityistä avainta. Nämä erot tekevät julkisten avainten salauksesta kuten RSA: sta hyödyllisen viestinnän tilanteissa, joissa ei ole ollut mahdollisuutta jakaa avaimia turvallisesti etukäteen.

Symmetrisen avaimen algoritmeilla on omat sovelluksensa, kuten tietojen salaaminen henkilökohtaiseen käyttöön tai silloin, kun on suojattuja kanavia, joiden avulla yksityiset avaimet voidaan jakaa.

Katso myös: Julkisen avaimen salaus

Missä käytetään RSA-salausta?

RSA-salausta käytetään usein yhdistelmä muiden salausohjelmien kanssa, tai varten digitaaliset allekirjoitukset joka voi todistaa viestin aitouden ja eheyden. Sitä ei yleensä käytetä kokonaisten viestien tai tiedostojen salaamiseen, koska se on vähemmän tehokas ja resursseja raskaampi kuin symmetrisen avaimen salaus..

Asioiden tehostamiseksi, tiedosto salataan yleensä symmetrisen avaimen algoritmilla, ja sitten symmetrinen avain salataan RSA-salauksella. Tämän prosessin mukaisesti vain olio, jolla on pääsy RSA-yksityiseen avaimeen, pystyy purkamaan symmetrisen avaimen.

Ilman pääsyä symmetriseen avaimeen alkuperäistä tiedostoa ei voi purkaa. Tätä menetelmää voidaan käyttää viestien ja tiedostojen suojaamiseen ilman, että otat liian kauan tai kulutat liian paljon laskennallisia resursseja.

RSA-salausta voidaan käyttää useissa eri järjestelmissä. Se voidaan toteuttaa OpenSSL-, wolfCrypt-, cryptlib- ja monissa muissa salauskirjastoissa.

Yhtenä ensimmäisistä laajalti käytetyistä julkisen avaimen salausohjelmista RSA loi perustan suurelle osalle suojattua viestintäämme. Se oli perinteisesti käytetty TLS ja oli myös alkuperäinen algoritmi, jota käytettiin PGP-salauksessa. RSA näkyy edelleen monissa selaimissa, sähköpostissa, VPN: issä, chatissa ja muissa viestintäkanavissa.

RSA: ta käytetään myös usein suojattujen yhteyksien luomiseen VPN-asiakkaiden ja VPN-palvelimien välillä. Protokollien, kuten OpenVPN, alla TLS-kättelyt voivat käyttää RSA-algoritmia avainten vaihtamiseen ja suojatun kanavan luomiseen.

RSA-salauksen tausta

Kuten mainitsimme tämän artikkelin alussa, ennen julkisen avaimen salausta oli haaste kommunikoida turvallisesti, ellei olisi ollut mahdollista vaihtaa avaimia turvallisesti etukäteen. Jos koodilla ei ollut mahdollisuutta jakaa etukäteen tai turvallisella kanavalla, jonka kautta avaimet voitiin jakaa, ei ollut mahdollista kommunikoida ilman uhkaa, että viholliset voisivat siepata ja käyttää viestin sisältöä..

Asiat todella alkoivat muuttua vasta 1970-luvulla. James H. Ellis julkaisi ensimmäisen vuosikymmenen alussa ensimmäisen merkittävän kehityksen kohti niin kutsuttua julkisen avaimen salausta. Ellis ei löytänyt tapaa toteuttaa työnsä, mutta hänen kollegansa Clifford Cocks laajensi sitä, jotta siitä tuli se, mitä me nyt tunnetaan RSA-salaus.

Viimeinen palapelin pala on se, jota me nyt kutsumme Diffie-Hellman-avaimenvaihto. Toinen työtoveri Malcolm J. Williamson hahmotteli järjestelmän, jonka avulla kaksi osapuolta jakoi salausavaimen, vaikka vastustajat valvovat kanavaa..

Kaikki tämä työ tehtiin Yhdistyneen kuningaskunnan tiedustelupalvelussa, Government Communications Headquarters (GCHQ), joka piti löytön luokitelluna. Osittain teknologisten rajoitusten takia GCHQ ei voinut nähdä julkisen avaimen kryptografian käyttöä tuolloin, joten kehitys istui tyhjällä pölyä keräävällä hyllyllä.. Vasta vuonna 1997 luokitus poistettiin ja RSA: n alkuperäiset keksijät tunnustettiin.

Useita vuosia myöhemmin vastaavat käsitteet alkoivat kehittyä julkisella alueella. Ralph Merkle loi varhaisen muodon julkisen avaimen salaus, joka vaikutti Whitfield Diffieen ja Martin Hellmaniin Diffie-Hellman-avaimenvaihtosuunnittelussa.

Diffien ja Hellmanin ideoista puuttui yksi tärkeä näkökohta, joka tekisi heidän työstään perustan julkisen avaimen salaukselle. Tämä oli a yksisuuntainen toiminto, jota olisi vaikea kääntää. Vuonna 1977, Ron Rivest, Adi Shamir ja Leonard Adleman, joiden sukunimet muodostavat RSA-lyhenteen, keksittiin ratkaisu vuoden ongelman ratkaisemisen jälkeen.

MIT: llä toimivat tutkijat tekivät läpimurtonsa pääsiäisjuhlan jälkeen vuonna 1977. Yöjuoman jälkeen Rivest meni kotiin, mutta nukkumisen sijasta hän vietti illan kuumeisesti kirjoittamalla paperia, joka muotoili hänen ideansa tarvittavasta yksisuuntatoiminnosta..

MIT patentoi idean vuonna 1983, mutta vasta Internetin alkuaikoina RSA-algoritmi alkoi nähdä laajaa käyttöönottoa tärkeänä tietoturvatyökaluna..

Kuinka RSA-salaus toimii?

Seuraava tulee olemaan hieman yksinkertaistamista, koska lukion matematiikan opettaja on todennäköisesti pelottanut liian monta lukijaa. Jotta matematiikka ei pääse liian käsiksi, niin olemme yksinkertaistaa joitain käsitteitä ja käyttää paljon pienempiä lukuja. Todellisuudessa RSA-salaus käyttää alkulukuja, jotka ovat huomattavasti suurempia, ja siellä on muutama muu monimutkaisuus.

On olemassa useita erilaisia ​​käsitteitä, jotka sinun on päästävä ympäri, ennen kuin voimme selittää, kuinka se kaikki sopii yhteen. Nämä sisältävät luukun toiminnot, tuottavat primesit, Carmichaelin kokonaistoiminto ja siihen liittyvät erilliset prosessit julkisten ja yksityisten avainten laskeminen käytetään salaus- ja salauksenpurkuprosesseissa.

Pysäytä oven toiminnot

RSA-salaus toimii oletuksella, että algoritmi on helppo laskea yhteen suuntaan, mutta melkein mahdoton käänteisesti. Esimerkiksi, jos sinulle sanotaan, että 701,111 on kahden alkuluvun tulos, voisitko selvittää, mitkä nämä kaksi numeroa ovat?

Jopa laskurilla tai tietokoneella, useimmilla meistä ei olisi aavistustakaan, mistä aloittaa, puhumattakaan siitä, että pystyy selvittämään vastauksen. Mutta jos kääntämme asioita ympäri, siitä tulee paljon helpompaa. Mikä on seuraus:

907 x 773

Jos sinulla olisi tarpeeksi tylsää, olisit voinut piiskata puhelimesi tai ehkä laskea sen päähänsi huomataksesi, että vastaus on aiemmin mainittu 701111. Nämä 907 ja 773 ovat alkuluvut, jotka vastaavat ensimmäiseen kysymykseemme, joka osoittaa meille, että tietyt yhtälöt voivat olla helppoja selvittää yhdellä tavalla, mutta näennäisesti mahdottomina kääntää.

Yksi mielenkiintoinen osa tätä yhtälöä on, että on yksinkertainen selvittää yksi alkuluvista, jos sinulla jo on toinen, samoin kuin tuote. Jos sinulle kerrotaan, että 701,111 on tulos 907: stä kerrottuna toisella alkuluvulla, voit selvittää sen toisella alkuluvulla seuraavalla yhtälöllä:

701,111 - 907 = 773

Koska näiden lukujen välinen suhde on helppo laskea yhteen suuntaan, mutta uskomattoman kova käänteisesti, yhtälö tunnetaan ansa oven toiminta. Huomaa, että vaikka yllä olevaa esimerkkiä on vaikea selvittää, tietokoneet voivat tehdä toimenpiteen triviaaliaikaa.

Tämän vuoksi RSA käyttää paljon suurempia numeroita. Alkujen koko todellisessa RSA-toteutuksessa vaihtelee, mutta 2048-bittisessä RSA: ssa ne kokoontuisivat muodostamaan 617 numeroa pitkiä avaimia. Avaimen muodostaminen tämän koon helpottamiseksi on avain:

99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999

Alkujen luominen

Edellä mainitut ansa oven toiminnot muodostavat perustan julkisen ja yksityisen avaimen salausjärjestelmien toiminnalle. Niiden ominaisuuksien avulla julkiset avaimet voidaan jakaa vaarantamatta viestiä tai paljastamatta yksityistä avainta. Niiden avulla myös tiedot voidaan salata yhdellä avaimella tavalla, jonka vain toinen avain voi salata parilla.

Ensimmäinen vaihe viestin salaamiseksi RSA: lla on luo avaimet. Tätä varten tarvitsemme kaksi alkuluvua (p ja q) jotka valitaan primaalitestillä. Primality test on algoritmi, joka löytää tehokkaasti alkuluvut, kuten Rabin-Miller primality test.

Alukkeiden lukumäärän RSA: ssa on oltava erittäin suuri ja myös suhteellisen kaukana toisistaan. Numeroita, jotka ovat pieniä tai lähempänä toisiaan, on paljon helpompi murtaa. Tästä huolimatta esimerkissämme käytetään pienempiä lukuja helpottamaan asioiden seuraamista ja laskemista.

Oletetaan, että primaalitesti antaa meille alkuluvut, joita olemme käyttäneet yllä, 907 ja 773. Seuraava askel on löytää moduuli (n) käyttämällä seuraavaa kaavaa:

n = p x q

Missä p = 907 ja q = 773

Siksi:

n = 907 x 773

n = 701,111

Carmichaelin kokonaistoiminto

Kun meillä on n, käytämme Carmichaelin kokonaistoiminto:

    λ(n) = LCM (p - 1, q - 1)

Jos on kulunut jonkin aikaa siitä, kun olet lyönyt matemaattisia oppikirjoja, yllä oleva saattaa näyttää hieman kauhistuttavalta. Voit ohittaa tämän osan ja luottaa vain siihen, että matematiikka toimii, muuten pysyä kanssamme vielä muutamia laskelmia varten. Kaikki selitetään niin yksityiskohtaisesti kuin mahdollista auttaaksesi sinua pääsemään päähän perusasioiden ympärillä.

Niille, jotka eivät ole tietoisia, λ (n) edustaa Carmichaelin kokonaisuutta n, sillä aikaa LCM tarkoittaa alinta yhteistä monikertaa, mikä on pienin luku, joka molemmat p ja q voi jakaa On olemassa muutamia eri tapoja selvittää tämä, mutta helpoin on luottaa online-laskuriin tekemään yhtälö sinulle. Joten laitetaan numeromme yhtälöön:

    λ(701111) = LCM (907 - 1, 773 - 1)

    λ(701111) = LCM (906, 772)

   Edellä linkitetyn laskimen avulla saadaan meille:

rsa-salaus-2

    λ(701111) = 349 716

Julkisen avaimen luominen

Nyt kun meillä on Carmichaelin kokonaismäärä alkuluvumme, se on aika selvittää julkinen avaimestamme. RSA: n alaisuudessa, julkiset avaimet koostuvat alkuluvusta e, yhtä hyvin kuin n. Numero e voi olla mikä tahansa välillä 1 ja arvo λ(n), joka esimerkissämme on 349 716.

Koska julkinen avain jaetaan avoimesti, se ei ole niin tärkeä e olla satunnaisluku. Käytännössä, e asetetaan yleensä 65537, koska kun satunnaisesti valitaan paljon suurempia lukuja, se tekee salauksen paljon vähemmän tehokkaaksi. Tämän päivän esimerkissä pidämme numerot pieninä, jotta laskelmat olisivat tehokkaita. Sanokaamme:

e = 11

Lopullista salattua tietämme kutsutaan salatekstiksi (C). Me johdamme sen selvätekstiviestistämme (m) soveltamalla julkista avainta seuraavalla kaavalla:

C = me mod n

Olemme jo keksineet e ja me tiedämme n yhtä hyvin. Ainoa asia, joka meidän on selitettävä, on mod. Se on hiukan tämän artikkelin syvyydestä, mutta se viittaa a modulo-toiminta, mikä tarkoittaa käytännössä jäljellä olevaa loppua, kun jaat toiset puolen. Esimerkiksi:

10 mod 3 = 1

Tämä johtuu siitä, että 3 menee 10: een kolme kertaa, loput 1: sta.

Takaisin yhtälöömme. Jotta asiat olisivat yksinkertaisia, sanotaan niin viesti (m), jonka haluamme salata ja pitää salassa, on vain yksi numero, 4. Liitetään kaikki:

C = me mod n

C = 411 mod 701111

C = 4 194 304 mod 701111

Jälleen tehdä modulo-toiminta helppoa, käytämme online-laskinta, mutta olet tervetullut selvittämään sen itse. Syöttämällä 4 194 304 online-laskimeen se antaa meille:

rsa-salaus-3

c = 688 749

Siksi kun käytämme RSA: ta salaamaan viestimme, 4, julkisella avaimellamme se antaa meille salausteksti 688 749. Aiemmat vaiheet saattoivat tuntua hiukan liian matemaattisilta, mutta on tärkeää toistaa, mitä on tapahtunut.

Meillä oli viesti 4, jonka halusimme pitää salassa. Sovelimme siihen julkisen avaimen, joka antoi meille salattu tulos 688 749. Nyt kun se on salattu, voimme turvallisesti lähettää numeron 688 749 avainparin omistajalle. He ovat ainoa henkilö, joka pystyy purkamaan sen yksityisellä avaimellaan. Kun he purkavat sen, he näkevät viestin, jonka todella lähetimme, 4.

Yksityisen avaimen luominen

RSA-salauksessa, kun data tai viesti on muutettu salausteksiksi julkisella avaimella, se voidaan salata vain saman avainparin yksityisellä avaimella.. Yksityiset avaimet koostuvat d ja n. Tiedämme jo n, ja seuraavaa yhtälöä käytetään löytämään d:

d = 1 /e mod λ(n)

vuonna Julkisen avaimen luominen yllä olevassa osassa, päätimme jo tämän esimerkissämme, e olisi yhtä suuri kuin 11. Samoin tiedämme sen λ(n) on 349 716 aikaisemmasta työstämme Carmichaelin kokonaistoiminto. Asiat muuttuvat hieman monimutkaisemmiksi, kun törmäämme tähän kaavan osaan:

1 /e mod

Tämä yhtälö voi näyttää siltä, ​​että se pyytää sinua jakamaan luvun 11, mutta niin ei ole. Sen sijaan tämä vain symboloi sitä, että meidän on laskettava modulaarinen käänteinen of e (mikä tässä tapauksessa on 11) ja λ(n) (joka tässä tapauksessa on 349 716).

Tämä tarkoittaa käytännössä sitä sijasta, että suoritamme normaalin modulo-operaation, käytämme sen sijaan käänteistä. Tämä löytyy yleensä laajennetusta euklidisesta algoritmista, mutta se on hiukan tämän artikkelin ulkopuolella, joten huijaamme ja käytämme sen sijaan online-laskinta. Nyt kun ymmärrämme kaiken tapahtuvan, liitetään tietomme kaavaan:

d = 1 /11 mod 349716

Suorita tämä toimenpide syöttämällä 11 (tai mikä tahansa arvo, joka sinulla voi olla) e jos yrität tätä omalla esimerkilläsi), missä se sanoo Kokonaisluku ja 349 716 (tai mikä tahansa arvo, joka sinulla voi olla λ(n), jos yrität tätä omalla esimerkilläsi), missä se sanoo modulo yllä olevassa linkitetyssä online-laskimessa. Jos olet tehnyt sen oikein, sinun pitäisi saada tulos, jossa:

d = 254, 339

Nyt kun meillä on arvo d, voimme purkaa viestit, jotka on salattu julkisella avaimellamme, seuraavan kaavan avulla:

m = Cd mod n

Nyt voimme palata takaisin salattuun tekstiin, jonka salamme Yksityisen avaimen luominen osiossa. Kun salasimme viestin julkisella avaimella, se antoi meille arvon C 688 749. Ylhäältä tiedämme sen d vastaa 254,339. Tiedämme myös sen n on 701 111. Tämä antaa meille:

m = 688 749254339 mod 701111.

Kuten olet ehkä huomannut, yrittää viedä numero 254 339: nteen voimaan saattaa olla hiukan paljon useimmille normaaleille laskimille. Sen sijaan käytämme online-RSA-salauslaskuria. Jos haluat käyttää toista menetelmää, käyttäisit voimia normaalisti ja suorittaisit moduulin toiminnan samalla tavalla kuin teimme Julkisen avaimen luominen jakso.

Kirjoita yllä olevaan linkitettyyn laskuriin 701,111 missä se sanotaan Supply Modulus: N, 254,399 missä se sanoo Salauksen purkuavain: D, ja 688 749, missä se sanoo Ciphertext-viesti numeerisessa muodossa, kuten alla:

rsa-salaus-1

Kun olet syöttänyt tiedot, paina Pura, joka laittaa numerot yllä luetellun salauksen purkukaavan kautta. Tämä antaa sinulle alkuperäisen viestin alla olevaan ruutuun. Jos olet tehnyt kaiken oikein, sinun pitäisi saada vastaus 4, joka oli alkuperäinen viesti, jonka salasimme julkisella avaimella.

Kuinka RSA-salaus toimii käytännössä

Yllä olevien osioiden tulisi antaa sinulle kohtuullinen käsitys siitä, kuinka julkisen avaimen salauksen takana oleva matematiikka toimii. Se voi olla hieman hämmentävä, mutta jopa ne, jotka eivät ymmärtäneet yhtälöiden monimutkaisuutta, voivat toivottavasti viedä joitain tärkeitä tietoja prosessista.

Edellä luetelluissa vaiheissa olemme osoittaneet, kuinka kaksi kokonaisuutta voivat turvallisesti kommunikoida ilman, että se olisi aiemmin jakanut koodia etukäteen. Ensinnäkin, heidän jokaisen täytyy perustaa omat avainparinsa ja jaa julkinen avain toistensa kanssa. Näiden kahden entiteetin on pidettävä yksityiset avaimet salaisina, jotta viestintä pysyisi turvassa.

Kun lähettäjällä on vastaanottajan julkinen avain, hän voi käyttää sitä salaamaan tiedot, jotka he haluavat pitää turvassa. Kun se on salattu julkisella avaimella, se voidaan salata vain saman avainparin yksityisellä avaimella.. Edes samaa julkista avainta ei voida käyttää tietojen salauksen purkamiseen. Tämä johtuu ansa ovien toiminnot että me mainitsimme edellä.

Kun vastaanottaja vastaanottaa salatun viestin, hän käyttää yksityistä avaintaan tietojen käyttämiseen. Jos vastaanottaja haluaa palauttaa viestit turvallisella tavalla, he voivat sitten salata viestinsä sen osapuolen julkisella avaimella, jonka kanssa he ovat yhteydessä. Jälleen kerran, kun se on salattu julkisella avaimella, ainoa tapa saada tietoja on vastaavan yksityisen avaimen kautta.

Tällä tavoin aiemmin tuntemattomat osapuolet voivat käyttää RSA-salausta tietojen turvalliseen lähettämiseen keskenään. Tärkeät osat viestintäkanavista, joita käytämme online-elämässämme, rakennettiin tästä säätiöstä.

Kuinka monimutkaisempia viestejä on salattu RSA: lla?

Esimerkissämme yksinkertaistimme asioita paljon ymmärtämisen helpottamiseksi, minkä vuoksi salasimme vain ”4” -viestin. Mahdollisuus salata numero 4 ei vaikuta erityisen hyödylliseltä, joten saatat ihmetellä kuinka voit salata monimutkaisemman tietosarjan, kuten symmetrinen avain (mikä on RSA: n yleisin käyttö) tai jopa viesti.

Jotkut ihmiset saattavat olla hämmentyneitä siitä, kuinka avain, kuten “n38cb29fkbjh138g7fqijnf3kaj84f8b9f…” tai viesti, kuten “osta minulle voileipä”, voidaan salata algoritmilla, kuten RSA, joka käsittelee numeroita eikä kirjaimia. Tosiasia on, että kaikki tietokoneidemme käsittelemät tiedot on tallennettu binäärisiksi (1 ja 0) ja käytämme koodausstandardeja kuten ASCII tai Unicode edustamaan niitä ihmisten ymmärrettävillä tavoilla (kirjeet).

Se tarkoittaa, että näppäimet, kuten “n38cb29fkbjh138g7fqijnf3kaj84f8b9f…”, ja viestit, kuten “osta minulle voileipä”, ovat jo numeroina, joka voidaan helposti laskea RSA-algoritmissa. Numerot, joita ne edustavat, ovat paljon suurempia ja vaikeampia hallita meitä, minkä vuoksi me mieluummin käsittelemme aakkosnumeerisia merkkejä kuin binaaritappoa.

Jos haluat salaa pidempi istuntoavain tai monimutkaisempi viesti RSA: lla, siihen liittyy yksinkertaisesti paljon suurempi numero.

täyte

Kun RSA toteutetaan, se käyttää jotain nimeltään täyte, joka auttaa estämään useita hyökkäyksiä. Aloitamme esimerkillä selittääksesi miten tämä toimii. Oletetaan, että lähetit koodatun viestin ystävälle:

Rakas Karen,

    Toivon että voit hyvin. Olemmeko vielä illallisia huomenna?

    Vilpittömästi sinun,

    James

Oletetaan, että koodatit viestin yksinkertaisella tavalla vaihtamalla jokainen kirjain seuraavaan kirjaimeen. Tämä muuttaisi viestin:

Efbs Lbsfo,

    J ipqf zpv bsf xfmm. Bsf xf tujmm ibwjoh ejoofs upnpsspx?

    Zpvst tjodfsfmz,

    Kbnft

Jos vihollisesi sieppasivat tämän kirjeen, on olemassa temppu, jota he voisivat käyttää yrittämään hakkeroida koodin. He voisivat katso kirjeesi muotoa ja yritä arvata mitä viesti voi sanoa. He tietävät, että ihmiset alkavat yleensä kirjeensä "Hei", "Hei", "Rakas" tai monilla muilla tavoilla.

Jos he yrittäisivät käyttää ensimmäiseksi sanana "Hei" tai "Hei", he huomaavat, että se ei sovi merkkien lukumäärään. He voivat sitten kokeilla ”rakas”. Se sopii, mutta se ei välttämättä tarkoita mitään. Hyökkääjät vain kokeilevat sitä ja katsovat mihin se johdatti heidät. Joten he vaihtavat kirjaimet “e”, “f”, “b” ja “s” kirjaimilla “d”, “e”, “a” ja “r”. Tämä antaisi heille:

Rakas Laseo,

    J ipqe zpv ovat xemm. Ovatko xe tujmm iawjoh djooes upnpsspx?

    Zpvrt tjoderemz,

    Kanet

Se näyttää edelleen melko hämmentävältä, joten hyökkääjät voivat yrittää tarkastella joitain muita yleissopimuksia, kuten kuinka päätämme kirjeemme. Ihmiset lisäävät loppuun usein ”Lähettäjä” tai ”Ystävälliset terveiset”, mutta kumpikaan niistä ei sovi muotoon. Sen sijaan hyökkääjät saattavat yrittää "Kunnioittavasti" ja korvata muut kirjeet nähdäkseen, mistä se saa heidät. Vaihtamalla ”z”, “p”, “v”, “t”, “j” “o”, “d” ja “m” kirjaimilla “y”, “o”, “u”, “s”, “ i ”,” n ”,“ c ”ja“ l ”, he saavat:

Rakas Lasen,

    Ioqe olet xell. Ovatko xi tuill iawinh dinnes uonossox??

    Vilpittömästi sinun,

    Kanet

Tämän muutoksen jälkeen näyttää siltä, ​​että hyökkääjät alkavat päästä jonnekin. He ovat löytäneet sanat "minä", "sinä" ja "olet" niiden sanojen lisäksi, jotka muodostivat alkuperäiset arvauksensa.

Koska sanat ovat oikeassa kieliopillisessa järjestyksessä, hyökkääjät voivat olla melko varmoja siitä, että ne ovat menossa oikeaan suuntaan. Tähän mennessä he ovat todennäköisesti ymmärtäneet, että koodi sisälsi jokaisen kirjaimen vaihtamisen kirjaimeksi, joka seuraa sitä aakkosessa. Kun he ymmärtävät tämän, on helppo kääntää loput ja lukea alkuperäinen viesti.

Yllä oleva esimerkki oli vain yksinkertainen koodi, mutta kuten näette, viestin rakenne voi antaa hyökkääjille vihjeitä sen sisällöstä. Toki, oli vaikeaa selvittää viesti pelkästään sen rakenteesta, ja se vei joitain koulutettuja arvauksia, mutta sinun on pidettävä mielessä, että tietokoneet tekevät tämän paljon paremmin kuin me. Tämä tarkoittaa, että niitä voidaan käyttää selvittämään paljon monimutkaisempia koodeja paljon lyhyemmässä ajassa, perustuu rakenteeseen ja muihin elementteihin liittyviin vihjeisiin.

Jos rakenne voi johtaa koodin halkeamiseen ja paljastaa viestin sisällön, tarvitsemme jonkin verran tapaa piilottaa rakenne pitämään viesti turvassa. Tämä vie meidät täyte.

Kun viesti on täytetty, satunnaistettu data lisätään piilottamaan alkuperäiset muotoiluvihjeet, jotka voivat johtaa salatun viestin rikkoutumiseen. RSA: n kanssa asiat ovat hieman monimutkaisempia, koska salatussa avaimessa ei ole selvää kirjeen muotoilua, joka auttoi antamaan meille vihjeitä yllä olevassa esimerkissä.

Tästä huolimatta vastustajat voivat käyttää useita hyökkäyksiä hyödyntääkseen koodin matemaattisia ominaisuuksia ja rikkoakseen salattua tietoa. Tämän uhan takia, RSA: n toteutukset käyttävät täytejärjestelmiä, kuten OAEP, upottaaksesi lisätietoja viestiin. Tämän pehmusteen lisääminen ennen viestin salaamista tekee RSA: sta paljon turvallisemman.

Viestien allekirjoittaminen

RSA: ta voidaan käyttää muutakin kuin tietojen salaamiseen. Sen ominaisuudet tekevät siitä myös hyödyllisen järjestelmän vahvistaa, että viestin on lähettänyt yksikkö, joka väittää lähettäneensä sen, sekä todistamalla, että viestiä ei ole muokattu tai muutettu.

Kun joku haluaa todistaa viestinsä aitouden, hän voi laskea a hash (toiminto, joka ottaa mielivaltaisen koon tietoja ja muuntaa ne kiinteän pituiseksi arvoksi) selkeästä tekstistä, allekirjoittamalla sen sitten heidän yksityisellä avaimellaan. Ne allekirjoittaa tiiviste käyttämällä samaa kaavaa, jota käytetään salauksen purkamisessa (m = cd mod n). Kun viesti on allekirjoitettu, he lähettävät tämän digitaalisen allekirjoituksen vastaanottajalle viestin rinnalla.

Jos vastaanottaja vastaanottaa viestin digitaalisella allekirjoituksella, hän voi käyttää allekirjoitus sen tarkistamiseksi, onko viesti allekirjoitettu oikein sen henkilön yksityisellä avaimella, joka väittää lähettäneensä sen. He näkevät myös, ovatko hyökkääjät muuttaneet viestiä sen lähettämisen jälkeen.

Digitaalisen allekirjoituksen tarkistamiseksi vastaanottaja käyttää ensin samaa hash-toimintoa löytääkseen vastaanotetun viestin hash-arvon. Vastaanottaja käyttää sitten lähettäjän julkinen avain digitaaliseen allekirjoitukseen, käyttämällä salauskaavaa (c = me mod n), antaa heille digitaalisen allekirjoituksen tiiviste.

mennessä vertaamalla salatusta digitaalisesta allekirjoituksesta hash: n kanssa vastaanotetun viestin tiivistettä, vastaanottaja voi kertoa onko viesti aito. Jos nämä kaksi arvoa ovat samat, viestiä ei ole muutettu sen allekirjoittamisen jälkeen alkuperäinen lähettäjä. Jos viesti olisi muuttunut jopa yhden merkin avulla, hash-arvo olisi täysin erilainen.

RSA-turvallisuus & iskut

Kuten useimmat kryptosysteemit, RSA: n turvallisuus riippuu siitä, miten se toteutetaan ja käytetään. Yksi tärkeä tekijä on avaimen koko. Mitä suurempi bittien lukumäärä avaimessa on (olennaisesti kuinka kauan avain on), sitä vaikeampaa on murtaa hyökkäyksiä kuten raa'an pakottaminen ja factoring.

Koska epäsymmetrisen avaimen algoritmit, kuten RSA, voidaan rikkoa kokonaislukukerroin, kun taas symmetrisen avaimen algoritmit kuten AES eivät voi, RSA-avainten on oltava paljon pidempiä saman tietoturvatason saavuttamiseksi.

Tällä hetkellä suurin avaimen koko, joka on otettu huomioon, on 768 bittiä pitkä. Tämän teki tutkijoiden ryhmä kahden vuoden ajanjaksolla satoja koneita käyttämällä.

Koska factoring saatiin päätökseen vuoden 2009 loppuun mennessä ja laskentateho on kasvanut huomattavasti sen jälkeen, voidaan olettaa, että saman intensiteetin yritys voisi nyt vaikuttaa paljon suurempaan RSA-avaimeen.

Tästä huolimatta tällaiseen hyökkäykseen tarvittava aika ja resurssit vievät sen useimpien hakkereiden ulottumattomissa ja kansallisvaltioiden alueelle. Paras avaimen pituus riippuu henkilökohtaisesta uhkamallista. Kansallinen standardi- ja teknologiainstituutti suosittelee avaimen vähimmäiskokoa 2048-bittinen, mutta 4096-bittisiä näppäimiä käytetään myös joissakin tilanteissa, joissa uhataso on korkeampi.

Faktoring on vain yksi tapa, jolla RSA voidaan rikkoa. Monilla muilla hyökkäyksillä on mahdollisuus rikkoa salaus pienemmällä määrällä resursseja, mutta nämä riippuvat toteutuksesta ja muista tekijöistä, ei välttämättä itse RSA: sta. Joitakin näistä ovat:

Ovatko alkutoimet todella satunnaisia?

Jotkut RSA: n toteutukset käyttävät heikkoja satunnaislukugeneraattoreita keksimään alkutunnukset. Jos nämä numerot eivät ole riittävän satunnaisia, hyökkääjien on paljon helpompaa muuttaa niitä ja rikkoa salaus. Tämä ongelma voidaan välttää käyttämällä salausteknisesti varmaa pseudo-satunnaislukugeneraattoria.

Huono avainsukupolvi

RSA-avainten on oltava tiettyjen parametrien sisällä, jotta ne olisivat turvallisia. Jos alkutoimet p ja q ovat liian lähellä toisiaan, avain voidaan helposti löytää. Samoin numero d joka muodostaa osan yksityisestä avaimesta, ei voi olla liian pieni. Alhainen arvo on helppo ratkaista. On tärkeää, että nämä numerot ovat riittävän pitkiä pitämään avaimesi turvassa.

Sivukanavahyökkäykset

Nämä ovat tietyn tyyppisiä hyökkäyksiä, jotka eivät rikko RSA: ta suoraan, vaan käyttävät sen toteutuksesta saatuja tietoja hyökkääjille vihjeitä salausprosessista. Nämä hyökkäykset voivat sisältää esimerkiksi analysoidaan käytetyn virran määrä, tai haaraennusteanalyysi, joka käyttää toteutusajan mittauksia yksityisen avaimen löytämiseksi.

Toinen sivukanavahyökkäyksen tyyppi tunnetaan ajoitushyökkäyksenä. Jos hyökkääjä pystyy mittaamaan kohteen tietokoneen salauksen purkuajan useille eri salattuille viesteille, näiden tietojen avulla hyökkääjä voi saada selville kohteen yksityisen avaimen.

Suurin osa RSA: n toteutuksista välttää tämän hyökkäyksen lisäämällä kertaluonteisen arvon salausprosessin aikana, mikä poistaa tämän korrelaation. Tätä prosessia kutsutaan salauksen sokeuttaminen.

Onko RSA-salaus turvallinen tulevaisuuden kannalta?

Hyvä uutinen on, että RSA: ta pidetään turvallisena käyttää, näistä mahdollisista hyökkäyksistä huolimatta. Vapaus on se se täytyy ottaa käyttöön oikein ja käyttää avainta, joka kuuluu oikeisiin parametreihin. Kuten juuri keskustelimme, toteutuksia, joissa ei käytetä pehmusteita, käytetään riittämättömän kokoisia primejä tai joilla on muita haavoittuvuuksia, ei voida pitää turvallisina.

Jos haluat käyttää RSA-salausta, Varmista, että käytät vähintään 1024 bitin avainta. Niiden, joilla on suurempi uhkamalli, tulisi pitää kiinni 2048- tai 4096-bittisissä avaimissa, jos he haluavat käyttää RSA: ta luottavaisesti. Niin kauan kuin tiedät RSA: n heikkoudet ja käytät sitä oikein, sinun pitäisi tuntea olosi turvalliseksi käyttää RSA: ta avainten jakamiseen ja muihin vastaaviin tehtäviin, jotka vaativat julkisen avaimen salausta.

Katso myös: Yleiset salauslajit selitetty

Brayan Jackson
Brayan Jackson Administrator
Sorry! The Author has not filled his profile.
follow me

Add a Comment

Your email address will not be published. Required fields are marked *

76 − = 73