Điểm:0

Lược đồ bất đối xứng AES GCM + này có an toàn không?

lá cờ cn

Tôi muốn sử dụng mã hóa bất đối xứng được cung cấp bởi một công cụ để mã hóa các tệp của mình và tôi muốn biết liệu quy trình mã hóa sau có hoạt động hay không, bất kể việc sử dụng có thể không tối ưu hay không.

  • tạo một khóa ngẫu nhiên 32 byte bên trong trình duyệt với window.crypto.getRandomValues

  • sử dụng thư viện tiền điện tử sjcl vì:

    • chọn thuật toán AES cipher.aes
    • tạo 4 từ vector IV ngẫu nhiên ngẫu nhiên.randomWords(4, 0)
    • mã hóa một tập tin trong chế độ GCM mode.gcm.encrypt (thẻ 128 bit)
    • nối IV và đầu ra được mã hóa tạo ra tệp nhị phân1
  • sử dụng Thư viện mạng và mật mã NaCl, thông qua một công cụ triển khai ECIES, dành cho:

    • tạo ra một mã hóaKeypair sử dụng nacl.box.keyPair.fromSecretKey
    • mã hóa ở trên khóa ngẫu nhiên 32 byte với phù duPublicKey (sử dụng x25519 một phần của lược đồ x25519-xsalsa20-poly1305) sản xuất tệp nhị phân2, một gói chứa khóa AES được mã hóa và, trong số các siêu dữ liệu khác, phù duPublicKey.
  • concat tệp nhị phân2 + dấu phân cách + tệp nhị phân1 sản xuất tập tin nhị phân cuối cùng

  • giữ cái tập tin nhị phân cuối cùng trên đám mây cho đến khi cần tải xuống và sau đó giải mã thông qua quy trình ngược lại bằng cách sử dụng chìa khoá bí mật Tôi sở hữu.

Để mã hóa các tệp, tôi có thể trực tiếp sử dụng khóa đối xứng để giữ an toàn nhưng tôi muốn sử dụng DB gồm các khóa công khai tĩnh được chia sẻ, mà độ tin cậy mà tôi có thể cho là hợp lệ.

kelalaka avatar
lá cờ in
Câu hỏi là gì?
lá cờ cn
Tôi đã đặt câu hỏi rõ ràng trong tiêu đề. Cảm ơn bạn.
kelalaka avatar
lá cờ in
Tại sao bạn không sử dụng các chương trình được bảo trì tốt như Veracrypt hoặc các thư viện như [age](https://github.com/FiloSottile/age) (_age là một định dạng, công cụ mã hóa tệp đơn giản, hiện đại và an toàn và Go library_ .)
Maarten Bodewes avatar
lá cờ in
Đánh giá đầy đủ về các giao thức và lược đồ mật mã là lạc đề. Sử dụng ECIES để mã hóa khóa bí mật là hơi giả mạo; bạn có thể sử dụng chính phần thỏa thuận khóa để thiết lập khóa. Tất nhiên, bạn cũng cần gửi khóa công khai tạm thời cho ECIES, thứ còn thiếu trong giao thức của bạn. Tôi không hiểu cách bạn thiết lập cặp khóa tĩnh của máy thu hoặc cách khóa chung đó được tin cậy, vì vậy mô tả chắc chắn không phải là không có lỗi và cũng không đầy đủ.
lá cờ cn
Cảm ơn bạn đã nhận xét của bạn Maarten. Trên thực tế, tôi đã quên đề cập rằng trong `binaryFile2` cũng có khóa công khai tạm thời nên tôi sẽ cập nhật câu hỏi. Tôi biết rằng tôi đang hỏi về tính hợp lệ bất kể quá trình đăng ký cặp khóa tĩnh và độ tin cậy tương đối.
Điểm:2
lá cờ si

NaCL cung cấp một bộ crypto_box các phương pháp thực hiện tất cả điều này trong một lần. Libsodium cung cấp một bộ thậm chí còn dễ dàng hơn crypto_box_easy các phương pháp.

lá cờ cn
Cảm ơn bạn đã gợi ý, Việc triển khai của tôi phải ở dạng javascript nên tôi chỉ đang sử dụng một gói NaCl cung cấp và quản lý các thế hệ cặp khóa.
SAI Peregrinus avatar
lá cờ si
Cũng có các liên kết JS cho libsodium.

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