Kontroler Matter przy parowaniu nowego urządzenia najpierw sprawdza jego tożsamość. Urządzenie przedstawia certyfikat atestacji (DAC) podpisany przez certyfikat pośredni producenta (PAI) oraz deklarację certyfikacji (CD) podpisaną przez Connectivity Standards Alliance. 31 października 2026 roku do matter.js, otwartej implementacji Matter w TypeScripcie rozwijanej przez Ingo Fischera (Apollon77), trafiły dwie zmiany, po których kontroler znacznie dokładniej sprawdza wszystkie trzy elementy.
Punktem wyjścia były wektory testowe z CHIP. Wzorcowy pakiet SDK Matter zawiera celowo zepsute certyfikaty do testu certyfikacyjnego TC-DA-1.4 i kontroler musi odrzucić każdy z nich. matter.js przepuszczał 16 wadliwych deklaracji CD i 28 wadliwych certyfikatów DAC i PAI.
Deklaracje certyfikacji
Największa luka dotyczyła zaufania do podpisującego. Gdy matter.js nie znał klucza, którym podpisano deklarację, zapisywał tylko ostrzeżenie w dzienniku. Przechodziła więc deklaracja podpisana nieznanym kluczem albo dowolnym kluczem, który podawał właściwy identyfikator. Zmiana #4871 przenosi model z CHIP:
- Klucze CSA do podpisywania deklaracji (od 001 do 005) są wbudowane, więc kontroler bez internetu albo bez dostępu do rozproszonego rejestru zgodności (DCL) nadal weryfikuje podpis, zamiast pomijać sprawdzenie.
- Klucz pobrany z DCL lub z lokalnego magazynu zyskuje zaufanie dopiero wtedy, gdy jego certyfikat da się zweryfikować głównym certyfikatem CSA.
- Wszystko inne, także sytuacja, w której DCL nie odpowiada, kończy się odmową z błędem
CdSignerUnknown. - Oficjalna deklaracja podpisana testowym kluczem Matter jest odrzucana.
Parser sprawdza też teraz kopertę CMS opisaną w Matter 1.6.1 (wersja 3, SHA-256, ECDSA z SHA-256) i odrzuca nieznane wartości format_version oraz certification_type. Z 16 wadliwych deklaracji odrzucanych jest teraz 11. Trzy wymagają danych zgodności z DCL, a dwie dotyczą pól, które według specyfikacji należy pomijać, więc matter.js nadal je przyjmuje.
Certyfikaty urządzeń
Zmiana #4865 wprowadza profil certyfikatów DAC i PAI ze specyfikacji: certyfikat w wersji 3, krytyczne rozszerzenie ograniczeń podstawowych (DAC nie może być urzędem certyfikacji, PAI musi nim być z długością ścieżki 0) i krytyczne rozszerzenie użycia klucza z dokładnie dozwolonymi bitami. Parser X.509 wcześniej sam dopisywał „to nie jest urząd certyfikacji”, gdy brakowało ograniczeń podstawowych, a długość ścieżki od 128 w górę czytał jako jeden bajt. Naruszenia profilu są teraz zgłaszane jako DacFormatInvalid albo PaiFormatInvalid.
Tak jak wcześniej, o wyniku decyduje reguła onAttestationFailure. Domyślna odmawia, ale programista może świadomie przyjąć urządzenie z wadliwym certyfikatem, na przykład podczas testów.
Kogo to dotyczy
Urządzenia z poprawnymi certyfikatami, a takie powinny mieć certyfikowane produkty, nie odczują zmiany. Poprawki są w głównej gałęzi. Najnowsze oznaczone wydanie, v0.18.0 z 20 października, ich nie zawiera, więc projekty oparte na matter.js dostaną je z kolejnym wydaniem. Kto tworzy urządzenie Matter z własnymi certyfikatami testowymi, powinien sprawdzić je pod kątem nowych reguł jeszcze przed tym wydaniem, bo kontroler z domyślną regułą zacznie je odrzucać.