Điểm:2

Việc mã hóa nhiều tệp có rút ngắn danh sách các mật khẩu có thể không?

lá cờ br

Hy vọng rằng câu hỏi này không trùng lặp, cũng như câu trả lời của nó quá cơ bản.

Giả sử tôi có một tệp . Tôi mã hóa nó, sử dụng mật khẩu. Mật khẩu có lẽ quy định một mẫu hoặc mối quan hệ giữa tệp ở dạng trước mã hóa (A1) và sau mã hóa (B1). Nhưng mô hình hoặc mối quan hệ đó là không xác định. Tùy thuộc vào độ phức tạp của mật khẩu, có thể có vô số cách giải thích khả dĩ về cách mật khẩu đã giúp chuyển đổi A1 thành B1.

Giả sử tôi mã hóa một tệp khác, sử dụng cùng một mật khẩu. Tôi đã kiểm tra mối quan hệ A1-B1; bây giờ tôi kiểm tra mối quan hệ A2-B2. Một số giải thích có thể về chuyển đổi A1-B1 sẽ không giải thích chuyển đổi A2-B2.

Việc mã hóa nhiều tệp, sử dụng cùng một mật khẩu, có làm giảm đáng kể số lượng mật khẩu có thể giải thích cho sự khác biệt giữa các dạng mã hóa trước và sau của các tệp đó không?

Điểm:2
lá cờ ng

Điều đó phụ thuộc vào độ dài của A1 và vào thuật toán mã hóa. Đối với A1 rất ngắn, có, cặp bản rõ/bản mã bổ sung A2-B2 hạn chế tập hợp các mật khẩu có thể.

Ví dụ, nếu thuật toán mã hóa là AES-256-CTR với thẩm quyền kéo dài phím với ví dụ Argon2 để tạo khóa 256 bit và A1 là $n_1$-byte với $0\le n_1\le30$, sau đó khoảng một mật khẩu trong số $2^{(8\,n_1)}$ sẽ giải mã B1 thành A1. Khi A2 là $n_2$-byte với $0\le n_1+n_2\le30$, sau đó khoảng một mật khẩu trong số $2^{(8\,n_1+8\,n_2)}$ sẽ giải mã B1 thành A1 và B2 thành A2, đây là một phần nhỏ hơn nhiều của mật khẩu khi $n_2\ne0$. Vì $n_1\le3$ điều này dễ dàng được kiểm chứng bằng thực nghiệm.

Với cùng hệ thống mã hóa này, khi $n_1\ge35$, rất có thể có một khóa AES 256 bit duy nhất giải mã B1 thành A1, có khoảng một mật khẩu trong $2^{256}$ tạo ra khóa này sau khi kéo dài khóa và việc thêm B2 sẽ không thay đổi điều đó.

Hầu hết các thuật toán mã hóa phổ biến chấp nhận mật khẩu làm đầu vào khóa đều có một số giới hạn bên trong về độ dài khóa ngay cả khi mật khẩu không có; như 256-bit trong ví dụ trên. Nhưng đối với các thuật toán tốt, giới hạn đó vượt quá ngưỡng có bất kỳ tác động thực tế nào đến bảo mật.

Tôi chưa bao gồm mã hóa với phần đệm như CBC, làm phức tạp việc phân tích; cũng không mã hóa xác thực, trong đó theo thiết kế, mỗi mã hóa loại trừ phần lớn mật khẩu.

Điểm:2
lá cờ ph

Câu trả lời ngắn gọn là: không, tệp thứ hai có thể không tạo ra sự khác biệt. Điều này là do 1) điều quan trọng đối với câu hỏi của bạn là lượng dữ liệu được mã hóa chứ không phải số lượng tệp và 2) nó không yêu cầu nhiều dữ liệu (khoảng 64 byte, xem bên dưới) để sửa khóa duy nhất, vì vậy có khả năng rằng một tệp duy nhất đủ lớn. Chỉ trong trường hợp tệp đầu tiên quá nhỏ đến mức nó không lấp đầy 2 khối thì tệp thứ hai mới có thêm thông tin để cung cấp.

Cách một chương trình thường cung cấp mã hóa tệp dựa trên mật khẩu trước tiên là chuyển đổi mật khẩu thành khóa, sử dụng PBKDF. Sau đó, nó sẽ sử dụng khóa đó để mã hóa tệp, từng khối. Để đơn giản, giả sử khóa và khối đều là 256 bit. Nếu chúng tôi chỉ xem xét khối được mã hóa đầu tiên của tệp, thì có thể (khoảng 1 phần 3) có một khóa khác mã hóa khối đó theo cùng một cách. Khi chúng tôi xem xét khối thứ hai, hầu như không có khả năng có một khóa khác mã hóa cả hai khối giống nhau.Vì vậy, khi 2 khối (64 byte) đã được mã hóa, chỉ có một khóa duy nhất có thể thực hiện chuyển đổi cụ thể đó. Do đó, miễn là tệp đầu tiên không quá nhỏ, không có ràng buộc nào được thêm vào.

Bây giờ, đó là về chìa khóa, và câu hỏi của bạn là về mật khẩu. Thông thường, một chương trình mã hóa sẽ luôn sử dụng cùng một PBKDF, có nghĩa là cùng một mật khẩu sẽ luôn tạo ra cùng một khóa. Và như trên, không có bất kỳ ràng buộc bổ sung nào được tiết lộ.

Điều đáng nhấn mạnh là những hạn chế này đều rất lý thuyết. Mặc dù có một khóa khả thi duy nhất, nhưng vấn đề xác định nó là khó khăn - đó là điểm của một thuật toán an toàn. Và PBKDF thường được thiết kế sao cho ngay cả khi bạn biết khóa, bạn cũng không thể đảo ngược mật khẩu.

fgrieu avatar
lá cờ ng
Điều đó không áp dụng cho các tệp rất ngắn trong nhiều chế độ mã hóa phổ biến, bao gồm CTR, CFB và OFB. Đặc biệt, nếu bạn mã hóa một tệp một byte, thì một trong số khoảng 256 mật khẩu sẽ giải mã chính xác tệp đó. Đối với CBC và các chế độ đệm trong đó byte cuối cùng mã hóa bao nhiêu byte để triệt tiêu, phân số sẽ khác, nhưng hiệu ứng vẫn dễ quan sát.
lá cờ ph
Tôi đã nói rằng phải mất hai khối, nhưng bạn nói đúng rằng nên nêu rõ hơn điều đó ngay từ đầu.
Điểm:1
lá cờ in

Không, nó không làm giảm số lượng mật khẩu có thể được sử dụng.

Nói chung, mật khẩu được sử dụng để lấy khóa đối xứng. Bạn nên sử dụng Phương pháp tạo khóa dựa trên mật khẩu (PBKDF) cho việc đó. Thông thường, PBKDF đó sử dụng muối và hệ số công việc (và có thể là các tham số khác). Muối - được bao gồm trong bản mã - đảm bảo rằng khóa luôn khác nhau, ngay cả khi sử dụng cùng một mật khẩu. Hơn nữa, PBKDF là hàm băm mật khẩu một chiều, vì vậy cũng không thể lấy được từ khóa, ngoài việc thử mọi mật khẩu. Hơn nữa, bản thân khóa được bảo vệ bởi mật mã được sử dụng; do đó nó nên được bảo vệ thậm chí nếu biết nhiều cặp bản rõ/bản mã.

Vì PBKDF là hàm băm mật khẩu có dung lượng cũng như kích thước đầu ra cụ thể, nên có thể nhiều mật khẩu được băm thành cùng một giá trị. Tuy nhiên, đây là tình cờ và việc tìm thấy chúng là điều không thể. Nói chung, nếu một cuộc tấn công từ điển được sử dụng thì bạn có thể cho rằng mật khẩu được đoán đúng nếu tìm thấy khóa chính xác. Có nhiều bản mã để so sánh không tạo ra sự khác biệt.


Lưu ý rằng đây là về mã hóa đối xứng thực hành tốt nhất. Nếu bạn muốn sử dụng ví dụ: mật mã Vigenere thì có, mã hóa bằng cùng một mật khẩu sẽ phá vỡ toàn bộ sơ đồ.

Hơn nữa, bạn có thể ví dụ: thay vào đó hãy mã hóa khóa riêng và sử dụng khóa chung tương ứng để mã hóa tệp. Trong trường hợp đó, bạn chỉ cần mật khẩu khi giải mã tệp.


Cuối cùng, nếu cùng một khóa được sử dụng để mã hóa một tệp thì việc có nhiều khối dữ liệu văn bản gốc có thể tạo ra sự khác biệt; một số thông tin có thể bị rò rỉ, ví dụ: nếu mã hóa khối CBC sẽ tạo ra cùng một bản mã (có nghĩa là khối đầu vào cũng giống hệt nhau). Hoặc khi bộ đếm được sử dụng trong quá trình mã hóa CTR bị tràn, v.v., v.v. Tuy nhiên, như đã nói, thông thường bạn vẫn sử dụng các khóa khác nhau, ngay cả khi sử dụng cùng một mật khẩu. Trong trường hợp đó, yếu tố giới hạn duy nhất là kích thước thư/tệp.

fgrieu avatar
lá cờ ng
Các tệp được giả định âm thầm là lớn, điều này không được nêu trong câu hỏi.

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