CHƯƠNG 3 GIAO THỨC BẢO MẬT MẠNG KHÔNG DÂY CHUẨN IEEE 802
3.4.3.1. Counter Mode + CBC MAC: CCM
CCM sử dụng counter mode kết hợp với một phương pháp xác thực thông điệp được gọi là mã hóa khối móc nối (CBC). CBC được sử dụng để tạo ra một mã toàn vẹn thông điệp được gửi đi. MIC được gọi là mã xác thực thông điệp bởi cộng đồng mã hóa, cho nên CBC còn được gọi là CBC-MAC [4]. Các hoạt động của CBC-MAC tương đối đơn giản:
• Lấy khối đầu tiên trong thông điệp và mã hóa (sử dụng AES).
• XOR kết quả thu được với khối thứ 2 và tiếp tục mã hóa kết quả thu được.
• XOR kết quả thu được với khối tiếp theo rồi mã hóa nó. Cứ như vậy tiếp tục cho đến hết.
Kết quả là một khối duy nhất kết hợp tất cả các dữ liệu trong thông điệp. Hoạt động của CBC-MAC tương đối đơn giản nhưng không thể song song hóa như chế độ đếm, các hoạt động mã hóa phải thực hiện tuần tự.
Chế độ CCM sử dụng hai cách tiếp cận nổi tiếng: counter mode và CBC- MAC. Nó có thêm một số tính năng rất hữu ích cho một số ứng dụng như RSN. Các tính năng đó như là:
• Đặc điểm kỹ thuật của giá trị nonce là các thông điệp liên tiếp được phân cách mã hóa.
• Mã hóa và xác thực được liên kết với nhau theo một khóa độc lập. • Mở rộng xác thực bao gồm dữ liệu không được mã hóa.
Trong hầu hết các phương pháp vừa mã hóa và xác thực hiện có, một giả thiết được đưa ra rằng thông điệp sẽ được mã hóa toàn bộ. Tuy nhiên trong 802.11, chỉ một phần của thông điệp được mã hóa. Phần header của cấu trúc IEEE 802.11 chứa địa chỉ MAC được sử dụng để cung cấp cấu trúc cũng như các thông tin khác có liên quan đến hoạt động của mạng WiFi. Các trường này phải được gửi rõ ràng để các thiết bị không dây có thể hoạt động. Vì vậy, chỉ có phần dữ liệu được mã hóa. Tuy nhiên, header không được mã hóa,
người nhận vẫn muốn đảm bảo là nó không bị sửa đổi. Ví dụ, bạn không muốn kẻ tấn công có thể thay đổi địa chỉ nguồn, khi đó, bạn vô tình trả lời kẻ đó thay vì người gửi ban đầu. Để đạt được điều này, chế độ CCM cho phép mã hóa được thực hiện trên một phần con của thông điệp được xác thực bởi CBC-MAC.
Như một quy tắc chung, bằng cách sử dụng khóa chung cho chức năng mã hóa là không sáng suốt. Quy luật này dường như bị phá vỡ ở đây bởi vì cùng một khóa được dùng cho cả mã hóa và xác thực. Tuy nhiên, mặc dù sử dụng chung một khóa, trong mỗi trường hợp lại sử dụng kết hợp với một vector khởi tạo IV khác nhau (đó chính là việc xây dựng IV khác nhau cho chế độ counter mode và CBC-MAC), việc này dẫn đến hai khóa riêng biệt.