Điểm:1

E2EE với mật khẩu khi đăng nhập?

lá cờ cn

Hãy tưởng tượng một kịch bản:

  1. Alice và Bob muốn sử dụng một nền tảng nơi họ đăng nhập bằng email và mật khẩu. Nền tảng này có thể được truy cập trên máy tính để bàn và thiết bị di động.
  2. Alice muốn lưu trữ thông tin được mã hóa trong cơ sở dữ liệu hoặc gửi tệp được mã hóa đến máy chủ S3
  3. Bob sẽ có thể lấy thông tin được mã hóa này (dữ liệu + tệp) nếu máy chủ cho phép (Alice đã cấp cho Bob quyền truy cập vào dữ liệu này)
  4. Cả Bob và Alice đều có thể giải mã thông tin (dữ liệu + tệp) từ phía anh ấy

Hiện tại, tôi đang tìm hiểu xem liệu một thiết kế như thế này có khả thi hay không, nhưng trong tương lai sắp tới, tôi sẽ cần triển khai thiết kế này. Tôi rất biết ơn nếu ai đó có thể đưa ra câu trả lời "đơn giản" và có thể đề xuất cách tìm kiếm các nhà cung cấp có nhiều kinh nghiệm hơn tôi (bảo mật không phải là trò đùa) và có thể triển khai mã cho giải pháp đó.

Gilles 'SO- stop being evil' avatar
lá cờ cn
Xin lưu ý rằng không có câu trả lời đơn giản. [Neirpyc](https://crypto.stackexchange.com/a/91645)'s đơn giản như đối với trường hợp danh nghĩa. Nhưng có rất nhiều điều phức tạp cần xem xét để thực hiện công việc này trong thế giới thực. Điều gì xảy ra nếu Alice mất mật khẩu? Cách bạn giảm thiểu rò rỉ mật khẩu (thông qua rình mò, lừa đảo, vũ lực, v.v.) – xác thực hai yếu tố giảm thiểu mật khẩu để xác thực nhưng không có cách nào tương tự để mã hóa. Làm cách nào để bạn thêm người dùng vào danh sách phân phối của tệp? Làm thế nào để bạn thu hồi quyền truy cập? vân vân.
Điểm:2
lá cờ us

Để giải quyết vấn đề của bạn một cách hiệu quả, bạn nên đọc về phái sinh khóadẫn xuất khóa dựa trên mật khẩu.

Theo tôi hiểu, giải pháp cho vấn đề của bạn như sau:

  1. Khi tạo tài khoản, bạn sử dụng mật khẩu của mình để tạo khóa chính km. Bạn cũng nên tạo một cặp khóa bất đối xứng ngẫu nhiên (RSA, đường cong elip hoặc bất kỳ mật mã bất đối xứng nào). Bạn nên tải lên máy chủ khóa công khai và khóa riêng của bạn được mã hóa bằng k0, một khóa bắt nguồn từ khóa chính km.
  2. Alice tạo khóa đối xứng kx và mã hóa dữ liệu cục bộ trước khi gửi đến máy chủ (AES, serpent, ChaCha, ...). kx phải được lấy từ khóa chính của Alice km do đó, cùng một khóa có thể được tạo lại để giải mã tệp. Tệp sẽ nhận được một ID duy nhất x được sử dụng trong hàm dẫn xuất khóa để nhận một cách xác định kx, mà không sử dụng lại cùng một khóa cho mỗi tệp.
  3. Để ủy quyền cho bob, đăng nhập, tạo lại km khóa chính, yêu cầu máy chủ cung cấp ID tệp, lấy kx từ khóa chính của bạn km và tệp Id.Sau đó, yêu cầu máy chủ cung cấp khóa công khai của Bob và sử dụng nó để mã hóa kx. Sau đó, bạn có thể gửi dữ liệu này đến máy chủ.
  4. Bob đăng nhập, tạo khóa chính của mình. Sau đó, anh ta sử dụng nó để lấy khóa đầu tiên của mình k0, truy vấn máy chủ để tìm khóa riêng được mã hóa của anh ấy, sử dụng k0 để giải mã khóa riêng. Khi bạn có khóa riêng, bạn có thể giải mã những gì Alice đã gửi cho bạn: kx, khóa được sử dụng để mã hóa tệp. Sau đó, bạn có thể yêu cầu máy chủ cung cấp tệp và giải mã tệp cục bộ.

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