Bonus Aufgabe

karatsiolis
Mausschubser
Mausschubser
Beiträge: 58
Registriert: 19. Apr 2006 10:55

Bonus Aufgabe

Beitrag von karatsiolis »

Die Bonus Aufgabe ist online:

Details zu der Aufgabe werden wir naechste Woche in der Vorlesung besprechen.

karatsiolis
Mausschubser
Mausschubser
Beiträge: 58
Registriert: 19. Apr 2006 10:55

Re: Bonus Aufgabe

Beitrag von karatsiolis »

Die Java sources und eine ausfuehrliche Dokumentation sind online gesteht. Im Abschnitt 6 des Dokuments wird auch das Problem mit der Signaturfunktion angesprochen. Bitte benutzen Sie dieses Forum um Probleme bei der Installation des Plugins zu besprechen.

d_s
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 134
Registriert: 24. Jan 2008 17:27

Re: Bonus Aufgabe

Beitrag von d_s »

Ehrlich gesagt: Ich finde die Bonusaufgabe problematisch. Ich will das kurz begründen:
  • Der Sinn des Plugins ist mir nicht klar geworden. Thunderbird spricht doch schon von sich aus S/MIME; warum sollte man das nochmal implementieren?
  • Man benötigt anscheinend zusätzliche Hardware, denn die TUDCard wird zumindest für die Entschlüsselung verwendet. In der Doku steht zwar, dass das sei noch nicht der Fall, aber der Code sagt definitiv etwas anderes.
  • Beim Code sind mir auf den ersten Blick ein paar Sachen aufgefallen:
    • Die BouncyCastle-Krypto-Bibliothek wurde modifiziert (diese Quellen fehlen übrigens): unschön.
    • Es wird die Klasse "tudcard.TUDCard" verwendet, die ebenfalls nicht im Quelltext vorliegt.
    • Die Kommentare sind teils nicht sonderlich hilfreich (Beispiel: "//#################### bis Hier ###########################################")
    • Die interessanten Stellen von ReadEncryptedEMail.java sind nicht kommentiert.
    • Der Content Type des Attachments lässt sich ziemlich einfach setzen, wenn man einen Blick in den Code wirft und 5 Minuten für Internetrecherche investiert (hab es getestet: es funktioniert).
    • Signatur-Code ist anscheinend noch keiner vorhanden, d.h. den müsste man komplett neu implementieren. Der Aufwand dafür könnte grob geschätzt bei der Hälfte der bisher geleisteten Arbeit sein (für jemanden, der sich noch in BouncyCastle einarbeiten muss). Für die bisherige Arbeit gab es allerdings auch ein Praktikum für 3 Personen mit immerhin 6 CP, wenn ich das richtig verstanden habe. Der Aufwand ist also für eine Bonusaufgabe recht hoch.
    • Entschlüsselte Mails werden vom Java-Server im Klartext auf der Festplatte gespeichert. Auch wenn sie hinterher gelöscht werden: Auf der Platte sind sie trotzdem noch lesbar, bis sie durch andere Daten überschrieben wurden. Sowas sollte man mit geheimen Daten nicht tun.
Grundsätzlich halte ich Bonussysteme für gut und nützlich. Bei dieser Ausgestaltung bin ich allerdings eher skeptisch, zumal die eigentliche Schwierigkeit bei der Aufgabe (Einarbeitung in Extension-Entwicklung und BouncyCastle) nicht so viel mit dem Vorlesungsthema zu tun hat.

Nun zum konstruktiven Teil dieses Beitrages ;)

Ich würde vorschlagen, eine alternative Bonusaufgabe zu stellen. Dazu ein paar Ideen, wofür Boni vergeben werden könnten:
  • Schreiben von Wiki-Artikeln über Themen der Vorlesung (oder Verwandtes), die dann in einem Wiki zur Vorlesung veröffentlicht werden, so dass auch Kommilitonen davon profitieren können, wenn sie den Stoff lernen (wurde letztes Jahr in KN1 sehr erfolgreich durchgeführt, sogar einen Preis haben die Veranstalter dafür bekommen).
  • Beteiligung an Erstellung eines Skriptes für die Vorlesung, beispielsweise in Wiki-Form
  • Beteiligung an der Weiterentwicklung/Fehlerbehebung bei für das Themenfeld relevanter Software; d.h. Schreiben von Patches für z.B. GnuPG, (J)CrypTool, ...
Vielleicht gibt es ja auch noch andere gute Ideen.

a_nickol
Mausschubser
Mausschubser
Beiträge: 100
Registriert: 27. Okt 2005 10:33
Kontaktdaten:

Re: Bonus Aufgabe

Beitrag von a_nickol »

hat es bei dir direkt ohne probleme gestatet? unter linux bekomme ich den fehler

Code: Alles auswählen

Exception in thread "main" java.lang.NoClassDefFoundError: LocalServer
Caused by: java.lang.ClassNotFoundException: LocalServer
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: LocalServer.  Program will exit.
die argumente und classpath scheinen aber richtig gesetzt zu sein. wahrscheinlich liegts am ordner indem der befehl ausgeführt wird

karatsiolis
Mausschubser
Mausschubser
Beiträge: 58
Registriert: 19. Apr 2006 10:55

Re: Bonus Aufgabe

Beitrag von karatsiolis »

d_s hat geschrieben:Ehrlich gesagt: Ich finde die Bonusaufgabe problematisch. Ich will das kurz begründen:
  • Der Sinn des Plugins ist mir nicht klar geworden. Thunderbird spricht doch schon von sich aus S/MIME; warum sollte man das nochmal implementieren?
Zwei Sachen sind die Motivation:
1) Damit man in Thunderbird mit einer smart card signieren und entschlüsseln kann, braucht man eine spezielle Bilbiothek die PKCS11 heisst (Kapitel 6 der Vorlesung, kommt noch). Wenn man diese Abhaengigkeit nicht mehr möchte kann man diese Funktionlität als ein Plugin implementieren.
2) Thunderbird kann momentan nur herkömmliche Kryptosysteme wie RSA, DSA, Triple-DES usw. Wenn man mit Java das machen könnte wäre möglich den FlexiProvider zu benutzen. Der FlexiProvider implementiert sehr viele innovative Kryptosysteme. Es wäre schön mit den signieren und verschlüsseln zu können.
d_s hat geschrieben: [*] Man benötigt anscheinend zusätzliche Hardware, denn die TUDCard wird zumindest für die Entschlüsselung verwendet. In der Doku steht zwar, dass das sei noch nicht der Fall, aber der Code sagt definitiv etwas anderes.
Mann kann relativ einfach diese Funktion ersetzen. Einfach den verschlüsselten Schlüssel nicht an der TUDCard decrypt funktion schicken sondern an eine software Implementierung davon. Allerdings die Versclüsselung ist nicht Gegenstand der Aufgabe.
d_s hat geschrieben:[*] Beim Code sind mir auf den ersten Blick ein paar Sachen aufgefallen:
  • Die BouncyCastle-Krypto-Bibliothek wurde modifiziert (diese Quellen fehlen übrigens): unschön.
Das fehlt. Das liegt daran dass das Plugin nicht von mir implementiert worden ist und ich nicht alle Details kenne. Ich stelle diese Sachen zusätzlich ins Netz. Dafür ist auch das Forum gedacht um solche Probleme zu melden. Danke für den Hinweis!
d_s hat geschrieben: [*]Es wird die Klasse "tudcard.TUDCard" verwendet, die ebenfalls nicht im Quelltext vorliegt.
Man braucht diese Implementierung nicht. Am besten versuchen Sie Ihre Tests mit software tokens zu realisieren. Mit einer Karte wird alles komplizierter (man braucht Kartenleser usw.). Eigentlich eine sign Funktion ist mehr oder weniger eine Funktion die ein byte[] Input hat (to be signed data) und ein byte[] output (die signatur). Dann kann man sehr schnell die Implementireung tauschen von einem softtoken zu einem hardtoken.
d_s hat geschrieben:[*]Die Kommentare sind teils nicht sonderlich hilfreich (Beispiel: "//#################### bis Hier ###########################################")
Stimmt. Allerdings es war mehr eine Aufgage zum experimentieren, deswegen war nicht so grosse Wert auf die Software engineering Seite gesetzt.
d_s hat geschrieben: [*]Die interessanten Stellen von ReadEncryptedEMail.java sind nicht kommentiert.
Gern kann ich da konkreter Hinweise geben
d_s hat geschrieben:[*]Der Content Type des Attachments lässt sich ziemlich einfach setzen, wenn man einen Blick in den Code wirft und 5 Minuten für Internetrecherche investiert (hab es getestet: es funktioniert).
Das ist doch prima. Der Bonus wird einfach zu bekommen sein.
d_s hat geschrieben: [*]Signatur-Code ist anscheinend noch keiner vorhanden,
Das habe ich auch erst gestern festgestellt. Ich verusche die Enwicklern zu kontaktieren um zu erfahren ob diese Quellcode noch vorhanden ist.
d_s hat geschrieben: d.h. den müsste man komplett neu implementieren. Der Aufwand dafür könnte grob geschätzt bei der Hälfte der bisher geleisteten Arbeit sein (für jemanden, der sich noch in BouncyCastle einarbeiten muss). Für die bisherige Arbeit gab es allerdings auch ein Praktikum für 3 Personen mit immerhin 6 CP, wenn ich das richtig verstanden habe. Der Aufwand ist also für eine Bonusaufgabe recht hoch.
Das ist aber nicht der Fall. Das Praktikum hatte viele Aspekte die nicht selbstvestaendlich sind. Ich nenne ein Paar:
1) Java-basiertes Plugin. Es ist nicht so einfach eine Java Anwendung von Thunderbird zu benutzen.
2) Die Implementierung der Kartenfunktionen
3) Die Erfolgreiche Entschlüsselung
4) Die fast-erfolgreiche Signatur.
5) Die Erzeugung eines Plugins für Thunderbird.
6) Dokumentation

Alles diese Sachen muss man fuer diese Aufgabe nicht machen. Die bekommt man umsonst. Sogar wenn der Signatur code noch vorhanden ist dann wird die BonusAufgabe noch einfacher. Also ich finde die Proportionen angemessen. Ich versuche auch Sie bei der Aufgabe zu begleiten. Gründsätzlich bin ich die ganze Zeit erreichbar. Wenn grosse Interesse von Ihre Seite gibt dann wird eine Sprechstunde geben.
d_s hat geschrieben: [*]Entschlüsselte Mails werden vom Java-Server im Klartext auf der Festplatte gespeichert. Auch wenn sie hinterher gelöscht werden: Auf der Platte sind sie trotzdem noch lesbar, bis sie durch andere Daten überschrieben wurden. Sowas sollte man mit geheimen Daten nicht tun.[/list][/list]
Mann konnte diese auch im Memory speichern. Dann ist die Memory der Angriffspunkt. Die jetztige Implementierung ist ein Proof-Of-Concept. Die ist keine fertige Implementierung. Gern wenn man spezielle Features implementieren möchte kann mit einer Absprache mit uns machen und dann sein Bonus erhöhen.
d_s hat geschrieben: Grundsätzlich halte ich Bonussysteme für gut und nützlich. Bei dieser Ausgestaltung bin ich allerdings eher skeptisch, zumal die eigentliche Schwierigkeit bei der Aufgabe (Einarbeitung in Extension-Entwicklung und BouncyCastle) nicht so viel mit dem Vorlesungsthema zu tun hat.
Aber mann muss private Schluessel und Zertifikate erzeugen um die Anwendung zu testen, Signatur funktionen aufrufen, mit S/MIME spielen. Das ist reine PKI Stoffe.
d_s hat geschrieben: Nun zum konstruktiven Teil dieses Beitrages ;)

Ich würde vorschlagen, eine alternative Bonusaufgabe zu stellen. Dazu ein paar Ideen, wofür Boni vergeben werden könnten:
  • Schreiben von Wiki-Artikeln über Themen der Vorlesung (oder Verwandtes), die dann in einem Wiki zur Vorlesung veröffentlicht werden, so dass auch Kommilitonen davon profitieren können, wenn sie den Stoff lernen (wurde letztes Jahr in KN1 sehr erfolgreich durchgeführt, sogar einen Preis haben die Veranstalter dafür bekommen).
  • Beteiligung an Erstellung eines Skriptes für die Vorlesung, beispielsweise in Wiki-Form
  • Beteiligung an der Weiterentwicklung/Fehlerbehebung bei für das Themenfeld relevanter Software; d.h. Schreiben von Patches für z.B. GnuPG, (J)CrypTool, ...
Vielleicht gibt es ja auch noch andere gute Ideen.
Diesen Vorschlag ueberlegen wir noch.

Ich finde sehr schön solche Themen ins Forum zu lesen. Dadurch wird die Aufgabe und die Zusammenarbeit besser.

a_nickol
Mausschubser
Mausschubser
Beiträge: 100
Registriert: 27. Okt 2005 10:33
Kontaktdaten:

Re: Bonus Aufgabe

Beitrag von a_nickol »

a_nickol hat geschrieben:hat es bei dir direkt ohne probleme gestatet? unter linux bekomme ich den fehler

Code: Alles auswählen

Exception in thread "main" java.lang.NoClassDefFoundError: LocalServer
Caused by: java.lang.ClassNotFoundException: LocalServer
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: LocalServer.  Program will exit.
die argumente und classpath scheinen aber richtig gesetzt zu sein. wahrscheinlich liegts am ordner indem der befehl ausgeführt wird
unter windows geht es einwandfrei :-(

karatsiolis
Mausschubser
Mausschubser
Beiträge: 58
Registriert: 19. Apr 2006 10:55

Re: Bonus Aufgabe

Beitrag von karatsiolis »

d_s hat geschrieben:[*]Der Content Type des Attachments lässt sich ziemlich einfach setzen, wenn man einen Blick in den Code wirft und 5 Minuten für Internetrecherche investiert (hab es getestet: es funktioniert).
karatsiolis hat geschrieben:Das ist doch prima. Der Bonus wird einfach zu bekommen sein.
Das Problem liegt daran den content-type vom Header und nicht den vom Attachment zu aendern. Z.B. Eine signierte Email sieht so aus:


Date: Thu, 23 Apr 2009 14:26:28 +0200
From: karatsio <karatsio@cdc.informatik.tu-darmstadt.de>
User-Agent: Thunderbird 2.0.0.21 (Windows/20090302)
MIME-Version: 1.0
To: karatsio@cdc.informatik.tu-darmstadt.de
Subject: (kein Betreff)
Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="------------ms040101060604030903030707"

This is a cryptographically signed message in MIME format.

--------------ms040101060604030903030707
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit



--------------ms040101060604030903030707
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIJqDCC ........
BNAwggO4oAMCAQICAiF+MA0GCSqGSIb3DQEBBQUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK
EwxUVSBEYXJtc3RhZHQXAAAA==
--------------ms040101060604030903030707--

Diese Zeile:

Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="------------ms040101060604030903030707"

muss erzeugt werden.

bagotios
Mausschubser
Mausschubser
Beiträge: 72
Registriert: 1. Dez 2004 15:54

Re: Bonus Aufgabe

Beitrag von bagotios »

karatsiolis hat geschrieben: Diese Zeile:

Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="------------ms040101060604030903030707"

muss erzeugt werden.
Ich muss sagen ich bin recht schlechter Dinge das dies möglich ist. Man kann den Content-Type beim senden nicht per 'gMsgCompose.compFields.type' festlegen. Ich habe auch keinen Anhaltspunkt gefunden wie Thunderbird dies tut aber es hat wohl mit 'nsMsgComposeSecure.cpp' zu tun.

Was den MIME-Typ des Attachments angeht: Thunderbird legt dies korrekt automatisch fest, wenn die Datei, die angehängt wird, auch exisitert. Da keine Signatur erzeugt wird, kann natürlich auch keine angehängt werden.

a_nickol
Mausschubser
Mausschubser
Beiträge: 100
Registriert: 27. Okt 2005 10:33
Kontaktdaten:

Re: Bonus Aufgabe

Beitrag von a_nickol »

mich würde mal interessieren, welche dokumentation ihr verwendet, um die von mozilla bereitgestellten interfaces zu verstehen? xulplanet ist angeblich veraltet und listet im endeffekt nur methodennamen auf und die seiten von mozilla developer sind auch weder vollständig noch übersichtlich. lest ihr einfach den sourcecode von thunderbird??

d_s
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 134
Registriert: 24. Jan 2008 17:27

Re: Bonus Aufgabe

Beitrag von d_s »

a_nickol hat geschrieben:hat es bei dir direkt ohne probleme gestatet? unter linux bekomme ich den fehler

Code: Alles auswählen

Exception in thread "main" java.lang.NoClassDefFoundError: LocalServer
[...]
die argumente und classpath scheinen aber richtig gesetzt zu sein. wahrscheinlich liegts am ordner indem der befehl ausgeführt wird
Hmm... Unter Linux (Ubuntu 8.10 x86_64 mit Sun JDK 1.6 u13) lief der Code problemlos.

a_nickol
Mausschubser
Mausschubser
Beiträge: 100
Registriert: 27. Okt 2005 10:33
Kontaktdaten:

Re: Bonus Aufgabe

Beitrag von a_nickol »

bagotios hat geschrieben:
karatsiolis hat geschrieben: Diese Zeile:

Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="------------ms040101060604030903030707"

muss erzeugt werden.
Ich muss sagen ich bin recht schlechter Dinge das dies möglich ist. Man kann den Content-Type beim senden nicht per 'gMsgCompose.compFields.type' festlegen. Ich habe auch keinen Anhaltspunkt gefunden wie Thunderbird dies tut aber es hat wohl mit 'nsMsgComposeSecure.cpp' zu tun.

Was den MIME-Typ des Attachments angeht: Thunderbird legt dies korrekt automatisch fest, wenn die Datei, die angehängt wird, auch exisitert. Da keine Signatur erzeugt wird, kann natürlich auch keine angehängt werden.
ich stoß irgendwie an die selben "grenzen" bzw. "probleme". hat es jemand schon geschafft und kann einen tipp geben, wie man das probleme löst?

Antworten

Zurück zu „Archiv“