UNIVERZITET CRNE GORE Prirodno –matematički fakultet Podgorica Digitalni potpis SPECIJALISTIČKI RAD Kriptografija Doc.dr Vladimir Božović Darinka Vučinić Studijski program Računarske nauke Podgorica, Avgust 2010. Sažetak Digitalizacija moderne kancelarije i sve češća upotreba Interneta u poslovnim primjenama dovodi do potrebe sigurnog i pouzdanog utvrđivanja autentičnosti dokumenata. Upravo zbog toga, digitalni potpis je postao jedan od najvažnijih kriptografskih alata koji je danas u širokoj upotrebi. Njegova osnovna uloga je da potvrdimo identitet pošiljaoca poruke ili potpisnika dokumenta, kao i da se obezbjedi dokaz da je originalni sadržaj poruke ili dokumenta koji je poslat nepromjenjen. Digitalni potpisi se sve više, po učestalosti upotrebe i važnosti dokumenata na koja se primjenjuju, približavaju klasičnim potpisima i samo je pitanje vremena kada će ih učiniti nepotrebnim. U ovom radu obrađujemo: RSA šemu digitalnog potpisa, Elgamal šemu digitalnog potpisa i dva algoritma koja su proistekla iz ove šeme: Algoritam digitalnog potpisa (DSA) i Algoritam digitalnog potpisa zasnovan na eliptičnim krivim(ECDSA). Ovo su jedni od najznačajnijih i u praksi najčešće korišćenih algoritama digitalnog potpisivanja. Abstract Digitization of modern office and more frequent use of the Internet in business applications lead to the need for secure and reliable authentication of documents. As a result, the digital signature has become one of the most important, broadly used contemporary cryptographic tools. Its main purpose is to verify the identity of the sender or signer of a document, as well as to provide evidence that the original content of the sent message or document is unchanged. Digital signatures are getting closer to handwritten signatures by frequency of use and the relevance of documents to be signed, and is only a matter of time before former will become obsolete. In this paper we discuss: RSA digital signature scheme, The Elgamal digital signature scheme and two extensions of it, the digital signature algorithm (DSA) and the elliptic curve digital signature algorithm (ECDSA) These are one of the most important and most commonly used digital signature algorithms in practice. 2 Sadržaj 1. Uvod ..................................................................................................................................... 5 2. Matematičke i kriptografske osnove digitalnog potpisa .......................................................... 8 3. 4. 5. 6. 7. 8. 2.1. Matematička priprema ........................................................................................................... 8 2.2. Problem diskretnog logaritma i Diffie-Hellman protokol za razmjenu ključeva ................... 14 2.3. Kriptografski temelji digitalnog potpisa ................................................................................ 15 2.3.1. RSA (Rivest-Shamir-Adleman algoritam) ....................................................................... 15 2.3.2. Elgamal algoritam .......................................................................................................... 16 2.3.3. Eliptične krive ................................................................................................................ 17 Šta je digitalni potpis? ......................................................................................................... 20 3.1. Motivacija .............................................................................................................................. 20 3.2. Principi funkcionisanja digitalnog potpisa............................................................................. 21 3.3. Uloga „Autoriteta od povjerenja“ i potpisivanje javnog ključa ............................................. 24 3.4. Potpisi i zakoni....................................................................................................................... 24 3.5. Sigurnosni zahtjevi ................................................................................................................ 27 RSA šema digitalnog potpisa ................................................................................................ 29 4.1. Školski primjer RSA digitalnog potpisa .................................................................................. 29 4.2. Računarski aspekat ................................................................................................................ 31 4.3. Sigurnost................................................................................................................................ 31 Elgamal šema digitalnog potpisa .......................................................................................... 35 5.1. Školski primjer Elgamal digitalnog potpisa............................................................................ 35 5.2. Računarski aspekat ................................................................................................................ 37 5.3. Sigurnost................................................................................................................................ 38 Algoritam digitalnog potpisa (DSA) ...................................................................................... 41 6.1. DSA algoritam ........................................................................................................................ 41 6.2. Računarski aspekat ................................................................................................................ 44 6.3. Sigurnost................................................................................................................................ 45 Algoritam digitalnog potpisa zasnovan na eliptičnim krivim (ECDSA) .................................... 47 7.1. Šema ECDSA algoritma .......................................................................................................... 47 7.2. Računarski aspekat ................................................................................................................ 50 7.3. Sigurnost................................................................................................................................ 50 Zaključak............................................................................................................................. 52 Literatura ................................................................................................................................... 53 3 Spisak slika Slika 1. Tipičan primjer eliptične krive .................................................................................................. 18 Slika 2. Sabiranje i množenje u grupi koju stvara eliptična kriva .......................................................... 18 Slika 3. Princip rada digitalnog potpisa koji uključuje potpisivanje i verifikaciju poruke ...................... 22 Slika 4. EMSA-PSS metod kodiranja ...................................................................................................... 33 Slika 5. Princip funkcionisanja EMSA-PSS šeme kodiranja .................................................................... 34 Spisak tabela Tabela 1. Bitska dužina važnih parametara DSA algoritma ................................................................... 42 Tabela 2. Standardizovane vrijednosti bitske dužine parametara i nivoi sigurnosti za DSA ................. 46 Tabela 3. Bitske dužine i nivoi sigurnosti ECDSA algoritma .................................................................. 51 4 1. Uvod Vijekovima unazad, potpisi su bili najbolje prihvaćeni način autentifikacije. Ovjeravanje dokumenata svojeručnim potpisom vuče korijene od samih početaka ljudske pismenosti. Rimski zakoni priznavali su kombinaciju pečata i potpisa kao osnovni način ovjeravanja dokumenata i pravnih ugovora. Potpisi se danas nalaze na najrazličitijm dokumentima, od različitih ugovora, naloga, računa pa sve do privatnih pisama. Tridesetih godina XIX vijeka došlo je do prvih znakova elektronske komunikacije i zakonski priznatih elektronskih potpisa pronalaskom telegrafa i Morzeove azbuke. Ipak, kada su računari u pitanju, ne smatra se svaki potpis digitalnim potpisom. Različite znakovne ili tekstualne oznake u datotekama ili elektronskoj pošti ili kopije svojeručnog potpisa krajnje su neprimjerene i nepouzdane, prije svega zbog lakog falsifikovanja. Razvojem informacionih tehnologija i računarskih mreža, postalo je jasno da je potreban novi način ovjeravanja dokumenata. Temelji za pouzdanu provjeru porijekla informacija, „digitalni potpis“, stvoreni su 1976. godine otkrićem kriptografije javnog ključa (Diffie-Hellman), koja se još naziva i asimetričnom kriptografijom. Zanimljivo je napomenuti da je ovaj način kriptovanja podataka, prema nekim informacijama 1 bio poznat britanskoj tajnoj službi nekoliko godina ranije nego spomenutoj dvojici istraživača. Digitalni potpis služi da obezbjedi dokaz da je elektonski dokument (e-mail poruka, tabela, ugovor, tekstualni fajl, itd.) autentičan. Autentičan znači da nam je poznato ko je kreirao dokument i da znamo da dokument nije izmjenjen na bilo koji način od trenutka kada nam je poslat. Digitalni potpisi se obično koriste za distribuciju softvera, finansijske transakcije, kao i u drugim slučajevima u kojima je važno da se otkrije falsifikat ili manipulacija. Privatni i javni ključevi koji se koriste u asimetričnoj kriptografiji služe za prenošenje osjetljivih informacija, ali se takođe mogu koristiti da obezbjede provjeru identiteta pošiljaoca poruke ili dokumenta. Upotreba privatnog i javnog ključa u algoritmima digitalnog potpisa ne štiti sadržaj poruke, već je samo dokaz da je pošiljaoc poruke upravo onaj za kojega se predstavlja. Digitalni potpisi primaocu poruke pružaju neku vrstu dokaza kada je u pitanju identitiet pošiljaoca, kao i to da je poruka stigla nepromjenjena. Digitalni potpisi funkcionišu na sljedeći način: prvo se formira sažetak poruke (engl. message digest) korišćenjem određenog algoritma za heširanje. Sažetak poruke, koji je obično dužine 128 ili 256 bita, se zatim enkriptuje korišćenjem privatnog ključa pošiljaoca i dodaje na kraj poruke. Kada primalac primi poruku on je „propusti“ kroz isti algoritam za heširanje i generiše sažetak poruke. Zatim, primaoc dekriptuje potpis korišćenjem javnog ključa pošiljaoca i upoređuje broj koji je dobijen na izlazu iz heš funkcije sa brojem koji je dobio prilikom dekripcije. Ukoliko su brojevi identični, on može biti siguran da je poruka stigla od „pravog“ pošiljaoca, i da nije izmjenjena prilikom prenosa. Prva praktična realizacija digitalnog potpisa bila je u radu Rivesta, Shamira i Adlemana koji je objavljen 1978. godine. RSA digitalni potpis je standardizovan od strane više tijela za standardizaciju. RSA potpisi su bili, i još uvijek su, de facto standard za mnoge aplikacije, posebno za sertifikate na Internetu. 1 J H Ellis: The Possibility of Secure Non-Secret Digital Encryption, CESG Report, Januar 1970 5 Elgamal digitalni potpis objavljen je 1985. godine. Tokom godina su predložene različite varijante ove šeme. DSA algoritam je predložen 1991. godine i postao je standard u SAD-u 1994. godine. Postoje dva moguća motiva što je američka vlada uvela ovaj standard kao alternativu RSA algoritmu. Prvo, RSA je bio patentiran u to vrijeme, a za Ameriku je bilo poželjno da ima i besplatnu alternativu. Drugo, RSA implemenacija digitalnog potpisa se takođe može koristiiti za enkripciju. Ovo nije bilo poželjno (sa tačke gledišta američke vlade) jer su u to vrijeme i dalje bila na snazi stroga organičenja za izvoz kriptografskih alata iz SAD-a. Nasuprot tome, DSA implementacija se može koristiti samo za potpisivanje, ne i za enkripciju, i zbog toga je bilo lakše da se izvezu sistemi koji uključuju samo funkcionalnost potpisa. Treba imati na umu da se termin DSA odnosi na Algoritam digitalnog potpisa, a odgovarajući standard se označava kao DSS- Standard digitalnog potpisa. Danas, DSS uključuje ne samo DSA algoritam, već i ECDSA i RSA digitalni potpis. Pored navedenih algoritama postoji još i niz drugih algoritama kao što su: Rabinov digitalni potpis, Fiat-Shamir algoritam za digitalni potpis, i mnogi drugi koje u ovom radu nećemo obrađivati. Danas, kada većina razvijenih zemalja u svoje zakone uvodi i zakon o digitalnom potpisu, ovo područje se nalazi na granici dva svijeta, kriptografije i prava. Osim pravnih problema oko primjene digitalnog potpisa, postoje i pravni problemi vezani za implementaciju algoritama digitalnog potpisa, uglavnom zbog softverskih patenata kojima je velik broj algoritama zaštićen, ali i zbog restriktivnih regulativa pojedinih zemalja vezanih za kriptografske proizvode uopšte. Tako je npr. izvoz „jakog“ enkripcijskog softvera iz SAD-a bio zabranjen sve do pred kraj 1999. godine. Isto tako, u Francuskoj je upotreba alata za enkripciju bila zabranjena do početka 1999. godine. Ipak, naglim širenjem elektronskog poslovanja postalo je nužno ovakve odredbe ukinuti, i omogućiti kako sigurnu zaštitu informacija šifrovanjem tako i zaštitu od mogućih prevara autentifikacijom. Upravo kao idealan alat za autentifikaciju nametnuo se digitalni potpis. Rad je organizovan na sljedeći način: u poglavlju 2 date su definicije osnovnih matematičkih pojmova i teorema koji su neophodne za razumjevanje suštine algoritama digitalnog potpisa. Poglavlje 2 takođe sadrži i definiciju problema diskretnog logaritma, kao i opis jednog od najuticajnijih protokola u istoriji kriptografije- Diffie-Hellman protokola, koji je zasnovan na problemu diskretnog logaritma. Ovdje smo dali i kratak opis osnovnih kriptografskih algoritama koji su poslužili za izgradnju algoritama digitalnog potpisa. Poglavlje 3 detaljnije objašnjava sam pojam digitalnog potpisa, i sve ono što taj pojam predstavlja. Tu smo naveli i principe funkcionisanja digitalnog potpisa, kao i spisak sigurnosnih zahtjeva koje algoritmi digitalnog potpisa trebaju da ispune. Takođe, u ovom poglavlju se bavimo i primjenom zakona o digitalnom potpisu u svijetu i kod nas. U poglavlju 4 bavimo se RSA algoritmom za digitalni potpis. Ovaj algoritam, baziran na RSA enkripciji, je prilično brz, ali osnovni nedostatak mu je dužina potpisa, koja može biti problem u sistemima sa ograničenim propusnim opsegom. Poglavlje 5 sadrži opis Elgamal algoritma digitalnog potpisivanja. Za razliku od RSA, gdje su enkripcija i digitalni potpis gotovo identične operacije, Elgamal digitalni potpis se prilično razlikuje od šeme za enkripciju sa istim imenom. Ovaj algoritam se vrlo rijetko koristi u praksi, ali je poslužio kao osnova za 6 DSA- Algoritam digitalnog potpisa, koji opisujemo u poglavlju 6. DSA algoritam je standard za digitalne potpise Vlade Sjedinjenih Američkih Država. Glavna prednost ovog potpisa u poređenju sa Elgamal šemom digitalnog potpisivanja je ta da je potpis dugačak samo 320 bita, i neki napadi koji mogu da ugroze Elgamal šemu se ne mogu primjeniti na DSA. Posljednji algoritam digitalnog potpisivanja koji opisujemo u ovom radu je ECDSA- Algoritam digitalnog potpisa zasnovan na eliptičnim krivim (poglavlje 7). Korišćenje eliptičnih krivih ima određenih prednosti u poređenju sa RSA i šemama koje se zasnivaju na problemu diskretnog logaritma, kao što su Elgamal i DSA. Osnovne prednosti ovog algoritma su kraće vrijeme procesiranja i kraći potpisi. Iz ovih razloga, Algoritam digitalnog potpisa zasnovan na eliptičnim krivim (ECDSA) standardizovan je 1998. godine od strane Američkog nacionalnog instituta za standardizaciju (ANSI). 7 2. Matematičke i kriptografske osnove digitalnog potpisa U ovom poglavlju daćemo definicije matematičkih pojmova i formulacije teorema koje su neophodne za razumjevanje algoritama koje obrađujemo u radu. Zatim ćemo definisati problem diskretnog logaritma, i objasniti jedan od najuticajnijih protokola u istoriji kriptografije: Diffie-Hellman protokol. Na kraju ovog poglavlja obrađujemo osnovne kriptografske algoritme koji su poslužili kao temelji za izgradnju algoritama digitalnog potpisa. 2.1. Matematička priprema Najveći dio moderne kriptografije je izgrađen na temelju algebre i teorije brojeva. Zato je neophodno da razvijemo odgovarajući matematički aparat prije nego što se počnemo baviti tipično kriptorafskim temama. Skupovi brojeva Osnovni skupovi brojeva sa kojima ćemo se susresti u ovom radu su prirodni i cijeli brojevi. Skup prirodnih brojeva je ℕ = {1, 2, … }, a skup cijelih brojeva ℤ = {… , −2, −1, 0, 1, 2, … }. Podsjetimo se definicije i osnovnih osobina djeljivosti. Definicija. Neka su 𝑎 i 𝑏 cijeli brojevi i 𝑏 ≠ 0. Kažemo da 𝑏 dijeli 𝑎, u oznaci 𝑏 | 𝑎, odnosno da je 𝑎 djeljivo sa 𝑏, ako postoji cio broj 𝑐 tako da je 𝑎 = 𝑏𝑐. Lema. Neka su 𝑎, 𝑏 i 𝑐 cijeli brojevi. a) Ako je 𝑎 | 𝑏 i 𝑏 | 𝑐, onda 𝑎 | 𝑐. b) Ako je 𝑎 | 𝑏 i 𝑏 | 𝑎, onda 𝑎 = ±𝑏. c) Ako je 𝑎 | 𝑏 i 𝑎 | 𝑐, onda 𝑎 | 𝑏 ± 𝑐. Najveći zajednički djelilac Pojam najvećeg zajedničkog djelioca, iako elementaran, ima brojne implikacije u aritmetici. Podsjećamo se definicije i notacije. Definicija. Zajednički djelilac dva broja 𝑎 i 𝑏 je pozitivan cio broj 𝑑 koji dijeli oba broja. Najveći zajednički djelilac brojeva 𝑎 i 𝑏 je, kao što ime sugeriše, najveći pozitivan, cio broj 𝑑 takav da 𝑑 | 𝑎 i 𝑑| 𝑏. Najveći zajednički djelilac 𝑎 i 𝑏 se označava 𝑛𝑧𝑑(𝑎, 𝑏). Ako je 𝑎 = 𝑏 = 0 onda 𝑛𝑧𝑑(𝑎, 𝑏) nije definisan. Prvo elementarno pitanje je kako efikasno naći 𝑛𝑧𝑑(𝑎, 𝑏) za dva prirodna broja 𝑎, 𝑏. 8 Euklidov algoritam Naš cilj je da ustanovimo efikasan algoritam za nalaženje 𝑛𝑧𝑑(𝑎, 𝑏) dva cijela broja 𝑎, 𝑏. U tom smislu koristimo Euklidov algoritam. Ako je 𝑎 = 𝑏𝑞 + 𝑟, 0 ≤ 𝑟 < 𝑏, onda elelmentarnom analizom zaključujemo 𝑛𝑧𝑑(𝑎, 𝑏) = 𝑛𝑧𝑑(𝑏, 𝑟). Ovo elementarno zapažanje je suština Euklidovog algoritma. Jasno, postupak možemo nastaviti, a sljedeća iteracija, umjesto brojeva 𝑎, 𝑏 će početi sa brojevima 𝑏, 𝑟. Očigledno, svaki sljedeći korak sadrži manje brojeve od prethodnog. Osnovni oblik Euklidovog algoritma Neka su dati prirodni brojevi 𝑎 i 𝑏, takvi da je 𝑎 ≥ 𝑏. Algoritam: 1. Neka je 𝑟 = 𝑎, 𝑟 = 𝑏, a 𝑖 = 1. 2. Dijeljenjem 𝑟 sa 𝑟 dobijamo količnik 𝑞 i ostatak 𝑟 , tako da 𝑟 = 𝑟𝑞 +𝑟 , 0 ≤ 𝑟 < 𝑟 . 3. Ako je 𝑟 = 0 onda 𝑟 = 𝑛𝑧𝑑 (𝑎, 𝑏) i algoritam je okončan. 4. Ako je 𝑟 > 0, onda postavimo 𝑖 = 𝑖 + 1 i vraćamo se na korak 2. Napomena. Korak podjele 2 obavljamo najviše 2 log (𝑏) + 1 puta. Ukoliko krenemo unazad kroz Euklidov algoritam, onda možemo uz malo spretnosti uočiti da se 𝑛𝑧𝑑(𝑎, 𝑏) može predstaviti kao linearna kombinacija brojeva 𝑎 i 𝑏. Naime, važi sljedeća lema: Lema. Ako je 𝑑 = 𝑛𝑧𝑑(𝑎, 𝑏) za dva prirodna broja 𝑎 i 𝑏, onda postoje cijeli brojevi 𝑠, 𝑡 tako da 𝑑 = 𝑎𝑠 + 𝑏𝑡. Posebno, od svih prirodnih brojeva oblika 𝑎𝑥 + 𝑏𝑦, gdje su 𝑥, 𝑦 ∈ ℤ, broj 𝑎𝑠 + 𝑏𝑡 je najmanji. Kao što smo već vidjeli, za prirodne brojeve 𝑎 i 𝑏 jednačina 𝑎𝑥 + 𝑏𝑦 = 𝑛𝑧𝑑 (𝑎, 𝑏) Uvijek ima rješenje za (𝑠, 𝑡) u skupu cijelih brojeva. Opštije, ako je (𝑠 , 𝑡 ) jedno rješenje prethodne jednačine, onda svako njeno rješenje ima oblik 𝑠=𝑠 + ∙ ( , ) i𝑡 =𝑡 − ∙ , ( , ) za 𝑘 ∈ ℤ. 9 Prošireni Euklidov algoritam Neka su dati prirodni brojevi a i b, takvi da je 𝑎 ≥ 𝑏. Tražimo nzd(𝑎, 𝑏), kao i brojeve 𝑠 i 𝑡 tako da važi nzd(𝑎, 𝑏) = 𝑠𝑎 + 𝑡𝑏. Algoritam: 1. Neka je 𝑟 = 𝑎, 𝑟 = 𝑏, 𝑖 = 1, 𝑠 = 1, 𝑠 = 0, 𝑡 = 0, 𝑡 = 1. 2. Postavimo 𝑖 = 𝑖 + 1, a zatim računamo 𝑟 = 𝑟 𝑚𝑜𝑑 𝑟 , 𝑞 = (𝑟 − 𝑟 )/𝑟 , 𝑠 =𝑠 −𝑞 𝑠 , 𝑡 =𝑡 −𝑞 𝑡 . 3. Ako je 𝑟 ≠ 0 onda se vraćamo na korak 2. 4. Ako je 𝑟 = 0, onda 𝑟 = nzd(𝑎, 𝑏), a 𝑠 = 𝑠 , 𝑡 = 𝑡 i algoritam je okončan. Modularna aritmetika Modularna aritmetika je veoma zastupljen i koristan aparat u teoriji brojeva. Osnovna ideja se može slikovito predstaviti kao aritmetika zatvorenog kruga. Na primjer, u aritmetici po modulu 12, imamo brojeve od 0 do 11, 12 opet tretiramo kao 0, 13 kao 1 itd. Definicija. Neka je 𝑚 ≥ 1 cijeli broj. Kažemo da su cijeli brojevi 𝑎 i 𝑏 kongruentni po modulu 𝑚 ako je njihova razlika 𝑎 − 𝑏 djeljiva sa 𝑚, odnosno ako 𝑚| 𝑎 − 𝑏. Tada pišemo 𝑎 ≡ 𝑏 (𝑚𝑜𝑑 𝑚). Razlog zbog kojeg koristimo oznaku ≡ u modularnoj aritmetici je taj što ona ima mnoge osobine koje podsjećaju na jednakost u klasičnoj aritmetici, kao što pokazuje i sljedeća lema. Lema. Ako je 𝑎 ≡ 𝑎 (𝑚𝑜𝑑 𝑚) i 𝑏 ≡ 𝑏 (𝑚𝑜𝑑 𝑚) onda je 𝑎 ± 𝑏 ≡ 𝑎 ± 𝑏 (𝑚𝑜𝑑 𝑚), 𝑎 ∙ 𝑏 ≡ 𝑎 ∙ 𝑏 (𝑚𝑜𝑑 𝑚). Jedan od najvažnijih pojmova u modularnoj aritmetici uopšte, je pojam multiplikativnog inverza po modulu. Lema. Neka je 𝑎 cio broj. Tada je 𝑎 ∙ 𝑏 ≡ 1 (𝑚𝑜𝑑 𝑚) za neko 𝑏 ∈ ℤ akko 𝑛𝑧𝑑(𝑎, 𝑚) = 1. Broj 𝑏 nazivamo multiplikativnim inverzom broja 𝑎 po modulu 𝑚. Na primjer, brojevi 1, 3, 5, 9, 11, 13 imaju multiplikativne inverze po modulu 14. 10 Prosti brojevi Prosti brojevi se mogu u izvjesnom smislu smatrati osnovnim gradivnim komponentama cijelih brojeva. Definicija. Prirodan broj 𝑝 je prost ako je 𝑝 ≥ 2 i ako su jedini pozitivni djelioci broja 𝑝, brojevi 1 i 𝑝. Sljedeća lema je osnov za dokazivanje osnovne teoreme aritmetike. Lema. Neka je 𝑝 prost broj i pretpostavimo da 𝑝 | 𝑎𝑏. Tada 𝑝 dijeli 𝑎 ili 𝑏. Opštije, ako 𝑝 | 𝑎 𝑎 ⋯ 𝑎 , Tada 𝑝 dijeli bar jedan od 𝑎 , za 1 ≤ 𝑖 ≤ 𝑛. Osnovna teorema aritmetike Teorema. Neka je 𝑎 ≥ 2 cio broj. Tada se 𝑎 može predstaviti (faktorisati) na sljedeći način: 𝑎=𝑝 ∙𝑝 ∙ 𝑝 ⋯𝑝 . Ova faktorizacija je jedinstvena do na poredak prostih brojeva. Značaj prethodne teoreme je izuzetan, što i samo ime potvrđuje. Prije svega, ona nam govori da se svi cijeli brojevi mogu izgraditi pomoću prostih brojeva. Ta činjenica ima mnoge značajne implikacije u aritmetici i matematici uopšte. Ojlerova 𝜙 funkcija Osnovna struktura modularne aritmetike po modulu 𝑚 je prsten cijelih brojeva ℤ⁄𝑚ℤ = {0, 1, … , 𝑚 − 1}. Unutar ovog skupa, nalazi se, skup jedinica po modulu 𝑚, odnosno multiplikativnih inverza (ℤ⁄𝑚ℤ)∗ , (ℤ⁄𝑚ℤ)∗ = {𝑎 ∈ ℤ⁄𝑚ℤ | 𝑛𝑧𝑑(𝑎, 𝑚) = 1}. Jedna od najpoznatijih i vjerovatno najvažnijih funkcija u klasičnoj aritmetici je Ojlerova φ funkcija, koju definišemo jednostavno kao 𝜙(𝑚) = |(ℤ⁄𝑚ℤ)∗ |. Podsjećajući se definicije funkcije, lako se izvodi zaključak da je 𝜙 𝑝 =𝑝 −𝑝 , gdje je 𝑝 prost broj. Međutim, naš cilj je da nađemo formulu za Ojlerovu funkciju za svaki prirodan broj i u tom smislu nam može biti od pomoći sljedeća teorema. Teorema. Ojlerova funkcija je multiplikativna. To znači da za 𝑛𝑧𝑑(𝑚, 𝑛) = 1, važi 𝜙(𝑚𝑛) = 𝜙(𝑚)𝜙(𝑛). 11 Posljedica. Neka je 𝑛 = 𝑝 ∙𝑝 ∙ 𝑝 ⋯𝑝 faktorizacija prirodnog broja 𝑛. Tada je 𝜙(𝑛) = 𝑛 ∏ Na primjer, 𝜙(60) = 𝜙(2 ∙ 3 ∙ 5) = 60 1 − (1 − ). 1− 1− = 16. Ojlerova teorema Ova teorema se veoma često koristi, kako u teorijskim razmatranjima, tako i u nekim praktičnim problemima. Ova teorema ima značajno mjesto u razumjevanju nekih važnih kriptografskih algoritama među kojima je najpoznatiji RSA. Teorema. Ako je nz𝑑(𝑎, 𝑚) = 1, onda je 𝑎 ( ) ≡ 1 (𝑚𝑜𝑑 𝑚). Fermaova teorema Posljedica Ojlerove teoreme, odnosno njen specijalni slučaj je čuvena Fermaova teorema. Teorema. Ako je 𝑝 prost broj i 𝑝 ne dijeli 𝑎, onda je 𝑎 ≡ 1 (𝑚𝑜𝑑 𝑝). Posljedično, ako je 𝑝 prost broj i 𝑎 proizvoljan cio broj, tada važi 𝑎 ≡ 𝑎 (𝑚𝑜𝑑 𝑝). Grupa Neka je dat skup 𝑆, na kom je definisana binarna operacija +: 𝑆 × 𝑆 → 𝑆. 1. Uređeni par (𝑆, +) se naziva grupoid. 2. Grupoid, u kom je operacija + asocijativna, tj. važi (𝑎 + 𝑏) + 𝑐 = 𝑎 + (𝑏 + 𝑐) naziva se polugrupa. 3. Polugrupa sa jediničnim elementom ((∃𝑒𝜖𝑆)(∀𝑎𝜖𝑆) 𝑒 + 𝑎 = 𝑎 + 𝑒 = 𝑎) se naziva monoid. 4. Monoid u kom svaki element ima inverzni ((∀𝑎𝜖𝑆)(∃𝑏𝜖𝑆) a + b = b + a = e) je grupa. 5. Ako je operacija + komutativna ((∀𝑎𝜖𝑆)(∀𝑏𝜖𝑆)𝑎 + 𝑏 = 𝑏 + 𝑎 ), onda je (𝑆, + ) Abelova grupa. Prsten Neka je dat skup 𝑆, na kom su definisane dvije binarne operacije: +: 𝑆 × 𝑆 → 𝑆, ∙: 𝑆 × 𝑆 → 𝑆. Uređena trojka (𝑆, +,∙) je prsten ako 12 1. (𝑆, +) je Abelova grupa. 2. (𝑆, ∙) je polugrupa. 3. Za svako 𝑎, 𝑏, 𝑐 ∈ 𝑆 važi distributivnost množenja u odnosu na sabiranje 𝑎 ∙ (𝑏 + 𝑐) = 𝑎 ∙ 𝑏 + 𝑎 ∙ 𝑐, (𝑎 + 𝑏) ∙ 𝑐 = 𝑎 ∙ 𝑐 + 𝑏 ∙ 𝑐 . Polje Neka je (𝑆, +,∙) prsten. Definišimo skup 𝑆 ∗ = S ∖ {0}. Ako je (𝑆 ∗ ,∙) Abelova grupa, onda (𝑆, +,∙)nazivamo poljem. Primjer. Neka je ℤ skup ostataka po modulu 𝑝, gdje je 𝑝- prost broj. Tada je ℤ , +,∙ polje, gdje su „+“ i „∙“ sabiranje i množenje po modulu 𝑝. Često, umjesto ℤ koristimo oznaku 𝔽 . Red elementa u grupi Neka je data grupa (𝐺,∙) sa jediničnim elementom, i proizvoljan element 𝑎 ∈ 𝐺. Pretpostavimo da postoji prirodan broj 𝑛 takav da 𝑎 = e. Najmanji takav broj 𝑛𝜖ℕ je red elementa 𝑎 u grupi 𝐺. Ako je grupa konačna, tada broj elemenata u njoj nazivamo redom grupe. Lema. Neka je data konačna grupa (𝐺,∙). Tada je red svakog elementa u njoj konačan i dijeli red grupe. Konačno polje je generisano jednim elementom Fermaova teorema definiše jednu važnu osobinu jedinica (elemenata različitih od nule) u konačnom polju. Ovdje pominjemo jednu veoma važnu osobinu konačnog polja koja ima jednako teorijsku i praktičnu vrijednost. Teorema o primitivnom korijenu. Neka je 𝑝 prost broj. Tada postoji element 𝑔 ∈ 𝔽∗ koji generiše svaki element iz 𝔽∗ , odnosno 𝔽∗ = 1, g, g , … , g ʹ′ . Elementi koji imaju ovu osobinu se zovu primitivnim korijenima ili generatorima 𝔽∗ . Definicija. Grupa 𝐺 se naziva cikličnom ako postoji element 𝑔 u 𝐺, takav da je 𝐺 = {𝑔 |𝑛 ∈ ℤ}. 13 2.2. Problem diskretnog logaritma i Diffie-Hellman protokol za razmjenu ključeva Problem diskretnog logaritma(DLP) je matematički problem veoma zastupljen u kriptografiji. Definicija DLP. Neka je 𝑔 primitivni korjen (generator) polja 𝔽 . Problem diskretnog logaritma je problem nalaženja eksponenta 𝑥 tako da 𝑔 ≡ ℎ (𝑚𝑜𝑑 𝑝). Broj 𝑥 nazivamo diskretnim logaritmom od ℎ u odnosu na bazu 𝑔 i označavamo sa 𝑙𝑜𝑔 (ℎ). DLP se smatra kao jedna vrsta jednosmjerne funkcije. To znači da ne postoji dovoljno efikasan algoritam koji bi računao diskretni logaritam. Primjer. Tražimo diskretni logaritam u polju 𝔽 od 41 po osnovi 5. Znamo da je 5 generator multiplikativne grupe. Primjenom algoritma puke sile dobijamo rješenje kongruencije 5 ≡ 41 (𝑚𝑜𝑑 47) Za 𝑥 = 15. Čak i za male primjere, nije lako samo koristeći prosto pretraživanje naći diskretni logaritam. Diffie-Hellman protokol Diffie-Hellman protokol za razmjenu ključeva predstavlja prvu asimetričnu šemu koja je objavljena u dostupnoj literaturi. Ovaj protokol omogućava dvijema stranama da razmjene tajni ključ preko nesigurnog kanala. Algoritam započinje na sljedeći način: 1. Izaberimo veliki prost broj 𝑝. 2. Izaberimo cijeli broj 𝛼 ∈ {2, 3, … , 𝑝 − 2}. 3. Objavimo 𝑝 i 𝛼. Protokol koristi dva parametra 𝑝 i 𝛼, oba javna. Parametar 𝑝 je prost broj, a parametar 𝛼 (obično se naziva generator) je cijeli broj manji od 𝑝, koji ima sposobnost da generiše bilo koju vrijednost od 1 do 𝑝 − 1 kada se pomnoži samim sobom određeni broj puta po modulu 𝑝. Pretpostavimo sada da dvije osobe, Alisa i Bob, žele razmjenjivati šifrovane poruke preko nesigurne veze, a da prethodno nemaju neki tajni ključ. 14 Prema Diffie-Hellman protokolu, obije strane generišu tajne vrijednosti: Alisa generiše slučajan broj 𝑎, a Bob slučajan broj 𝑏. Nakon toga koriste javne parametre 𝑝 i 𝛼 da bi izračunali vrijednost zajedničkog tajnog ključa 𝑘 , i to tako da Alisa izračuna svoju javnu vrijednost kao 𝛼 𝑚𝑜𝑑 𝑝, a Bob 𝛼 𝑚𝑜𝑑 𝑝. Javne vrijednosti se razmjene (nesigurnim kanalom), a potom Alisa računa 𝑘 = 𝛼 𝑚𝑜𝑑 𝑝, a Bob računa 𝑘 = (𝛼 ) 𝑚𝑜𝑑 𝑝. Obije strane ovim postupkom dobijaju isti rezultat, tj. razmjenili su tajni ključ preko nesigurne veze. Sigurnost ovog protokola temelji se na problemu izračunavanja diskretnih logaritama. Naime, praktično je vrlo teško izračunati dijeljeni tajni ključ 𝑘 = 𝛼 𝑚𝑜𝑑 𝑝 uz dovoljno veliko 𝑝 i poznavanje samo javnih vrijednosti 𝛼 𝑚𝑜𝑑 𝑝 i 𝛼 𝑚𝑜𝑑 𝑝. 2.3. Kriptografski temelji digitalnog potpisa Današnje tehnike digitalnog potpisivanja temelje se na algoritmima asimetrične kriptografije, poznate još i pod nazivom kriptografija javnog ključa (engl. Public-key cryptography). Kriptografske algoritme možemo podijeliti u tri osnovne grupe: 1. Algoritmi koji se zasnivaju na praktičnoj nemogućnosti faktorizovanja velikih brojeva 2. Algoritmi koji se zasnivaju na praktičnoj nemogućnosti izračunavanja disktretnih logaritama (Diffie-Hellman protokol, Elgamal, DSA) 3. Algoritmi koji se temelje na eliptičnim krivim (praktične realizacije ove metode su tek u povojima) Osim ovih algoritama postoji i nekolicina koji se rjeđe koriste (npr. Knapsack algoritmi ), ali većina današnjih komercijalnih implementacija se može svrstati u jednu od tri glavne kategorije. Treba navesti još i to da se različite verzije Knapsack algoritma ne smatraju sigurnim zbog toga jer su Rivest i Shamir (nezavisno jedan od drugog) uspjeli „razbiti“ ovakvu zaštitu. 2.3.1. RSA (Rivest-Shamir-Adleman algoritam) Tipičan algoritam iz prve grupe je i najčešće korišteni algoritam javnog ključa, RSA [8]. RSA enkripcija i dekripcija se izvode u prstenu cijelih brojeva ℤ , i sva izračunavanja se izvode u modularnoj aritmetici. Inicijalna faza algoritma se izvodi u četiri koraka: 15 1. 2. 3. 4. Vršimo odabir dva velika prosta broja 𝑝 i 𝑞. Računamo 𝑛 = 𝑝𝑞 i 𝑧 = (𝑝 − 1)(𝑞 − 1). Biramo broj 𝑑, relativno prost sa brojem 𝑧. Računamo broj 𝑒 tako da vrijedi 𝑒𝑑 ≡ 1 (𝑚𝑜𝑑 𝑧). Kad smo izračunali sve ove parametre, spremni smo za šifrovanje podataka: Prije svega potrebno je poruku 𝑃 podijeliti u djelove od kojih svaki sadrži najviše 𝑛 znakova (obično se zbog toga uzimaju blokovi po 𝑘 bita tako da važi 2 = 𝑛). RSA enkripcija Za zadati javni ključ (𝑛, 𝑒) = 𝑘 i poruku 𝑥, funkcija enkripcije je: 𝑦=𝑒 (𝑥) ≡ 𝑥 𝑚𝑜𝑑 𝑛, gdje su 𝑥, 𝑦 ∈ ℤ . RSA dekripcija Za zadati privatni ključ 𝑑 = 𝑘 i šifrovanu poruku 𝑦, funkcija dekripcije je: 𝑥=𝑑 (𝑦) ≡ 𝑦 𝑚𝑜𝑑 𝑛, gdje su 𝑥, 𝑦 ∈ ℤ . Za šifrovanje RSA algoritmom potrebni su 𝑒 i 𝑛, a za dešifrovanje 𝑑 i 𝑛. Iz toga vidimo da se javni ključ sastoji od (𝑒, 𝑛) , a tajni ključ od (𝑑, 𝑛). Sigurnost ove metode sadržana je u tome što je vrlo teško faktorizovati velike brojeve [3]. Matematička osnova RSA algoritma je elementarna. Naime, faktorizovanjem 𝑛 dobijemo 𝑝 i 𝑞. Iz 𝑝 i 𝑞 vrlo jednostavno izračunamo 𝑧. Uz poznati 𝑧 i 𝑒 (koji je dio javnog ključa) Euklidovim algoritmom dolazimo do 𝑑 i imamo i tajni ključ (𝑑, 𝑛). Ipak, da bi se faktorizovao broj od 200 cifara potrebno je oko 2 godine, uz korišćenje najboljeg poznatog algoritma i nekoliko stotina računara. 2.3.2. Elgamal algoritam Tipičan algoritam druge grupe je Elgamal algoritam. Elgamal šemu enkripcije predložio je Taher Elgamal 1985. godine [6]. Ovaj algoritam može se posmatrati kao proširenje Diffie-Hellman protokola za razmjenu ključeva. Sigurnost Elgamal šeme se bazira na težini problema računanja diskretnog logaritma. 16 Šema se sastoji iz tri faze. Faza podešavanja parametara se izvršava samo jednom od strane onoga ko posjeduje javni ključ i koji će primiti poruku. Faza enkripcije i faza dekripcije se izvršavaju svaki put kada se šalje poruka. U ovom protokolu Bob bira veliki prosti broj 𝑝 i generator 𝛼, i objavljuje ih. Šifrovani tekst se sastoji iz dva dijela, efemeralnog ključa, 𝑘 , i maskiranog teksta, 𝑦. Pošto u principu svi parametri imaju bitsku dužinu ⌈𝑙𝑜𝑔 𝑝⌉, šifrovani tekst (𝑘 , 𝑦) je dva puta duži od poruke. Važno je primjetiti da je, za razliku od RSA algoritma, Elgamal vjerovatnosni algoritam. To znači da za dvije iste poruke 𝑥 i 𝑥 , gdje 𝑥 , 𝑥 ∈ ℤ∗ , ukoliko koristimo isti javni ključ sa veoma velikom vjerovatnoćom dobićemo dvije različite šifrovane poruke 𝑦 ≠ 𝑦 . To je zato što se 𝑖 bira slučajno iz skupa {2, 3, … , 𝑝 − 2} za svaku enkripciju, i zbog toga su ključevi sesije 𝑘 = 𝛽 𝑚𝑜𝑑 𝑝 koje koristimo za enkripciju različiti. 2.3.3. Eliptične krive Jedno relativno novo područje (prvi radovi su iz 1993. godine, A. Menezes, Elliptic Curve Public Key Cryptosystems, Kluwer Academic Publishers, Boston, 1993) u kriptografiji javnog ključa je i šifrovanje korištenjem eliptičnih krivih [5]. Prednosti ove metode su prije svega kraći ključevi i kao rezultat toga bolje performanse algoritma uz zadržavanje jednake sigurnosti kao i kod prethodno opisanih algoritama. Pod pojmom „eliptična kriva“ (engl. „elliptic curve“) podrazumijeva se poseban tip krive (ne elipsa) kao na slici 1. 17 Slika 1. Tipičan primjer eliptične krive Ovakav tip krive (konkretan primjer je 𝑦 − 𝑦 = 𝑥 − 𝑥 ) ima svojstvo da iako se „proteže“ u beskonačnost, kriva prolazi kroz konačno mnogo cjelobrojnih koordinatnih parova (𝑥, 𝑦). Ako definišemo operator sabiranja nad tim parovima (𝑥, 𝑦) dobili smo grupu. Sabiranjem dvije tačke iz tako stvorene grupe dobijamo treću tačku (takođe iz grupe). Kriva prikazana na obije slike može stvoriti polje od svega 5 cjelobrojnih parova (uključujući tačku 𝒪 koja je svojevrsni neutralni element), što za bilo kakvu kriptografsku upotrebu nije dovoljno, ali će poslužiti za ilustraciju. Da bi cijela stvar funkcionisala potrebno je još definisati i tačku 𝒪, negdje u beskonačnosti, gdje sve vertikalne linije konvergiraju. Uočimo još jedno vrlo zanimljivo svojstvo: kada povučemo tangentu na krivu u nekoj tački, tangenta uvijek prolazi kroz još jednu tačku krive. Npr. tangenta kroz 𝑎 prolazi i kroz tačku 𝑐, a tangenta na 𝑏 i kroz 𝑎 (donja slika). Slika 2. Sabiranje i množenje u grupi eliptične krive 18 Sabiranje elemenata vršimo tako da povučemo pravu kroz dvije tačke koje želimo sabrati, zatim kroz tačku kojoj je ta prava tangenta povučemo pravu u tačku 𝒪. Ta nova prava siječe krivu u još jednoj tački koja je rezultat sabiranja prethodne dvije. Na slici 2 imamo primjer sabiranja tačaka 𝑎 i 𝑏 tako da povučemo pravu kroz te dvije tačke. Pošto je ta prava tangenta na krivu u tački 𝑏, kroz tačku 𝑏 povučemo pravu u tačku 𝒪. Ta nova prava siječe krivu u tački 𝑐 i to je rezultat sabiranja 𝑎 i 𝑏. Sabiranje tačka 𝑎 i 𝑑 daje rezultat 𝒪. Skalarno množenje nije ništa drugo nego višestruko sabiranje elementa sa samim sobom. Tako npr. 2𝑎 = 𝑎 + 𝑎 = 𝑏, 3a = (a + a) + a = c, 4a = (a + a) + a + a = d, itd. U kriptografskim primjenama posmatraju se samo cjelobrojne koordinate (𝑥, 𝑦) a aritmetika se izvodi u modulo 𝑝 gdje je 𝑝 ili veliki prost broj ili veliki stepen broja 2. Za kriptografske primjene prikladna grupa sadrži 𝑁 elemenata gdje je 𝑁 skoro jednak 𝑝, 𝑁 = 𝑘𝑞, 𝑞 je prost broj a 𝑘 je mali broj. Iz ovoga vidimo da smo uspjeli stvoriti algebarsku grupu, koja sadrži 𝑁 članova i pogodna je za izvođenje kriptografskih operacija poput Diffie-Hellman protokola za razmjenu ključeva. 19 3. Šta je digitalni potpis? Digitalni potpis je jedan od najvažnijih kriptografskih alata koji je danas u širokoj upotrebi. Koristi se da potvrdimo identitet pošiljaoca poruke ili potpisnika dokumenta, kao i da se obezbjedi dokaz da je originalni sadržaj poruke ili dokument koji je poslat nepromjenjen. Lako su prenosivi, ne mogu biti imitirani, i mogu se automatski označiti vremenskom markom. Digitalni potpisi su zasnovani na asimetričnoj kriptografiji. Za poruke koje su poslate preko nesigurnog kanala, pravilno implementiran digialni potpis daje primaocu poruke razlog da vjeruje da je poruka poslata od strane onog za koga se predstavlja. Digitalni potpisi su ekvivalentni tradicionalnim potpisima u mnogim aspektima, a pravilno implementiran digitalni potpis je mnogo teže falsifikovati nego tradicionalni potpis. Šeme digitalnog potpisa koje opisujemo u radu su bazirane na kriptografiji, i moraju se pravilno implementirati da bi bile efektivne. Digitalni potpisi takođe mogu da obezbijede i nemogućnost odbacivanja, u smislu da onaj koji je potpisao poruku ne može da porekne njeno potpisivanje, istovremeno tvrdeći da je njegov privatni ključ ostao tajna, a takođe neke šeme nude i mogućnost označavanja poruka vremenskim markama, tako da čak i ako je privatni ključ otkriven, potpis i dalje može biti važeći. Digitalni potpisi se mogu koristiti za sve vrste poruka, bilo da su one kodirane ili ne, i jednostavno primalac poruke može biti siguran kada je u pitanju identitiet pošiljaoca, kao i u to da je poruka stigla nepromjenjena. U ovom dijelu daćemo motivacioni primjer zašto su potrebni digitalni potpisi i zašto moraju biti zasnovani na asimetričnoj kriptografiji. Zatim ćemo opisati princip funkcionisanja digitalnog potpisa, a konkretni algoritmi biće opisani u narednim poglavljima. 3.1. Motivacija Pretpostavimo da imamo dvije strane koje komuniciraju, Alisu i Boba, koji dijele tajni ključ. Tajni ključ se korisiti za enkripciju poruka koje šalju jedno drugom. Kada Alisa primi i dekriptuje poruku, koja u stvari predstavlja tekst na srpskom jeziku, ona može zaključiti da je tu poruku generisala osoba sa kojom dijeli tajni ključ. Ako samo Alisa i Bob imaju ključ, onda je jasno da poruka koja je stigla ne može biti promjenjena prilikom prenosa od strane trećeg lica. U praksi, čest je slučaj da dvije osobe hoće da bezbjedno komuniciraju, ali u isto vrijeme one mogu biti i zainteresovane da prevare jedna drugu. Ispostavlja se da šeme koje koriste simetrični ključ ne štite strane koje komuniciraju jednu od druge. Razmotrimo sljedeći scenario: Pretpostavimo da je Alisa autorizovani diler za onlajn prodaju automobila. Pretpostavimo dalje da su Bob, mušterija, i Alisa, prodavac, uspostavili zajednički ključ 𝑘 , korišćenjem Diffi-Hellman protokola za razmjenu ključa. Bob zatim daje specifikaciju automobila koji želi da kupi, uključujući i boju karoserije (narandžasta) i boju unutrašnjosti (pink). Dakle, Bob (oda)bira kombinaciju boja koja se većini ljudi ne bi svidjela. Bob šalje narudžbu u enkriptovanoj formi. Alisa dekriptuje narudžbenicu i zadovoljna je što je prodala automobil od 25 000€. Nakon isporuke automobila tri nedelje kasnije, Bob se predomislio oko svog izbora, dijelom što mu je supruga zaprijetila razvodom nakon što je vidjela automobil. Na žalost za Boba (i njegovu porodicu), politika Alisinog poslovanja je da nema povratka robe. Pošto je Alisa prodavac sa iskustvom, ona zna da neće biti lako prodati automobil 20 narandžaste boje sa pink unutrašnošću, pa zato odlučuje da ne pravi nikakve izuzetke. Pošto sada Bob tvrdi da nikada nije naručio automobil, ona nema drugog izbora nego da ga tuži. Pred sudijom, Alisin advokat prikazuje Bobovu digitalnu narudžbenicu, zajedno sa njenom enkriptovanom verzijom. Očigledno, argumenti advokata su da je Bob morao biti taj koji je generisao poruku, pošto on posjeduje ključ 𝑘 kojim je enkriptovana poruka. Međutim, Bobov advokat objašnjava sudiji da prodavac automobila, Alisa, takođe zna 𝑘 i da je u stvari Alisa ta koja ima veliki motiv da napravi lažnu porudžbinu automobila. Ispostavlja se da sudija nema adekvatnog načina da sazna ko je generisao par- porudžbenicu i šifrovani tekst, Alisa ili Bob. S obzirom na zakone u većini zemalja, Bob će se vjerovatno izvući, uprkos lažnom svjedočenju. Prethodni primjer može izgledati kao prilično specifičan i pomalo vještački konstruisani slučaj, ali u stvari nije. Postoji mnogo situacija gdje je važno da postoji neutralna treća strana, tj. lice koje se ponaša kao sudija, koje može da dokaže da je jedna od dvije (ili više) strana generisala poruku. Pod dokazivanjem mislimo da sudija može bez sumnje zaključiti ko je generisao poruku, čak i ako su sve stranke potencijalno neiskrene. Zašto ne možemo koristiti neku komplikovaniju šemu sa simetričnim ključem da postignemo ovaj cilj? Na visokom nivou, objašnjenje je vrlo jednostavno: upravo zbog toga što je u pitanju simetrični ključ, Alisa i Bob imaju isto znanje, a samim tim i iste mogućnosti. Sve što Alisa može da uradi, takođe može uraditi i Bob. Zbog toga, neutralna treća strana ne može da utvrdi da li je određene kriptografske operacije izvršila Alisa, Bob, ili oboje. Uopšteno govoreći, rješenje ovog problema je u kriptografiji sa javnim ključem. Asimetrična podešavanja koja se koriste kod algoritama sa javnim ključem omogućavaju sudiji da razgraniči operacije koje može da izvrši samo jedna osoba (odnosno lice koje posjeduje privatni ključ), i one koje mogu oboje da izvrše (odnosno računanja koja uključuju javni ključ). Ispostavlja se da su digitalni potpisi u stvari algoritmi asimetrične kriptografije koji imaju osobine da razriješe situacije kada učesnici u razmjeni podataka varaju. U opisanom scenariju koji se odnosi na elektronsku trgovinu, od Boba bi se zahtijevalo da digitalno potpiše svoju narudžbenicu korišćenjem svog privatnog ključa. 3.2. Principi funkcionisanja digitalnog potpisa Osobina da možemo dokazati da je određena osoba generisala poruku je veoma važna van digitalnog domena. U realnom svijetu, ovo se postiže svojeručnim potpisom na papiru. Na primjer, ako potpisujemo ugovor ili račun, korisnik može dokazati sudiji da smo upravo mi potpisali papir. Naravno, možemo pokušati da falsifikujemo potpis, ali postoje pravne i društvene barijere koje će spriječiti ljude da pokušaju to da učine. Kao i sa tradicionalnim potpisom, samo osoba koja je kreirala digitalnu poruku može generisati i validan potpis. Da bi ovo postigli koristićemo principe asimetrične kriptografije. Osnovna ideja je da osoba koja potpisuje poruku koristi privatni ključ, a osoba koja prima poruku koristi odgovarajući javni ključ . Šema je data na slici 3. Pretpostavimo da dvoje ljudi, Alisa i Bob, žele razmjenjivati potpisane poruke (podatke) tj. žele biti sigurni u identitet osobe od koje su poruku primili. Kao prvo, obije osobe kreiraju par komplementarnih ključeva, javni i tajni ključ. Važno je naglasiti da se poznavanjem javnog ključa ne može izračunati tajni ključ u nekom razumnom vremenu (vrijeme potrebno za izračunavanje tajnog ključa iz poznatog javnog ključa, tj. razbijanje šifre, mjeri se milionima godina na danas najjačim raspoloživim računarima). Nakon kreiranja ključeva, Alisa i Bob razmjenjuju svoje javne ključeve. Neka sada Bob želi Alisi poslati poruku. 21 Slika 3. Princip rada digitalnog potpisa koji uključuje potpisivanje i verifikaciju poruke Proces počinje tako što Bob potpisuje poruku 𝑥. Algoritam potpisivanja je funkcija čiji je argument Bobov privatni ključ, 𝑘 . Dakle, pod pretpostavkom da je Bobov privatni ključ poznat samo njemu, samo Bob može potpisati poruku 𝑥 svojim imenom. Da bi se potpis povezao sa porukom, 𝑥 je ulaz algoritma za potpisivanje. Nakon potpisivanja poruke, potpis 𝑠 se nadovezuje na poruku 𝑥 i par (𝑥, 𝑠 ) se šalje Alisi. Važno je napomenuti da digitаlni potpis sam po sebi nije od koristi osim ako nije uz poruku koja se potpisuje. Digitalni potpis bez poruke je ekvivalentan ručnom potpisu na parčetu papira bez ikakvog ugovora ili računa koji je trebao biti potpisan. Za Alisu potpis je koristan samo ako ona ima načina da provjeri da li je on važeći ili ne. Za ovo nam je potrebna funkcija verifikacije koja kao ulaz uzima i poruku 𝑥 i potpis 𝑠. Da bi mogla provjeriti da li potpis stavrno pripada Bobu, potreban joj je i Bobov javni ključ. Funkcija za verifikaciju može da vrati samo dva moguća izlaza: da ili ne. Ako je poruka 𝑥 stvarno potpisana privatnim ključem koji odgovara javnom ključu koji Alisi služi za verifikaciju, izlaz je „da“, a inače izlaz je „ne“. Iz ovih opštih zapažanja lako možemo prikazati osnovni protokol digitalnog potpisa: 22 Napomena 3.1. Osnovni protokol koji je gore naveden ne obezbjeđuje tajnost poruke, već je sadržaj poruke 𝑥 koja se šalje javan. Naravno, ukoliko je poruka povjerljiva može se enkriptovati, na primjer AES-om ili DES-om. Napomena 3.2. Većina šema za digitalne potpise može da „potpiše“ samo malu količinu podataka, npr. 𝑏 bita, gdje je 𝑏 cijeli broj između 80 i 1000. Ovo je nedovoljno za potpisivanje velikog digitalnog dokumenta 𝐷. Prvo, zato što je potrebno mnogo vremena potpisati svakih 𝑏 bita dokumenta 𝐷, a drugo što je dobijeni digitalni potpis veličine originalnog dokumenta. Rješenje ovog problema je korišćenje heš (engl. hash) funkcije [2], koja je veoma laka za izračunavanje: Hash: (dokument proizvoljne veličine)->{0,1} i za koju je veoma teško naći „inverznu funkciju“. Opštije, veoma je teško naći dva različita ulaza 𝐷 i 𝐷’ čiji su izlazi ℎ𝑎𝑠ℎ(𝐷) i ℎ𝑎𝑠ℎ(𝐷’) jednaki. Kriptografska heš funkcija je deterministički postupak koji uzima proizvoljan blok podataka i vraće niz bita fiksne dužine, tj. heš vrijednost. Ukoliko se podaci slučajno ili namjerno promjene mijenja se i heš vrijednost. Podaci koji se kodiraju često nazivamo porukom, a heš vrijednost se još i naziva sažetak poruke ili „message digest“. Idealna kriptografska heš funkcija ima četiri glavne karakteristike: Za bilo koju poruku lako je izračunati heš vrijednost Za zadatu heš vrijednost nemoguće je pronaći originalnu poruku Nemoguće je modifikovati poruku, a da se njena heš vrijenost ne promjeni Nemoguće je pronaći dvije poruke koje imaju istu heš vrijednost Dakle, prije potpisivanja dokumenta 𝐷, Bob računa i potpisuje ℎ𝑎𝑠ℎ(𝐷). Za verifikaciju, Alisa računa i verifikuje potpis nad ℎ𝑎𝑠ℎ(𝐷). Postoji nekoliko razloga da se potpisuje heširana verzija poruke umjesto kompletne poruke: Zbog efikasnosti: potpis će biti značajno kraći i zbog toga imamo uštedu na vremenu jer je heširanje u praksi brža operacija od potpisivanja. Zbog kompatibilnosti: poruke su obično nizovi bita, ali neke šeme potpisivanja funkcionišu u drugim domenima (npr. u slučaju RSA, računa se po modulu 𝑁). Heš funkcija se može koristiti da se proizvoljna poruka pretvori u odgovarajući format. Zbog integriteta: bez korišćenja heš funkcija, tekst koji treba potpisati se mora podijeliti u blokove koji su dovoljno mali da bi se šema potpisivanja mogla direktno primjeniti na takve blokove. Štaviše, primalac potpisane poruke nije u stanju da prepozna potpis ukoliko svi blokovi nisu prisutni u odgovarajućem poretku. U cijeloj proceduri samo je jedna stvar slaba karika. Moramo biti apsolutno sigurni da javni ključ za koji mislimo da pripada pošiljaocu (Bobu) zaista i pripada Bobu. Naime, ukoliko primaoc poruke (Alisa) ima javni ključ nekog drugog pošiljaoca (npr. Oskara), a vjeruje da ključ pripada Bobu tada je Oskar u mogućnosti krivotvoriti Bobove podatke, tj. predstaviti se kao Bob. 23 3.3. Uloga „Autoriteta od povjerenja“ i potpisivanje javnog ključa Opisani problem rješava se na način da se uvodi „Autoritet od povjerenja“, TA (engl. „trusted authority“). Pretpostavka je da Autoritetu od povjerenja sve ostale strane vjeruju, i da svoje javne ključeve lično odnesu na potpisivanje, s tim da im TA prethodno provjeri uobičajene „fizičke“ dokumente. U tom slučaju TA koristi svoj tajni ključ (javni ključ TA svima je poznat) za potpisivanje javnog ključa te time garantuje svima ostalima ispravnost potpisanog javnog ključa. Postoji i druga mogućnost, a to je da TA svima generiše par ključeva, i uz prethodnu fizičku autentifikaciju, dodjeljuje ključeve. U tom slučaju svako ko bi htio provjeriti ispravnost potpisa osobe (O) morao bi u bazi javnih ključeva (koju čuva TA), pronaći javni ključ osobe (O) i potom tim ključem pokušati dešifrovati primljene podatke. Nedostatak ovog drugog modela je taj što u tom slučaju TA posjeduje i tajne ključeve što predstavlja znatan sigurnosni problem ako se isti par ključeva koristi osim za potpisivanje i za šifrovanje podataka. Kao logičan izbor za TA nameću se državne ustanove, sudovi i javni bilježnici. Osim modela jednog centralnog „Autoriteta od povjerenja“ postoji i neka vrsta hijerarhijskog modela, kod kojeg je svaki korisnik u mogućnosti potpisati javne ključeve drugih osoba (za koje je siguran da pripadaju pravim osobama) i time garantovati drugima, koji su sigurni u ispravnost njegovog javnog ključa, ispravnost potpisanih ključeva. 3.4. Potpisi i zakoni Oko 2000. godine mnoge države su uvele odgovarajuće zakone koji se odnose na digitalni potpis. Na ovaj način otvorene su naizgled beskrajne mogućnosti poslovanja na Internetu, i zakoni o digitalnom potpisu postali su od velikog značaja za odvijanje poslovnih transakacija na Internetu. Iako se mnogo elektronske trgovine danas vrši bez upotrebe zakona o digitalnom potpisu, bez sumnje će biti sve više i više situacija kada će ovi zakoni zaista biti potrebni. Zakonske regulative (zemalja koje imaju zakon o digitalnom potpisu) ne određuju ni jednu tehnologiju potpisivanja kao dominantnu, već samo donose propise kojih se svaka od tehnologija mora pridržavati. Kao prvo, od digitalnog potpisa se očekuje da bude jedinstven osobi koja ga koristi, drugo, da se može provjeriti kome pripada odnosno da li zaista pripada osobi koja ga je koristila, treće, da je u potpunoj kontroli osobe koja ga koristi, četvrto, da potvrđuje i sebe i podatke koje potpisuje. Već iz ovog vidimo da postoji znatna prednost digitalnog potpisa nad klasičnim metodama autentifikacije. Najveća prednost je ta što se valjanost potpisa provjerava svaki put pri prijemu dokumenta, za razliku od klasičnih potpisa koji se provjeravaju tek na sudu, kad se prevara već odigrala. Osim ove prednosti postoji još jedna značajna prednost, a to je nemogućnost naknadne izmjene potpisanog dokumenta, kao i nemogućnost potpisivanja praznih dokumenata. Ipak, ukoliko krivotvorac uspije doći do tajnog ključa, tada bez ikakvih problema može falsifikovati podatke tako da ne postoji ni najmanja mogućnost utvrđivanja različitosti takvog potpisa od pravog potpisa, što kod klasičnih metoda ipak nije slučaj. 24 Veliki broj kriptografskih algoritama zaštićen je različitim patentima. Tako je npr. najrašireniji asimetrični kriptografski algoritam, RSA, bio patentiran 17 godina sve do septembra 2000. godine, a drugom isto tako vrlo značajnom protokolu, Diffie-Hellman protokolu, patent je istekao u maju 1997. godine. Nažalost, ovo nisu jedini takvi primjeri kao ni jedini problemi u široj primjeni kriptografskih algoritama. Proizvođači kriptografskog softvera (bili) su prisiljeni proizvoditi po dvije ili čak tri različite verzije istog softverskog paketa da bi se udovoljilo svim izvoznim i patentnim regulativama; zabrana izvoza kriptografskog softvera iz SAD-a s ključem dužim od 40-bita bila je na snazi do pred kraj 1999. godine, tako da je npr. NAI („Network Associates“) bio prisiljen imati dvije verzije svog programa PGP, jednu za tržište SAD-a a drugu za internacionalno tržište. Ipak, obije su verzije koristile „jaku“ enkripciju tako što je iskorištena „rupa“ u zakonu SAD-a kojim se zabranjuje izvoz softvera u binarnom obliku ali ne i izvornog koda. Osim ovog, postojao je i problem zbog patentiranog RSA algoritma, tako da verzije za SAD nisu koristile istu osnovu kao i internacionalne. Sličan problem javlja se i s pojavom novog američkog standarda za digitalno potpisivivanje („Digital Signature Standard“, DSS, 1994), jer se dijelovi korištenog algoritma (koji sam po sebi nije patentiran) nalaze pod patentnom zaštitom autora sličnog algoritma temeljenog na diskretnim logaritmima (Schorr, 1994, patent vrijedi 17 godina). Ovaj primjer ipak odskače iz mnoštva drugih upravo zbog toga što se radi o standardu koji su obavezne koristiti sve državne ustanove SAD-a; drugim riječima ovaj će patent vrlo vjerovatno američki poreski obveznici osjetiti na vlastitom džepu. Na kraju spomenimo još i zabranu izvoza bilo kakvog kriptografskog softvera zemljama poput Iraka, Sjeverne Koreje ili Kube. Zakon o elektronskom potpisu u Crnoj Gori Direktiva Evropske Unije 1999/93/EC o elektronskim potpisima (usvojena 13. decembra 1999, a formalno stupila na snagu 19. januara. 2000. godine) predstavlja pravno utemeljenje elektronskog potpisa i na osnovu nje su donijeti Zakoni o elektronskom potpisu u svim zemljama EU, kao i u većini ostalih zemalja Evrope. Zakon o elektronskom potpisu u Crnoj Gori je donesen 12.07.2005. i pubilkovan u Službenom listu (“Sl.list RCG”, br: 55/03 i 31/05). Time je završena priča koja je započela još u avgustu 2000. godine kada je radna grupa pod okriljem tadašnjeg Saveznog zavoda za informatiku započela izradu Prijedloga Zakona o elektronskom poslovanju i elektronskom potpisu. Definicije elektronskog potpisa: „Elektronski potpis“ - skup podataka u elektronskom obliku koji su pridruženi ili su logički povezani sa elektronskim dokumentom i koji služe za identifikaciju potpisnika; „Napredni elektronski potpis“ – elektronski potpis kojim se pouzdano garantuje identitet potpisnika i integritet elektronskih dokumenata i koji ispunjava uslove utvrđene ovim zakonom; (Dakle, ono što mi u ovom radu nazivamo digitalnim potpisom u Zakonu je u stvari napredni elektronski potpis.) Zakon se sastoji od sljedećih 7 poglavlja: I. II. Osnovne odredbe, Elektronski dokument, elektronski potpis i napredni elektronski potpis, 25 III. IV. V. VI. VII. Certifikati i davanje usluga certifikovanja, Prava, obaveze i odgovornosti potpisnika i davalaca usluga certifikovanja, Nadzor, Kaznene odredbe, Prelazne i završne odredbe. Osnovna uloga Zakona se svodi na dvije najvažnije stvari: Da propiše uslove pod kojima je elektronski potpis pravno ekvivalentan svojeručnom potpisu, Da propiše uslove koje moraju da ispune Certifikaciona tijela koja izdaju kvalifikovane certifikate za verifikaciju kvalifikovanih elektronskih potpisa. Napredni elektronski potpis (tj. digitalni potpis) mora da zadovolji sljedeće uslove: isključivo je povezan sa potpisnikom; nedvosmisleno identifikuje potpisnika; nastaje korišćenjem sredstava kojima potpisnik može samostalno da upravlja i koja su isključivo pod nadzorom potpisnika; sadrži direktnu povezanost sa podacima na koje se odnosi i to na način koji nedvosmisleno omogućava uvid u bilo koju izmjenu izvornih podataka; formiran je sredstvima za formiranje naprednog elektronskog potpisa; provjerava se na osnovu naprednog elektronskog certifikata potpisnika; napredni elektronski potpis u odnosu na podatke u elektronskom obliku ima isto pravno dejstvo i dokaznu snagu kao i svojeručni potpis, odnosno svojeručni potpis i pečat, u odnosu na podatke u papirnom obliku. Iz Pravilnika o mjerama i postupcima upotrebe i zaštite elektonskog potpisa, sredstava za izradu elektronskog potpisa i sistema certifikovanja (objavljenog u „Sl. listu RCG“, br. 25/05) izdvajamo: Član 2 Postupci za izradu elektronskog potpisa, kriterijumi koje treba da ispunjavaju sredstva za izradu i provjeru elektronskog potpisa, kao i izdavanje certifikata, moraju biti usklađeni sa odgovarajućim međunarodnim standardima i preporukama, i to: 1) tehničkim standardima Evropske organizacije ETSI (Europen Telecommunications Standards Institute) i ESI (Elektronic Signatures and Infrastructures); 2) evropskim standardima CEN/ISSS i dokumentima CWA (CEN Workshop Agreement); 3) standardima EESSI SG (European Electronic Signatures Standardisation Initiative Steering Group); 4) IETF RFC (Request for Comments) dokumentima; 5) PKCS ( Publik Key Criptographic Standards) dokumentima i preporukama kompanije RSA Data Security; 6) evropskim standardima Common Criteria (for Information Technology Security Evaluation) u odjeljku EAL ( Evaluation Assurance Level); 7) američkim standardima FIPS 140-1 (koje je utvrdilo tijelo za standardizaciju:National Institute of Standards and Technology -Federal Information Processing Standards ), kao i standardima FIPS 140-2. 26 Član 5 Podaci za izradu elektronskog potpisa moraju se u potpunosti razlikovati od podataka za provjeru elektronskog potpisa. Postupak izrade elektronskog potpisa ne smije izmijeniti podatke koji se potpisuju niti spriječiti prikaz tih podataka potpisniku prije čina potpisivanja. Potpisnik u elektronski potpis ugrađuje osnovne podatke o postupku, algoritmu i sadržaju potpisa kako bi korisnik elektronskog potpisa mogao provjeriti potpis na osnovu iste ili slične tehnologije i postupaka. Napredni elektronski potpis mora se izrađivati primjenom standardizovanih algoritama iz grupe RSA (rsagen1) odnosno DSA (dsagen1). Kod izrade naprednog elektronskog potpisa obvezno se koristi hash funkcija iz grupe SHA-1 (Secure Hash Algorithm), odnosno RIPEMD 160. Član 10 Programska oprema za izradu naprednog elektronskog potpisa mora imati ugrađene osnovne oblike zaštite, saglasno dokumentima o osnovnim pravilima zaštite i sigurnosti sredstva za izradu naprednog elektronskog potpisa – CWA 14168 i 14169 defined a Common Criteria Protection Profile (PP) for secure signature creation devices (SSCDs) , odnosno EAL4+ preporukama. Donošenjem Zakona o elektronskom potpisu, elektronskom poslovanju i pratećih podzakonskih akata u Crnoj Gori normativno je uređena oblast elektronskih transakcija. Takođe su jasno definisani postupci izdavanja i korišćenja digitalnih sertifikata, a samim tim i mehanizmi koji se primjenjuju u zaštiti elektronskih transakcija. Ministarstvo za informaciono društvo Vlade Crne Gore od sredine decembra 2009. godine obezbjeđuje usluge sertifikovanja digitalnog potpisa, enkriptovanja dokumenata i elektronske pošte za organe državne uprave. Očekuje se da će takva primjena digitalnog potpisa povećati sigurnost, stabilnost i bezbjednost komunikacije unutar organa državne uprave. 3.5. Sigurnosni zahtjevi Veoma je poučno detaljnije razmotriti sigurnosne ciljeve koje možemo postići sa digitalnim potpisima. U stvari, u ovom trenutku ćemo se malo distancirati od digitalnog potpisa i pitati jedno uopšteno pitanje: Koji su sve mogući bezbjedonosni ciljevi koje jedan sigurnosni sistem može da posjeduje? Postoji mnogo zahtjeva što se tiče obezbjeđivanja sigurnosti, a oni koji su poželjni u većini aplikacija, dati su kako slijedi: 1. Povjerljivost: Informacija se čuva u tajnosti od svih, osim od autorizovanih strana. 2. Integritet: Poruke nisu izmjenjene prilikom prenosa. 3. Autentifikacija poruke: Pošiljaoc poruke je autentičan. Drugi termin koji se koristi je i provjera izvora podataka. 4. Nemogućnost odbacivanja: Pošiljaoc poruke ne može poreći da je kreirao poruku. 27 Različite aplikacije ispunjavaju različite uslove što se tiče bezbjednosti. Na primjer, za privatnu elektronsku poštu prva tri uslova su poželjna, dok sistem za elektronsku poštu velikih korporacija zahtjeva i nemogućnost odbacivanja. Napominjemo da autentifikacija poruke uvijek podrazumjeva i integritet podataka, ali da ne važi i obratno. Pored četiri osnovna zahtjeva što se tiče bezbjednosti podataka, postoji i niz drugih: 5. Identifikacija: Uspostavljanje i provjera identiteta lica, npr. osoba, računar, ili kreditna kartica. 6. Kontrola pristupa: Ograničiti pristup resursima. Omogućiti da pristup resursima imaju samo privilegovani entiteti. 7. Dostupnost: Uvjerenje da je elektronski sistem pouzdan i na raspolaganju. 8. Mogućnost revizije: Obezbjeđuje dokaze o aktivnostima koje su bitne za bezbjednost, npr. čuvanje evidencije o pojedinim događajima. 9. Fizička bezbjednost: Obezbjeđuje fizičku zaštitu podataka i resursa sistema. 10. Anonimnost : Obezbjeđuje zaštitu od otkrivanja i zloupotreba identiteta. Koji su ciljevi vezani za bezbjednost poželjni u datom sistemu zavisi od tipa aplikacije i njene namjene. Na primjer, kada je u pitanju elektronska pošta anonimnost nema mnogo smisla, jer se za e-mailove pretpostavlja da imamo jasnu informaciju ko je pošiljaoc. Kao drugi primjer, da bi osigurali bezbjednost operativnog sistema, kontrola pristupa određenim djelovima računarskog sistema je često od ključnog značaja. Većina, ali ne i svi gore navedeni ciljevi mogu se postići korišćenjem kriptografskih algoritama. Međutim, u nekim slučajevima mora se uvesti i korišćenje nekriptografskih metoda. Na primjer, dostupnost se često postiže uvođenjem redundantnosti, npr. redundantno skladištenje podataka. Takva rješenja su samo indirektno, ako su i uopšte, povezana sa kriptografijom. 28 4. RSA šema digitalnog potpisa RSA šema digitalnog potpisa je bazirana na RSA sistemu enkripcije. Njena sigurnost počiva na težini problema faktorisanja proizvoda dva velika prosta broja. Od prvog opisa RSA šeme digitalnog potpisivanja 1978. godine, postala je najćešće korišćena šema digitalnog potpisa u praksi. 4.1. Školski primjer RSA digitalnog potpisa Pretpostavimo da Bob želi da pošalje Alisi potpisanu poruku 𝑥. On generiše isti par RSA ključeva koji se koristi u RSA enkripciji koju smo ranije opisali. Na kraju, on ima sljedeće parametre: RSA ključevi 1. Bobov privatni ključ: 𝑘 = (𝑑) 2. Bobov javni ključ: 𝑘 = (𝑛, 𝑒) Protokol potpisivanja dat je na slici ispod. Napominjemo da je poruka 𝑥 koja se potpisuje u skupu {1, 2, . . . , 𝑛 − 1}. Kao što se može vidjeti iz protokola, Bob računa potpis 𝑠 za poruku 𝑥 na taj način što enkriptuje poruku 𝑥 sa svojim privatnim ključem 𝑘 . Bob je jedini koji može enkriptovati poruku ključem 𝑘 , i njegovo vlasništvo nad privatnim ključem ga identifikuje kao vlasnika potpisane poruke. Bob nadovezuje potpis 𝑠 na poruku 𝑥 i taj par šalje Alisi. Alisa prima potpisanu poruku i RSA dekriptuje 𝑠 pomoću Bobovog javnog ključa 𝑘 . Ako se 𝑥’ i 𝑥 poklapaju, Alisa zna dvije važne stvari: Prvo, autor poruke posjeduje Bobov privatni ključ, i ako samo Bob ima pristup tom ključu, onda je samo Bob mogao biti taj koji je potpisao poruku. Drugo, poruka nije izmjenjena prilikom prenosa, tako da je 29 integritet poruke zagarantovan. Sjetimo se iz prethodnog poglavlja da su ovo dva osnovna zahtjeva prema bezbjednosti koja su potrebna u praksi. Dokaz. Sada ćemo dokazati da je šema ispravna, tj. da proces verifikacije vraća „validan potpis“ ako poruka i potpis nisu izmjenjeni prilikom prenosa podataka. Počinjemo od operacije verifikacije : 𝑠 = (𝑥 ) = 𝑥 𝑚𝑜𝑑 𝑛 zbog matematičkog odnosa privatnog i javnog ključa, koji je dat formulom 𝑑𝑒 ≡ 1 𝑚𝑜𝑑 𝜙(𝑛) dobijamo da podizanje bilo kog cijelog broja 𝑥 ∈ ℤ na 𝑑𝑒 daje u stvari taj isti cijeli broj. Uloga javnog i privatnog ključa su zamijenjeni u odnosu na RSA šemu enkripcije. Dok RSA enkripcija primjenjuje javni ključ za poruku 𝑥, šema digitalnog potpisa primjenjuje privatni ključ 𝑘 . Sa druge strane komunikacionog kanala, kod RSA šeme za enkripciju primaoc poruke koristi privatni ključ, dok kod digitalnog potpisa za verifikaciju se koristi javni ključ. Primjer 4.1. Pretpostavimo da Bob želi Alisi da pošalje potpisanu poruku (𝑥 = 4). Prvi korak je isti kao i kod RSA algoritma za enkripciju: Bob računa svoje RSA parametre i Alisi šalje svoj javni ključ. Za razliku od šeme za enkripciju, sada se privatni ključ koristi za potpisivanje, dok se javni ključ koristi za verifikaciju potpisa. Pošto je funkcija za verifikaciju vratila da je potpis validan Alisa može zaljučiti da je Bob generisao poruku i da poruka nije mijenjana tokom prenosa, tj. autentičnost i integritet poruke su zagarantovani. Treba napomenuti da smo dali samo šemu digitalnog potpisa. U ovom slučaju poruka koja se prenosi nije enkriptovana i samim tim povjerljivost podataka nije obezbjeđena. Ako se zahtjeva i povjerljivost podataka, poruka i potpis se moraju enkriptovati, npr. korišćenjem nekog simetričnog algoritma, kao što je AES. 30 4.2. Računarski aspekat Prvo, primjetimo da je potpis dugačak kao i broj 𝑛, tj. grubo rečeno ⌈𝑙𝑜𝑔 𝑛⌉ bita. Radi obezbjeđenja sigurnosti, potrebno je da 𝑛 bude u opsegu od 1024 do 3072 bita. Iako tolika dužina potpisa nije problem u većini Internet aplikacija, dužina potpisa je veoma bitna u sistemima kod kojih je propusni opseg ograničen, npr. kod mobilnih telefona. Proces generisanja ključa je identičan onome koji se koristi za RSA enkripciju. Da bi izračunali i verifikovali potpis može se koristiti npr. algoritam brzog stepenovanja [1]. Posebno su interesantni kratki javni ključevi 𝑒, na primjer 𝑒 = 2 + 1. Ovo čini da verifikacija postane jako brza operacija. Pošto je u mnogim praktičnim scenarijima poruka potpisana samo jednom, ali se verifikuje više puta, činjenica da je verifikacija brza nam je veoma korisna. To je, na primjer, slučaj u infrastrukturi javnog ključa koja koristi sertifikate. Sertifikati se potpisuju samo jednom, ali se potvrđuju iznova svaki put kada korisnik koristi svoje ključeve. 4.3. Sigurnost Kao i u svakoj drugoj asimetričnoj šemi, mora se obezbjediti da javni ključevi budu autentični. Ovo znači da strana koja vrši verifikaciju zaista ima javni ključ koji je komplementaran privatnom ključu koji je korišten prilikom potpisivanja. Ako napadač uspije da obezbjedi verifikator sa netačnim javnim ključem koji navodno pripada potpisniku, napadač očigledno može i da potpisuje poruke. U cilju sprečavanja napada mogu se koristiti sertifikati. Sertifikat je elektronski dokument koji se koristi za identifikovanje osobe, servera, kompanije ili nekog drugog subjekta i za povezivanje tog identiteta sa javnim ključem (engl. public key). Sertifikat daje opšte priznati dokaz o identitetu. Sertifikat se može posmatrati kao digitalna lična karta odgovarajućeg entiteta. (Lična karta kod nas je opšte prihvaćeni dokaz o identitetu vlasnika izdata od strane MUP-a (državne institucije). Pošto se vjeruje državnoj instituciji da je prije izdavanja lične karte izvršila provjeru identiteta osobe, time se vjeruje u identitet osobe kojoj je izdata lična karta.) Algoritamski napadi Prva grupa napada pokušava da razbije osnovnu RSA šemu na kojoj počiva algoritam. Cilj je računanje privatnog ključa 𝑑. Najopštija vrsta ovog napada pokušava da faktoriše broj 𝑛 u proste brojeve 𝑝 i 𝑞. Ako napadač uspije u tome, on može lako izračunati privatni ključ 𝑑 iz javnog ključa 𝑒. U cilju sprečavanja napada faktorisanjem broj 𝑛 mora biti dovoljno veliki. U praksi se preporučuje da 𝑛 bude najmanje 1024-bitni broj. Napad falsifikovanjem Sljedeći napad na RSA digitalni potpis je taj da napadač može da generiše validan potpis za slučajnu poruku 𝑥. Napad funkcioniše na sljedeći način: 31 Napadač imitira Boba, odnosno Oskar tvrdi pred Alisom da je on u stvari Bob. Pošto Alisa obavlja potpuno iste operacije kao Oskar, ona će verifikovati potpis kao ispravan. Međutim, ako pažljivo pogledamo korake 1 i 2 koje Oskar obavlja, vidi se da je napad prilično neobičan. Napadač prvo bira potpis, a zatim računa poruku 𝑥. Kao posljedica toga, napadač nije u mogućnosti da kontroliše značenje poruke 𝑥. Na primjer, Oskar ne može generisati poruku „Uplatiti 1000€ na Oskarov račun“ . Ipak, činjenica da automatizovani proces verifikacije ne prepoznaje falsifikat sigurno nije poželjan. Iz ovog razloga, školska verzija RSA algoritma se veoma rijetko koristi u praksi, i dopunjene šeme se koriste u cilju sprečavanja ovog i drugih napada. Dopuna RSA algoritma: PSS algoritam Gore navedeni napad može da se spriječi zadavanjem određenog formata poruke. Grubo govoreći, formatiranje nameće pravila koja omogućavaju verifikatoru, u našem slučaju Alisi, da razlikuje validne i nevalidne poruke. Na primjer, jednostavno pravilo formatiranja može biti to da kod svih poruka 𝑥 posljednjih 100 bita imaju vrijednost 0 (ili bilo koju drugu kombinaciju 0 i 1 koja je unaprijed zadata). Ako Oskar odabere vrijednost potpisa 𝑠 i izračuna poruku 𝑥 = 𝑠 𝑚𝑜𝑑 𝑛, veoma je malo vjerovatno da je 𝑥 u traženom formatu. Ako zahtjevamo, na primjer, da na kraju poruke posljednjih 100 bita budu 0, šansa da 𝑥 ima traženi format je 2 , što je znatno niže nego mogućnost dobitka na lutriji. Sada ćemo dati dopunjenu šemu koja se često koristi u praksi. RSA-PSS je šema potpisivanja koja se bazira na RSA kriptosistemu. Ona kombinuje potpisivanje i verifikaciju sa kodiranjem poruke. Razmotrimo detaljnije RSA-PSS šemu [4]. Gotovo uvijek u praksi ne potpisuje se direktno poruka, već heš vrijednost poruke. Heš funkcija računa digitalni „otisak prsta“ poruke. Taj otisak je fiksne dužine, npr. 160 ili 256 bita, dok poruka nad kojom se računa heš funkcija može imati proizvoljnu dužinu. Da bi bili u skladu sa terminologijom koja se koristi u standardima, poruku ćemo umjesto sa 𝑥 označavati sa 𝑀. Potpis za poruku 𝑀 se računa u 3 koraka: 32 1. Primjeni se heš funkcija na poruku 𝑀 da bi dobili heš vrijednost 𝑚𝐻𝑎𝑠ℎ. 2. Heš vrijednost 𝑚𝐻𝑎𝑠ℎ se transformiše u kodiranu poruku 𝐸𝑀(engl. Encoded message). 3. Na kodiranu poruku 𝐸𝑀 primjeni se algoritam potpisivanja korišćenjem privatnog ključa. Na taj način smo dobili potpis 𝑆. Pošto kodiranu verziju poruke dobijamo iz potpisa, potpis verifikujemo u 3 koraka: 1. Primjenimo heš funkciju na poruku 𝑀 da bi dobili heš vrijednost 𝑚𝐻𝑎𝑠ℎ. 2. Primjenimo algoritam za verifikaciju potpisa 𝑆 da dobijemo kodiranu poruku 𝐸𝑀. 3. Provjerimo da li je 𝐸𝑀 validna transformacija heš vrijednosti 𝑚𝐻𝑎𝑠ℎ . Slika 4 prikazuje proceduru kodiranja koja je poznata kao Metod za kodiranje potpisa sa dodatkom za PSS (EMSA-PSS). Šema kodiranja EMSA-PSS Neka je |𝑛| veličina RSA modula u bitima. Kodirana poruka EM ima dužinu ⌈(|𝑛| − 1)/8⌉ bajta, tako da je dužina EM u bitima najviše |𝑛| − 1 bita. 1. Generiši slučajnu vrijednost 𝑠𝑎𝑙𝑡. 2. Formiraj string 𝑀′ konkatenacijom fiksiranog dodatka 𝑝𝑎𝑑𝑑𝑖𝑛𝑔 , heš vrijednosti 𝑚𝐻𝑎𝑠ℎ = ℎ(𝑀) i 𝑠𝑎𝑙𝑡. 3. Izračunaj heš vrijednost 𝐻 stringa 𝑀′. 4. Izvrši konkatenaciju fiksiranog dodatka 𝑝𝑎𝑑𝑑𝑖𝑛𝑔 i vrijednosti 𝑠𝑎𝑙𝑡 tako da formiraju blok podataka 𝐷𝐵. 5. Primjeni funkciju generisanja maske 𝑀𝐺𝐹 na string 𝑀′ da bi izračunali vrijednost maske 𝑑𝑏𝑀𝑎𝑠𝑘. U praksi, heš funkcija kao što je na primjer 𝑆𝐻𝐴 − 1 često se koristi kao 𝑀𝐺𝐹. 6. Izvrši funkciju XOR nad vrijednosti maske 𝑑𝑏𝑀𝑎𝑠𝑘 i bloka podataka 𝐷𝐵 da bi izračunali 𝑚𝑎𝑠𝑘𝑒𝑑𝐷𝐵. 7. Kodirana poruka 𝐸𝑀 se dobija konkatenacijom 𝑚𝑎𝑠𝑘𝑒𝑑𝐷𝐵, heš vrijednosti 𝐻 i fiksnog dodatka 𝑏𝑐. Slika 4. EMSA-PSS metod kodiranja Napomena 4.1. Funkcija generisanja maske –𝑀𝐺𝐹 uzima niz bita proizvoljne dužine i generiše niz bita fiksne dužine. Izlaz iz 𝑀𝐺𝐹 treba da bude pseudo-slučajan, to jest veoma teško predvidiv. Zbog toga se za implementaciju 𝑀𝐺𝐹 najčešće koriste heš funkcije. Nakon kodiranja, operacija potpisivanja se primjenjuje nad kodiranom porukom 𝐸𝑀, tj. 33 𝑠 = 𝑠𝑖𝑔 (𝑥) = 𝐸𝑀 𝑚𝑜𝑑 𝑛 Procedura verifikacije se, zatim, odvija na sličan način: formiranje 𝑠𝑎𝑙𝑡 vrijednosti i provjeravanje da li je EMSA-PSS kodiranje korektno. Da bi to postigli potrebno je proći kroz korake od 7 do 4 i dobiti vrijednosti 𝑠𝑎𝑙𝑡 i 𝐻, a zatim ponoviti korake 2 i 3 da ispitamo da li je heš vrijednost ispravna. Treba imati na umu da primaoc poruke zna vrijednosti 𝑝𝑎𝑑𝑑𝑖𝑛𝑔 i 𝑝𝑎𝑑𝑑𝑖𝑛𝑔 iz standarda. Slika 5. Princip funkcionisanja EMSA-PSS šeme kodiranja Vrijednosti 𝐻 𝑖 𝐸𝑀 su u suštini heš vrijednosti poruke. Dodavanjem slučajne vrijednosti 𝑠𝑎𝑙𝑡 prije drugog heširanja, kodirana vrijednost postaje vjerovatnosna. Kao posljedica toga, ako kodiramo i potpišemo dva puta istu poruku dobijamo različite potpise, što je poželjna osobina. 34 5. Elgamal šema digitalnog potpisa Elgamal šema digitalnog potpisa, koja je objavljena 1985. godine, zasnovana je na težini problema računanja diskretnog logaritma. Za razliku od RSA, gdje su enkripcija i digitalni potpis gotovo identične operacije, Elgamal digitalni potpis se prilično razlikuje od šeme za enkripciju sa istim imenom. 5.1. Školski primjer Elgamal digitalnog potpisa Generisanje ključeva Kao i u svakoj asimetričnoj šemi, postoji faza tokom koje se generišu ključevi. Počinjemo odabiranjem velikog prostog broja 𝑝 i konstruisanjem problema diskretnog algoritma kako slijedi: Generisanje ključeva za Elgamal šemu digitalnog potpisa 1. Izaberi veliki prost broj p. 2. Izaberi primitivni element 𝛼𝜖𝑍 ∗ podgrupe 𝑍 ∗ . 3. Izaberi slučajan broj 𝑑 iz skupa {2,3, … , 𝑝 − 2} . 4. Izračunaj 𝛽 = 𝛼 𝑚𝑜𝑑 𝑝. Sada smo fomirali javni ključ 𝑘 = (𝑝, 𝛼, 𝛽), i privatni ključ 𝑘 =𝑑. Potpis i verifikacija Korišćenjem privatnog ključa i parametara javnog ključa računa se potpis za poruku 𝑥: 𝑠𝑖𝑔 (𝑥, 𝑘 ) = (𝑟, 𝑠) Primjetimo da se potpis sastoji od dva cijela broja- 𝑟 𝑖 𝑠. Potpisivanje se sastoji iz dva glavna koraka: Slučajnog odabira vrijednosti 𝑘 , koja u stvari predstavlja privatni efemeralni ključ Računanja stvarnog potpisa za poruku 𝑥 35 Generisanje Elgamal potpisa 1. Izaberi slučajan efemeralni ključ 𝑘 𝜖{0 ,1, 2, … , 𝑝 − 2} za koji važi da je 𝑛𝑧𝑑(𝑘 , 𝑝 − 1) = 1. 2. Izračunaj parametre potpisa: 𝑟 ≡ 𝛼 𝑚𝑜𝑑 𝑝, 𝑠 ≡ (𝑥 − 𝑑 ∙ 𝑟)𝑘 𝑚𝑜𝑑 𝑝 − 1 . Na prijemnoj strani, potpis je potrebno verifikovati korišćenjem javnog ključa, potpisa i poruke. Verifikacija Elgamal potpisa 1. Izračunaj vrijednost: 𝑡 ≡ 𝛽 ∙ 𝑟 𝑚𝑜𝑑 𝑝 , 2. Verifikacija slijedi iz: 𝑡 ≡ 𝛼 𝑚𝑜𝑑 𝑝 → 𝑝𝑜𝑡𝑝𝑖𝑠 𝑣𝑎𝑙𝑖𝑑𝑎𝑛 ≢ 𝛼 𝑚𝑜𝑑 𝑝 → 𝑝𝑜𝑡𝑝𝑖𝑠 𝑛𝑒𝑣𝑎𝑙𝑖𝑑𝑎𝑛 Ukratko, onaj koji verifikuje poruku prihvata potpis (𝑟, 𝑠) samo ako je relacija 𝛽 ∙ 𝑟 ≡ 𝛼 𝑚𝑜𝑑 𝑝 zadovoljena. U protivnom, verifikacija nije uspjela. Da bi razjasnili način odabira parametara 𝑟 𝑖 𝑠 za potpisivanje, korisno je proučiti sljedeći dokaz. Dokaz. Dokazujemo korektnost Elgamal šeme potpisivanja. Specijalno, pokazaćemo da proces verifikacije vraća „potpis je validan“ ako onaj koji verifikuje poruku koristi ispravni javni ključ i ispravnu poruku, i ako su parametri potpisa (𝑟, 𝑠) odabrani kao što je navedeno. Počinjemo sa jednačinom verifikacije: 𝛽 ∙𝑟 ≡ 𝛼 ≡𝛼 𝛼 𝑚𝑜𝑑 𝑝 𝑚𝑜𝑑 𝑝 . Potpis treba smatrati validnim ako je ovaj izraz jednak 𝛼 : 𝛼 ≡𝛼 𝑚𝑜𝑑 𝑝 Prema maloj Fermaovoj teoremi, posljednja relacija važi ako su eksponenti na obije strane izraza jednaki u modulo 𝑝 − 1 aritmetici: 36 𝑥 ≡ 𝑑𝑟 + 𝑘 𝑠 𝑚𝑜𝑑 𝑝 − 1 Odakle dobijamo formiranje parametara potpisa kako slijedi: 𝑠 ≡ (𝑥 − 𝑑 ∙ 𝑟)𝑘 𝑚𝑜𝑑 𝑝 − 1 . Uslov da je 𝑛𝑧𝑑 (𝑘 , 𝑝 − 1) = 1 je potreban zato što je potrebno računanje inverznog elementa efemeralnog ključa po modulu 𝑝 − 1 kada računamo 𝑠. Primjer. Ponovo, Bob želi poslati Alisi poruku. Ovoga puta, on je želi potpisati sa Elgamal šemom potpisivanja. Potpisivanje i verifikacija funkcionišu na sljedeći način: 5.2. Računarski aspekat Važno je primjetiti da je postupak generisanja ključeva identičan kao i kod Elgamal enkripcije. Budući da se sigurnost ove šeme zasniva na problemu diskretnog logaritma, 𝑝 mora da zadovoljava određene uslove. Specijalno, mora biti dužine najmanje 1024 bita. Prost broj se može generisati korišćenjem algoritma za traženje prostih brojeva [1]. Javni ključ se generiše slučajno, a za stepenovanje javnog ključa može se koristiti algoritam brzog stepenovanja [1]. Potpis se sastoji od para (𝑟, 𝑠). Oboje imaju dužinu u bitima kao i broj 𝑝, tako da je ukupna dužina paketa (𝑥, (𝑟, 𝑠)) trostruka dužina poruke 𝑥. Računanje broja 𝑟 zahtjeva podizanje broja α na neki stepen po modulu 𝑝, što se može postići koršćenjem algoritma brzog stepenovanja [1]. Glavna operacija prilikom računanja broja 𝑠 je traženje inverza od 𝑘 . Ovo se može postići korišćenjem proširenog Euklidovog algoritma. Ubrzanje algoritma je moguće uvođenjem preprocesiranja. Potpisnik može unaprijed da generiše efemeralne ključeve 𝑘 i 𝑟 vrijednosti, i da sačuva ove podatke. Kada treba potpisati poruku, oni se mogu preuzeti i koristiti za računanje vrijednosti 𝑠. Onaj koji 37 prima poruku i treba da je verifikuje izvršava dvije operacije stepenovanja korišćenjem algoritma brzog stepenovanja [1] i jedno množenje. 5.3. Sigurnost Prvo, moramo biti sigurni da onaj koji verifikuje poruku ima ispravan javni ključ. U suprotnom, moguć je napad koji je opisan u poglavlju 4.3. U ovom dijelu opisujemo ostale vrste napada na Elgamal digitalni potpis. Računanje diskretnih logaritama Sigurnost šeme potpisivanja počiva na težini problema diskretnog logaritma (DLP). Ako je Oskar sposoban da računa diskretne logaritme, on može izračunati privatni ključ 𝑑 iz 𝛽 kao i efemeralni ključ 𝑘 iz 𝑟. Sa ovim informacijama, on može potpisati proizvoljne poruke u tuđe ime. Otuda Elgamal parametri moraju biti izabrani da je problem diskretnog logaritma težak. Da bi problem određivanja diskretnog logaritma bio težak broj 𝑝 mora bti najmanje 1024 bita. Ponovno korišćenje efemeralnog ključa Ako potpisnik poruke više puta koristi isti efemeralni ključ 𝑘 , napadač lako može izračunati privatni ključ 𝑑. Ovo vodi do potpunog razbijanja sistema. Evo kako napad funkcioniše. Oskar posmatra dva digitalna potpisa i poruke oblika (𝑥, (𝑟, 𝑠)). Ako dvije poruke 𝑥 i 𝑥 imaju isti efemeralni ključ 𝑘 , Oskar lako može to da primjeti, jer su dvije 𝑟 vrijednosti iste pošto se računaju na sljedeći način: 𝑟 = 𝑟 = 𝑟 ≡ 𝛼𝑘𝐸 𝑚𝑜𝑑 𝑝 𝑆 vrijednosti su različite, pa Oskar u stvari dobija dvije jednačine: −1 𝑠 ≡ (𝑥 − 𝑑 ∙ 𝑟)𝑘𝐸 𝑚𝑜𝑑 𝑝 − 1 −1 𝑠 ≡ (𝑥 − 𝑑 ∙ 𝑟)𝑘𝐸 𝑚𝑜𝑑 𝑝 − 1 Ovo je sistem jednačina sa dvije nepoznate: 𝑑 - što je i Bobov privatni ključ 𝑘 - efemeralni ključ Ako obije jednačine pomnožimo sa 𝑘 ovo postaje linearni sistem jednačina koji se lako rješava. Oskar jednostavno oduzima drugu jednačinu od prve, i dobija: −1 𝑠 − 𝑠 ≡ (𝑥 − 𝑥 )𝑘𝐸 𝑚𝑜𝑑 𝑝 − 1 Iz prethodne jednačine možemo dobiti efemeralni ključ po formuli: 𝑘 ≡ 𝑥 −𝑥 𝑚𝑜𝑑 𝑝 − 1 𝑠 −𝑠 38 Ako je 𝑛𝑧𝑑(𝑠 − 𝑠 , 𝑝 − 1) ≠ 1 jednačina ima višestruko rješenje za 𝑘 , i Oskar mora da provjeri koje je ispravno. U svakom slučaju, korišćenjem 𝑘 , Oskar takođe može izračunati privatni ključ 𝑑 iz jedne od jednačina sistema, na primjer po formuli: 𝑑≡ 𝑥 −𝑠 𝑘 𝑟 𝑚𝑜𝑑 𝑝 − 1 Sa poznavanjem privatnog ključa 𝑑 i parametara javnog ključa, Oskar sada slobodno može potpisati bilo koji dokument u Bobovo ime. U cilju izbjegavanja napada, za svako potpisivanje bilo bi poželjno birati efemeralne ključeve koji se slučajno generišu. Dat je primjer napada sa malim brojevima. Primjer. Pretpostavimo da imamo situaciju u kojoj Oskar presreće dvije poruke koje je potpisao Bob korišćenjem istog efemeralnog ključa 𝑘 : 1. 2. 𝑥 , (𝑟, 𝑠 ) = 26, (3, 26) 𝑥 , (𝑟, 𝑠 ) = 13, (3, 1) . Podrazumjeva se da Oskar zna Bobov javni ključ, koji je u ovom slučaju: (𝑝, ∝, 𝛽) = (29, 2, 7) . Posjedujući ove informacije, Oskar je u mogućnosti da izračuna efemeralni ključ: 𝑘 ≡ ≡ 𝑥 −𝑥 𝑚𝑜𝑑 𝑝 − 1 𝑠 −𝑠 26 − 13 ≡ 13 ∙ 9 26 − 1 ≡ 5 𝑚𝑜𝑑 28 I na kraju otkrije Bobov privatni ključ 𝑑 : 𝑑≡ 𝑥 −𝑠 𝑘 𝑟 ≡ 𝑚𝑜𝑑 𝑝 − 1 26 − 26 ∙ 5 3 ≡ 8 ∙ 19 ≡ 12 𝑚𝑜𝑑 28 . Napad falsifikovanjem Slično kao i u slučaju RSA digitalnog potpisa, takođe je moguće da napadač generiše validan potpis za slučajnu poruku 𝑥. Napadač Oskar glumi Boba, tj. Oskar tvrdi pred Alisom da je on u stvari Bob. 39 Napad se odigrava na sljedeći način: Verifikacija vodi do validnog potpisa zato što važi: 𝑡 ≡ 𝛽 ∙ 𝑟 𝑚𝑜𝑑 𝑝 ≡∝ ∙ 𝑟 𝑚𝑜𝑑 𝑝 ≡∝ ∙∝( ≡∝ ∙∝ ) 𝑚𝑜𝑑 𝑝 ≡∝ ∙∝( ) 𝑚𝑜𝑑 𝑝 𝑚𝑜𝑑 𝑝 ≡∝ 𝑚𝑜𝑑 𝑝 Pošto je poruka konstruisana kao 𝑥 ≡ 𝑠𝑖 𝑚𝑜𝑑 𝑝 − 1, posljednji izraz je jednak: ∝ ≡∝ 𝑚𝑜𝑑 𝑝 Što je i upravo uslov koji Alisa provjerava za prihvatanje potpisa kao validnog. Napadač u koraku 3 računa poruku 𝑥, čije značenje ne može da kontroliše. Zbog toga, Oskar može praviti validne potpise samo za pseudoslučajne poruke. Napad nije moguće izvesti ako se poruka hešira, što je u praksi veoma čest slučaj. Umjesto da se poruka koristi za računanje potpisa, prije potpisivanja nad porukom se primjenjuje heš funkcija, odnosno jednačina potpisivanja postaje: 𝑠 ≡ (ℎ(𝑥) − 𝑑 ∙ 𝑟)𝑘 𝑚𝑜𝑑 𝑝 − 1 . 40 6. Algoritam digitalnog potpisa (DSA) Osnovni Elgamal algortam digitalnog potpisa koji je opisan u prethodnom odjeljku veoma se rijetko koristi u praksi. Umjesto njega, koristi se popularnija varijanta koja je poznata kao Algoritam digitalnog potpisa (engl. Digital Signature Algorithm - DSA). To je standard za digitalne potpise vlade Sjedinjenih Američkih Država (engl. Digital Signature Standard - DSS) koji je predložen od strane Nacionalnog instituta za tehnologiju i standarde (NIST). Glavna prednost ovog potpisa u poređenju sa Elgamal šemom digitalnog potpisivanja je ta da je potpis dugačak samo 320 bita, i neki napadi koji mogu da ugroze Elgamal šemu se ne mogu primjeniti na DSA. 6.1. DSA algoritam Ovdje ćemo prikazati DSA algoritam sa dužinom od 1024 bita. Važno je napomenuti da su veće dužine takođe moguće korišćenjem ovog standarda. Generisanje ključa Ključevi za DSA algoritam se računaju na sljedeći način: Generisanje ključeva za DSA 1. Generiši prost broj 𝑝 za koji važi 2 <𝑝<2 . 2. Nađi prost djelioc 𝑞 broja 𝑝 − 1 za koji važi 2 <𝑞<2 . 3. Nađi element 𝛼 za koji je 𝑟𝑒𝑑(𝛼) = 𝑞, tj. α generiše podgrupu koja ima 𝑞 elemenata 4. Izaberi slučajni cijeli broj 𝑑 za koji važi 0 < 𝑑 < 𝑞. 5. Izračunaj 𝛽 ≡ 𝛼 𝑚𝑜𝑑 𝑝 . Ključevi su: 𝑘 = (𝑝, 𝑞, ∝, 𝛽) 𝑘 = (𝑑) Osnovna ideja DSA je da se koriste dvije ciklične grupe. Jedna od njih je velika ciklična grupa 𝑍 ∗ čiji je red dužine 1024 bita. Druga je 160-bitna podgrupa grupe 𝑍 ∗ . Ovakav izbor grupa daje kraće potpise, kao što je opisano u daljem tekstu. Pored ovakvog odabira brojeva 𝑝 𝑖 𝑞, postoje i druge kombinacije bitskih dužina koje se mogu odabrati za ove brojeve. Prema posljednjoj verziji standarda, kombinacije su date u tabeli 1. Ukoliko odaberemo neku drugu kombinaciju dužine brojeva 𝑝 𝑖 𝑞 u bitima, samo je potrebno promjeniti korake 1 i 2 u procesu generisanja ključeva. O pitanju odabira bitske dužine biće riječi kasnije. 41 p 1024 2048 3072 q 160 224 256 potpis 320 448 512 Tabela 1. Bitska dužina važnih parametara DSA algoritma Potpis i verifikacija Kao i u Elgamal šemi digitalnog potpisa, DSA potpis se sastoji od para cijelih brojeva (𝑟, 𝑠). Pošto je svaki od parametara dugačak samo 160 bita, ukupna dužina potpisa je 320 bita. Korišćenjem privatnog i javnog ključa, potpis za pouku 𝑥 se računa na sljedeći način: Generisanje DSA potpisa 1. Izaberi slučajan efemeralni ključ 𝑘 za koji važi 0 < 𝑘𝐸 < 𝑞. 2. Izračunaj 𝑟 ≡ (𝛼 𝑚𝑜𝑑 𝑝) 𝑚𝑜𝑑 𝑞 . 3. Izračunaj 𝑠 ≡ (𝑆𝐻𝐴(𝑥) + 𝑑 ∙ 𝑟)𝑘 𝑚𝑜𝑑 𝑞 . Prema standardu, da bi izračunali 𝑠 poruka 𝑥 se hešira korišćenjem heš funkcije 𝑆𝐻𝐴 − 1. Heš funkcija 𝑆𝐻𝐴 − 1 računa 160-bitni sažetak poruke 𝑥, što u stvari predstavlja njen „otisak“. Ovaj otisak se može smatrati zamjenom za poruku 𝑥. Proces verifikacije potpisa odvija se na sljedeći način: Verifikacija DSA potpisa 1. 2. 3. 4. 5. Izračunaj pomoćnu vrijednost 𝑤 ≡ 𝑠 𝑚𝑜𝑑 𝑞. Izračunaj pomoćnu vrijednost 𝑢 ≡ 𝑤 ∙ 𝑆𝐻𝐴(𝑥) 𝑚𝑜𝑑 𝑞. Izračunaj pomoćnu vrijednost 𝑢 ≡ 𝑤 ∙ 𝑟 𝑚𝑜𝑑 𝑞. Izračunaj 𝑣 ≡ (∝ ∙ 𝛽 𝑚𝑜𝑑 𝑝) 𝑚𝑜𝑑 𝑞 . Verifikacija 𝑣𝑒𝑟 (𝑥, 𝑟, 𝑠) slijedi iz: 𝑣 ≡ 𝑟 𝑚𝑜𝑑 𝑞 → 𝑣𝑎𝑙𝑖𝑑𝑎𝑛 𝑝𝑜𝑡𝑝𝑖𝑠 ≢ 𝑟 𝑚𝑜𝑑 𝑞 → 𝑛𝑒𝑣𝑎𝑙𝑖𝑑𝑎𝑛 𝑝𝑜𝑡𝑝𝑖𝑠 Potpis (𝑟, 𝑠) se prihvata samo ako je 𝑣 ≡ 𝑟 𝑚𝑜𝑑 𝑞 zadovoljeno. U suprotnom, verifikacija nije uspjela. U slučaju da verifikacija nije uspjela, ili poruka ili potpis su izmjenjeni prilikom prenosa, ili onaj koji vrši verifikaciju ne posjeduje ispravan javni ljuč. U svakom slučaju, potpis se smatra nevalidnim. 42 Dokaz. Pokazaćemo da potpis (𝑟, 𝑠) zadovoljava uslov 𝑣 ≡ 𝑟 𝑚𝑜𝑑 𝑞 koji se ispituje u postupku verifikacije. Počećemo sa parametrom potpisa 𝑠: 𝑠 ≡ (𝑆𝐻𝐴(𝑥) + 𝑑 ∙ 𝑟)𝑘 𝑚𝑜𝑑 𝑞 Što je ekvivalentno sa: 𝑘 ≡𝑠 𝑆𝐻𝐴(𝑥) + 𝑑𝑠 𝑟 𝑚𝑜𝑑 𝑞 . Desna strana se može zapisati pomoću pomoćnih vrijednosti 𝑢 i 𝑢 : 𝑘 ≡ 𝑢 + 𝑑𝑢 𝑚𝑜𝑑 𝑞 . Sada možemo podići 𝛼 na 𝑘 , i to sve u modulo 𝑝 aritmetici, tako da dobijamo: ∝ 𝑚𝑜𝑑 𝑝 ≡ 𝛼 𝑚𝑜𝑑 𝑝 . Pošto se parametar javnog ključa 𝛽 računa po formuli 𝛽 ≡ 𝛼 𝑚𝑜𝑑 𝑝, možemo napisati: ∝ 𝑚𝑜𝑑 𝑝 ≡ 𝛼 𝛽 𝑚𝑜𝑑 𝑝 . Sada obije strane jednačine redukujemo po modulu 𝑞: (∝ 𝑚𝑜𝑑 𝑝) 𝑚𝑜𝑑 𝑞 ≡ (𝛼 𝛽 𝑚𝑜𝑑 𝑝) 𝑚𝑜𝑑 𝑞 . Pošto smo 𝑟 konstruisali kao 𝑟 ≡ (𝛼 𝑚𝑜𝑑 𝑝) 𝑚𝑜𝑑 𝑞 i 𝑣 ≡ (∝ ∙ 𝛽 𝑚𝑜𝑑 𝑝) 𝑚𝑜𝑑 𝑞, ovaj izraz je identičan uslovu koji koristimo da verifikujemo potpis kao validan: 𝑟 ≡ 𝑣 𝑚𝑜𝑑 𝑞 . Slijedi primjer, koji služi samo za ilustraciju. Primjer. Bob želi poslati Alisi poruku 𝑥 koju potpisuje DSA algoritmom. Neka je heš vrijednost poruke 𝑥: ℎ(𝑥) = 26. Dalje proces potpisivanja i verifikacije funkcioniše po sljedećem principu: 43 U prethodnom primjeru, podgrupa ima red koji je prost broj 𝑞 = 29, dok „velika“ ciklična grupa modulo 𝑝 ima 58 elemenata. Primjetimo da je 58 = 2 ∙ 29 . Zamjenili smo funkciju 𝑆𝐻𝐴(𝑥) funkcijom ℎ(𝑥), jer je izlaz heš funkcije 𝑆𝐻𝐴 ima dužinu 160 bita. 6.2. Računarski aspekat Sada ćemo govoriti o složenosti DSA šeme digitalnog potpisa. Najzahtjevniji dio je faza generisanja ključa. Međutim, ova faza se izvršava samo prilikom podešavanja sistema. Generisanje ključa Osnovni zadatak u fazi generisanja ključa je naći cikličnu grupu 𝑍 ∗ , gdje 𝑝 ima bitsku dužinu 1024, i koja ima prostu podgrupu veličine 2 . Ovaj uslov ispunjen je ako 𝑝 − 1 ima prosti faktor 𝑞 dužine 160 bita. Opšti pristup generisanja parametara koji ispunjavaju date uslove je da prvo pronađemo prosti broj 𝑞 dužine 160 bita, a zatim da konstruišemo veći prosti broj 𝑝 koji zadovoljava zadate uslove. Ispod je dat primjer algoritma koji funkcioniše na takav način. Generisanje prostih brojeva za DSA Izlaz: prosti brojevi 𝑝 𝑖 𝑞 za koje važi 2 <𝑝<2 i 2 < 𝑞 < 2 , tako da je 𝑝 − 1 umnožak od 𝑞. Inicijalizacija: 𝑖 = 1 Algoritam: 1. Pronađi prost broj 𝑞 koristeći Miller-Rabin algoritam tako da važi 2 <𝑞<2 2. For 𝑖 = 1 𝑡𝑜 4096 2.1. Generiši slučajan cijeli broj 𝑀 za koji važi 2 <𝑀<2 2.2. 𝑀 ≡ 𝑀 𝑚𝑜𝑑 2𝑞 2.3. 𝑝 − 1 ≡ 𝑀 − 𝑀 (primjetimo da je 𝑝 − 1 umnožak broja 2𝑞) IF 𝑝 prost (koristi Miller-Rabinov test primalnosti) 2.4. RETURN (𝑝, 𝑞) 2.5. i = i + 1 3. GOTO korak 1 Izbor vrijednosti 2𝑞 kao modul u koraku 2.3 osigurava da su kandidati koji su generisani u koraku 2.3 neparni brojevi. Pošto je 𝑝 − 1 djeljivo sa 2𝑞, to znači da je istovremeno djeljivo i sa 𝑞. Ako je 𝑝 prost broj, onda 𝑍 ∗ ima podgrupu reda 𝑞. Potpisivanje Prilkom potpisivanja računaju se parametri 𝑟 𝑖 𝑠. Prilikom računanja 𝑟 potrebno je prvo izračunati 𝛼 𝑚𝑜𝑑 𝑝 korišćenjem algoritma brzog stepenovanja. Pošto 𝑘 ima samo 160 bita, potrebno je u prosjeku oko 1.5×160 = 240 stepenovanja i množenja, iako se aritmetika vrši nad 1024 – bitnim brojevima. Rezultat, koji je takođe dužine 1024 bita, se zatim smanjuje na 160 bita pomoću operacije 44 „𝑚𝑜𝑑 𝑞“. Računanje vrijednosti 𝑠 uključuje samo brojeve koji su veličine 160 bita. Najskuplji korak je traženje inverza od 𝑘 . Od svih operacija koje je potrebno izvršiti, stepenovanje je najskuplje u smislu računske složenosti. Pošto parametar 𝑟 ne zavisi od poruke, on se može izračunati u fazi preprocesiranja, tako da potpisivanje postaje prilično brza operacija. Verifikacija Računanje pomoćnih parametara 𝑤, 𝑢 i 𝑢 uključuje samo operande od 160-bita, što čini ove operacije veoma brzim. 6.3. Sigurnost Interesantan aspekat DSA algoritma je da ga moramo zaštititi od dvije različite vrste napada na diskretni logaritam. Ako napadač želi razbiti DSA, mogao bi pokušati da izračuna privatni ključ 𝑑 rješavanjem problema diskretnog logaritma u velikoj cikličnoj grupi po modulu 𝑝: 𝑑 = log ∝ 𝛽 𝑚𝑜𝑑 𝑝 . Najmoćniji metod ovog napada je napad računanjem indeksa [1]. U cilju sprečavanja ovakve vrste napada 𝑝 mora biti dugačak najmanje 1024 bita. Procjenjeno je da dužina parametra 𝑝 od 1024 bita pruža nivo sigurnosti 2 80 bita, odnosno, napad bi u najboljem slučaju imao 2 operacija. Za veći nivo sigurnosti, NIST preporučuje i proste brojeve dužine 2048 i 3072 bita. Drugi napad na diskretni logaritam DSA algoritma je taj da napadač iskoristi činjenicu da α generiše samo malu podgrupu reda 𝑞. Dakle, čini se obećavajućim napasti samo podgrupu, koja je veličine oko 2 elemenata, prije nego veliku cikličnu grupu koju generiše 𝑝 i koja sadrži oko 2 elemenata. Međutim, ispostavlja se da moćni napad računanja indeksa nije primjenljiv ukoliko Oskar želi da iskoristi osobine podgrupe. Najbolje što može da uradi je da izvede jedan od generičkih napada na problem diskretnog logaritma, npr. Šanksov baby step giant step metod, ili Polardov ro metod [1]. To su takozvani napadi koji imaju složenost kvadratnog korijena, i s obzirom da podgrupa ima red približno 2 , ovi napadi obezbjeđuju nivo sigurnosti √2 = 2 . Nije slučajno da napadi pomoću računanja indeksa i generički napadi imaju sličnu složenost, jer su veličine parametara namjerno izabrane na taj način. Ako veličinu 𝑝 povećamo na 2048 ili 3072 bita, to samo povećava problem napada pomoću računanja indeksa, ali napad na malu podgrupu će i dalje imati složenost 2 ako podgrupa ostane iste veličine. Iz ovog razloga, ako povećamo veličinu 𝑝 takođe se mora povećati i veličina 𝑞. Tabela 2 daje dužine brojeva 𝑝 i 𝑞, kao i nivoe sigurnosti koje je propisao NIST. Nivo sigurnosti heš funkcije takođe mora da odgovara problemu diskretnog logaritma. Pošto kriptografska snaga heš funkcije uglavnom zavisi od dužine izlaza iz heš funkcije, minimalne vrijednosti izlaza heš funkcije takođe su dati u tabeli 2. 2 Algoritam ima „nivo sigurnosti od 𝑛 bita“ ako najbolji poznati napad na taj algoritam ima složenost 2 . 45 p 1024 2048 3072 q 160 224 256 Heš izlaz(min) 160 224 256 Nivo sigurnosti 80 112 128 Tabela 2. Standardizovane vrijednosti bitske dužine parametara i nivoi sigurnosti za DSA Treba istaći da je rekord za proračune diskretnog logaritma 532 bita, tako da je 1024-bitna varijanta DSA trenutno sigurna, a varijante sa 2048 i 3072 bita bi trebale biti dugoročno bezbjedne. Pored napada na diskretni logaritam, DSA postaje ranjiv ukoliko se isti efemeralni ključ koristi više puta. Ovaj napad je potpuno analogan napadu na Elgamal digitalni potpis. Dakle, moramo biti sigurni da su efemeralni ključevi 𝑘 odabrani potpuno nasumično za svaku operaciju potpisivanja. 46 7. Algoritam digitalnog potpisa zasnovan na eliptičnim krivim (ECDSA) Korišćenje eliptičnih krivih ima određenih prednosti u poređenju sa RSA i šemama koje se zasnivaju na problemu diskretnog logaritma, kao što su Elgamal i DSA. Konkretno, na kriptosisteme koji su zasnovani na eliptičnim krivim nema jakih napada, pa možemo odabrati bitsku dužinu parametara u opsegu od 160-256 bita da bi imali isti nivo sigurnosti kao i RSA šema i šeme koje su zasnovane na problemu diskretnog logaritma, a čije su dužine 1024-3072 bita. Zbog manje bitske dužine, kriptosistemi koji su zasnovani na eliptičnim krivim imaju kraće vrijeme procesiranja i kraće potpise. Iz ovih razloga, Algoritam digitalnog potpisa zasnovan na eliptičnim krivim (ECDSA) standardizovan je 1998. godine od strane Američkog nacionalnog instituta za standardizaciju (ANSI). 7.1. Šema ECDSA algoritma Koraci ECDSA standarda su konceptualno veoma slični DSA šemi. Ipak, ovdje je problem diskretnog logaritma konstruisan u grupi koju pravi eliptična kriva. Zbog toga, aritmetika koja se vrši da bi se izračunao ECDSA potpis potpuno je drugačija od one koja se koristi za DSA. ECDSA standard je definisan nad poljem 𝑍 i Galoovim poljem – GF(2 ). Generisanje ključeva Ključevi ECDSA algoritma se izračunavaju na sljedeći način: Generisanje ključeva za ECDSA 1. Koristimo eliptičnu krivu 𝐸: 𝑦 ≡ 𝑥 + 𝑎𝑥 + 𝑏 𝑚𝑜𝑑 𝑝 sa: Modulom 𝑝 Koeficijentima 𝑎 𝑖 𝑏 Tačkom 𝐴 koja generiše cikličnu grupu čiji je red prost broj 𝑞 2. Izaberi slučajni cijeli broj 𝑑 za koji važi 0 < 𝑑 < 𝑞. 3. Izračunaj 𝐵 = 𝑑𝐴 . Ključevi su: 𝑘 = (𝑝, 𝑎, 𝑏, 𝑞, 𝐴, 𝐵) 𝑘 = (𝑑) Treba imati na umu da smo postavili problem diskretnog logaritma gdje je cijeli broj 𝑑 privatni ključ, a rezultat skalarnog množenja, tačka 𝐵, je javni ključ. Slično kao i kod DSA, ciklična grupa reda 𝑞 trebala bi imati veličinu 160 bita ili više, ukoliko želimo veći nivo sigurnosti. 47 Potpis i verifikacija Kao kod DSA, i ECDSA potpis se sastoji od para cijelih brojeva (𝑟, 𝑠). Svaka od ovih vrijednosti ima istu bitsku dužinu kao 𝑞, što nam daje prilično kompaktan potpis. Korišćenjem javnog i privatnog ključa potpis za poruku 𝑥 se računa na sljedeći način: Generisanje ECDSA potpisa 1. 2. 3. 4. Izaberi slučajan efemeralni ključ 𝑘 za koji važi 0 < 𝑘𝐸 < 𝑞. Izračunaj 𝑅 = 𝑘𝐸 𝐴. Neka je 𝑟 = 𝑥 Izračunaj 𝑠 ≡ (ℎ(𝑥) + 𝑑 ∙ 𝑟)𝑘 𝑚𝑜𝑑 𝑞 . U koraku 3 𝑥-koordinata tačke R dodjeljuje se promjenljivoj 𝑟. Poruka 𝑥 se mora heširati korišćenjem funkcije ℎ u cilju računanja vrijednosti 𝑠. Izlaz iz heš funkcije mora biti najmanje iste dužine kao i vrijednost 𝑞. Proces verifikacije funkcioniše po sljedećem principu: Verifikacija ECDSA potpisa 1. 2. 3. 4. 5. Izračunaj pomoćnu vrijednost 𝑤 ≡ 𝑠 𝑚𝑜𝑑 𝑞. Izračunaj pomoćnu vrijednost 𝑢 ≡ 𝑤 ∙ ℎ(𝑥) 𝑚𝑜𝑑 𝑞. Izračunaj pomoćnu vrijednost 𝑢 ≡ 𝑤 ∙ 𝑟 𝑚𝑜𝑑 𝑞. Izračunaj 𝑃 = 𝑢 𝐴 + 𝑢 𝐵 . Verifikacija 𝑣𝑒𝑟 (𝑥, (𝑟, 𝑠)) slijedi iz: 𝑥 ≡ 𝑟 𝑚𝑜𝑑 𝑞 → 𝑣𝑎𝑙𝑖𝑑𝑎𝑛 𝑝𝑜𝑡𝑝𝑖𝑠 ≢ 𝑟 𝑚𝑜𝑑 𝑞 → 𝑛𝑒𝑣𝑎𝑙𝑖𝑑𝑎𝑛 𝑝𝑜𝑡𝑝𝑖𝑠 U posljednjem koraku, oznaka 𝑥 označava 𝑥-koordinatu tačke P. Onaj koji vrši verifikaciju potpis (𝑟, 𝑠) prihvata kao validan samo ako 𝑥 ima istu vrijednost kao i parametar 𝑟 po modulu 𝑞. U suprotnom, potpis se smatra nevalidnim. Dokaz. Pokazaćemo da potpis (𝑟, 𝑠) zadovoljava uslov 𝑟 ≡ 𝑥 𝑚𝑜𝑑 𝑞 koji se ispituje u postupku verifikacije. Počećemo sa parametrom potpisa 𝑠: 𝑠 ≡ (ℎ(𝑥) + 𝑑 ∙ 𝑟)𝑘 𝑚𝑜𝑑 𝑞 Što je ekvivalentno sa: 48 𝑘 ≡𝑠 ℎ(𝑥) + 𝑑𝑠 𝑟 𝑚𝑜𝑑 𝑞 . Desna strana se može zapisati korišćenjem pomoćnih vrijednosti 𝑢 i 𝑢 : 𝑘 ≡ 𝑢 + 𝑑𝑢 𝑚𝑜𝑑 𝑞 . Pošto tačka 𝐴 generiše cikličnu grupu reda 𝑞, možemo obije strane prethodne jednačine pomnožiti sa 𝐴: 𝑘 𝐴 = (𝑢 + 𝑑𝑢 )𝐴. Pošto je operacija u grupi asocijativna, možemo napisati: 𝑘 𝐴 = 𝑢 𝐴 + 𝑑𝑢 𝐴 i 𝑘 𝐴=𝑢 𝐴+𝑢 𝐵. Do sada smo pokazali da je izraz 𝑢 𝐴 + 𝑢 𝐵 jednak 𝑘 𝐴 ukoliko smo koristili ispravan potpis i ključ (i naravno poruku). Dobijamo da je upravo ovo uslov koji provjeravamo u procesu verifikacije poređenjem 𝑥-koordinate tačke 𝑃 = 𝑢 𝐴 + 𝑢 𝐵 i 𝑅 = 𝑘 𝐴. Primjer. Bob želi poslati Alisi poruku 𝑥 koju potpisuje ECDSA algoritmom. Proces potpisivanja i verifikacije funkcioniše na sljedeći način: Važno je napomenuti da smo odabrali eliptičnu krivu 49 𝐸: 𝑦 ≡ 𝑥 + 2𝑥 + 2 𝑚𝑜𝑑 17. Pošto sve tačke ove krive formiraju cikličnu grupu reda 19, odnosno, ne postoje podgrupe, pa samim tim u ovom slučaju važi : 𝑞 = |𝐸| = 19. 7.2. Računarski aspekat Sada ćemo govoriti o računskim operacijama koji su sastavni dio osnovne tri faze ECDSA algoritma. Generisanje ključeva Odabir eliptične krive sa dobrim kriptografskim osobinama nije ni malo lak zadatak. Upravo iz tog razloga, u praksi se najčešće koriste standardizovane krive koje su predložene od strane NIST-a i Brainpool konzorcijuma. Ostala izračunavanja u ovoj fazi su množenje sa jednom tačkom, što se može obaviti primjenom algoritma dupliranja i sabiranja [1]. Potpisivanje U fazi potpisivanja prvo računamo tačku 𝑅, koja zahtjeva množenje sa jednom tačkom, iz čega odmah možemo izraziti 𝑟. Za parametar 𝑠 potrebno je naći inverz od efemeralnog ključa, što se računa korišćenjem proširenog Euklidovog algoritma. Ostale operacije se odnose na heširanje poruke i redukciju po modulu 𝑞. Množenje sa tačkom, što je u većini slučajeva operacija koja najviše košta, može se izračunati u fazi preprocesiranja ukoliko unaprijed izaberemo efemeralne ključeve, na primjer u vrijeme kada je procesor besposlen. Dakle, ukoliko koristimo izračunavanje unaprijed, potpisivanje postaje veoma brza operacija. Verifikacija Računanje pomoćnih vrijednosti 𝑤, 𝑢 i 𝑢 podrazumjeva korišćenje modularne aritmetike. Glavno opterećenje nastaje prilikom računanja izraza 𝑃 = 𝑢 𝐴 + 𝑢 𝐵. Ovo se može postići razbijanjem izraza na dva dijela i računanjem dva odvojena množenja tačkom, a zatim sabiranjem rezultata. Takođe, postoje i specijalizovane metode za stepenovanje (u ovom slučaju je množenje sa tačkom slično stepenovanju) koje su brže od dva individualna množenja sa tačkom. 7.3. Sigurnost Pod pretpostavkom da smo parametre koji su vezani za eliptičnu krivu pravilno odabrali, glavni analitički napad na ECDSA sastoji se od pokušaja da se riješi problem diskretnog logaritma nad eliptičnim krivim [7]. Ukoliko je napadač u stanju da riješi ovaj problem, on može izračunati privatni ključ 𝑑 i/ili efemeralni ključ. Međutim, najbolji poznati napad na kriptografiju eliptičnih krivih ima složenost proporcionalnu kvadratnom korjenu veličine grupe u kojoj je definisan problem diskretnog logaritma, tj. proporcionalno 𝑞. Bitske dužine parametara ECDSA algoritma i odgovarajući nivo sigurnosti dati su u tabeli 3. Podsjećamo da je prost broj 𝑝 obično samo neznatno veći od 𝑞, tako da se sva aritmetika vezana za ECDSA obavlja sa operandima koji otprilike imaju istu bitsku dužinu kao i 𝑞. 50 q 192 224 256 384 512 Heš izlaz(min) 192 224 256 384 512 Nivo sigurnosti 96 112 128 192 256 Tabela 3. Bitske dužine i nivoi sigurnosti ECDSA algoritma Nivo sigurnosti heš funkcije takođe mora odgovarati nivou sigurnosti problema diskretnog logaritma. Kriptografska snaga heš funkcije uglavnom zavisi od dužine izlaza iz heš funkcije. Nivoi sigurnosti 128, 192 i 256 su odabrani tako da odgovaraju nivoima sigurnosti koje nudi AES, sa svoje tri odgovarajuće dužine ključa. Suptilniji napadi na ECDSA su takođe mogući. U cilju sprečavanja određenih napada na početku verifikacije mora se provjeriti da li je 𝑟, 𝑠 ∈ {1, 2, … , 𝑞}. Takođe, slabost protokola, na primjer, da više puta koristimo isti efemeralni ključ takođe mora biti spriječena. 51 8. Zaključak Digitalizacija moderne kancelarije i sve češća upotreba Interneta u poslovnim primjenama dovodi do potrebe sigurnog i pouzdanog utvrđivanja autentičnosti dokumenata. Digitalni potpisi se zbog toga sve više, po učestalosti upotrebe i važnosti dokumenata koje potpisuju, približavaju klasičnim potpisima i samo je pitanje vremena kada će ih učiniti nepotrebnim. Sve češća upotreba digitalnih potpisa dovodi do veće učestalosti napada – pokušaja lažnog predstavljanja. Zbog toga je potrebno definisati politiku upravljanja digitalnim potpisima koja detaljno propisuje dozvoljene i sigurne načine korišćenja digitalnih potpisa, propisuje korišćenje infrastrukture digitalnih potpisa i korišćenje siguronosnih normi. Oko primjene digitalnog potpisa u praksi postoje još brojna otvorena pitanja. Na Internetu se može naći velik broj članaka i analiza o toj problematici, ali sve to može se podjeliti u dve osnovne grupe. Prvu grupu čine proizvođači rješenja za izvođenje sistema digitalnog potpisa, kao i sistema za poslovanje na Internetu koji pokušavaju istaknuti brojne prednosti uvođenja sistema digitalnog potpisa. S druge strane nalaze se brojni analitičari koji ne osporavaju način izvođenja i opravdanost sistema, koliko upozoravaju na nedovoljnu provjerenost i kvalitet tehnoloških rješenja koja bi se konkretno trebala primjenjivati u praksi, prije svega u smislu sigurnosti i pouzdanosti. Vjerovatno takav stav proizlazi i iz činjenice da zakonska regulativa ne propisuje koja tehnološka rješenja valja primjenjivati, odnosno barem koje standarde ona moraju zadovoljavati. Budućnost digitalnog potpisa je u svakom slučaju svijetla. Koja god tehnologija ili algoritam bili korišteni, teško je već danas zamisliti svijet računarskih mreža bez odgovarajućih algoritama autentifikacije. Uprkos tome što je digitalni potpis dio svijeta računara koji se vrlo brzo mijenja i prihvata novitete, pri oslanjanju na jedan od algoritama za digitalni potpis važno je razmišljati ne samo o današnjoj moći računara, već i o nadolazećim računarima koji će eventualno biti dovoljno snažni za krivotvorenje potpisa pukom silom (engl. „brute force attack“). Druga, uvijek prisutna neugodna mogućnost je da već danas postoji način „razbijanja“ kripto zaštite (isto tako i digitalnih potpisa) pomoću nekih brzih metoda faktorizovanja (velikih) brojeva, koje bi tad ugrozile ne samo kripto zaštitu algoritama poput danas najrasprostranjenijeg RSA, već bi vrlo lako osporile i digitalne potpise (načinjene s RSA ili sličnim algoritmom). Ipak, dok se to ne dogodi (ako se ikad dogodi), ostaje nam da vjerujemo saznanjima današnje matematike koja kaže da je digitalni potpis praktično neprobojan ne samo danas, već i za decenije koji dolaze. 52 Literatura [1] Christof Paar, Jan Pelzl. Understanding Cryptography: A Textbook for Students and Practitioners. Springer-Verlag Berlin Heidelberg 2010. [2] Jeffrey Hoffstein, Jill Pipher, Joseph H. Silverman. An Introduction to Mathematical Cryptography. Springer Science+Business Media, LLC, 2008. [3] Wenbo Mao. Modern Cryptography: Theory and Practice. Prentice Hall PTR, 2003. [4] Mihir Bellare, Phillip Rogaway. PSS: Provably Secure Encoding Method for Digital Signatures. IEEE, Avgust 1998. [5] I. Blake, G. Seroussi, N. Smart, and J. W. S. Cassels. Advances in Elliptic Curve Cryptography (London Mathematical Society Lecture Note Series). Cambridge University Press, New York, NY, USA, 2005. [6] T. ElGamal. A public-key cryptosystem and a signature scheme based on discrete logarithms. IEEE Transactions on Information Theory, 1985. [7] D. R. Hankerson, A. J. Menezes, and S. A. Vanstone. Guide to Elliptic Curve Cryptography. Springer, 2004. [8] R. L. Rivest, A. Shamir, and L. Adleman. A method for obtaining digital signatures and public-key cryptosystems. Communications of the ACM, 1978. 53
© Copyright 2024 Paperzz