kryptering är ett av de mest grundläggande kraven för att säkerställa datasekretess, särskilt för heltäckande skydd av data som överförs över nätverk. Klartext is krypterad med användning av en kryptering algoritm och en kryptering nyckel. Kryptering konverterar den läsbara texten till en oläslig text som kallas chiffertexten (krypterad data).
I dagens blogginlägg kommer vi att diskutera olika krypteringsalternativ för AWS Simple Storage Service, känd som S3. S3 är mycket tillförlitlig, säker och billig jämfört med lokal datalagring (On-prem) för lagringsintensiva applikationer, t.ex. Hadoop EMR. S3 lagrar data som objekt som kallas "Buckets" och varje objekt kan vara upp till 5 TB stort.
Krypteringsmetoder
AWS S3 erbjuder båda krypteringsmetoderna, Kryptering i transit och Kryptering vid vila.
Kryptering i transit
Kryptering i transit för Amazon S3 kan underlättas med hjälp av SSL / TLS hos klienten samt med nedanstående liknande bucketpolicy på bucketnivå:
{
"Id": "Policy1600282742195",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1600282739517",
"Action": [
"s3:GetObject"
],
"Effect": "Deny",
"Resource": "arn:aws:s3:::mysecures3buket",
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
},
"Principal": "*"
}
]
}
Kryptering vid vila
Kryptering vid vila kan vidare klassificeras i Kryptering på klientsidan och Kryptering på serversidan För både server- och klientsideskryptering använder AWS AES-256 med Galois Counter Mode (GCM) för alla symmetriska nyckelkrypteringsoperationer. GCM tillhandahåller autentiserad kryptering genom att lägga till en unik tagg i chiffertexten som verifierar att den krypterade informationen inte har manipulerats på något sätt.
Kryptering på klientsidan
In Kryptering på klientsidan, krypteras data innan de skickas till S3-bucketen. För att implementera Kryptering på klientsidan I S3 har vi följande två alternativ:
- Använd en CMK (kund huvudnyckel) lagras i AWS KMS (Key Management Service)
- Använd en kundtillhandahållen huvudnyckel som lagras i kundens egenutvecklade applikation.
AnmärkningarDina klientsidesnycklar och dina okrypterade data skickas aldrig till AWS. Det är mycket viktigt att du hanterar dina krypteringsnycklar med största försiktighet. Om du förlorar dem kan du inte dekryptera dina data.
Kryptering på serversidan
In Kryptering på serversidan, krypteras data efter att de skickats till S3-bucketen och innan de lagras i S3-bucketen.
Serversideskryptering har följande tre alternativ:
- Använd Amazon S3-hanterade nycklar (SSE-S3)I detta kommer nyckelmaterialet och nyckeln att tillhandahållas av AWS självt för att kryptera objekten i S3-bucken.
- Använd CMK (kundhuvudnyckel) i AWS KMS (SSE-KMS)I detta genereras nyckelmaterial och nyckeln i AWS KMS-tjänsten för att kryptera objekten i S3-bucken.
- Använd en kundtillhandahållen krypteringsnyckel (SSE-C)I detta fall kommer nyckeln att tillhandahållas av kunden och Amazon S3 hanterar krypteringen och dekryptering process vid uppladdning/nedladdning av objekten till S3-hinken.
Med SSE-S3Amazon S3-hanterad serversideskryptering använder en av de säkraste blockchifrorna, AES-256 (Advanced Encryption Standard) bit, för att kryptera varje objekt med en unik nyckel, vilket innebär att inga överlappande nycklar används för att kryptera objekten. Dessutom är dessa unika nycklar krypterade med en huvudnyckel som roteras regelbundet för att ge ytterligare datasäkerhet.
Med SSE-KMSAmazon S3 använder AWS KMS-funktionaliteten för att kryptera data i S3-bucket. Genom att kombinera Amazon S3 med AWS KMS får du en perfekt blandning av säkerhet och tillgänglighet.
Schematisk illustration av hur SSE-KMS fungerar
-
CMK skapar, med hjälp av krypteringsalgoritmen (AES-256), två nycklar, en är en klartextnyckel och den andra är en krypterad datanyckel.

-
När objektet laddas upp till S3-hinken krypteras objektet med klartextdatanyckeln i S3. Det krypterade objektet (chiffertext) tillsammans med den krypterade datanyckeln lagras sedan i S3.

-
Medan objektet laddas ner från S3-hinken skickar S3 den krypterade datanyckeln till KMS. KMS matchar rätt CMK, dekrypterar sedan den krypterade datanyckeln och skickar klartextdatanyckeln till S3. S3 laddar sedan ner objektet genom att dekryptera objektet med denna klartextdatanyckel.

När du använder SSE-KMS, kan du ha följande kombinationer:
- Kundhanterad CMK (kundhanterad huvudnyckel)Detta är ett användningsfall där du vill ha fullständig kontroll över CMK:n, dvs. du kan skapa, rotera, inaktivera, granska och ha fullständig åtkomstkontroll över vem som kan använda den. Om du vill använda kundhanterade CMK:er kan du skapa den under AWS KMS-konsolen innan du använder den på S3-nivå.
- AWS-hanterad CMK (kundhuvudnyckel)Detta är ett användningsfall där du inte anger en kundhanterad CMK. För att underlätta processen för användarna skapar Amazon S3 automatiskt en AWS-hanterad CMK i AWS-kontot första gången du lägger till ett objekt som är krypterat med SSE-KMS i en bucket. Som standard använder Amazon S3 denna CMK för SSE-KMS.
Obs: Alla förfrågningar (GET och PUT) för ett objekt som krypterats av SSE-KMS kommer att ge ett felmeddelande om de inte görs via https eller med SigV4. Amazon SigV4 är en autentiseringsmekanism som stöds av Amazon S3 för att signera API-förfrågningar. Detta gör det möjligt för Amazon S3 att utföra avsändar-/källantifiering och skyddar dina förfrågningar från obehöriga aktörer.
- Serversideskryptering krypterar endast objektdata, inte objektmetadata.
Med SSE-C, Amazon S3 utför serversideskryptering med kundangivna krypteringsnycklar. Med den krypteringsnyckel som tillhandahålls av användaren hanterar Amazon S3 krypterings- och dekrypteringsprocessen samtidigt som data på diskar skrivs och åtkoms i följd. Eftersom hanteringen av kryptering och dekryptering hanteras av Amazon S3 finns det inget krav på att hantera koden på användarnivå. Det enda kravet ur ett användarperspektiv är att hantera krypteringsnycklarna. Amazon S3 använder AES-256-bitarskryptering för att kryptera data med den kundangivna nyckeln och tar bort nyckeln från sitt minne efter att krypteringsprocessen är klar, medan den i dekrypteringsprocessen först verifierar och matchar om samma nyckel tillhandahålls (som tillhandahölls under krypteringen) och sedan dekrypterar data och gör dem tillgängliga för användaren.
Obs: Amazon S3 lagrar inte krypteringsnyckeln, utan lagrar ett slumpmässigt saltat HMAC-värde (hash-based message authentication code) för krypteringsnyckeln för att validera framtida förfrågningar. Det saltade HMAC-värdet kan inte användas för att härleda den faktiska krypteringsnyckeln eller för att dekryptera innehållet i den krypterade datan, vilket innebär att om du förlorar krypteringsnyckeln förlorar du även datan.
Jämförelse av S3-krypteringsalternativ
S3 erbjuder flera alternativ för att kryptera data i S3-bucket. Följande tabell sammanfattar alla tillgängliga alternativ för att kryptera data i vila och data under överföring:
| Kryptering vid vila | Kryptering i transit | Symmetrisk nyckelkryptering | Asymmetrisk nyckelkryptering | Ansvarig part för datakryptering/dekryptering | Ansvarig part för hemlig förvaring | |
|---|---|---|---|---|---|---|
| AWS:SäkerTransport | N | Y | Y | Y | AWS | AWS |
| SSE-S3 | Y | N | Y | N | AWS | AWS |
| SSE-KMS (AWS-hanterad CMK) | Y | N | Y | N | AWS | AWS |
| SSE-KMS (kundhanterad CMK) | Y | N | Y | N | AWS | AWS |
| SSE-C | Y | N | Y | N | AWS | Kund |
| AWS SDK + KMS (AWS-hanterad CMK) | Y | N | Y | N | Kund | AWS |
| AWS SDK + KMS (kundhanterad CMK) | Y | N | Y | N | Kund | AWS |
| AWS SDK + självhanterad hemlighet | Y | N | Y | Y | Kund | Kund |
Slutsats
Amazon S3 passar mycket bra om du har en miljö med olika applikationer som genererar en stor mängd data. Anledningen att välja S3 är inte bara att det kan lagra enorma datamängder till lägre priser, utan det är också hållbart, skalbart och mycket tillgängligt. Datasekretess och efterlevnad är avgörande när det gäller datasäkerhet, vilket kan uppnås med hjälp av olika krypteringsmetoder som Amazon S3 erbjuder. Med hjälp av flera S3-krypteringsalternativ kan du slappna av utan att oroa dig för att data komprometteras.
- Krypteringsmetoder
- Kryptering på klientsidan
- Kryptering på serversidan
- Schematisk illustration av hur SSE-KMS fungerar
- CMK skapar, med hjälp av krypteringsalgoritmen (AES-256), två nycklar, en är en klartextnyckel och den andra är en krypterad datanyckel.
- När objektet laddas upp till S3-hinken krypteras objektet med klartextdatanyckeln i S3. Det krypterade objektet (chiffertext) tillsammans med den krypterade datanyckeln lagras sedan i S3.
- Medan objektet laddas ner från S3-hinken skickar S3 den krypterade datanyckeln till KMS. KMS matchar rätt CMK, dekrypterar sedan den krypterade datanyckeln och skickar klartextdatanyckeln till S3. S3 laddar sedan ner objektet genom att dekryptera objektet med denna klartextdatanyckel.
- Schematisk illustration av hur SSE-KMS fungerar
- Jämförelse av S3-krypteringsalternativ
