PasswordManager: Unterschied zwischen den Versionen

Aus rü5
Wechseln zu:Navigation, Suche
imported>Meap
imported>Meap
Zeile 6: Zeile 6:


== Idee ==
== Idee ==
einen PasswortManager der auch Passwörter personenübergreifend verwalten kann
einen PasswortManager der auch Passwörter gruppieren und personenübergreifend verwalten kann.


=== mustHave ===
=== mustHave ===
* man kann sich bei dem System selbstständig registrieren/anmelden, dabei werden folgende Daten eingetragen:
* man kann sich bei dem System selbstständig registrieren/anmelden, dabei werden folgende Daten eingetragen:
** EMail-Adresse ''(eindeutig und validiert)''
** (Nick-)Name ''(initial ~> EMail-Adresse, wenn nicht leer)''
** Erinnerungs-String ''(für das Master-Passwort)''
** Erinnerungs-String ''(für das Master-Passwort)''
** (Nick-)Name ''(initial ~> EMail-Adresse, wenn nicht leer)''
** diverse Kontaktadressen ''(für Passwortnachfragen anderer)''
* man registriert seine Passwörter mit folgenden Daten:
* man registriert seine Passwörter mit folgenden Daten:
** (Passwort-)Name
** (Passwort-)Name
** Beschreibung
** Beschreibung
** das Passwort ''(wird mittels interner Funktion und dem MasterPasswort verschlüsselt abgelegt)''
** 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 ===
=== couldHave ===
Zeile 29: Zeile 32:
* leseberechtigte Personen können eine Änderung des Passwortes anfordern
* 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 ====
<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"];
}


* TOSORT
</graphiz>
** die Kommunikation zwischen den einzelnen Benutzern findet per EMail statt
** es werden keine Passwörter/Hashes o.ä. per EMail verschickt
** durch Ändern des Master-Passworts werden alle gespeicherten Daten neu verschlüsselt
** zur Passwort-Kontrolle und Gedächnisstütze wird ein vom Benutzer definierter Text sowohl im klartext als auch verschlüsselt hinterlegt
*: ''(dies scheint die einzige Methode zu sein, um an das Master-Passwort zu kommen)''
** registrierte Benutzer besitzen entweder schreib- oder leserechte auf ein Passwort

Version vom 13. Mai 2007, 09:56 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

<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>