Grundlæggende principper for IoT-sikkerhed - Del 2: Beskyttelse af hemmeligheder
Bidraget af DigiKeys nordamerikanske redaktører
2020-06-11
Redaktørens note: På trods af spredning af IoT-enheder forbliver sikring af disse enheder en løbende bekymring.Sikkerhedsudfordringer kan være en barriere for vedtagelse af tilsluttede enheder i IIOT (Industrial IoT) og mission kritiske applikationer, hvor virksomheds- og personlige data kan være kompromitteret i tilfælde af et vellykket hacker-angreb. Det kan være svært at sikre IoT-applikationer, da udviklere skal orkestrere flere sikkerhedsmekanismer, protokoller og politikker, som i kombination virker komplekse. I virkeligheden kan IoT-enheders sikkerhed bygges på nogle få relativt enkle principper, som understøttes af hardware-sikkerhedsudstyr. Ved at følge veletablerede sikkerhedspraksis kan disse bekymringer løses. Denne mulltidel serie giver praktisk vejledning til at hjælpe udviklere med at sikre, at bedste praksis følges fra starten. Del 1 diskuterer de kryptografiske algoritmer, der ligger til grundlag for sikre design. Her i del 2 diskuteres den rolle, som private nøgler, nøglehåndtering og sikker opbevaring spiller i sikre IoT-designs. Del 3 undersøger de mekanismer, der er indbygget i sikre processorer for at mindske andre typer trusler mod IoT-enheder. Del 4 identificerer og viser, hvordan man anvender sikkerhedsmekanismer i avancerede processorer for at hjælpe med at sikre den isolation, der er nødvendig for at afbøde angreb på IoT-enhedernes runtime-miljø. Del 5 beskriver, hvordan IoT-sikkerheden fortsætter fra IoT-enhederne gennem sikkerhedsforanstaltninger på højere niveau, der anvendes til at forbinde disse enheder med IoT-skyressourcer
Selv om hardware-baserede kryptografiske enheder kan afhjælpe sårbarheder ved tingenes internet (IoT), kan manglende tilstrækkelig beskyttelse af hemmelige nøgler og tilhørende data forringe sikkerheden på trods af brugen af den mest robuste kryptografiske enhed. Halvlederproducenterne beskytter nøgler og andre privilegerede data ved hjælp af en række mekanismer, der er indbygget i specialiserede sikkerheds-IC'er og processorer.
Denne artikel gennemgår den kritiske rolle, som nøgler spiller i kryptografi, og beskriver de forskellige nøglebeskyttelsesmekanismer, der er indbygget i tilgængelige enheder fra Maxim Integrated, NXP, STMicroelectronics og Microchip Technology.
De hemmelige nøgler i kryptografi
Som beskrevet i del 1 af denne serie er der en lang række hardwareunderstøttede kryptografiske algoritmer til rådighed til at oprette unikke meddelelseshashes eller signaturer, og der findes et endnu bredere antal krypteringskoder til at kryptere almindelig tekst til ciphertext og dekryptere ciphertext til almindelig tekst. Selv om disse algoritmer kan skærpe sikkerheden i alle applikationer, afhænger evnen til at beskytte disse applikationer grundlæggende af sikkerheden af de private nøgler og andre hemmelige data, som anvendes af kryptografiske algoritmer.
Inden for kryptografi betyder kompromitterede hemmeligheder kompromitteret sikkerhed i de sikkerhedspolitikker, protokoller og mekanismer, der er bygget på disse hemmeligheder. Allerede i det 19. århundrede bemærkede kryptografen Auguste Kerckhoffs, at et kryptografisk system forbliver sikkert, så længe nøglen forbliver sikker - et aksiom, der nu er kendt som Kerckhoffs princip. Lidt mere kortfattet kan man sige, at "fjenden kender systemet", ifølge Shannon's Maxim, opkaldt efter informationsteoriens fader Claude Shannon.
Udviklerne bygger faktisk sikre systemer oven på velkendte algoritmer, der er så nøje specificeret, at halvlederproducenterne trygt kan bruge dem i hardwareaccelererede sikkerhedsanordninger. Det, der i sidste ende beskytter disse systemer, er imidlertid de hemmeligheder, der anvendes af disse algoritmer.
Udfordringen med at beskytte hemmeligheder
Selv om beskyttelse af kryptografiske hemmeligheder i princippet er ligetil, kan det være en stor udfordring i praksis. Gennemførelsen af en sikkerhedspolitik på højere niveau vil uundgåeligt trække på flere sikkerhedsprotokoller, der anvender forskellige algoritmer. Disse protokoller og algoritmer kræver til gengæld en kombination af statiske nøgler og flygtige nøgler, der oprettes af selve protokollen. En TLS-session (Transport Layer Security) bruger f.eks. en statisk nøgle til autentificering og en delt, kortvarig sessionsnøgle til sikker udveksling af meddelelser.
Faktisk identificerer det amerikanske National Institute of Standards and Technology (NIST) 19 forskellige typer nøgler plus yderligere 11 typer relaterede oplysninger såsom domæneparametre for elliptiske kurver og mellemresultater, som skal beskyttes. NIST anbefaler endvidere, at oplysninger i forbindelse med nøgleanvendelse bør beskyttes i bestemte perioder for at opnå en mere robust sikkerhed, som anført i tabel 1, der kun viser de første få nøgletyper, der er anført i den komplette NIST-anbefaling[1].
Tabel 1: Dette udvalg fra den komplette NIST-anbefaling indeholder en liste over nogle få af de forskellige nøgletyper og tilhørende oplysninger, der bør beskyttes i den angivne periode. (Kilde til tabellen: DigiKey, fra NIST) |
Behovet for at beskytte nøgler og tilhørende data betyder, at udviklere skal være omhyggelige med at bruge hemmeligheder i en IoT-applikation. For IoT-enheder kan det være en større udfordring at beskytte disse data i hver af deres forskellige tilstande: i hvile, under overførsel og i brug. Sikring af data i hvile kræver sikre opbevaringsmekanismer; sikring af data i transit kræver metoder til at beskytte hemmeligheder, mens de overføres på tværs af et netværk eller en systembus; sikring af data i brug kræver mekanismer til at forhindre eksponering, mens de bruges til at udføre kryptografiske algoritmer. Heldigvis kan udviklere finde et bredt udvalg af sikkerhedsanordninger, der kan beskytte hemmelige data ved hjælp af en række forskellige mekanismer.
Hvordan man sikrer hemmeligheder i halvledere med kryptografi
Avancerede halvlederløsninger med kryptografi giver typisk en eller anden form for sikker ikke-flygtig hukommelse til lagring af nøgler og andre hemmelige data, men den overordnede tilgang er meget forskellig i de to hovedklasser af sikre enheder: specialiserede sikkerheds-IC'er og processorer med kryptografi.
Sikkerheds-IC'er er designet til at fungere som selvstændige undersystemer, der aflaster algoritmeudførelsen fra en værtsprocessor, som typisk kommunikerer via en seriel bus. F.eks. har Maxim Integreds DS28C36 sikker autentificator I2C-porte samt to GPIO'er (general purpose I/O'er), der kan bruges til at levere et signal om succes eller fiasko for autentificering til værtsprocessoren (figur 1).
Figur 1: Sikkerhedsenheder som f.eks. Maxim Integrated DS28C36 Secure Authenticator giver komplette delsystemer, der forenkler integrationen og samtidig forbedrer beskyttelsen af interne nøgler og operationer. (Billedkilde: Maxim Integrated)
Softwareintegration er typisk lige så ligetil. NXP's Plug & Trust Middleware-bibliotek abstraherer f.eks. hardwarefunktionaliteten i deres SE050- og A71CH-enheder med sikre elementer til nogle få funktionskald (figur 2).
Figur 2: Softwarebiblioteker som NXP's Plug & Trust Middleware gør det muligt for udviklere at bruge nogle få intuitive funktionskald til at oprette nøgler (til venstre), få adgang til nøgler (til højre) og på anden måde drage fuld fordel af den underliggende funktionalitet i NXP's SE050- og A71CH-enheder med sikre elementer. (Billedkilde: NXP)
Oprettelse af en ny nøgle (figur 2 igen, til venstre) returnerer et keyId. For at bruge nøglen senere henviser udviklere til nøglen ved hjælp af dens keyId (Figur 3, til højre) i stedet for at udstille den faktiske nøgleværdi på tværs af systembussen. Ved hjælp af NXP's Plug & Trust Middleware kan udviklere hurtigt implementere sikre applikationer ved hjælp af et Arduino-kompatibelt NXP Kinetis Freedom K64F eval-kort med et NXP OM-SE050ARD-udvidelseskort til SE050-udvikling eller et NXP OM3710/A71CHARD-kort til AC71CH-udvikling.
Dedikerede sikkerheds-IC'er som f.eks. Maxim Integrated's DS28C36, NXP's SE050, NXP's AC71CHTK2/TOBC2VJ og andre enheder i denne klasse giver flere klare fordele. Ud over at tilbyde en relativt enkel metode til at tilføje sikker funktionalitet til et design, begrænser integrationen af funktionalitet i et dedikeret sikkerheds-IC eksponeringen af hemmelige data og operationer. F.eks. integrerer Maxim Integrated DS28C36 hardware-kryptografiacceleratorer, en ægte tilfældig talgenerator og 8 kilobits (Kb) sikret EEPROM sammen med andre funktionsblokke. Når DS28C36 autentificerer en ECDSA-signatur (Elliptic Curve Digital Signature Algorithm), sikrer den beskyttelse af data i hvile, under overførsel og i brug, fordi den private nøgle, de tilknyttede data (se figur 1) og de operationer, der bruger disse hemmeligheder, forbliver begrænset inden for enheden (figur 3).
Figur 3: Den integrerede funktionalitet i sikkerhedsenheder som f.eks. Maxim Integrated DS28C36 betyder, at private nøgler og tilhørende data forbliver begrænset inden for chippen. (Billedkilde: Maxim Integrated)
Processorbaseret beskyttelse af hemmelige nøgler
Ikke alle IoT-design kan rumme en dedikeret sikkerheds-IC. Kravene kan diktere brugen af andre kryptografiske metoder eller designbegrænsninger i forbindelse med pladsbehov, materialebeskrivelse, omkostninger eller kundespecifikationer. Til disse konstruktioner leverer sikkerhedsaktiverede processorer som STMicroelectronics' STM32WB55 og Microchip Technologys ATSAML11 en kombination af hardwareaccelerationsmotorer til kryptografiske algoritmer og mekanismer til beskyttelse af hemmelige data. Selv om denne artikel fokuserer på nøglebeskyttelse, tilbyder disse og andre processorer en række yderligere avancerede sikkerhedsfunktioner, som vil blive behandlet i del 3 af denne serie.
I STMicroelectronics' trådløse dual-core STM32WB55-enhed fungerer en Arm® Cortex®-M4 CPU (CPU1) som værtsprocessor og kommunikerer med radiosubsystemets dedikerede Arm Cortex-M0+-mikrocontroller (CPU2) via en dedikeret inter-processor-kommunikationscontroller (IPCC) og semaphor-mekanisme (HSEM). I CPU2-undersystemet indeholder sikker hukommelse et CKS-område (Customer Key Storage) til nøgler, der anvendes af AES-hardwareacceleratoren (Advanced Encryption Standard) (Figur 4).
Figur 4: STMicroelectronics STM32WB55-processoren med to kerner giver kun radiosubsystemets kerne (CPU2) direkte adgang til nøgler, men tillader, at betroede programmer, der kører på værtskernen (CPU1), kan bruge dem indirekte. (Billedkilde: STMicroelectronics)
STM32WB55-arkitekturen beskytter CKS-nøglerne mod adgang via debug-porten eller adgang fra ikke-sikre rutiner, der kører værts-CPU1-processoren. Samtidig kan betroede programmer, der kører på værts-CPU'en1 , bruge specifikke CKS-nøgler i AES-kryptografi ved at henvise til dem ved hjælp af et nøgleindeks. AES-hardwareblokken modtager den ønskede nøgle fra CKS-området via en intern bus, hvilket sikrer, at nøgletransporten forbliver beskyttet inden for CPU2-undersystemet.
Microchip Technology benytter sig af sikkerhedsfunktioner, der er indbygget i Arm TrustZone-teknologien, til sine Arm Cortex-M23-baserede ATSAML11-processorer. TrustZone anvender hardwarebaserede mekanismer til at håndhæve isolering mellem ressourcer, der er tillid til, og ressourcer, der ikke er tillid til.
I sine ATSAML11-processorer bruger Microchip TrustZone Implementation Defined Attribution Unit (IDAU) til at håndhæve sikkerhedspolitikker, herunder differentieret adgangskontrol til underområder af hukommelsen for sikker og ikke-sikker programkode. Et RAM-område (RAM) med 256 byte sikkerhedshukommelse med tilfældig adgang, kaldet TrustRAM, giver yderligere sikker opbevaring af flygtige nøgler.
Sikker tilrådighedsstillelse
Dedikerede sikkerheds-IC'er og processorer giver udviklere de mekanismer, de har brug for til at beskytte hemmelige nøgler og tilhørende data i en IoT-enhed. Sikkerhedssårbarheder opstår imidlertid ofte på grund af fejl i den proces, der bruges til at indlæse eller forsyne en sikkerheds-IC eller -processor med hemmelige nøgler eller certifikater, hvilket gør det muligt at stjæle de hemmelige nøgler. Cyberkriminelle sælger hurtigt sådanne stjålne nøgler og kompromitterede certifikater på sorte markeder, hvilket giver hackere mulighed for at trænge ind i sikre netværk med tilsyneladende gyldige legitimationsoplysninger.
Del 4 i denne serie omhandler sikkerhedsudstyr og udviklingssæt, som producenterne har forsynet med nøgler og certifikater til specifikke IoT-cloudtjenester, herunder Amazon Web Services, Microsoft Azure, Google Cloud og andre. Til produktionsimplementeringer vil udviklere dog typisk foretrække eller have brug for at bruge deres egne brugerdefinerede nøgler og certifikater.
For at understøtte brugerdefineret provisionering tilbyder de fleste halvlederproducenter provisionering via deres egne faciliteter eller i samarbejde med en provisioneringspartner. Microchip forsyner f.eks. enheder med brugerdefinerede hemmeligheder, der er oprettet ved hjælp af et værktøj til sikker indpakning, som indgår i provisioneringskits, der tilbydes af tredjepartspartnere, herunder Trustonic og IAR Systems' Secure Thingz (figur 5).
Figur 5: OEM-udviklere (Original Equipment Manufacturer) kan bruge et sikkert indpakningsværktøj til at beskytte hemmeligheder, der senere anvendes i en fremstillingspartners sikre programmeringsfacilitet til at levere sikre mikrocontrollere som Microchip SAML11. (Billedkilde: Microchip Technology)
Når OEM-udvikleren er klar til produktion, bruger OEM-udvikleren det sikre indpakningsværktøj til at levere nøgler og certifikater til Microchip-fabrikken i en krypteret form, som kun kan dekrypteres af et hardware-sikkerhedsmodul, der er placeret i partnerens sikre programmeringsfacilitet. Denne fremgangsmåde opfylder behovet for udveksling af produktionsoplysninger over usikre netværk, samtidig med at den i sidste ende giver produktionsklare enheder med sikkert tilvejebragte nøgler og firmware.
Selvforsyning med PUF-teknologi
Den stigende brug af PUF-teknologi (Physical Unclonable Function) i sikkerhedsaktiverede processorer og dedikerede IC'er giver måske en endnu mere sikker tilgang til tilrådighedsstillelse. I stedet for at indlæse en hemmelig nøgle eksplicit i en enhed gør PUF-teknologien det muligt for sikkerhedsudstyr at bruge en hemmelig nøgle, der er afledt af hver enkelt enheds unikke egenskaber.
PUF-teknologien er baseret på fremstillingsvariationer og andre fysiske processer, der resulterer i en værdi, som er unik for selve anordningen og kan gentages under normal systemdrift. Som beskrevet nedenfor kan den resulterende værdi tjene som en unik privat nøgle til kryptografi, hvilket i det væsentlige giver hver PUF-aktiveret enhed en indbygget hemmelig nøgle.
Ud over at muliggøre selvforsyning tilføjer PUF-teknologien endnu et lag sikkerhed. Forsøg på at trænge ind i enheden for at afsløre den enhedsunikke værdi ændrer de karakteristika, der anvendes til at generere den, og dermed ændres den genererede værdi.
Selv om der findes forskellige PUF-mekanismer, er den grundlæggende fremgangsmåde stort set den samme på tværs af PUF-aktiverede enheder. F.eks. er Maxim Integreds ChipDNA PUF-funktion, der anvendes i den sikre MAX32520-mikrocontroller samt i visse sikkerheds-IC'er, baseret på et array af analoge PUF-elementer og styrelogik til at generere en nøgle (figur 6).
Figur 6: I Maxim Integreds ChipDNA PUF-teknologi anvendes tilfældige tilstande i et array af PUF-elementer af on-chip-kontrollogikken til at generere en konsistent enhedsspecifik nøgle. (Billedkilde: Maxim Integrated)
I Maxim Integreds DS28C39 ECDSA-sikker autenticator bruges ChipDNA PUF-udgangen som den private nøgle til ECDSA-operationer og som en privat nøgle til at sikre tilknyttede data (figur 7).
Figur 7: Maxim Integreds DS28C39 ECDSA-sikker autenticator bruger en privat nøgle, der genereres af det indbyggede ChipDNA PUF-kredsløb. (Billedkilde: Maxim Integrated)
Til sin PUF-aktiverede LPC55S-processorfamilie anvender NXP PUF-teknologi baseret på det output, der genereres af den indledende tilfældige tilstand i et SRAM-matrix (figur 8).
Figur 8: I sin PUF-implementering bruger NXP's LPC55S-processorfamilie startdataene fra SRAM til at generere et digitalt fingeraftryk og en tilhørende aktiveringskode, som senere bruges til at gendanne det digitale fingeraftryk og kryptere eller generere private nøgler. (Billedkilde: NXP)
I disse enheder begynder brugen af PUF med en tilmeldingsoperation, der genererer et unikt digitalt fingeraftryk og en tilhørende aktiveret kode, som forbliver gyldige, indtil en ny tilmeldingsoperation udføres. Aktiveringskoden, der er gemt i enhedens beskyttede flash, gør det muligt for enheden at rekonstruere det digitale fingeraftryk fra SRAM-startdataene, der konsekvent genereres ved opstart.
Når det digitale fingeraftryk er på plads, kan udviklere kryptere deres egne nøgler eller generere nøgler. I denne proces returnerer enheden en nøglekode. Ved at angive aktiveringskoden, nøglekoden og indekset kan udviklere få enheden til at dekryptere den ønskede private nøgle fra den relevante nøgleplads på chippen og levere den til et kryptografisoftwarebibliotek. Nøgleslot 0 giver en særlig metode til dekryptering af nøglen, der leverer nøglen via en intern bus direkte til processoren AES-hardwarekryptografimotor (Figur 9).
LPC55S's digitale PUF-signatur tjener i sin rolle i forbindelse med kryptering og dekryptering af nøgler som en nøglekrypteringsnøgle (KEK), der traditionelt bruges til at forbedre beskyttelsen af hemmelige data i hvile eller under transit. Brugen af en KEK er med til at mindske behovet for større sikker opbevaring og de tilhørende interne mekanismer, der er nødvendige for at beskytte hemmelige data.
Figur 9: NXP's LPC55S-processorfamilie bruger sit digitale fingeraftryk som en KEK til at dekryptere nøgler, der er beskyttet i nøglelageret og refereres programmatisk ved hjælp af den tilknyttede aktiveringskode, nøglekode og indeks. (Billedkilde: NXP)
Udviklere kan bruge en KEK til at kryptere brugerdefinerede nøgler og tilhørende data og gemme de krypterede resultater i en ikke-sikker, ikke-flygtig hukommelse. Denne fremgangsmåde gør det muligt for udviklere at beskytte de forskellige typer nøgler og tilknyttede data, selv i enheder med begrænset sikker lagring. Med adgangen til PUF-genererede KEK'er kan udviklere implementere sikre IoT-enheder, der kan beskytte applikationer gennem hele udviklingscyklussen.
Konklusion
Tilgængeligheden af dedikerede sikkerheds-IC'er og sikre processorer med kryptografibacceleratorer har dramatisk forbedret udviklernes muligheder for at bygge sikre systemer. Men sikre systemer afhænger i høj grad af sikkerheden for private nøgler og andre data, der er forbundet med kryptografimekanismer og protokoller. Sikkerhedsanordninger, der anvender en række forskellige mekanismer, beskytter hemmelige data i hvile, under overførsel og under brug. Ved hjælp af disse enheder kan udviklere bygge mere sikre IoT-løsninger uden at gå på kompromis med andre designkrav.
Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.




