Trong kiến trúc RSN, có hai loại khóa được sử dụng cho việc mã hóa ở tầng liên kết dữ liệu. Loại thứ nhất được gọi là khóa cặp (pairwise key) được sử dụng để mã hóa luồng
thông tin unicast giữa điểm truy cập và thiết bị sau khi đã kết nối. Loại thứ hai được gọi là khóa nhóm (group key) được sử dụng để mã hóa luồng thông tin broadcast và multicast giữa điểm truy cập và thiết bị.
a. Cây phân cấp khóa cặp
Cây phân cấp khóa được xây dựng bắt đầu bởi khóa cặp chính (PMK – Pairwise Master Key). Chuẩn 802.11i cho phép khóa cặp chính có thể được tạo ra theo hai cách. Một là nhờ quá trình xác thực giữa điểm truy cập và thiết bị, PMK được tạo ra bởi máy chủ xác thực, sau đó được phân phối tới điểm truy cập và thiết bị. Cách thứ hai là PMK có thể được cấu hình sẵn ở cả điểm truy cập và thiết bị dưới dạng khóa chia sẻ trước (PreShared Key - PSK).
Khóa chia sẻ là một mật khẩu có độ dài 20 đến 63 byte được cấu hình sẵn trong thiết bị và điểm truy cập. Khóa chia sẻ có thể được cấu hình theo từng thiết bị hoặc cấu hình toàn cục cho cả mạng không dây. Từ PSK này, PMK được sinh ra ra. Tuy vậy, chuẩn 802.11i không đặc tả cách thức sinh PMK từ PSK mà để mở cho các nhà sản xuất phần cứng. Theo đó, phần lớn các nhà sản xuất thiết bị (tuân theo quy định của hiệp hội WiFi) sử dụng hàm PBKDFv2 [30] để sinh ra khóa PSK có độ dài 256 bit từ PSK.
Cả hai giao thức mã hóa TKIP và CCMP đều hoạt động theo cùng một nguyên tắc: sử dụng khóa bí mật chính này để tạo ra các khóa khác nhau sử dụng trong quá trình mã hóa khung tin. Theo cách này, các thiết bị có thể thay đổi khóa mà không cần thực hiện lại quá trình xác thực với điểm truy cập.
Khóa cặp chính có độ lớn 256-bit, được giữ ở cả điểm truy cập và thiết bị. Khóa cặp chính này là duy nhất giữa các luồng truyền thông từ điểm truy cập tới thiết bị. Từ khóa cặp chính này, thông qua hàm sinh số giả ngẫu nhiên được định nghĩa sẵn, cây phân cấp khóa cặp được hình thành.
Hình 2-11. Cây phân cấp khóa cặp
Như trên hình vẽ, cả TKIP và CCMP đều sử dụng hàm sinh số giả ngẫu nhiên tạo ra các khóa cặp quá độ (TKIP PTK và CCMP PTK). Cả TKIP PTK và CCMP PTK sử dụng hai khóa 128 bit (KCK và KEK) để mã hóa dữ liệu thông điệp khóa được truyền giữa điểm truy cập và thiết bị. Khóa đầu tiên, KCK (EAPOL Key Confirmation Key), được sử dụng để tính mã kiểm tra toàn vẹn của thông điệp khóa. Còn khóa KEK (EAPOL Key Encryption Key) được sử dụng để mã hóa thông điệp khóa. Khóa thứ 2 có độ rộng 128 bit chính là khóa phiên được sử dụng trong cả hai phương pháp mã hóa.
Khác với CCMP PTK, TKIP PTK có độ dài 512 bit, trong đó 128 bit cuối cùng được sử dụng để tính toán mã toàn vẹn MIC trong quá trình hoạt động của TKIP.
b. Cây phân cấp khóa nhóm
Giống như cây phân cấp khóa cặp, cây phân cấp khóa nhóm cũng được xây dựng bắt đầu từ đỉnh với khóa nhóm chính (GMK – Group Master Key). GMK có độ lớn 128bit được tạo ra và duy trì bởi điểm truy cập. Điểm truy cập sẽ tạo ra và duy trì GMK (có độ lớn 128 bit). Từ GMK, điểm truy cập sử dụng hàm sinh số giả ngẫu nhiên để sinh ra khóa quá độ GTK. Với TKIP, GTK có độ lớn 256 bit bao gồm 128 bit khóa phiên và 128 bit khóa toàn vẹn (MIC key). Với CCMP, GTK có độ lớn 128 bit – chính là khóa phiên được sử dụng để mã hóa luồng dữ liệu broadcast và multicast.
Hình 2-12. Cây phân cấp khóa nhóm