PasswordManager: Unterschied zwischen den Versionen
Aus rü5
						
						| imported>Meap | imported>Meap Keine Bearbeitungszusammenfassung | ||
| (5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| [[Category:dhd]] | [[Category:dhd]] | ||
| Passwort-Manager gibt es eigentlich wie Sand am Meer, aber bisher habe ich keinen gefunden, der | Passwort-Manager gibt es eigentlich wie Sand am Meer, aber bisher habe ich keinen gefunden, der | ||
| Zeile 6: | Zeile 5: | ||
| == Idee == | == Idee == | ||
| einen PasswortManager der auch Passwörter gruppieren und personenübergreifend verwalten kann. | |||
| *  | === mustHave === | ||
| **  | * man kann sich bei dem System selbstständig registrieren/anmelden, dabei werden folgende Daten eingetragen: | ||
| ** man  | ** (Nick-)Name ''(initial ~> EMail-Adresse, wenn nicht leer)'' | ||
| **  | ** Erinnerungs-String ''(für das Master-Passwort)'' | ||
| **  | ** diverse Kontaktadressen ''(für Passwortnachfragen anderer)'' | ||
| * man registriert seine Passwörter mit folgenden Daten: | |||
| **  | ** (Passwort-)Name | ||
| **  | ** Beschreibung | ||
| **  | ** das Passwort ''(wird mittels interner Funktion und dem MasterPasswort verschlüsselt abgelegt)'' | ||
| * | * das System speichert keine Passwörter im Klartext ''(sie sind alle mittels des Master-Passworts verschlüsselt)'' | ||
| * | * das MasterPasswort darf auf keinen Fall in irgendeiner Form im System gespeichert werden | ||
| * | ** hierauf ist besonders bei WebFrontends ''(Sessions)'' zu achten | ||
| === couldHave === | |||
| * persönliche Gruppen von Passwörtern | |||
| * Gruppen von bekannten Personen ''(wer kennt wen ~ unidirectionale Verbindung)'' | |||
| * Anfordern eines Passworts bzw. einer Gruppe von PW von einer Person ''(pull)'' | |||
| * Übertragen eines Passworts bzw. einer Gruppe an eine andere Person ''(push ~ evtl. mit lese/schreib Berechtigung)'' | |||
| * bei Änderung von Passwörtern werden die entsprechenden Personen benachrichtigt | |||
| === nice2have === | |||
| * schreibberechtigte Personen können das Passwort ändern und somit die anderen Benutzer benachrichtigen | |||
| * leseberechtigte Personen können eine Änderung des Passwortes anfordern | |||
| == Realisierungsvorschläge == | |||
| === php+mySQL === | |||
| die mySQL-DB bietet eine AES-Verschlüsselungs-Funktion, mit der die Passwörter durch das Master-Passwort | |||
| verschlüsselt werden können. | |||
| ==== DB-Design ==== | |||
| {| | |||
| ! Erklärung | |||
| ! Übersicht | |||
| |- | |||
| | valign="top" width="40%" |  | |||
| ;USER: enthält die nötigen Benutzerdaten | |||
| ;GROUP: enthält die definierten Gruppen | |||
| ;CONTACT: enthält die definierten Kontakte | |||
| ;DATA: enthält die definierten zu verschlüsselnden Datensätze | |||
| ;CRYPT: enthält die für jeden User verschlüsselten Daten eines definierten Datensatzes | |||
| ;MAP: enthält Verknüpfungen von einem Datensatz einer Tabelle zu einem anderen Datensatz einer anderen Tabelle | |||
| | valign="top" width="60%" | | |||
| <graphviz> | |||
| digraph G { | |||
|         graph [rankdir = "LR"]; | |||
|         edge []; | |||
|         node [ style="rounded" ]; | |||
|         USER    [ shape="record" label="<tablename> USER | <id> id | <name> name | <description> description | <session> session | <lastVisit> lastVisit" ]; | |||
|         CONTACT [ shape="record" label="<tablename> CONTACT | <id> id | <name> name | <description> description" ]; | |||
|         GROUP   [ shape="record" label="<tablename> GROUP | <id> id | <name> name | <description> description" ]; | |||
|         DATA    [ shape="record" label="<tablename> DATA | <id> id | <name> name | <description> description" ]; | |||
|         CRYPT   [ shape="record" label="<tablename> CRYPT | <uid> uid | <did> did | <data> data | <changeable> changeable"]; | |||
|         MAP     [ shape="record" label="<tablename> MAP | <srcId> srcId | <srcTable> srcTable | <dstId> dstId | <dstTable> dstTable" ]; | |||
|         CRYPT:uid       -> USER:id ; | |||
|         CRYPT:did       -> DATA:id ; | |||
|         MAP:srcTable    -> USER:tablename       [ color="yellow" ]; | |||
|         MAP:dstTable    -> DATA:tablename       [ color="yellow" fontcolor="yellow" label="userData"]; | |||
|         MAP:srcTable    -> USER:tablename       [ color="gray" ]; | |||
|         MAP:dstTable    -> CONTACT:tablename    [ color="gray" fontcolor="gray" label="userContacts"]; | |||
|         MAP:srcTable    -> USER:tablename       [ color="blue" ]; | |||
|         MAP:dstTable    -> GROUP:tablename      [ color="blue" fontcolor="blue" label="userGroups"]; | |||
|         MAP:srcTable    -> GROUP:tablename      [ color="yellow" ]; | |||
|         MAP:dstTable    -> DATA:tablename       [ color="yellow" fontcolor="yellow" label="groupData"]; | |||
|         MAP:srcTable    -> GROUP:tablename      [ color="gray" ]; | |||
|         MAP:dstTable    -> CONTACT:tablename    [ color="gray" fontcolor="gray" label="groupContacts"]; | |||
|         MAP:srcTable    -> DATA:tablenam        [ color="gray" ]; | |||
|         MAP:dstTable    -> CONTACT:tablename    [ color="gray" fontcolor="gray" label="dataContacts"]; | |||
| } | |||
| </graphiz> | |||
| |- | |||
| |} | |||
Aktuelle Version vom 4. Februar 2012, 13:08 Uhr
Passwort-Manager gibt es eigentlich wie Sand am Meer, aber bisher habe ich keinen gefunden, der
Passwörter auch zwischen Benutzergruppen managen kann, wobei jede Person sein eigenes Master-PW besitzt.
Idee
einen PasswortManager der auch Passwörter gruppieren und personenübergreifend verwalten kann.
mustHave
- man kann sich bei dem System selbstständig registrieren/anmelden, dabei werden folgende Daten eingetragen:
- (Nick-)Name (initial ~> EMail-Adresse, wenn nicht leer)
- Erinnerungs-String (für das Master-Passwort)
- diverse Kontaktadressen (für Passwortnachfragen anderer)
 
- man registriert seine Passwörter mit folgenden Daten:
- (Passwort-)Name
- Beschreibung
- das Passwort (wird mittels interner Funktion und dem MasterPasswort verschlüsselt abgelegt)
 
- das System speichert keine Passwörter im Klartext (sie sind alle mittels des Master-Passworts verschlüsselt)
- das MasterPasswort darf auf keinen Fall in irgendeiner Form im System gespeichert werden
- hierauf ist besonders bei WebFrontends (Sessions) zu achten
 
couldHave
- persönliche Gruppen von Passwörtern
- Gruppen von bekannten Personen (wer kennt wen ~ unidirectionale Verbindung)
- Anfordern eines Passworts bzw. einer Gruppe von PW von einer Person (pull)
- Übertragen eines Passworts bzw. einer Gruppe an eine andere Person (push ~ evtl. mit lese/schreib Berechtigung)
- bei Änderung von Passwörtern werden die entsprechenden Personen benachrichtigt
nice2have
- schreibberechtigte Personen können das Passwort ändern und somit die anderen Benutzer benachrichtigen
- leseberechtigte Personen können eine Änderung des Passwortes anfordern
Realisierungsvorschläge
php+mySQL
die mySQL-DB bietet eine AES-Verschlüsselungs-Funktion, mit der die Passwörter durch das Master-Passwort verschlüsselt werden können.
DB-Design
| Erklärung | Übersicht | 
|---|---|
| 
 | <graphviz> digraph G {        graph [rankdir = "LR"];
       edge [];
       node [ style="rounded" ];
       USER    [ shape="record" label="<tablename> USER | <id> id | <name> name | <description> description | <session> session | <lastVisit> lastVisit" ];
       CONTACT [ shape="record" label="<tablename> CONTACT | <id> id | <name> name | <description> description" ];
       GROUP   [ shape="record" label="<tablename> GROUP | <id> id | <name> name | <description> description" ];
       DATA    [ shape="record" label="<tablename> DATA | <id> id | <name> name | <description> description" ];
       CRYPT   [ shape="record" label="<tablename> CRYPT | <uid> uid | <did> did |  data | <changeable> changeable"];
       MAP     [ shape="record" label="<tablename> MAP | <srcId> srcId | <srcTable> srcTable | <dstId> dstId | <dstTable> dstTable" ];
        CRYPT:uid       -> USER:id ;
       CRYPT:did       -> DATA:id ;
       MAP:srcTable    -> USER:tablename       [ color="yellow" ];
       MAP:dstTable    -> DATA:tablename       [ color="yellow" fontcolor="yellow" label="userData"];
       MAP:srcTable    -> USER:tablename       [ color="gray" ];
       MAP:dstTable    -> CONTACT:tablename    [ color="gray" fontcolor="gray" label="userContacts"];
       MAP:srcTable    -> USER:tablename       [ color="blue" ];
       MAP:dstTable    -> GROUP:tablename      [ color="blue" fontcolor="blue" label="userGroups"];
       MAP:srcTable    -> GROUP:tablename      [ color="yellow" ];
       MAP:dstTable    -> DATA:tablename       [ color="yellow" fontcolor="yellow" label="groupData"];
       MAP:srcTable    -> GROUP:tablename      [ color="gray" ];
       MAP:dstTable    -> CONTACT:tablename    [ color="gray" fontcolor="gray" label="groupContacts"];
       MAP:srcTable    -> DATA:tablenam        [ color="gray" ];
       MAP:dstTable    -> CONTACT:tablename    [ color="gray" fontcolor="gray" label="dataContacts"];
} </graphiz> |