Điểm:1

WinZip AES khác với AES bình thường như thế nào

lá cờ co

Tôi đang cố gắng viết một hàm trong phi tiêu có thể giải mã tệp bên trong tệp zip được mã hóa bằng tiêu chuẩn WinZip AES-256. Tài liệu tôi đã tìm thấy ở đây: https://www.winzip.com/en/support/aes-encryption/. Sử dụng 7-Zip, tôi có thể tạo một tệp ví dụ theo tiêu chuẩn. Tôi có thể trích xuất khóa mã hóa và văn bản mật mã theo thông số kỹ thuật:

mã hóaKhóa: 9f2df21ad65ff7f33b817c5686042f1dc038f0290cbe0189f2ee2bb610bf033d
cipherText: f88a3bd439b4aef91ebaa9
dự kiến: 68656c6c6f20776f726c64 (xin chào thế giới)
đầu ra: c5e7de168b7dd6f3b157d4

Bất kỳ công cụ hoặc gói nào tôi sử dụng đều không thể giải mã nó thành đúng thông báo. Vì vậy, tôi đã xem xét thư viện nodejs sử dụng triển khai đặc biệt để giải mã dường như không hoàn toàn bằng AES tiêu chuẩn. Nó được gọi là triển khai cụ thể của Gladmann. như bạn có thể thấy ở đây: https://github.com/gildas-lormeau/zip.js/blob/master/lib/core/codecs/sjcl.js#L590

Tôi đã tải xuống gói nodejs này và có thể xác nhận rằng dữ liệu đầu vào của tôi hợp lệ, vậy câu hỏi của tôi là tại sao có nhiều triển khai AES? Và cách tiếp cận tốt nhất để thực hiện điều này trong phi tiêu là gì?

Tôi có thể cố gắng bắt chước logic tương tự trong phi tiêu, điều này có thể thực hiện được nhưng đầy thách thức. Có thể tận dụng một thư viện hiện có và thực hiện một thay đổi nhỏ để làm cho nó hoạt động không? Nếu vậy sự thay đổi đó sẽ là gì?

Thật không may, tài liệu trên internet về quá trình phân tách WinZip AES rất khan hiếm. Đầu mối duy nhất khác mà tôi có thể tìm thấy là việc triển khai từ chính Brian Gladmann: https://github.com/BrianGladman/aes nhưng nó thiếu tài liệu và vượt quá hiểu biết của tôi một chút.

Cảm ơn đã giúp đỡ :)

Swashbuckler avatar
lá cờ mc
Một điều khác cần xem xét, các phiên bản 7-Zip cũ hơn chỉ sử dụng IV 8 byte. Nếu bạn đang sử dụng phiên bản cũ hơn có thể gây ra một số sự cố, hãy xem https://threadreaderapp.com/thread/1087848040583626753.html
Điểm:1
lá cờ in

Tôi sẽ cho rằng bạn đã thực hiện PBKDF2 với 1000 lần lặp tĩnh được xác định (nghĩa là ở mức bảo mật thấp) và hai byte kiểm tra chính đã được xác thực.

Bản thân AES không có gì khác biệt và có vẻ như Winzip không sử dụng gì đặc biệt. Điều duy nhất hơi kỳ lạ là bộ đếm nằm trong endian nhỏ. Đây là tất cả mã C, do đó, độ bền được xác định bởi nền tảng và chủ yếu điều đó có nghĩa là ít tuổi thọ.

Không có gì cấm sử dụng bộ đếm endian nhỏ cho chế độ CTR, nhưng trong 99% trường hợp, nó sẽ là big endian. Bạn có thể cần tự triển khai CTR-LE trên mật mã AES (hoặc AES-ECB, loại này giống nhau).

Cũng lưu ý rằng ZIP - uh - tiêu chuẩn định nghĩa một tiêu đề được mã hóa, vì vậy phần đầu của bản rõ được giải mã sẽ không phải là nội dung tệp.

Tương tự, thẻ xác thực chỉ là HMAC-SHA1-80 trên bản mã. HMAC-SHA1-80 chỉ là HMAC-SHA-1 trong đó chỉ có 80 bit được sử dụng, tức là bằng một nửa kích thước đầu ra của HMAC-SHA-1, thường là các bit ngoài cùng bên trái.

Nếu bạn gặp khó khăn, tôi sẽ xem xét cẩn thận mã để kiểm tra xem bạn không có bất kỳ giá trị nào ngược lại hay không (ví dụ: có thể nó sử dụng các byte ngoài cùng bên phải của HMAC, không chắc, nhưng đúng vậy).

Maarten Bodewes avatar
lá cờ in
Thực tế là WinZip 11 trở lên lưu trữ CRC32 qua văn bản gốc cho bất kỳ tệp nào > 20 byte chỉ chiếm một phần lợi nhuận. "Bởi vì đối với một số tệp rất nhỏ, CRC có thể được sử dụng để xác định nội dung chính xác của tệp". Không, bạn *đồ ngốc*, bạn có thể xác định chắc chắn rằng một tệp chứa dữ liệu cụ thể, bất kể kích thước. Nếu bạn muốn mã hóa bất cứ thứ gì **thì đừng sử dụng WinZip cho việc đó**.

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