Điểm:0

Sử dụng lại khóa với Fernet có an toàn không?

lá cờ in

dương xỉ là một sơ đồ mã hóa đối xứng dựa trên AES được cho là chống ngu ngốc (một lần nữa, được cho là) ​​được thiết kế cẩn thận để tránh mọi cạm bẫy có thể ảnh hưởng đến bảo mật.

Tôi muốn sử dụng cùng một khóa để mã hóa nhiều tệp, bao gồm các phiên bản đã sửa đổi của cùng một tệp.

Tôi biết rằng nhiều sơ đồ mã hóa, đặc biệt là các sơ đồ mã hóa tại nhà, trở nên dễ bị phân tích mật mã khi các khóa được sử dụng lại (ví dụ đơn giản nhất: mật mã luồng dựa trên XOR) và tôi không tìm thấy bất kỳ tuyên bố rõ ràng nào trong tài liệu Fernet rằng cho phép tái sử dụng khóa.

Mặt khác,

  • Fernet được cho là bằng chứng ngu ngốc
  • Fernet sử dụng IV ngẫu nhiên mỗi khi nó mã hóa thứ gì đó
  • Tài liệu không cảnh báo về việc sử dụng lại khóa

Cho nên, điều gì có thể xảy ra nếu tôi sử dụng lại khóa với Fernet?

Cách tiếp cận thay thế của tôi, nếu việc sử dụng lại khóa không an toàn, sẽ là mã hóa các tệp như sau:

  • Chọn một loại muối ngẫu nhiên
  • Sử dụng KDF để tính toán khóa riêng lẻ từ khóa và muối được chia sẻ
  • Mã hóa tệp bằng khóa riêng lẻ và nối thêm muối

Nhưng điều này có vẻ sai (muối chỉ được sử dụng với mật khẩu, không phải với dữ liệu ngẫu nhiên...) và quan trọng hơn là yêu cầu tôi sử dụng các nguyên hàm mật mã cấp thấp rõ ràng không phải bằng chứng ngu ngốc.

Điểm:1
lá cờ in

Trang được liệt kê nói về mã hóa AES-128-CBC với Encrypt-then-MAC Mac với HMAC.

Các nghĩa vụ của người dùng là cung cấp thông báo, khóa ngẫu nhiên thống nhất 256 bit và dấu thời gian.

Fernet chia 256 bit của khóa thành hai phần có kích thước bằng nhau.Đầu tiên, một phần được sử dụng trong mã hóa tin nhắn bằng AES-128-CBC, sau đó là thẻ xác thực $t$

$$ t = \operatorname{HMAC-SHA-256}( Phiên bản â Dấu thời gian â IV â Bản mã)$$ được tính toán với phần khác của khóa.

điều gì có thể xảy ra nếu tôi sử dụng lại khóa với Fernet?

  1. mã hóa của quá nhiều tin nhắn với cùng một phím có thể gây ra xung đột IV dưới cùng một phím.

    Điều này có thể rò rỉ rằng phần đầu của các tin nhắn giống nhau. Nếu bạn chỉnh sửa tệp của mình và không mã hóa tệp bằng IV khác thì tệp sẽ bị rò rỉ cùng một tiền tố.

    Chà, người ta cần mã hóa $2^{64}$ tin nhắn có xung đột IV dưới cùng một khóa. 50% là quá cao so với lợi thế của kẻ tấn công, người ta nên xem xét các xác suất thấp hơn.

  2. mã hóa của quá nhiều khối dữ liệu

    Có thể gây xung đột bản mã sử dụng Ngọt32 tấn công. X-or của khối tin nhắn có thể bị xóa nếu $c_i = c_j$ với $i \neq j$ $$m_i \oplus m_j = c_{1-1} \oplus c_{j-1}.$$

    Một lần nữa, 50% là quá cao so với lợi thế của kẻ tấn công, người ta nên xem xét các xác suất thấp hơn.

Hai vấn đề này thực sự phụ thuộc vào số lượng tệp bạn có và kích thước của chúng.

Không hoàn toàn an toàn, sử dụng các khóa và IV khác nhau cho mỗi tệp sẽ tốt hơn. Trên thực tế, API của Fernet cho phép điều này.

Cách tiếp cận thay thế của tôi, nếu việc sử dụng lại khóa không an toàn, sẽ là mã hóa các tệp như sau:

  • Chọn một loại muối ngẫu nhiên
  • Sử dụng KDF để tính toán khóa riêng lẻ từ khóa và muối được chia sẻ
  • Mã hóa tệp bằng khóa riêng lẻ và nối thêm muối

Nhưng điều này có vẻ sai (muối chỉ được sử dụng với mật khẩu, không phải với dữ liệu ngẫu nhiên...) và quan trọng hơn là yêu cầu tôi sử dụng các nguyên hàm mật mã cấp thấp rõ ràng không phải là bằng chứng ngu ngốc.

Đây là những gì chúng ta làm; có các khóa và IV khác nhau trên mỗi tệp. Bạn có thể dùng HKDF thậm chí chỉ mở rộng một phần để lấy khóa và IV.

Một cách trung thực, tôi luôn hỏi tại sao ai đó lại cần những thứ phức tạp trong khi các thùng chứa được mã hóa của VeraCrypt xử lý việc này tốt hơn cả các chuyên gia.Người ta không cần phải xem xét mã hóa. Chỉ cần học cách có một mật khẩu tốt như dicewire đã gõ và bạn đã hoàn tất.

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