ECC vagy RSA?
Endrődi Csilla <endrodi@mit.bme.hu>
BME Méréstechnika és Információs Rendszerek Tanszék
Hornák Zoltán <hornak@mit.bme.hu>
BME Méréstechnika és Információs Rendszerek Tanszék
Dr. Selényi Endre <selenyi@mit.bme.hu>
BME Méréstechnika és Információs Rendszerek Tanszék
Összefoglaló
Jelen cikkben két rivális nyilvános kulcsú kriptográfiai rendszer, a nagy múltra visszatekintő és széles körben elterjedt RSA, valamint a viszonylag fiatalnak számító ECC hatékonyságvizsgálatának és összehasonlításának bemutatására kerül sor. Vizsgálódásunk során arra a kérdésre keressük a választ, hogy melyik kriptográfiai rendszer a jobb választás: az ECC vagy az RSA?
Az alapos elméleti és gyakorlati vizsgálódások eredménye az a végkövetkeztetés, hogy erre a kérdésre nem adható egyértelmű válasz. A két rendszer az egyes műveletek esetében eltérő hatékonysági paraméterekkel és különböző korlátokkal rendelkezik. A cikkben ezeket a jellemzőket kívánjuk bemutatni. Ezek ismeretében már egy adott alkalmazás esetében könnyebben hozható döntés. Ehhez kíván segítséget nyújtani az általunk összegyűjtött, az ECC és az RSA viselkedését összefoglaló gyűjtemény.
1. Bevezetés
Napjainkban az elektronikus ügyintézés egyre szélesebb körű elterjedésével elengedhetetlenül szükségessé vált egyes adatbiztonsági szolgáltatások pl. partner azonosítás, digitális aláírás, letagadhatatlanság stb. megvalósítása. Ezekhez a nyilvános kulcsú kriptográfia biztosítja az elméleti alapot. A nyilvános kulcsú kriptográfiában több különböző matematikai alapötlet is alkalmazhatónak bizonyult1, ezekre építve számos algoritmus- és protokollcsalád került kidolgozásra. A színes választék ellenére azonban jelenleg a gyakorlatban alkalmazott nyilvános kulcsú rendszerek döntő többsége az RSA algoritmust [1] használja.
Az RSA algoritmus jóságát támasztja alá, hogy negyed évszázada nem sikerült hatékony törési módszert találni ellene, mindazonáltal biztonsága matematikailag nem bizonyított. Többek között ezért is érdemes figyelmet szentelnünk a vetélytársaknak. A viszonylag fiatalnak számító, ECC (Elliptic Curve Cryptography) [2] [3] összefoglaló névvel illetett protokollcsalád szintén ígéretes gyakorlati alkalmazási lehetőségekkel kecsegtet. Az ECC egy rendkívül érdekes struktúra, az elliptikus görbék pontjain értelmezett csoport felett működik. Matematikai háttere sokkal bonyolultabb, mint pl. a modulo aritmetikát használó RSA-é, cserébe viszont az ellene használható törő algoritmusok is lassabban működnek. Ennek köszönhetően az ECC-nél egy adott biztonsági szint eléréséhez sokkal kisebb kulcsméretre van szükség, mint az RSA-nál, vagyis az egy kulcsbitre jutó biztonság értéke nagyobb.
A kis kulcsméret mellett azonban még számos szempont van, amely fontos lehet két kriptográfiai rendszer összehasonlításakor. Érdekes lehet például az algoritmusok használata során tapasztalható hatékonysági jellemzők és működési korlátok vizsgálata. A következőkben ezekkel foglalkozunk a fentebb már említett két kriptográfiai rendszer, a régóta és széles körben használt RSA, valamint a napjainkban előtérbe kerülő ECC esetében. Célunk e két rendszer hatékonyságvizsgálata és összehasonlítása, amelyet az elméleti háttéren alapuló következtetések mellett a gyakorlatban elvégzett mérések eredményeivel támasztunk alá.
2. Az elemzés bemutatása
A választott nyilvános kulcsú kriptográfiai rendszerek nem teljesen csereszabatosak, aminek alapvető oka, hogy hátterükben eltérő matematikai alapötletek állnak. Ugyanazokat a funkciókat valósítják meg, de a működésükhöz szükséges paraméterek (nyilvános-titkos kulcspár, közös paraméterek) nem kompatíbilisek egymással. Ennek ismeretében nem meglepő tény, hogy sok szempontból lényegesen különböző hatékonysági jellemzőkkel bírnak, valamint korlátaik is általában eltérőek. A paraméterek inkompatibilitása ezen kívül bonyolultabbá teszi az összehasonlításukat is ez a problémakör a későbbiekben részletezésre kerül.
2.1. A mérések bemutatása
Az egyes kriptográfiai algoritmusok alkalmazása során lényeges lehet a műveletek gyorsasága, a környezeti paraméterek és kulcsok kialakításának bonyolultsága, a tárolandó adatok mérete, az egyes protokollok során a szükséges üzenetváltások száma és az üzenetek mérete. Ezek minél pontosabb megismerése érdekében gyakorlati méréseket végeztünk a két választott kriptográfiai rendszerrel. A mért adatok az egyes kriptográfiai műveletek kódjának futási ideje, valamint a műveletek során létrejövő adatok: a közös paraméterek, a nyilvános és a titkos kulcs, a kódolt adat és az aláírás mérete voltak. A vizsgálódás során szerzett tapasztalatokból az egyes algoritmusok alkalmazási korlátait is sikerült behatárolni (pl. a kódolható maximális adatméret). A vizsgált kriptográfiai műveletek a kulcsgenerálás és közös paraméterek felállítása, a kódolás, a dekódolás, az aláírás és az aláírás ellenőrzés voltak.
Egy adott kriptográfiai művelet viselkedését számos paraméter befolyásolja, pl. az alkalmazott kulcs mérete és típusa, a bemeneti adat mérete és típusa, ECC-nél az alapul szolgáló csoport típusa és az előszámított táblák használata. A vizsgálódás során célunk volt annak feltérképezése is, hogy az adott műveletek mely bemeneti értéktől és milyen mértékben függnek. A fennálló összefüggések pontos megismerése érdekében a fenti paraméterektől való függést külön-külön vizsgáltuk. (Ekkor a többi paraméter értéke néhány jellemző kombinációban rögzített volt.)
A sokféle paraméter és ezek változatos, értelmes kombinációi révén a vizsgálandó esetek száma rendkívül naggyá nőtt. Ez az ECC esetében kb. 4000, az RSA esetében több, mint 2000 mérés elvégzését jelentette.
Terjedelmi okokból jelen cikkben nem kerül bemutatásra a mérések eredményeinek elemzéséből nyert tapasztalatok teljes skálája2, csak a legalapvetőbb és legérdekesebb összefüggések taglalására szorítkozunk.
2.2. Az összehasonlítás bemutatása
Az előbbiekben bemutatásra került, hogy milyen sokféle paramétertől függenek a vizsgálandó hatékonysági jellemzők. Joggal felmerül tehát a kérdés, hogy a két választott kriptorendszer viselkedése milyen paraméterválasztások mellett kerüljön összehasonlításra?
A bemeneti adatok (kódolandó illetve aláírandó adat file) tekintetében természetesen egyszerű a válasz, hiszen itt megoldható az azonos méretű és típusú adatok választása mindkét helyen kivéve, ha valamelyik kriptorendszer már nem működik arra az adott bemenetre, de ez külön vizsgálódás tárgyát képezi.
Nem ilyen egyszerű a helyzet az alkalmazott kulcsméretek meghatározása esetében. Azonos kulcsok alkalmazása már csak azért sem megoldható, mert mint említettük, a két különböző kriptorendszerhez tartozó nyilvános-titkos kulcspárok és egyéb közös paraméterek nem kompatíbilisek egymással. Mivel a kulcsméret az a paraméter, amivel az egyes kriptorendszerek biztonságosságát hangolni lehet, ezért az egyik kézenfekvő megoldás az, hogy azonos biztonságot nyújtó kulcsméretek mellett hasonlítjuk össze a hatékonysági jellemzőket. Másik, nem annyira természetes, de érdekes megközelítés, hogy egy adott hatékonysági jellemzőt kiválasztva, adott kriptográfiai műveletre azt vizsgáljuk, hogy milyen kulcsok mellett kapunk azonos eredményt vagyis ekkor melyik algoritmus nyújt nagyobb biztonságot. Ilyen következtetés lehet pl. hogy adott idő alatt melyik algoritmus tud nagyobb biztonságot nyújtó kódolást megvalósítani.
Mindezekhez szükségünk van arra, hogy a kulcsméreteket biztonsági szintekhez rendeljük, meghatározzuk az azonos biztonságot nyújtó kulcsméreteket. Ez nem egyszerű feladat, mély matematikai, kriptográfiai ismereteket kíván. Adott kriptográfiai algoritmus biztonságosságát az ellene alkalmazható legjobb, általános esetben működő törő algoritmus költsége (szükséges lépésszáma) határozza meg. Az RSA törésére létezik a kulcsméret függvényében szubexponenciális költségű törő algoritmus, az ECC-nél eddig jelenleg csak tisztán exponenciális költségűt találtak. Ennek köszönhető, hogy az ECC kulcsméretei általában kisebbek. Több független nemzetközi kutatócsoport munkáját alapul véve [6] [7] [8] [9] jelenleg elfogadott, hogy az 1024 bites kulcsú RSA és a 160 bites kulcsú ECC, illetve a 768 bites kulcsú RSA és a 136 bites kulcsú ECC azonos biztonsági szintűnek. Ebből kiindulva az összehasonlításaink során a következő megfeleltetéseket használtuk fel:
RSA (bit) |
ECC (bit) |
512 |
113 |
768 |
136 |
1024 |
160 |
2048 |
282 |
4096 |
409 |
9. táblázat RSA és ECC kulcsok megfeleltetése
A kulcsméretek különbözősége mellett a kriptorendszerek sajátosságai további nehézségeket gördítenek elénk az összehasonlításuk körülményeinek meghatározása tekintetében. Mind az ECC-nél, mind az RSA-nál a kulcsok illetve közös paraméterek többféle típusa különböztethető meg, és a tapasztalatok szerint ez a jellemző is befolyással van az algoritmusok viselkedésére. Ez tovább bonyolítja a helyzetet, hiszen a különböző összetételű és típusú paraméterek között nem létesíthető semmilyen értelmes megfeleltetés. Így tehát ezeket az eseteket mind külön kell kezelni, mint az egyes algoritmusok további típusait, és az összehasonlítások során mindegyik algoritmus-típust meg kell vizsgálni. Ezek részletesebb bemutatása az RSA és az ECC sajátosságainak taglalásánál (3.1, 3.2) található.
2.3. A mérési környezet bemutatása
Implementáció választás
A mérések elvégzéséhez szoftver implementációt kellett választani a két kriptorendszerhez. A lehetőségek feltérképezése után a választás a Crypto++ nevű kriptográfiai programkönyvtárra esett [10], amely nyílt forráskódban elérhető és tartalmazza mind az ECC, mind az RSA szükséges algoritmusait. A Crypto++ C++-ban készült, stabil és jól átlátható struktúrájú, dokumentált programkönyvtár. Fejlesztése 1995 óta folyik folyamatosan, és jelenleg is széles felhasználói körnek örvend. Rendkívül sok kriptográfiai algoritmus implementációját tartalmazza, amelyek a nemzetközileg elfogadott specifikációknak (IEEE P1363, X.509, SEC1, SEC2 stb.) megfelelőek.
A közös implementációs forrás lényeges szempont volt annak érdekében, hogy elkerüljük a különböző programnyelven írt, különböző optimalizálásokat, programozói módszereket használó szoftverek közti különbségeket. Természetesen még így is sok múlik a kódot elkészítő programozó ügyességén és kriptográfiai jártasságán, de a függések felderítéséhez, nagyságrendi összehasonlításokhoz az így nyert adatok is érdemben használhatóak.
A teszteléshez használt szoftver
A mérések elvégzéséhez szükséges szoftver keretrendszer szintén C++ nyelven, a Microsoft Visual Studio 6.0 segítségével készült. A felhasznált kriptográfiai könyvtár a Crypto++ 4.1-es verziója.
Az elkészített program parancssorból paraméterezhető (kriptográfiai művelet, bemeneti paraméterek és kimenetek megadása, ismétlési szám), az előre összeállított tesztvektorokkal való többszöri futtatás batch file-ok segítségével került megvalósításra. A mérési eredményeket tartalmazó file-okat később Microsoft Excel segítségével elemeztük.
Hardver és szoftver környezet
A program futtatására használt személyi számítógép fő jellemzői: Intel Celeron 450 MHz processzor, 128 KB synchronous write-back L2 On-board cache, 192 MB memória, 75 MHz memory bus speed, 75 MHz FSB. A gépen Windows 98 (version 4.10.1998) operációs rendszer futott.
3. Az RSA és az ECC sajátosságai
A következőkben nagy vonalakban bemutatásra kerülnek a választott kriptorendszerek sajátosságai, amelyek ismerete szükséges az elemzések részleteinek megértéséhez. Maguknak az algoritmusoknak az ismertetésétől jelen cikkben terjedelmi okokból eltekintünk, ezek a megfelelő szakirodalmakban elérhetőek [1] [2] [3].
3.1. Az RSA sajátosságai
Az RSA-nál mind a titkos, mind a nyilvános kulcs egy-egy számpár, ahol az egyik szám a modulus (tipikusan 512-4096 bit hosszú szám), a másik pedig egy ennél kisebb (bithosszúságában tehát maximum ekkora) egész szám, az exponens. Az RSA kódolás lényege, hogy a kódolandó adatot modulárisan hatványozzuk, a kitevő a nyilvános exponens. A dekódolásnál szintén moduláris hatványozás történik, de ebben az esetben a kitevő a titkos exponens.
RSA Nyilvános kulcs: (e, m) Titkos kulcs: (d, m) Kódoló függvény: E(x) = xe mod m Dekódoló függvény: D(y) = yd mod m |
9. táblázat Az RSA sajátosságainak összefoglalása
Az RSA kulcsgeneráláshoz két nagy prímre van szükségünk, ezek szorzata adja ugyanis a modulust. A nyilvános exponens értéke szabadon választható, a titkos exponens ebből, valamint a két prímből kerül kiszámításra. A művelet kritikus pontja a nagy prímek előállítása. A gyakorlatban használt módszerek általában úgy keresnek prímet, hogy választanak egy nagy véletlen számot, majd tesztelik, hogy összetett szám-e. A használt tesztelési módszerek olyanok, hogy amennyiben pozitív választ adnak, akkor a szám biztosan összetett, a negatív válasz jelenése azonban mindössze annyi, hogy a szám lehet prím. Ha a tesztet mindig különböző paraméterezéssel megfelelően sokszor lefuttatjuk, és mindannyiszor negatív választ kapunk, akkor az ismétlések számának függvényében annak a valószínűsége, hogy a szám nem prím, tetszőlegesen kicsire csökkenthető3. Ekkor a gyakorlatban el szokták fogadni a számot prímnek. Amennyiben a tesztelés során valamikor pozitív eredményt kapunk, a számot el kell dobni, és egy újabb véletlen számmal kell próbálkozni. A módszer jellegéből következik, hogy a kulcsgeneráláshoz szükséges idő nem ugyanannyi minden esetben, hanem nagy mértékben függ a szerencsétől, vagyis attól, hogy milyen véletlen számot sikerült sorsolnunk.
Az RSA kódolásnál használatos gyorsító eljárás, hogy a nyilvános exponens értékét (amit amúgy is szabadon választhatunk meg) kicsire választjuk, hiszen ekkor a kódoláskor csak kis kitevőre kell emelni a kódolandó adatot. Veszélyes azonban nagyon kicsire (pl. 3-ra) választani ezt az értéket, mert ez lehetőséget ad bizonyos típusú támadásokra - ennek ellenére azonban sajnos néhány rendszer él ezzel a választással. Jó és szintén elterjedt az e=65537 választás, ez az érték ugyanis kevés 1-est tartalmaz (65537 = 10001h), elegendően kicsi ahhoz, hogy a kódolás még gyors legyen, de ennél az értéknél az említett támadások már nem működnek.
Az RSA algoritmus biztonságosságát a modulus mérete határozza meg, jelenleg biztonságosnak tartott az 1024 bites modulus használata. A modulus emellett befolyásolja még a maximális kódolható adatméretet, amelynek a kódoló algoritmusból következően minden esetben kisebbnek kell lennie a modulusnál.
3.2. Az ECC sajátosságai
Az ECC-nél szükségünk van egy elliptikus görbére és annak egy pontjára, amelyet a görbén értelmezett csoport bázispontjaként fogunk használni. A görbe és a bázispont alkotják a rendszer közös paramétereit. A titkos kulcs egy egész szám, a nyilvános kulcs pedig a görbe egy pontja, amelyet meg lehet adni pl. egy számpárral4 (a pont koordinátáival).
A közös görbe és a bázispont meghatározása alapos vizsgálatot igényel, ugyanis ezeknek a paramétereknek több kritériumnak is meg kell felelniük. Az ezzel foglalkozó szervezetek az általuk jónak talált közös paramétereket ajánlások formájában rögzítették5, a méréseknél mi is ezeket a közös paramétereket használtuk.
Az elliptikus görbék pontjain értelmezett csoport lehet prím-rendű vagy 2-hatvány-rendű. Ez meghatározza az elemek ábrázolási módját, a csoportművelet végzését stb., és ezek révén hatással van az ECC-s kriptográfiai műveletek viselkedésére. A 2-hatvány-rendű eset matematikailag sokkal bonyolultabb, viszont hardveres megvalósítás esetén sok gyorsítási lehetőség alkalmazható. A 2-hatvány-rendű csoportok még tovább bonthatóak a csoport generátorpolinomjának felépítésétől függően. Vizsgálódásunk során a 3 tagot tartalmazó (trinomiális) és 5 tagot tartalmazó (pentanomiális) 2-hatvány-rendű esetekkel foglalkoztunk. A tapasztalatok szerint a generátorpolinom tagszáma is befolyásolja a kriptográfiai műveletek hatékonysági jellemzőit később látni fogjuk például, hogy a trinomiális esetekben működik gyorsabban az algoritmus.
4. ábra Elliptikus görbe pontjain értelmezett csoportművelet
Az ECC-nél a titkos kulcs egy egész szám, amire mindössze annyi a megkötés, hogy maximum akkora lehet, mint a görbén definiált csoport rendje (tipikusan 110-570 bit hosszú szám). Így ennek generálása egyszerű és gyors művelet. A nyilvános kulcs a görbe azon pontja, amelyet úgy nyerünk, hogy a bázisponton csoportműveletet végzünk önmagával annyiszor, amennyi a titkos kulcs értéke. A nyilvános kulcs generálása tehát függ a csoportművelet bonyolultságától (vagyis az alapul szolgáló csoport típusától), és a titkos kulcs értékétől.
ECC Közös paraméterek: E(K) elliptikus görbe, B bázispont Titkos kulcs: k Nyilvános kulcs: P (= BÄBÄ ÄB = k¤B) Kódoló függvény6: E(M) = (Y1, Y2); Y1= r¤B; Y2= M Ä r¤P; r véletlen egész Dekódoló függvény6: D(Y1, Y2) = Y2 Ä (-) k¤Y1 |
9. táblázat Az ECC sajátosságainak összefoglalása
Az ECC algoritmusainál sokszor végzünk csoportműveletet a bázisponton illetve a nyilvános kulcsként funkcionáló publikus ponton saját magukkal. Így kézenfekvő és praktikus gyorsítási eljárás, hogy előre elkészítjük, és egy táblázatban tároljuk ezen műveletek eredményeit. Így adott esetben a csoportművelet n-szer való elvégzése helyett csak egy táblázatban kell keresni, ami lényegesen gyorsabb lehet természetesen a táblázatok eltárolásához többlet tárhelyre van szükség.
Az ECC-s kriptográfiai algoritmusok biztonságosságát az alapul szolgáló csoport rendje határozza meg. Jelenleg biztonságosnak tartott az az eset, amikor ez legalább 160 bites szám.
4. Összehasonlító elemzés
4.1. A tesztesetek bemutatása
A mért adatok: a két kriptorendszernél a
- kulcsgenerálás,
- közös paraméterek felállítása,
- kódolás,
- dekódolás,
- aláírás,
- aláírás ellenőrzés
során a futási idők valamint a műveletek során létrejövő adatok mérete:
- környezeti partaméterfile-ok mérete,
- nyilvános és titkos kulcsfile-ok mérete,
- kódolt adatfile-ok mérete,
- aláírásfile-ok mérete.
A műveletek során mért eredmények függenek a bemeneti paraméterektől. Ezek megválasztása a következő volt:
Kulcsméret:
RSA-nál (a modulus mérete): 512, 768, 1024, 2048, 4096 bit;
ECC-nél (a csoport rendje): 112, 128, 131, 160, 163, 192, 193, 224, 233, 239, 256, 283, 384, 409, 521, 571 bit;
Típus:
RSA-nál (a nyilvános exponens értéke): 3, 65537, nagy véletlen;
ECC-nél (a csoport típusa): prím-rendű (ECP), 2-hatvány-rendű (EC2N) pentanomiális vagy trinomiális;
van-e előszámított tábla vagy nincs;
Kódolandó illetve aláírandó adat mérete: 4, 22, 38, 54, 70, 86, 214, 470, 512, 1024, 2048, 4096 byte;
Kódolandó illetve aláírandó adat tartalma: csupa 1 bit, csupa 0 bit, értelmes szöveg (ASCII karakterek) kódja.
A következőkben kerülnek bemutatásra a mérési eredmények és az összegyűjtött tapasztalatok a vizsgált kriptográfiai művelet, azon belül a mért paraméter szerint csoportosítva.
4.2. Közös paraméterek felállítása és kulcsgenerálás
Az adatfile-ok RSA esetében a PKCS #1, ECC-nél az ECIES által definiált formátumban vannak.
Futási idő
RSA
- A kulcsgenerálás műveletek futási idői különbözőek, az értékek exponenciális eloszlást mutatnak.
- 4096 bites kulcs generálása esetén a futási idő a legjobb esetben 0,2 másodperc, legrosszabb esetben több, mint 14 perc volt. A mért adatok átlaga 4096 bites kulcsnál 6 perc, 1024 bites kulcsnál 2,8 másodperc volt.
- A kulcsgeneráláshoz szükséges idő nem függ az exponens értékétől és típusától.
ECC
- A görbe megkeresésével nem foglalkoztunk, az ajánlott görbéket használtuk.
- Előszámított tábla elkészítésének az ideje függ az algoritmus típustól (ECP, trinom. EC2N vagy pentanom. EC2N) és a kulcsmérettől. Értéke a 0,03 másodperctől az 1,2 percig terjed.
- A kulcsgenerálás ideje függ a kulcs méretétől, az algoritmus típustól és attól, hogy volt-e bázisponthoz tartozó előszámított tábla. A bázisponthoz tartozó előszámított tábla használata több, mint kétszeresére gyorsítja a művelet elvégzését. A futási idő értéke 0,054 másodperctől (113 bites kulcs, trinomiális eset, van előszámított tábla) 1,4 percig (570 bites kulcs, pentanomiális eset, nincs előszámított tábla) terjed.
Összehasonlítás
A következő grafikon az adott idő alatt generálható kulcsok méretét mutatja az egyes rendszerek esetében. Az x tengelyen az időt ábrázoltuk, beosztása logaritmikus, egysége a tick, ami jelen esetben 1/1000 másodpercet jelent. Az y tengelyen a kulcsméret található, itt az egység az ECC-s kulcs mérete; RSA esetében a megadott összerendelés alapján átkonvertáltuk az értékeket. (Jelmagyarázat: BP/BP-: van/nincs előszámított tábla a bázisponthoz, PP: a publikus ponthoz is létezik előszámított tábla.)
4. ábra Adott idő alatt generált kulcsméretek összehasonlítása
Látható, hogy az ECC három típusa és az RSA eltérő viselkedést mutat. Egy rendszer annál jobb, minél több bites kulcs készíthető el vele adott idő alatt. Ezek szerint egyértelműen a legjobb az ECP, ezt követi kicsivel a trinomiális EC2N. A pentanomiális EC2N és az RSA nagyjából együtt indulnak, de az RSA kisebb meredekségű, így lemarad. Ne felejtsük persze el, hogy az RSA kulcsgenerálás nem determinisztikus idejű ez látszik is a görbe pontjainak vízszintes szórásából is ennek ellenére jellegében jól összehasonlítható a többi rendszerrel.
Méretek
RSA
RSA-nál a titkos és nyilvános kulcsokat tartalmazó file-ok mérete értelemszerűen függ a választott kulcsmérettől, valamint függ az exponens értékétől. A jellemző méretek7:
Kulcs méret (bit) |
Titkos kulcs (byte) |
Nyilvános kulcs (byte) |
512 |
344 - 375 |
92 - 124 |
768 |
488 - 536 |
124 - 175 |
1024 |
632 - 698 |
160 - 224 |
2048 |
1216 - 1345 |
292 - 421 |
4096 |
2671 - 2779 |
548 - 806 |
9. táblázat RSA kulcsfile-ok méretei
ECC
ECC-nél az előszámított táblák adatfile-jainak mérete és a nyilvános és titkos kulcsok adatfile-jainak mérete függ a kulcs méretétől és az algoritmus típustól. A titkos kulcs egy egész szám, a nyilvános kulcs a görbe egy pontja, azonban a kulcsfile-ok a szabvány8 szerint tartalmazzák a görbe paramétereit is. A jellemző méretek:
Görbe típusa |
Kulcs méret (bit) |
Titkos kulcs (byte) |
Nyilvános kulcs (byte) |
Előszámított tábla a bázisponthoz (byte) |
Előszámított tábla a nyilvános kulcshoz (byte) |
|
ECP |
|
112 |
378 |
1014 |
322 |
2028 |
EC2N |
trinom. |
113 |
374 |
1078 |
316 |
2156 |
ECP |
|
128 |
416 |
1142 |
356 |
2284 |
EC2N |
pentanom. |
131 |
426 |
1206 |
364 |
2412 |
ECP |
|
160 |
492 |
1398 |
422 |
2796 |
EC2N |
pentanom. |
163 |
492 |
1462 |
422 |
2924 |
ECP |
|
192 |
564 |
1654 |
486 |
3308 |
EC2N |
trinom. |
193 |
542 |
1718 |
462 |
3436 |
ECP |
|
224 |
638 |
1912 |
552 |
3824 |
EC2N |
trinom. |
233 |
620 |
2040 |
534 |
4080 |
EC2N |
trinom. |
239 |
624 |
2040 |
536 |
4080 |
ECP |
|
256 |
708 |
2168 |
616 |
4336 |
EC2N |
pentanom. |
283 |
734 |
2424 |
634 |
4848 |
ECP |
|
384 |
1004 |
3194 |
876 |
6388 |
EC2N |
trinom. |
409 |
978 |
3450 |
844 |
6900 |
ECP |
|
521 |
1332 |
4380 |
1166 |
8760 |
EC2N |
pentanom. |
571 |
1326 |
4764 |
1148 |
9528 |
9. táblázat ECC kulcsfile-ok és előszámított táblák file-jainak méretei
Összehasonlítás
A következő táblázat tartalmazza az RSA-nál és az ECC-nél szükséges paraméter file-ok (nyilvános és titkos kulcsfile-ok, valamint az ECC esetében az előszámított tábla file-ja) összméretét. Mivel ezek az adatok kulcsméret-függőek, az összehasonlítás az előzőekben meghatározott, azonos biztonságot nyújtó kulcsméretek mellett történik.
Közös kulcsméret (bit) |
RSA összesen (byte) |
ECC összesen (byte) |
ECC összesen, PP-vel (byte) |
ECC 113 = RSA 512 |
872-998 |
1452 |
3608 |
ECC 131 = RSA 768 |
1224-1422 |
1632 |
4044 |
ECC 160 = RSA 1024 |
1584-1844 |
1890 |
4686 |
ECC 283 = RSA 2048 |
3016-3532 |
3158 |
8006 |
ECC 409 = RSA 4096 |
5848-6870 |
4428 |
11328 |
9. táblázat RSA és ECC paraméter file-ok összméretének összehasonlítása
Napjainkban a 160 bites ECC 1024 bites RSA kulcsok választását tartjuk megfelelően biztonságosnak. Ezt a tipikus választást vizsgálva látható, hogy ugyan magának az ECC kulcsnak a bithossza kisebb az RSA-énál, a tárolandó adatok még előszámított tábla nélkül is kicsit több helyet foglalnak, mint az RSA adatai. Előszámított táblával együtt pedig majdnem háromszor akkora helyet igényelnek. Ennek oka, hogy az ECC-s kulcsfile-ok nagy részét a közös paraméterek adják ki, amelyeket a használt szabvány szerint tartalmazniuk kell. Amennyiben olyan más file formátumot alkalmaznánk, ahol a közös görbe és bázispont nem szerepel a kulcs file-ban, az ECC-s kulcsfile-ok ennél sokkal kisebbek lennének. Persze ilyenkor más módon kell gondoskodni a közös paraméterek egyértelmű meghatározásáról.
4.3. Kódolás és dekódolás
Az RSA rejtjelezésnél a PKCS #1 v2.0-ban definiált RSA OAEP SHA encryption scheme-et használtuk, az ECC esetében pedig a SECG által definiált Elliptic Curve ECIES, AKA EC-DHAES encryption scheme szerint történt a kódolás.
A kódolás időigénye
RSA
- A kódoláshoz szükséges idő érzékenyen függ a kulcsmérettől, a nyilvános exponens értékétől, de nem függ a kódolandó adat méretétől és típusától.
- A kódoláshoz szükséges idő 0,02 másodperctől (512 bites kulcs, e=3) 6,7 másodpercig (4096 bites kulcs, e=véletlen) terjed. Értéke 1024 bites kulcs és e=65537 tipikus paraméterek esetén 0,025 másodperc.
ECC
- A kódolás gyorsasága függ a kulcsmérettől, a kódolandó adat méretétől és a csoportművelet bonyolultságától vagyis az algoritmus típustól, valamint attól, hogy rendelkezésre áll-e előszámított tábla.
- Előszámított tábla használata több, mint kétszeresére gyorsítja a műveletet. A gyorsítás mértéke csak a kulcsmérettől függ, a dokumentum méretőtől nem.
- A kódoláshoz szükséges idő 0,05 másodperctől (112 bites kulcs, ECP, 22 byte-os adat, előszámított tábla) 2,8 percig (570 bites kulcs, EC2N pentanom., 2048 byte-os adat, nincs előszámított tábla) terjed. Értéke ECP-nél, 163 bites kulcs és előszámított tábla használatánál, 2048 byte-os adat kódolásakor 0,12 másodperc.
Összehasonlítás
A következő grafikon egy 22 byte-os adat kódolásához szükséges időket ábrázolja. Az x tengelyen az ECC-s kulcsméret, az y tengelyen az idő (tick-ben mérve) található. (Jelmagyarázat: PP/PP-: van/nincs előszámított tábla a publikus ponthoz.)
4. ábra A kódoláshoz szükséges idők összehasonlítása
A grafikonról leolvasható, hogy a kis exponensű (e=3 és e=65537) RSA az összes rendszernél gyorsabb, ezt követi az ECP, majd az EC2N trinomiális esete. A véletlen exponensű RSA viszont már lassabb az említett ECC-s kódolásoknál, csak az EC2N trinomiális esetét múlja felül.
A dekódolás időigénye
RSA
- RSA esetében a dekódolása függ a kulcsmérettől, nem függ azonban a kiindulási adat méretétől és az exponens értékétől (ez utóbbi logikus, hiszen ekkor nem a nyilvános exponenssel végzünk műveletet).
- A dekódoláshoz szükséges idő 0,03 másodperctől (512 bites kulcs) 4,45 másodpercig (4096 bites kulcs, terjed. Értéke 1024 bites kulcs esetén 0,13 másodperc.
ECC
- Az ECC-s dekódolás gyorsasága függ a kulcs méretétől, a kiindulási adat méretétől és a csoportművelet bonyolultságától vagyis az algoritmus típustól, nem függ azonban attól, hogy rendelkezésre áll-e előszámított tábla.
- A dekódoláshoz szükséges idő 0,03 másodperctől (110 bites kulcs, ECP, 22 byte-os adat) 1,55 percig (570 bites kulcs, EC2N pentanom., 2048 byte-os adat) terjed. Értéke ECP-nél, 163 bites kulcs használatánál, 4096 byte-os adat dekódolásakor 0,136 másodperc.
Összehasonlítás
A következő grafikon egy 22 byte-os adatból készült kód dekódolásához szükséges időket ábrázolja. Az x tengelyen az ECC-s kulcsméret, az y tengelyen az idő (tick-ben mérve) található. (Jelmagyarázat: PP/PP-: van/nincs előszámított tábla a publikus ponthoz.)
4. ábra A dekódoláshoz szükséges idők összehasonlítása
Leolvasható, hogy a dekódoláskor az ECP a leggyorsabb. Az RSA a trinomiális EC2N-nél is rosszabb eredményt produkál.
A kódolt adat mérete, maximális kódolható adatméret
Az RSA és az ECC a kódolás során az azonos méretű adat file-okat különböző méretűvé alakítja át.
- A kódolt adat mérete az RSA-nál csak a kulcsmérettől függ (a kiindulási adat méretétől nem), viszont a maximálisan kódolható mérethatár elég alacsony. Ez abból következik, hogy a kódolandó adatnak kisebbnek kell lennie a modulusnál. A kódolt üzenet mérete a kódoló algoritmusból következően a modulus méretével egyezik meg.
- Az ECC-nél a kódolt adat mérete nem csak az alkalmazott kulcsmérettől függ, hanem a kódolandó adat méretétől is. Adott kulcsméret esetén a kódolt adat adott értékkel lesz nagyobb a kódolandó adatnál. Ez 160 bites kulcs esetén pl. 61 byte. Az ECC-nél is létezik korlát a kódolandó adat méretére, azonban ez sokkal nagyobb, mint az RSA esetében. Ez 160 bites kulcsnál 4035 byte-os korlátot jelent, és ekkor a kódolt adat mérete 4096 byte. Érdekesség, hogy minden maximális méretű kódolható adat kódoltja 4096 byte-os.
A következő táblázat a közös kulcsméretek melletti kódolt üzenethosszokat tartalmazza néhány kiindulási dokumentum méret esetén.
Közös kulcs- méret (bit) |
Kódolandó adat mérete (byte) |
RSA-val kódolt adat mérete (byte) |
ECC-vel kódolt adat mérete (byte) |
|
Közös kulcs-méret (bit) |
Kódolandó adat mérete (byte) |
RSA-val kódolt adat mérete (byte) |
ECC-vel kódolt adat mérete (byte) |
ECC 113 = RSA 512 |
22 |
64 |
73 |
|
ECC 283 = RSA 2048 |
22 |
256 |
115 |
|
54 |
- |
105 |
|
|
54 |
256 |
147 |
|
86 |
- |
137 |
|
|
86 |
256 |
179 |
|
214 |
- |
265 |
|
|
214 |
256 |
307 |
|
470 |
- |
521 |
|
|
470 |
- |
563 |
|
512 |
- |
563 |
|
|
512 |
- |
605 |
|
768 |
- |
819 |
|
|
768 |
- |
861 |
|
1024 |
- |
1075 |
|
|
1024 |
- |
1117 |
|
2048 |
- |
2099 |
|
|
2048 |
- |
2141 |
ECC 131 = RSA 768 |
22 |
96 |
77 |
|
ECC 409 = RSA 4096 |
22 |
512 |
147 |
|
54 |
96 |
109 |
|
|
54 |
512 |
179 |
|
86 |
- |
146 |
|
|
86 |
512 |
211 |
|
214 |
- |
269 |
|
|
214 |
512 |
339 |
|
470 |
- |
525 |
|
|
470 |
512 |
595 |
|
512 |
- |
567 |
|
|
512 |
- |
637 |
|
768 |
- |
823 |
|
|
768 |
- |
893 |
|
1024 |
- |
1079 |
|
|
1024 |
- |
1149 |
|
2048 |
- |
2103 |
|
|
2048 |
- |
2173 |
ECC 160 = RSA 1024 |
22 |
128 |
83 |
|
|
|
|
|
|
54 |
128 |
115 |
|
|
|
|
|
|
86 |
128 |
147 |
|
|
|
|
|
|
214 |
- |
275 |
|
|
|
|
|
|
470 |
- |
531 |
|
|
|
|
|
|
512 |
- |
573 |
|
|
|
|
|
|
768 |
- |
826 |
|
|
|
|
|
|
1024 |
- |
1085 |
|
|
|
|
|
|
2048 |
- |
2109 |
|
|
|
|
|
9. táblázat RSA-val és ECC-vel kódolt adatok méretének összehasonlítása
A táblázatból látható, hogy az ECC-vel kódolt adat mérete általában kisebb, mint az RSA-val kódoltaké. Az RSA mindössze 5 esetben jobb, de ekkor sem sokkal.
Az RSA-nál nagyon hamar beleütközünk a maximálisan kódolható adat méretének korlátjába, ez az ECC-nél sokkal később jelentkezik. A maximális kódolható adat mérete mindkét esetben a kulcs méretétől függ. A következő táblázat a közös kulcsméret melletti maximális kódolható üzenethosszokat hasonlítja össze.
Közös kulcsméret (bit) |
Maximális kódolható adat RSA-nál (byte) |
Az RSA-val kódolt adat mérete (byte) |
Maximális kódolható adat ECC-nél (byte) |
Az ECC-vel kódolt adat mérete (byte) |
ECC 113 = RSA 512 |
22 |
64 |
4045 |
4096 |
ECC 131 = RSA 768 |
54 |
96 |
4041 |
4096 |
ECC 160 = RSA 1024 |
86 |
128 |
4035 |
4096 |
ECC 283 = RSA 2048 |
214 |
256 |
4003 |
4096 |
ECC 409 = RSA 4096 |
470 |
512 |
3971 |
4096 |
9. táblázat A maximális kódolható adatméretek összehasonlítása
4.4. Aláírás és aláírás ellenőrzés
Az aláírás a dokumentum lenyomatán a titkos kulccsal való műveletvégzést jelenti. Ez pl. az RSA esetében megegyezik a dekódolással. Az ECC-nél ez nem feltétlenül van így. Több ECC-s aláírás protokoll is létezik, ezek az elvégzendő pontos műveleteket illetően eltérnek. Emellett élhetünk azzal a feltételezéssel, hogy az aláírás viselkedése hasonló lesz, mint dekódolásé, de számítanunk kell bizonyos eltérésekre is.
Az aláírás ellenőrzés folyamata szintén tartalmazza a lenyomatkészítést, így az aláíráshoz hasonlóan ez is csak annyiban függ az aláírandó dokumentumtól, mint amennyire a lenyomatkészítő függvény. Ezt követően a nyilvános kulccsal történik műveletvégzés, ezért az aláírás ellenőrzés esetében a kódolás folyamatával fedezhetünk fel hasonlóságokat.
A tesztprogramban használt protokollok az RSA esetében a PKCS #1 v2.0-ban definiált RSA PKCS1v15 signature scheme, az ECC-s digitális aláírásnál pedig az ECNR signature scheme.
Időigény
RSA
- Az aláírás időigénye nem függ az exponenstől, az ellenőrzés ideje igen. A kulcsmérettől és a dokumentum méretétől mindkét művelet függ.
- Az aláírás időigénye 0,033 másodperctől (512 bites kulcs, 22 byte-os adat) 4,431 másodpercig (4096 bites kulcs, 2048 byte-os adat) terjed. Értéke 1024 bites kulcs és 2048 byte-os adat esetében 0,14 másodperc.
- Az aláírás ellenőrzés időigénye 0,011 másodperctől (512 bites kulcs, e=3, 22 byte-os adat) 6,829 másodpercig (4096 bites kulcs, e=véletlen, 2048 byte-os adat) terjed. Értéke 1024 bites kulcs, e=65537 és 2048 byte-os adat esetén 0,023 másodperc.
ECC
- Az aláírás és az aláírás ellenőrzés időigénye függ a kulcsmérettől, az algoritmus típustól, és az előszámított tábla használatától. Az előszámított tábla több, mint kétszeresére képes gyorsítani a műveletet.
- Az aláírás időigénye 0,046 másodperctől (110 bites kulcs, ECP, előszámított tábla) 1,41 perc másodpercig (570 bites kulcs, EC2N pentanom., nincs előszámított tábla) terjed. Értéke ECP-nél, 163 bites kulccsal, előszámított tábla használata esetén 0,068 másodperc.
- Az aláírás ellenőrzés időigénye 0,045 másodperctől (110 bites kulcs, ECP, előszámított tábla) 1,6 percig (570 bites kulcs, EC2N pentanom., nincs előszámított tábla) terjed. Értéke ECP-nél, 163 bites kulccsal, előszámított tábla használata esetén 0,066 másodperc.
Összehasonlítás
Az aláírásnál - a kódoláshoz hasonlóan - a leggyorsabban az ECP működik, ezt követi a trinomiális EC2N. Az RSA (annak minden típusa, hiszen az aláírás nem függ az exponenstől) csak a pentanomiális EC2N-et előzi meg.
Az aláírás ellenőrzésnél - ami a dekódolással mutat hasonlóságot - a kis exponensű RSA a legjobb, majd az ECP és a trinomiális EC2N következik. A nagy véletlen exponensű RSA viszonylag lassú, csak a pentanomiális EC2N-et előzi meg.
Az aláírás mérete
A digitális aláírás az aláírandó dokumentumon végzett lenyomatkészítésből, és a lenyomaton a titkos kulccsal való műveletvégzésből áll. Mérete nem függ a kiindulási dokumentumtól, hiszen az alkalmazott lenyomatkészítő függvény bármekkora bemenetből azonos méretű kimenetet állít elő. (Ennek értelmében függ viszont a lenyomatkészítő függvénytől, hiszen különböző lenyomatkészítő függvények különböző méretű kimenetet állítanak elő, pl. 16 vagy 20 byte-osat.) Az eredményül kapott aláírás mérete függ azonban az alkalmazott kulcsmérettől. A következő táblázat az ECC-s és RSA-s aláírások méretét9 hasonlítja össze különböző kulcsméretek mellett. Az alkalmazott hash függvény az MD5, amely 16 byte-os lenyomatot készít.
Közös kulcs méret (bit) |
RSA aláírás mérete (byte) |
ECC aláírás mérete (byte) |
ECC 113 = RSA 512 |
64 |
30 |
ECC 131 = RSA 768 |
96 |
34 |
ECC 160 = RSA 1024 |
128 |
42 |
ECC 283 = RSA 2048 |
256 |
72 |
ECC 409 = RSA 4096 |
512 |
102 |
9. táblázat Aláírások méretének összehasonlítása
A táblázatból jól látható, hogy az ECC aláírások sokkal kisebbek, mint az RSA aláírások.
5. Összefoglalás, értékelés
A fentiekben bemutatásra került az RSA-val és az ECC-vel végzett mérések számos eredménye. A legfontosabb megállapításokat és összefüggéseket az alábbiakban foglaljuk össze, illetve kiegészítjük néhány, az elméleti kutatás során szerzett, a két kriptorendszerrel kapcsolatos érdekességgel.
RSA
Kritikus pontok, negatívumok:
A kulcsgeneráláshoz szükséges idő nem determinisztikus, esetenként igen nagy, akár percekben mérhető is lehet. Emiatt időkritikus rendszerekben, ahol a kulcsgenerálásra rendelkezésre álló idő felülről korlátos lehet, nem alkalmazható.
A kulcs mérete (modulus mérete) megszabja a kódolható maximális adatméretet, ami viszonylag kicsi. Az ennél nagyobb méretű adatok kódolására blokkonkénti kódolással van lehetőség.
Néhány speciális paraméterválasztás (pl. közös modulus vagy közös és kicsi nyilvános exponens választás stb.) módot ad különböző támadási lehetőségekre, ezért ezeket el kell kerülni.
Specialitások, pozitívumok:
Létezik ismert, RSA-n alapuló anonimitási és vak aláírás protokoll.
ECC
Kritikus pontok, negatívumok:
Új közös paraméterek (elliptikus görbe és bázispont) keresése körülményes, bonyolult.
Praktikusan szükség van előszámított táblák alkalmazására. Ezek létrehozása időigényes (ezt csak egyszer kell megtenni), és többlet tárhelyet igényel.
Specialitások, pozitívumok:
Önigazoló aláírások, amelyek kiváltják a certificate-ek alkalmazását. [12]
Kiválóan párhuzamosítható, ezzel nagy gyorsítás érhető el. (Pl. az aláíró lánc ellenőrzése egyetlen lépésben.)
Szoftveres megvalósítás esetén a prím-rendű, hardveres implementáció esetén a 2-hatvány-rendű csoport alapú ECC alkalmazása lehet a praktikusabb. Utóbbi esetben megfelelő célhardver alkalmazásával sokkal jobb futási eredmények érhetők el, mint a most szoftveres implementációval mért adatok.
Egymáshoz való viszonyok
A kódolásnál és az aláírás ellenőrzésénél a kicsi exponensű RSA a leggyorsabb (még az e=65537 eset is ide tartozik). Ez kb. 4-5-szörös gyorsaságot jelent a leggyorsabb ECC-hez képest.
A dekódolás és az aláírás létrehozása esetében az ECP a leggyorsabb. Méréseink szerint ez kb. 2-szeres gyorsaságot jelent az RSA-hoz képest.
A paraméter file-ok számára szükséges tárhely-igény az RSA-nál egy kicsivel kisebb. Ha az ECC-nél eltároljuk az előszámított táblákat is, akkor összesen majdnem 3-szor annyi helyre van szükség, mint az RSA esetében. Mindez látszólagos ellentmondásban van azzal a ténnyel, hogy az ECC kulcsok bitmérete kisebb.
Az ECC-vel készített kódok és digitális aláírások akár 3-szor kisebbek, mint az RSA-val készültek.
ECC-vel sokkal nagyobb, akár 10-szer akkora adatot lehet egy lépésben rejtjelezni, mint az RSA-nál, ahol ez a korlát viszonylag alacsony.
A maximális kódolható adatméret korlátja miatt nagy adat kódolásakor (a kulcsmérettől függően akár már 100 byte felett) az RSA-nél az adatot kisebb darabokra kell tördelni, és a kódolást több részletben kell elvégezni. Emiatt a kódolás az ECC-t alkalmazva akár 10-szer gyorsabban elvégezhető, mint RSA-val, annak ellenére, hogy a kis exponensű RSA azonos méretű adat kódolásakor gyorsabb az ECC-nél.
A számítási kapacitások növekedésével az elegendő biztonságot nyújtó RSA kulcshossz nagyobb mértékben fog növekedni, mint az ECC kulcshossz.
Nem maradt más hátra, mint hogy választ adjunk a vizsgálódásunk alapkérdésre: Melyik rendszer a jobb választás, az ECC vagy az RSA?
Az alapos elméleti és gyakorlati vizsgálódás eredményeképpen az a végkövetkeztetés vonható le, hogy erre a kérdésre nem adható egyértelmű válasz. A két rendszer egyike sem sokkal jobb vagy sokkal rosszabb a másiknál, egyértelmű reláció nem állítható fel közöttük.
A két rendszer az egyes műveletek esetében eltérő hatékonysági adatokkal és különböző korlátokkal rendelkezik. Elképzelhető, hogy néhány esetben ezek a korlátok, viszonyszámok nem jelentősek, ugyanakkor bizonyos környezetben például a PC-hez képest sokkal kisebb számítási kapacitással, gyorsasággal rendelkező chipkártyák esetében, vagy a korlátozott sávszélességgel rendelkező mobil kommunikáció során , vagy bizonyos speciális igényekkel rendelkező alkalmazásoknál például valós idejű rendszerek esetében ezek a tulajdonságok mégis döntőek lehetnek. Ezeket figyelembe véve tehát egy adott alkalmazás szempontjából már megmondható, hogy melyik kriptorendszer a jobb választás. A fent összefoglalt ismeret-bázis ennek a döntésnek a meghozásához nyújt elengedhetetlenül szükséges alapot.
REFERENCIÁK
[1] RFC 2437, PKCS #1: RSA Cryptography Specifications Version 2.0. B. Kaliski, J. Staddon. October 1998.
[2] A. Menezes, Elliptic Curve Public Key Cryptosystems, Kluwer Academic Publishers, Boston, 1993.
[3] Standards for Efficient Cryptography Group (SECG), SEC1: Elliptic Curve Cryptography, SEC2: Recommended Elliptic Curve Cryptography Domain Parameters
[4 Endrődi Csilla, Nyilvános kulcsú kriptográfia matematikai alapjai, Networkshop2002
[5] Endrődi Csilla, Elliptikus görbéken alapuló nyilvános kulcsú kriptográfiai algoritmusok elemzése, diplomaterv, BME VIK, 2001.
[6] Dr. Arjen K. Lenstra, Dr. Eric R. Verheul, Selecting Cryptographic Key Sizes, The Journal of Cryptology, Springer-Verlag, 2000.
[7] Certicom Corp., Current Public-Key Cryptographic Systems, Certicom whitepaper, number 2, April 1997.
[8] Robert D. Silverman, A Cost-Based Security Analysis of Symmetric and Asymmetric Key Lengths, RSA Laboratories, Bulletin, Number 13 - April, 2000.
[9] M.J.B. Robshaw, Ph.D. and Yiqun Lisa Yin, Ph.D., Elliptic Curve Cryptosystems, An RSA Laboratories Technical Note Revised June 27, 1997.
[10] Crypto++ a C++ Class Library of Cryptographic Primitives, Version 4.1 1/13/2000, Wei Dai, http://www.cryptopp.com
[11] Certicom Corp.
http://www.certicom.com
[12] Benjamin Arazi: Improved self-certified DL/EC signatures and key-agreements, előadás, elhangzott az MTA Rényi Alfréd Matematikai Kutató Intézete és a MAK közös klubrendezvényén, 2000. április 26.
1 Minden nyilvános kulcsú kriptográfiai algoritmus egy speciális, matematikailag nehéz problémán alapul. Az idők során több nehéz probléma használatával is próbálkoztak a kriptográfiában, ezek közül alapvetően három állta ki az idő próbáját: az Egészek Faktorizációs Problémája (IFP, Integer Factorisation Problem), a Diszkrét Logaritmus Probléma (DLP, Discreet Log Problem) és ennek az elliptikus görbék pontjain értelmezett csoport feletti kiterjesztése, az ECDLP. Ezt a témakört tárgyalja részletesebben a Nyilvános kulcsú kriptográfia matematikai alapjai [4] című cikk.
2 Az összefüggések teljes gyűjteménye megtalálható az Elliptikus görbéken alapuló nyilvános kulcsú kriptográfiai algoritmusok elemzése [5] című diplomamunkában.
3 Létezik olyan módszer is, ami bizonyos körülmények között egy számról biztosan megmondja, ha az prím, de a gyakorlatban általában nem ezt szokták használni.
4 Léteznek helytakarékosabb pont reprezentációk is, ezekben az esetekben azonban a ponttal végzett számítás válik lassabbá.
5 Ilyen ajánlásai vannak a Certicomnak [11], illetve az ANSI-nak (ANSI X.9.62 1 és X.9.62 7).
6 Az ECElGamal algoritmus szerint. Létezik más algoritmus is, pl. a Menezes-Qu-Vanstone rejtjelezés.
7 PKCS #1 szerinti formátum
8 ECIES szerinti formátum
9 RSA: PKCS1v15, ECC: ECNR szerinti formátum
ECC
vagy RSA?