LoRa & LoRaWAN
LoRa is een term die ik steeds vaker te horen krijg. Zowel zakelijk als prive en altijd in combinatie met IoT devices. Als we het over “LoRa” hebben dan bedoelen we meestal niet het LoRa protocol maar het “LoRaWAN” protocol. LoRaWAN wat staat voor “Long Range Wide Area Network” en is een telecomnetwerk welke geschikt is voor langeafstandscommunicatie met weinig vermogen (LPWAN ofwel “Low-Power Wide Area Network”). LoRaWAN is dus een alternatieve communicatietechniek waarmee devices kunnen communiceren en data over kunnen brengen zonder gebruik te maken van de traditionele methodes zoals WiFi, Ethernet, 4G etc. Om meer te weten te komen over “LoRaWAN” en hoe het werkt heb ik deze post gemaakt. En… is LoRaWAN eigenlijk wel veilig genoeg? Lees met me mee!
Maar voor we het over LoRaWAN kunnen hebben moeten we het eerst over LoRa hebben. LoRa is een technologie die dus speciaal ontwikkeld is om machine-to-machine communicatie mogelijk te maken op een goedkope of zelfs gratis manier. LoRa is ontwikkeld door “Cycleo” en overgenomen door Semtech welke weer de oprichter is van de “LoRa Alliance” die in 2015 is opgericht ter ondersteuning van het LoRa(WAN)-protocol. De LoRa Alliance is een vereniging zonder winstoogmerk met meer dan 500 leden, waaronder IBM, Orange, Cisco en KPN.
LoRa is dus een LPWAN oplossing welke ontwikkeld is om low-powered apparaten (zoals batterij of USB powered apparaten) te kunnen verbinden met elkaar. We vinden LoRa apparaten veelal terug onder IoT, smart devices en PA (proces automatisering) apparaten. Deze apparaten gebruiken hiervoor allemaal het LoRaWAN protocol welke werkt bovenop de LoRa technologie. Het LoRa protocol is een layer 1 protocol (physical) en gebruikt radiogolven om data te verzenden. Bovenliggende technieken zoals LoRaWAN werken op bovenliggende lagen van het OSI model. LoRa maakt gebruik van licentievrije sub-gigahertz radiofrequenties waaronder:
- 433 MHz & 868 MHz (Europa)
- 915 MHz (Australië en Noord Amerika)
- 923 MHz (Azië)
Deze radiofrequenties maken het mogelijk om data tot honderden kilometers te dragen (afhankelijk van de obstakels). LoRa maakt gebruik van een eigen spread-spectrummodulatie welke een afgeleide is van Chirp spread-spectrum (CSS) -modulatie. De LoRa spread-spectrum modulatie werkt door elke bit weer te geven d.m.v. “piepjes” (chisps) informatie.
Even een paar feiten:
- Symbol Rate (SR) = De snelheid waarmee de data wordt verzonden
- Spreading Factor (SF) = De verhouding tussen de nominale SR en de piepjes snelheid (chrisp snelheid). Effectief vertegenwoordigd de SF dus het aantal verzonden symbolen per bit informatie.
Spread spectrum is een vorm van draadloze communicatie waarbij de energie van het uitgezonden signaal met opzet verspreid wordt over een bepaald frequentiedomein. Zulke signalen hebben een veel grotere bandbreedte dan de informatie die ze bevatten, waardoor een ruisachtig signaal ontstaat dat moeilijk te detecteren of te onderscheppen is. Bovendien is het lastig om een spread spectrum signaal te verstoren met een ander signaal.
Let wel, we hebben het hier over low-powered devices. Het doel is dus om het modem zo kort mogelijk actief te laten zijn want hoe langer het modem actief is des te meer energie wordt er verbruikt. Hoe hoger de SF des te minder chrisps er per seconde verzonden worden en hoe langer de datatransmissie duurt. Een lagere SF heeft uiteraard een tegenovergesteld effect maar is minder gevoelig en geeft de ontvanger minder kans om de data op de juiste manier te ontvangen. Het aantal “spread” (SR) is te selecteren met een selecteerbare radioparameter tussen 7 en 12. Daarnaast kent LoRa de “Forward Error Correction-codering” techniek welke de veerkracht verbeterd tegen interferentie.
De radiotechniek die LoRa gebruikt is de basis waarop diverse protocollen zoals LoRaWAN werken. Met een “verbinding” alleen kan nog geen data verstuurd worden. Er moeten pakketten gedefinieerd worden, verzonden worden en gecontroleerd worden. Dit alles gebeurt door LoRaWAN. Vergelijk LoRaWAN met TCP/IP bij ethernet. LoRa bevind zich op de physical layer en LoRaWAN op de 2e en 3e laag (data link & network layer).
De architectuur van LoRa bestaat uit nodes (sensoren), gateways, (cloud) netwerkservers en applicatieservers. In een LoRaWAN netwerk zijn nodes niet geassocieerd met een specifieke gateway zoals we dat gewend zijn bij “gewone” netwerken. Als een node data transporteert wordt deze data ontvangen door meerdere gateways. Elke gateway zal deze data doorsturen naar een cloud-based netwerk server die op zijn beurt de data weer doorstuurt naar het eindstation. Binnen dit proces kunnen diverse technieken gebruikt worden. Zo zal de node naar de gateway verzenden over radiogolven met het LoRa protocol maar de gateway kan middels een andere techniek data naar de cloud-based netwerk server sturen. Denk aan 4G, Ethernet, WiFi, Satelliet etc. Verschillende technieken kunnen ook weer gebruikt worden om de data van de cloud-based netwerk server naar het eindstation (b.v. een applicatie server) te sturen.
De kracht van het LoRaWAN netwerk zit in de cloud-based netwerk server. Deze is verantwoordelijk voor het ontdubbelen van pakketten (want meerdere gateways sturen die toe), het uitvoeren van security checks en het versturen van acknowledgments via de optimale route naar de verzendende node.
LoRaWAN is een sternetwerk met een groot bereik. De gateway is hierin een kritiek en essentieel punt. Deze moet namelijk een zeer hoge capaciteit hebben om berichten van alle verschillende nodes te kunnen ontvangen en verwerken. Deze hoge netwerkcapaciteit kan worden behaald door gebruik te maken van adaptieve datasnelheid en door de multichannel multi-modem transceiver in de gateway. Deze zorgt ervoor dat gelijktijdige berichten op meerdere kanalen kunnen worden ontvangen. De kritische factoren die de capaciteit beïnvloeden, zijn het aantal gelijktijdige kanalen, de datasnelheid (time on air), de grootte van de pakketten, het aantal pakketten worden verzonden. Aangezien LoRa een op spread-spectrum modulatie gebruikt zijn de signalen orthogonaal ten opzichte van elkaar wanneer verschillende spreidingsfactoren worden gebruikt. Als de spreidingsfactor verandert, verandert ook de effectieve datasnelheid. De gateway profiteert van deze eigenschap door tegelijkertijd meerdere verschillende gegevenssnelheden op hetzelfde kanaal te kunnen ontvangen. Als een node een goede link heeft en dichtbij een gateway ligt dan zal de datasnelheid omhoog gaan zodat het overdracht van data sneller gaat en er weer ruimte op het spectrum komt voor een andere data overdracht. Deze adaptieve datasnelheid optimaliseert ook de levensduur van de batterij van de node. Om adaptieve datasnelheid te laten werken zijn een symmetrische uplink en downlink vereist.
Een LoRaWAN netwerk kan worden gebouwd met een minimale hoeveelheid infrastructuur en naarmate er meer capaciteit nodig is, kunnen er meer gateways worden toegevoegd waardoor de datasnelheden worden verhoogd, de overheveling naar andere gateways wordt verminderd en de capaciteit met 6-8x wordt geschaald. Andere LPWAN-alternatieven hebben niet de schaalbaarheid van LoRaWAN vanwege de technologische beperkingen die de capaciteit van de downlink beperken of waarbij de downlink asymmetrisch is ten opzichte van de uplink. LoRaWAN gateways kunnen worden gehost door iedereen en komen in verschillende soorten en maten. Mocht er behoefte zijn aan een gateway dan kun je deze zelf hosten. Als er echter als een gateway in de buurt is met voldoende capaciteit dan kan je LoRaWAN apparatuut daar gebruik van maken. LoRaWAN Gateways zijn te koop als kant-en-klare modellen maar je kunt deze ook zelf bouwen. Een lichte LoRaWAN Gateway kan zelfs al gebouwd worden met een Raspberry Pi.
Een pakketje welke middels LoRaWAN verstuurd wordt heeft de volgende opbouw:
En om dan in de details te duiken, deze blokken zijn als volgt opgebouwd:
Een gemiddeld LoRaWAN pakketje is dus minimaal 32 bits groot en bestaat uit verschillende onderdelen. De “Physical Layer” ofwel de LoRa layer bouwt een pakketje op welke start met een “Preamable” welke weer gebruikt wordt voor synchronisatie doeleinden, gebruikte modulatie en spreading factor. Vervolgens wordt er een header + CRC gemaakt en wordt er een Phy Payload gegenereerd. In de Phy Payload staat gedefinieerd of er een Phy Payload CRC aanwezig is. Normaliter hebben alleen de uplink frames een Phy Payload CRC.
De Phy Payload definieert de MAC layer (layer 2) welke bestaat uit een MAC header, MAC payload en een MIC (Message Integrity Code). De MAC header definieert de protocolversie en het berichttype (of het een data- of een managementframe is en of het wordt verzonden in uplink of downlink en tenslotte of er een bevestiging van ontvangst verwacht wordt). De volledige MAC header en MAC payload worden gebruikt om de MIC-waarde te berekenen met een netwerksessiesleutel (Nwk_SKey). De MIC-waarde wordt gebruikt om vervalsing van berichten te voorkomen en het eindknooppunt te verifiëren.
De MAX payload definieert het “Application Layer Packet” welke weer bestaat uit een Frame header, een frame port en een frame payload. De waarde van het frame port veld is afhankelijk van het type applicatie. De Frame Payload-waarde wordt gecodeerd met een Application Session Key (App_SKey). Deze codering is gebaseerd op het AES 128-algoritme. De informatie in de frame-header bestaat uit de volgende gegevens:
- Device Address – Deze bestaat uit twee delen. De eerste 8 bits identificeren het netwerk en andere bits worden dynamisch toegewezen tijdens het verbinden met het netwerk en identificeren het apparaat in een netwerk.
- Frame Control – Dit veld is 1 byte groot en bestemd voor network control informatie zoals het al dan niet gebruiken van de door de gateway gespecificeerde datasnelheid voor uplink-transmissie, of dat dit bericht de ontvangst van een vorige bericht bevestigt.
- Frameteller – voor pakket volg nummering
- Frame options – Dit veld is voor commando’s die worden gebruikt om datasnelheid, zendvermogen en verbindingsvalidatie te wijzigen.
LoRaWAN Security
Het is zeer belangrijk dat een goede security opgenomen in binnen een netwerkprotocol en zeker met een LPWAN protocol zoals LoRaWAN. Het mooie is dat beveiliging ook meteen is meegenomen met de opbouw en implementatie van het LoRaWAN protocol. Allereerst biedt het gebruikte “spread spectrum” de nodige beveiliging. Daarnaast maakt LoRaWAN gebruik van twee beveiligingslagen: één voor het netwerk en één voor de applicatie. De netwerkbeveiliging zorgt voor authenticiteit van het knooppunt in het netwerk, terwijl de beveiliging op de application layer ervoor zorgt dat de netwerkexploitant geen toegang heeft tot de data. De data op de application layer wordt beveiligd middels AES-codering en d.m.b. van sleuteluitwisseling (key exchange) door gebruik te maken van een IEEE EUI64-ID.
Toch stellen security researches met recht een aantal vraagtekens bij de veiligheid van een LoRaWAN netwerk welke meestal niet te maken hebben met de kracht en de opzet van het protocol maar wel met de implentatie en configuratie ervan (met andere woorden, gebruikersfouten).
- Door reverse-engineering van de software toe te passen kunnen encryptiesleutels uit de apparaten worden gehaald.
- Veel apparaten worden geleverd met een leesbare copy (geprint) van het apparaat-ID, de beveiligingssleutels en meer. Deze “tags” moeten vernietigd worden nadat het apparaat in-bedrijf geplaatst is maar vaak gebeurt dit niet.
- Sommige apparaat-series worden geleverd met hardcoded encryptiessleutels die gebruikt worden in verschillende open-source LoRaWAN-bibliotheken. Het is de bedoeling om dat deze worden vervangen voordat het apparaat in bedrijf geplaatst wordt maar vaak wordt dit over het hoofd gezien.
- Sommige apparaten gebruiken eenvoudige encryptiesleutels zoals combinaties van apparaateigenschappen als app-id en apparaat ID.
- LoRaWAN-netwerkservers zijn mogelijk onveilig geconfigureerd en kwetsbaar voor andere niet-LoRaWAN-kwetsbaarheden waardoor hackers deze systemen kunnen overnemen.
- Door beveiligingslekken in het protocolontwerp is een DOS aanval mogelijk.
Als de beveiliging doorbroken kan worden dan kan de “hacker” mogelijk veel schade veroorzaken. Denk hierbij aan het stilzetten van de apparaten, modificeren van de data zodat beslissingen fout genomen worden en het inlezen van de data.
Conclusie
LoRa en LoRaWAN openen vele nieuwe mogelijkheden en maken het mogelijk om ons “Internet-of-Things” goedkoop en relatief veilig vorm te geven. Het enige nadeel van LoRa is dat het belangrijk is om 1 of meerdere gateways in de buurt te hebben zodat de dekking gegarandeerd is en de communicatie vlot kan verlopen. De dekking van LoRa gateways wordt steeds beter maar op veel plekken in Nederland is deze nog niet ideaal en is het zaak dat je zelf een gateway aanschaft en configureert om je LoRa netwerk draaiende te krijgen. Verder heeft LoRaWAN een zeer grote potentie en zal het gebruik (en dus ook het misbruik) hiervan in de toekomst enorm toenemen.
Hopelijk heb ik je in deze post meer inzicht kunnen geven in LoRa, LoRaWAN en de architectuur die hiervoor gebruikt wordt. Zelf heb ik er in ieder geval veel van opgestoken! Jij ook? Dan zou ik het erg op prijs stellen dat je mijn bericht deelt op je website of social media kanalen. Dit bericht liken of mij een leuk berichtje sturen wordt ook altijd enorm gewaardeerd. Op deze manier blijft het leuk om te schrijven en om kennis over te dragen. Dankjewel!