AWS erbjuder många tjänster, inklusive databas, lagring, nätverk och mycket mer. AWS Key Management Service (KMS) är en av de mest populära tjänsterna som erbjuds av AWS. Det är en fördelaktig tjänst som hjälper till att hantera känsliga data och kryptografiska nycklar.
Vad är AWS Key Management Service (KMS)?
AWS KMS är en tjänst som kan integreras med olika andra AWS-tjänster. Den kan användas för att skapa, lagra och kontrollera kryptografiska nycklar för att kryptera data i din applikation. Med hjälp av AWS KMS-tjänsten kan en användare kontrollera åtkomst till krypterad data. AWS KMS ger nästan 100 procent av kryptografiska nycklars hållbarhet.
Nycklar lagras i flera tillgänglighetszoner (AZ) som säkerställer hög tillgänglighet för nycklar. AWS KMS är integrerat med CloudTrail, vilket gör det möjligt för användare att granska syftet med vilket nyckeln används, när den användes och av vem nyckeln användes.
Några viktiga punkter om AWS KMS
- Nycklarna som genereras i en region kan inte skickas utanför den regionen.
- KMS använder en AWS Hardware Security Module (HSM), som är FIPS 140-2 kompatibel, för att förvara nycklar.
- AWS KMS tillåter kontroll av åtkomst till huvudnycklar.
- Användare kan kryptera data som lagras i Amazon EBS, Amazon S3 och Amazon Redshift eftersom AWS KMS är integrerat med dessa tjänster.
Hur fungerar AWS KMS?
För att lära oss hur AWS KMS fungerar måste vi först lära oss de termer och koncept som används i AWS KMS.
Det finns två typer av nycklar i AWS KMS:
- Kundens huvudnycklar
- Datanycklar
Kundens huvudnycklar (CMK)
En CMK är en logisk representation av huvudnyckeln. CMK:n innehåller metadata som nyckel-ID, skapandedatum, nyckelstatus och beskrivning av nyckeln och det nyckelmaterial som används för kryptering och dekryptering.
Som standard skapas nyckelmaterial av AWS KMS. Ingen kan ändra, hantera, visa eller extrahera nyckelmaterialet. Nyckelmaterial kan inte heller tas bort. Om en användare vill ta bort nyckelmaterial måste användaren ta bort CMK:n. Användare kan importera sitt nyckelmaterial till en CMK eller skapa nyckelmaterial för CMK:er i ett AWS CloudHSM-kluster.
AWS CMK tillhandahåller både symmetriska och asymmetriska CMK:er. Symmetriska CMK:er använder en 256-bitars nyckel för kryptering och dekryptering. Asymmetriska CMK:er använder däremot RSA Nyckelpar för kryptering och dekryptering eller signering och verifiering. En asymmetriskt skapad nyckel, kallad ECC-nyckel, kan endast användas för signering och verifiering. CMK:er skapas i AWS KMS. CMK:er kan hanteras av AWS Management Console eller AWS KMS API. Alla symmetriska nycklar och privata asymmetriska nycklar lämnar aldrig AWS KMS okrypterade. För att utföra kryptografiska operationer med CMK:er måste användaren använda AWS KMS API.
Det finns tre typer av CMK:er som stöds av AWS KMS:
- Kundhanterad CMK: Kundhanterade CMK:er är de CMK:er i användarkontot som användaren kan skapa, äga och hantera. Användare har fullständig kontroll över kundhanterade nycklar, vilket gör att de kan upprätta och hantera sina nyckelpolicyer, IAM-policyer, beviljanden, rotation av kryptografiskt material etc.
- AWS-hanterad CMK: CMK:erna i användarkontot som skapas och hanteras av AWS för användarens räkning kallas AWS Managed CMK:er. AWS-hanterade CMK:er kan inte användas direkt i kryptografiska operationer. Användare kan inte hantera, rotera eller ändra nyckelpolicyerna för AWS-hanterade CMK:er. Användare kan dock se nyckelpolicyerna och granska deras användning i AWS CloudTrail (integrerat med AWS KMS) i sitt AWS-konto.
- AWS-ägt CMK: Samlingen av CMK:er som ägs och hanteras av AWS för användning i flera moln kallas en AWS-ägd CMK. AWS-ägda CMK:er skyddar resurserna i användarkontot. Dessa CMK:er finns inte i användarens konto. Med AWS-ägda CMK:er behöver användare inte skapa eller hantera CMK:er. Användare kan inte visa, använda, spåra eller granska dem.
Datanycklar
Nycklarna som används för att kryptera data och andra datakrypteringsnycklar är datanycklar. Datanycklar används för att kryptera en stor mängd data eftersom kundmasternycklar (CMK) inte kan kryptera data större än 4 KB. Datanycklar används och hanteras utanför AWS KMS. Datanycklar lagras, hanteras eller spåras inte av AWS KMS. AWS KMS utför inga kryptografiska operationer med datanycklar, men användare kan generera, kryptera och dekryptera datanycklar med hjälp av AWS KMS kundmasternycklar (CMK). Datanycklar kan kryptera och dekryptera data i andra AWS-tjänster som Amazon S3, EBS, EC2, etc.
- Skapa datanyckel
AWS KMS använder användarspecificerade CMK:er för att generera en datanyckel. En datanyckel kan genereras genom att anropa Generera datanyckel operation. Denna operation returnerar två kopior av datanyckeln, en i klartext och den andra krypterad under CMK. En annan operation, GenereraDataKeyUtanOformateradText, kan också användas, vilket returnerar en enda kopia av datanyckeln som är krypterad under CMK.
Innan du använder en krypterad datanyckel, be AWS KMS att dekryptera den.

- Kryptera data med en datanyckel
Som tidigare nämnts använder inte AWS KMS datanycklar för att utföra någon kryptografisk operation. För att kryptera data med en datanyckel, använd en klartextdatanyckel, kryptera data utanför AWS KMS och radera den från minnet, lagra sedan den krypterade datanyckeln.

- Dekryptera data med en datanyckel
För att dekryptera data utanför AWS KMS med en datanyckel, Avkryptera operationen används för att dekryptera den krypterade datanyckeln, vilket returnerar en klartextkopia av datanyckeln.
Nu kan data utanför AWS KMS dekrypteras med hjälp av en klartextnyckel. Användaren måste ta bort klartextnyckeln från minnet efter att ha använt den.
Följande diagram visar hur Avkryptera operation dekryptera den krypterade datanyckeln:

- Datanyckelpar
Användare kan skapa ett asymmetriskt datanyckelpar bestående av matematiskt relaterade privata och publika nycklar. Generellt används dessa nyckelpar för kryptering och dekryptering på klientsidan eller signerings- och verifieringsprocessen utanför AWS KMS.
Den privata nyckeln för varje datanyckel skyddas av AWS KMS med hjälp av användarspecificerade symmetriska CMK:er, men användare måste hantera och använda datanyckelparet utanför AWS KMS eftersom det inte spårar, hanterar eller använder datanyckelpar för att utföra några kryptografiska operationer.
Användare kan generera följande datanyckelpar i AWS KMS:- RSA-nyckelpar på 2048 bitar, 3076 bitar och 4096 bitar. Används vanligtvis för kryptering och dekryptering.
- Nyckelpar för elliptisk kurva: ECC_NIST_P256, ECC_NIST_P384, ECC_NIST_P512 och ECC_SECG_P256K1. Används generellt för signering och verifiering.
- Skapa ett datanyckelpar
För att generera ett datanyckelpar måste användaren anropa GenereraDataKeyPair or GenereraDataKeyPairUtanOformateradText operation enligt kravet och ange en symmetrisk CMK som krypterar den privata nyckeln.
GenereraDataKeyPair Operationer genererar tre nycklar: en offentlig nyckel i klartext, en privat nyckel i klartext och en krypterad privat nyckel. Däremot, GenereraDataKeyPairUtanOformateradText genererar två nycklar: en offentlig nyckel i klartext och en krypterad privat nyckel.

- Kryptera data med ett datanyckelpar
Den offentliga nyckeln för ett datanyckelpar används för att kryptera informationen, och den privata nyckeln för samma datanyckelpar används för att dekryptera informationen.

- Dekryptera data med ett datanyckelpar
Den privata nyckeln i klartext för samma datanyckelpar vars publika nyckel användes för kryptering används för att dekryptera data. Avkryptera Operationen används för att dekryptera den krypterade privata nyckeln för ett datanyckelpar och ta bort den privata nyckeln i klartext från minnet efter att den använts.

- Signera meddelanden med ett datanyckelpar
Den privata nyckeln i klartext för ett datanyckelpar används för att generera en kryptografisk signatur för ett meddelande, och vem som helst med den offentliga nyckeln för samma datanyckelpar kan använda den för att verifiera signaturen.
Om den privata nyckeln är krypterad med AWS CMK, Avkryptera operationen används, vilket returnerar den privata nyckeln i klartextformat som används för signeringsändamål. Som alltid bör användaren ta bort den privata nyckeln i klartext från minnet efter användning.

- Verifiera ett meddelande med ett datanyckelpar
Den offentliga nyckeln för datanyckelparet används för verifiering. Den offentliga nyckeln ska tillhöra samma datanyckelpar vars privata nyckel användes för signering. Verifiering av signaturen bekräftar att en behörig användare signerade meddelandet och att det inte har ändrats.

- alias
Användare kan ge ett vänligt namn till en CMK, känt som ett alias. Om CMK-namnet till exempel är 9897aswd-34dw-1234-89hg-asdkal212012 kan användaren ge det aliaset key-01. Med hjälp av ett alias kan användare enkelt identifiera en CMK i AWS KMS-operationer. - Kryptografiska operationer
AWS SDK, AWS Tools for PowerShell eller AWS Command Line Interface (AWS CLI) krävs för att utföra kryptografiska operationer med CMK:er eftersom CMK:er finns kvar i AWS KMS. Användare kan inte utföra några kryptografiska operationer med CMK:er i AWS KMS-konsolen.
Nedan följer en tabell som sammanfattar de kryptografiska operationerna i AWS KMS:
| Drift | CMK-nyckeltyp | CMK-nyckelanvändning |
|---|---|---|
| Avkryptera | Symmetrisk/Asymmetrisk | KRYPTERA_DEKRYPTERA |
| Kryptera | Symmetrisk/Asymmetrisk | KRYPTERA_DEKRYPTERA |
| Generera datanyckel | Symmetrisk | KRYPTERA_DEKRYPTERA |
| GenereraDataKeyUtanOformateradText | Symmetrisk | KRYPTERA_DEKRYPTERA |
| GenereraDataKeyPair | Asymmetrisk | KRYPTERA_DEKRYPTERA |
| GenereraDataKeyPairUtanOformateradText | Asymmetrisk | KRYPTERA_DEKRYPTERA |
| Kryptera om | Symmetrisk/Asymmetrisk | KRYPTERA_DEKRYPTERA |
| Anmäl | Asymmetrisk | SIGN_VERIFY |
| Verifiera | Asymmetrisk | SIGN_VERIFY |
Obs: GenereraDataKeyPair och GenereraDataKeyPairUtanOformateradText Operationer genererar asymmetriska datanyckelpar som symmetriska CMK:er skyddar det.
- Kuvertkryptering
Användare kan skydda sina klartextdata genom att kryptera dem med en nyckel, men hur skyddar de krypteringsnyckeln? Detta introducerar konceptet kuvertkryptering, där klartextdata krypteras med datanycklar och datanycklarna krypteras med huvudnyckel. AWS KMS ansvarar för huvudnyckelns säkerhet. Huvudnycklar lagras och hanteras av AWS KMS och lämnar aldrig HSM okrypterad.
Fördelar med kuvertkryptering:- Skydda datanycklar: Datanycklarna är i sig skyddade genom att de krypteras med CMK:er. Så de krypterade datanycklarna kan lagras säkert med krypterad data.
- Kryptera datanyckeln med huvudnyckel: Att kryptera stora mängder data med datanycklar, om och om igen, kan vara en tidskrävande process. Så istället för att kryptera data upprepade gånger kan krypteringsnyckeln krypteras med en huvudnyckel.
- Kombinera styrkan hos flera algoritmer: Kuvertkryptering låter dig använda styrkan hos både symmetriska och asymmetriska algoritmer.
- Nyckelpolicy
Användare kan definiera behörigheterna för CMK i ett dokument som kallas en nyckelpolicy. Användare kan lägga till, ta bort eller ändra behörigheter när som helst för kundhanterade nycklar, men kan inte redigera den AWS-hanterade CMK:n eftersom AWS hanterar den åt användaren. - Grant
Beviljanden är tillfälliga behörigheter som användare kan skapa, använda och ta bort utan att ändra nyckel- eller IAM-policyer. Beviljanden beaktas också tillsammans med IAM-policyer och nyckelpolicyer när användare får åtkomst till en CMK. - Granskning av CMK-användning
AWK KMS är integrerat med CloudTrail, som kan användas för att granska nyckelanvändning. CloudTrail skapar loggfiler för AWS API-anrop och relaterade händelser i kontot. Dessa loggfiler innehåller alla AWS API-förfrågningar från AWS SDK, AWS Management Console eller AWS kommandoradsverktyg. Dessa loggfiler kan användas för att hitta viktig information som när CMK användes, vilken åtgärd som begärdes, begärarens identitet och käll-IP-adressen.
Skapa kundhanterade symmetriska CMK:er
En användare bör följa följande steg för att skapa kundhanterad symmetrisk CMK med hjälp av AWS Management Console:
- Logga in på AWS-hanteringskonsolen och öppna AWS KMS-konsolen.
- Du kan ändra AWS-regionen från sidans övre högra hörn.
- Välj kundhanterare nycklar från navigeringsfönstret.
- Välj skapa nyckel.
- I Nyckeltyp väljer du CMK-typ, dvs. symmetrisk.
- Klicka på Nästa.
- Skapa ett alias för CMK:n.
- Skriv beskrivningen för CMK:n. (Valfritt)
- Klicka på Nästa.
- Ange en taggnyckel och ett taggvärde. (Valfritt)
- Klicka på Nästa.
- Välj IAM-användare och roller som kan administrera CMK:n.
- Avmarkera kryssrutan Tillåt nyckeladministratörer att ta bort den här nyckeln om du inte vill tillåta IAM-användare och roller att ta bort den här nyckeln. (Valfritt)
- Klicka på Nästa.
- Välj IAM-användare och roller som kan använda CMK för att utföra kryptografiska operationer.
- I avsnittet Andra AWS-konton klickar du på Lägg till ytterligare ett AWS-konto och skriver in AWS-kontots identifieringsnummer för att tillåta dem att använda denna CMK för kryptografiska operationer. (Valfritt)
- Klicka på Nästa.
- Granska nyckelkonfigurationen som du har gjort.
- Klicka på Slutför för att skapa CMK:n.
Skapa kundhanterade asymmetriska CMK:er
En användare bör följa följande steg för att skapa kundhanterad symmetrisk CMK med hjälp av AWS Management Console:
- Logga in på AWS-hanteringskonsolen och öppna AWS KMS-konsolen.
- Du kan ändra AWS-regionen från sidans övre högra hörn.
- Välj kundhanterare nycklar från navigeringsfönstret.
- Välj skapa nyckel.
- I Nyckeltyp väljer du CMK-typ, dvs. asymmetrisk.
- I Nyckelanvändning väljer du syftet med att skapa nyckeln, dvs. Kryptera och dekryptera eller Signera och verifiera.
- Välj specifikationen för din asymmetriska CMK.
- Klicka på Nästa.
- Skapa ett alias för CMK:n.
- Skriv beskrivningen för CMK:n. (Valfritt)
- Ange en taggnyckel och ett taggvärde. (Valfritt)
- Klicka på Nästa.
- Välj IAM-användare och roller som kan administrera CMK:n.
- Avmarkera kryssrutan Tillåt nyckeladministratörer att ta bort den här nyckeln om du inte vill tillåta IAM-användare och roller att ta bort den här nyckeln. (Valfritt)
- Klicka på Nästa.
- Välj IAM-användare och roller som kan använda CMK för att utföra kryptografiska operationer.
- I avsnittet Andra AWS-konton klickar du på Lägg till ytterligare ett AWS-konto och skriver in AWS-kontots identifieringsnummer för att tillåta dem att använda denna CMK för kryptografiska operationer. (Valfritt)
- Klicka på Nästa.
- Granska nyckelkonfigurationen som du har gjort.
- Klicka på Slutför för att skapa CMK:n.
Fördelar med AWS KMS
- Fullständigt hanterad: AWS KMS ger fullständig åtkomst till krypterad data genom att tillämpa de behörigheter som användaren definierat för att använda nycklar.
- Centraliserad nyckelhantering: AWS KMS tillhandahåller en enda kontrollpunkt för att hantera och definiera nyckelpolicyer. Användare kan skapa, importera, hantera, ta bort eller rotera nycklar från AWS nyckelhanteringskonsol, eller använda AWS CLI eller SDK.
- Signera data digitalt: Användaren kan generera en asymmetrisk nyckel i AWS KMS och utföra digitala signeringsåtgärder för att upprätthålla dataintegriteten.
- Säkra: I AWS KMS genereras och skyddas nycklar i Säkerhetsmoduler för hårdvara (HSM:er) validerad enligt FIPS 140-2. Av säkerhetsskäl används nycklar endast inom HSM:er och kan aldrig delas utanför den AWS-region där de skapades.
- Inbyggd granskning: AWS KMS är integrerat med CloudTrail för att övervaka nyckelanvändning för att uppfylla regel- och efterlevnadsbehov.
Nedan följer en tabell som sammanfattar kryptoegenskaperna för AWS Key Management Service:
| Hyresgäst | Flera hyresgäster |
|---|---|
| Standard | FIPS 140-2 Nivå 2 |
| Huvudnycklar | – Kundägd huvudnyckel – AWS-hanterad huvudnyckel – AWS-ägd huvudnyckel |
| Kryptonycklar | – Symmetrisk – Asymmetrisk – AES endast i XTS-läge |
| Krypto API | AWS SDK/API för KMS |
| Åtkomstautentisering/policy | AWS IAM-policy |
| Viktig tillgänglighet | Tillgänglig i flera regioner (nycklar utanför den region där de skapades kan inte användas) |
| Hög tillgänglighet | AWS-hanterad tjänst |
| Revisionsförmåga | – Molnspår – Molnbevakning |
AWS CloudHSM
AWS CloudHSM är en AWS-hårdvarusäkerhetsmodul som ägs och hanteras av kunden. AWS CloudHSM fungerar som en enda hyresgäst på hårdvara, vilket begränsar dess delning med andra kunder och applikationer. Organisationer kan använda AWS CloudHSM för de som vill använda HSM:er för att administrera och hantera krypteringsnycklar, men inte behöva oroa sig för att hantera HSM-hårdvara i ett datacenter.
AWS CloudHSM tillåter FIPS 140-2 Level 3-validerade HSM-kluster med en enda hyresgäst i ditt Amazon Virtual Private Cloud (VPC) att lagra och använda dina nycklar. Fullständig kontroll ges till användare vars nycklar används via en autentiseringsmekanism separat från AWS.
AWS CloudHSM stöder flera användningsfall, inklusive följande: hantering av offentliga/privata nyckelpar för Public Key Infrastructure (PKI), kod- och dokumentsignering, eller lagring av privata nycklar för olika tjänster såsom databas-, lagrings- och webbapplikationer, lagring av nycklar för DRM-lösningar. AWS CloudHSM gör det möjligt för din organisation att uppfylla kraven för nyckelhantering krav med användning av hårdvarusäkerhetsmoduler som övervakas av AWS med möjlighet att integrera flera plattformar för att lagra nycklar.
Nedan följer tabellen som sammanfattar AWS Cloud HSM Crypto Properties
| Hyresgäst | Flera hyresgäster |
|---|---|
| Standard | FIPS 140-2 Nivå 2 |
| Huvudnycklar | – Kundägd huvudnyckel – AWS-hanterad huvudnyckel – AWS-ägd huvudnyckel |
| Kryptonycklar | – Symmetrisk – Asymmetrisk – AES endast i XTS-läge |
| Krypto API | AWS SDK/API för KMS |
| Åtkomstautentisering/policy | AWS IAM-policy |
| Viktig tillgänglighet | Tillgänglig i flera regioner (nycklar utanför den region där de skapades kan inte användas) |
| Hög tillgänglighet | AWS-hanterad tjänst |
| Revisionsförmåga | – Molnspår – Molnbevakning |
Butik med specialanpassade nycklar
Funktionen för anpassad nyckellagring i AWS KMS ger ett sätt att enkelt integrera AWS CloudHSM-kluster med AWS KMS.
Användare kan konfigurera sitt CloudHSM-kluster för att lagra nycklar istället för standardnyckellagret för KMS.
Användare kan också generera nyckelmaterial inom CloudHSM-klustret. Huvudnycklarna som genereras i kundens nyckelarkiv lämnar aldrig AWS Hardware Security Module i CloudHSM-klustret i klartextformat, och alla kryptografiska operationer som krävs av KMS utförs inom HSM:erna.
Slutsats
AWS CloudHSM tillhandahåller nyckellagring med en enda hyresgäst, vilket ger organisationer FIPS 140-2 nivå 3-efterlevnad. CloudHSM ger fullständig kontroll över dina nycklar, inklusive symmetriska (AES), asymmetriska (RSA), SHA-256, SHA 512, hashbaserade eller digitala signaturer (RSA). Å andra sidan är AWS Key Management Service nyckellagring med flera hyresgäster som ägs och hanteras av AWS. AWS KMS tillåter kundmasternycklar för symmetrisk nyckelkryptering (AES-256-XTS) och asymmetriska nycklar (RSA eller elliptisk kurva (ECC)). Anta att din organisations nyckelhanteringsstrategi för kryptering kommer att vara att köra en enda molntjänstleverantör för nu och under överskådlig framtid. I så fall kommer AWS KMS att tillhandahålla den enklaste miljön för att underhålla nycklarna. Anta dock att du planerar att dra nytta av flera molnleverantörer men inte vill underhålla HSM:erna. I så fall kan AWS CloudHSM vara lösningen för din organisation som gör det möjligt att separera krypteringsnycklar från data från de andra plattformar som används.
