====== Umsetzung ====== **Status**:suspend\\ SVN: http://xapek.org/svn/common/cargoship\\ Stichworte: java,database: h2, swing ====== Konzept ====== ===== Übersicht ===== Externe Festplatte die in einer Gruppe gemeinsam benutzt wird. * Jeder Benutzer besitzt ein von ihm gewähltes Passwort. * Jeder besitzt vollen Zugriff auf die Platte solange er sie im Besitz hat (kein Schutz vor Vandalismus) * Jeder kann seine Dateien indexieren und in die Datenbank auf der Platte aufnehmen. * Jeder kann indexierte Dateien auf die Festplatte kopieren. (commit) * Jeder kann indexierte Dateien anfordern, die später vom Besitzer auf die Platte kopiert werden können. (request) Die Datenbank speichert pro Datei: - Name + Metadaten (Größe, ID3-Tags, Zeitpunkt der Indexierung) + Pfad auf Platte(falls dort vorhanden) (öffentlich einsehbar) - einmaliges Identifikationsmerkmal mit der der Benutzer die Datei wieder erkennen kann - Pfad der Datei (verschlüsselt mithilfe des des Passworts des Benutzers (gemixt Identifikationsmerkmal)) Es daher nur vom Eigentümer einer indexierten Datei feststellbar ob ihm diese Datei gehört, sodass er einen eventuellen Request erfüllen kann. Es ist wichtig, dass man nicht festestellen kann, dass eine bestimmte Menge an Dateien einem bestimmten (wenn auch unbekannten) Benutzer gehören. Der Besitzer entschlüsselt bei jeder Datei in der Datenbank die Zahl und prüft ob diese eine Primzahl ist, falls ja gehört die Datei sehr wahrscheinlich ihm. Mit der gewonnenen Primzahl und dem Passwort wird der Pfad entschlüsselt. Der Benutzer kann nun endgültig feststellen ob ihm die Datei gehört und ob er diese noch besitzt. Besitzt ein Benutzer eine Datei nicht mehr wird die Datei als verloren gekennzeichnet. ===== Datenbankstruktur ===== > file | + id : Zahl, primary key | + encOwnerCryptoString | + pathOnDisk > metadata | + fileid | + name : | + value > request | + fileid