Saugumas

LwM2M protokole, kartu su UDP duomenų perdavimu yra naudojamas DTLS saugumo protokolas. Norint užtikrinti saugumą abiejų pusių komunikacija turi būti paremta autentifikacija ir duomenų šifravimu. Taip pat yra reikalaujama naudoti skirtingus įgaliojimus komunikuojant tarp kliento ir LwM2M Bootstrap serverio.

DTLS

Kaip ir minėjome prieš tai DTLS yra paremtas TLS veikimu atlikus pakeitimus, kurie leistų prisitaikyti prie UDP perdavimo protokolo. Pagrindiniai pakeitimai:

  1. Su kiekvienu išsiųstu duomenų paketu yra pridedamas sekos numeris. Tai yra atliekama tam, kad duomenys būtų išdėstomi teisinga tvarka. Tačiau net ir praradus duomenys jie vėliau yra iššifruojami teisingai, kadangi TLS atveju sekos numeris yra užkoduojamas MAC įraše.
  2. Pašalintas palaikymas, kai kurių TLS šifravimo rinkinių. Tarp jų yra pašalintas srauto duomenų šifravimas, kadangi šifruojant duomenų srautą yra svarbi duomenų perdavimo seka. Tai reiškia, kad RC4 negali būti naudojamas DTLS.
  3. Dėl paketų praradimo yra pridėtas mechanizmas dėl pakartotinio paketo atsiuntimo. Veikimo principas yra paremtas laikmačiu, kuomet po tam tikro duomenų išsiuntimo laiko bus užprašyti duomenys pakartotinai.
  4. Atlikti pakeitimai dėl neiteisingo MAC įrašo. TLS atveju visa komunikacija yra nutraukiama, o DTLS atveju pranešimas yra ignoruojamas.
  5. Pridėtas naujas įrašo pranešimas – HelloVerifyRequest. Jis yra sukurtas siekiant užkirsti kelią DoS atakoms. HelloVerfifyRequest yra naudojamas kliento identifikavimui. Klientui išsiuntus pranešimą ClientHello serveris atsakymas HelloVerifyRequest ir tuomet klientas pakartotinai išsiųs pranešimą ClientHello su gautu slapuku (angl.cookie).

Raktai ir šifravimas

Siekiant tai užtikrinti LwM2M apibrėžia trijų tipų įgaliojimus:

Pre-shared secrets yra paprasčiausias pagal naudojimo sąlygas. Naudojant šį įgaliojimą klientas ir serveris naudoja iš anksto nustatytu sutartiniu „žodžiu“, tai dažniausiai yra kažkokia tai atsitiktinė bitų seka ar frazė. Tačiau naudojant šį sprendimą abi pusės išlanksto turi žinoti tą slaptažodį. Naudojant DTLS „shared secrets“ yra privalomos. Raw public key mode uses asymmetric public key cryptography. Clientsand servers use their own key pairs to for encryption and decryption of data,do that data destined to the other party in communication is encryptedand/or signed using the other’s public key, and the receiving party decryptsand/or validates it using its corresponding private key of the same key pair.Support for raw public key credentials is optional in LwM2M. „Raw public key“ yra paremtas viešo rakto kriptografija. Klientai ir serveriai naudoja savo raktų poras duomenų šifravimui ir dešifravimui Klientai ir serveriai naudoja savo raktų poras duomenų šifravimui ir dešifravimi, o išsiųsti duomenys iš iššifruojami naudojant kitą rakto porą. Bendru atveju vietų raktų naudojimas nėra būtinas LwM2M protokole. X.509 yra kur kas lankstesnis ir labiau funkcionalumas metodas. Jis yra panašus į viešo rakto kriptografiją. Abi komunikuojančios pusės neprivalo išanksto pasitikėti viena kita, kadangi yra naudojamas CA sertifikatai. Sertifikatai ir privatūs raktai gali būti skirti komunikacijai su LwM2M serveriu gali būti perduodami pradinės įkelties metu (angl. bootstrapping) iš LwM2M Bootstrap serverio arba naudojant EST per CoAP. Taip pat LwM2M gali būti naudojamas rėžimas „NoSec“. Šis rėžimas nesuteikia jokio saugumo, tačiau gali būti naudojamas, kuomet sistemoje jau yra žemesnio lygio saugumo mechanizmas.