PasswordManager: Unterschied zwischen den Versionen

Aus rü5
Wechseln zu:Navigation, Suche
imported>Meap
imported>Meap
Keine Bearbeitungszusammenfassung
 
(4 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 ==
* mustHave
einen PasswortManager der auch Passwörter gruppieren und personenübergreifend verwalten kann.
** man kann sich bei dem System selbstständig registrieren/anmelden, dabei werden folgende Daten eingetragen:
*** EMail-Adresse ''(eindeutig und validiert)''
*** Erinnerungs-String ''(für das Master-Passwort)''
*** (Nick-)Name ''(initial ~> EMail-Adresse, wenn nicht leer)''
** man registriert seine Passwörter mit folgenden Daten:
*** (Passwort-)Name
*** Beschreibung
*** das Passwort ''(wird mittels interner Funktion und dem MasterPasswort verschlüsselt abgelegt)''
* 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


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


* TOSORT
=== nice2have ===
** die Kommunikation zwischen den einzelnen Benutzern findet per EMail statt
* schreibberechtigte Personen können das Passwort ändern und somit die anderen Benutzer benachrichtigen
** es werden keine Passwörter/Hashes o.ä. per EMail verschickt
* leseberechtigte Personen können eine Änderung des Passwortes anfordern
** 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
== Realisierungsvorschläge ==
*: ''(dies scheint die einzige Methode zu sein, um an das Master-Passwort zu kommen)''
=== php+mySQL ===
** registrierte Benutzer besitzen entweder schreib- oder leserechte auf ein Passwort
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>