RC5-64 - Dein Computer braucht ein Hobby! (von Martin Ebnöther - ventilator@parodia.ch) "Ein von Computern generierter Code ist auch mit Hilfe von Computern wieder zu knacken" - Chaos Computer Club. Im Internet werden schon lange diverse Verschlüsselungsverfahren angewendet. Sicher jedem bekannt ist Pretty Good Privacy (PGP). Je nach Komplexität des verwendeten Verfahrens gestaltet sich ein möglicher Knackversuch mehr oder weniger schwierig. Ein Vorreiter im Entwickeln von Codieralgorithmen sind die amerikanischen RSA-Labors, welche auch den RC5-64 Code entwickelt haben. Um zu beweisen, wie sicher diese Codes sind, haben die RSA-Labor eine ganze Reihe Wettbewerbe gestartet. An diesen Wettbewerben kann grundsätzlich jeder teilnehmen. Jeder kann sein eigenes Programm entwickeln, um die Codes zu überprüfen. distributed.net (http://www.distributed.net) sind einer der Teilnehmer. Als der erste Wettbewerb aufgesetzt wurde haben sie sich überlegt, einen Supercomputer mit hoher Rechenleistung für diese Aufgabe einzusetzen. Jedoch hatten sie noch eine andere Idee, nämlich die Aufgabe auf beliebig viele Computer in der ganze Welt aufzuteilen. Mehr dazu weiter unten. Der erste Wettbewerb war der RC5-30 Code, ein 30 Bit-Code. Dieser wurde in knapp drei Stunden gebrochen. Für den nächsten RC5-40, die 40 Bit-Variante brauchten sie rund drei Tage. Der RC5-56 Code, ein Code mit 56 Bit also, hat da schon etwas länger gedauert und wurde nach 250 Tagen von distributed.net geknackt. Wer mit Bit und Bytes nicht so ganz vertraut ist, hier eine kleine Einführung. Ein Bit ist die kleinste Einheit in einem Computer. Bits können zwei Schaltzustände annehmen: 0 oder 1. Stellen wir uns ein Bit als eine Glühlampe vor, dann haben wir die zwei Zustände Strom fliesst nicht oder Strom fliesst. Mit einer Kombination von zwei Glühlampen können wir nun schon vier 2 hoch 2, 2^2) Zustände darstellen, nämlich: 1. Keine Lampe leuchtet (00) 2. Eine Lampe leuchtet (01) 3. Die andere Lampe leuchtet (10) 4. beide Lampen leuchten (11) Mit drei Glühlampen ergibt das dann schon acht verschiedene Zustände (2^3) und mit vier Glühlampen sind es 16 (2^4). Wir sehen also, dass mit jeder weiteren Glühlampe die wir hinzunehmen die Anzahl möglicher Schaltzustände verdoppelt wird. Von 64 auf 65 Bit sind das immerhin ein Unterschied von rund 18 Trilliarden Möglichkeiten! Wie schon oben erwähnt wird die gigantische Aufgabe auf beliebig viele Computer aufgeteilt, in Blöcke. Der Client holt sich nun eine eingestellte Anzahl Blöcke vom Internet in eine Bufferdatei und beginnt dann, die Codes im ersten Block auszurechnen. Je nach Blockgrösse und CPU-Geschwindigkeit braucht das unterschiedlich lange. Mein P166MMX braucht für einen 2^29 Block (536870912 Codes) ca. eine Dreiviertelstunde. Man könnte nun meinen, dass so ein rechenintensives Programm das System gehörig abbremst. Mitnichten! Der Client benutzt lediglich die nicht benötigte Rechenpower der CPU (IDLE-Time). Deshalb auch der Titel: "Dein Computer braucht ein Hobby!" Gehen dem Clienten die Blöcke aus, weil er zu lange keinen Nachschub mehr bekommen hat, so generiert er auf gut Glück einen Block mit zufälligen Codes und rechnet diesen aus. Jeder kann seinen Computer mitrechnen lassen! Dazu benötigt man lediglich den entsprechenden Client für sein Betriebssystem. Inzwischen gibt es für jedes bekannte oder auch unbekannte Betriebssystem einen Client. Um nur einige zu nennen: Windows 9x/NT (mit MMX-Support!), MS-DOS, Amiga-DOS, Linux und Unix, MacOS, OS/2, BeOS, RiscOS (Archimedes) und andere mehr. Es sind auch Clients für Windows 3.1 und Windows CE geplant. Unter Windows 3.1 kann man aber auch den MS-DOS-Client in einem DOS-Fenster laufenlassen. Warum sollte nun aber jemand hier mitmachen? Nun, zum einen gibt es natürlich auch etwas zu gewinnen, falls man den richtigen Code findet. Von den RSA-Labors ist ein Preisgeld von 10'000 $ ausgeschrieben worden. Benutzt man zum Knacken nun aber einen distributed.net-Client, so geht davon ein Teil weg. 6000 $ werden einer Organisation, die sich fürs Internet einsetzt gestiftet. Auf der Webseite von distributed.net kann man seine Stimme abgeben, wer den Betrag erhalten soll. Unter anderem sind hier die Electronic Frontier Foundation (EFF) oder das Projekt Gutenberg zu finden. Weitere 2000 $ gehen an distributed.net um den Aufwand für die Hardware sowie die Entwicklung der Clients zu finanzieren. 1000 $ bekommt das siegreiche Team (dazu gleich mehr) und 1000 $ bekommt derjenige, der den gesuchten Code gefunden hat. Hat man sich keinem Team angeschlossen, so bekommt man die 1000 $ für's Team auch noch. Allerdings macht es mehr Spass, wenn man gemeinsam "kämpft". =:-) Das allein macht aber noch nicht den Reiz aus, mitzumachen und ein bisschen Rechenzeit zur Verfügung zu stellen. distributed.net führt eine Art High-Score-Liste, wo man genau sieht, wer wieviele Blocks in welcher Zeit ausgerechnet hat. Wie schon gesagt kann man sich zu Teams zusammenschliessen. In der Schweiz gibt es das Swissteam (http://www.distributed.ch), welches sich derzeit auf Rang 23 befindet. Natürlich wollen wir vom Swissteam, wie alle anderen Team auch, möglichst viele Blöcke ausrechnen und unsere Position laufend verbessern. Deshalb sind wir auf Eure Hilfe angewiesen! Wie könnt ihr mithelfen? Nun, das ist einfach. Geht auf die Webseite des Swissteams (http://www.distributed.ch) und downloadet den entsprechenden Client für das Betriebssystem eures Computers. distributed.net haben ausdrücklich darauf hingewiesen, dass ein Schutz vor Viren nur gewährleistet werden kann, wenn die Clients von der offiziellen Site her downgeloadet werden. Deshalb verzichte ich auch darauf, irgendwelche Clients auf die CAC-Box zu laden. Die Programme sind in alle unter 500 KByte lang. Gut. Wenn der Client installiert ist und gestartet wurde können wir beginnen, ihn einzurichten. Ich werde hier nur auf den Windows 95/98/NT-Client eingehen, da ich mich mit Clients für andere Betriebssysteme nicht auskenne. Die "Köpfe" des Swissteams sind aber gerne bereit, bei speziellen Fragen oder Problemen weiterzuhelfen. Ihre E-Mails findet man auch auf der Webseite. Als erstes wird nach der E-Mail-Adresse gefragt. Hier bitte unbedingt die richtige Adresse eingeben, da diese danach auf der High-Score-Liste erscheint und auch für die Team-Zuordnung verwendet wird. Auf der nächsten Registerkarte wird gefragt, wie der Computer mit dem Internet verbunden ist. Leute mit Standleitung wählen "Online always", bei einer Verbindung per Modem (Modem-Dialup) kann man wählen, ob der Client selber eine Verbindung herstellen darf oder nicht (don't trigger auto-dial). Ich habe meinen Client auf letzteres eingestellt. Er merkt automatisch, wenn ich online bin und versucht dann sofort, neue Blöcke zu holen und ausgerechnete zurückzuschicken. Als Nächstes wird der Keyserver eingestellt. Das Swissteam verfügt hier über einen eigenen Proxy. Bei "Keyserver" kommt der Eintrag "rc5.amazing.ch" rein. Der Port bleibt auf 2064. Es ist nicht zwingend notwendig über den Swissteam-Proxy die Blöcke zu beziehen, aber das Swissteam führt eine eigene Statistik, wieviel Blöcke durch den Proxy gegangen sind (http://rc5.amazing.ch). Weiter muss man einstellen, wieviel Blöcke gepuffert werden sollen. Bei Standleitungen kann man hier einen kleinen Wert einstellen. Die Blockgrösse von 2^30 kann so belassen werden. Jetzt kommen die Logbücher dran. Hier kann man einstellen, ob man eine Logdatei erstellen lassen will oder nicht. Der Client errechnet daraus dann eine grafische Darstellung der Keyrate, also der Geschwindigkeit. Hat man mehrere Computer in einem LAN, so kann man sich auch für jeden ausgerechneten Block eine E-Mail zuschicken lassen indem man die Felder entsprechend ausfüllt. Die Maske ist zwar englisch aber weitgehend selbsterklärend. Der Windows-Client hat ein lustiges Feature, und zwar kann man für jeden ausgerechneten Block einen Sound abspielen lassen. Standardmässig sind fünf verschiedene Muh-Samples eingebaut, man kann aber auch sein eigenes Lieblingswave abspielen lassen. Im CPU-Menu sollte der richtige Prozessor ausgewählt werden. Die automatische Abfrage funktioniert in den meisten Fällen zwar, aber normalerweise weiss man ja, was für ein Prozi unter der Haube seinen Dienst verrichtet. Die Task-Priorität kann auf 0 gelassen werden. Mit dieser Einstellung bemerkt man eigentlich nicht, dass der Computer nebenher am Rechnen ist. Einzig bei der CPU-Auslastung wird 100 % angezeigt. Unten kann man noch angeben, wieviele CPUs im Computer arbeiten. Die Einstellung -1 versucht dies selber herauszufinden. Da ich leider nur über einen popeligen Ein-CPU-Pentium verfüge weiss ich nicht, wie gut diese Option funktioniert. Vielleicht gibt mir ja mal jemand ein Feedback..? Zu guter Letzt kann man noch einstellen, ob der Client bei jedem Systemstart automatisch mitgestartet werden soll und ob er versteckt oder sichtbar arbeiten soll. Allerdings solltet ihr immer erst um Erlaubnis zu fragen, bevor ihr irgendwo einen Client installiert. Weder distributed.net noch das Swissteam hat Interesse daran, dass jemand wegen RC5 seinen Job verliert. Da verzichten wir lieber auf die zusätzlichen Blöcke. Fragen kann aber nie schaden! So, nun kann der Client mal ein paar Blöcke ausrechnen. Etwa 24 Stunden nachdem der erste ausgerechnete Block zurückgeschickt wurde müsst ihr eure Teamzugehörigkeit einstellen. Surft dazu nach http://rc5stats.distributed.net. Dort sucht ihr bei "Search for E-Mail" nach eurer eigenen E-Mail-Adresse. Dann wird euch euer aktueller Rang angezeigt. Klickt nun auf eure E-Mail-Adresse. Es werden euch detailliertere Angaben angezeigt wie z.B. Anzahl ausgerechnete Blöcke, wann der letzte Block gesendet wurde etc. Unten auf der Seite befindet sich ein Feld und ein Button, mit dem man seinen Eintrag editieren kann. In das Feld müsst ihr euer Passwort eintragen. Durch Mausklick kann man sich dieses Passwort per E-Mail zuschicken lassen. Wenn ihr das Passwort eingetragen habt, dann könnt ihr nun eure Teamzugehörigkeit eintragen. Das Swissteam würde sich natürlich freuen, wenn ihr bei uns mitmachen würdet. Das Swissteam hat den Code 626. Bei der wohltätigen Organisation könnt ihr selber auswählen, welche begünstigt wird. Für weitere Fragen bezüglich RC5 stehe ich sowie auch die verantwortlichen des Swissteam gerne Red und Antwort. Und denkt immer dran: Euer Computer braucht ein Hobby - RC5! .