ID.nl logo
Zekerheid & gemak

Alles over het internet-of-things-protocol MQTT

De naam MQTT zal niet bij veel mensen een belletje doen rinkelen, maar het internet-of-things-protocol vormt de basis van talloze systemen in domotica. We kijken naar de werking van dit protocol en de verschillende manieren waarop je het kunt inzetten.

Het internet der dingen (internet of things, IoT) is de laatste jaren een hype, maar de meest gebruikte technologie om al die apparaten met elkaar te laten praten bestaat al twintig jaar: MQTT (Message Queuing Telemetry Transport). De eerste versie van het MQTT-protocol werd namelijk al in 1999 geschreven door Andy Stanford-Clark van IBM en Arlen Nipper van Arcom (later Eurotech).

Hun bedoeling was om een licht protocol te ontwikkelen dat met een efficiënt gebruik van bandbreedte allerlei soorten gegevens kon doorsturen met verschillende vormen van quality of service (QoS). En laat dat nu net een combinatie van eigenschappen zijn die essentieel is in het internet of things. Het mag dan ook niet verbazen dat talloze IoT-projecten ervoor gekozen hebben om onder de motorkap MQTT te gebruiken. Overigens toonde MQTT-uitvinder Stanford-Clark in 2009 de mogelijkheden al door zijn domoticasysteem via MQTT met Twitter te verbinden.

Centrale tussenpartij

Een cruciale rol in MQTT is weggelegd de ‘broker’, een centrale tussenpartij die de communicatie tussen zenders en ontvangers in goede banen leidt. In traditioneler taalgebruik zouden we het de server noemen. De broker is niet de enige afwijkende term die het MQTT-protocol gebruikt: een zender heet er uitgever (‘publisher’) en een ontvanger abonnee (‘subscriber’). Beide zijn vormen van clients. Uiteraard kan een client ook zowel zenden als ontvangen.

De broker zorgt ervoor dat uitgevers en abonnees niet van elkaars bestaan hoeven te weten: alles verloopt via de broker. Dat gaat als volgt: de broker beheert onderwerpen (‘topics’) met inhoud (‘payloads’). Een abonnee die in een onderwerp geïnteresseerd is, abonneert zich daarop bij de broker. Een uitgever die een boodschap wil sturen, publiceert zijn inhoud op een specifiek onderwerp door dit naar de broker te sturen. Zodra de broker een boodschap voor een onderwerp ontvangt, stuurt hij die door naar alle clients die op dit onderwerp geabonneerd zijn.

Hiërarchische onderwerpen

Een onderwerp kunnen we dus beschouwen als een soort locatie waarvan de naam bij uitgever en abonnee bekend is. Maar om hier wat systematiek in te brengen, definieert MQTT de onderwerpen als hiërarchische namen, gescheiden door een slash (/), zoals in url’s. Elke toepassing is voor de rest volledig vrij in de keuze van de namen; in tegenstelling tot url’s zijn er dus geen vastgelegde topdomeinen.

Wil je wat orde in je MQTT-netwerk houden, dan is het aan te raden om een systeem voor je onderwerpen te gebruiken. Een domoticatoepassing als Home Assistant doet dat door de onderwerpen van de volgende vorm te maken:

<discovery_prefix>/<component>/[<node_id>/]<object_id>/&lt;&gt;</object_id></node_id></component></discovery_prefix>

Daarbij is discovery_prefix standaard gelijk aan homeassistant. Component het type component, zoals binary_sensor enzovoort. Een voorbeeld van een onderwerp is:

homeassistant/sensor/slaapkamer_temperature/state

Dat bevat als inhoud de temperatuur van een temperatuursensor in de slaapkamer, bijvoorbeeld 18.7.

Wildcards

MQTT kent ook ‘wildcards’ voor onderwerpen. Een client die in alle onderwerpen onder homeassistant/sensor/slaapkamer_temperature geïnteresseerd is, abonneert zich dan op:

homeassistant/sensor/slaapkamer_temperature/#

Hij krijgt dan ook boodschappen over de onderwerpen:

homeassistant/sensor/slaapkamer_temperature/last_updated
homeassistant/sensor/slaapkamer_temperature/last_changed

Enzovoort.En als een client in alle onderwerpen van Home Assistant geïnteresseerd is, abonneert hij zich op:

homeassistant/#

Soms ben je geïnteresseerd in alle onderwerpen met een specifieke naam van het onderste niveau, ongeacht het niveau erboven. Daarvoor gebruik je de wildcard +. Zo abonneer je je bijvoorbeeld eenvoudig op de boodschappen over de laatste veranderingen van alle sensoren in Home Assistant:

homeassistant/sensor/+/last_changed

De hiërarchische opbouw van onderwerpen maakt dit heel eenvoudig.

©PXimport

Verbinding en beveiliging

MQTT is ontworpen om over tcp/ip te draaien, meestal op poort 1883. Recentelijk is ook MQTT over WebSocket populair, omdat dit het mogelijk maakt om rechtstreeks in een webbrowser via MQTT te communiceren. Een JavaScript-client pakt de pakketten dan uit de WebSocket-laag uit en behandelt de MQTT-pakketten die erin zitten. MQTT over WebSocket verloopt meestal via poort 9001. Zowel MQTT over tcp/ip als MQTT over WebSocket zijn ook te gebruiken over een versleutelde verbinding, via tls.

Tot nu toe lijkt het alsof iedereen zomaar alle onderwerpen op je MQTT-broker kan uitlezen, en zo gebeurt het in veel lokale MQTT-installaties ook, maar de meeste MQTT-brokers bieden een gebruikersbeheer met bijbehorende authenticatie en gebruikersrechten. Je stelt dan in de configuratie van de broker in dat elke MQTT-client zich moet aanmelden met een gebruikersnaam en wachtwoord en lees- en schrijfrechten voor specifieke onderwerpen heeft. Zo voorkom je dat een willekeurige sensornode in je netwerk waarin iemand is ingebroken je hele domoticasysteem via MQTT kan aansturen.

Zelf aan de slag met MQTT

MQTT is in heel wat software ondersteund, dus je kunt het protocol zelf eenvoudig in je eigen projecten inzetten. Een eenvoudige manier om een Raspberry Pi, Arduino of ESP8266 via MQTT over internet te laten werken, is via de clouddienst Adafruit IO. Werk je liever in het ecosysteem van Amazon of Microsoft, gebruik dan AWS IoT respectievelijk Azure IoT Hub.

Je hoeft MQTT trouwens niet in de cloud te gebruiken: met het opensourceproject Eclipse Mosquitto, dat MQTT-protocols 3.1 en 3.1.1 ondersteunt, draai je eenvoudig een MQTT-broker op je eigen netwerk. Mosquitto komt ook met eenvoudige MQTT-clients voor op de opdrachtregel: mosquitto_pub en mosquitto_sub.

Wil je op een grafische manier MQTT-boodschappen doorzoeken, bekijken en publiceren, dan is MQTT Explorer een handig programma.

Wil je MQTT in je eigen programma’s gebruiken, dan is het project Eclipse Paho met bibliotheken in C, C++, Java, JavaScript, Python en Lua onmisbaar.

▼ Volgende artikel
Slim wachtwoordbeheer: zo houd je je accounts écht veilig
© Queenmoonlite Studio - stock.adobe.com
Huis

Slim wachtwoordbeheer: zo houd je je accounts écht veilig

Hoewel wachtwoordloze technieken als toegangssleutels snel terrein winnen, doe je er voorlopig goed aan slim om te gaan met je huidige wachtwoorden. De tips en (gratis) tools in dit artikel helpen je bij het opzetten van degelijk wachtwoordbeheer.

Dit gaan we doen

Sterke wachtwoorden en tweestapsverificatie blijven voorlopig onmisbaar, ook nu toegangssleutels opkomen. In dit artikel lees je hoe je veilig en praktisch met wachtwoorden omgaat. Je ontdekt welke gratis tools je helpen – zoals Bitwarden voor cloudbeheer of KeePassXC voor lokale opslag – en hoe je 2FA en authenticatie-apps toevoegt voor extra bescherming. Verder komt aan bod hoe je datalekken opspoort, phishing voorkomt, herstelcodes bewaart en aparte browserprofielen instelt voor gevoelige accounts. Tot slot lees je hoe toegangssleutels werken, de toekomst van wachtwoordloos inloggen.

Lees ook: Bescherm je data: voorkom digitale beveiligingslekken

Cloudbeheer

Telkens hetzelfde wachtwoord gebruiken voor meerdere apps en diensten is sterk af te raden, maar verschillende complexe wachtwoorden onthouden lukt haast niet zonder een wachtwoordbeheerder. Een degelijke, gratis optie is het opensource Bitwarden. Kies eerst een hoofdwachtwoord en installeer daarna de desktop-app, browserextensies (voor automatisch invullen) en/of de mobiele app. Je wachtwoordkluis wordt end-to-end versleuteld in de cloud bewaard en wordt via je account gesynchroniseerd. Kies bij voorkeur bitwarden.eu als serverlocatie. Je kunt ook creditcards en andere gevoelige gegevens in je kluis bewaren.

De webversie van Bitwarden is nog handiger als je ook de browserextensie installeert.

Lokaal beheer

Bitwarden is een uitstekende wachtwoordmanager, maar functies als TOTP-authenticatie (Time-based One-Time Password) zijn alleen beschikbaar in de betaalde versie. Misschien stoort het je ook dat je wachtwoordkluis in de cloud wordt opgeslagen. Een gratis, opensource-alternatief is KeePassXC. Deze bewaart alles lokaal in een versleuteld bestand, van wachtwoorden en creditcards tot notities. De app werkt volledig offline, ondersteunt ook TOTP-authenticatie en vult inloggegevens automatisch in via een browserextensie. Wil je toch synchronisatie, dan kun je de database delen via een cloudopslagdienst als Google Drive of Dropbox, of met Syncthing.

KeePassXC is een volwaardige wachtwoordmanager, weliswaar offline.

Algoritme

Bij wachtwoordbeheerders als Bitwarden en KeePassXC worden je wachtwoorden opgeslagen. LessPass pakt het anders aan. Deze bewaart niets, maar genereert je wachtwoorden telkens opnieuw via een algoritme op basis van je hoofdwachtwoord, gebruikersnaam en sitenaam. Uit veiligheidsoverwegingen gebruik je hiervoor liefst de browserextensie of mobiele app, zodat alles lokaal gebeurt. Omdat nergens iets wordt opgeslagen, is dit systeem veilig, maar je moet bij elke herberekening wel exact dezelfde gegevens ingeven. Automatisch invullen of ondersteuning voor notities ontbreekt helaas.

LessPass: veiliger, maar het luistert nauw en is omslachtiger.

Browsers

Gebruik je bijna uitsluitend je browser voor allerlei aanmeldingen, dan kun je ook de ingebouwde wachtwoordbeheerfunctie gebruiken. Deze zit in de meeste Chromium-browsers en in Firefox. In Chrome ga je naar Instellingen / Jij en Google / Synchronisatie en Google-services. Schakel de functie in en zorg dat bij Beheren wat je synchroniseert ook Wachtwoorden en toegangssleutels is aangevinkt. Wil je liever niet synchroniseren, dan kun je wachtwoorden ook handmatig exporteren en importeren via Instellingen / Automatisch invullen en wachtwoorden / Google Wachtwoordmanager. Kies daar Instellingen en Wachtwoorden exporteren. Je kunt het opnieuw inladen via Wachtwoorden importeren. Verwijder eventueel het csv-bestand na gebruik. Firefox biedt vergelijkbare opties.

In onder meer Chrome kun je wachtwoorden (en meer) via je account laten synchroniseren.

2FA

Zelfs met een degelijke wachtwoordbeheerder blijven wachtwoorden een zwakke schakel: ze zijn te eenvoudig, je vergeet of verliest ze, je geeft ze in op phishing-sites of malware onderschept ze. Daarom is het aangeraden om 2FA, oftewel tweestapsverificatie, te activeren. Daarbij is naast je wachtwoord een extra factor nodig, zoals een pincode, TOTP, sms, pushmelding, biometrie of een beveiligingssleutel. Een handig overzicht van sites en diensten die 2FA ondersteunen, met info over de gebruikte methoden en links naar de instelinstructies, vind je op https://2fawebsites.github.io en op de thematische https://2fa.directory.

Een uitgebreide lijst met diensten die 2FA ondersteunen.

Authenticator

Er bestaan meerdere verificatiemethoden voor 2FA, maar vrijwel alle diensten ondersteunen verificatie zowel via sms als via TOTP. Bij TOTP is geen internet of gsm-netwerk nodig, wat het minder kwetsbaar maakt voor onderschepping of sim-swapping. Om zulke codes te genereren heb je een TOTP-authenticator-app nodig. Goede gratis opties zijn Google Authenticator, Microsoft Authenticator (ondersteunt geen wachtwoordbeheer en autofill meer), Aegis Authenticator en Authy. Alle vier ondersteunen TOTP en bieden een back-upfunctie. Wil je je codes exporteren, dan lukt dit het best met Google of Aegis. Deze laatste is ook opensource, maar is enkel beschikbaar voor Android. Authy is veelzijdigst, want bruikbaar op Android, iOS, macOS en Windows.

Export van TOTP-codes in Google Authenticator (voor gebruik op een ander apparaat).

Herstelcodes

De meeste diensten met 2FA laten je ook herstelcodes gebruiken. Deze bieden een uitweg als je tijdelijk geen toegang hebt tot andere aanmeldopties, bijvoorbeeld bij verlies van je smartphone. Bewaar deze herstelcodes tevens digitaal, zoals in het notitiegedeelte van je favoriete wachtwoordmanager, in een versleutelde VeraCrypt-container of in een versleuteld cloudbestand. Bij Google vind je tot 10 herstelcodes via https://myaccount.google.com/security, bij Back-upcodes. Bij Microsoft is dit beperkt tot één code: ga naar https://account.microsoft.com/security, klik op Beheren hoe ik me aanmeld en kies Een nieuwe code genereren.

Bij Microsoft kun je slechts één herstelcode tegelijk activeren.

Gehackt?

Het is verstandig om regelmatig te controleren of een van je login-id's al in een online datalek voorkomt. Dit kan via Have I Been Pwned. Hier vul je e-mailadres in en je ziet meteen hoeveel en welke datalekken er zijn. Klik bovenaan op Notify Me voor een gratis melding zodra je adres in een nieuw lek opduikt. Klik op Passwords om te controleren of een wachtwoord reeds voorkomt in een datalek.

In Chrome kun je via chrome://password-manager/checkup?start=true eveneens een wachtwoordcheck uitvoeren. Je ziet ook hoeveel wachtwoorden zwak zijn of worden hergebruikt.

Een weinig opbeurend rapport: zestien datalekken gevonden.

Anti-phishing

Wachtwoorden bieden weinig bescherming tegen phishing-sites, dus zorg ervoor dat je hiertegen zo goed mogelijk beveiligd bent. In je browser, zoals Chrome, ga je naar Instellingen, kies Privacy en beveiliging / Beveiliging en activeer bij voorkeur Geoptimaliseerde beveiliging bij Safe Browsing, of anders Standaardbeveiliging. Daarnaast kun je via DNS phishing-sites al blokkeren voor ze laden. Een optie is het gebruik van de nieuwe Europese publieke DNS4EU-resolvers. Kies hier voor Protective resolution (86.54.11.1 en 86.54.11.201), eventueel aangevuld met kinderbescherming en/of advertentieblokkering. Op de site vind je stap-voor-stap-instructies.

De EU biedt nu ook eigen publieke DNS-filters aan.

E-mailadres

Veel diensten laten je een e-mailadres opgeven ingeval je je wachtwoord vergeet of je account wordt geblokkeerd. Je ontvangt dan een mail om je identiteit te bevestigen en een herstellink te krijgen. Gebruik hiervoor liefst niet je hoofdadres, want als iemand dat via een datalek bemachtigt, kan die herstelmails onderscheppen en je accounts via wachtwoordherstel overnemen. Je kiest dus beter een apart e-mailadres dat je nergens anders voor gebruikt. Bij Google kun je dit instellen op https://myaccount.google.com/security, bij Herstelmailadres.

Je gebruikt bij voorkeur een afzonderlijk adres voor het wachtwoordherstel.

Lees ook: Zo meld je phishing in Outlook en Gmail

Browserprofiel

Voor gevoelige accounts zoals online bankieren of je wachtwoordkluis kun je overwegen een apart browserprofiel te gebruiken. Malafide scripts of extensies uit je standaardprofiel worden zo niet geactiveerd. Zo beperk je ook tracering en fingerprinting, en voorkom je dat je per ongeluk ingelogd blijft, aangezien je in dat profiel geen andere sites bezoekt.

In Chrome maak je een nieuw profiel aan via het profielicoon rechtsboven. Kies Chrome-profiel toevoegen. Je kunt inloggen met een Google-account of klikken op Doorgaan zonder account. Kies een zoekmachine, vul een profielnaam in, selecteer een opvallend thema en klik op Klaar.

Overweeg een afzonderlijk browserprofiel voor privacygevoelige online diensten.

Aanmeldpogingen

Bij sommige diensten, zoals Google en Microsoft, ontvang je automatisch een e-mail of pushmelding zodra een nieuw apparaat of een nieuwe browser inlogt. Zo kun je snel ingrijpen, bijvoorbeeld door je wachtwoord aan te passen of verdachte sessies uit te loggen. Bij Google ga je naar https://myaccount.google.com/security. Scrol naar Je apparaten en klik op Apparaten beheren. Selecteer een sessie en kies Uitloggen. Bij Microsoft ga je naar https://account.microsoft.com/security en klik je op Mijn aanmeldactiviteiten weergeven.

Ook bij Google kun je de recentste sessies (en gekoppelde diensten) bekijken.

Beveiligingssleutel

Je kunt een fysieke beveiligingssleutel (zoals de meeste YubiKeys) ook gebruiken om je wachtwoordkluis te openen in combinatie met je hoofdwachtwoord.

Installeer eerst Yubikey Manager en start dit programma. Ga naar Applications/OTP en klik op Configure bij een vrij slot. Kies Challenge-response en klik op Generate voor een geheime sleutel. Vink Require touch aan voor extra veiligheid. Bevestig met Finish.

Open vervolgens je database in KeePassXC en ga naar Database / Databasebeveiliging. Kies Aanvullende bescherming toevoegen / Challenge-Response toevoegen. Selecteer het juiste slot van je ingeplugde beveiligingssleutel en bevestig met OK.

Voortaan is deze wachtwoordkluis alleen toegankelijk met wachtwoord en token.

Yubikey kopen?

Dan kan gewoon

Browserwachtwoorden

Gebruik je meerdere browsers en zoek je het wachtwoord van een specifieke site, wil je alle wachtwoorden exporteren voor import in een andere browser, of is je systeem gecrasht en wil je de wachtwoorden uit je browserprofielen halen? Dan kan het gratis WebBrowserPassView handig van pas komen (let op: je virusscanner kan een foutpositief geven). Pak het zip-bestand uit met het wachtwoord wbpv28821@ en start de portable app. Je krijgt een overzicht van alle gevonden sites en log-ins. Via Bestand / Geselecteerde items opslaan kun je exporteren naar diverse csv-formaten, zoals voor Chrome, KeePass en Firefox.

Je browserlogins op een presenteerblaadje.

Toegangssleutels

Een mooie afsluiter lijkt ons een tip rond passkeys, oftewel toegangssleutels. Immers, steeds meer diensten (en wachtwoordmanagers) ondersteunen deze aanmeldmethode waarbij je geen wachtwoord meer hoeft in te voeren. Een passkey is een cryptografisch sleutelpaar: de publieke sleutel wordt bewaard bij de onlinedienst, terwijl de (afgeleide) private sleutel veilig op je toestel blijft, zoals je pc, smartphone of een fysieke beveiligingssleutel zoals een Yubikey.

Zo maak je een toegangssleutel aan bij Google. Ga naar https://g.co/passkeys en meld je aan. Klik twee keer op Toegangssleutel maken. Je toestel stelt nu een methode voor, zoals gezichtsherkenning, vingerafdruk of pincode. Bevestig de koppeling. Vanaf nu kun je je bij Google aanmelden vanaf dit toestel, zonder wachtwoord.

Je kunt meerdere toegangssleutels maken voor diverse apparaten.

View post on TikTok
▼ Volgende artikel
Fairphone vernieuwt Fairbuds XL met focus op beter geluid en comfort
© Fairphone
Huis

Fairphone vernieuwt Fairbuds XL met focus op beter geluid en comfort

Fairphone lanceert de vernieuwde Fairbuds XL. Deze modulaire koptelefoon belooft nu ook het geluid en comfort te bieden dat je voor 249 euro mag verwachten. Met nieuwe drivers en zachtere oorkussens pakt de fabrikant de eerdere kritiekpunten aan. Handig: je kunt je oude model zelf eenvoudig upgraden.

De Nederlandse fabrikant Fairphone heeft deze week de vernieuwde versie van de Fairbuds XL gepresenteerd. Deze modulaire koptelefoon is een doorontwikkeling van het model dat in 2023 werd gelanceerd. Waar de eerste generatie vooral een statement maakte op het gebied van repareerbaarheid, belooft deze nieuwe versie ook op audiogebied en draagcomfort een inhaalslag te maken. De koptelefoon is daardoor ontworpen om jarenlang mee te gaan en is per direct verkrijgbaar.

©Fairphone

Verbeterde audiokwaliteit en materialen

De belangrijkste upgrade ten opzichte van de voorganger zit in de geluidsweergave en het fysieke ontwerp. De nieuwe Fairbuds XL beschikt over 40 mm dynamische drivers en ondersteuning voor aptX HD, wat moet zorgen voor een gedetailleerder geluidsbeeld en high-res audio via bluetooth. Fairphone heeft daarnaast gekeken naar de feedback over het draagcomfort. De nieuwe modellen zijn uitgerust met zachtere oorkussens van 'birdseye-mesh' en een ademende hoofdband, waardoor de koptelefoon ook tijdens langere luistersessies prettig moet blijven zitten. Het design is beschikbaar in de kleuren Forest Green en Horizon Black.

Modulair ontwerp voor lange levensduur

Wat de Fairbuds XL onderscheidt in de markt van consumentenelektronica is de verregaande modulariteit. De koptelefoon is opgebouwd uit negen losse modules die door de gebruiker zelf te vervangen zijn. Dit betekent dat bij een defect of slijtage niet het hele apparaat weggedaan hoeft te worden, maar dat onderdelen zoals de batterij, de oorkussens of de hoofdband eenvoudig vervangen kunnen worden. Technisch biedt het apparaat verder dual-point connectiviteit, een IP54-certificering voor spatwaterdichtheid en een accuduur tot 30 uur.

Zoals gebruikelijk bij het Amsterdamse bedrijf ligt de nadruk sterk op duurzaamheid en eerlijke materialen. De koptelefoon bestaat voor ongeveer 50 procent uit gerecyclede grondstoffen, waaronder gerecycled aluminium en zeldzame aardmaterialen in de magneten. Ook wordt er bij de assemblage gebruikgemaakt van fabrieken die draaien op zonne-energie en investeert het bedrijf in leefbare lonen voor fabrieksarbeiders.

©Fairphone

Compatibel met het vorige model

Een opvallende keuze van Fairphone is de compatibiliteit met de eerste generatie Fairbuds XL. De fabrikant benadrukt dat technologie moet meegroeien met de gebruiker. Bezitters van het 2023-model hoeven daarom geen volledig nieuwe koptelefoon aan te schaffen om te profiteren van de geluidsverbeteringen. De nieuwe drivers zijn namelijk ook als los onderdeel verkrijgbaar en kunnen eenvoudig in het oude model worden geïnstalleerd. Hiermee voegt Fairphone daadwerkelijk de daad bij het woord wat betreft het verlengen van de levensduur van elektronica.

©Fairphone

Prijs en beschikbaarheid

De vernieuwde Fairbuds XL is per direct verkrijgbaar in Nederland. De adviesprijs voor de koptelefoon bedraagt 249 euro. Hij is te koop via de webwinkel van Fairphone en bij geselecteerde retailers.