Phương pháp bảo mật dựa trên TKIP

Một phần của tài liệu nghiên cứu giải pháp bảo mật mạng không dây wlan (Trang 54)

TKIP được tạo ra nhằm nâng cấp độ bảo mật cho WEP. Khi WEP bị hack, ngay tức khắc toàn bộ hàng triệu hệ thống WLAN rơi vào tình trạng không an toàn. Cần tìm một giải pháp làm sao nâng cấp được các hệ thống đang tồn tại để đảm bảo độ an toàn cao hơn.

Và giải pháp đó chính là TKIP, yêu cầu đặt ra là TKIP vẫn hoạt động được trên các hệ thống sử dụng WEP đang tồn tại. Trong trường hợp với AES, đó là giải pháp được thiết kế từ đầu, các nhà thiết kế có thể tập trung vào giải pháp tốt nhất có thể, vừa đảm bảo việc triển khai khả thi đồng thời thực hiện với chi phí hợp lý. Ở một vài khía cạnh nào đó, do được thiết kế từ đầu nên AES giải quyết vấn đề một cách đơn giản hơn. Nhưng TKIP thì khác, nó bị ràng buộc bởi phải làm sao đảm bảo an toàn dựa trên nền tảng WEP đã và đang sử dụng.

2.3.2.1. Những điểm khác biệt của TKIP so với WEP

TKIP đưa ra một loạt những cải tiến nhằm khắc phục những điểm yếu tồn tại trong WEP. Không thể thay đổi các thành phần chính như việc RC4 được thực hiện bằng phần cứng, nhưng có thể thêm các công cụ điều chỉnh liên quan đến phần cứng đó. Các điều chỉnh đối với WEP để tạo ra TKIP được tóm lược trong bảng 2.2. Những điểm yếu của WEP cần khắc phục được nêu ra trong bảng 2.1.

Bảng 2.1: Những điểm yếu của WEP 1 IV quá ngắn và không khắc phục được việc tái sử dụng.

2 Cách tạo ra các khóa từ IV khiến nó dễ bị tấn công vào các khóa yếu. 3 Không có cơ chế phát hiện việc giả mạo gói tin.

4 Sử dụng trực tiếp khóa chính và không có cơ chế nâng cấp khóa. 5 Không có biện pháp ngăn chặn việc gửi lại gói tin.

Mục đích Thay đổi Điểm yếu được khắc phục Toàn vẹn gói tin

Thêm giao thức toàn vẹn gói tin để ngăn chặn việc giả mạo gói tin, dựa trên phần mềm chạy trên vi xử l ý tốn ít năng (3) Lựa chọn và sử

dụng IV

Thay đổi cách sử dụng IV và sử dụng

lại IV như một bộ đếm để tính ngược. (1) (3) Tạo khóa cho mỗi

gói tin Thay đổi khóa cho mỗi gói tin. (1)(2)(4) Kích thước của IV Tăng kích cỡ của IV để tránh lặp lại. (1)(4) Quản lý khóa Thêm cơ chế phân phối và thay đổi các

khóa Broadcast

(4)

a. Tính toàn vẹn gói tin

Tính toàn vẹn của gói tin là một phần quan trọng của bảo mật. Nếu kẻ gian có thể thay đổi nội dung gói tin thì dẫn đến nhiều khả năng hệ thống bị vô hiệu hóa. WEP có một biện pháp để phát hiện sự thay đổi này gọi là ICV như đã được nói đến ở phần trước nhưng ICV thực sự chẳng có tác dụng gì. Nó không được coi là một phần của TKIP cho dù giá trị đó vẫn được kiểm tra.

Nếu muốn phát hiện sự thay đổi này, một phương pháp đơn giản là thêm vào mỗi byte trong gói tin một giá trị kiểm tra và sau đó gửi đi cùng gói tin. Bên thu có thể thực hiện tính toán tương tự và kiểm tra xem có cho ra cùng kết quả. Nếu một bit bị thay đổi, tổng đó sẽ không cho kết quả đúng.

Thuật ngữ chuẩn sử dụng trong bảo mật để chỉ giá trị kiểm tra là mã chứng thực gói tin (MAC- Message Authentication Code). Nhưng thuật ngữ này lại trùng với MAC sử dụng trong mạng LAN để chỉ việc điều

khiển truy nhập chung, vì vậy, để tránh nhầm lẫn, trong chuẩn IEEE 802.11 người ta sử dụng thuật ngữ MIC.

Mục đích là kết hợp tất cả các byte trong gói tin để tạo ra một giá trị kiểm tra gọi là MIC và gửi nó đi cùng với gói tin. MIC được tính toán theo một quá trình đặc biệt không thể tính ngược lại được nếu như không biết khóa. Chỉ có bên thu đích thực mới có thể tính toán và kiểm tra so sánh kết quả .

Hình 2.14: Tạo và so sánh giá trị MAC (hoặc MIC)

Để tính ra được giá trị này cần phải có được một phương pháp vừa đảm bảo được tính bảo mật lại vừa có thể thực hiện được mà không cần các phép toán phức tạp hay các thuật toán mới. Một giải pháp rất hay do nhà mật mã học Niels Ferguson đưa ra được ông ta gọi là Michael. Michael là một phương pháp tính toán giá trị MIC mà không cần đến các phép nhân, chỉ dùng đến phép cộng và dịch tạo ra một từ kiểm tra khá ngắn. Michael có thể được thực hiện trên các AP hiện đang sử dụng mà không tiêu tốn nhiều khả năng của nó.

Michael hoạt động trên MSDU, việc tính ra MIC được thực hiện trên MSDU chứ không phải là MPDU. Nó có hai điểm lợi, thứ nhất: đối với STA, nó cho phép việc tính toán trên máy tính rồi mới đưa ra WLAN card, thứ hai: nó giảm dữ liệu thêm vào bởi vì không cần thiết phải thêm MIC vào mỗi MPDU. Ngược lại, việc mã hóa TKIP được thực hiện ở MPDU.

Michael yêu cầu phải có một khóa riêng, khác với khóa được dùng để mã, điều này dễ dàng được thực hiện khi tạo ra các khóa tạm thời từ khóa chính.

Việc tính MIC đơn giản vì thế cái giá phải trả cho sự đơn giản này khiến nó có nguy cơ bị tấn công brute force, trong quá trình đó, kẻ tấn công có thể tấn công liên tục, hết lần này đến lần khác. Michael khắc phục lỗi này bằng cách đưa ra khái niệm countermeasure.

Mục đích của countermeasure là phát hiện những kiểu tấn công giống như thế này và ngăn chặn không cho chúng thực hiện lặp đi lặp lại việc đó nhiều lần.

Như vậy ta đã có phương pháp tính toán giá trị MIC, giá trị này nhằm kiểm tra tính toàn vẹn của gói tin mà WEP không có.

b. Lựa chọn và sử dụng IV

Phần 2.3.1 đã cho chúng ta biết IV là gì, mục đích sử dụng của nó ra sao cũng như cách nó kết hợp với khóa để tạo ra chuỗi khóa cho mỗi gói. Cần lưu ý rằng cách dùng IV trong WEP có 3 điểm yếu cơ bản:

 IV quá ngắn nên việc lặp lại là không thể tránh khỏi đối với mạng hoạt động liên tục. (adsbygoogle = window.adsbygoogle || []).push({});

 IV không được dành riêng cho từng STA nên cùng một IV có thể được dùng với cùng một khóa trên nhiều STA.

 Cách thêm IV vào khóa khiến nó dễ bị tấn công kiểu FMS (Fluhrer- Mantin-Shamir attack).

TKIP đưa ra một số quy tắc mới đối với việc sử dụng IV. Đặc biệt, có 3 điểm khác nhau khi so sánh với IV dùng trong WEP:

 Kích thước của IV tăng từ 24 bit lên 48 bit.

 IV có một vai trò như một bộ đếm tuần tự để tránh nguy cơ bị sử dụng lại gói tin.

 IV được tạo ra để tránh những khóa yếu.

Như chúng ta đã biết IV trong WEP có độ dài là 24 bit, tức là nó có 16777216 giá trị, vì thế mà nó dễ bị lặp lại trong các hệ thống mạng hoạt động liên tục. Trong quá trình thiết kế TKIP, các chuyên gia bảo mật khuyến cáo rằng cần phải tăng độ dài của IV mới đảm bảo an toàn. Việc thêm 32 bit tạo nên IV có 56 bit, tuy nhiên chỉ có 48 bit được sử dụng bởi vì một byte được bỏ đi nhằm tránh gặp phải các khóa yếu. Ưu điểm của IV mới là hiển nhiên, giả sử cần truyền 10000 gói trong một giây, các gói tin có độ dài 64 byte với tốc độ truyền 11Mbps. Với IV 24bit, chưa đến 1 giờ 30 phút sau đã cạn kiệt không gian số, nhưng với IV 48 bit, để dùng hết phải mất 90000 năm. Việc chuyển sang IV 48 bit đã loại bỏ được vấn đề về việc lặp IV, nhưng vẫn cần phải tránh việc hai thiết bị sử dụng cùng một IV với cùng một khóa.

Việc tăng độ dài của IV nghe có vẻ đơn giản, nhưng nó gặp phải một số vấn đề trong quá trình thực hiện. IV trong WEP ban đầu được kết hợp với khóa để tạo ra khóa mã cho RC4. Vì vậy, 40 bit (hoặc 104 bit nếu sử dụng chế độ mã 128 bit) của khóa kết hợp với 24 bit IV để tạo ra khóa RC4 64 bit. Phần cứng của các hệ thống đã được tạo ra để làm việc với khóa 64 bit này và không thể nâng cấp lên ngay 88 bit khóa RC4 (40 bit khóa + 48 bit IV). Trong TKIP, vấn đề này được giải quyết một cách khá thông minh. Thay vì tạo ra một khóa RC4 mới bằng cách kết hợp khóa 40 bit với IV 48 bit, thì IV được tách ra làm hai phần: 16 bit đầu được bổ sung thêm để tạo ra 24 bit nhưng vẫn tránh được trường hợp các khóa yếu, 24 bit này được dùng y hệt

như WEP cũ. Tuy nhiên, thay vì kết hợp giá trị này với khóa 40 bit (hoặc 104 bit), một khóa hỗn hợp mới được tạo ra bằng cách ghép khóa dùng để mã với 32 bit còn lại của IV, cách biến đổi một IV dài thành một khóa được gọi là kết hợp khóa cho mỗi gói, sẽ được nói đến sau và được mô tả như hình dưới đây. Điều quan trọng cần lưu ý ở đây là cách này đạt được hai mục đích:

 Giá trị của khóa dùng trong mã hóa RC4 là khác nhau đối với mỗi IV.

 Cấu trúc khóa của RC4 là một trường 24 bit IV và một trường 104 bit khóa.

Hình 2.15: Quá trình tạo khóa để mã c. Bộ đếm tuần tự

WEP không có cơ chế nào để ngăn chặn việc sử dụng lại gói tin. Ngăn chặn kiểu dùng lại gói tin là làm sao ngăn không cho sử dụng các gói tin đã dùng rồi. TKIP có một cơ chế chống lại kiểu tấn công này gọi là bộ đếm tuần tự TKIP (TSC- TKIP Sequence Counter).Thực tế, TSC và IV có giá trị như nhau. Nó bắt đầu từ giá trị 0 và tăng lên mộtsau mỗi lần gửi gói tin được gửi. Bởi vì IV được đảm bảo là không bị lặp lại ứng với một khóa nên ta có thể ngăn chặn việc gửi lại gói tin bằng cách hủy tất cả những gói

tin nào có TSC đã nhận. Quy tắc này khiến cho việc gửi lại gói tin cũ không thực hiện được.

Cách đơn giản nhất để ngăn chặn kiểu dùng lại gói tin là hủy bất cứ gói tin nào có TSC không lớn hơn TSC của gói tin vừa nhận được 1 đơn vị. Tuy nhiên có rất nhiều lý do giải thích tại sao cách đơn giản như vậy lại không áp dụng được vào thực tế. Trước hết là do khả năng các gói tin bị thất lạc trong quá trình truyền bởi nhiễu. Ví dụ, nếu thu được một khung có số TSC là 1234 và khung tiếp theo (1235) bị mất, nhưng vẫn thu được khung kế tiếp có TSC là 1236, nó lớn hơn 1234 là 2 đơn vị. Bởi vì khung 1235 bị thất lạc nên tất cả các khung sau đó bị hủy bởi vì TSC có giá trị tăng lên không phải là 1.

Với quy tắc: hủy bất cứ gói tin nào có TSC nhỏ hơn hoặc bằng TSC của gói tin trước đó, nhưng khi phải truyền lại thì làm thế nào? Theo chuẩn, các gói tin phải được bên thu xác nhận bằng gói tin ACK. Nếu không nhận được sự xác nhận từ phía bên kia, gói tin đó cần được truyền lại với một bit được thiết lập để chỉ rằng nó là gói tin được gửi lại. Bởi là gói tin gửi lại nên nó có TSC trùng với gói tin trước. Thực tế thì nó vẫn được chấp nhận bởi chỉ có một bản copy duy nhất mà bên thu cần. Do có khả năng phải truyền lại nên các gói tin có TSC giống nhau không phải lúc nào cũng được coi là do kẻ gian gửi đến.

Có một vấn đề nan giải hơn liên quan đến khái niệm burst-ack. Trong chuẩn IEEE 802.11, mỗi gói dữ liệu được gửi đi phải có một gói tin xác nhận riêng. Như vậy dường như không hiệu quả cho lắm vì bên phát phải dừng và đợi cho đến khi nhận được xác nhận do bên thu gửi thì mới được truyền tiếp. Ý tưởng của burst-ack là gửi 16 gói tin liên tiếp rồi mới gửi trả lại xác nhận cho 16 gói tin đó. Nếu có một số gói tin không nhận được, bên thu sẽ

báo lại chính xác gói tin nào cần truyền lại. Burst-ack chưa được đưa vào chuẩn nhưng nó chắc chắn sẽ được đưa vào trong tương lai.

Với burst-ack, thì vấn đề đối với TSC là quá rõ ràng. Giả sử 16 gói tin đã được gửi đi, mỗi gói lại có TSC lớn hơn gói trước và bên thu không nhận được gói đầu tiên. Nó yêu cầu gửi lại gói đầu tiên đó, điều gì sẽ xảy ra với số TSC ban đầu. Nó nhỏ hơn 15 đơn vị so với gói tin nó nhận được cuối cùng và sẽ bị hủy nếu tuân theo quy tắc TSC phải lớn hơn.

Để khắc phục, TKIP sử dụng một khái niệm gọi là cửa sổ truyền lại. Bên thu theo dõi TSC cao nhất nhận được và 16 TSC sau cùng. Nếu nhận được một gói mới, nó phân loại gói đó ra thành một trong 3 dạng:

 Chấp nhận (accept): nếu TSC lớn hơn số lớn nhất mà nó đã biết.

 Hủy (reject): nếu TSC nhỏ hơn số lớn nhất trừ đi 16.

 Cửa sổ (window): nếu TSC nhỏ hơn số lớn nhất và lớn hơn số lớn nhất trừ đi 16.

Đối với dạng cửa sổ, nó kiểm tra xem liệu có gói tin nào mà có TSC đã được nhận trước đó, nếu đã có rồi thì nó hủy luôn. Bên thu phải lưu lại 16 giá trị TSC và kiểm tra từng cái khi nó nhận được.

Quy tắc này phức tạp hơn quy tắc ban đầu, nhưng nó ngăn chặn một cách có hiệu quả các gói tin do kẻ gian truyền lại trong khi vẫn đảm bảo giao thức hoạt động tốt.

2.3.2.2. Những quá trình diễn ra trong TKIP

Phần này mô tả chi tiết cách hoạt động của thuật toán TKIP. Trước hết, ta coi các khóa chính đã được đưa đến các thiết bị và các khóa phiên được tạo ra từ khóa chính đã được tạo ra. Khóa chính được cung cấp thông qua các lớp trên theo phương pháp EAP, hoặc sử dụng khóa chính được thiết lập từ trước.

 Khóa được dùng để mã gói tin trao đổi EAPOL-Key.

 Khóa được dùng để mã các gói tin unicast (Pairwise key).

 Nhóm khóa dùng để mã các gói tin broadcast (Group key). Pairwise key này lại bao gồm các khóa: (adsbygoogle = window.adsbygoogle || []).push({});

 Khóa tạm thời (128bit): được dùng như là một khóa đầu vào cho giai đoạn tạo khóa hỗn hợp trước khi đi qua RC4.

 Khóa MIC TX chứng thực tạm thời: được dùng để tạo ra MIC (bằng phương pháp chứng thực Michael) cho các khung do AP gửi đi.

 Khóa MIC RX chứng thực tạm thời: dùng trong thuật toán Michael để tạo ra MIC trong các khung do STA gửi đi.

Đối với các khóa nhóm (khóa dùng để mã các gói tin multicast hoặc broadcast), chỉ cần có 2 kiểu đầu tiên bởi vì chỉ có AP gửi broadcast và multicast, STA không bao giờ gửi những gói tin này.

Nhiệm vụ của TKIP là cung cấp dịch vụ bảo mật để xác nhận tính hợp lệ của gói tin nhận được và làm giảm lượng thông tin cần thiết để xác thực. Để làm được điều này, TKIP sử dụng các công cụ sau:

 Tạo ra IV và kiểm tra.

 Tạo ra MIC và kiểm tra.

 Mã hóa và giải mã.

Đứng từ phía phát, vị trí của những thành phần trên liên quan tới những hoạt động khác trong MAC như mô tả trong hình 2.16. Bốn quá trình xử lý trong TKIP được mô tả dưới đây:

 Michael

 Tạo khóa phái sinh.

 IV/TSC

Hình 2.16: Quá trình xử lý ở bên phát

Lưu ý rằng, giá trị kiểm tra tính toàn vẹn MIC được tính đầu tiên và được gắn vào MSDU trước khi nó được chia nhỏ. Vì thế mà các byte kiểm tra này sẽ nằm ở MPDU cuối cùng và nằm trong phần dữ liệu được mã hóa. ICV của WEP vẫn được tính toán và thêm vào cho mỗi MPDU cho dù nó

Một phần của tài liệu nghiên cứu giải pháp bảo mật mạng không dây wlan (Trang 54)