MuSig ist online

Veröffentlicht in Software Programmierung mit Tags , , , , , , , , , , , , , , am November 10, 2008 von g1o2k4

Nach ca. 3 Monaten Arbeit ist es soweit. Das neuste Projekt ist fertig. Mit dieser Website kann man Musikstücke suchen. Sofern das Lied in der Datenbank gefunden wurde, kann man den Song mit allen Songs der Datenbank vergleichen. Als Ergebnis erhält man ähnlich klingende Songs. Mit MuSig-Search kann man also nach Musik vom gleichen Genre suchen. Es soll helfen gezielt Musik zu finden, die dem Geschmack des Nutzers entspricht.

Da der Server nur bei mir zu Hause steht, ist etwas Geduld erforderlich bis das Ergebnis erscheint, solange nicht mehr als 10 Leute gleichzeitig eine Anfrage starten sollte die Wartezeit aber annehmbar sein.

Viel Spaß.

(Auf Grund der Nebenkosten, die bei einem Dual-Xeon Server innerhalb eines Monats entstehen (50€+ :P ) habe ich den Server erstmal wieder vom Netz genommen. Geplant ist das Projekt zu einer lokalen Stand-Alone Version umzuschreiben.)

RSA Chat Update

Veröffentlicht in Generelles, Kryptologie mit Tags , , , , , , , , , , am Juli 7, 2008 von g1o2k4

Hallo zusammen.

Ich habe eine neue Version vom RSA Chat released. Der RSA-Private-Key liegt jetzt, mit einem Session-Key verschlüsselt, im RAM. Außerdem werden jetzt die Port und Keysize Settings in einem ini-File gespeichert und von dort beim Start ausgelesen, d.h. wenn man sie ändert und speichert, muss erst das Programm erst neustarten bevor die Änderungen eintreten.

(Im RSA Chat – Thread ist auch die neue Version eingefügt.)

Download

RSA Chat

Veröffentlicht in Kryptologie, Software Programmierung mit Tags , , , , , , , , , am Juni 24, 2008 von g1o2k4
Nabend.

Nachdem ich hier schon das RSA Blockchiffre Programm vorgestellt habe; hier nun auch das neueste Projekt:
Ein Chat, der die Nachrichten mit eben dieser RSA Blockchiffre verschlüsselt.

Das programm ist ziemlich sicher, solange niemand euren RAM ausliest. Ich werde irgendwann noch einbauen, dass die Schlüssel verschlüsselt im RAM stehen… aber für’s Erste reicht das. (Edit: in der aktuellen Version bereits integriert.)

Ihr müsst lediglich beim Starten die RSA Keysize und den Port angeben. Die Keysize sollte zwischen 128 und ca 1024 sein, wobei bei 1024 fast immer Fehlermeldungen kommen, aber bis 512 kann man locker gehen.
Der angegebene Port muss natürlich noch im Router freigeschaltet werden…
Dann auf “Connect to…” klicken und die Server Adresse (z.b. dyndns oder IP) eingeben.

Wenn ihr das Programm auf eurem System testen wollt, müsst ihr zuerst eine Application starten, dort im Menu “Listen” deaktivieren und dann die nächste exe starten, denn unter Windows dürfen nicht mehrere ServerSockets auf einem System aktiv sein. Anschließend mit der exe, in der “Listen” deaktiviert ist zu der anderen connecten, indem ihr “localhost” (oder 127.0.0.1) bei “Connect to…” eingebt.

RSA Blockcipher

Veröffentlicht in Generelles, Kryptologie, Software Programmierung mit Tags , , , , , , , am Juni 13, 2008 von g1o2k4

Servus.

RSA-Blockchiffre

Es war etwas kniffelig, aber jetzt ist es geschafft. Ich habe ein Programm für RSA Blockchiffre geschrieben. Damit ist es möglich beliebig lange Texte mit RSA zu verschlüsseln.

Das Programm nimmt einem alles ab – vorallem das rechnen :P – man muss lediglich den zu verschlüsselnden Text und die Bitgröße des Schlüsselpaares eingeben, was generiert werden soll. Wahlweise kann man auch eigene Schlüsselpaare eingeben, wenn man schon welche hat. Anschließend klickt man auf “encrypt” zum verschlüsseln und “decrypt” zum entschlüsseln. Man kann auch einen bereits mit dem Programm verschlüsselten Text per Email/ICQ/etc versenden und derjenige am anderen Ende der Leitung kann es mit dem Programm wieder lesbar machen. Dazu muss man allerdings das System des Schlüsseltausches verstanden haben:

Ein Schlüsselpaar besteht aus drei Komponenten: dem Public Key, dem Private Key und dem Modul. Man generiert sich mit dem Programm ein paar für sich selbst. Dazu stellt man z.b. 256 oder 512 Bit ein und klickt auf “encrypt”. Jetzt stehen oben die generierten Schlüsselkomponenten, die man abspeichert (speichern einfach mit den vorgesehenen Felder und die Buttons an der Seite ändern, je nachdem ob man für sich selbst ver-/entschlüsseln möchte, oder für den Gesprächspartner).

Den Public Key und das Modul schickt ihr eurem Gesprächspartner, er tut dasselbe mit seinen generierten Schlüsselkomponenten. (Vorsicht! Der Private Key muss geheim bleiben, außer euch selbst darf ihn NIEMAND wissen !!!)

Um jetzt eine Nachricht für euer Gegenüber zu verschlüsseln, gebt ihr links eure Nachricht ein. Anschließend gebt ihr im Feld für den Public Key, den Public Key eures Gesprächspartners ein und in das Feld für das Modul, sein Modul. Jetzt klickt auf “encrypt” und verschickt die verschlüsselte Nachricht die nun rechts erschienen ist.

Euer gegenüber kopiert die erhaltene, verschlüsselte Nachricht in sein rechtes Feld, gibt bei den Schlüsselkomponenten seinen Private Key und sein Modul ein und klickt auf “decrypt”. Jetzt erscheint bei ihm die Nachricht, die ihr ihm geschickt habt, als Klartext im linken Feld.

Download RSA_Blockcipher

Wie funktioniert das Ganze ? Ich beschreibe mal den Weg von Klartext zum verschlüsselten und codierten Text. Als erstes hat man hat man einen ganz normalen String (”test”). Dieser wird so umgewandelt, dass jeder character durch seinen entsprechenden ASCII-Wert ersetzt wird (”116101115116″, t: 116, e: 101, s: 115). Da bei RSA das, was verschlüsselt wird (in diesem Fall “116101115116″) numerisch nicht größer sein darf als das Modul muss geprüft werden, ob das der Fall ist. D.h. der Text wird so zusammengefasst, dass immer eine bestimmte Anzahl von Zeichen (hier Werte aus 3 Ziffern) in einem Block stehen. Die Zeichenlänge des Blocks ist gleich der Zeichenlänge des Moduls. Sofern sich die Zeichenlänge des Moduls nicht grade durch 3 ohne Rest teilen lässt, wird der Rest des Blocks mit Nullen aufgefüllt. Bei einer Modulzeichenlänge von 5 ergibt das in unserem Fall: 00116001010011500116 (erster Block 00116 usw.)

Das entspricht einem Zeichen (á 3 Ziffern) pro Block, der Rest wird wie gesagt mit Nullen ergänzt, um eine immer gleichbleibende Blocklänge zu erhalten.

Jetzt wird jeder dieser Blöcke einzeln mit dem RSA-Verfahren verschlüsselt. Falls das Ergebnis nicht mehr gleich der Modulzeichenlänge ist, wird wieder mit Nullen aufgefüllt. Alle verschlüsselten Blöcke werden aneinander gereiht. Das ist das fertige Ergebnis der Verschlüsselung.

Bein Entschlüsseln wird dieser ganze Vorgang einfach Rückwärts wiederholt.

Das tolle an dem Ganzen ist, dass bei genügend großer Schlüssellänge (Bitsize) der verschlüsselte Text im Prinzip imun gegen Kryptoanalyse ist ! Außerdem haben Public-Key-Kryptosysteme doch generell was für sich oder ? :)

(P.S.: Das Programm ist nicht Beta-getestet, also keine Garantie auf funktionstüchtigkeit oder entstehenden Schaden. Grenzfälle können unter Umständen komische Ergebnisse liefern!)

Große Zahlen in Delphi.

Veröffentlicht in Kryptologie, Software Programmierung mit Tags , , , , , , , , , , am Mai 5, 2008 von g1o2k4

Problem!

Das Problem

Lösung

Klick

Die BigNum2.pas von Sebastian Jänicke. Mit dieser Unit ist es möglich (fast) beliebig große Zahlen in Delphi miteinander zu verrechnen. Der neue Typ TBigNumber, den die Unit liefert, ist ein Array aus Bytes. Da diese Arrays im RAM angelegt werden, können die Zahlen so lang sein wie der RAM freie Bytes hat :P aber auch nur veralgemeinert gesprochen.

Ein Test

Ich habe als Test einfach mal das RSA-Verschlüsselungs-Verfahren implementiert und die RSA-Funktionen in eine .dll ausgelagert. (Wenn Interesse an der dll besteht, kann die mit Dokumentation hochladen)

RSA.dll Test

Der Text links wird im dem Programm als Zeichenvektor bzw Stringvektor (für lange Zahlen) gespeichert und Buchstabe für Buchstabe nach dem RSA-Verfahren verschlüsselt.

Zur Erinnerung: Das RSA-Verfahren arbeitet wie folgt.

(Nachricht ^ Schlüssel) modulo Schlüssel-Modul

Die “Nachricht” ist der ASCII-Wert der zu verschlüsselnden Zeichens. Der Schlüssel ist ‘e‘ beim verschlüsseln und ‘d‘ beim entschlüsseln. Das Schlüssel-Modul ist ‘n‘. (Rote Zeichen im Bild sind die Schlüsselparameter)

Die Basis beim Verschlüsseln ist eine 3-stellige Zahl, der Exponent beim verschlüsseln lautete 267.657.413 und doch betrug die Berechnungsdauer nur 45ms !

Da steckt ein Trick dahinter ! Würde man einfach xxx^267657413 (xxx<256) rechnen, dürfte man lange warten. Das Geheimnis liegt in der Diskreten Exponentialfunktion. Das Prinzip ist auf Wikipedia recht gut erklärt.

In Delphi mit der BigNum2.pas implementiert sieht es wie folgt aus:

if bigexp = true then // geschickte methode
begin
while BM_CompareNC(k, BMD_StrToBigNum(’1′, false)) do
begin
gu := BMD_BigNumToStr(BM_Modulo(k, BMD_StrToBigNum(’2′, false)), false);
if gu = ” then
gu := inttostr(0);
if strtoint(gu) = 1 then
begin
e := BM_Multiply(e, m);
e := BM_Modulo(e, n);
end;

m := BM_Multiply(m, m);
m := BM_Modulo(m, n);

keystring := inttostr(strtoint(keystring) shr 1);
k := BMD_StrToBigNum(keystring, false);
end;
result := e;
end;

Die Variable ‘gu’ steht hierbei für gerade/ungerade und dient im Prinzip zur binären Verarbeitung von k, da geprüft wird ob in der binären Schreibweise von k, das ganz rechte Zeichen (kleinste 2er Potenz) eine 1 ist oder anders ausgedrückt, ob k gerade oder ungerade ist. Das Ergebnis liefert die Rechnung k modulo 2.

Darunter ist die Diskrete Exponentialfunktion implementiert.

Die RSA.dll liefert außer dem RSA-Algorithmus für BigInt auch noch einen der das Ergebnis als int64 zurückgibt, sowie einen RSA-Schlüssel-Generator.

Java FTW !

Veröffentlicht in Generelles mit Tags , , am April 21, 2008 von g1o2k4

hmmmm lecker...

Perfekt oder ?

Nostalgische Gefühle an einem Samstag Abend….

Veröffentlicht in About Me, Generelles mit Tags , , am September 29, 2007 von g1o2k4

Ach ja das waren noch Zeiten. – Zeiten in denen Spiele noch eine vernünftige Storyline und Atmosphäre hatten!

und noch mal in groß: Bild1 Bild2

RSA-Gadget nun auch bei Sourceforge.net

Veröffentlicht in Generelles, Kryptologie, Software Programmierung mit Tags , , , , , , , , am September 8, 2007 von g1o2k4

Wie versprochen, habe ich nun auch das 2. Programm hochgeladen.

Link

Natürlich ist dieses Programm in keinster Weise mit richtigen RSA-Modulen zu vergleichen. Es wäre einige Veränderungen notwendig, um an solche heranzureichen. Die Schlüssellänge ist schlicht zu gering, außerdem steht der Private Schlüssel unverschlüsselt, also für alle sichtbar im Arbeitsspeicher. Um einen ausreichenden Sicherheitsstandard gewährleisten zu können müsste man all diese Aspekte überarbeiten. Also benutzt das Programm nicht, wenn es um wirklich sensible Informationen geht, dafür gibt es bessere Lösungen !

XorCryptx bei Sourceforge.net

Veröffentlicht in Generelles, Kryptologie, Software Programmierung mit Tags , , , , , , , am Juli 7, 2007 von g1o2k4

Sourceforge.net ist eine wirklich großartige Plattform für alle Hobby- und Open Source Programmierer, um ihre Software und den Quellcode zu veröffentlichen. Auch das Management eines Software Projekts mit mehreren Mitarbeiten wird durch Sourceforge wirklich erleichtert und unterstützt. Und das kostenlos…

Ich habe zum Test auch mal was hochgeladen:

Link

Das RSA Projekt folgt vermutlich auch in den nächsten Tagen.

Besondere Lernleistung – Kryptologie

Veröffentlicht in Generelles, Kryptologie, Software Programmierung mit Tags , , , , , , , , , , , , , am Mai 31, 2007 von g1o2k4

Endlich ist sie fertig. Nach einem Jahr harter Arbeit und Recherche…

Die Arbeit beschreibt die Unterschiede zwischen symmetrischer und asymmetrischer Kryptographie. Außerdem gibt sie einen kurzen historischen Überblick, sowie zwei Programmierbeispiele zu beiden kryptologischen Gebieten.

Das Thema asymetrische Kryptosysteme wird speziell am Beispiel des RSA-Verfahrens dargelegt.

Besondere Lernleistung – Kryptologie von Benedikt Alexander Welp

Quelltext Programm 1 Teil 1/2 (XorCryptx)
Quelltext Programm 1 Teil 2/2 (XorCryptx)
Quelltext Programm 1.1 Beta (XorCryptMT Beta)
Quelltext Programm 2 (RSA-Verfahren)

Alles zusammen (Rar-Archiv):

Download

Die compilierten Programme plus Quelltexte sind hier zu finden:

Download XorCrypt_Projektordner

Beschreibung: In diesem Projektordner sind das normale XorCryptx und XorCryptMT Beta zu finden. Sie verdeutlichen die Methode der symmetrischen Kryptologie. Bei XorCryptMT Beta handelt es sich um eine Multi-Threading (MT) Version des Programms XorCryptx, allerdings halt in der Beta Version. Der Sinn dieser Version ist es, die anliegende Arbeit auf mehrere Threads aufzuteilen, die dann parallel von mehreren CPUs abgearbeitet werden können, was eine Performancesteigerung im Bereich der Kryptoanalyse bietet. (Beispiel: Bild1 | Bild2 )

Download RSA_Projektordner

Beschreibung: In diesem Ordner findet man das schlichte RSA-Beispiel-Programm und eine weiterentwickelte Version mit Netzwerk-Funktion und simplen Schlüsselmanagementsystem. (Ein sehr hilfreicher Link zum Thema Netzwerk Protokolle in Delphi ist: Link )

Besondere Lernleistung zum Thema Symmetrische und Asymmetrische Krypto-Verfahren unter besonderer Berücksichtigung des RSA-Algorithmus