Nėra senesnių versijų!

Išvalyti žinutę
Locked History Actions

lwm2m

Įvadas

IoT gaminių rinkai vis labiau įsisukant į rinką ir vartojimą reikia rasti sprendimų, kurie būtų tinkami užtikrinant duomenų persiuntimo kiekius ir jų perdavimo saugumą. 2017 m. vasario 15 dieną OMA (angl. Open Mobile Alliance) ratifikavo LWM2M protokolą, kuris kūrėjų nuomone padės padidinti patogiau valdyti IoT gaminius. LwM2M naudoja modernią architektūrą paremtą REST, o tai reiškia, kad yra naudojamos HTTP užklausos. Šis protokolas apibrėžia lankstų resursų ir duomenų modelį, kuris yra paremtas objektų kūrimu. Duomenų saugumas yra paremtas naudojant CoAP protokolą.

Struktūra

LwM2M protokolas, kurį apibrėžė OMA yra skirtas įrenginių ir taikomųjų programų duomenų mainams, siekiant išspręsti energijos suvartojimo, ribotą duomenų perdavimo greitį ir užtikrinti minimalų perduodamų duomenų kiekį. Būtent šie trūkumą ir išryškina šio protokolo svarbą. Žemiau matome yra pateikta LwM2M kliento-serverio blokinė schema. Ji yra sudaryta iš šių dalių (žr. pav).

UDP/SMS - IoT įrenginiams yra naudinga naudoti UDP protokolą siekiant sumažinti duomenų perdavimo kiekį lyginant su TCP protokolu. Tačiau atsiranda kitos problemos, tai, kad negali būti užtikrintas duomenų perdavimas. Tačiau šioje vietoje gali būti naudojamas kitokio pobūdžio duomenų perdavimo protokolas, tinkamas būtų ir TCP, tačiau panaudojimo prasme nelabai efektyvu. DTLS – apibrėžia saugumo protokolą datagramų tipo protokolams. DTLS yra paremtas TLS protokolu, tačiau gali būti suprantama kaip supaprastinta protokolo versija. Verta paminėti, kad DTLS palaiko RSA, AES ir kitus šifravimo algoritmus. Pagrindinis DTLS skirtumas nuo TLS, tai, kad įprastai naudojant SSL/TLS protokolas netoleruoja duomenų praradimo siuntimo sekoje. Jei prarandami duomenys, tuomet duomenų įrašas gali būti neteisingai iššifruotas, todėl DTLS ir toleruoja duomenų praradimą. CoAP – tai protokolas užtikrinantis, kuo mažesnį duomenų perdavimo kiekį tinklu ir dėl to puikiai tinkamas ir taikomas IoT įrenginiams. Iš principo duomenų mainai yra panašūs, kaip ir HTTP. Pagrindiniai CoAP privalumai:

  • • WEB pobūdžio protokolas. • Asinchroniniai pranešimai. • Mažas duomenų kiekis perduodamas tinklu naudojant UDP.

    • Mažas antraštės dydis < 10 baitų. • Paprasti pranešimų apsikeitimai tarp šalių, gali būti CON, NON, ACK, RST.

CoAP yra aukštesniame duomenų perdavimo lygmenyje, todėl jis yra apsaugotas DTLS saugumo protokolu.

  • LwM2M - blokinėje schemoje apibrėžia lankstų resursų grupavimą. Visi informacijos vienetai kliento aplikacijoje yra apibrėžiami kaip resursai. Pirmasis hierarchijos elementas yra objektas. Objektas – tai elementas apimantis vieno, konkretaus naudojimo duomenis. Pavyzdžiui vietovės, temperatūros, slėgio ar jitą jutiklį. Kiekvienas informacijos objektas turi unikalų ID. OMA turi aprašytus ID, tačiau jei norima naudoti specialų jiems yra rezervuoti ID nuo [26241; 32768]. Taip pat objektai yra skirstomi į resursus. Resursas tai jau konkrečią reikšmę turintis elementas. Resursai taip pat turi ID. Galimos operacijos:
  1. Skaityti – gauti reikšmę iš gaminio.
  2. Rašyti – pakeisti resurso reikšmę. Tinkamas sprendimas siekiant konfigūruoti gaminį nuotoliniu būdu.
  3. Ištrinti – Ištrinti resursą.
  4. Stebėti (angl. Observe) – Serveris gali reikalauti iš kliento stebėti tam tikrą vertę. Tuomet LwM2M klientas žino, kad esant resurso reikšmės pasikeitimui jis apie pasikeitimus informuos serverį.

Komunikacija

Tinklo aplinka naudojant LwM2M protokolą yra sudaryta iš trijų dalių:

  1. LwM2M klientas. Tai gali būti laikomas įrenginys sąveikaujantis su tikslu. Jis gali bendrauti su serveriu leidžiant jiems valdyti ir stebėti įrenginių išteklius, kurie yra veikiami naudojant standartizuotą duomenų modelį. LwM2M klientas yra atpažįstamas pagal unikalų UNR pavadinimą, kuris pagal OMA yra rekomenduojamus formatus.
  2. Boostrap serveris. Tai serveris su kuriuo klientas susisiekia per pirmą ar kiekvieną naują įsijungimą. Vienintelis jo tiklas yra inicijuoti duomenų modelį, įskaitant ryšius su įprastiniais LwM2M serveriais jungiantis į juos pirmą kartą. Boostrap serveris bendrauja su klientu naudodamas skirtingą komandų rinkinį, todėl jis negali būti laikomas LwM2M serveriu.
  3. LwM2M serveris. Palaiko ryšį su klientu ir geba skaityti ir keisti kliento objektų resursus. Bet kuris klientas gali vienu metu būti prisijungęs prie daugiau nei vieno LwM2M serverio ir kiekvienas iš serverių gali turėti prieigą prie visų kliento objektų resursų.
  4. Bootstrap – sąsaja perduodama registracijos informaciją klientui, kuri yra vėliau naudojama registruojantis prie LwM2M serverio. Kuomet reikia “bootstrap” informacija reikalinga klientas prisijungia prie Bootstrap serverio ir prašo LwM2M serverio informacijos. Klientas gali tiesiogiai registruotis į LwM2M serverį, jei jis jau žino registracijai reikalingą informaciją.
  5. Kliento registracija – sąsaja sukurta, kad klientas galėtų registruotis LwM2M serveriuose ir išlaikyti registracijos būseną arba išsiregistruoti iš serverio.
  6. Įrenginio valdymas ir paslaugų teikimas – įrenginio valdymo ir paslaugų teikimo sąsaja leidžia LwM2M serveriui pasiekti ir valdyti registruoto kliento resursus.
  7. Informacijos teikimas – sąsaja leidžianti LwM2M serveriui stebėti kliento išteklius ir gauti pranešimus, kuomet resursas yra atnaujinamas.

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 • Raw Public Keys • X.509 sertifikatus

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.

Išvados

Šiame darbe apžvelgėme LwM2M protokolo struktūrą aptarėme pavienius stuktūros elementus ir jų funkcijas. Taip pat trumpai aprašėme duomenų struktūrą. Atparėme DTLS saugumo protokolą ir palyginome skirtumus su SSL/TLS.