Onko kukaan koettanut toteuttaa ECDSA-menetelmän mukaisen digitaalisen allekirjoituksen PHP:llä? Löytyykö valmista PHP-koodia? Mielessä on lähinnä "alkulukukenttä" mutta voi harkita myös "binääristä" toteutusta.
Lähinnä kiinnostaisi tehokas "point multiplication" ja modulaarisen inverssin laskenta. Ja tämä siis pitäisi toimia palvelimella ilman häiritsevän suurta viivettä noin 200-300 bittisenä.
Idea sellainen että nettisaitissa tarkistetaan käyttäjän sisäänkirjautuessa julkista avainta käyttäen lisenssitiedosto jossa on salaisella avaimella tehty digitaalinen allekirjoitus. Jos tiedosto puuttuu tai digitaalinen allekirjoitus ei täsmää selkokielisten tietojen kanssa, niin sitten softan lisenssi ei ole kondiksessa.
ECDSA valittu koska se on moderni ja allekirjoitus menee pienempään tilaan kuin RSA:lla. ECDSA-menetelmän teoreettiset perusteet alkavat olla perustasolla hanskassa, mutta toteutuksen käytännön toimintanopeus on vielä mysteeri.
Turvatasoa voidaan laskea eli bittimäärää pudottaa turvallisena pidetystä pakon edessä, hitauden vähentämiseksi. Jos koodi on asiakkaan koneella niin pääseehän ne sen kuitenkin ohittamaan kommentoimalla koko tarkistuksen pois koodista. Jos on omalla palvelimella niin sinne ei vieras helpolla pääse sisältöä tutkimaan. Mutta hienoa toki olisi jos saisi toimimaan esim. normaalina 256-bittisenä riittävän nopeasti. Eihän sen salamannopea tarvitse olla koska sisäänkirjautuminen kuitenkin kestää jonkin verran.
Elliptisten käyrien DSA eli ECDSA
4
366
Vastaukset
- algebrikko
Eikös ole helpointa implementoida algoritmit ja kokeilla niiden nopeutta? En tunne kovinkaan paljoa kryptografiaa, mutta modulaariset inverssit saa laskettua kätevästi laajennetin Eukleideen algoritmin avulla. Point multiplication ei ole kauhean tuttua minulle, mutta voit kokeilla, josko Montgomeryn algoritmi olisi tarpeeksi nopea. Jos kerran teoreettiset perusteet on hallussa, niin ei kai sen aikavaativuuden laskeminen niin työlästä ole. Itse en ECDSA:ta tunne.
- ec-spekulantti
Olen tehnyt yksinkertaisen ECDSA-kokeilukoodin NIST:in 192-bittisellä käyrällä P-192. Turvataso on vain puolet tästä bittimäärästä, eli ei ehkä ihan murtovarma enää nykyisin, mutta minulle tässä vaiheessa riittävä.
Siinä myös pisteen laskenta on melkoisen yksinkertainen, mutta ei se silti kauhea tehosyöppö ole. Pariksi sekunniksi CPU Usage lyö tappiin eli sataan prossaan kun sen ajaa omalla koneella.
Fiksummalla laskennalla sitä pystyy vielä oleellisesti keventämään, melko helpostikin. ECDSA:ssa generaattoripiste on vakio sen jälkeen kun käyrä on valittu, joten kaikki tarvittavat tuplapisteet ovat myös vakioita, joten pisteen tuplaukset pystyy laskemaan etukäteen. Tällöin "kalliita" pisteen tuplauksia (point doubling) ei tarvitse laskea digitaalista allekirjoitusta verifioitaessa, vaan voi käyttää etukäteen laskettuja arvoja.
Kaikkiaan luulenpa että tästä tulee vielä soiva peli.
Jos joku on ECC-menetelmistä kiinnostunut niin netistä löytää hyvän johdatuksen EC:n perusteisiin googlettamalla "certicom ecc tutorial". Certicom:in sivulla on myös Java-appletteja joilla voi kokeilla pienillä esimerkeillä. Sivusto näyttää ensin pieneltä, mutta siinä on "potkua" yllättävän paljon, joten kannattaa perehtyä huolella. Tämä siis havainnollista periaatteita hyvin pienillä esimerkeillä, jotka eivät ole sellaisenaan kryptografiassa käyttökelpoisia.
Hyvä kompakti, nykyaikainen kirja ECC:n käytännön toteutuksen yksityiskohtiin on "Guide to Elliptic Curve Cryptography", Hankerson-Menezes-Vanstone. Errata-sivut löytyvät netistä.
Enkku-Wikipedian kryptografiaa koskevat artikkelit kuten
http://en.wikipedia.org/wiki/Elliptic_curve_cryptography
ovat myös hyviä. Tuossa artikkelissa on myös linkit suositeltuihin elliptisiin käyriin jos ei halua generoida omia elliptisiä käyriä.
Esim. "NIST, Recommended Elliptic Curves for Government Use" - ec-spekulantti
ec-spekulantti kirjoitti:
Olen tehnyt yksinkertaisen ECDSA-kokeilukoodin NIST:in 192-bittisellä käyrällä P-192. Turvataso on vain puolet tästä bittimäärästä, eli ei ehkä ihan murtovarma enää nykyisin, mutta minulle tässä vaiheessa riittävä.
Siinä myös pisteen laskenta on melkoisen yksinkertainen, mutta ei se silti kauhea tehosyöppö ole. Pariksi sekunniksi CPU Usage lyö tappiin eli sataan prossaan kun sen ajaa omalla koneella.
Fiksummalla laskennalla sitä pystyy vielä oleellisesti keventämään, melko helpostikin. ECDSA:ssa generaattoripiste on vakio sen jälkeen kun käyrä on valittu, joten kaikki tarvittavat tuplapisteet ovat myös vakioita, joten pisteen tuplaukset pystyy laskemaan etukäteen. Tällöin "kalliita" pisteen tuplauksia (point doubling) ei tarvitse laskea digitaalista allekirjoitusta verifioitaessa, vaan voi käyttää etukäteen laskettuja arvoja.
Kaikkiaan luulenpa että tästä tulee vielä soiva peli.
Jos joku on ECC-menetelmistä kiinnostunut niin netistä löytää hyvän johdatuksen EC:n perusteisiin googlettamalla "certicom ecc tutorial". Certicom:in sivulla on myös Java-appletteja joilla voi kokeilla pienillä esimerkeillä. Sivusto näyttää ensin pieneltä, mutta siinä on "potkua" yllättävän paljon, joten kannattaa perehtyä huolella. Tämä siis havainnollista periaatteita hyvin pienillä esimerkeillä, jotka eivät ole sellaisenaan kryptografiassa käyttökelpoisia.
Hyvä kompakti, nykyaikainen kirja ECC:n käytännön toteutuksen yksityiskohtiin on "Guide to Elliptic Curve Cryptography", Hankerson-Menezes-Vanstone. Errata-sivut löytyvät netistä.
Enkku-Wikipedian kryptografiaa koskevat artikkelit kuten
http://en.wikipedia.org/wiki/Elliptic_curve_cryptography
ovat myös hyviä. Tuossa artikkelissa on myös linkit suositeltuihin elliptisiin käyriin jos ei halua generoida omia elliptisiä käyriä.
Esim. "NIST, Recommended Elliptic Curves for Government Use"Tarvittavan suurten kokonaislukujen aritmetiikan toteutin ihan vaan PHP:ssä nykyisin vakiona tulevilla BC Math -funktioilla.
http://fi2.php.net/manual/en/ref.bc.php
Ei varmaan mikään maailman tehokkain ratkaisu, mutta mielestäni tässä vaiheessa riittävä. GMP voisi olla parempi, mutta vaatisi lisäosan PHP:hen.
http://fi2.php.net/manual/en/book.gmp.php
Tarvittavat erikoisfunktiot pystyy tekemään itsekin. - ec-spekulantti
ec-spekulantti kirjoitti:
Olen tehnyt yksinkertaisen ECDSA-kokeilukoodin NIST:in 192-bittisellä käyrällä P-192. Turvataso on vain puolet tästä bittimäärästä, eli ei ehkä ihan murtovarma enää nykyisin, mutta minulle tässä vaiheessa riittävä.
Siinä myös pisteen laskenta on melkoisen yksinkertainen, mutta ei se silti kauhea tehosyöppö ole. Pariksi sekunniksi CPU Usage lyö tappiin eli sataan prossaan kun sen ajaa omalla koneella.
Fiksummalla laskennalla sitä pystyy vielä oleellisesti keventämään, melko helpostikin. ECDSA:ssa generaattoripiste on vakio sen jälkeen kun käyrä on valittu, joten kaikki tarvittavat tuplapisteet ovat myös vakioita, joten pisteen tuplaukset pystyy laskemaan etukäteen. Tällöin "kalliita" pisteen tuplauksia (point doubling) ei tarvitse laskea digitaalista allekirjoitusta verifioitaessa, vaan voi käyttää etukäteen laskettuja arvoja.
Kaikkiaan luulenpa että tästä tulee vielä soiva peli.
Jos joku on ECC-menetelmistä kiinnostunut niin netistä löytää hyvän johdatuksen EC:n perusteisiin googlettamalla "certicom ecc tutorial". Certicom:in sivulla on myös Java-appletteja joilla voi kokeilla pienillä esimerkeillä. Sivusto näyttää ensin pieneltä, mutta siinä on "potkua" yllättävän paljon, joten kannattaa perehtyä huolella. Tämä siis havainnollista periaatteita hyvin pienillä esimerkeillä, jotka eivät ole sellaisenaan kryptografiassa käyttökelpoisia.
Hyvä kompakti, nykyaikainen kirja ECC:n käytännön toteutuksen yksityiskohtiin on "Guide to Elliptic Curve Cryptography", Hankerson-Menezes-Vanstone. Errata-sivut löytyvät netistä.
Enkku-Wikipedian kryptografiaa koskevat artikkelit kuten
http://en.wikipedia.org/wiki/Elliptic_curve_cryptography
ovat myös hyviä. Tuossa artikkelissa on myös linkit suositeltuihin elliptisiin käyriin jos ei halua generoida omia elliptisiä käyriä.
Esim. "NIST, Recommended Elliptic Curves for Government Use"Melko paljon tilaa koodissa tosin vievät esilasketut tuplatut pisteet, koska niitä täytyy olla sama määrä kuin kertojassa on bittejä. Tässä P-192 esimerkissä täytynee laskea valmiiksi 191 tai 192 tuplattua pistettä joista jokaisen koordinaatit voivat olla pari 10-järjestelmässä noin 58-numeroa pitkiä kokonaislukuja. Pisteiden X- ja Y-koordinaatit sisältävästä 2-ulotteisesta taulukosta tulee siis kohtalaisen iso. Tässäpä on puuhaa hetkeksi aikaa :-)
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Olen päivä päivältä vain varmempi siitä että rakastan sinua
Onhan se tällä tuntemisen asteella jokseenkin outoa, mutta olen outo ja tunne on tunne. 😊921413Verovähennysten poisto syö veronkevennykset pieni- ja keskituloisilta
Kokoomuslaiset ja perussuomalaiset kansanedustajat jakavat kilvan postauksia, jossa kerrotaan miten kaikkien työssäkäyvi1841380Hei rakas mies. Olisi yksi kysymys, mielellään rehellinen vastaus edes täällä..
Mitä sinä minusta haluat?761165- 891106
- 82971
- 81965
- 39942
Kelloniemeltä harvinaisen lapsellista käytöstä valtuustossa
Olipa harvinaisen ala-arvoinen esitys kelloniemeltä valtuustossa. Alkoi Nivalaa oikein matkimalla matkimaan siteeratessa66885Satonen Kelaan, on paras mies ?
Kukaan ei ole tehnyt enemmän Kelalle asiakkaita kuin Satonen kokoomuksineen, näin ollen täyttänee paikan edellytykset v61845Korjaamo Kiesifix
Hei. Kävin viime viikolla tuolla korjaamolla, siistiä oli mutta yksi asia jäi mieleen!Joitakin jätkiä istui ja katseli/5841