Điểm:-1

Chia sẻ tệp được mã hóa với khóa được tạo một cách xác định từ mật khẩu người dùng

lá cờ tr

Thông tin nền:

Tôi cần mã hóa tệp trong không gian làm việc của doanh nghiệp với nhiều người dùng. Mục tiêu là mã hóa tệp trực tiếp từ trình duyệt để lưu trên máy chủ và mỗi người dùng có thể giải mã tệp để xem.

Giải pháp kỹ thuật:

Tạo một khóa Kw được tạo ngẫu nhiên cho không gian làm việc để mã hóa tệp bằng AES. Khóa này sẽ không bao giờ được lưu trữ trong cơ sở dữ liệu hoặc trong phiên người dùng.

Đối với mỗi người dùng, hãy tạo một khóa "Ku" khác từ mật khẩu người dùng bằng Hàm dẫn xuất khóa như PBKDF2 bằng cách sử dụng id người dùng làm muối. Sau đó mã hóa khóa "Kw" bằng khóa "Ku" bằng AES và lưu khóa mã hóa "Kw" này vào cơ sở dữ liệu cùng với thông tin người dùng.

Sau đó, tại mỗi lần đăng nhập của người dùng, hãy tạo lại khóa "Ku" từ mật khẩu người dùng bằng Hàm dẫn xuất khóa như PBKDF2. Truy xuất khóa đã mã hóa "Kw" và giải mã bằng Ku. Sau đó sử dụng Kw để giải mã/mã hóa tệp.

Giải pháp này có đủ an toàn để lưu trữ các tệp nhạy cảm như tài liệu y tế không?

Cảm ơn trước cho phản hồi của bạn.

DannyNiu avatar
lá cờ vu
Xem lại thiết kế sơ đồ đầy đủ là lạc đề. Tuy nhiên, để hữu ích, bạn có thể muốn xem xét lại khung ký quỹ khóa (mã hóa đối xứng) của mình, bởi vì đây dường như là bản chất của những gì giải pháp của bạn đạt được. Đặc biệt là khi bạn ** một cách chắc chắn** lấy được chìa khóa.
Gravity avatar
lá cờ tr
Cám ơn phản hồi của bạn ! Nó không thực sự là một đánh giá về thiết kế mà là một lời khuyên nếu tôi bỏ lỡ điều gì đó "lớn" có thể làm giảm nghiêm trọng tính bảo mật vì tôi không phải là chuyên gia bảo mật/mật mã.
DannyNiu avatar
lá cờ vu
Tôi vừa nhận thấy bạn nói "tài liệu chăm sóc sức khỏe". Tại sao bạn lại tìm kiếm lời khuyên từ một diễn đàn Internet công cộng chứ không phải từ một công ty bảo mật lâu đời như RSA, Security Innovation, OnBoard Security? Tôi nghĩ ra những cái tên này vì RSA được phát minh bởi những người đồng sáng lập RSA và Đổi mới bảo mật và Bảo mật trên bo mạch đã sở hữu NTRU một thời gian.
Gravity avatar
lá cờ tr
Tôi lấy ví dụ về tài liệu chăm sóc sức khỏe chỉ để mô tả nhưng nó có thể là bất kỳ tài liệu nhạy cảm nào (đối với quan điểm của người dùng) mà người dùng muốn "mã hóa"
Điểm:0
lá cờ vu

Trước tiên hãy phá vỡ điều này.

Đầu tiên, chúng ta có các phím sau:

  • $K_w$ - khóa không gian làm việc để mã hóa tệp.
  • $K_u$ - khóa cho mỗi người dùng để ký quỹ $K_w$.

Thứ hai, cũng có những biến ẩn.

  • Các Muối để tạo $K_u$ từ mật khẩu người dùng. Các CỜ ĐỎ LỚN ở đây là OP đang lấy các giá trị của nó từ ID người dùng, trong thực tế, giá trị này phải là ngẫu nhiên và được lưu.

  • Các nonce đối với thuật toán mã hóa tệp - Để mã hóa tệp, bạn cần có chế độ hoạt động của mật mã khối hoặc mật mã luồng, thuật toán mã hóa như vậy cần một nonce để đảm bảo an toàn khi sử dụng cùng một khóa nhiều lần.Lý tưởng nhất là thuật toán mã hóa phải được xác thực - nghĩa là có thẻ MAC được gắn vào bản mã hoặc chỉ sử dụng thẳng thuật toán AEAD, chẳng hạn như AES-GCM hoặc ChaCha20-Poly1305.

Bây giờ chúng ta hãy xem lại câu hỏi.

Tạo một khóa Kw được tạo ngẫu nhiên cho không gian làm việc để mã hóa tệp bằng AES.

Không có gì nghiêm trọng ngoài khả năng tải nặng lên CSPRNG ở đây.

... và lưu khóa mã hóa "Kw" này vào cơ sở dữ liệu cùng với thông tin người dùng.

Điều này có nghĩa là bạn mã hóa $K_w$ với $K_u$ và ký quỹ được mã hóa $K_w$ trong cơ sở dữ liệu.

Gravity avatar
lá cờ tr
Cảm ơn phản hồi của bạn. Vì vậy, trước tiên, đừng sử dụng User ID làm muối mà hãy tạo một muối ngẫu nhiên và lưu nó cùng với thông tin Người dùng. Thứ hai, sử dụng AES-GCM để mã hóa tệp.
Gravity avatar
lá cờ tr
Đối với bước cuối cùng, có Kw được mã hóa sẽ được lưu trong cơ sở dữ liệu. Đối với tôi, vấn đề bảo mật là mật khẩu người dùng được gửi rõ ràng (chắc chắn là có https) đến phụ trợ tại thời điểm đăng nhập để tin tặc có thể nghe và trích xuất mật khẩu người dùng rõ ràng, sau đó xây dựng lại Kw để giải mã tệp. Tôi có đúng không? Nhưng tôi không biết nếu có một giải pháp cho thời điểm này.

Đă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.