Using ZWDongle random in ZWave

Begonnen von A.Harrenberg, 05 Juni 2017, 15:01:13

Vorheriges Thema - Nächstes Thema

A.Harrenberg

Hi Rudi,

ich steh' gerade etwas auf dem Schlauch...

Für Security müssen immer wieder Zufallszahlen erzeugt werden, bisher habe ich das mit einer Schleife und int(rand(255)) gemacht, jetzt würde ich dazu jedoch lieber die ZWave-Controllerfunktion ZW_GET_RANDOM (0x1c) verwenden.

Allerdings raffe ich gerade nicht wie ich vom ZWave-code aus den (ZWDongle-)Befehl anstoße und an die Rückgabe komme... (Ohne das aus dem Reading auzulesen...)

Idealerweise natürlich auch noch ohne FHEM zu blockieren.

Kannst Du mich mal bitte in die richtige Richtung schubsen?

Danke,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

rudolfkoenig

ZitatAllerdings raffe ich gerade nicht wie ich vom ZWave-code aus den (ZWDongle-)Befehl anstoße und an die Rückgabe komme... (Ohne das aus dem Reading auzulesen...)

Ewas unschoen (ueberfluessige log-Meldung, synchron, und bisschen Muell im Antwort) geht das jetzt schon mit fhem "get zwdongle random 20". Ich habe aber 10_ZWdongle erweitert, dass die parseHooks auch hier funktionieren, mit etwas geaenderten Aufruf. Getestetes Beispiel mit dem neuen Code:
sub
testRandom($)
{
  my ($hash) = @_;
  $zwave_parseHook{"ZW_GET_RANDOM:.*"} = sub(){
    my ($arg) = @_;
    Log 1, "GOT: $arg";
  };
  IOWrite($hash, "", "001c32");
}


Testaufruf:
{ testRandom($defs{as6}) }

rudolfkoenig

Btw: warum passt dir random nicht?
Die ZWDongle Loesung macht eine Portierung auf ZWCUL etwas aufwendiger.

A.Harrenberg

Hi Rudi,

danke für die Änderung, aber mit dem Einwand bzgl. ZWCul hast Du natürlich recht.

Ich dachte nur das die Funktion im Dongle sicherlich einen schönen Hardwareseed aus dem Rauschen des Empfängers hat und daher eine bessere "random"-quelle ist...
Werde dann wohl doch bei rand() bleiben, die Erweiterung von ParseHook auf ZWDongle können wir aber sicherlich auch so noch mal gebrauchen ,-)

Ich habe das mit dem S2 und diesen intern generierten NONCE noch nicht ganz verstanden, aber momentan fürchte ich, das falls diese NONCE mal asynchron werden (und man also einen neuen seed brauch) man eine empfangene Nachricht NICHT mit ACK bestätigen darf, sondern eine neue nonce anfordern muss. Wie gesagt noch nicht ganz bis dahin verstanden und ich hoffe eigentlich das es im Protokoll anders gelöst ist, ansonsten müsste nämlich das ACK mindest Klassenspezifisch im ZWave code gemacht werden und nicht automatisch im ZWDongle code. Und wenn es ganz schlimm kommt dann muss das vielleicht sogar Befehlsspezifisch gemacht werden... B-(

Ich habe das unter "Laborbedingungen" jetzt soweit das mir das Ding während der Inklusion die ersten verschlüsselten Befehle geschickt hat, ich versuche jetzt die offline zu entschlüsseln, stehe da aber noch relativ am Anfang und muss mir erst einmal den temporären Schlüssel erzeugen, der ist nämlich jetzt für jede Inklusion anders...

Gruß,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY