Chương 1 cũng đã giới thiệu về điện thoại thông minh Android và tổ chức phần cứng trong chiếc điện thoại này. Chương 2 sẽ giới thiệu thuật toán mã hóa có xác thực, đặc biệt là phân tích hai thuật toán AEGIS/CLOC và sử dụng hai thuật toán này xây dựng ứng dụng bảo mật thông tin video trong điện thoại Android. PHÂN TÍCH THUẬT TOÁN MÃ HÓA AEGIS/CLOC 2.1 Giới thiệu về mật mã có xác thực 2.1 Khái niệm Mã hóa có xác thực đang là một hướng đi mới trong cộng đồng mật mã hiện nay. Trong các nghiên cứu được công bố, nhìn chung (AE – Authenticated Encryption) hay mã hóa có xác thực dữ liệu liên kết (AEAD – Authenticated Encryption with Associated Data) là một dạng của hệ mật khóa đối xứng bảo đảm tính bí mật, tính toàn vẹn, và tính xác thực dữ liệu theo từng bước.
Trong đó, phép mã hóa sẽ được kết hợp với khối tạo nhãn (cho phép kiểm tra tính toàn vẹn), còn ở phép giải mã sẽ tiến hành kiểm tra nhãn nhận được. Tính bí mật bảo vệ thông tin bằng cách chuyển đổi bản rõ đầu vào thành các bit ngẫu nhiên độc lập, còn tính xác thực bảo đảm tính toàn vẹn và nguyên gốc của dữ liệu nhờ cơ chế phát hiện sự thay đổi bất kỳ của dữ liệu. Biến thể phổ biến nhất của AE là mã hóa có xác thực với dữ liệu liên kết AEAD. AEAD gắn dữ liệu liên kết (AD) với bản mã và bối cảnh nơi nó xuất hiện, do đó giúp phát hiện và ngăn chặn những nỗ lực “cắt và dán” (copy and paste) bản mã hợp lệ sang một ngữ cảnh khác.
Phần lớn các thuật toán xác thực sử dụng mã dòng hoặc mã khối làm cơ sở để mã hóa dữ liệu, đồng thời ứng dụng cấu trúc bảo toàn trạng thái mã hóa. Hàm cập nhật trạng thái (có phản hồi) được cấp thông số từ một vài đầu vào hoặc toàn bộ đầu vào để tạo nhãn đảm bảo tính xác thực. Nhãn xác thực này cho phép phát hiện các nỗ lực giả mạo. Đây chính là ưu thế của lược đồ kết hợp bảo đảm cả tính bí mật và cả tính toàn vẹn.
Tuy nhiên, các tấn công thực tiễn thường tập trung nhiều vào các ứng dụng và giao thức (SSL/TLS), cho thấy hệ mật an toàn cần phải kết hợp cả chế độ bảo mật với chế độ xác thực. Các hệ mật sử dụng khóa bí mật như: • Mã khối: bản tin ngắn có độ dài xác định được mã hóa bằng khóa bí mật, khóa này được chia sẻ giữa người gửi và người nhận. Ví dụ, hệ mật mã khối phổ biến là AES mã hóa từng khối dữ liệu 16-byte (128 bit) bằng khóa bí mật 128- bit, 192-bit hoặc 256-bit. • Mã dòng: bản tin có độ dài biến đổi sẽ được mã hóa nhờ sử dụng khóa bí mật chia sẻ giữa người gửi và người nhận, kèm một giá trị ngẫu nhiên công khai (public nonce).
• Mã xác thực thông báo (MAC): bản tin có độ dài thay đổi sẽ được rút gọn qua khối xác thực bằng khóa bí mật chia sẻ giữa người gửi và người nhận, kèm một giá trị ngẫu nhiên công khai (public nonce). Các hàm băm mật mã như SHA-3 và các biến thể của mã khối thường được sử dụng để xây dựng các mã xác thực thông báo – MAC.2 Nguyên lý thiết kế Cách tự nhiên nhất để xây dựng các lược đồ mã hóa xác thực là kết hợp các nguyên thủy mã hóa hiện có. Phương pháp này được gọi là “generic composition” [4]. Có ba cách tiếp cận chính, bao gồm: E&M (Encrypt and MAC), EtM (Encrypt then MAC) và MtE (MAC then Encrypt).
Nguyên lý thiết kế mật mã có xác thực Encrypt-and-MAC (E&M) MAC được tạo ra dựa vào bản rõ và bản rõ được mã hóa mà không cần MAC. MAC và bản mã được gửi đi cùng nhau. Cách tiếp cận này được sử dụng trong lớp vận chuyển (transport layer) của SSH Encrypt-then-MAC (EtM) Đầu tiên, bản rõ được mã hóa, sau đó MAC được sinh ra dựa trên bản mã kết quả. Bản mã và MAC được gửi đi cùng nhau.
Cách tiếp cận này được sử dụng trong giao thức IPsec. MAC-then-Encrypt (MtE) MAC được tạo ra dựa vào bản rõ. Sau đó bản rõ và MAC cùng được mã hóa để thu được bản mã. MtE được sử dụng trong giao thức SSL/TLS Thông qua nghiên cứu của mình, Ballare và Namprempre cũng đã chứng minh rằng mã hóa một bản tin, sau đó áp dụng MAC vào bản mã (EtM) là tối ưu hơn so với hai phương pháp còn lại Ngoài các cách tiếp cận tự nhiên như trên, cũng có nhiều cách khác để xây dựng mật mã có xác thực.
Trong những năm qua, nhiều lược đồ mã hóa xác thực hiệu quả hơn đã được xây dựng bằng các kỹ thuật khác nhau, bao gồm hoán vị không sử dụng khóa (keyless permutations) và mật mã dòng. Những cách tiếp cận mới này đã thay đổi hiểu biết của các nhà mật mã học về AE từ việc pha trộn các nguyên thủy mật mã sang xây dựng một một khối thống nhất ngay từ đầu.2 Phân tích và lựa chọn thuật toán cho ứng dụng 2.1 Đánh giá về hiệu suất xử lý Các kết quả thu được bằng cách thực thi nguyên thủy mã hóa AES ở chế độ CFB (Cipher Feedback) với khóa 128-bit (10 vòng) làm hệ mật cơ sở để đối chiếu với từng hệ mã có xác thực: ACORN, AEGIS, ASCON, CLOC và MORUS trên nền Java Card NXP JCOP J2A080. Phép đo sẽ xác định thời gian mã hóa và giải mã các phần dữ liệu dựa trên kết quả thời gian thực thi trên các file dữ liệu có kích thước khác nhau. Các file thông báo có kích thước dữ liệu khác nhau: 256 Bytes, 512 Bytes, 1KB và 2KB làm đầu vào cho các thuật toán.
Bằng cách so sánh giữa đầu ra từ các thực thi với đầu ra thực thi được cài đặt (kiểm tra ở mức byte). Thời gian xử lý (a) mã hóa và (b) giải mã có xác thực Dựa trên kết quả thời gian xử lý [3] ở hình 2.2 cho thấy AEGIS và CLOC là các hệ mật hiệu quả về thời gian, trong số các thuật toán xác thực đã chọn, vì chúng không sử dụng các phép toán dịch bit hoặc tính toán trước phức tạp và chỉ dùng cấu trúc đơn giản để duy trì trạng thái mã hóa. Giữa 2 hệ mật này, AEGIS đạt kết quả về thời gian tốt hơn bởi vì lõi của nó chỉ dùng 5 vòng AES (không cộng XOR với thành phần khóa) thực thi bằng các mảng tìm kiếm. Các giá trị thu được từ các mảng tìm kiếm làm giảm sự tính toán trên Java Card và do đó AEGIS nhanh hơn.
Đáng chú ý, AEGIS có hiệu suất tính toán lớn hơn so với AES (hệ mật cơ sở) khi xử lý các file dữ liệu lớn hơn; còn với các file dữ liệu nhỏ hơn, AEGIS phải tiền xử lý dữ liệu liên kết (AD), điều này làm nó chậm hơn so với AES. Với các file kích thước dữ liệu lớn, AEGIS sẽ nhanh hơn AES đáng kể (bởi nó chỉ dùng 5 vòng AES). Vì vậy, AEGIS và CLOC sẽ phù hợp hơn cho các thiết bị di động, các thẻ RFID và các thiết bị IoT. Cũng từ hình 2.2, cho thấy MORUS mất khá nhiều thời gian để mã hóa (với file dữ liệu 1 KB, nó sẽ mất khoảng 1200 giây, tức là cỡ 20 phút để mã) nên không phù hợp để sử dụng trong thực tiễn.
Nguyên nhân làm giảm hiệu suất của thuật toán MORUS chính là do sử dụng quá nhiều các phép toán dịch bit. Các phép dịch bit có giá trị khi thao tác bit (xử lý hướng bit), nhưng nó làm giảm hiệu suất. Mặc dù, có thể tổ chức kết hợp dịch byte, sau đó mới dịch bit nhưng cần nhiều thời gian để tinh chỉnh chi tiết hơn. Tuy vậy nhưng MORUS có kết quả về hiệu suất vẫn cao hơn ASCON, ACORN về mặt tốc độ xử lý thuật toán, vì vậy ASCON và ACORN không phù hợp khi ứng dụng vào ứng dụng yêu cầu thời gian thực.2 Đánh giá về tài nguyên chiếm dụng của các thuật toán Tài nguyên thực thi được xét đến trong đây là kết quả về bộ nhớ chiếm dụng của các thuật toán mã hóa.
Dưới đây là bảng thống kê kết quả dung lượng bộ nhớ bị chiếm dụng theo từng thuật toán [3]: Bảng 2. Dung lượng bộ nhớ bị chiếm dụng theo từng thuật toán Hệ mật RAM (Byte) EEPROM (Byte) Kích thước hệ mật (Byte) ACORN 845 1690 5760 AEGIS 468 4176 12623 ASCON 476 190 5742 CLOC 832 1247 10149 MORUS 192 180 8302 Dựa vào kết quả trên bảng dung lượng bộ nhớ bị chiếm dụng đã chỉ rằng, thuật toán MORUS đạt hiệu quả về bộ nhớ là tốt nhất, chỉ dùng 192 Bytes bộ nhớ RAM để lưu các trạng thái mã hóa và các giá trị trung gian và chỉ chiếm dụng kích thước nhớ EEPROM (180 Bytes). ASCON cũng cho thấy hiệu quả về vùng nhớ: 476 Bytes RAM và 190 Bytes EEPROM. CLOC cũng cho 1 kết quả về hiệu suất chiếm dụng bộ nhớ ở mức trung bình ở cả 2 thông số, còn đối với thuật toán ACORN, vùng nhớ EEPROM thực hiện ACORN là 1690 Bytes, bộ nhớ RAM bị chiếm dụng nhiều nhất trong các thuật toán 845 Bytes (gồm 293 Bytes bảo toàn các trạng thái mã hóa).
AEGIS chiếm hơn 4 KB bộ nhớ EEPROM để lưu các mảng tìm kiếm phục vụ các vòng xử lý của AES nhưng chỉ chiếm có 468 Bytes bộ nhớ RAM.3 Đánh giá kết quả hiệu suất các thuật toán Dựa trên các kết quả về hiệu suất xử lý cũng như chiếm dụng bộ nhớ hình 2.2 chỉ ra mối quan hệ tương ứng giữa hiệu suất xử lý và vùng nhớ bị chiếm dụng, giúp chọn lựa thuật toán phù hợp với kiểu thẻ thông minh. Quan hệ tương đối giữa hiệu suất thời gian xử lý – vùng nhớ bị chiếm dụng của từng thuật toán Qua kết quả hình 2.3 cho thấy hệ mật AEGIS chiếm dung lượng nhớ EEPROM lớn, nhưng lại là hệ mật nhanh nhất, giá trị h(time) đạt cực đại; MORUS chiếm dụng bộ nhớ tối thiểu với hiệu suất về thời gian vừa phải nhưng tốc độ vẫn còn chậm; ACORN thể hiện hiệu suất theo thời gian là kém nhất, vùng nhớ RAM bị chiếm dụng lớn nhất trong Java Card; ASCON đạt hiệu quả về bộ nhớ nhưng không đạt hiệu quả về thời gian xử lý; CLOC không hiệu quả về bộ nhớ nhưng lại đạt hiệu quả cao về thời gian. Do đó việc lựa chọn thuật toán AEGIS để áp dụng lên thiết bị Android giúp tối ưu hiệu xuất về thời gian xử lý, một yếu tố rất quan trọng trong ứng dụng mang tính thời gian thực.3 Thuật toán AEGIS/CLOC 2.1 Thuật toán AEGIS AEGIS được xây dựng từ chức năng vòng mã hóa AES (không phải vòng cuối cùng).