TPM-attestering
IoT Hub Device Provisioning Service är en hjälptjänst för IoT Hub som du använder för att konfigurera zero-touch-enhetsetablering till en angiven IoT-hubb. Med Device Provisioning Service kan du etablera miljontals enheter på ett säkert sätt.
Den här artikeln beskriver identitetsattesteringsprocessen när du använder en TPM (Trusted Platform Module). En TPM är en typ av maskinvarusäkerhetsmodul (HSM). Den här artikeln förutsätter att du använder en diskret, inbyggd programvara eller integrerad TPM. Programvaruemulerade TPM:er är väl lämpade för prototyper eller testning, men de ger inte samma säkerhetsnivå som diskreta, inbyggda programvara eller integrerade TPM:er. Vi rekommenderar inte att du använder programvaru-TPM:er i produktion. Mer information om typer av TPM finns i En kort introduktion till TPM.
Den här artikeln är endast relevant för enheter som använder TPM 2.0 med HMAC-nyckelstöd och deras bekräftelsenycklar. Det är inte för enheter som använder X.509-certifikat för autentisering. TPM är en branschomfattande ISO-standard från trusted computing-gruppen, och du kan läsa mer om TPM i den fullständiga TPM 2.0-specifikationen eller ISO/IEC 11889-specifikationen. Den här artikeln förutsätter också att du är bekant med offentliga och privata nyckelpar och hur de används för kryptering.
Enhets-SDK:er för Device Provisioning Service hanterar allt som beskrivs i den här artikeln åt dig. Du behöver inte implementera något ytterligare om du använder SDK:erna på dina enheter. Den här artikeln hjälper dig att förstå konceptuellt vad som händer med ditt TPM-säkerhetschip när enheten etablerar sig och varför den är så säker.
Översikt
TPM:er använder något som kallas bekräftelsenyckeln (EK) som säker rot för förtroende. EK är unikt för TPM och om du ändrar den ändras enheten i princip till en ny.
Det finns en annan typ av nyckel som TPM:er har, kallad lagringsrotnyckeln (SRK). En SRK kan genereras av TPM:s ägare när den har ägarskapet för TPM. Ägarskap för TPM är det TPM-specifika sättet att säga "någon anger ett lösenord för HSM". Om en TPM-enhet säljs till en ny ägare kan den nya ägaren ta ägarskapet för TPM för att generera en ny SRK. Den nya SRK-genereringen säkerställer att den tidigare ägaren inte kan använda TPM. Eftersom SRK är unikt för TPM-ägaren kan SRK:n användas för att försegla data i själva TPM:n för den ägaren. SRK tillhandahåller en sandbox-miljö där ägaren kan lagra sina nycklar och ger åtkomstbegäran om enheten eller TPM säljs. Det är som att flytta in i ett nytt hus: att ta ägarskap är att byta lås på dörrarna och förstöra alla möbler som lämnats av de tidigare ägarna (SRK), men du kan inte ändra adressen till huset (EK).
När en enhet har konfigurerats och är redo att användas har den både en EK och en SRK tillgänglig för användning.
En anteckning om ägarskap för TPM: Ägarskap för en TPM beror på många saker, inklusive TPM-tillverkare, den uppsättning TPM-verktyg som används och enhetens operativsystem. Följ anvisningarna som är relevanta för ditt system för att ta över ägarskapet.
Device Provisioning Service använder den offentliga delen av EK (EK_pub) för att identifiera och registrera enheter. Enhetsleverantören kan läsa EK_pub under tillverkning eller slutlig testning och ladda upp EK_pub till etableringstjänsten så att enheten identifieras när den ansluter till etableringen. Device Provisioning Service kontrollerar inte SRK eller ägare, så "rensa" TPM raderar kunddata, men EK (och andra leverantörsdata) bevaras och enheten identifieras fortfarande av Device Provisioning Service när den ansluter till etableringen.
Detaljerad attesteringsprocess
När en enhet med en TPM först ansluter till enhetsetableringstjänsten kontrollerar tjänsten först den angivna EK_pub mot EK_pub som lagras i registreringslistan. Om EK_pubs inte matchar tillåts inte enheten att etableras. Om EK_pubs matchar kräver tjänsten att enheten bevisar ägarskapet för den privata delen av EK via en nonce-utmaning, vilket är en säker utmaning som används för att bevisa identitet. Enhetsetableringstjänsten genererar en nonce och krypterar den sedan med SRK och sedan EK_pub, som båda tillhandahålls av enheten under det första registreringsanropet. TPM håller alltid den privata delen av EK säker. Detta förhindrar förfalskning och säkerställer att SAS-token etableras på ett säkert sätt till auktoriserade enheter.
Nu ska vi gå igenom attesteringsprocessen i detalj.
Enheten begär en IoT Hub tilldelning
Först ansluter enheten till enhetsetableringstjänsten och begäranden att etablera. På så sätt ger enheten tjänsten sitt registrerings-ID, ett ID-omfång och EK_pub och SRK_pub från TPM. Tjänsten skickar tillbaka den krypterade noncen till enheten och ber enheten att dekryptera nonce och använda den för att signera en SAS-token för att ansluta igen och slutföra etableringen.
Nonce-utmaning
Enheten tar nonce och använder de privata delarna av EK och SRK för att dekryptera nonce till TPM; ordningen av noncekryptering delegerar förtroende från EKen, som är oföränderlig, till SRKEN, som kan ändra, om en ny ägare tar äganderätten av TPMEN.
Verifiera nonce och ta emot autentiseringsuppgifter
Enheten kan sedan signera en SAS-token med hjälp av den dekrypterade nonce och återupprätta en anslutning till Device Provisioning Service med hjälp av den signerade SAS-token. När Nonce-utmaningen har slutförts tillåter tjänsten att enheten etableras.
Nästa steg
Nu ansluter enheten till IoT Hub och du är säker på att enheternas nycklar lagras på ett säkert sätt. Nu när du vet hur Enhetsetableringstjänsten på ett säkert sätt verifierar en enhets identitet med hjälp av TPM kan du läsa följande artiklar om du vill veta mer: