Gần đây phải đọc lại về các dịch vụ mã hoá này, mình chợt nhận ra trong bài này có vài điểm chưa chính xác về cách hoạt động và tính năng. Cụ thể hơn có thể đọc bài , tuy nhiên về cơ bản ý tưởng “Ai là người sở hữu?” cũng như “Mô hình chia sẻ trách nhiệm” vẫn có ý nghĩa.

Một trong những câu hỏi thường gặp khi nói về mã hóa trên các dịch vụ cloud như AWS đó là:

  • Ai là người sở hữu encrypt key trên AWS?
  • AWS có thể truy cập vào encrypt key của tôi hay không?

Đây là một câu hỏi cực kỳ quan trọng mà các tổ chức lớn muốn dịch chuyển hệ thống của mình từ on-premise lên Cloud đặt ra và cần câu trả lời.

Các tổ chức chính phủ hoặc các công ty làm về mảng thanh toán khá là e ngại khi phải đặt hệ thống của mình trong tay người khác vì họ không tin tưởng dữ liệu của họ an toàn, chính vì thế họ thường tự xây dựng hạ tầng. Tuy nhiên việc tự xây dựng hạ tầng lại gặp nhiều hạn chế khác về thời gian từ khi purchase server tới lúc server có thể phục vụ user -> việc scaling chậm chạp.

Trả lời được câu hỏi này, ta sẽ giải đáp được câu hỏi liệu các nhà cung cấp dịch vụ cloud có thể truy cập các dữ liệu đã mã hóa của tổ chức trên hạ tầng cloud hay không?

AWS cung cấp 2 dịch vụ để quản lý encrypt key đó là:

  • AWS Cloud HSM
  • AWS Key Management Service (KMS)

Để trả lời cho câu hỏi ai sở hữu encrypt-key trên AWS, nó tùy thuộc vào dịch vụ mà bạn sử dụng.

Giải thích chút xíu về HSM (physical hardware security module)[1]:

  • Là thiết bị phần cứng được thiết kế đặc biệt chuyên dụng cho tính năng security.
  • Là thiết bị có thể sinh cặp khóa bất đối xứng và bảo vệ khóa bí mật trong nó.
  • Kháng được đầy đủ các hình thức tấn công vật lí như:
    • Tấn công trực tiếp đến phần cứng để đọc, dịch ngược các hàm trong chip điện tử để tìm hiểu thuật toán.
    • Tấn công bằng dung môi hóa học, chất khắc axit, biến màu (một kỹ thuật tương tự khắc axit nhưng dựa vào sự khác nhau trong tốc độ khắc axit) nhằm bóc tách lớp vỏ đóng gói bên ngoài, làm lộ khác biệt về vật chất nhằm xác định đâu là bit 0/1 trong bộ nhớ ROM.
    • Tấn công dùng kính hiển vi hạt điện tử quét và quang học để phân tích quang học và dịch ngược. Nhằm làm lộ ra các khu vực đang hoạt động ….
    • Tấn công đặt trạm thử, đặt các kim dò thử vào các dây dẫn bất kỳ trên chip điện tử đã lột vỏ để tạo ra một kênh truyền mới, nhằm truyền dữ liệu ra bên ngoài. Dữ liệu trao đổi giữa CPU và các bộ nhớ có thể bị thu chặn và khôi phục đầy đủ (mã thực thi chương trình hoặc dữ liệu chương trình, bao gồm cả khóa bí mật).
    • Tấn công sử dụng chùm hạt ion tập trung để bắn các hạt ion nhằm thực hiện các thay đổi trong vi mạch. Các ngắt mạch của các vi mạch có thể được nối lại hay các tín hiệu ngầm bên trong có thể được truyền ra các dây dẫn bên ngoài.
  • Tuân theo các tiêu chuẩn nghiêm ngặt như FIPS 140-2.

=> Tóm lại thì HSM có thể nghĩ nó tương tự như một USB chứa key, nhưng chống được các tấn công vật lý nhằm bảo về dữ liệu nó chứa đựng.

Quay trở lại với dịch vụ CloudHSM của AWS, bản chất cũng là HSM bình thường nhưng được cung cấp bởi AWS. Nó được đặt ở một AWS region nhưng chỉ bạn mới có quyền truy cập vào key server. Amazon tuyên bố rõ ràng là với dịch vụ CloudHSM thì chỉ duy nhất bạn mới có quyền truy cập key. Tất nhiên Amazon có physical access vào HSM vì nó được đặt ở DataCenter của họ, nhưng ta có thể phần nào tin vào tuyên bố của AWS.

CloudHSM là dịch vụ cung cấp phần cứng đạt chuẩn FIPS 140-2 cấp độ 3, dễ dàng quản lí, mở rộng, tương thích với các dịch vụ khác của AWS và tương thích với các HSM trên thị trường cũng như các API tiêu chuẩn của ngành (thư viện PKCS#11, Java Cryptography Extensions (JCE) và Microsoft CryptoNG (CNG)).

Với AWS KMS, dịch vụ quản lý key được back bởi Amazon hardware security module. Nghĩa là Amazon sẽ tạo ra một key, và key này sẽ chỉ được duy nhất bạn sử dụng, key này được bảo vệ (encrypt) bởi HSM của Amazon. Khi bạn tạo một key trên KMS, nó gọi là CMK (Customer Master Key), CMK là một cấu trúc dữ liệu gồm:

  • Symmetric key.
  • Metadata về symmetric key đó.

Quay trở lại câu hỏi “Ai là chủ sở hữu của CMK?”, do CMK được bảo vệ bởi Amazon HSM nên bạn và Amazon sẽ chia sẻ quyền sở hữu key này và cả hai đều có thể có quyền access vào raw key.

AWS KMS giới thiệu một tính năng đó là “Bring Your Own Key”, điều này cũng không thay đổi việc Amazon có chung quyền sở hữu key với bạn, điểm khác biệt là key sẽ được tạo ra bên ngoài hệ thống AWS, nhưng khi upload lên KMS, nó vẫn được bảo vệ bởi Amazon HSM nên Amazon chia sẻ quyền sở hữu key.

Tóm tắt lại thì:

  • với AWS CloudHSM, cung cấp dịch vụ mà encrypt-key chỉ duy nhất bạn có quyền truy cập.
  • Với AWS KMS, cung cấp dịch vụ mà encrypt-key được truy cập bởi cả bạn và Amazon.

Và nó cũng tương tự với bất cứ dịch vụ cloud nào chứ không chỉ riêng AWS.

Vậy tại sao chuyện này lại quan trọng?

Ở nhiều quốc gia, các cơ quan thực thi pháp luật và cơ quan an ninh quốc gia có thẩm quyền buộc các nhà cung cấp dịch vụ cloud phải trao đổi thông tin/dữ liệu liên quan đến khách hàng. Ở US thì điều trên là sự thật, các cơ quan thực thi pháp luật hoặc cơ quan an ninh quốc gia có thể request các dịch vụ cloud để truy cập các thông tin của khách hàng mà cấm các dịch vụ cloud được thông báo tới khách hàng. Và Amazon, theo lẽ tự nhiên phải tuân theo luật của quốc gia mà họ cung cấp dịch vụ. Điều đó nghĩa là encrypt-key của bạn trên AWS KMS có thể bị trao đổi với các cơ quan pháp luật mà bạn không biết. Bạn có thể không thích chuyện này (và hệ thống pháp luật của đất nước bạn) nhưng đó mới là thực tế.

Từ những giải thích trên, bạn sẽ thấy việc lưu trữ an toàn trên các dịch vụ cloud thật không dễ dàng.

  • Nếu không mã hóa (filesystem encrypt, tương tự FileVault hoặc LUKS), việc nhà cung cấp dịch vụ truy cập dữ liệu của bạn là khá dễ dàng. Chỉ có thể tin vào sự uy tín của nhà cung cấp.
  • Nếu mã hóa, nhưng lại lưu chính chìa khóa để giải mã trên dịch vụ của nhà cung cấp đó thì cũng không khác lắm với việc không mã hóa, dù việc access-key có thể phức tạp, rắc rối hơn. Tuy nhiên nếu bị compromise ở level account hoặc toàn bộ system thì vấn đề mất dữ liệu chỉ còn là thời gian.
  • Nếu mã hóa, nhưng lưu chìa khóa ở nơi khác thì … quy trình phức tạp, phát sinh nhiều hệ thống, quản lý kho khăn …

=> Tóm lại các giải pháp security nên implement ở mindset của người vận hành, phát triển hệ thống.

Lược dịch từ bài viết Who owns my encryption key in the Amazon AWS cloud? có bổ sung, tham khảo thêm các tài liệu trên internet.