Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial Internet of Things >> Internet of Things-technologie

IoT-beveiliging – cryptografie

Noot van de redactie:het beveiligen van het internet der dingen is niet alleen van cruciaal belang voor de integriteit van gegevensstromen en software binnen elke IoT-toepassing, maar ook voor de integriteit van de bedrijfsbronnen die aan die toepassingen zijn gekoppeld. IoT-beveiliging is een complex probleem, dat een systematische aanpak vereist voor het begrijpen van mogelijke bedreigingen en bijbehorende mitigatiemethoden.

Aangepast van Internet of Things voor architecten, door Perry Lea.


Hoofdstuk 12. IoT-beveiliging
Door Perry Lea

Cryptografie

Versleuteling en geheimhouding zijn absolute vereisten voor IoT-implementaties. Ze worden gebruikt voor het beveiligen van communicatie, het beschermen van firmware en authenticatie. Wat betreft encryptie zijn er over het algemeen drie vormen om te overwegen:

  • Symmetrische sleutelcodering :Coderings- en decoderingssleutels zijn identiek. RC5, DES, 3DES en AES zijn allemaal vormen van symmetrische sleutelcodering.

  • Encryptie met openbare sleutel :De coderingssleutel wordt openbaar gepubliceerd zodat iedereen gegevens kan gebruiken en coderen. Alleen de ontvangende partij heeft een privésleutel die wordt gebruikt om het bericht te decoderen. Dit wordt ook wel asymmetrische encryptie genoemd. Asymmetrische cryptografie beheert de geheimhouding van gegevens, authenticeert deelnemers en dwingt onweerlegbaarheid af. Bekende internetversleuteling en berichtprotocollen zoals Elliptic Curve, PGP, RSA, TLS en S/MIME worden beschouwd als openbare sleutels.

  • Cryptografische hash :wijst gegevens van een willekeurige grootte toe aan een bitreeks (de samenvatting genoemd). Deze hashfunctie is ontworpen om "one way" te zijn. In wezen is de enige manier om de output-hash opnieuw te maken, het forceren van elke mogelijke input-combinatie (deze kan niet omgekeerd worden uitgevoerd). MD5, SHA1, SHA2 en SHA3 zijn allemaal vormen van eenrichtingshashes. Deze worden meestal gebruikt om digitale handtekeningen te coderen, zoals ondertekende firmware-afbeeldingen, berichtauthenticatiecode s (MAC ), of authenticatie. Bij het versleutelen van een kort bericht zoals een wachtwoord, kan de invoer te klein zijn om effectief een eerlijke hash te creëren; in dat geval een zout of niet-private string wordt aan het wachtwoord toegevoegd om de entropie te vergroten. Een salt is een vorm van sleutelafleidingsfunctie (KDF ):

klik voor grotere afbeelding

Elementen van cryptografie. Dit zijn de symmetrische, asymmetrische en hashfuncties. Let op het sleutelgebruik in symmetrische en asymmetrische cryptografie. Symmetrisch heeft de vereiste om identieke sleutels te gebruiken om gegevens te coderen en te decoderen. Hoewel ze sneller zijn dan asymmetrische codering, moeten de sleutels worden beveiligd.

Symmetrische cryptografie

Bij versleuteling verwijst platte tekst naar de niet-versleutelde invoer en de uitvoer wordt cijfertekst genoemd, omdat deze versleuteld is. De standaard voor encryptie is de Advanced Encryption Standard (AES ) die oudere DES-algoritmen uit de jaren 70 verving. AES maakt deel uit van de FIPS-specificatie en de ISO/IEC 18033-3-standaard die wereldwijd wordt gebruikt. AES-algoritmen gebruiken vaste blokken van 128, 192 of 256 bits. Berichten die groter zijn dan de bitbreedte worden opgesplitst in meerdere blokken. AES heeft vier basisfasen van werking tijdens de codering. De pseudo-code voor een generieke AES-codering wordt hier weergegeven:

   // Psuedo-code voor een AES-128-codering
   // in:128 bits (platte tekst)
   // out:128 bits (cijfertekst)
   // w :44 woorden, elk 32 bits (uitgevouwen sleutel)
   state =in
   w=KeyExpansion(key) //Sleuteluitbreidingsfase (versleutelt de sleutel zelf effectief)
   AddRoundKey(state, w[0 , Nb-1]) //Initiële ronde
voor ronde =1 stap 1 tot Nr–1 //128 bit=10 ronden, 192 bit =12 ronden, 256 bit =14 ronden
    SubBytes(staat )   //Zorg voor niet-lineariteit in het cijfer
    ShiftRows(state)  //Voorkomt dat kolommen onafhankelijk worden versleuteld, wat
   het algoritme kan verzwakken
    MixColumns(state) // Transformeert elke kolom en voegt diffusie toe naar de
   cipher
    AddRoundKey(state, w[round*Nb, (round+1)*Nb-1]) //Genereert een subsleutel en
   combineert deze met state.
   einde voor
   SubBytes(staat)    //Laatste ronde en opschoning.
   ShiftRows(staat)
   AddRoundKey(staat, w[Nr*Nb, (Nr+1)*Nb-1] )
uit =staat

Scroll of sleep de hoek van het vak naar breid indien nodig uit.

AES-sleutellengtes kunnen 128, 192 of 256 bits zijn. Over het algemeen geldt:hoe groter de sleutellengte, hoe beter de bescherming. De grootte van de sleutel is evenredig met het aantal CPU-cycli dat nodig is om een ​​blok te coderen of te decoderen:128 bit heeft 10 cycli nodig, 192 bit heeft 12 cycli nodig en 256 bit heeft 14 cycli nodig.

Blokcijfers vertegenwoordigen coderingsalgoritmen die zijn gebaseerd op een symmetrische sleutel en werken op een enkel gegevensblok. Moderne versleuteling is gebaseerd op het werk van Claude Shannon over productversleuteling in 1949. Een versleutelingsmodus is een algoritme dat een blokversleuteling gebruikt en beschrijft hoe een versleuteling herhaaldelijk kan worden toegepast om grote hoeveelheden gegevens, bestaande uit vele blokken, te transformeren. De meeste moderne cijfers vereisen ook een Initialisatievector (IV ) om duidelijke cijferteksten te garanderen, zelfs als dezelfde leesbare tekst herhaaldelijk wordt ingevoerd. Er zijn verschillende werkingsmodi, zoals:

  • Elektronisch codeboek (ECB) :Dit is de meest elementaire vorm van AES-codering, maar het wordt gebruikt met andere modi om meer geavanceerde beveiliging te bouwen. De gegevens zijn verdeeld in blokken en elk wordt afzonderlijk versleuteld. Identieke blokken zullen identieke cijfers produceren, wat deze modus relatief zwak maakt.

  • Cipher Block Chaining (CBC) :berichten zonder opmaak Xored met de vorige cijfertekst voordat ze worden versleuteld.

  • Cipher Feedback Chaining (CFB) :Vergelijkbaar met CBC, maar vormt een stroom van cijfers (de output van de vorige code wordt ingevoerd in de volgende). CFB is afhankelijk van het vorige blokcijfer om input te leveren voor het huidige cijfer dat wordt gegenereerd. Vanwege de afhankelijkheid van eerdere cijfers, kan CFB niet parallel worden verwerkt. Streamingcijfers zorgen ervoor dat een blok tijdens het transport verloren gaat, maar volgende blokken kunnen herstellen van de schade.

  • Output Feedback Chaining (OFB) :Net als bij CFB is dit een streamingcodering, maar het zorgt ervoor dat foutcorrigerende codes kunnen worden toegepast vóór codering.

  • Teller (CTR) :Verandert een blokcijfer in een stroomcijfer maar gebruikt een teller. De oplopende teller voedt elk blokcijfer parallel, waardoor een snelle uitvoering mogelijk is. De nonce en teller zijn aan elkaar gekoppeld om het blokcijfer te voeden.

  • CBC met berichtverificatiecode (CBC-MAC) :Een MAC (ook bekend als tag of MIC) wordt gebruikt om een ​​bericht te authenticeren en te bevestigen dat het bericht afkomstig is van de opgegeven afzender. De MAC of MIC wordt dan toegevoegd aan het bericht voor verificatie door de ontvanger.

Deze modi werden voor het eerst gebouwd in de late jaren 1970 en vroege jaren 1980 en werden bepleit door het National Institute of Standards and Technology in FIPS 81 als DES-modi. Deze modi bieden codering voor de vertrouwelijkheid van informatie, maar bieden geen bescherming tegen wijziging of manipulatie. Om dat te doen, is een digitale handtekening nodig en heeft de beveiligingsgemeenschap CBC-MAC ontwikkeld voor authenticatie. Het combineren van CBC-MAC met een van de legacy-modi was moeilijk totdat algoritmen zoals AES-CCM werden ontwikkeld, die zowel authenticatie als geheimhouding bieden. CCM staat voor Counter with CBC-MAC Mode.

CCM is een belangrijke coderingsmodus die wordt gebruikt om gegevens te ondertekenen en te coderen en wordt gebruikt in een overvloed aan protocollen die in dit boek worden behandeld, waaronder Zigbee, Bluetooth Low Energy, TLS 1.2 (na sleuteluitwisseling), IPSEC en 802.11 Wi-Fi WPA2.

AES-CCM maakt gebruik van dubbele cijfers:CBC en CTR. AES-CTR of counter-modus wordt gebruikt voor de algemene decodering van de binnenstromende cijfertekststroom. De inkomende stroom bevat een versleutelde authenticatietag. AES-CTR zal zowel de tag als de payload-gegevens ontsleutelen. Uit deze fase van het algoritme wordt een 'verwachte tag' gevormd. De AES-CBC-fase van de algoritme-tags als invoer de gedecodeerde blokken van de AES-CTR-uitvoer en de originele header van het frame. De gegevens zijn versleuteld; de enige relevante gegevens die nodig zijn voor authenticatie zijn echter de berekende tag. Als de door AES-CBC berekende tag afwijkt van de door AES-CTR verwachte tag, bestaat de mogelijkheid dat er tijdens het transport met de gegevens is geknoeid.

De onderstaande afbeelding illustreert een inkomende versleutelde gegevensstroom die zowel is geverifieerd met AES-CBC als ontsleuteld met AES-CTR. Dit zorgt voor zowel de geheimhouding als de authenticiteit van de oorsprong van een bericht:

klik voor grotere afbeelding

AES-CCM-modus.

Een overweging voor IoT-implementaties in een volledig verbonden mesh is het aantal benodigde sleutels. Voor n knooppunten in een mesh die bidirectionele communicatie wensen, zijn er n(n-1)/2 toetsen of O(n .) 2 ) .


Internet of Things-technologie

  1. De weg naar industriële IoT-beveiliging
  2. Beveiliging blijft het belangrijkste IoT-probleem
  3. De IoT-bedreigingsvector beveiligen
  4. IoT-beveiliging – wie is verantwoordelijk?
  5. Alles gaat IoT
  6. IoT-beveiliging – een belemmering voor implementatie?
  7. IoT beveiligen door bedrog
  8. Automatisering en IoT:een match made in heaven voor logistiek en beveiliging van de gezondheidszorg
  9. Beveiliging versterkt het ware potentieel van IoT
  10. Een jaaroverzicht:12 IoT-beveiligingsoverwegingen
  11. Machinevisie is de sleutel tot Industrie 4.0 en IoT