Die GUI-Gruppe wird versuchen, bis nächste Woche die Schlüsselübertragung zu implementieren. Diese Aufgabe könnt ihr mit Alexander und Oleg zusammen lösen. Ihr habt den Überblich darüber wie genau das funktionieren soll. Achtet auch dadrauf, das folgende Informationen mit dem Schlüssel übermittelt werden sollen:
Ihr habt übrigens eine Variable int für den Timestamp definiert, beim Key Objekt ist dies hingegen eine Variable vom Typ long. Wir sollten uns dort auf einen Standard einigen.
In der Datenbank brauchen wir in der User Tabelle noch ein Feld RSAKey. Dort soll
für jeden User der öffentliche Schlüssel als String gespeichert werden.
Für die Schlüsselübermittlung brauchen wir ein Protokoll. Da
der Schlüssel bei Public-Key-Verfahren im Klartext übertragen werden kann,
sollte dies kein Problem sein. Am besten fügt man in der Klasse ServerParser
ein Tag SETRSAKEY ein. Genauso müssen die Schlüssel von jedem User
abrufbar sein, d.h. mit einem Tag GETRSAKEY mit einem id-Attribut wird der RSA-Key
des Buddies mit der entsprechenden id zurückgeliefert.
Für die Private-Key-Verfahren werden die Schlüssel von Client zu Client
übertragen. Überlegt euch, wie man die Message Klasse erweitern kann,
so daß man außer normalen Nachrichten auch Schlüssel
übertragen kann. Der Einfachheit halber sollten wir zuerst den
Schlüssel im Klartext übertragen, um dann im nächsten Semester
auf Diffie-Hellman umzustellen.
Siehe letzte Aufgabe. Wäre schön, wenn bis nächste Woche die Daten (Buddylisten, etc.) in der Datenbank liegen und gelesen/geschrieben werden können. Arbeitet auch mit der GUI Gruppe zusammen, um das Verschicken der Nachrichten korrekt zu implementieren.
Die Einbindung der hsql Datenbank klappt ja schon. Wir brauchen jetzt noch eine Datenbankschnittstelle, um die Daten für Users, etc. in die Datenbank einzufügen. Schaut mal, wie weit ihr damit bis nächste Woche kommt.
Arbeitet noch an der Client-to-Client Kommunikation. Überlegt euch, wie die XML Datei für verschlüsselte Nachrichten aussehen muß. Z.B. muß für die Blockchiffren die Länge des Klartextes übermittelt werden.
Schaut euch auch mal die Datenbank hsqldb an, vielleicht kann man diese für unsere Zwecke mißbrauchen...
Die verschlüsselten Nachrichten sollen nicht über den Server weitergeleitet werden, sondern werden direkt von Client zu Client geschickt. Für diese Aufgabe brauchen wir also eine zusätzliche Schnittstelle. Bis zum Donnerstag werde ich Datenbank sowie CVS Server am laufen haben. Danach könnt ihr die statischen Listen für User etc. löschen und die Datenbankschnittstelle implementieren.
Wie beim letzten Treffen besprochen sollt ihr den XML Parser für den Client fertig programmieren. Die einzelnen Methoden für die Netzwerkkommunikation mit dem Server sollten am Donnerstag dem GUI Team vorgestellt werden. Bitte gebt mir Bescheid, ob ihr einen Beamer dafür braucht.
Die Netzwerkschnittstelle soll nächste Woche der GUI Gruppe vorgestellt werden, damit man zumindest die Verbindung zum Server herstellen kann.
Für die public-key-Verfahren benötigen wir bald auch eine Public-Key-Infrastruktur. Lest euch doch schon einmal in dieses Konzept ein (Kapitel 17 im Buchmann). Macht euch außerdem Gedanken, wie man die Schlüssel für die private-key Verfahren am besten verwaltet. Speichern in einer ungeschützten Datei auf der Festplatte ist vielleicht nicht die beste Lösung...
Ich hoffe, dass bis nächste Woche die Datenbank steht. Vielleicht überlegt ihr euch schon einmal, welche Tabellen erstellt werden müssen, etc.
Die Netzwerkgruppe soll die Kommunikationsschnittstellen
für Client und Server festlegen. Außerdem
sollte man sich Gedanken darüber machen, welche
Funktionen der Server bereitstellen muß, damit
die Clients sich ordnungsgemäß anmelden
können, Buddy Lists bekommen, etc.
Ihr könnt auch gerne schon anfangen etwas zu programmieren :)