Dữ liệu được lưu trữ trong phần cứng dùng chung ở dạng mã hóa, ngay cả khi ai đó có quyền truy cập vào phần cứng, nó không thể truy cập dữ liệu ở định dạng có thể đọc được
Thường được sử dụng khi chỉ có một bên tham gia
Encryption In Transit:
Nhằm mục đích bảo vệ dữ liệu khi được chuyển giữa 2 nơi
Thường được sử dụng khi nhiều cá nhân/ hệ thống tham gia
Encryption Concepts
Plaintext: dữ liệu không được mã hóa, có thể là văn bản, hình ảnh, ứng dụng khác,…
Algorithm: Blowfish, AES, RC4, DES, RC5 and RC6
Key: “password”
Ciphertext: khi một thuật toán sử dụng key để mã hoá plaintext, đầu ra được tạo ra là cyphertext (dữ liệu được mã hóa)
Symmetric Encryption: Mã hoá đối xứng
Khóa đối xứng: cùng một khóa có thể được sử dụng để mã hóa và giải mã
Thuật toán mã hóa đối xứng: AES-256
Phù hợp cho mã hóa At Rest, không được khuyến nghị cho mã hóa In Transit
Asymmetric Encryption: Mã hoá bất đối xứng
Thuật toán bất đối xứng: RSA, ElGamal
Khóa bất đối xứng: được cấu tạo từ 2 phần: khóa công khai và khóa cá nhân
Một khóa công khai có thể được sử dụng để sinh ra cyphertext mà chỉ có thể được mã hóa bằng khóa riêng tư
Mã hóa không đối xứng được sử dụng bởi PGP, SSL, SSH,…
Signing
Quá trình được sử dụng để chứng minh danh tính của một tin nhắn
Một tin nhắn có thể được “sign” bằng khóa cá nhân và được xác minh bằng khóa công khai
Steganography
Quá trình ẩn dữ liệu được mã hóa trong dữ liệu plaintext
Mọi region đều tách biệt khi sử dụng KMS, hãy nghĩ về KMS như một sản phẩm riêng biệt trong từng region.
KMS là một dịch vụ công cộng, có nghĩa là nó nằm trên AWS public zone. Và do đó, nó có thể được kết nối từ bất kỳ đâu có quyền truy cập vào khu vực công cộng này, nhưng giống như bất kỳ dịch vụ AWS nào khác, tất nhiên, bạn cần có quyền để truy cập vào nó.
AWS Key Management Service (KMS) giúp bạn dễ dàng tạo, lưu trữ và quản lý khóa mật mã cũng như kiểm soát việc sử dụng khóa mật mã trên nhiều dịch vụ AWS và trong các ứng dụng của bạn. Đây là những khóa có thể được sử dụng để chuyển đổi văn bản thuần túy sang văn bản mật mã và ngược lại.
KMS có khả năng xử lý cả khóa đối xứng (Symmetric: single key cho cả encrypt và decrypt) và không đối xứng (Asymmetric: key pairs dùng cho encrypt và decrypt)
Các key được khóa bên trong KMS, đảm bảo rằng các key không bao giờ rời và được giữ an toàn trong dịch vụ.
KMS cung cấp dịch vụ tuân thủ FIPS 140-2 (L2). Đó là một tiêu chuẩn an ninh của Hoa Kỳ. Một số tính năng của KMS tuân thủ cấp độ ba, nhưng nhìn chung nó chỉ đạt được FIPS 140-2 cấp độ hai.
AWS KMS được tích hợp với AWS CloudTrail để cung cấp cho bạn nhật ký của toàn bộ hoạt động sử dụng khóa, qua đó giúp đáp ứng các nhu cầu về pháp lý và tuân thủ của bạn.
Bất cứ khi nào bạn nghe thấy “mã hóa” cho một dịch vụ AWS, rất có thể đó là KMS
Cách dễ dàng để kiểm soát quyền truy cập vào dữ liệu của bạn, AWS quản lý các khóa cho chúng ta
Giá trị trong KMS là Customer Master Key (CMK) được sử dụng để mã hóa dữ liệu không bao giờ có thể được người dùng truy xuất và CMK có thể được xoay vòng để tăng cường bảo mật
Đừng bao giờ lưu trữ bí mật của bạn trong văn bản rõ ràng, đặc biệt là trong code của bạn
Các bí mật được mã hóa có thể được lưu trữ trong các code/ biến môi trường
KMS chỉ có thể giúp mã hóa tối đa 4KB dữ liệu cho mỗi lần gọi
Khóa mã hóa dữ liệu (DEK) là một loại khóa khác mà KMS có thể tạo ra, và chúng được tạo bằng cách sử dụng khóa chính của khách hàng.
Khóa này có thể được sử dụng để mã hóa dữ liệu có kích thước lớn hơn 4KB.
KMS không lưu trữ khóa mã hóa dữ liệu dưới bất kỳ hình thức nào, nó cung cấp cho bạn hoặc dịch vụ sử dụng KMS và sau đó sẽ loại bỏ nó. Lý do KMS loại bỏ nó là KMS không thực sự thực hiện mã hóa hoặc giải mã dữ liệu bằng cách sử dụng các khóa mã hóa dữ liệu. Bạn làm điều đó, hoặc dịch vụ sử dụng KMS làm điều đó. KMS không sử dụng khóa mã hóa dữ liệu cho bất kỳ thứ gì ngoài việc tạo ra chúng ban đầu.
Khi khóa mã hóa dữ liệu được tạo, KMS cung cấp cho bạn hai phiên bản của khóa mã hóa dữ liệu đó.
Đầu tiên, một phiên bản văn bản thuần túy của khóa (Plaintext) có thể được sử dụng ngay lập tức.
Ngoài ra, nó cũng cung cấp văn bản mật mã hoặc phiên bản được mã hóa của cùng một khóa mã hóa dữ liệu đó. Khóa mã hóa dữ liệu được mã hóa bởi khóa chính của khách hàng đã tạo ra nó. Vì vậy, trong tương lai, nó có thể được KMS giải mã bằng cách sử dụng cùng khóa chính của khách hàng đó, giả sử bạn có quyền.
Bạn tạo khóa mã hóa dữ liệu, bạn lấy phiên bản văn bản thuần túy của khóa đó và mã hóa văn bản thuần túy của bạn để tạo văn bản mật mã cho dữ liệu của bạn và sau đó bạn loại bỏ khóa mã hóa dữ liệu văn bản thuần túy. Điều đó sẽ để lại cho bạn dữ liệu được mã hóa và bản sao mã hóa của khóa mã hóa dữ liệu.
Cách thức hoạt động của KSM? API – Encrypt and Decrypt
Ví dụ đối với việc mã hoá mật khẩu. Mật khẩu thường rất nhỏ và do đó sẽ nhỏ hơn 4KB.
Chúng ta sẽ gọi tới dịch vụ KMS và sử dụng Client CLI/SDK để gọi API mã hoá, ý nói rằng chúng ta muốn mã hóa bí mật này bằng CMK mà bạn chỉ định và tự tạo.
Hãy nhớ CMK nằm trong dịch vụ KMS và chúng ta không bao giờ có quyền truy cập vào nó. Vì vậy, KMS sẽ kiểm tra quyền IAM của bạn với IAM để đảm bảo rằng chúng ta thực sự có quyền truy cập để sử dụng CMK này và sau đó KMS sẽ gửi lại cho bạn mật khẩu đã được mã hóa.
Bạn có mật khẩu đã được mã hóa và sau đó nói rằng bạn cần sử dụng nó nên bạn muốn giải mã nó. Sử dụng Client CLI/SDK để gọi API giải mã và bạn gửi mật khẩu đã được mã hóa tới KMS. Một lần nữa, KMS sẽ kiểm tra lại các quyền của IAM để đảm bảo bạn có thể giải mã và nếu mọi thứ tốt đẹp thì việc giải mã sẽ diễn ra trong dịch vụ KMS và bạn sẽ nhận lại được mật khẩu đã giải mã.


Hãy cùng xem xét một ví dụ cụ thể về cách thức hoạt động của CMK:
Tương tác đầu tiên của bạn với KMS sau khi chọn một region sẽ là tạo ra một khóa, cụ thể là Khóa chính của khách hàng - CMK
Bạn chạy hoạt động tạo khóa và một vùng chứa logic khóa chính của khách hàng (customer master key logical container) được tạo, chứa tài liệu khóa vật lý hỗ trợ. Đây là điều quan trọng mà KMS tạo ra, lưu trữ và quản lý.
Khóa chính của khách hàng không bao giờ được lưu trữ ở dạng liên tục khi không được mã hóa, những gì KMS sẽ làm là lấy khóa chính của khách hàng này và mã hóa nó trước khi nó được lưu trữ liên tục trên container.
Tương tác tiếp theo của bạn với KMS có thể là yêu cầu mã hoá một số dữ liệu
Để làm điều này, bạn thực hiện gọi Encrypt tới KMS, chỉ định khóa để sử dụng và cung cấp một số dữ liệu để mã hóa.
KMS chấp nhận dữ liệu và giả định rằng bạn có quyền sử dụng khóa chính của khách hàng bạn vừa chỉ định
KMS giải mã khóa đó và sử dụng nó để mã hóa dữ liệu văn bản thuần túy mà bạn đã cung cấp và sau đó trả lại dữ liệu đó cho bạn.
Tại một thời điểm nào đó trong tương lai, bạn sẽ muốn giải mã dữ liệu.
Để làm điều đó, bạn gọi một hoạt động giải mã, bao gồm dữ liệu mà bạn muốn giải mã.
KMS không cần bạn phải cho biết khóa chính của khách hàng sẽ sử dụng cho các hoạt động giải mã. Thông tin đó đã được mã hóa bên trong bản mã hoá của dữ liệu mà bạn muốn giải mã. Vì vậy, tất cả những gì bạn cần làm là gọi Decrypt và chuyển văn bản mã hoá vào KMS
Giả sử rằng bạn có quyền giải mã, KMS sẽ giải mã khóa chính của khách hàng, và sau đó nó sẽ sử dụng khóa này để giải mã bản mã và trả lại dữ liệu đó cho bạn.
Không có điểm nào trong toàn bộ quá trình này, khóa chính của khách hàng rời khỏi KMS, không có điểm nào nó được lưu trữ trong container ở dạng văn bản thuần túy. Bạn có thể có quyền tạo khóa để sử dụng nó để mã hóa dữ liệu và giải mã hoặc bạn chỉ có thể có một trong những quyền đó. Bạn có thể có quyền mã hóa dữ liệu, nhưng không giải mã dữ liệu hoặc bạn có thể có toàn quyền quản lý KMS
AWS CloudHSM là một mô-đun bảo mật phần cứng dựa trên đám mây (HSM = Hardware Security Module) cho phép bạn dễ dàng tạo và sử dụng các khóa mã hóa của riêng bạn trên AWS Cloud
KMS => AWS manages the software for encryption
CloudHSM => AWS provisions encryption hardware
Dedicated Hardware
Bạn quản lý hoàn toàn các khóa mã hóa của riêng mình (không phải AWS). AWS cung cấp phần cứng cho CloudHSM nhưng họ không có quyền truy cập vào nó. Trong trường hợp mất quyền truy cập vào thiết bị HSM, không có cách nào dễ dàng để lấy lại quyền truy cập vào thiết bị đó.
Thiết bị HSM có khả năng chống giả mạo, tuân thủ FIPS 140-2 Level 3
Truy cập thông qua Industry Standard APIs: PKCS#11, JCE (Java Cryptography) Extensions, CNG (Microsoft CryptoNG) Extensions
Trước đây, không có sự chồng chéo thực sự giữa CloudHSM và KMS, chúng hoàn toàn khác nhau. Nhưng gần đây, bạn có thể sử dụng một tính năng của KMS, được gọi là kho khóa tùy chỉnh (custom key store), và kho khóa tùy chỉnh này có thể sử dụng CloudHSM tích hợp với KMS.
Hỗ trợ cả mã hóa đối xứng và không đối xứng (SSL/TLS keys)
Không có bậc miễn phí
Phải sử dụng CloudHSM Client Software
Redshift hỗ trợ CloudHSM để mã hóa cơ sở dữ liệu và quản lý key
AWS sẽ quản lý phần cứng cho chúng ta, nhưng sau đó chúng ta sẽ được cung cấp một thiết bị CloudHSM và thiết bị đó dành riêng cho chúng ta.
Vì vậy, nếu chúng ta mất các khóa mã hóa, AWS không thể khôi phục thiết bị cho chúng ta. Đó thực sự là trách nhiệm của chúng ta, vì vậy hãy thận trọng khi sử dụng.
Để quản lý các khóa này và mọi thứ bạn cần có CloudHSM Client, ứng dụng này sẽ truy cập thiết bị CloudHSM để bạn quản lý khóa của mình, chúng sẽ có kết nối được mã hóa để chia sẻ thông tin an toàn .
Bạn có trách nhiệm quản lý mọi thứ bên trong thiết bị của mình, AWS không thể giúp bạn một khi đã cung cấp cho bạn phần cứng bạn cần. Do đó, xét về quyền IAM, điều duy nhất AWS có thể làm về IAM là giúp bạn tạo, mô tả và xóa cụm Cloud HSM của mình.
Bất cứ điều gì trong cụm CloudHSM của bạn, đó là trách nhiệm của riêng bạn. Vì vậy, bằng cách sử dụng phần mềm CloudHSM, bạn có thể quản lý các khóa ( tạo, đọc, cập nhật, xóa khóa) và cũng có thể quản lý người dùng có quyền truy cập vào các khóa này. Nó rất giống với một cơ sở dữ liệu mà AWS sẽ cung cấp cho bạn chính cơ sở dữ liệu đó và bạn phải quản lý những người dùng bên trong nó. Nó không hoàn toàn đúng như vậy, không hoàn toàn giống với Cloud HSM, nhưng bạn có thể hiểu được. Bạn phải quản lý tất cả bảo mật trong thiết bị của mình và AWS không thể giúp bạn điều đó.

Các thiết bị CloudHSM được triển khai trên VPC do AWS quản lý
Chúng được đưa vào các VPC do khách hàng quản lý bằng cách sử dụng ENI (Elastic Network Interface)
HSM theo mặc định không phải là một thiết bị có tính khả dụng cao. Để đảm bảo HA, chúng ta cần triển khai nhiều thiết bị HSM trên nhiều AZ và định cấu hình chúng thành một cụm
Một ứng dụng khách CloudHSM Client cần được cài đặt trên các EC2 instance, sẽ được định cấu hình để truy cập CloudHSM
Trong khi AWS cung cấp các thiết bị HSM, chúng ta với tư cách là khách hàng sẽ chịu trách nhiệm quản lý các khóa
AWS có thể cung cấp các bản cập nhật phần mềm trên thiết bị HSM, nhưng những bản cập nhật này sẽ không ảnh hưởng đến phần lưu trữ mã hóa
Theo mặc định, không có tích hợp gốc (native integration) giữa CloudHSM với dịch vụ AWS, điều này có nghĩa là không thể sử dụng CloudHSM cho S3 SSE, chẳng hạn. CloudHSM có thể được sử dụng để mã hóa phía máy khách trước khi tải dữ liệu lên S3
CloudHSM có thể được sử dụng để giảm tải quá trình xử lý SSL / TLS cho các máy chủ web
Cơ sở dữ liệu Oracle từ RDS có thể thực hiện Mã hóa dữ liệu minh bạch (Transparent Data Encryption - TDE) bằng cách sử dụng CloudHSM
CloudHSM có thể được sử dụng để bảo vệ các khóa riêng tư cho Tổ chức phát hành chứng chỉ (Certificate Authority - CA)
CloudHSM vs KMS
Feature
AWS KMS
AWS CloudHSM
Tenancy
Uses multi-tenant key storage
Single tenant key storage, dedicated to one customer
Keys
Keys owned and managed by AWS
Customer managed Keys
Encryption
Supports only symmetric key encryption
Supports both symmetric and asymmetric encryption
Cryptographic Acceleration
None
SSL/TLS Acceleration Oracle TDE Acceleration
Key Storage and Management
Accessible from multiple regions. Centralized management from IAM
Deployed and managed from a customer VPC. Accessible and can be shared across VPCs using VPC peering
Free Tier Availability
Yes
No
Nếu FIPS 140-2 level 3 được đề cập, thì đó là đám mây HSM, còn FIPS 140-2 level 2 thì là KMS
Nếu tích hợp với AWS được đề cập, thì có lẽ nó sẽ là KMS, còn nếu bạn cần sử dụng các API mã hóa Tiêu chuẩn Công nghiệp, thì đó có thể là CloudHSM.
Dữ liệu được lưu trữ trong phần cứng dùng chung ở dạng mã hóa, ngay cả khi ai đó có quyền truy cập vào phần cứng, nó không thể truy cập dữ liệu ở định dạng có thể đọc được
Thường được sử dụng khi chỉ có một bên tham gia
Encryption In Transit:
Nhằm mục đích bảo vệ dữ liệu khi được chuyển giữa 2 nơi
Thường được sử dụng khi nhiều cá nhân/ hệ thống tham gia
Encryption Concepts
Plaintext: dữ liệu không được mã hóa, có thể là văn bản, hình ảnh, ứng dụng khác,…
Algorithm: Blowfish, AES, RC4, DES, RC5 and RC6
Key: “password”
Ciphertext: khi một thuật toán sử dụng key để mã hoá plaintext, đầu ra được tạo ra là cyphertext (dữ liệu được mã hóa)
Symmetric Encryption: Mã hoá đối xứng
Khóa đối xứng: cùng một khóa có thể được sử dụng để mã hóa và giải mã
Thuật toán mã hóa đối xứng: AES-256
Phù hợp cho mã hóa At Rest, không được khuyến nghị cho mã hóa In Transit
Asymmetric Encryption: Mã hoá bất đối xứng
Thuật toán bất đối xứng: RSA, ElGamal
Khóa bất đối xứng: được cấu tạo từ 2 phần: khóa công khai và khóa cá nhân
Một khóa công khai có thể được sử dụng để sinh ra cyphertext mà chỉ có thể được mã hóa bằng khóa riêng tư
Mã hóa không đối xứng được sử dụng bởi PGP, SSL, SSH,…
Signing
Quá trình được sử dụng để chứng minh danh tính của một tin nhắn
Một tin nhắn có thể được “sign” bằng khóa cá nhân và được xác minh bằng khóa công khai
Steganography
Quá trình ẩn dữ liệu được mã hóa trong dữ liệu plaintext
Mọi region đều tách biệt khi sử dụng KMS, hãy nghĩ về KMS như một sản phẩm riêng biệt trong từng region.
KMS là một dịch vụ công cộng, có nghĩa là nó nằm trên AWS public zone. Và do đó, nó có thể được kết nối từ bất kỳ đâu có quyền truy cập vào khu vực công cộng này, nhưng giống như bất kỳ dịch vụ AWS nào khác, tất nhiên, bạn cần có quyền để truy cập vào nó.
AWS Key Management Service (KMS) giúp bạn dễ dàng tạo, lưu trữ và quản lý khóa mật mã cũng như kiểm soát việc sử dụng khóa mật mã trên nhiều dịch vụ AWS và trong các ứng dụng của bạn. Đây là những khóa có thể được sử dụng để chuyển đổi văn bản thuần túy sang văn bản mật mã và ngược lại.
KMS có khả năng xử lý cả khóa đối xứng (Symmetric: single key cho cả encrypt và decrypt) và không đối xứng (Asymmetric: key pairs dùng cho encrypt và decrypt)
Các key được khóa bên trong KMS, đảm bảo rằng các key không bao giờ rời và được giữ an toàn trong dịch vụ.
KMS cung cấp dịch vụ tuân thủ FIPS 140-2 (L2). Đó là một tiêu chuẩn an ninh của Hoa Kỳ. Một số tính năng của KMS tuân thủ cấp độ ba, nhưng nhìn chung nó chỉ đạt được FIPS 140-2 cấp độ hai.
AWS KMS được tích hợp với AWS CloudTrail để cung cấp cho bạn nhật ký của toàn bộ hoạt động sử dụng khóa, qua đó giúp đáp ứng các nhu cầu về pháp lý và tuân thủ của bạn.
Bất cứ khi nào bạn nghe thấy “mã hóa” cho một dịch vụ AWS, rất có thể đó là KMS
Cách dễ dàng để kiểm soát quyền truy cập vào dữ liệu của bạn, AWS quản lý các khóa cho chúng ta
Giá trị trong KMS là Customer Master Key (CMK) được sử dụng để mã hóa dữ liệu không bao giờ có thể được người dùng truy xuất và CMK có thể được xoay vòng để tăng cường bảo mật
Đừng bao giờ lưu trữ bí mật của bạn trong văn bản rõ ràng, đặc biệt là trong code của bạn
Các bí mật được mã hóa có thể được lưu trữ trong các code/ biến môi trường
KMS chỉ có thể giúp mã hóa tối đa 4KB dữ liệu cho mỗi lần gọi
Khóa mã hóa dữ liệu (DEK) là một loại khóa khác mà KMS có thể tạo ra, và chúng được tạo bằng cách sử dụng khóa chính của khách hàng.
Khóa này có thể được sử dụng để mã hóa dữ liệu có kích thước lớn hơn 4KB.
KMS không lưu trữ khóa mã hóa dữ liệu dưới bất kỳ hình thức nào, nó cung cấp cho bạn hoặc dịch vụ sử dụng KMS và sau đó sẽ loại bỏ nó. Lý do KMS loại bỏ nó là KMS không thực sự thực hiện mã hóa hoặc giải mã dữ liệu bằng cách sử dụng các khóa mã hóa dữ liệu. Bạn làm điều đó, hoặc dịch vụ sử dụng KMS làm điều đó. KMS không sử dụng khóa mã hóa dữ liệu cho bất kỳ thứ gì ngoài việc tạo ra chúng ban đầu.
Khi khóa mã hóa dữ liệu được tạo, KMS cung cấp cho bạn hai phiên bản của khóa mã hóa dữ liệu đó.
Đầu tiên, một phiên bản văn bản thuần túy của khóa (Plaintext) có thể được sử dụng ngay lập tức.
Ngoài ra, nó cũng cung cấp văn bản mật mã hoặc phiên bản được mã hóa của cùng một khóa mã hóa dữ liệu đó. Khóa mã hóa dữ liệu được mã hóa bởi khóa chính của khách hàng đã tạo ra nó. Vì vậy, trong tương lai, nó có thể được KMS giải mã bằng cách sử dụng cùng khóa chính của khách hàng đó, giả sử bạn có quyền.
Bạn tạo khóa mã hóa dữ liệu, bạn lấy phiên bản văn bản thuần túy của khóa đó và mã hóa văn bản thuần túy của bạn để tạo văn bản mật mã cho dữ liệu của bạn và sau đó bạn loại bỏ khóa mã hóa dữ liệu văn bản thuần túy. Điều đó sẽ để lại cho bạn dữ liệu được mã hóa và bản sao mã hóa của khóa mã hóa dữ liệu.
Cách thức hoạt động của KSM? API – Encrypt and Decrypt
Ví dụ đối với việc mã hoá mật khẩu. Mật khẩu thường rất nhỏ và do đó sẽ nhỏ hơn 4KB.
Chúng ta sẽ gọi tới dịch vụ KMS và sử dụng Client CLI/SDK để gọi API mã hoá, ý nói rằng chúng ta muốn mã hóa bí mật này bằng CMK mà bạn chỉ định và tự tạo.
Hãy nhớ CMK nằm trong dịch vụ KMS và chúng ta không bao giờ có quyền truy cập vào nó. Vì vậy, KMS sẽ kiểm tra quyền IAM của bạn với IAM để đảm bảo rằng chúng ta thực sự có quyền truy cập để sử dụng CMK này và sau đó KMS sẽ gửi lại cho bạn mật khẩu đã được mã hóa.
Bạn có mật khẩu đã được mã hóa và sau đó nói rằng bạn cần sử dụng nó nên bạn muốn giải mã nó. Sử dụng Client CLI/SDK để gọi API giải mã và bạn gửi mật khẩu đã được mã hóa tới KMS. Một lần nữa, KMS sẽ kiểm tra lại các quyền của IAM để đảm bảo bạn có thể giải mã và nếu mọi thứ tốt đẹp thì việc giải mã sẽ diễn ra trong dịch vụ KMS và bạn sẽ nhận lại được mật khẩu đã giải mã.


Hãy cùng xem xét một ví dụ cụ thể về cách thức hoạt động của CMK:
Tương tác đầu tiên của bạn với KMS sau khi chọn một region sẽ là tạo ra một khóa, cụ thể là Khóa chính của khách hàng - CMK
Bạn chạy hoạt động tạo khóa và một vùng chứa logic khóa chính của khách hàng (customer master key logical container) được tạo, chứa tài liệu khóa vật lý hỗ trợ. Đây là điều quan trọng mà KMS tạo ra, lưu trữ và quản lý.
Khóa chính của khách hàng không bao giờ được lưu trữ ở dạng liên tục khi không được mã hóa, những gì KMS sẽ làm là lấy khóa chính của khách hàng này và mã hóa nó trước khi nó được lưu trữ liên tục trên container.
Tương tác tiếp theo của bạn với KMS có thể là yêu cầu mã hoá một số dữ liệu
Để làm điều này, bạn thực hiện gọi Encrypt tới KMS, chỉ định khóa để sử dụng và cung cấp một số dữ liệu để mã hóa.
KMS chấp nhận dữ liệu và giả định rằng bạn có quyền sử dụng khóa chính của khách hàng bạn vừa chỉ định
KMS giải mã khóa đó và sử dụng nó để mã hóa dữ liệu văn bản thuần túy mà bạn đã cung cấp và sau đó trả lại dữ liệu đó cho bạn.
Tại một thời điểm nào đó trong tương lai, bạn sẽ muốn giải mã dữ liệu.
Để làm điều đó, bạn gọi một hoạt động giải mã, bao gồm dữ liệu mà bạn muốn giải mã.
KMS không cần bạn phải cho biết khóa chính của khách hàng sẽ sử dụng cho các hoạt động giải mã. Thông tin đó đã được mã hóa bên trong bản mã hoá của dữ liệu mà bạn muốn giải mã. Vì vậy, tất cả những gì bạn cần làm là gọi Decrypt và chuyển văn bản mã hoá vào KMS
Giả sử rằng bạn có quyền giải mã, KMS sẽ giải mã khóa chính của khách hàng, và sau đó nó sẽ sử dụng khóa này để giải mã bản mã và trả lại dữ liệu đó cho bạn.
Không có điểm nào trong toàn bộ quá trình này, khóa chính của khách hàng rời khỏi KMS, không có điểm nào nó được lưu trữ trong container ở dạng văn bản thuần túy. Bạn có thể có quyền tạo khóa để sử dụng nó để mã hóa dữ liệu và giải mã hoặc bạn chỉ có thể có một trong những quyền đó. Bạn có thể có quyền mã hóa dữ liệu, nhưng không giải mã dữ liệu hoặc bạn có thể có toàn quyền quản lý KMS
AWS CloudHSM là một mô-đun bảo mật phần cứng dựa trên đám mây (HSM = Hardware Security Module) cho phép bạn dễ dàng tạo và sử dụng các khóa mã hóa của riêng bạn trên AWS Cloud
KMS => AWS manages the software for encryption
CloudHSM => AWS provisions encryption hardware
Dedicated Hardware
Bạn quản lý hoàn toàn các khóa mã hóa của riêng mình (không phải AWS). AWS cung cấp phần cứng cho CloudHSM nhưng họ không có quyền truy cập vào nó. Trong trường hợp mất quyền truy cập vào thiết bị HSM, không có cách nào dễ dàng để lấy lại quyền truy cập vào thiết bị đó.
Thiết bị HSM có khả năng chống giả mạo, tuân thủ FIPS 140-2 Level 3
Truy cập thông qua Industry Standard APIs: PKCS#11, JCE (Java Cryptography) Extensions, CNG (Microsoft CryptoNG) Extensions
Trước đây, không có sự chồng chéo thực sự giữa CloudHSM và KMS, chúng hoàn toàn khác nhau. Nhưng gần đây, bạn có thể sử dụng một tính năng của KMS, được gọi là kho khóa tùy chỉnh (custom key store), và kho khóa tùy chỉnh này có thể sử dụng CloudHSM tích hợp với KMS.
Hỗ trợ cả mã hóa đối xứng và không đối xứng (SSL/TLS keys)
Không có bậc miễn phí
Phải sử dụng CloudHSM Client Software
Redshift hỗ trợ CloudHSM để mã hóa cơ sở dữ liệu và quản lý key
AWS sẽ quản lý phần cứng cho chúng ta, nhưng sau đó chúng ta sẽ được cung cấp một thiết bị CloudHSM và thiết bị đó dành riêng cho chúng ta.
Vì vậy, nếu chúng ta mất các khóa mã hóa, AWS không thể khôi phục thiết bị cho chúng ta. Đó thực sự là trách nhiệm của chúng ta, vì vậy hãy thận trọng khi sử dụng.
Để quản lý các khóa này và mọi thứ bạn cần có CloudHSM Client, ứng dụng này sẽ truy cập thiết bị CloudHSM để bạn quản lý khóa của mình, chúng sẽ có kết nối được mã hóa để chia sẻ thông tin an toàn .
Bạn có trách nhiệm quản lý mọi thứ bên trong thiết bị của mình, AWS không thể giúp bạn một khi đã cung cấp cho bạn phần cứng bạn cần. Do đó, xét về quyền IAM, điều duy nhất AWS có thể làm về IAM là giúp bạn tạo, mô tả và xóa cụm Cloud HSM của mình.
Bất cứ điều gì trong cụm CloudHSM của bạn, đó là trách nhiệm của riêng bạn. Vì vậy, bằng cách sử dụng phần mềm CloudHSM, bạn có thể quản lý các khóa ( tạo, đọc, cập nhật, xóa khóa) và cũng có thể quản lý người dùng có quyền truy cập vào các khóa này. Nó rất giống với một cơ sở dữ liệu mà AWS sẽ cung cấp cho bạn chính cơ sở dữ liệu đó và bạn phải quản lý những người dùng bên trong nó. Nó không hoàn toàn đúng như vậy, không hoàn toàn giống với Cloud HSM, nhưng bạn có thể hiểu được. Bạn phải quản lý tất cả bảo mật trong thiết bị của mình và AWS không thể giúp bạn điều đó.

Các thiết bị CloudHSM được triển khai trên VPC do AWS quản lý
Chúng được đưa vào các VPC do khách hàng quản lý bằng cách sử dụng ENI (Elastic Network Interface)
HSM theo mặc định không phải là một thiết bị có tính khả dụng cao. Để đảm bảo HA, chúng ta cần triển khai nhiều thiết bị HSM trên nhiều AZ và định cấu hình chúng thành một cụm
Một ứng dụng khách CloudHSM Client cần được cài đặt trên các EC2 instance, sẽ được định cấu hình để truy cập CloudHSM
Trong khi AWS cung cấp các thiết bị HSM, chúng ta với tư cách là khách hàng sẽ chịu trách nhiệm quản lý các khóa
AWS có thể cung cấp các bản cập nhật phần mềm trên thiết bị HSM, nhưng những bản cập nhật này sẽ không ảnh hưởng đến phần lưu trữ mã hóa
Theo mặc định, không có tích hợp gốc (native integration) giữa CloudHSM với dịch vụ AWS, điều này có nghĩa là không thể sử dụng CloudHSM cho S3 SSE, chẳng hạn. CloudHSM có thể được sử dụng để mã hóa phía máy khách trước khi tải dữ liệu lên S3
CloudHSM có thể được sử dụng để giảm tải quá trình xử lý SSL / TLS cho các máy chủ web
Cơ sở dữ liệu Oracle từ RDS có thể thực hiện Mã hóa dữ liệu minh bạch (Transparent Data Encryption - TDE) bằng cách sử dụng CloudHSM
CloudHSM có thể được sử dụng để bảo vệ các khóa riêng tư cho Tổ chức phát hành chứng chỉ (Certificate Authority - CA)
CloudHSM vs KMS
Feature
AWS KMS
AWS CloudHSM
Tenancy
Uses multi-tenant key storage
Single tenant key storage, dedicated to one customer
Keys
Keys owned and managed by AWS
Customer managed Keys
Encryption
Supports only symmetric key encryption
Supports both symmetric and asymmetric encryption
Cryptographic Acceleration
None
SSL/TLS Acceleration Oracle TDE Acceleration
Key Storage and Management
Accessible from multiple regions. Centralized management from IAM
Deployed and managed from a customer VPC. Accessible and can be shared across VPCs using VPC peering
Free Tier Availability
Yes
No
Nếu FIPS 140-2 level 3 được đề cập, thì đó là đám mây HSM, còn FIPS 140-2 level 2 thì là KMS
Nếu tích hợp với AWS được đề cập, thì có lẽ nó sẽ là KMS, còn nếu bạn cần sử dụng các API mã hóa Tiêu chuẩn Công nghiệp, thì đó có thể là CloudHSM.