5. Bố cục Luận văn
2.2. Thuật toán mã khối AES
2.2.3. Một số yêu cầu đảm bảo an toàn khi ứng dụng mã khối AES
Hệ mã khối AES có vai trò quan trọng và được sử dụng nhiều trong các hệ thống an toàn và bảo mật. Tuy nhiên, ta cần tuân thủ một số yêu cầu về cài đặt hiệu quả và chọn lựa chế độ làm việc cho AES nhằm đảm bảo an toàn khi ứng dụng.
Yêu cầu cài đặt hiệu quả AES trong thực tế:
Cách cài đặt trực tiếp là cách khá tốt đối với các bộ vi xử lý 8-bit, nhưng không hiệu quả với các bộ vi xử lý 32-bit hoặc 64-bit. Đối với các bộ vi xử lý (hoặc thiết bị có tài nguyên nhỏ), việc cài đặt tối ưu cần chú ý vấn đề sau:
- S-box: có thể lưu bảng tra đơn (1 S-box 8 bit) hoặc tính toán qua các phép tính số học trên GF(28).
- Biến đổi MixColumns: có thể tính phép nhân một phần tử với các hằng số 0x09, 0x03, 0x0b, 0x0d, 0x0e có thể được tính thông qua các phép nhân với hằng số 0x02, 0x01. Cụ thể:
a.0x03 = (0x02.a) +(0x01.a) = (0x02.a) ^ a
a.0x09 = (((a.0x02).0x02).0x02) + (0x01.a)= (((a.0x02).0x02).0x02)^a a.0x0b = (((a.0x02).0x02).0x02) + (a.0x02) + (a.0x01)
= (((a.0x02).0x02).0x02) ^ (a.0x02) ^ a
Với các bộ vi xử lý 32-bit hoặc 64-bit có một cách cài đặt khác, tối ưu hơn là gộp 3 phép biến đổi trong hàm vòng (gồm ShiftRows, MixColumns và SubByte) thành một bảng tra. Với mỗi một cột (4 byte) của ma trận trạng thái, định nghĩa 4 bảng như sau:
Khi đó, cột đầu ra của ma trận trạng thái là:
Với cách tiếp cận như vậy, toàn bộ hàm vòng có thể được cài đặt thông
0 1 2 3
02 03 01 01
01 02 03 01
, , ,
01 01 02 03
03 01 01 02
S a S a S a S a
S a S a S a S a
T a T a T a T a
S a S a S a S a
S a S a S a S a
0 1 2 3
0, 1,
0 0, 1 1, 2 2, 3 3, b
2, 3,
, 0 N
j j
j C j C j C j C
j j
d
d T a T a T a T a j
d d
32-bit). Việc giải mã sẽ sử dụng 16 bảng tra ngược lại (tương tự). Hơn thế nữa, trong trường hợp bộ nhớ hạn hẹp, ở mỗi chiều mã hóa/giải mã, chỉ cần lưu giữ một bảng tra T0. Vì bảng tra T1, T2, T3 đều có thể được tính từ T0 (chỉ là phép quay vòng của T0). Mỗi bảng lưu trữ mất khoảng 1KB. Chỉ cần lưu trữ 2 bảng cho mã và giải mã nên cách cài đặt tối ưu này cho phép AES có tốc độ vượt trội so với mã khối khác.
Lựa chọn chế độ làm việc cho AES:
Mỗi chế độ làm việc của mã khối đều có những ưu nhược điểm riêng, cần tìm hiểu và lựa chọn áp dụng.
Chế độ ECB có ưu điểm là các khối được mã độc lập nên việc cố tình thay thế các khối không ảnh hưởng đến việc giải mã của các khối lân cận, nhưng cú nhược điểm là khụng giấu được cỏc mẫu dữ liệu, khối rừ giống nhau dẫn đến khối mã giống nhau, dễ dẫn đến tấn công chuyển tiếp nên ECB không được khuyến cáo sử dụng cho thông báo dài hơn một khối, hoặc khi khóa được sử dụng lại cho nhiều hơn một thông báo có duy nhất một khối. Độ an toàn có thể được cải thiện bằng cách đưa vào các bit đệm ngẫu nhiên trong mỗi khối nhưng hiện tại ECB được khuyến cáo không dùng trong mã dữ liệu thông thường.
Chế độ CBC là chế độ được sử dụng nhiều nhất nhưng có nhược điểm là mã hóa tuần tự, không song song hóa được (nhưng giải mã thì có thể), một bit khối mã bị thay đổi, dẫn đến việc giải mã sai toàn bộ các khối sau đó, được khuyến cáo không sử dụng trong mã dữ liệu trực tuyến.
Chế độ CFB có ưu điểm là chế độ mã biến mã khối thành một mã dòng tự đồng bộ, chỉ làm việc theo một hướng (mã), không phải đồng bộ, nhưng có nhược điểm là mã hóa tuần tự, không song song hóa được (nhưng giải mã thì có thể), một bit khối mã bị thay đổi, dẫn đến việc giải mã sai một bit của khối và toàn bộ các khối sau đó.
Chế độ OFB có ưu điểm là chế độ mã dòng và chỉ làm việc theo một hướng (mã) nhưng có nhược điểm giống như CFB, không chống lại được tấn công chuyển tiếp.
Chế độ CTR sử dụng thêm giá trị Nonce (là giá trị ngẫu nhiên). Giá trị counter có thể được tạo ra thông qua một hàm tăng nào đó. CTR là mã dòng, do không có phản hồi nên song song hóa được (tận dụng tốc độ của bộ vi xử lý) và thời gian mã hóa và giải mã giảm. Đây chính là ưu thế của CTR so với CFB và OFB nhưng có nhược điểm là tồn tại tấn công lỗi phần cứng có sử dụng các hàm đếm đơn giản.
Với các chế độ làm việc của mã khối có sử dụng vector khởi tạo, IV này không cần phải giữ bí mật nhưng cần đảm bảo tính toàn vẹn khi sử dụng.