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
478
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
On tiedossa, että venäjämieliset diggaavat diktatuurista venäjää
jossa ei esim. ole sanan- ja lehdistönvapautta. Mutta keitä nämä venäjän palvojat sitten ovat, ei heitä toki paljon ole192136Vihreiden, SDP:n ja Vasemmistoliiton kannattajista selvästi alle puolet on miehiä
ja silti joku punafeministi valitti kokoomuksen naiskannattajien puutteesta, vaikka siellä on enemmän naisia kuin punavi352016Belfastissa käynnissä kunnon persuilu
Joku random mamu tekee rikoksen, niin sikäläiset naamiopersut kostavat tuhoamalla kantaävestön omaisuutta. Liekö siellä161899Persujen kannatusromahdus tekee kesästä 2026 nautinnollisen
Satoi tai paistoi, niin Suomen kansalaisella on kuluvana kesänä syytä hymyyn. Niin upealta tuntuu persujen kannatusroma461347- 731277
Onko kaivattusi rohkeampi kuin sinä?
Vai oletko sinä rohkeampia? Mikä on rohkea teko, minkä sinä tai kaivattusi on tehnyt? Mitä siitä seurasi?46853Kaunein nimi
Mikä on mielestäsi kaunein miehen ja naisen nimi? Haluaisitko itse olla joku toisen niminen?51721Farmi-Amski ja Jucci Hellström - Sydämiä satelee - Onko tässä jotain enemmän?
Amskidamski Anne-Mari Tarkkio ja Jucci Hellström olivat samaan aikaan Farmi Suomi -realityssä. Nyt somessa on nähty mat8711- 49661
Rakastan sinua hiljaisuudessa
Rakastan sinua hiljaisuudessa. Olisit minun tai et, olen odottanut sinua vuosisatojen ajan. Ilman sinua sydämeni on yksi32658