CHƯƠNG 3 GIAO THỨC BẢO MẬT MẠNG KHÔNG DÂY CHUẨN IEEE 802
3.3.3. Phân cấp khóa nhóm
IEEE 802.11 hỗ trợ thông điệp multicast và broadcsat. Một ví dụ trong đó multicast là hữu ích là phân phối video. Nếu bạn muốn gửi một phát sóng trực tiếp tới nhiều trạm, bạn không muốn phải gửi cho từng trạm riêng lẻ - bạn cần truyền tải một bản sao lên trên mạng LAN và cho phép tất cả các trạm có liên quan để nhận các khung hình video. Đây là một ví dụ về nhóm multicast. Một trường hợp đặc biệt của multicast là broadcast, trong đó thông điệp được gửi đến tất cả các thiết bị trong mạng LAN. Broadcast được sử dụng rộng rãi trong giao thức mạng LAN.
Trong một mạng lưới cơ sở hạ tầng (có nghĩa là, một mạng sử dụng một điểm truy cập), multicast được chỉ được gửi từ các điểm truy cập đến các thiết bị di động. Các thiết bị di động không được phép gửi broadcast trực tiếp. Tuy nhiên, họ có thể bắt đầu một phiên broadcast bằng cách gửi thông điệp tới các điểm truy cập, sau đó broadcast trên danh nghĩa của trạm (để cả hai thiết bị không dây và có dây LAN gắn liền). Về phía không dây, chúng ta muốn multicast và broadcast sẽ được mã hóa và bảo vệ khỏi sự can thiệp.
Chúng ta không thể sử dụng các khóa cặp cho gói tin broadcast. Mỗi thiết bị di động có một bộ khóa cặp khác nhau, như vậy sẽ là cần thiết để gửi các bản sao của các broadcast, mỗi mã hóa khác nhau. Trong khi điều này sẽ không hiệu quả và không thực hiện được trong thực tế. Do đó, một hệ thống phân cấp khóa riêng biệt được duy trì đặc biệt để sử dụng trong việc mã hóa multicast. Điều này được gọi là hệ thống phân cấp khóa nhóm.
Không giống như các khóa cặp, tất cả các thiết bị di động và các điểm truy cập chia sẻ một bộ khóa nhóm. Điều này cho phép tất cả các trạm để giải mã một thông điệp multicast được gửi từ các điểm truy cập. Trong khi điều này giải quyết một số vấn đề, nó cũng tạo ra một điều: làm thế nào để xử lý các trường hợp trong đó một trạm di động rời mạng.
Nếu một thiết bị di động lựa chọn để rời khỏi WiFi LAN, cần thông báo cho các điểm truy cập bằng cách gửi thông điệp tách IEEE 802.11. Khi thực hiện điều này, các điểm truy cập sẽ xóa các bản sao của các khóa cặp cho các thiết bị di động xuất phát và ngừng gửi đi các thông điệp. Nếu các thiết bị muốn nối lại sau đó, nó phải đi qua cả giai đoạn thành lập chính từ đầu. Nhưng còn về khóa nhóm? Mặc dù thiết bị đã rời mạng, nó vẫn có thể nhận và giải mã các multicast được gửi bởi vì nó vẫn có một khóa nhóm có sẵn. Đây là điều không thể chấp nhận được từ quan điểm bảo mật. Nếu một thiết bị rời mạng, nó sẽ không còn được phép truy cập bất kỳ ở đâu.
Các giải pháp cho vấn đề này là thay đổi khóa nhóm khi một thiết bị rời mạng. Điều này cũng giống như thay đổi ổ khóa nhà bạn khi có một vị khách ở dài hạn chuyển đi. Bạn không muốn bất cứ ai có một chìa khóa khi người đó không sống trong ngôi nhà của bạn nữa. Vì vậy, khóa nhóm cần phải được làm mới.
Đàm phán các khóa cặp là phức tạp bởi vì chúng ta đã phải bắt đầu với kết nối không an toàn và có nhiều nguy cơ từ các cuộc tấn công snooping đơn giản đến giả mạo thông điệp. Đối với khóa nhóm dễ dàng hơn vì chúng ta có thể chờ đợi cho đến khi các khóa cặp được thành lập và sau đó sử dụng các liên kết an toàn để gửi các giá trị quan trọng của khóa nhóm. Điều này cung cấp một sự đơn giản hóa đáng kể và có nghĩa là các giá trị khóa nhóm có thể
được gửi trực tiếp đến từng trạm mà không cần quan tâm đến bị chặn hoặc sửa đổi. Khóa nhóm phân phối chính được thực hiện bằng cách sử dụng các thông điệp EAPOL-Key, như đối với khóa cặp. Tuy nhiên, chỉ có hai thông điệp là cần, không phải bốn.
Các điểm truy cập thực hiện các bước sau đây trong quá trình phân phối khóa nhóm:
1. Tạo một nhóm khóa chủ 256-bit (Group Master Key).
2. Lấy 256-bit khóa nhóm khóa tạm thời (Group Transient Key) mà từ đó thu được các Temporal Key.
3. Sau khi mỗi cặp kết nối bảo mật được thiết lập:
• Gửi GTK cho thiết bị di động với số thứ tự hiện thời. • Kiểm tra sự xác nhận.
Bởi vì việc cập nhật các khóa nhóm theo thời gian là rất cần thiết, một phương pháp là cần thiết để thực hiện cập nhật mà không gây ra lỗi trong dịch vụ. Đây sẽ là một vấn đề nếu các thiết bị di động có thể lưu trữ chỉ có một khóa nhóm duy nhất vì nó cần có thời gian để đi đến từng thiết bị và cung cấp cho chúng tất cả các giá trị khóa mới. Khóa nào bạn sẽ sử dụng cho việc truyền multicast trong kỳ bản cập nhật này? Cũ hay mới? Cho dù bạn đã chọn cái nào, một số các trạm sẽ không thể giải mã được.
May mắn thay, các tiêu chuẩn WEP đã cung cấp cho nhiều khóa được lưu trữ trong các thiết bị di động: Lên đến bốn khóa có thể được cài đặt cùng một lúc. Mỗi khung truyền mang một trường 2-bit gọi là KeyID, quy định cụ thể bốn khóa nên được sử dụng để giải mã. Khóa cặp được gửi đi với một giá trị KeyID là “0”. Nhưng chúng ta có thể tận dụng của ba giá trị còn lại để cập nhật khóa nhóm.
Giả sử rằng hiện tại các khóa nhóm được cài đặt vào KeyID 1. Khi chúng ta muốn cập nhật, Athenticator sẽ gửi khóa mới với hướng dẫn để đặt nó ở KeyID 2. Trong giai đoạn cập nhật quan trọng này, multicast được sử dụng vẫn gửi KeyID 1 cho đến khi tất cả các trạm đã được thông báo về các khóa mới. Cuối cùng, Authenticator chuyển mạch và tất cả các multicast từ đó (cho đến khi sự thay đổi quan trọng tiếp theo) được gửi đi với KeyID 2.
Bây giờ chúng ta đã biết làm thế nào để gửi GTK, nhưng như thế nào mà GMK tạo ra và làm thế nào GTK được suy ra? Trong trường hợp của các khóa cặp, các PMK được sản xuất bằng phương pháp thẩm định lớp trên (hoặc bằng cách sử dụng các khóa được chia sẻ trước). Rõ ràng, quá trình này không áp dụng cho các khóa nhóm do khóa không được tạo ra cho mỗi thiết bị. Tuy nhiên, vì đối tượng của các khóa nhóm chỉ là để bảo vệ các thông điệp và không cung cấp chứng thực, không có nhu cầu để trói buộc các khóa vào danh tính của bất kỳ thiết bị cụ thể. Trong thực tế, khóa có thể được tùy ý lựa chọn. Bạn thậm chí còn không có vấn đề gì để đảm bảo rằng cả hai đầu của một liên kết chọn cùng một giá trị bởi vì các điểm truy cập đơn giản là gửi các giá trị của nó được lựa chọn trong các thông điệp EAPOL-Key.
Vì vậy, các quy tắc là như sau: điểm truy cập phân bổ một GMK chỉ đơn giản bằng cách chọn ngẫu nhiên một giá trị ngẫu nhiên có tính chất mật mã 256-bit. Điều này nghe có vẻ dễ dàng, nhưng đó là một vấn đề: cụm từ "một giá trị ngẫu nhiên có tính chất mật mã" là rất quan trọng. Nhiều ngôn ngữ lập trình cung cấp một chức năng "ngẫu nhiên" tạo ra một số theo yêu cầu. Thông thường các con số được tạo ra ngẫu nhiên, nhưng thực sự là có thể dự đoán. Họ có thể đến từ một bảng lưu trữ hoặc được bắt nguồn từ giá trị “clock”. Nếu kẻ tấn công biết cách số "ngẫu nhiên" của bạn được tạo ra, kẻ đó có thể đoán GMK của bạn. Một giá trị ngẫu nhiên có tính chất mật mã có nghĩa là không có ai có thể biết những gì về các giá trị ngẫu nhiên đó cho đến thời điểm nó được tạo ra. Các phương pháp để tạo ra con số như vậy được đề nghị trong tiêu chuẩn IEEE 802.11i.
Khi GMK được chọn, nó là cần thiết để lấy được các Temporal Key. Hai khóa được yêu cầu:
• Khóa nhóm mã hóa (Group Encryption key - 128 bit) • Khóa nhóm toàn vẹn (Group Integrity key - 128 bit)
Sự kết hợp của hai khóa này tạo thành một giá trị 256-bit, các GTK. Đây là giá trị được gửi bởi các điểm truy cập cho mỗi trạm trực thuộc. Các GTK có nguồn gốc từ GMK bằng cách kết hợp với một giá trị nonce và địa chỉ MAC của các điểm truy cập. Cho rằng GMK là hoàn toàn ngẫu nhiên để bắt
đầu, đây được cho là một bước không cần thiết nhưng nó cung cấp tính nhất quán với các trường hợp khóa cặp.
Tóm tắt về quá trình thành lập khóa:
Các bước sau đây tóm tắt quá trình xây dựng và phân phối các khóa được sử dụng bởi WPA hoặc RSN :
1. Nếu bạn đang sử dụng một máy chủ bảo mật, giai đoạn xác thực được hoàn thành bằng cách sử dụng một chứng thực lớp trên. Nếu thành công, cả Supplicant và Authenticator sẽ được cho phép tham gia vào mạng. Nếu bạn đang sử dụng một khóa chia sẻ trước đó, xác thực được công nhận và sau đó xác nhận trong khi bắt tay chủ chốt bốn chiều.
2. Sau khi được ủy quyền, các thiết bị di động và điểm truy cập thực hiện bắt tay bốn bước để tạo ra các Temporal Key và chứng minh sự hiểu biết lẫn nhau về PMK .
3. Cuối cùng các điểm truy cập tính toán và phân phối khóa nhóm. Chỉ sau khi tất cả các giai đoạn đã hoàn thành thì dữ liệu người dùng cuối cùng được phép di chuyển giữa Supplicant và Authenticator. Cuối cùng các liên kết truyền thông là mở và tất cả các khóa có sẵn để thực hiện mã hóa và bảo vệ cần thiết.