Điểm:0

Cách tốt nhất để mã hóa dữ liệu nhạy cảm trên máy chủ bằng HSM và khóa đối xứng

lá cờ kg

Tôi cần lưu trữ dữ liệu nhạy cảm (như ảnh của khách hàng) trong cơ sở dữ liệu SQL theo cách an toàn nhất trong trường hợp vi phạm bảo mật. Dữ liệu sẽ không được khách hàng truy cập, chỉ truy cập vào các quy trình nội bộ thực hiện một số xác thực. Khách hàng không có bất kỳ thông tin đầu vào nào như mật khẩu, họ chỉ cần đăng ký với chúng tôi và chúng tôi theo dõi dữ liệu của họ. Không thể mã hóa phía máy khách trong thiết lập hiện tại, đó là lý do tại sao chúng tôi cần mã hóa phía máy chủ và chúng tôi cũng có một HSM trong mạng riêng của mình với các khóa riêng.

Một ý tưởng là sử dụng mã hóa khóa đối xứng và lưu trữ khóa đó cục bộ.Vấn đề với giải pháp đó là nếu kẻ tấn công có quyền truy cập vào máy chủ và cơ sở dữ liệu, hắn có thể dễ dàng lấy được khóa đó và giải mã dữ liệu.

Một ý tưởng khác là sử dụng mô-đun HSM mà công ty có và mã hóa khóa đối xứng bằng khóa chung HSM. Khi máy chủ cần xử lý dữ liệu, nó sẽ gửi khóa mã hóa đến HSM và chỉ xử lý khóa đối xứng trong bộ nhớ. Vấn đề với giải pháp đó là tôi cần lưu trữ thông tin đăng nhập kết nối HSM và nếu kẻ tấn công lấy được thông tin đó và giải mã khóa đối xứng, thì toàn bộ cơ sở dữ liệu sẽ bị xâm phạm.

Nó có đủ an toàn để tạo các khóa đối xứng ngẫu nhiên cho mỗi tệp chúng tôi mã hóa, sau đó mã hóa khóa đối xứng bằng khóa chung HSM và lưu trữ cả dữ liệu được mã hóa và khóa sym được mã hóa không? Và nếu vậy, cách tốt nhất để lưu trữ nó là gì? Một chuỗi pkcs7 base64?

Điểm:0
lá cờ us

Vì đây là một SE lý thuyết nhiều hơn, tôi sẽ thực hiện một cách tiếp cận lý thuyết chung hơn cùng với một số chi tiết cụ thể. Lúc đầu, bạn phải xác định một mô hình mối đe dọa. Để xác định nó, có một loạt các câu hỏi để tự hỏi mình.

  1. Tại sao các diễn viên của bạn? Một cách tiếp cận dễ dàng sẽ là nếu bạn xem xét ba tác nhân sau: máy chủ, cơ sở dữ liệu, HSM. Bạn cũng có thể xem xét nhiều diễn viên hơn, ví dụ: cân nhắc việc www người dùng máy chủ của bạn chạy trên và nguồn gốc người dùng, bạn có thể làm tương tự với cơ sở dữ liệu, v.v.
  2. Các tác nhân này được kết nối với nhau như thế nào. Tất nhiên, trong trường hợp của bạn, tôi nghĩ nó là như thế này
   HSM <-> Máy chủ <-> Cơ sở dữ liệu
  1. Cái nào trong số chúng có thể được truy cập bởi kẻ tấn công? Liệu kẻ tấn công có quyền truy cập vào máy chủ, cơ sở dữ liệu, HSM hoặc bất kỳ sự kết hợp cụ thể nào trong số này không?
  2. Bây giờ, hãy xem xét trường hợp xấu nhất khi máy chủ của bạn bị kẻ tấn công làm hỏng, điều đó có nghĩa là cả HSM và Cơ sở dữ liệu cũng có thể (về mặt lý thuyết) bị hỏng. Sau đó, theo ý kiến ​​​​của tôi, giải pháp tốt nhất của bạn là mã hóa dữ liệu của bạn ở phía khách hàng.Ngoài ra, bạn có thể sẽ muốn có một dẫn xuất khóa đối xứng hoặc không đối xứng từ đầu vào riêng tư của người dùng của bạn (ví dụ: nó phụ thuộc vào mật khẩu của anh ta) để chỉ anh ta mới có thể giải mã chúng. Protonmail đang sử dụng cơ sở hạ tầng tương tự, bạn có thể xem qua đây tại whitepaper của họ.

Một vài lưu ý khác. Ngay cả khi bạn sử dụng HSM để mã hóa/giải mã các tệp của mình, trong trường hợp máy chủ bị hỏng, vẫn không tồn tại kênh liên lạc an toàn từ HSM đến Máy khách.

Tôi hy vọng tôi đã giúp bạn một chút, bởi vì có rất nhiều tình huống bạn phải xem xét và không giải thích chi tiết về tất cả chúng.

F.C. avatar
lá cờ kg
Cảm ơn bạn đã trả lời. Tôi đã cập nhật câu hỏi để cung cấp thêm ngữ cảnh. Về cơ bản, máy khách gửi dữ liệu một lần và từ thời điểm đó trở đi, chỉ các quy trình nội bộ mới sử dụng dữ liệu đó. Kiểu tấn công mà tôi đang cố gắng chống lại là trong trường hợp một kẻ tấn công giành được quyền truy cập vào mạng riêng, Trong trường hợp đó, anh ta sẽ lấy được khóa đối xứng nếu nó được lưu trữ trong tệp .env chẳng hạn. Trong trường hợp tôi sử dụng HSM để mã hóa khóa đối xứng, tôi phải lưu trữ thông tin xác thực truy cập HSM nhưng khóa riêng tư sẽ không bao giờ bị lộ, chỉ có các phương thức giải mã.
JAAAY avatar
lá cờ us
Ok, vì vậy bạn muốn xử lý dữ liệu, nhưng đồng thời giữ an toàn. Nếu tôi hiểu kịch bản của bạn, bạn không thể mã hóa dữ liệu và giải mã dữ liệu đó để xử lý chúng rồi mã hóa lại dữ liệu có thể bị thay đổi cùng với kết quả của chúng vì điều này không an toàn trong mô hình mối đe dọa của bạn?
F.C. avatar
lá cờ kg
Dữ liệu được giải mã sẽ chỉ có trong bộ nhớ trong một khoảng thời gian ngắn. Điều tôi muốn biết là cách tốt nhất để mã hóa nó trong khi nghỉ ngơi trong cơ sở dữ liệu
JAAAY avatar
lá cờ us
Vì vậy, bạn muốn xử lý nó trong một thời gian ngắn, sau đó lưu trữ chúng vào cơ sở dữ liệu? Nhưng bao lâu thì bạn phải truy xuất chúng để xử lý?
F.C. avatar
lá cờ kg
Ý tưởng là lưu trữ nó và cuối cùng một quy trình tự động sẽ duyệt qua từng dữ liệu khách hàng, thực hiện các hành động nhỏ như so sánh. Sau quá trình đó, dữ liệu sẽ không được xử lý nữa, chỉ được lưu trữ trừ một số trường hợp rất hiếm khi cần thiết. Tôi nghĩ rằng tôi đã quên đề cập đến dữ liệu của anh ấy cần được mã hóa nhanh chóng.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.