Điểm:0

Sử dụng AES.MODE_EAX để mã hóa AES

lá cờ ga

Tôi hiện đang cố gắng thực hiện mã hóa AES bằng Python trên tệp có kích thước lớn hơn cho mục đích mô phỏng. Hiện tại, tôi đang cố gắng sử dụng AES.MODE_EAX, như đã đề cập trong tài liệu về AES:

https://pycryptodome.readthedocs.io/en/latest/src/cipher/aes.html

Tôi muốn kiểm tra cách chính xác để tiếp cận mã hóa tệp.

Hiện tại, tôi đang chia tệp thành các đoạn 16 byte và sử dụng cùng một khóa 128 bit để tạo mật mã nhằm mã hóa từng đoạn. Tôi đang chạy các lệnh sau trên mỗi đoạn khi cần để mã hóa và tôi đang thực hiện phân tích các kết quả được mã hóa:

mật mã = ​​AES.new(key, AES.MODE_EAX)
nonce = cipher.nonce
bản mã, thẻ = cipher.encrypt_and_digest(data_chunk)

Tôi không chắc liệu sự hiểu biết của mình có thấu đáo hay không. Đây có phải là một cách tiếp cận hợp lệ để mã hóa dữ liệu qua AES không? Hoặc có các chế độ hoặc cách tiếp cận khác với MODE_EAX (như sử dụng dữ liệu của toàn bộ tệp không?) mà tôi nên xem xét trong trường hợp này?

SAI Peregrinus avatar
lá cờ si
Có lý do cụ thể nào khiến bạn sử dụng pycryptodome không? Tương tự như vậy, tại sao lại là EAX? Đó không phải là một chế độ thường được sử dụng. Nó chậm hơn OCB hoặc GCM và không giải quyết được vấn đề không sử dụng lại như SIV. Tôi muốn hiểu những hạn chế mà bạn đang làm việc, bởi vì câu trả lời tiêu chuẩn của tôi cho cách mã hóa tệp chính xác là "sử dụng tuổi (age-encryption.org)".
Maarten Bodewes avatar
lá cờ in
Tôi đang bỏ phiếu để đóng câu hỏi này vì câu hỏi này đã được đăng chéo lên SO, nơi nó thuộc về.
Điểm:2
lá cờ ru

Bạn không phải chia dữ liệu thành các khối 16 byte và mã hóa riêng từng khối. Phương thức Encrypt_and_digest sẽ xử lý tất cả việc phân chia này cho bạn. Thay vào đó, bạn nên gọi phương thức trên toàn bộ mảng dữ liệu.

Bằng cách mã hóa riêng lẻ từng khối, bạn đang tạo một nonce và thẻ cho từng khối thay vì một nonce và thẻ cho tất cả dữ liệu của bạn. Ngay cả đối với dữ liệu có kích thước vừa phải, điều này sẽ tăng gần gấp ba lần kích thước của mật mã của bạn. Lợi ích thực sự duy nhất khi tạo một thẻ cho mỗi khối là nếu tính toàn vẹn của thông báo bị xâm phạm, bạn có thể thu hẹp thay đổi đối với khối mà nó xảy ra.

Như đã lưu ý trong các nhận xét, AES.GCM thường được ưu tiên hơn AES.EAX trong các triển khai hiện đạ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.