Mã hóa > Các loại mã hóa > Mã hóa AES
Mã hóa AES là gì?
Trong mật mã học, AES là viết tắt của Advanced Encryption Standard (Tiêu chuẩn mã hóa nâng cao), một thuật toán mã hóa nhanh, hiệu quả và an toàn được chứng nhận bởi Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NIST). Đây là một mật mã khóa đối xứng sử dụng cùng một khóa để vừa mã hóa vừa giải mã dữ liệu. Quá trình này diễn ra tương đối nhanh, lý tưởng để mã hóa lượng lớn dữ liệu tĩnh.
Nhờ tính bảo mật mạnh mẽ và độ tin cậy cao, AES là một trong những loại mã hóa phổ biến nhất được sử dụng trong bảo mật mạng không dây, mã hóa dữ liệu và mã hóa đĩa, hệ thống thanh toán trực tuyến, lưu trữ đám mây, quản lý mật khẩu và thậm chí cả các ứng dụng chính phủ và quân sự. Chính phủ Hoa Kỳ sử dụng mã hóa AES để bảo vệ thông tin mật, điều này đã góp phần làm tăng mức độ phổ biến của tiêu chuẩn này.

Thuật toán AES có an toàn không?
Có. Vào năm 2000, sau một quá trình lựa chọn rất kỹ lưỡng(cửa sổ mới) và công khai, NIST đã thông báo rằng AES (cho đến lúc đó được gọi là thuật toán Rijndael, do Vincent Rijmen và Joan Daemen) sẽ thay thế DES để trở thành khuyến nghị(cửa sổ mới) "thuật toán mã hóa không mật, được công bố rộng rãi, có khả năng bảo vệ thông tin nhạy cảm của chính phủ cho đến thế kỷ tiếp theo".
Theo NIST, tất cả các độ dài khóa của thuật toán AES đều được coi là "đủ" để bảo vệ thông tin mật lên đến cấp độ "Mật" (Secret). Đối với thông tin "Tối mật" (Top Secret), yêu cầu sử dụng AES-192 hoặc AES-256.

Tấn công vét cạn
Hình thức tấn công cơ bản nhất đối với bất kỳ mật mã hóa nào là tấn công vét cạn (brute-force attack), bao gồm việc thử mọi tổ hợp khóa có thể cho đến khi tìm thấy khóa chính xác.
Frontier(cửa sổ mới) là siêu máy tính công khai mạnh nhất thế giới hiện nay. Nếu dành toàn bộ hiệu suất để tấn công vét cạn AES-128, siêu máy tính này vẫn sẽ cần khoảng 10–12 nghìn tỷ năm để thử hết tất cả các tổ hợp có thể đối với AES-128. Thời gian này dài hơn rất nhiều so với tuổi của vũ trụ. Do đó, ngay cả ở kích thước bit thấp hơn, AES vẫn có khả năng chống lại các cuộc tấn công vét cạn từ máy tính thông thường rất cao.
AES-256 có độ khó khi tấn công vét cạn gấp 340 tỷ tỷ tỷ tỷ (2¹²⁸) lần so với AES-128.
Mặc dù thuật toán của Grover(cửa sổ mới) về mặt lý thuyết làm giảm một nửa độ bảo mật của các khóa đối xứng trước mối đe dọa lượng tử, chúng vẫn có khả năng kháng lượng tử tương đối tốt, đặc biệt là khi sử dụng khóa 256-bit.
Các cuộc tấn công khóa
Trong những năm qua, các nhà mật mã học đã công bố một số cuộc tấn công lý thuyết vào khóa AES, nhưng tất cả các cuộc tấn công này đều không khả thi trong thực tế hoặc chỉ hiệu quả trên các triển khai AES sử dụng số vòng lặp rút gọn (xem bên dưới).
Nỗ lực thành công nhất là cuộc tấn công biclique(cửa sổ mới) trên lý thuyết được công bố vào năm 2011, có thể giảm thời gian cần thiết để tấn công vét cạn AES đi bốn lần. Tuy nhiên, vẫn sẽ cần hàng tỷ năm để tấn công vét cạn AES trên bất kỳ phần cứng máy tính hiện tại hoặc trong tương lai gần nào.
Không có cuộc tấn công khóa nào đã biết là khả thi đối với AES-128 hoặc cao hơn nếu được triển khai đúng cách.
Tấn công kênh kề
Cuộc tấn công kênh kề cố gắng giảm số lượng tổ hợp cần thiết để thực hiện một cuộc tấn công vét cạn thành công bằng cách tìm kiếm các manh mối từ máy tính đang thực hiện các phép tính mã hóa. Manh mối có thể được thu thập bằng cách kiểm tra:
- Thời gian – thời gian máy tính cần để thực hiện một thao tác
- Rò rỉ điện từ
- Manh mối âm thanh
- Manh mối hình ảnh (thu thập bằng camera độ phân giải cao).
Đặc biệt, các cuộc tấn công thời gian bộ nhớ đệm (cache-timing attacks) đã chứng minh được hiệu quả khá cao trong việc bẻ khóa AES thành công. Trong ví dụ đáng chú ý nhất, vào năm 2016, các nhà nghiên cứu đã có thể khôi phục(cửa sổ mới) khóa AES-128 bằng cách chỉ sử dụng "khoảng 6 - 7 khối văn bản thuần túy hoặc văn bản mã hóa (về mặt lý thuyết, thậm chí chỉ cần một khối duy nhất là đủ)".
Tuy nhiên, có thể thực hiện một số biện pháp để giảm thiểu mối đe dọa từ các cuộc tấn công kênh kề:
- AES nếu được triển khai đúng cách có thể ngăn chặn các con đường rò rỉ dữ liệu.
- Phần cứng tích hợp tập lệnh AES sẽ giúp giảm thiểu hơn nữa bề mặt tấn công kênh kề của AES.
- Các kỹ thuật ngẫu nhiên hóa có thể được sử dụng để phá vỡ mối liên hệ giữa dữ liệu được AES bảo vệ và bất kỳ dữ liệu rò rỉ nào có thể bị thu thập qua cuộc tấn công kênh kề.
Trong nhiều trường hợp, tấn công kênh kề yêu cầu kẻ tấn công phải ở gần hoặc tiếp cận vật lý với thiết bị khi thiết bị giải mã dữ liệu, mặc dù các cuộc tấn công từ xa vẫn có thể xảy ra nếu phần mềm độc hại được cài đặt trên thiết bị, đặc biệt là đối với các cuộc tấn công thời gian.
Cách thức hoạt động của AES
AES là mật mã khối mã hóa và giải mã dữ liệu theo từng khối 128 bit bằng cách sử dụng các khóa 128-bit, 192-bit hoặc 256-bit. Như đã lưu ý ở trên, cùng một khóa được sử dụng cho cả việc mã hóa và giải mã dữ liệu. AES sử dụng khóa 128-bit thường được gọi là AES-128, tương tự đối với AES-192 và AES-256.

Dữ liệu được mã hóa bằng nhiều vòng, mỗi vòng bao gồm một chuỗi các phép toán học.
Quá trình bắt đầu bằng việc sử dụng thuật toán lập lịch khóa của Rijndael để tạo ra một chuỗi các khóa vòng mới từ khóa bí mật ban đầu. Quá trình này được gọi là mở rộng khóa.
Mỗi vòng sau đó bao gồm một hoặc nhiều (hoặc kết hợp) các phép toán sau:
1. Add Round Key (Cộng khóa vòng): Một phép toán XOR(cửa sổ mới) được thực hiện để kết hợp dữ liệu cần mã hóa (bản mã) với từng khóa vòng.

2. Sub Bytes: Một bảng thế được sử dụng để xáo trộn thêm dữ liệu. Về nguyên tắc, hãy nghĩ đến các mật mã thay thế đơn giản từng dùng khi còn nhỏ, trong đó mỗi chữ cái trong một thư được thay thế bằng một chữ cái khác lùi về sau một số vị trí nhất định trong bảng chữ cái.

3. Shift Rows: Mỗi khối dữ liệu 128-bit gồm một khối 4x4 16-bit. Hoạt động này dịch chuyển mỗi byte trong một hàng của khối sang trái theo một khoảng bù nhất định.

4. Mix Columns (Trộn cột): Một phép biến đổi tuyến tính nghịch đảo bổ sung được thực hiện trên mỗi cột trong khối.

Chuỗi các phép biến đổi này tạo thành một vòng, sau đó được lặp lại trên dữ liệu với số vòng cụ thể, tùy thuộc vào kích thước khóa:
- AES-128 — 10 vòng
- AES-192 — 12 vòng
- AES 256 — 14 vòng
Để giải mã dữ liệu, chỉ cần thực hiện ngược lại tất cả các bước được sử dụng để mã hóa dữ liệu đó. Quá trình này yêu cầu khóa bí mật gốc để đảo ngược quy trình bằng cách sử dụng từng khóa vòng nghịch đảo.
Tại sao AES-256 được ưa chuộng hơn AES-192 hoặc AES-128?
Với công nghệ hiện tại và trong tương lai gần, việc tấn công vét cạn AES-128 sẽ mất nhiều thời gian hơn cả tuổi của vũ trụ. Chuyên gia mật mã học huyền thoại Bruce Schneier thậm chí đã lập luận(cửa sổ mới) rằng AES-128 có thể mạnh hơn AES-256 nhờ có lịch trình khóa mạnh hơn — thuật toán tính toán tất cả các khóa vòng từ khóa bí mật ban đầu.
Tuy nhiên, AES-256 đã trở thành tiêu chuẩn vàng thực tế cho mã hóa khóa đối xứng. Phương thức này thường được xem là lựa chọn mạnh mẽ hơn (mặc dù còn một số tranh cãi) vì kích thước khóa lớn hơn biểu thị biên độ an toàn bổ sung, giúp dữ liệu được mã hóa vẫn an toàn ngay cả khi tìm thấy cách làm yếu thuật toán một cách đáng kể. Lập luận này càng trở nên thuyết phục hơn khi nhu cầu kháng hậu lượng tử ngày càng trở nên cấp bách.
AES-CBC so với AES-GCM
Cho đến gần đây, AES thường được sử dụng ở chế độ liên kết khối mã (CBC), trong đó mỗi khối văn bản thuần túy được XOR với khối bản mã trước đó trước khi được mã hóa. Khi được sử dụng ở chế độ CBC, cần có thuật toán băm HMAC(cửa sổ mới) như HMAC-SHA256 để xác minh dữ liệu.
Tuy nhiên, việc sử dụng AES ở chế độ Galois/counter (GCM) ngày càng trở nên phổ biến, chế độ này sử dụng chế độ đếm(cửa sổ mới) của mã hóa. Ưu điểm chính là chế độ này sử dụng trường Galois(cửa sổ mới) để xác minh dữ liệu mà không cần thuật toán bên ngoài. Do đó, phương thức này hiệu quả hơn so với việc sử dụng một thuật toán xác thực riêng biệt vốn có thể gây ra chi phí tính toán cao.
Mặc dù AES-CBC với xác thực HMAC thường được coi là an toàn, CBC vẫn có khả năng dễ bị tấn công bởi tấn công đệm(cửa sổ mới), chẳng hạn như POODLE(cửa sổ mới). GCM thì không.
AES tăng tốc bằng phần cứng
Hầu hết các CPU hiện đại đều tích hợp Advanced Encryption Standard New Instructions (AES-NI(cửa sổ mới)), một tập hợp các chỉ thị phần cứng thực hiện các hoạt động AES trực tiếp trên bộ xử lý. Điều này giúp AES nhanh hơn nhiều và cũng giúp ngăn chặn các cuộc tấn công kênh kề dựa trên thời gian (timing-based side-channel attacks) vì các hoạt động diễn ra bên trong các đơn vị thực thi an toàn của bộ xử lý, do đó có ít sự thay đổi về thời gian có thể quan sát được để kẻ tấn công khai thác.
Proton và AES
AES được sử dụng rộng rãi để bảo mật các sản phẩm Proton:
Các sự kiện và liên hệ được bảo mật bằng AES-256 kết hợp với ECC để trao đổi khóa nhằm đảm bảo quyền riêng tư thông qua mã hóa đầu cuối.
Proton VPN chủ yếu tập trung vào giao thức VPN WireGuard® nhanh chóng và hiệu quả (sử dụng ChaCha20), nhưng các kết nối OpenVPN sử dụng AES-256.
Proton Pass lưu trữ mật khẩu, ghi chú, danh tính và các mục khác bên trong kho an toàn bằng AES-256.
Proton Drive mã hóa đầu cuối tất cả các tệp được tải lên bằng AES-256 kết hợp sử dụng ECC để trao đổi khóa. Proton Docs và Proton Sheets cũng sử dụng AES-256 với tính năng trao đổi khóa dựa trên ECC, mặc dù việc triển khai mã hóa của các ứng dụng này khác với sơ đồ mã hóa tệp chung của Proton Drive.
Proton Mail lưu trữ email và tập tin đính kèm bằng AES-256 thông qua tiêu chuẩn OpenPGP. Ngay cả khóa riêng tư dùng để mở khóa email cũng được mã hóa bằng AES-256 trước khi được lưu trữ trên máy chủ.
Proton Meet sử dụng Messaging Layer Security (MLS) to mã hóa âm thanh, video và thư trò chuyện, đảm bảo tính bảo mật chuyển tiếp hoàn hảo (PFS) và bảo mật sau khi bị xâm phạm (PCS) cho mọi thông tin liên lạc. Tất cả dữ liệu cuộc họp đều đã mã hóa đầu cuối bằng AES-256-GCM.
Giảm thiểu các cuộc tấn công mã hóa AES
Hệ thống bảo mật chỉ mạnh bằng mắt xích yếu nhất, và đó thường là mật khẩu. Điều này có nghĩa là các chiêu trò thao túng tâm lý (social engineering), tấn công lừa đảo và phần mềm ghi nhật ký phím gõ(cửa sổ mới) (keyloggers) cũng là mối đe dọa đối với dữ liệu được mã hóa bằng AES. Do đó, ngay cả khi sử dụng AES, vẫn nên thực hiện các biện pháp phòng ngừa sau:
- Sử dụng một trình quản lý mật khẩu được mã hóa
- Sử dụng khóa bảo mật phần cứng (chẳng hạn như YubiKey) để tăng thêm một lớp bảo vệ
- Nếu thuộc một tổ chức, hãy thực hiện đào tạo bảo mật thường xuyên cho nhân viên để ngăn chặn các cuộc tấn công lừa đảo
Chủ động kiểm soát dữ liệu
Proton được xây dựng để bảo vệ dữ liệu ngay từ đầu. Với mã hóa đầu cuối, các ứng dụng nguồn mở và các cuộc kiểm toán độc lập, thông tin sẽ luôn được bảo toàn.
Câu hỏi thường gặp về mã hóa AES
- Tiêu chuẩn nào tốt hơn: AES hay DES?
- Lựa chọn nào tốt hơn: AES hay RSA?
- Bảo mật AES mạnh đến mức nào?


