Gebruikmaken van verbeterde authenticatie voor MQTT-beveiliging

Gebruikmaken van verbeterde authenticatie voor MQTT-beveiliging

Bronknooppunt: 2178565
Gebruikmaken van verbeterde authenticatie voor MQTT-beveiliging
Illustratie: © IoT For All

Verbeterde authenticatie is een nieuw authenticatieframework geïntroduceerd in MQTT 5.0. Het biedt een reeks alternatieve methoden die veiliger zijn dan traditionele wachtwoordauthenticatie.

Verhoogde beveiliging gaat echter gepaard met extra complexiteit. Bepaalde authenticatiemethoden, zoals SCRAM, vereisen meerdere uitwisselingen van authenticatiegegevens. Dit maakt het single-exchange authenticatieframework van de CONNECT- en CONNACK-pakketten verouderd.

Om deze beperking aan te pakken introduceert MQTT 5.0 het AUTH-pakket, dat meerdere uitwisselingen van authenticatiegegevens ondersteunt. Het maakt het gebruik mogelijk van SASL (Simple Authentication and Security Layer)-mechanismen met een uitdaging-antwoordstijl erin MQTT.

Welke problemen lost verbeterde authenticatie op?

Voordat we ons verdiepen in verbeterde authenticatie, is het essentieel om de tekortkomingen ervan te begrijpen wachtwoord authenticatie qua beveiliging.

Ondanks het gebruik van technieken als Salt en Hash om wachtwoorden veilig op te slaan, moet de client het wachtwoord in platte tekst over het netwerk verzenden, waardoor het kwetsbaar wordt voor diefstal. Zelfs wanneer TLS-encryptie voor communicatie wordt gebruikt, blijft het risico bestaan ​​dat aanvallers gevoelige gegevens zoals wachtwoorden verkrijgen vanwege verouderde SSL-versies, zwakke coderingssuites of de aanwezigheid van valse CA-certificaten.

Bovendien zorgt eenvoudige wachtwoordauthenticatie ervoor dat de server alleen de identiteit van de client kan controleren, en niet andersom, waardoor de aanvaller zich kan voordoen als de server en gevoelige gegevens van de client kan bemachtigen. Dit is wat we vaak een man-in-the-middle-aanval noemen.

Dankzij verbeterde authenticatie kunnen gebruikers zeer veilige authenticatiemethoden gebruiken binnen het SASL-framework. Deze methoden bieden verschillende voordelen, zoals het elimineren van de overdracht van wachtwoorden via het netwerk en het vergemakkelijken van wederzijdse identiteitsverificatie tussen de client en de server. Door deze opties te presenteren kunnen gebruikers de authenticatiemethode selecteren die aansluit bij hun specifieke behoeften en beveiligingsvoorkeuren.

Algemene SASL-mechanismen die worden gebruikt voor verbeterde authenticatie

DIGEST-MD5

DIGEST-MD5 is een authenticatiemethode binnen het SASL-framework. Het maakt gebruik van het Message Digest 5 (MD5) hash-algoritme en een challenge-response-mechanisme om de identiteit tussen de client en de server te verifiëren. Een opmerkelijk voordeel is dat de klant het wachtwoord niet in platte tekst over het netwerk hoeft te verzenden.

Simpel gezegd: wanneer een client toegang wil krijgen tot een beschermde bron, zal de server een uitdaging sturen met een eenmalig willekeurig getal en enkele vereiste parameters. De client gebruikt deze parameters, samen met zijn gebruikersnaam en wachtwoord, om een ​​antwoord te genereren, dat vervolgens terug naar de server wordt verzonden.

De server creëert onafhankelijk een verwacht antwoord met behulp van dezelfde methode en vergelijkt dit met het ontvangen antwoord. Als ze overeenkomen, is de authenticatie succesvol. Deze aanpak beperkt effectief het risico van wachtwoordblootstelling via netwerkspionage. Door voor elke verbinding een eenmalig willekeurig getal te gebruiken, wordt de bescherming tegen replay-aanvallen bovendien verbeterd.

Het is echter belangrijk op te merken dat DIGEST-MD5, hoewel het verificatie van de identiteit van de client op de server mogelijk maakt, de mogelijkheid voor de client mist om de identiteit van de server te verifiëren. Deze beperking laat ruimte voor mogelijke man-in-the-middle-aanvallen. Omdat MD5 niet langer veilig is, wordt het bovendien sterk aanbevolen om het te vervangen door een hash-functie die een sterkere weerstand biedt tegen botsingen, zoals SHA-256.

SCRAM

SCRAM (Salted Challenge Response Authentication Mechanism) is een andere authenticatiemethode binnen het SASL-framework. Het deelt overeenkomsten met DIGEST-MD5 qua aanpak. SCRAM vraagt ​​de client om een ​​antwoord te genereren met behulp van een eenmalig willekeurig getal, waardoor wordt vermeden dat het wachtwoord in platte tekst over het netwerk wordt verzonden.

SCRAM verbetert de beveiliging echter verder door Salt, Iteraties en robuustere hash-algoritmen zoals SHA-256 en SHA-512 te integreren. Deze toevoegingen verbeteren de beveiliging van wachtwoordopslag aanzienlijk, waardoor de risico's die gepaard gaan met offline aanvallen, replay-aanvallen en andere potentiële kwetsbaarheden effectief worden beperkt.

Bovendien bevat SCRAM een ingewikkelder challenge-response-proces, inclusief bewijs op de server dat naar de client wordt verzonden. De client kan dit bewijs vervolgens gebruiken om te verifiëren of de server over het juiste wachtwoord beschikt, waardoor wederzijdse authenticatie mogelijk wordt. Deze extra stap vermindert de kwetsbaarheid voor man-in-the-middle-aanvallen.

Het gebruik van hash-algoritmen zoals SHA256 in SCRAM introduceert echter extra rekenoverhead, die mogelijk van invloed kan zijn op de prestaties van apparaten met beperkte bronnen.

Kerberos

Kerberos maakt gebruik van een vertrouwde Kerberos-server van derden om authenticatiediensten te vergemakkelijken. De server geeft tokens uit aan geverifieerde gebruikers, waardoor ze toegang krijgen tot bronservers. Een opmerkelijk voordeel is de mogelijkheid voor gebruikers om met één enkele authenticatie toegang te krijgen tot meerdere systemen en diensten, waardoor het gemak van single sign-on (SSO) wordt bereikt.

Het token dat door de Kerberos-server wordt uitgegeven, heeft een beperkte levensduur en clients kunnen dit token slechts gedurende een bepaalde periode gebruiken om toegang te krijgen tot de dienst, wat beveiligingsproblemen als gevolg van tokenlekken kan voorkomen. Hoewel een kortere levensduur de veiligheid kan vergroten, gaat dit uiteraard gepaard met enig gemak. Gebruikers moeten hun afwegingen maken.

De kern van Kerberos ligt in het gebruik van een symmetrisch versleutelingsalgoritme. De server maakt gebruik van lokaal opgeslagen wachtwoord-hashes om de authenticatiegegevens te coderen, die vervolgens naar de client worden verzonden. De client hasht op zijn beurt zijn wachtwoord en gebruikt dit om de ontvangen authenticatiegegevens te decoderen. Dit proces biedt verschillende voordelen, waaronder de eliminatie van de noodzaak om wachtwoorden in platte tekst over het netwerk te verzenden en het mogelijk maken van wederzijdse verificatie van het juiste wachtwoord tussen de server en de client.

Bovendien kunnen de server en de client door middel van symmetrische encryptie veilig sessiesleutels delen, die kunnen worden gebruikt voor daaropvolgende gecodeerde communicatie. Daarom biedt Kerberos ook beveiligingsmaatregelen om daaropvolgende communicatie buiten authenticatie te beschermen.

Hoewel Kerberos een sterke beveiliging biedt, brengt het ook aanzienlijke complexiteit met zich mee. Het implementeren en configureren van Kerberos brengt uitdagingen met zich mee, en de afhankelijkheid van maximaal zes handshakes kan vereisten introduceren voor een hoge netwerklatentie en betrouwbaarheid. Als gevolg hiervan wordt Kerberos doorgaans gebruikt binnen de interne netwerkomgevingen van ondernemingen.

Hoe werkt verbeterde authenticatie in MQTT?

Laten we eens kijken hoe verbeterde authenticatie werkt MQTT gebruik de SCRAM als voorbeeld. Hoewel dit artikel niet ingaat op de specifieke principes van SCRAM, is het belangrijk op te merken dat SCRAM de volgende vier berichten nodig heeft om de authenticatie te voltooien:

  • klant-eerst-bericht
  • server-eerste-bericht
  • klant-laatste bericht
  • server-laatste bericht

Om SCRAM-authenticatie te initiëren, verzendt de client een CONNECT-pakket met het Authentication Method-attribuut ingesteld op SCRAM-SHA-256, waarmee de intentie wordt aangegeven om SCRAM-authenticatie te gebruiken. SHA-256 geeft aan welke hashfunctie moet worden gebruikt. Het kenmerk Authenticatiegegevens wordt gebruikt om de inhoud van het client-eerste bericht op te slaan. Het attribuut Authenticatiemethode bepaalt hoe de server de gegevens in het veld Authenticatiegegevens moet parseren en verwerken.

Als de server SCRAM-authenticatie niet ondersteunt, of als de inhoud van het client-first-bericht ongeldig blijkt te zijn, zal deze een CONNACK-pakket retourneren met daarin een redencode die de reden voor het mislukken van de authenticatie aangeeft, en vervolgens de netwerkverbinding verbreken.

Anders gaat de server verder met de volgende stap: retourneert een AUTH-pakket en stelt Redencode in op 0x18, wat aangeeft dat de authenticatie wordt voortgezet. De authenticatiemethode in het pakket zal hetzelfde zijn als het CONNECT-pakket, en het attribuut Authenticatiegegevens zal de inhoud van het server-eerste bericht bevatten.

Nadat is geverifieerd dat de inhoud van het server-eerste bericht correct is, retourneert de client ook een AUTH-pakket met redencode 0x18, en het Authentication Data-attribuut zal de inhoud van het client-laatste bericht bevatten.

Na te hebben geverifieerd dat de inhoud van het client-eindbericht correct is, heeft de server de verificatie van de identiteit van de client voltooid. Deze keer zal de server dus geen AUTH-pakket retourneren, maar een CONNACK-pakket met redencode 0 om succesvolle authenticatie aan te geven en het server-eindbericht door te geven via het Authentication Data-attribuut in het pakket.

Als de identiteit van de server met succes is geverifieerd, kan de client doorgaan met het abonneren op onderwerpen of het publiceren van berichten. Als de verificatie echter mislukt, verzendt de client een DISCONNECT-pakket om de verbinding te beëindigen.

Meer methoden voor identiteitsverificatie

Verbeterde authenticatie biedt gebruikers de mogelijkheid om meer methoden voor identiteitsverificatie te introduceren. U kunt authenticatiemethoden kiezen die geschikt zijn voor uw specifieke behoeften en de beveiliging van uw systeem verder verbeteren.

Tijdstempel:

Meer van IOT voor iedereen