2009-10-17 27 views
46

Có ai có kinh nghiệm thực tế hoặc tham chiếu cho một chương trình thực hiện một lược đồ quản lý khóa tuân theo tiêu chuẩn bảo mật PCI DSS không?Làm cách nào để quản lý khóa cá nhân đúng cách

Rõ ràng có khá nhiều triển khai xung quanh vì số lượng công ty tuân thủ PCI DSS nhưng cố gắng tìm chi tiết về chúng là khó khăn. Khi nó xuống để lưu trữ dữ liệu riêng tư, cuộc thảo luận thường dừng lại ở đó sử dụng thuật toán mã hóa nào. Sau đó thường có một tuyên bố về cách lưu trữ khóa cá nhân một cách thích hợp nhưng không thảo luận về các cách thực tế để thực hiện hoặc những thứ như thay đổi định kỳ khóa hoặc cung cấp khóa cho các ứng dụng, vv. 3,5 và 3,6 của chuẩn PCI DSS.

3.5.2 Lưu khóa mã hóa an toàn ở các vị trí và biểu mẫu ít nhất có thể.

3.6.a Xác minh sự tồn tại của các thủ tục quản lý khóa cho các khóa được sử dụng để mã hóa dữ liệu của chủ thẻ. Lưu ý: Có nhiều tiêu chuẩn ngành để quản lý khóa có sẵn từ nhiều tài nguyên khác nhau, bao gồm NIST, có thể tìm thấy tại http://csrc.nist.gov.

3.6.4 Xác minh rằng các quy trình quản lý khóa được thực hiện để yêu cầu thay đổi khóa định kỳ ít nhất hàng năm.

Tôi đã có một cái nhìn tại các NIST Cryptographic publications như tài liệu yêu cầu PCI DSS gợi ý nhưng ngoài việc ghi chú gần đây của một Cryptographic Key Management Workshop có vẻ không được nhiều có theo cách của chương trình thực hiện được thật hay tiêu chuẩn.

Như những gì tôi đang cố gắng để làm điều đó là không được phép:

  1. Store passwords + muối là một cách băm để xác thực,
  2. Chọn một thuật toán symmteric mạnh mẽ để mã hóa dữ liệu,
  3. Tránh cần để lưu trữ dữ liệu riêng tư ngay từ đầu.
  4. Tránh sự cần thiết của quản lý chủ chốt với các cơ chế khác: bảo mật vật lý, an ninh cơ sở dữ liệu, con rồng và trình thuật sĩ, vv

Tất cả trong số đó là mối quan tâm hợp lệ nhưng trong trường hợp này không phải là câu trả lời. Các hạt và bu lông của các yêu cầu của tôi là trong một câu hỏi SO khác nhau .Net Design pattern for storing and retrieving sensitive per user data nhưng tất cả đều nắm chặt xuống để quản lý khóa do đó câu hỏi này tinh tế hơn.

+0

Tò mò để biết bạn đã làm gì? Tôi đã tìm kiếm về điều này nhưng không thể tìm thấy mã khóa hoặc mã mẫu hợp lệ cho NIST SP 800-22. Webapp của tôi là trong php và thậm chí một triển khai thương mại sẽ giúp đỡ. – 3zzy

+0

Tôi không cần phải lưu trữ dữ liệu của chủ thẻ nhưng vẫn cần mức mã hóa ứng dụng. Đối với Windows, tôi đã sử dụng chứng chỉ và khóa RSA được lưu trữ trong kho lưu trữ chứng chỉ Windows làm khóa chính cho khóa ứng dụng được mã hóa được lưu trữ trong tệp cấu hình. Đối với một số cơ sở dữ liệu MySQL Linux, tôi đã sử dụng LUKS nơi hệ thống tệp chỉ có thể được gắn sau khi cụm từ mật khẩu được nhập theo cách thủ công. – sipwiz

Trả lời

33

Tôi quen với nỗi đau bạn đang trải qua. Chúng tôi đã phải vật lộn để cập nhật một hệ thống EFT cũ hướng tới việc tuân thủ PCI. Quản lý khóa chắc chắn là (từ quan điểm phần mềm của tôi) là phần khó khăn nhất.

Tôi nghĩ rằng tôi cũng tình cờ gặp số NIST Recommendations for Key Management mà Martin đã đăng và vô cùng thất vọng với việc thiếu các ví dụ cụ thể.

ANSI X9.17 - Financial Institution Key Management có lẽ là phù hợp nhất với nhu cầu của bạn, với PCI-DSS. Chúc may mắn đọc nó mặc dù, tài liệu là một bộ sưu tập lớn của TLA của mà tôi biết tôi chắc chắn đấu tranh để đọc. (X9.17 được cập nhật hàng năm và phiên bản mới nhất hiện tại là: NIST SP 800-57 Pt. 1 Rev. 4)

Khi thất vọng trở nên tuyệt vọng, tôi tình cờ gặp The Electronic Money Mill là một câu chuyện hư cấu, với số lượng tham khảo kỹ thuật có liên quan. Chapter 17 thảo luận về X9.17 và có thể giúp bạn hiểu.

Từ tất cả tài liệu tham khảo này, tôi đã thiết kế một hệ thống quản lý chính mà kiểm toán viên của chúng tôi hài lòng. Các tài liệu thiết kế khá dài, nhưng tóm lại ý tưởng là bạn có Khóa mã hóa dữ liệu được bảo vệ bằng Khóa mã hóa khóa và Khóa mã hóa khóa được lưu trữ trên một hộp vật lý riêng biệt, được bảo vệ bằng Khóa chính.

Triển khai của tôi là có ứng dụng Máy chủ khóa chạy trên hộp cửa sổ. Ứng dụng này yêu cầu mục nhập của hai 'khóa máy chủ khóa' riêng biệt trước khi nó có thể được sử dụng. Các khóa này sẽ chỉ được biết đến với các quản trị viên máy chủ khóa. Các phím này được xor'd với nhau để tạo ra Master Key, được lưu trữ chỉ trong bộ nhớ được bảo vệ trong khi ứng dụng đang chạy. Sau đó, ứng dụng có thể tự động tạo Khóa mã hóa mạnh mẽ mã hóa, được lưu trữ dưới dạng mã hóa bằng Khóa chính.

Các ứng dụng có nhu cầu mã hóa sẽ yêu cầu Khóa mã hóa khóa từ Máy chủ khóa. KEK được ứng dụng sử dụng để mã hóa/giải mã Khóa mã hóa dữ liệu, có thể được lưu trữ an toàn với dữ liệu ứng dụng.

Chúc may mắn. Tôi hy vọng bạn cũng tìm thấy nó một thách thức thú vị!

+0

May mắn là tôi không phải thực hiện tiêu chuẩn PCI DSS, nó chỉ là một ví dụ trong câu hỏi của tôi để tôi nhận được câu trả lời với các sơ đồ quản lý khóa mạnh mẽ. Bí quyết dường như là làm thế nào để có được chìa khóa mã hóa khóa vào ứng dụng. Tôi không muốn có một máy chủ riêng biệt cho nó như vậy đang nghĩ đến việc nhận được các ứng dụng để tạo ra một dấu nhắc cho nó hoặc có thể ssh để các ứng dụng để thiết lập nó. – sipwiz

+0

Âm thanh tốt. Hộp riêng biệt chỉ là một yêu cầu nếu bạn muốn duy trì KEK và dự định bảo vệ khỏi tình huống mà ai đó lấy một bản sao của toàn bộ dữ liệu ứng dụng + (chẳng hạn như đi bộ với hộp) nghĩa là – PaulG

+6

Nhà máy tiền điện tử không xuất hiện có sẵn tại liên kết ban đầu nữa. FWIW, tôi đã tìm thấy bản sao PDF của nó trong Máy Wayback: http://web.archive.org/web/20070712172633/http://www.msen.com/fievel/mmill/book.e1.pdf –

6

Bạn đã xem NIST SP 800-57, Đề xuất về quản lý khóa?

+0

Liên kết tốt, thx, đó là tiêu chuẩn refence mà tôi đã theo đuổi. Bây giờ tôi có thể tìm thấy ví dụ về cách các bộ phận quan trọng được triển khai ... – sipwiz

+0

@sipwiz: Tôi không biết. Tôi đoán là ai đó sẽ bán cho bạn những bộ phận quan trọng này cho rất nhiều tiền; bạn có thể hỏi NIST liệu họ có danh sách các công ty sẽ làm như vậy hay không. –

+0

Tôi đã tìm kiếm trên trang này nhưng không thể tìm thấy mã khóa hoặc mã mẫu hợp lệ cho NIST SP 800-22. Webapp của tôi là trong php và thậm chí một triển khai thương mại sẽ giúp đỡ. – 3zzy

Các vấn đề liên quan