Trước hết, tôi sẽ không đề cập đến bản thân mình như một chuyên gia bảo mật, nhưng tôi đã ở vào vị trí phải trả lời câu hỏi này. Điều tôi phát hiện ra làm tôi ngạc nhiên một chút: Không có thứ gọi là hệ thống hoàn toàn an toàn . Chà, tôi đoán một hệ thống hoàn toàn an toàn sẽ là một hệ thống mà tất cả các máy chủ đều bị tắt :)
Một người làm việc với tôi tại thời điểm đó đã mô tả việc thiết kế một hệ thống an toàn về mặt nâng thanh cho những kẻ xâm nhập. Vì vậy, mỗi lớp bảo mật làm giảm cơ hội cho một cuộc tấn công.
Ví dụ, ngay cả khi bạn có thể bảo mật hoàn toàn khóa riêng, hệ thống không hoàn toàn an toàn. Nhưng, sử dụng chính xác các thuật toán bảo mật và được cập nhật với các bản vá làm tăng thanh. Nhưng, vâng, một siêu máy tính đủ mạnh và có đủ thời gian có thể phá vỡ mã hóa. Tôi chắc chắn tất cả những điều này đã được hiểu, vì vậy tôi sẽ nhận lại câu hỏi.
Câu hỏi rất rõ ràng nên trước tiên tôi sẽ cố gắng giải quyết từng điểm của bạn:
Nói rằng khóa được bảo vệ bởi mô hình bảo mật của hệ thống tập tin; Nhưng những gì về siêu nhân (độc hại), hoặc nền tảng không cung cấp độ trung thực như vậy?
Có, nếu bạn sử dụng một cái gì đó như Windows Key Store hoặc mật khẩu TLS được mã hóa mật khẩu, bạn sẽ tiếp xúc với người dùng có mật khẩu (hoặc quyền truy cập) vào các khóa riêng. Nhưng, tôi nghĩ rằng bạn sẽ đồng ý rằng tăng thanh. Các ACL hệ thống tệp (nếu được triển khai đúng cách) cung cấp mức độ bảo vệ khá tốt. Và bạn đang ở vị trí để cá nhân bác sĩ thú y và biết siêu người dùng của bạn.
Hoặc khóa được mã hóa cứng thành nhị phân phần mềm, nhưng nó luôn có thể được dịch ngược và phần mềm nguồn mở hoặc mã được giải thích thì sao?
Có, tôi đã thấy các khóa mã hóa cứng trong nhị phân. Một lần nữa, điều này làm tăng thanh một chút. Ai đó tấn công hệ thống này (nếu là Java) phải hiểu rằng Java tạo mã byte (v.v.) và phải hiểu cách dịch ngược nó đang đọc nó. Nếu bạn đang sử dụng ngôn ngữ ghi trực tiếp vào mã máy, bạn có thể thấy rằng ngôn ngữ này sẽ tăng thanh cao hơn một chút. Nó không phải là một giải pháp bảo mật lý tưởng, nhưng có thể cung cấp một số mức độ bảo vệ.
Nếu khóa được tạo, một thuật toán như vậy sẽ cần phải có tính xác định (có lẽ) và sau đó cùng một vấn đề áp dụng cho hạt giống.
Có, về cơ bản, thuật toán trở thành thông tin khóa riêng để tạo khóa riêng. Vì vậy, nó sẽ cần phải được bảo vệ.
Vì vậy, tôi nghĩ rằng bạn đã xác định được một vấn đề cốt lõi với bất kỳ chính sách bảo mật, quản lý khóa nào . Có một chính sách quản lý quan trọng tại chỗ là trung tâm để cung cấp một hệ thống an toàn. Và, nó là một chủ đề khá rộng .
Vì vậy, câu hỏi là, hệ thống của bạn (và, do đó, khóa riêng) cần phải an toàn đến mức nào? Làm thế nào cao, trong hệ thống của bạn, thanh cần phải được nâng lên?
Bây giờ, nếu bạn sẵn sàng trả tiền, có một số người tạo ra giải pháp cho việc này. Chúng tôi đã kết thúc bằng cách sử dụng một HSM (Module bảo mật phần cứng) . Nó về cơ bản là một máy chủ chống giả mạo có chứa một khóa trong phần cứng. Khóa này sau đó có thể được sử dụng để tạo các khóa khác được sử dụng để mã hóa. Ý tưởng ở đây là (nếu được cấu hình đúng), khóa không bao giờ rời khỏi HSM. HSM chi phí rất nhiều . Nhưng ở một số doanh nghiệp (bảo vệ dữ liệu thẻ tín dụng cho biết), chi phí vi phạm cao hơn nhiều. Vì vậy, có một sự cân bằng.
Nhiều HSM sử dụng thẻ chính từ bảo trì và quản trị các tính năng. Một đại biểu gồm các thẻ khóa (5 trên 9 cho biết) phải được đưa vào máy chủ để thay đổi khóa. Vì vậy, điều này làm tăng thanh khá cao bằng cách chỉ cho phép vi phạm nếu một đại biểu siêu người dùng thông đồng.
Có thể có các giải pháp phần mềm ngoài đó cung cấp các tính năng tương tự như HSM nhưng tôi không biết chúng là gì.
Tôi biết điều này chỉ đi một số cách để trả lời câu hỏi, nhưng tôi hy vọng điều này sẽ giúp.