(laatste update: 1 juli 2002)


- Algemene info

Eerst wat algemene veelgevraagde info:

E-mailadres van de ECCp-109 crew: cmonico@nd.edu
Verdere vragen over dit project: kijk op GoT, het DPC forum, of op het officiele ECCp board

. [edit] Er is op GoT een draadje gestart voor een vernieuwde FAQ[edit].

- Wat is het?

We proberen door middel van 'brute-force' (een-voor-een de mogelijkheden afgaan) aan te tonen dat een gebruikte encryptie-methode niet veilig is. Dit gebeurd in het kader van een door Certicom uitgeschreven contest. Zoals op deze site beschreven staat is deze contest een stimulans om naar betere encrypties te blijven zoeken, doordat de industrie weet wat er op dit moment ongeveer mogelijk is met de huidige techniek.

Een zekere Chris Monico is op de uitdaging van Certicom ingegaan, en heeft, inmiddels met hulp van anderen, programma's geschreven om de encryptie te kraken. Het project is ECCp-109 gedoopt. De Dutch Power Cows hebben inmiddels een reputatie opgebouwd als het gaat om dit soort 'Distributed Computing' contesten, dus deze gaan we ook zeker niet uit de weg :).

Meer info is te vinden op de homepage van ECCp. Van wat daar aan info en links te vinden is heeft dA_Griz een hele mooie Nederlandse uitleg gemaakt:

We zijn bezig met de coordinatie van een distruted computing project om Certicom's ECCp-109 challenge op te lossen. De challenge houdt in dat we bezig zijn met het oplossen van een specifiek elliptische kromme discreet logaritme probleem. De challenge "The Elliptic Curve Discrete Logarithm Problem (ECDLP)" is de basis voor een krachtig encryptiesysteem.

In het "kort" komt het hier op neer:

We hebben een kromme, genaamd C, van de vorm: y^2= x^3 + a*x + b.

Gegeven zijn de constanten "a" en "b". Ook is een groot, vast priemgetal gegeven, genaamd "p". Een punt op de kromme bestaat uit twee gehele getallen "u" en "v". Er wordt een oplossing gevonden zodra de vergelijking met de punten u en v ingevuld en gedeeld door p nog een geheel getal geven. Dus: (v^2 - u^3 - a*u - b) / p = een geheel getal.

Nu bestaat er een methode waarmee we uit twee punten op de kromme een 3e kunnen vinden, genaamd "additie". Certicom heeft een punt gekozen op de kromme, genaamd "P" (hoofdletter P dus), en een EXTREEM grote constante "k", en met extreem groot bedoel ik ook extreem groot. Vervolgens hebben ze een punt Q berekend volgens Q = k * P. Zo ontstaat dus het punt Q. Wij moeten "k" vinden (juich niet, helaas, het is geen Q/P, zo simpel is het niet ).

Hieronder de exacte parameters voor ECCp-109:
p =564538252084441556247016902735257
y^2 = x^3 +321094768129147601892514872825668*x +430782315140218274262276694323197
P = (97339010987059066523156133908935, 149670372846169285760682371978898)
Q = (44646769697405861057630861884284, 522968098895785888047540374779097)
Nou wat heeft dit precies met encryptie te maken? Wel, stel dat je iets besteld op internet bij een bedrijf X. Je geeft ze daarom jouw creditcard nummer. Nu zit Henk de Hacker mee te luisteren en hij vogelt jouw creditcard nummer er zo tussenuit. Wat doe je dus om dit te voorkomen? je _encrypt_ je creditcard nummer. Maar het volgende probleem komt de hoek om zetten: je moet met bedrijf X een encyptie methode afspreken, zodat zowel jij als bedrijf x creditcard nummers kan en- en decrypten. Maar Henk is niet op zijn achterhoofd gevallen en luistert mee als jij je encyptiemethode afspreekt met bedrijf X. Henk haalt je geencrypte code binnen, decrypt hem en haalt je bankrekening leeg. NIET GOED.

Nou is dit probleempje op te lossen, en wel met onze mooie elliptische methode. Let goed op, zo werkt het:

Jij en bedrijf X spreken een punt P af, zoals hierboven ook gedaan. Nu kiest bedrijf X in het geheim een extreem groot getal "s" en berekent een punt A = s * P. Bedrijf X vertelt aan jou vervolgens A, maar _niet_ s! Nu doe jij hetzelfde: je kiest een of ander getal "t", berekent het punt B = t * P en stuurt B op naar bedrijf X. Nu bereken jij thuis het punt Z = t * A. Dus je eigen t met de A van bedrijf X. Bedrijf X berekent in z'n kantoortje ook een punt Z = s * B, jouw B en z'n eigen s. Wat blijkt? Die twee Z's zijn gelijk! Nu heb je dus allebei hetzelfde getal op je beeldscherm staan, zonder dat je die direct aan elkaar vertelt. Als je die nou decrypt tot een creditcard nummer zijn we waar we zijn willen!

Het enige wat Henk kan onderscheppen is de elliptische kromme, A, B en P, maar daaruit kan hij met zijn AMD 1333 geen Z maken. Dat kost wat kracht. En dat is nou precies wat wij aan het doen zijn!

Het doel van Certicom is dus het testen van de veiligheid van deze methode. Nu weten wij dat dit niet veilig is, want wij gaan hem kraken. Echter het priemgetal "p" is nu 109 bits. Hoe groter je deze maakt, hoe zwaarder het wordt. Zou je van p geen 109 bits getal maken maar een 131 bits getal, zouden we al 65536 keer langer erover doen, of zouden we 65536 keer meer GHz nodig hebben, laten we inmiddels gaan spreken over THz!!!

Hoe lossen we dit nou precies op?

Nou wat dat roodgroene dingetje rechtsonder aan het doen is is hetvolgende: hij berekent een hele zooi punten op de elliptische kromme, en het wachten is op twee computers die op een gegeven moment op hetzelfde punt belanden. Een PII-400 berekent zo'n 140.000 punten per seconde. Dit zou voor de servers een beetje heftig zijn om allemaal te vergelijken met alle andere punten van alle andere ECCp freaks. Wat we dus doen is alleen BEPAALDE punten doorsturen, het zogeheten "distinguished point". Zo'n punt heeft bepaalde eigenschappen en komt maar eens in de zoveel tijd voor.

Je zou zeggen, dan is de kans dat je het goeie punt mist wel erg groot. Maar hier zit de truc: elk punt dat je berekent hangt af van het punt ervoor. Twee computers die op hetzelfde punt terechtkomen zullen dus telkens dezelfde punten vinden, en uiteindelijk zal hier ook een distinguished point uit vloeien, op beide computers. Dat punt wordt gevonden door de twee, gestuurd en vergeleken, we hebben dus k gevonden en kunnen Z berekenen!!

- Hoe doe ik mee?

Download de client op de site, link "The Software". Tijdens de installatie wordt gevraagd om een username en een emailadres. De meeste DPC members zetten de letters '[DPC]' in de username, maar dat hoeft natuurlijk niet. Het is belangrijk om het emailadres wat ingevuld is te onthouden, dit heb je later nodig om team DPC te kunnen joinen. Denk goed na over de username die je invult, want als je later je name wilt veranderen, en je punten bij je oude naam op wilt laten tellen, kan dit alleen door te emailen naar cmonico@nd.edu.

-Hoe werkt het?

In tegenstelling tot RC5 hoef je bij ECCp geen blokjes op te halen. Het project bestaat uit 1 grote doorlopende workunit, waarbij je af en toe een punt krijgt. Gemiddeld krijg je voor iedere 500 miljoen "points computed" 1 "distinguished point". Als je de "Permanent internet connection" optie aangevinkt hebt staan, probeert de client zodra er een point is, deze door te sturen. Je kan ook zelf flushen, door de knop "Send results" te gebruiken. Als dit niet werkt, probeer dan de methode die bij "geen internet verbinding?", later in dit document beschreven is.

"It actually doesn't crunch it in data sets. It just generates a random starting point and crunches indefinitely onward, generating useful output the entire time."

- Instellingen

In het bestand "eccp109.ini" zijn met behulp van een textverwerker de volgende opties te wijzigen:

START_MINIMIZED=0
0 om de client gewoon op te laten starten, 1 om de client geminimalizeerd in de system tray op te laten starten.

PERM_CONN=0
1 om de client elk point dat klaar is gelijk door te laten sturen, 0 om handmatig d.m.v. de "send" knop te flushen (ook handig als je wilt sparen).

NEED_ACK=1
1 in de meeste gevallen, 0 als je problemen met flushen hebt. Als dit de problemen niet oplost, zet 'm dan weer op 1.

#SEND_INTERVAL=hh:mm:ss
het '#' weghalen en een tijd invullen als je wilt dat de client om de zoveel tijd flusht, met een maximum van een uur, ipv direct na elk blokje. Anders niets aan veranderen.

#PROXY=host:port
het '#' weghalen en de proxy naam/proxy IP en poort invullen als je via een proxyserver met het internet verbonden bent. Niets aan veranderen als dat niet het geval is.
Het bestandje 'proxy.txt' wat vroeger gebruikt werd is overbodig geworden.

- Hoe join ik DPC?

Nadat je 1 blokje verzonden (geflushed) hebt kun je op de site, onder de link "Team Stats", op "Dutch Power Cows" klikken. Onder aan deze pagina kun je je aanmelden, met het emailadres wat je bij de installatie van de client ingevoerd hebt.

- Stats?

De stats op de site van ECCp worden op het moment 2 maal per dag geupdate, rond 5.00 uur en 17.00 uur Nederlandse tijd. Deze stats worden verder verwerkt tot een 'Dutch Power Cows ECCp-109 Hitparade', die dagelijks op GoT terug te vinden is.

- Geen internet verbinding?

Ook computers die niet met het internet verbonden zijn kunnen meehelpen. Je kunt het programma gewoon installeren, en laat of een andere computer de resultaten terugsturen, of je meelt ze.
Flushen via een andere computer gaat zo:

1. verplaats het bestand 'dplist' uit de ECCp map van de computer zonder internet naar een floppy (niet copieren, dan ga je punten dubbel sturen de volgende keer).
2. Ga in een DOS venster naar de directory waar ECCp geinstalleerd staat.
3. Zorg dat ECCp UITSTAAT, en tik: type a:\dplist >> dplist
De punten van floppy worden nu toegevoegd aan de punten die zich eventueel nog op de computer met internet bevonden. Deze kunnen nu gewoon met de 'Send Results' knop geflust worden (of automatisch).

Flushen via de mail kan op http://www.nd.edu/~cmonico/eccp109/eccmanual.html. Je kan hier de locatie van de 'dplist' file aangeven, waarna je deze op kan sturen. Als deze verstuurd is moet je 'm van je eigen computer verwijderen (of onder een andere naam opslaan als backup), zodat je de volgende keer niet dubbel flusht.

- Kan ik meerdere pc's op 1 naam laten kraken?

Ja, dat kan. Gewoon overal dezelfde username en emailadres invullen.
In de eccp109 map staat een bestandje userinf.txt, daarin kun je zien wat de huidige instellingen zijn. (formaat "username,emailadres,identificatie". De identificatie is een naam die wordt gebruikt als er problemen zijn, 2 users met dezelfde naam, maar met verschillend emailadres ofzo.. (ja dat kan :( ). Als je wilt kun je dus 2 computers een verschillende identificatie geven, zodat je bij problemen na kunt gaan welke computer de troubles geeft..)

"you can certainly run multiple jobs across different machines with the same handle,email,name. They actually generalte their own random starting point, and never have to download anything from the server. They should all generate unique starting points (at installation time), but to be safe, you could just wait at least a minute or so between installs on different machines"

Je kan ook de client van de ene computer naar de andere copieren:

Copieer de bestanden
- eccp109w.exe (de client zelf)
- eccp109.ini (de userinstellingen)
- userinf.txt (username,emailadres,unieke naam)
naar een map op de andere computer en run de exe, dan maakt ie vanzelf een nieuwe startpoint aan, met dezelfde userinfo.

COPIEER NIET DE HELE MAP, DAN GAAT DE 2E PC GEWOON HETZELFDE WERK STAAN DOEN ALS DE 1E, EN TELT HET WERK MAAR 1X MEE!! (dan staat die 2e pc dus voor nix aan..)

- Hoe krijg ik ECCp en mn koe op 50-50% CPU gebruik?

Met dank aan DukeBox:
Als je dit in de koe ini zet, dan gebruiken ze beide ongeveer 50% (mits je de ECCp client op Low hebt staan)

[processor-usage]
priority=4