Giải thích Mã hóa AES-256: Ý nghĩa với Dữ liệu của Bạn
Giải thích AES-256: cách mật mã hoạt động, tại sao khóa 256-bit quan trọng, GCM mode bổ sung gì, và những gì cần kiểm tra khi ứng dụng tuyên bố mã hóa AES-256.
AES-256 là Tiêu chuẩn Mã hóa Nâng cao với khóa 256-bit, được NIST chuẩn hóa là FIPS 197 vào năm 2001. Đây là thuật toán mã hóa đối xứng được chính phủ Hoa Kỳ sử dụng cho thông tin mật, bởi các ngân hàng cho giao dịch tài chính, và bởi các ứng dụng tập trung bảo mật để bảo vệ dữ liệu ở trạng thái nghỉ và trong quá trình truyền. AES-256 có 2^256 khóa có thể -- một con số lớn hơn số nguyên tử ước tính trong vũ trụ quan sát được. Không có cuộc tấn công nào được biết đến giảm không gian khóa này thành một tìm kiếm khả thi về mặt tính toán.
Hướng dẫn này giải thích AES-256 thực sự làm gì, tại sao kích thước khóa quan trọng, các chế độ khác nhau có nghĩa là gì (ECB, CBC, GCM), và những gì cần tìm khi một ứng dụng tuyên bố sử dụng mã hóa AES-256.
AES thực sự làm gì
AES là mật mã khối đối xứng. "Đối xứng" có nghĩa là cùng một khóa mã hóa và giải mã. "Mật mã khối" có nghĩa là nó xử lý dữ liệu trong các khối có kích thước cố định 128 bit (16 byte).
Thuật toán lấy dữ liệu của bạn (bản rõ), kết hợp với khóa, và tạo ra đầu ra bị xáo trộn (bản mã) thông qua một loạt các phép biến đổi toán học. Các phép biến đổi này -- thay thế, dịch chuyển, trộn và thêm khóa -- lặp lại trong một số vòng cố định. AES-256 sử dụng 14 vòng.
Mỗi vòng áp dụng bốn thao tác:
- SubBytes: Mỗi byte được thay thế bằng một bảng thay thế cố định (S-box), tạo ra tính phi tuyến.
- ShiftRows: Các byte trong mỗi hàng được dịch chuyển theo các độ lệch khác nhau, phân tán dữ liệu qua các vị trí.
- MixColumns: Các cột được trộn thông qua phép nhân ma trận trong trường hữu hạn, khuếch tán thay đổi qua các byte.
- AddRoundKey: Khóa vòng (dẫn xuất từ khóa chính) được XOR với dữ liệu.
Sau 14 vòng, bản rõ bị xáo trộn hoàn toàn. Đảo ngược các thao tác này với khóa đúng khôi phục lại dữ liệu gốc. Không có khóa, bản mã không thể phân biệt với nhiễu ngẫu nhiên.
Tại sao 256 bit quan trọng
"256" trong AES-256 đề cập đến độ dài khóa: 256 bit. Điều này xác định số khóa có thể mà kẻ tấn công phải thử để bẻ khóa mã hóa bằng brute force.
| Kích thước khóa | Khóa có thể | Thời gian brute-force (1 nghìn tỷ đoán/giây) |
|---|---|---|
| 56-bit (DES) | 7,2 x 10^16 | ~20 giờ |
| 128-bit (AES-128) | 3,4 x 10^38 | 10^13 năm (10 nghìn tỷ năm) |
| 256-bit (AES-256) | 1,16 x 10^77 | 10^51 năm |
Để tham khảo: vũ trụ khoảng 1,38 x 10^10 năm tuổi. Brute-force AES-256 sẽ mất khoảng 10^41 lần tuổi vũ trụ, ngay cả ở tốc độ một nghìn tỷ đoán mỗi giây.
AES-128 đã không khả thi về mặt tính toán để brute-force. AES-256 cung cấp thêm biên độ trước những tiến bộ trong điện toán trong tương lai, bao gồm cả điện toán lượng tử. Thuật toán Grover (một cuộc tấn công điện toán lượng tử) giảm một nửa độ dài khóa hiệu quả -- giảm AES-256 xuống tương đương bảo mật AES-128, điều này vẫn không khả thi. AES-128 sẽ bị giảm xuống bảo mật hiệu quả 64-bit, có thể dễ bị tổn thương. Đây là lý do tại sao các ứng dụng quan trọng về bảo mật thích AES-256.
Các chế độ AES: Tại sao chúng quan trọng
AES tự nó chỉ mã hóa một khối 128-bit mỗi lần. Đối với dữ liệu thực (ảnh, tài liệu, video), bạn cần "chế độ hoạt động" xử lý dữ liệu lớn hơn 16 byte. Chế độ xác định cách các khối được liên kết với nhau và có ý nghĩa bảo mật đáng kể.
ECB (Electronic Codebook) -- Không sử dụng
Mỗi khối được mã hóa độc lập với cùng một khóa. Các khối bản rõ giống nhau tạo ra các khối bản mã giống nhau. Điều này rò rỉ các mẫu trong dữ liệu. Minh họa kinh điển: mã hóa ảnh bitmap với ECB bảo tồn cấu trúc của ảnh trong bản mã, làm cho nội dung có thể nhận ra được. ECB được đưa vào tiêu chuẩn nhưng không bao giờ nên được sử dụng cho dữ liệu có cấu trúc hoặc mẫu lặp lại (bao gồm hầu hết dữ liệu thực tế).
CBC (Cipher Block Chaining) -- Di sản
Mỗi khối được XOR với khối bản mã trước đó trước khi mã hóa. Điều này loại bỏ rò rỉ mẫu của ECB. CBC là chế độ tiêu chuẩn trong nhiều thập kỷ nhưng đã được thay thế bởi GCM cho hầu hết các ứng dụng. CBC yêu cầu vectơ khởi tạo ngẫu nhiên (IV) và không cung cấp xác thực tích hợp (bạn không thể phát hiện nếu bản mã đã bị can thiệp).
GCM (Galois/Counter Mode) -- Tiêu chuẩn hiện tại
GCM kết hợp mã hóa chế độ bộ đếm với xác thực trường Galois. Nó cung cấp mã hóa xác thực: nó mã hóa dữ liệu VÀ tạo ra thẻ xác thực phát hiện bất kỳ sửa đổi nào đối với bản mã. Nếu một bit bị thay đổi, giải mã thất bại thay vì tạo ra bản rõ bị hỏng.
NIST chuẩn hóa GCM trong SP 800-38D (2007). Đây là chế độ được khuyến nghị cho các triển khai mới.
AES-256-GCM là AES với khóa 256-bit trong Galois/Counter Mode. Đây là những gì các ứng dụng quan trọng về bảo mật nên sử dụng và những gì Vaultaire sử dụng để mã hóa nội dung ảnh và tệp.
| Chế độ | Rò rỉ mẫu | Xác thực | Khuyến nghị hiện tại |
|---|---|---|---|
| ECB | Có (nghiêm trọng) | Không | Không sử dụng |
| CBC | Không | Không (cần MAC riêng) | Di sản; chấp nhận được với HMAC |
| GCM | Không | Có (tích hợp sẵn) | Khuyến nghị cho các triển khai mới |
AES-256 có nghĩa là gì đối với lưu trữ ảnh
Khi ứng dụng vault ảnh tuyên bố "mã hóa AES-256," ba điều sau đây nên đúng:
Nội dung tệp được mã hóa bằng AES-256. Dữ liệu ảnh thô (pixel, siêu dữ liệu, thumbnail) được biến đổi thành bản mã sử dụng khóa 256-bit.
Mỗi tệp sử dụng vectơ khởi tạo (IV) duy nhất. Nếu hai ảnh giống nhau được mã hóa bằng cùng một khóa, bản mã nên khác nhau. Điều này yêu cầu IV duy nhất cho mỗi tệp. Không có nó, phân tích thống kê có thể tiết lộ các mẫu.
Chế độ cung cấp xác thực (GCM hoặc tương đương). Không có xác thực, kẻ tấn công có thể sửa đổi bản mã mà không bị phát hiện. Kết quả giải mã sẽ là dữ liệu bị hỏng chứ không phải lỗi.
Những gì "AES-256" trên trang tiếp thị không cho bạn biết
AES-256 là cần thiết nhưng chưa đủ. Một số yếu tố quan trọng xác định liệu mã hóa có thực sự bảo vệ dữ liệu của bạn hay không:
Vấn đề phái sinh chính. Khóa 256 bit được tạo như thế nào? Nếu nó được lấy từ mã PIN gồm 4 chữ số sử dụng KDF yếu thì bảo mật hiệu quả là 4 chữ số (10.000 tổ hợp), không phải 256 bit. Việc triển khai mạnh mẽ sẽ sử dụng PBKDF2 với số lần lặp cao hoặc Argon2 với các tham số thời gian và bộ nhớ thích hợp. sử dụng Vaultaire PBKDF2 với HMAC-SHA512 và 600.000 lần lặp để lấy khóa vault cục bộ từ mẫu 5x5 đã chọn và muối thiết bị. PBKDF2 làm cho mỗi lần đoán đắt hơn; nó không tăng entropy của mẫu lên 256 bit.
Vấn đề lưu trữ chính. Chìa khóa sống ở đâu? Nếu khóa được lưu trữ dưới dạng văn bản gốc trong hộp cát của ứng dụng, phần mềm độc hại có quyền truy cập tệp có thể đọc được khóa đó. của Apple Secure Enclave hỗ trợ các hoạt động khóa cụ thể không thể xuất được, không hỗ trợ các khóa AES do ứng dụng cung cấp tùy ý. Thay vào đó, các thiết kế khóa đối xứng có thể dựa vào Keychain và Bảo vệ dữ liệu, vì vậy tài liệu nên đặt tên chính xác cho API và lớp bảo vệ thay vì chỉ nói "được hỗ trợ bằng phần cứng".
Những gì được mã hóa quan trọng. Một số ứng dụng mã hóa nội dung tệp nhưng để lại tên tệp, thumbnail và siêu dữ liệu không được mã hóa. Một điều tra viên pháp lý có thể không thấy ảnh của bạn, nhưng họ có thể thấy "vacation-beach-2025.jpg" trong danh sách tệp. Mã hóa toàn diện bao gồm siêu dữ liệu riêng biệt.
Các vấn đề quan trọng về vòng đời. Tài liệu chính được giải mã có sẵn trong bao lâu? Vaultaire bỏ trạng thái vault hoạt động và khóa chính khi khóa hoặc đóng và yêu cầu mở khóa mới. Các byte khóa đối xứng nhất thiết phải tồn tại trong bộ nhớ ứng dụng trong khi kho tiền được mở và Swift và iOS đừng để một ứng dụng chứng minh rằng mọi bản sao tạm thời đều bị ghi đè.
AES-256 trong thực tế: Ai sử dụng nó
| Tổ chức | Trường hợp sử dụng | Chế độ |
|---|---|---|
| Chính phủ Hoa Kỳ (NSA) | Thông tin mật | GCM (hoặc CTR với xác thực riêng) |
| Apple (iCloud ADP) | Mã hóa đầu cuối iCloud | GCM |
| Signal | Mã hóa tin nhắn | CBC (với HMAC cho xác thực) |
| Ngân hàng | Mã hóa giao dịch tài chính | GCM |
| 1Password | Vault mật khẩu | GCM |
| Vaultaire | Vault ảnh và tệp | GCM |
| VeraCrypt | Mã hóa đĩa | XTS (tối ưu cho các khối đĩa) |
Những hiểu lầm phổ biến
"Mã hóa cấp quân sự" không có nghĩa cụ thể nào. Các trang tiếp thị sử dụng cụm từ này vì nghe có vẻ ấn tượng. AES-256 được quân đội sử dụng. AES-128 cũng vậy. Cụm từ này không cho bạn biết chế độ, dẫn xuất khóa, lưu trữ khóa, hoặc dữ liệu nào thực sự được mã hóa.
"Mã hóa 256-bit" có thể không có nghĩa là AES-256. Các mật mã khác cũng sử dụng khóa 256-bit (ChaCha20, Twofish, Serpent). Kiểm tra thuật toán nào được chỉ định. AES-256-GCM là tiêu chuẩn hiện tại.
AES-256 không bảo vệ chống lại mật khẩu yếu. Nếu mật khẩu của bạn là "1234" và dẫn xuất khóa yếu, mã hóa hiệu quả là bảo mật 4 chữ số bất kể sức mạnh của mật mã. Chuỗi đứt ở mắt xích yếu nhất.
AES-256 không bảo vệ dữ liệu đang sử dụng. Khi bạn xem ảnh, nó phải được giải mã trong bộ nhớ. Lúc đó, nó tồn tại dưới dạng bản rõ trong RAM. Các triển khai phù hợp thu nhỏ cửa sổ này và xóa dữ liệu đã giải mã kịp thời.
Câu hỏi thường gặp
AES-256 có thể bị bẻ khóa không?
Không có cuộc tấn công nào được biết đến bẻ khóa AES-256 bằng cách giảm không gian khóa đầy đủ. Cuộc tấn công tốt nhất được biết đến (tấn công biclique của Bogdanov, Khovratovich, và Rechberger, 2011) giảm AES-256 từ 2^256 phép toán xuống 2^254.4 -- một cải tiến lý thuyết không có ý nghĩa về mặt tính toán trong thực tế. AES-256 vẫn chưa bị bẻ khóa.
AES-256 có kháng lượng tử không?
Về cơ bản là có. Thuật toán lượng tử Grover giảm một nửa độ dài khóa hiệu quả: AES-256 trở nên tương đương với bảo mật 128-bit trước các cuộc tấn công lượng tử. AES-128 sẽ bị giảm xuống bảo mật hiệu quả 64-bit, có thể dễ bị tổn thương. NIST khuyến nghị AES-256 cho bảo mật lâu dài trước những tiến bộ điện toán lượng tử.
Sự khác biệt giữa AES-128 và AES-256 là gì?
AES-128 sử dụng khóa 128-bit (10 vòng). AES-256 sử dụng khóa 256-bit (14 vòng). Cả hai được coi là an toàn trước các cuộc tấn công hiện tại. AES-256 cung cấp biên độ lớn hơn trước những tiến bộ trong tương lai, đặc biệt là điện toán lượng tử. AES-256 chậm hơn khoảng 40% so với AES-128 do các vòng bổ sung, nhưng tăng tốc phần cứng làm cho điều này không đáng kể trên các thiết bị hiện đại.
Mã hóa AES-256 có làm chậm điện thoại của tôi không?
Không thể cảm nhận được trong sử dụng bình thường. Bộ xử lý hiện đại của Apple cung cấp khả năng tăng tốc phần cứng cho AES thông qua các thư viện mật mã hệ thống. Điều đó không có nghĩa là hoạt động AES của ứng dụng chạy bên trong Secure Enclave. Thời gian vẫn phụ thuộc vào kích thước tệp, thiết bị, bộ nhớ và cách triển khai, do đó, yêu cầu bảo mật phải dựa vào các phép đo thay vì con số mili giây phổ quát.
Làm thế nào để biết ứng dụng có thực sự sử dụng AES-256 không?
Kiểm tra tài liệu bảo mật của ứng dụng, không chỉ trang tiếp thị của ứng dụng. Tìm kiếm thuật toán và chế độ cụ thể, phân cấp khóa, tham số phái sinh, chính xác Keychain hoặc Secure Enclave sử dụng, xử lý nonce, đường dẫn khôi phục và liệu siêu dữ liệu có được mã hóa hay không. Mã nguồn mở và kiểm toán độc lập giúp xác minh những tuyên bố đó dễ dàng hơn.
Kết luận
AES-256 là tiêu chuẩn vàng cho mã hóa đối xứng, được NIST chuẩn hóa, được các chính phủ và tổ chức tài chính sử dụng, và kháng lại tất cả các cuộc tấn công được biết đến bao gồm cả điện toán lượng tử. Khi đánh giá các ứng dụng tuyên bố mã hóa AES-256, hãy nhìn xa hơn mật mã: kiểm tra chế độ (GCM), dẫn xuất khóa (PBKDF2/Argon2 với số lần lặp cao), lưu trữ khóa (được hỗ trợ phần cứng), và dữ liệu nào thực sự được mã hóa (nội dung + siêu dữ liệu).
Kho tiền công dụng AES-256-GCM cho nội dung tệp, tiêu đề, siêu dữ liệu, chỉ mục và hình thu nhỏ. PBKDF2 với HMAC-SHA512 lấy khóa vault cục bộ từ mẫu và toàn bộ thiết bị Keychain muối; khóa đó mở khóa chính ngẫu nhiên được sử dụng để mã hóa tệp. Các hoạt động đối xứng chạy trong quy trình ứng dụng thông qua CryptoKit, trong khi iOS Keychain và Bảo vệ dữ liệu bảo vệ trạng thái khôi phục khi thiết bị bị khóa. Hệ thống phân cấp đầy đủ được ghi lại trong mô hình an ninh.