Přeskočit na hlavní obsah

Obálka DTLS protokolu FLAP

V obálce DTLS (nastavení zařízení flap-dtls) putují pakety FLAP uvnitř relace DTLS 1.2 (RFC 6347) ověřené předsdíleným klíčem (PSK). PSK ověřuje zařízení a opravňuje ho vystupovat jako zařízení registrované v HARDWARIO Cloud. DTLS pakety šifruje a chrání jejich integritu i proti opakování.

Dešifrovaný záznam DTLS obsahuje jen paket FLAP. Tag MAC ani sériové číslo v něm nejsou: zařízení se ověří a identifikuje svou identitou PSK při navázání relace DTLS.

+------------------- DTLS 1.2 record (encrypted) -------------------+
| +-------------+----------------------+ |
| | Header | Data | |
| | 2 bytes | 0 to n bytes | |
| +-------------+----------------------+ |
+-------------------------------------------------------------------+
poznámka

Obálka DTLS je zatím dostupná jen na zařízeních postavených na nRF9151 (například WIMBER). Zařízení CHESTER používá obálku MAC jako text base64. Jde o omezení současného SDK pro CHESTER, ne protokolu, a podpora DTLS pro CHESTER je plánovaná.

Parametry DTLS​

ParametrHodnota
ProtokolDTLS 1.2, port UDP 5005
Šifrovací sadaTLS_PSK_WITH_AES_128_CCM_8, jediná nabízená sada, viz Šifrovací sada
Identita PSKhsn: a za ním sériové číslo v desítkové soustavě, například hsn:2159017985
PSK16 až 32 náhodných bajtů, jedinečných pro každé zařízení
Nápověda identity PSKhio-udp-server
Extended master secretVyžadováno (RFC 7627)
Výměna cookieZapnuto (HelloVerifyRequest)
Connection IDPodporováno (RFC 9146), 4 bajty
Časový limit nečinnosti24 hodin

Šifrovací sada​

Sadu TLS_PSK_WITH_AES_128_CCM_8 podporuje implementace DTLS v modemu nRF9151 i implementace DTLS v Cloudu. Navíc má malou a pevnou režii na záznam, takže velikost fragmentu je předvídatelná (viz Limity velikosti). Proto Cloud nabízí jen tuto sadu.

Connection ID​

Connection ID umožní zařízení zachovat relaci DTLS, když mu operátor změní IP adresu nebo port, takže po probuzení z PSM nepotřebuje nový handshake. Nový handshake se stejnou identitou nahradí předchozí relaci zařízení.

Handshake​

Cloud vyhledá PSK podle identity ze zprávy ClientKeyExchange. Neznámá identita nebo špatný PSK handshake ukončí. Po handshaku probíhá výměna FLAP přesně podle stránky Přenosy.

Limity velikosti​

Velikost fragmentu vychází z velikosti datagramu a režie obálky:

fragment data = datagram - DTLS record overhead - 2 B FLAP header

Šifrovací sada je pevně daná, takže režie záznamu DTLS je pevná a malá: hlavička záznamu, osmibajtový explicitní nonce a osmibajtový autentizační tag AES-128-CCM-8. S datagramem o velikosti 508 bajtů zbývá na fragment téměř 480 bajtů dat.

SměrData na fragment dnes
Uplink (SDK zařízení)479 B
Downlink (Cloud)300 B

Datagram o velikosti 508 bajtů je konzervativní limit, který projde libovolnou cestou IPv4 bez fragmentace. Kde MTU cesty dovolí větší datagramy, může velikost fragmentu odpovídajícím způsobem růst až na maximální payload UDP.

Nastavení DTLS​

Stejný PSK musí být uložený v HARDWARIO Cloud i v zařízení.

1. Vygenerujte náhodný PSK o velikosti 16 bajtů (32 hexadecimálních znaků):

openssl rand -hex 16

2. Uložte PSK do HARDWARIO Cloud, například přes REST API. Zařízení přidané se sériovým číslem má identitu PSK hsn:<sériové číslo> automaticky:

curl -X PUT \
-H 'X-API-KEY: <api-key>' \
-H 'Content-Type: application/json' \
'https://api.hardwario.cloud/v2/spaces/<space-id>/devices/<device-id>' \
-d '{
"secret": "<psk-hex>",
"secret_type": "psk"
}'

3. Uložte PSK do zařízení a přepněte ho na DTLS v shellu zařízení:

cloud psk set <psk-hex>
cloud config protocol flap-dtls
config save

PSK se zapíše do zabezpečeného úložiště pověření v modemu. Zařízení se znovu připojí a při dalším vysílání otevře s Cloudem relaci DTLS. Všechna nastavení cloudu v zařízení popisuje sekce Nastavení zařízení.

Nastavení zařízení​

Zařízení postavená na nRF9151 vybírají obálku a server příkazem shellu cloud config. Příkaz cloud config show vypíše všechna nastavení cloudu. Pro obálku DTLS platí:

ParametrVýchozí hodnotaPopis
protocolflap-hashObálka: flap-dtls vybere obálku DTLS
addr157.245.24.13Výchozí IP adresa serveru
addr2, addr3PrázdnéDruhá a třetí IP adresa serveru, prázdná hodnota znamená nepoužito
port-flap-dtls5005Port UDP pro obálku DTLS
failover3Počet po sobě jdoucích neúspěšných pokusů, po kterých zařízení přepne na další adresu, 0 přepínání vypne

Výchozí hodnoty adres serveru, portů a failover pocházejí z voleb Kconfig firmwaru, takže je lze změnit při sestavení firmwaru.