Về phần mềm mã nhanh AES

15:02 | 01/11/2011

Tốc độ mã hóa dữ liệu yêu cầu ngày càng cao để phù hợp với tốc độ truyền tin trên các mạng CNTT - VT. Chính vì vậy, khả năng cài đặt nhanh thuật toán AES càng cần thiết. Bài viết giới thiệu nghiên cứu về việc cài đặt hiệu quả và an toàn thuật toán AES bằng phần mềm và môt số kỷ lục về tốc độ thực hiện AES bằng phần mềm trong những năm vừa qua.

1. Giới thiệu   
Vào năm 2001, như kết quả của một cuộc thi công khai, Rijndael đã được thông báo như Chuẩn Mã hóa Tiên tiến (AES) do Viện Chuẩn Quốc gia Mỹ (NIST) ban hành. Ngày nay, AES là một trong những nguyên thủy mã hóa được sử dụng rộng rãi nhất. Toàn bộ phổ của các thiết bị tính toán, từ các máy đầu cuối tốc độ cao, như các máy chủ mật mã chuyên dụng, cho tới các thẻ nhận thực tần số radio (RFID - radio frequency identification) tốc độ thấp, đều sử dụng chuẩn mã hóa này như một yếu tố cơ bản để thực hiện bảo mật. Bên cạnh các tính chất an toàn đã biết, AES  được thực hiện rất hiệu quả trên nhiều nền tảng khác nhau, từ các bộ vi điều khiển 8 bit tới các bộ xử lý 64 bit và FPGA. Thực ra, tính hiệu quả là độ đo quan trọng làm cho Rijndael thành chuẩn mã hóa.
Một lĩnh vực nghiên cứu không chỉ về việc tạo ra các cài đặt an toàn và hiệu quả hơn, mà còn để đánh giá hiệu suất của AES trên các kiến trúc khác nhau đã được phát triển và nhiều tác giả, nhóm tác giả đã công bố các bài báo về chủ đề này. Bắt đầu là những thử nghiệm từ năm 2000, khi Rijndael còn chưa được tuyên bố là thuật toán chiến thắng trong cuộc thi tuyển chọn AES thì một số bài báo đã trình bày về các cài đặt của 5 thuật toán dự tuyển AES cho PA- RISC và IA- 64, cho Alpha 21264, với Pentium, Pentium Pro, HP PA- 8200 và IA- 64, Pentium II... và với Pentium III, Pentium 4 và Athlon; đã cài đặt AES cho chế độ CTR cũng như chế độ xác thực (năm 2006).
Mitsuru Matsui không chỉ được biết đến như là tác giả của tấn công tuyến tính nổi tiếng lên mã khối mà còn là tác giả hoặc đồng tác giả của những công trình nghiên cứu về cài đặt AES cho Pentium III, Pentium 4 và cho Athlon 64.
Phần sau của bài viết giới thiệu một số kỷ lục về tốc độ thực hiện AES trên các nền tảng khác nhau dựa trên 3 bài báo được công bố trong 3 năm gần đây được xuất bản trong  các  kỷ yếu hội nghị: INDOCRYPT 2008, Cryptographic Hardware and Embeded Systems 2009 và Fast Software Encryption 2010.

2. Các kết quả của Daniel J. Bernstein và Peter Schwabe
Trong bài báo New AES software speed records, Daniel J. Bernstein và Peter
Schwabe đã thực hiện cài đặt AES cho 5 loại bộ vi xử lý như sau: Kiến trúc ppc32: 533MHz Motorola PowerPC G4 7410; Kiến trúc x86: 1900MHz Intel Pentium 4 f12; Kiến trúc Sparcv9: 900MHz Sun UltraSPARC III; Kiến trúc amd64: 2400MHz Intel Core 2 Quad Q6600 6fb; Kiến trúc amd64: 2000MHz AMD Athlon 64 X2 3800 +15/75/2.
Trong bài báo này cũng đã công bố các số liệu của một số công trình khác và phần mềm mã nguồn mở OpenSSL 0.9.8c để so sánh. Các số liệu trong bảng 1 là số chu kỳ cho một byte dữ liệu (cycles/byte).


Bảng 1: Các kết quả của Daniel J.Bernstein và Peter Schwable

Có nhiều công bố về tốc độ cài đặt AES trên các nền tảng khác nhau, nhưng thường các tác giả không công bố công khai mã nguồn. Daniel J. Bernstein và Peter Schwabe đã công bố mã nguồn để đảm bảo khả năng có thể kiểm tra các kết quả mà họ đã công bố; hơn nữa, họ còn công khai phần mềm để có thể sử dụng rộng rãi các kết quả này.

3. Các kết quả của Emilia Kasper và Peter Schwabe
Bài báo Faster and timin - attack resistant AES-GCM của Kasper và Schwabe đã được tặng giải thưởng là một trong những bài báo tốt nhất tại hội nghị CHES 2009. Bên cạnh việc AES đạt được tốc độ cài đặt cao trên bộ vi xử lý rất mới là Intel Core i7, các nghiên cứu này còn đưa ra khả năng chống lại một trong những tấn công cài đặt là tấn công thời gian tra cứu cache (cache- timing).
Các tấn công cache- timing là các tấn công kênh kề phần mềm, nó khai thác tính thay đổi thời gian của việc tải dữ liệu từ bộ nhớ. Tính thay đổi này có được là do tất cả các bộ vi xử lý hiện đại sử dụng một hệ thống thứ bậc của các cache nhằm giảm độ trễ tải nạp. Nếu thao tác tải nạp có thể lấy dữ liệu từ một trong số các cache (cache hit),  thì việc tải nạp chiếm ít thời gian hơn so với trường hợp dữ liệu phải lấy từ RAM (cache miss).
Trong bài báo này, tác giả đã phân tích một cách riêng rẽ khả năng tổn thương bởi tấn công cache - timing của 3 thành phần trong thuật toán AES- GCM là mã hóa, lược đồ khóa và xác thực. Ở đây chúng ta chỉ  đề cập tới các tấn công đối với việc mã hóa.
Một cài đặt thông thường của AES sử dụng các bảng tra cứu được tính trước để thực hiện S- box, việc này tạo khả năng cho tấn công cache - timing. Ví dụ, ở vòng thứ nhất của AES, các chỉ số của bảng tra cứu khi đó đơn thuần được xác định bởi phép XOR bản rõ với khóa vòng thứ nhất. Do kẻ tấn công biết hoặc thậm chí kiểm soát bản rõ, nên thông tin về các chỉ số tra cứu sẽ trực tiếp làm lộ thông tin về khóa.
Trong bài báo Cache - timing attacks on AES, Bernstein lần đầu tiên đã thực hiện tấn công khôi phục khóa cache - timing chống lại AES. Trong khi tấn công của Bernstein còn khó thực hiện, thì một loạt chiến lược cải tiến đã được thực hiện, ví dụ như:
- Bonneau and Mironov thao diễn tấn công mà phát hiện ra các cache hit trong chính thuật toán mã hóa. Tấn công của họ không yêu cầu sửa đổi cache chủ động, chỉ cần một phần các bảng bị đưa ra khỏi cache trước khi mã hóa;
- Aciicmez và các cộng sự nhận thấy rằng nếu thiết bị mã hóa đang chạy nhiều tiến trình, thì tải trọng trên thiết bị đích đạt được hiệu ứng làm sạch cache (cache -  cleaning) mong muốn và cung cấp các kết quả mô phỏng đề xuất rằng nó có thể khôi phục khóa mã AES thông qua tấn công đo thời gian từ xa thụ động;
- Osvik và các cộng sự đề xuất một mô hình tấn công mà ở đó kẻ tấn công nhận thông tin về các mẫu truy cập cache bằng cách sửa đổi cache giữa các lần mã hóa thông qua các tiến trình mức người dùng;
Ngoài ra còn có các công trình của Neve và các cộng sự, Bertoni và các cộng sự khác:
Trong Faster and timing - attack resistant AES-GCM đã tiến hành thực nghiệm với 3 máy tính có tên là Latour, Berlekamp và Dragon. Dưới đây giới thiệu các kết quả thực nghiệm với máy tính Berlekamp.

Các kết quả đạt được cho các kích thước gói khác nhau ở Bảng 2 (cho AES-CTR) và Bảng 3 (cho AES/GCM). Cột “simple Imix” chỉ các kích thước mô phỏng trung bình có trọng số của các gói IP điển hình: nó nhận các gói có kích thước 40 byte (7 phần), 576 byte (4 phần) và 1500 byte (1 phần).


Bảng 2: Hiệu suất thực hiện AES – CTR


Bảng 3: Hiệu suất thực hiện AES/GCM

Các kết quả mà Emilia Kasper và Peter Schwabe đạt được cho AES/GCM (tính cả giai đoạn xác thực) theo 2 cách dựa trên bảng và thời gian không thay đổi (theo dữ liệu).

4. Các kết quả của Osvik và các cộng sự
Người ta mong đợi rằng việc sử dụng các thiết bị khối lượng nhẹ, ví dụ như các thẻ thông minh có tốc độ thấp và các thẻ nhận thực tần số radio, trong thương mại điện tử và nhận thực sẽ phát triển nhanh chóng trong tương lai gần. Ví dụ, thị trường thẻ RFID thụ động được mong đợi sẽ đạt tới 486 triệu USD vào năm 2013, và AES đã thu hút được chú ý đáng kể do các khả năng của nó cho các thiết bị như vậy. Fast Software AES  Encryption đã khảo sát hiệu năng của AES trên các thiết bị sử dụng ít năng lượng (low-power); đặc biệt, các bộ vi điều khiển AVR 8 bit và các bộ vi xử lý ARM 32 bit. Các nền tảng khác được nêu tới trong bài báo này là kiến trúc CellNVIDIA Graphic Processing Unit (GPU), đó là những bộ vi xử lý có công suất lớn. Các kết quả đạt được được cho trong các Bảng 4 và Bảng 5.


Bảng 4: Các kết quả cài đặt AES-128 cho họ AVR và ARM


Bảng 5: Các kết quả cài đặt AES-128 trên một Synergistic Processing Element (SPE) của Sony`s Play Station3 và các GPU khác nhau

Trong đó: (P) = lược đồ khóa được tính trước; (F) = lược đồ khóa là on-the-fly; (T) = khai triển khóa trong bộ nhớ kết cấu;  (S) = khai triển khóa trong bộ nhớ dùng chung.

Các kết quả đạt được trong Fast Software AES Encryption đều nhanh hơn các kết quả tốt nhất đã được công bố trước nó trên cùng một nền tảng.

5. Kết luận

Tốc độ truyền tin trên mạng ngày càng tăng nhanh (trước đây tốc độ các mạng chỉ là 10/100Mb, còn ngày nay là các mạng tốc độ hàng Gb), chính vì thế mà tốc độ mã hóa dữ liệu cũng đòi hỏi ngày càng nhanh để việc sử dụng các thiết bị bảo mật không làm ảnh hưởng tới chất lượng các dịch vụ mạng. Chính vì vậy, việc cài đặt nhanh thuật toán mã khối AES (bằng phần cứng hoặc bằng phần mềm) ngày càng cần thiết. Tuy việc thực hiện thuật toán bằng phần mềm sẽ không nhanh bằng việc cứng hóa thuật toán, nhưng với những phân tích trên chứng tỏ rằng chỉ bằng phần mềm vẫn có thể đáp ứng tốt nhu cầu thực tế (tốc độ mã trên NVIDIA 8800 GTX, 1.35GHz đạt tới 23.3 Gb/sec)