PasswordManager: Unterschied zwischen den Versionen

Aus rü5
Wechseln zu:Navigation, Suche
imported>Meap
Die Seite wurde neu angelegt: Category:dhd Category:rueckertstrasse5 Passwort-Manager gibt es eigentlich wie Sand am Meer, aber bisher habe ich keinen gefunden, der Passwörter auch zwische...
 
imported>Meap
Keine Bearbeitungszusammenfassung
 
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Category:dhd]]
[[Category:dhd]]
[[Category:rueckertstrasse5]]


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 ==
man speichert seine eigenen Passwörter mittels seinem eigenen Master-Passwort unter einem eindeutigen Namen ab ''(bisher nichts neues)''.
einen PasswortManager der auch Passwörter gruppieren und personenübergreifend verwalten kann.


Andere Personen können sich auch mit diesem Password verbinden, indem sie jemanden, der schon verbunden ist, um Erlaubnis fragen. Diese Person übermittelt der anfragenden Person einen temporären Hash und trägt ihn gleichzeitig in das System ein ''(dieser Eintrag ist die Freigabe für den Zugriff auf das entsprechende Passwort)''
=== 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
|-
| 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
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

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