Autor Thema: [FHEM::Core::Authentication::Passwords] Password Hilfsmodul  (Gelesen 1904 mal)

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 26805
Hallo,

Ich habe ein Password Hilfsmodul geschrieben um Passwörter entsprechend zu verwalten. Bedeutet speichern, auslesen, löschen und ändern.
Die Passwörter werden gesalzen als SHA265 Hash im keyFileName (default uniqueID) abgespeichert.

Beispiel Anwendung:

Klasse einbinden und ein Objekthash mittels des Constructors erzeugen
use FHEM::Core::Authentication::Passwords qw(:ALL);
...
sub Define {
    my $hash = shift // return;
    my $aArg = shift // return;
.....
    ### create password object to handle pass keystore
    $hash->{helper}->{passObj}  = FHEM::Core::Authentication::Passwords->new($hash->{TYPE});
.....
}
Passwort speichern
my ($passResp,$passErr);
 ($passResp,$passErr) = $passwdObj->setStorePassword($name,$password);

Passwort auslesen
my $password;
$password = $passwdObj->getReadPassword($name);

Passwort löschen
my ($passResp,$passErr);
($passResp,$passErr) = $passwdObj->setDeletePassword($name);

Ist $passResp definiert und $passErr ist undef wurde das Passwort erfolgreich abgespeichert. Bei einem Fehler bekommt $passResp ein undef und $passErr enthält den Fehlergrund


Wenn Devices/Instanzen umbenannt werden so muss man eine Rename Funktion in seinem Modul haben welche entsprechend in der Initialize Funktion zugewiesen wurde.
$hash->{RenameFn}       = \&Rename;Die Funktion könnte dann zum Beispiel so aussehen.
sub Rename {
    my $new     = shift;
    my $old     = shift;
   
    my $hash    = $::defs{$new};

    my ($passResp,$passErr);
    ($passResp,$passErr) = $hash->{helper}->{passObj}->setRename($new,$old);
   
    ::Log3($new, 1,
qq(MODULNAME \(${new}\) - error while change the password hash after rename - $passErr))
        if ( !defined($passResp)
        and defined($passErr) );

    ::Log3($new, 1,
qq(MODULNAME \(${new}\) - change password hash after rename successfully))
        if ( defined($passResp)
        and !defined($passErr) );

    return;
}


Spricht etwas gegen das einchecken ins SVN?
Das Modul befindet sich seit heute im SVN



Grüße
Marko
« Letzte Änderung: 28 April 2021, 15:51:16 von CoolTux »
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline herrmannj

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 5831
Antw:Password Hilfsmodul
« Antwort #1 am: 26 März 2021, 16:25:56 »
Md5 ist brooken, aber das nur am Rande. ;) Und salzen, bitte ;)

Das Modul ist nicht dafür gedacht ein Passwort zu hinterlegen um auf einen 3rd Dienst zu zugreifen? Richtig? Thnx für die Idee!

smartVisu mit fronthem, einiges an HM, RFXTRX, Oregon, CUL, Homeeasy, ganz viele LED + Diverse
Zustimmung Zustimmung x 1 Liste anzeigen

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 26805
Antw:Password Hilfsmodul
« Antwort #2 am: 26 März 2021, 16:30:49 »
Md5 ist brooken, aber das nur am Rande. ;) Und salzen, bitte ;)

Das Modul ist nicht dafür gedacht ein Passwort zu hinterlegen um auf einen 3rd Dienst zu zugreifen? Richtig? Thnx für die Idee!

Das musst Du mir erklären. Wieso ist Md5 broken?

Das Modul ist dafür gedacht Modulentwickler beim händling mit Passwörtern zu unterstützen. Für was das Passwort im jeweiligen Modul genutzt obliegt dem jeweiligen Entwickler.

    my $index   = $defs{$name}->{TYPE} . '_' . $name . '_passwd';
    my $key     = getUniqueId() . $index;
    my $enc_pwd = '';

    if ( eval q{use Digest::MD5;1} ) {

        $key = Digest::MD5::md5_hex( unpack "H*", $key );
        $key .= Digest::MD5::md5_hex($key);
    }

    for my $char ( split //, $password ) {

        my $encode = chop($key);
        $enc_pwd .= sprintf( "%.2x", ord($char) ^ ord($encode) );
        $key = $encode . $key;
    }

    my $err;
    $err = setKeyValue( $index, $enc_pwd );

Der Code ist experimental bitte nicht verwenden!!!


Grüße
« Letzte Änderung: 27 März 2021, 16:30:13 von CoolTux »
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 24012
Antw:Password Hilfsmodul
« Antwort #3 am: 26 März 2021, 16:35:23 »
Zitat
Wieso ist Md5 broken?
Weil irgendwelche Leute mit viel Geduld und CPU vor paar Jahren geschafft haben, mehrere Texte zu erstellen mit dem gleichen MD5 Hashwert.
Selbst allowed verwendet seit Jahren sha256. Mit Salz. :)
Zustimmung Zustimmung x 2 Liste anzeigen

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 26805
Antw:Password Hilfsmodul
« Antwort #4 am: 26 März 2021, 16:40:15 »
Alles klar. Dann baue ich entsprechend um. Kein Problem.
Danke für den Hinweis.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline KernSani

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3528
Antw:Password Hilfsmodul
« Antwort #5 am: 26 März 2021, 16:55:51 »
Ist ja cool... >Vor ca. einem Jahr hatte ich mal überlegt ein Passwort-Hilfsmodul zu bauen. Das kann ich dann von der Taskliste streichen :-)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline KernSani

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3528
Antw:Password Hilfsmodul
« Antwort #6 am: 27 März 2021, 09:32:39 »
Cooltux, wenn du einen Tester suchst - ich hätte einen konkreten Anwendungsfall für das Teil...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 26805
Antw:Password Hilfsmodul
« Antwort #7 am: 27 März 2021, 10:08:49 »
Sehr gerne. Ich muss aber noch auf sha256 mit Salz umbauen.

Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline vuffiraa

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 842
Antw:Password Hilfsmodul
« Antwort #8 am: 31 März 2021, 19:24:16 »
Hallo CoolTux,

du hast oben geschrieben, dass man mit dem Hilfsmodul auch Passwörter auslesen kann. Geht das, wenn man nur einen Hash speichert?

Jetzt sehe ich, dass der Pseudocode aus deinem Beitrag auch fast so in meinen Modulen zu finden ist. Damit bietet sich der Umstieg auf dein Hilfsmodul schon mal an  :) Stellt sich nur die Frage, wie das nun funktioniert. Muss ich mir mal in Ruhe anschauen bzw. hat jemand jemand einen Link, wo das mit der XOR-Verknüpfung erklärt wird?

Gruß VuffiRaa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 26805
Antw:Password Hilfsmodul
« Antwort #9 am: 31 März 2021, 20:28:54 »
Hallo Ulf,

Nimm bitte nicht den Code. Ich werde das ganze noch mal umschreiben. Muss nur dazu kommen.


Grüße
Marko
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline vuffiraa

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 842
Antw:Password Hilfsmodul
« Antwort #10 am: 01 April 2021, 12:18:24 »
Es ging nicht um das Übernehmen des Code, der ist ja schon länger z.B. aus dem FRITZBOX Modul bekannt.

Ich meine der ganze Algorithmus gehört eher in die Kategorie obfuscation und ist keine sichere Verschlüsselung. Der Algorithmus ist umkehrbar und das ist auch Bestandteil des Code und damit dokumentiert. Die Datei uniqueID reicht alleine aus, um die Passwörter zu entschlüsseln. Momentan macht da ein anderer Hash-Algorithmus auch keinen Unterschied.  Gehasht wird nicht das Passwort, sondern der Schlüssel, mit dem es in die Datei geschrieben wird.
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 26805
Antw:Password Hilfsmodul
« Antwort #11 am: 01 April 2021, 13:29:45 »
Jepp ich weiß. Daher wird das auch alles anders geschrieben.
Muss nur Zeit finden.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 26805
Antw:Password Hilfsmodul
« Antwort #12 am: 20 April 2021, 12:55:24 »
Hallo,

Also entweder wurde ich falsch verstanden oder ich habe das Konzept mit salt und sha Hash nicht kapiert.
Alles was ich die letzten Tage raus gefunden habe ist, das meine Art der Denkweise nicht funktioniert. Aus einem gesalzenden sha265 Hash kann man kein Plaintextpassword mehr generieren. Man kann nur die validieren und zwar mit einem neu erstellten salt hash welcher durch eine passwordeingabe erfolgt und einen bereits abgespeicherten salt hash.

Was ich will ist ein Plaintext Password verschlüsselt abspeichern um es wieder aus zu lesen und zu entschlüsseln damit es wieder Plaintext wird.

Ich bin der Meinung das mir die allowed Implementierung dabei nicht hilft.



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 26805
Antw:Password Hilfsmodul
« Antwort #13 am: 20 April 2021, 13:23:06 »
Ok vielleicht habe ich es doch falsch verstanden. Ich muss erstmal noch was testen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 26805
Antw:Password Hilfsmodul
« Antwort #14 am: 20 April 2021, 13:51:06 »
Ok ich habe mich bedeppert angestellt  :-[
Zu mindest sha256 funktioniert jetzt. kommen wir nun zum salt.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

 

decade-submarginal