Salaustekniikassa Full Domain Hash ( FDH tai Full Domain Hash ) on RSA - pohjainen allekirjoitusjärjestelmä, joka noudattaa hajautus- ja allekirjoitusparadigmaa . Satunnaisessa oraakkelimallissa se on todistetusti turvallinen (eli siihen ei vaikuta mukautuvat valitun viestin hyökkäykset) . FDH sisältää viestin hajauttamisen funktiolla, jonka kuvan koko on RSA -moduulin koko, ja sitten tuloksen nostamisen salaisen RSA - eksponenttipotenssiin .
Siitä lähtien, kun Whitfield Diffie ja Martin Hellman löysivät julkisen avaimen kryptografian [ 1 ] , yksi tärkeimmistä tutkimusaiheista on ollut käytännöllisten ja todistetusti (käytännön ymmärtämisessä) turvallisten salausjärjestelmien kehittäminen. Käytännön turvallisuuden todisteena on yleensä laskennallinen monimutkaisuus tunnetun ongelman ratkaisemisesta kryptojärjestelmän rikkomiseen. Tunnettuja ongelmia ovat suurten kokonaislukujen laskenta, diskreetin logaritmin laskenta modulo alkuluvuksi p tai juurimodulo yhdistelmäkokonaisluvun erottaminen, johon RSA - salausjärjestelmä [2] perustuu .
Hyvin yleinen käytäntö allekirjoittamiseen RSA :lla on ensin tiivistää viesti, lisätä viestiin suola ja sitten nostaa se julkisen avaimen voimaan. Tämä "hash and decrypt" -paradigma on perusta lukuisille standardeille, kuten PKCS # 1 v2.0 [3] . Kaava on ottaa hash-funktio, jonka tulosten koko on täsmälleen moduulin kokoinen: tämä on Full domain hashing -järjestelmä (FDH), jonka esittelivät Bellard [ ja Rogaway artikkelissa "Satunnaiset oraakkelit ovat käytännöllisiä: a paradigma tehokkaiden protokollien suunnitteluun" [4] . FDH-malli on todistetusti turvallinen satunnaisessa oraakkelimallissa olettaen, että RSA : ta on vaikea invertoida , ts. ottaa juuri modulo komposiittikokonaisluku. Bellard ja Rogaway esittelivät satunnaisen oraakkelin metodologian teoksessa "Satunnaiset oraakkelit ovat käytännöllisiä: paradigma tehokkaiden protokollien suunnitteluun" [4] , jossa ne osoittavat, kuinka kehittää erittäin turvallisia allekirjoitusjärjestelmiä mistä tahansa funktiosta, jolla on salainen syöte . Satunnaisessa oraakkelimallissa hash-funktiota käsitellään oraakkelina , joka tuottaa satunnaisen arvon jokaiselle uudelle pyynnölle. Alkuperäisessä paperissa satunnainen oraakkeli muuntaa kiinteäpituisen 0:n ja 1:n sekvenssin äärettömän pituiseksi sekvenssiksi ja valitsee satunnaisesti tarvittavan pituisen osajonon sekvenssistä . Bellardin ja Rogawayn keskeinen työ korostaa, että todistettavan turvallisuuden käytännön soveltamiseksi on tärkeää harkita "kovia" turvallisuuden vähennyksiä. Turvallisuuden heikkeneminen on "kovaa", kun mikä tahansa kryptanalyytikon toiminta allekirjoitusjärjestelmän rikkomiseksi johtaa siihen, että vakiintunut ongelma ratkaistaan riittävällä todennäköisyydellä, mieluiten todennäköisyydellä 1. Tässä tapauksessa allekirjoitusjärjestelmä on melkein yhtä turvallinen kuin vakiintunut ongelma. Sitä vastoin jos supistuminen on "heikko", eli edellä mainittu todennäköisyys on liian pieni, allekirjoitusmallin takuu voi olla melko heikko.
Koko verkkotunnuksen hash-allekirjoitusmalli (Gen, Sign, Verify) määritellään seuraavasti. Avainten luontialgoritmi suorittaa RSA:n saadakseen . Se tulostaa missä ja . Allekirjoitus- ja vahvistusalgoritmilla on pääsy oraakkeliin, jossa on hash-toiminto
Allekirjoitus ja vahvistus tehdään seuraavasti:
Lause 1 Oletetaan, että RSA on -secure (todennäköisyydellä ɛ′ kestää t′ aikaa rikkoutua) Silloin FDH-allekirjoituskaavio on -secure, missä
.Tämän tuloksen haittana on, että se voi olla paljon pienempi kuin . Jos esimerkiksi oletetaan, että kryptanalyytikko voi tiedustella allekirjoitusten määrää ja laskea hajautusarvoja viesteissä, vaikka RSA-inversion todennäköisyys on vain , niin saadaan vain, että todennäköisyys on melkein , mikä ei ole tyydyttävä. Hyväksyttävän turvallisuustason saavuttamiseksi meidän on käytettävä suurempaa moduulikokoa, mikä vaikuttaa positiivisesti piirin tehokkuuteen.
Saadakseen sopivimman suojausmarginaalin Bellar ja Rogaway kehittivät uuden järjestelmän, todennäköisyyspohjaisen allekirjoitusmallin , joka tarjoaa tiukan suojauksen vähentämisen: allekirjoituksen väärentämisen todennäköisyys on lähes yhtä pieni kuin inversiolla . Sen sijaan on olemassa vaihtoehtoinen lähestymistapa, jota voidaan soveltaa FDH-järjestelmään paremman rajauksen saamiseksi. [5]
Toinen pelkistys, joka antaa paremman turvallisuusarvion FDH:lle, perustuu lauseen todistukseen
Lause 2 Olkoon RSA turvallinen. Silloin FDH-allekirjoitusmalli on -secure, missä
.Suurille ,. _
Määritelmä 1Invertteriksi kutsutaan RSA:ta rikkovaa algoritmia, jonka onnistumisen todennäköisyys enintään t käsittelyajan jälkeen on vähintään ɛ.
Määritelmä 2Väärentäjä on algoritmi, joka rikkoo allekirjoitusmallia (Gen, Sign, Verify), jos se lähettää enintään tiivisteoraakkelille tehtyjen pyyntöjen, allekirjoitettujen pyyntöjen ja käsittelyajan jälkeen allekirjoituksen väärennöksen todennäköisyydellä vähintään ɛ .
Todiste
Olkoon väärentäjä , joka rikkoo FDH:n. Oletamme, että se ei koskaan toista samaa hash-oraakkelipyyntöä tai allekirjoituspyyntöä. RSA :ta rikkovan invertterin rakentaminen . Invertteri vastaanottaa syötteenä , jossa on julkinen avain, ja se valitaan satunnaisesti (kaikkien hajautusviestien osajoukosta). Taajuusmuuttaja yrittää etsiä , missä on RSA-funktio, joka on määritetty kohdasta . Invertteri käynnistyy tälle julkiselle avaimelle. Väärentäjä tekee hash-oraakkelipyyntöjä ja allekirjoituspyyntöjä. vastaanottaessaan vastauksen hash-oraakkelilta, se allekirjoittaa ne itsenäisesti.
Yksinkertaisuuden vuoksi oletetaan, että kun se pyytää allekirjoittamaan viestin , se on jo tehnyt vastaavan pyynnön hash-oraakkelille . Jos ei, jatkamme ja luomme itsenäisesti hash-oracle-pyynnön viestille . Invertteri käyttää laskuria , joka on alun perin asetettu nollaan. Kun hajautusoraakkelilta kysytään viestiä , invertteri kasvaa , sovittaa tiivistetyn viestin alkuperäiseen viestiin ja valitsee satunnaisluvun . sitten palauttaa todennäköisyydellä ja todennäköisyydellä . Tässä on kiinteä todennäköisyys, joka määritetään myöhemmin. Allekirjoituspyyntöä tehdessään se on jo pyytänyt tiivistettä , joten joillekin .If :lle se palaa allekirjoituksena. Muuten prosessi pysähtyy ja invertteri epäonnistuu.
Lopulta lopettaa työn ja näyttää väärennöksen . Oletamme, että tiivistettä pyydettiin aiemmin. Jos ei, se tekee pyynnön itse hash-oraakkelille, joten joka tapauksessa joillekin . Sitten, jos , saamme ja tulostaa käänteislukuna . Muuten prosessi pysähtyy ja invertteri epäonnistuu.
Todennäköisyys, että vastaamme kaikkiin allekirjoituspyyntöihin, on vähintään . Tulostaa sitten käänteisarvon todennäköisyydellä . Näin ollen ainakin todennäköisyydellä , päättelee päinvastaista varten . Toiminto on maksimi ja
Siten saamme:
.Isoille _
.
Ajoaika on käyntiaika, joka lisätään arvojen laskemiseen tarvittavaan aikaan . Se on pohjimmiltaan yksi RSA-laskenta, joka on kuutioaika (tai parempi). Tämä antaa kaavan .
Uuden vähennyksen laatu ei riipu väärentäjän tekemien hash-kutsujen määrästä, vaan riippuu vain allekirjoituspyyntöjen määrästä. Tällä on käytännön merkitystä, koska todellisissa sovelluksissa hash-funktiokutsujen määrää rajoittaa vain väärentäjän prosessointiteho, kun taas allekirjoituspyyntöjen määrää voidaan rajoittaa: allekirjoittaja voi kieltäytyä allekirjoittamasta enemmän kuin tai viestejä. Vähennys ei kuitenkaan ole vielä jäykkää, ja FDH:n tarkan turvallisuuden ja PSS :n tarkan turvallisuuden välillä on edelleen merkittävä ero .
Monissa satunnaisen oraakkelimallin turvatodistuksissa invertterin on "arvattava", mitä hash-kyselyä vastustaja käyttää väärentämiseen, mikä johtaa onnistumisen todennäköisyyteen. On todistettu, että paras tapa on sisällyttää kysely vastauksena moniin hash-kyselyihin, jotta huijauksesta on todennäköisemmin hyötyä invertterille. Tämä havainto pätee myös Rabinin allekirjoitusskeemaan [6] , Peyen allekirjoitusskeemaan [7] sekä Gennaro-Halevi-Rabinin allekirjoitusskeemaan [8] , jonka kerrointa satunnaisen oraakkelin turvatodistuksessa voidaan myös pienentää. . _