Open pke opened 3 weeks ago
Wir haben den Fehler indentifiziert. Die Umwandlung eine BigInteger zu ByteArray ist fehlerhaft, für BigIntegers deren Binärrepresentation weniger Bytes benötigt, als die Kurvengröße in Bytes. Im Fall von brainpool256 müsste das Array immer 32 bytes gross sein. Es war aber stellenweise nur 31 bytes gross.
Es muss also sichergestellt sein, dass das Array immer die korrekte Größe hat und ggfs in den low bits mit 0 bytes aufgefüllt werden.
Wir erstellen einen PR.
Ich habe feststellt, dass es mit ReinerSCT Komfort und Basic NFC Readern immer mal wieder zu PACE Fehlern kommt wo
General Authenticate
mit TagNo5
mit0x6300 Authentication failure
quittiert wird.Daraufhin habe ich eine Test Suite geschrieben, die genau 1000 Durchläufe mit PACE init macht und danach die Karte jeweils zurücksetzt. In 6-8 Fällen kommt es dabei zu Fehlern. Dabei spielt es keine Rolle, ob Testkarten oder echte Karten benutzt werden (wobei echte Karten deutlich langsamer sind: 0.4sec vs 1,5sec).
Sind solche Instabilitäten im Protokoll bekannt und ihm Rahmen des zu erwartbaren? Oder handelt es sich möglicherweise um einen subtilen Bug in der Referenzimplementierung?