CCMP mã hóa dữ liệu ở cấp MPDU (MAC Protocol Data Unit) chứ không phải ở MSDU (MAC Service Data Unit). Mỗi một MPDU ứng với một khung truyền và nó là một phần của MSDU do MSDU đƣợc chia ra thành các MPDU. Các bƣớc mã hóa đƣợc thể hiện ở Hình 2.15. Dữ liệu đến MSDU sẽ bị phân mảnh, mỗi mảnh sẽ mang hình thức nhƣ MPDU và chia tiêu đề của IEEE 802.11 nhƣ địa chỉ đích, địa chỉ nguồn và các thơng tin khác. Tại đây mỗi MPDU đƣợc xử lý bởi CCMP và tạo ra MPDU mới đã đƣợc mã hóa (chỉ mã hóa dữ liệu, khơng mã hóa tiêu đề). Ngồi ra CCMP còn chèn thêm các trƣờng làm cho MPDU sau khi mã hóa dài hơn 16 byte.
Hình 2.15 Các bước mã hóa dữ liệu
Các bƣớc mã hóa MPDU:
Hình 2.16 Các bước mã hóa MPDU
- B1: ban đầu là một MPDU chƣa đƣợc mã hóa với tiêu đề chứa địa chỉ nguồn, đích và một số thông tin khác.
- B2: Tiêu đề MAC đƣợc tách ra và đặt sang một bên, thông tin của tiêu đề sẽ đƣợc tách ra và sử dụng khi tạo 8 byte MIC. Ở giai đoạn
- B3: Giá trị MIC đƣợc tính tốn để bảo vệ tiêu đề CCMP, dữ liệu và tiêu đề IEEE 802.11. Thời gian tồn tại đƣợc đảm bảo bởi các nonce. Trƣờng MIC sẽ đƣợc nối sau trƣờng dữ liệu.
- B4: Kết hợp dữ liệu và MIC rồi mã hóa. Tiêu đề CCMP đƣợc đặt vào trƣớc bản mã hóa.
- B5: Cuối cùng tiêu đề MAC đƣợc đặt vào trƣớc tiêu đề CCMP. Các MPDU đã sẵn sàng truyền mà không cần tiêu đề của CCMP.
CCMP sử dụng thuật toán AES trong phƣơng thức CBC – MAC để tính tốn giá trị MIC cho MPDU.
Đầu vào của thuật toán là: 1. Bản rõ MPDU
2. Khối khởi tạo (Initial Block) cho MPDU này 3. Khóa tạm thời
Đầu ra của thuật tốn là giá trị MIC. Giá trị này đƣợc nối với MPDU trên đƣờng truyền và đƣợc so sánh với một giá trị MIC tại nơi nhận.
Giải mã MPDU:
Khi nhận đƣợc bản mã MPDU, đầu tiên cần khóa cho việc giải mã. Các cặp khóa thích hợp đƣợc lựa chọn dựa trên địa chỉ MAC nguồn trong phần đầu MAC, Ngƣời nhận cần thực hiện một số bƣớc để giải nén và kiểm tra tính hợp lệ của dữ liệu nhận đƣợc. Số lƣợng gói tin PN (Packet Number) khơng đƣợc mã hóa trong tiêu đề CCMP. Ban đầu ngƣời nhận sẽ đọc PN và so sánh với khung mới nhất nhận đƣợc. Nếu số này thấp hơn hoặc bằng so với lần nhận gần đây nhất nó sẽ bị loại bỏ nhƣ là một sự phát lại của thông điệp cũ. Trƣờng hợp PN khớp với khung mới nhất nhận đƣợc, bƣớc tiếp theo sử dụng AES/Couter Mode. Nó địi hỏi việc tính tốn giá trị khởi đầu của truy nhập và giá trị này phải phù hợp với giá trị sử dụng trong mã hóa. Tất cả các thơng tin cần thiết đều có trong khung nhận đƣợc.
Quá trình giải mã tƣơng tự nhƣ quá tình mã hóa. Giá trị kế tiếp của truy nhập đƣợc mã hóa và XOR với MPDU nhận đƣợc để phục hồi dữ liệu và giá trị MIC. Tiếp theo cần xác minh giá trị MIC nhận đƣợc bằng cách tính tốn lại trên cùng một dữ liệu với MPDU gốc. Nếu MIC khớp nghĩa là thông tin
đƣợc an tồn, nếu MIC khơng khớp có thể thơng tin đã bị tấn công và cần loại bỏ thông tin này.
2.3.2. Hạn chế của WPA2
Hiện tại, lỗ hổng bảo mật chính của hệ thống WPA2 khơng thực sự lộ rõ. Kẻ tấn cơng phải có quyền truy cập vào mạng WiFi đã đƣợc bảo vệ trƣớc khi có thể có trong tay bộ kí tự, sau đó mới có thể tiến hành tấn cơng các thiết bị khác trong cùng mạng. Nhƣ vậy, các lỗ hổng của WPA2 khá hạn chế và gần nhƣ chỉ gây ảnh hƣởng đến các mạng quy mô lớn nhƣ của tập đồn. Trong khi đó ngƣời dùng mạng tại nhà có thể yên tâm với chuẩn mới nhất này.
Tuy nhiên không may là lỗ hổng lớn nhất trong bộ giáp của WPA vẫn cịn tồn tại trong WPA2, đó là WPS. Mặc dù để thâm nhập đƣợc vào mạng lƣới đƣợc bảo vệ bởi WPA/WPA2 bằng lỗ hổng trên cần tới 2-14 giờ hoạt động liên tục của một máy tính hiện đại, đây vẫn là một mối lo tiềm tàng. Vì thế tốt nhất WPS nên đƣợc tắt đi hoặc xóa bỏ hồn tồn khỏi hệ thống thơng qua các lần cập nhật firmware của điểm truy cập.
2.4. Kết luận chƣơng
Qua nghiên cứu toàn bộ chƣơng 2 về ba giao thức bảo mật WEP, WPA và WPA2 ta có thể đƣa ra một bảng so sánh dƣới đây để thấy đƣợc sự khác nhau giữa các giao thức và khả năng bảo mật ngày càng đƣợc nâng cao hơn thông qua sự cải tiến về thuật toán đƣợc sử dụng trong các giao thức.
WEP WPA WPA2
Khóa đƣợc cấu hình thủ cơng Nhận khóa tự động nhờ xác thực 802.1X/EAP. Có hỗ trợ cài đặt khóa thủ cơng nhƣ WEP. Giống WPA Sử dụng thuật tốn mã hóa dịng (RC4) với IV có kích thƣớc 24 bít
Cải tiến mã hóa dữ liệu thơng qua TKIP với IV có kích thƣớc 48 bít, nhƣng vẫn sử dụng thuật tốn mã hóa dịng RC4
Sử dụng thuật tốn mã hóa khối (AES), có hỗ trợ mã hóa dịng. Độ dài khóa nhỏ, 64
hoặc 128 bit
Độ dài khóa lớn hơn. Q trình tạo khóa phức tạp hơn Tƣơng tự WPA Sử dụng thuật tốn CRC để kiểm tra tính tồn Sử dụng thuật tốn Michael để sinh mã tồn
Sử dụng CCMP/AES để tính mã MIC, độ tin cậy
vẹn, độ tin cậy thấp vẹn thông điệp MIC, độ tin cậy cao hơn CRC
cao nhất Khơng có khả năng xác thực hai chiều Hỗ trợ khả năng xác thực hai chiều, sử dụng IEEE 802.1X/EAP Tƣơng tự WPA
Phƣơng pháp đơn giản, không yêu cầu cao về phần cứng
Phức tạp hơn WEP, nhƣng cũng không yêu cầu cao về phần cứng
Phức tạp và yêu cầu cao về năng lực xử lý của phần cứng Thích hợp với mạng quy mơ nhỏ Thích hợp với mạng quy mơ nhỏ và trung bình Thích hợp với mạng quy mơ lớn và các doanh nghiệp
Cùng với sự phát triển của các phƣơng pháp bảo mật cho mạng khơng dây thì các kỹ thuật bẻ khóa mạng khơng dây cũng ngày càng tinh vi và hiệu quả hơn. Vì vậy, những điểm yếu trong thuật toán bảo mật của giao thức WEP đã nhanh chóng bị khai thác và có thể bị kẻ tấn cơng bẻ khóa một cách dễ dàng. Do đó, giao thức bảo mật WPA đƣợc đƣa ra để thay thế cho WEP, tuy nhiên ngƣời ta thấy WPA cũng chƣa thực sự an tồn, sau đó WPA đƣợc thay thế bởi WPA2. Kẻ tấn cơng cũng đã tìm ra cách để có thể xâm nhập vào mạng đƣợc bảo vệ bởi WPA và WPA2. Tuy nhiên lỗ hổng bảo mật của WPA và WPA2 khơng phải nằm ở thuật tốn mã hóa cho nên việc bẻ khóa sẽ gặp nhiều khó khăn hơn so với WEP. Nội dung này sẽ đƣợc trình bày chi tiết hơn trong chƣơng tiếp theo.
CHƢƠNG 3: BẺ KHĨA MẠNG KHƠNG DÂY
3.1. Bẻ khóa mạng khơng dây sử dụng giao thức bảo mật WEP
3.1.1. Bẻ khóa sử dụng véc-tơ IV trùng lặp
Nhƣ đã trình bày trong Chƣơng 2, giao thức bảo mật WEP có nhƣợc điểm rất lớn đó là véc-tơ khởi tạo IV, do IV đƣợc gửi đi cùng gói tin dƣới dạng không mã hõa, với 2 véc tơ khởi tạo giống nhau sẽ cho ra cùng một khóa. Số lƣợng véc-tơ IV là hạn chế do độ dài của IV là 3 byte, điều này dẫn tới sự trùng lặp của IV. Véc-tơ IV bị trùng lặp tạo ra lỗ hổng trong WEP. Xét ví dụ sau đây:
Giả sử Kẻ tấn cơng bắt đƣợc 2 gói tin có cùng IV là C1 và C2 nhƣ vậy 2 gói tin này sẽ có cùng chuỗi khóa Ks = IV||Key
Gọi P1 là bản rõ của C1, tƣơng tự P2 là bản rõ của C2
o C1 = P1 Ks
o C2 = P2 Ks
Khi đó nếu đem C1 C2 ta làm triệt tiêu Ks
o C1 C2 = (P1 Ks) (P2 Ks) = (P1 P2) (Ks Ks) = P1 P2
o Nếu biết đƣợc P1 hoặc P2 ta sẽ biết đƣợc Ks C1 P1 = (P1 Ks) P1 = Ks Có một số cách đơn giản để biết đƣợc P1 nhƣ
Nếu mạng khơng dây kết nối với mạng bên ngồi
o Kẻ tấn cơng sẽ gửi gói tin Ping dùng giao thức ICMP đến máy Client trong mạng, nhƣ vậy gói tin giữa AP và Client là các gói ICMP đã biết.
o Bắt gói tin từ Client đến AP sau đó sửa một số bit sao cho ICV vẫn đúng. Gói tin đã đƣợc chỉnh sửa đƣợc gửi đến AP.
o AP nhận gói tin, do ICV vẫn đúng nên AP tiến hành giải mã. Nhƣng do một số bit đã thay đổi nên quá trình giải mã có lỗi, AP thơng báo lỗi đến Client, và gói tin thơng báo lỗi là đã biết.
Nhƣ vậy kẻ tấn cơng có thể dễ dàng lấy đƣợc các chuỗi khóa Ks tƣơng ứng với các IVs, kẻ tấn cơng khơng biết đƣợc bản rõ của khóa bí mật nhƣng biết đƣợc chuỗi khóa để mã hóa và giải mã các gói tin tƣơng ứng với các IV. Kẻ tấn cơng có thể sử dụng chuỗi khóa này vƣợt qua bƣớc xác thực để tham gia vào mạng, đồng thời có thể gửi gói tin và giải mã các gói tin trong mạng.
Phƣơng pháp bẻ khóa sử dụng véc-tơ IV trùng lặp là phƣơng pháp tấn công thụ động, kẻ tấn công chỉ cần bắt các gói tin trao đổi trong mạng để thu thập các IV, với số lƣợng khoảng 16.777.216 trƣờng hợp có thể của IV, trung bình khoảng từ 8 đến 10 tiếng sẽ dùng hết số IV này. Phƣơng pháp tấn công này khá đơn giản, nhƣng cần thời gian khá lâu để có thể bắt đƣợc các gói tin chứa IV trùng nhau. Một phƣơng pháp tấn công khác sử dụng thống kê và dựa trên các giả thiết về chuỗi khóa yếu, thực hiện bẻ khóa trong thời gian rất ngắn sẽ đƣợc trình bày trong phần tiếp theo.
3.1.2. Bẻ khóa sử dụng phương pháp thống kê
trƣớc đó. Hơn nữa, tồn tại các chuỗi khóa yếu trong đó các phần tử trong S tuân theo một quy luật nào đó, từ đó có xây dựng lại khóa từ những byte khóa đã biết.
Khi sử dụng kỹ thuật thống kê để bẻ khóa WEP, mỗi byte của khóa về cơ bản đƣợc xử lý riêng. Sử dụng toán học thống kê, với khả năng một byte nhất định trong các khố đƣợc đốn chính xác lên tới 15% khi các vector khởi tạo đúng (IV) đƣợc bắt cho một byte quan trọng đặc biệt. Về cơ bản, một vài IV nhất định "rị rỉ" khóa WEP bí mật cho riêng byte khóa. Đây là nền tảng cơ bản của kỹ thuật thống kê.
Bằng cách sử dụng một loạt các kiểm tra thống kê đƣợc gọi là các cuộc tấn công của FMS (tấn công bởi Fluhrer, Mantin và Shamir) và Korek, các phiếu (votes) đƣợc tích lũy cho các byte có khả năng là khóa cho mỗi byte khóa của chuỗi khóa bí mật WEP. Các byte khóa đƣợc tích lũy nhiều phiếu hơn thì càng có khả năng là byte khóa chính xác. FMS là cuộc tấn cơng quan trọng đầu tiên, tấn cơng dựa vào các IV nhằm tìm ra một mối quan hệ nào đó. Tuy nhiên cuộc tấn công này không mạnh bằng các cuộc tấn công theo phƣơng pháp thông kê đƣợc đƣa ra bởi Korek. Vì vậy các cuộc tấn cơng của Korek sẽ đƣợc trình bày trong phần tiếp theo của luận văn.
Với mỗi cuộc tấn công một số tiền xử lý đƣợc thực hiện. Giả sử chúng ta tấn cơng byte khóa thứ n (3 byte đầu tiên là IV, đặt n – 1 = p, byte khóa đầu
tiên có chỉ số là 0). Thuật tốn KSA chạy cho tới khi đạt đƣợc byte khóa chƣa biết này (cần p bƣớc), cho ta một xấp xỉ của trạng thái trong cuối cùng (mà ta kí hiệu là S). Trong khi thực hiện q trình này chúng ta ghi lại tất cả các giá trị của j và sử dụng thông tin này để xây dựng một bảng chứa vị trí của mỗi phần tử trong S, bảng này đƣợc kí hiệu là Si.
Xấp xỉ dựa trên cơng thức tính tỷ lệ thành cơng, biểu diễn xác suất một số phần tử của trạng thái trong khơng thay đổi trong phần cịn lại của KSA. Do vậy sau p bƣớc chúng ta muốn ƣớc lƣợng xác suất mà q phần tử không thay
đổi (khi đến PRGA). Chúng ta có thể ƣớc tính xác suất này bằng: (
)
khóa kết quả đƣợc tạo ra bởi PRGA, nhóm thứ hai dựa trên byte khóa kết quả thứ nhất và thứ hai. Nhóm thứ ba bao gồm các phƣơng pháp ngƣợc để làm giảm khơng gian tìm kiếm, cũng đƣợc biết đến nhƣ là các cuộc tấn công ngƣợc “inverted attacks”. Phần tiếp theo của luận văn sẽ trình bày về các cuộc tấn cơng đại diện cho mỗi nhóm đó.
3.1.3. Cuộc tấn công thứ nhất Korek A_s5_1:
Xác suất thành công là: (253
256)256-p ≈ 5.07% (p = 3)
Cuộc tấn công đầu tiên này là sự tổng hợp của các cuộc tấn công FMS cổ điển trƣớc đó. Do đó các IV đƣợc chọn có các tính chất sau:
1. S[1] < p. Điều kiện này để tối đa các khả năng mà phần đầu tiên của
trạng thái trong không thay đổi.
2. (S[1] + S[S[1]]) mod 256 = p. Byte kết quả đầu tiên của khóa dịng (kí hiệu o1) sẽ phụ thuộc vào các giá trị đã biết và giá trị của byte khóa mục tiêu.
3. Si[o1] ≠ 1
4. Si[o1] ≠ S[S[1]]
Điều kiện 3 và 4 để các giá trị trong S[1] hoặc S[S[1]] không bị ghi đè lên. Nhƣ đã thấy ở trên, các tính chất này dẫn tới hai loại trạng thái trong cho một cuộc tấn công trên K[3]:
0 1 ….. ….
3 0 ….. ….
0 1 2 …..
X 2 1 …..
Chúng ta đi vào ví dụ cụ thể để hiểu rõ hơn. Giả sử ta nhận đƣợc một IV nhƣ sau:
Và ta đang tìm giá trị của K[3] (trong trƣờng hợp này bằng Si[o1] – S[p] –
jp-1 = Si[o1] – 7).
Khởi tạo: i0 = 0, j0 = 3 Bƣớc 1: i1 = 1, j1 = 3 (lƣu ý rằng: 255 + 1 = 0) Bƣớc 2: i2 = 2, j2 = 6 Bƣớc 3: i3 = 3, j3 = 7 + K[3] Bƣớc 4:
(S3 biểu diễn trạng thái trong tại bƣớc thứ 3)
Giả sử rằng các phần tử đầu của trạng thái trong sẽ không thay đổi trong phần cịn lại của KSA, ta có:
S[1] = 0 và S[0] = 3 do vậy o1 = S[ S[1] + S[S[1]] ] = S[3] = S3[7 + K[3]]. Vì j3 = 7 + K[3] = j2 + S[3] + K[3] (theo thuật toán KSA), nên
0 1 2 3 4 …... N-1 0 1 2 3 4 ….. N-1 0 1 2 3 4 5 6 ….. 3 1 2 0 4 5 6 ….. 0 1 2 3 4 5 6 ….. 3 0 2 1 4 5 6 ….. 0 1 2 3 4 5 6 ….. 3 0 2 1 4 5 6 ….. 0 1 2 3 4 5 6 ….. 3 0 6 S3[7+K[3]] 4 5 2 …..
o1 = S3[7 + K[3]] = S3[j2 + S[3] + K[3]] Do đó byte khóa bị tấn cơng có thể đƣợc tính tốn nhƣ sau:
K[3] = Si[o1] - S[3] - j2 (với Si[o1] là chỉ số của o1 trong trạng thái trong đƣợc tính tốn tại bƣớc p – 1)
Tổng quát: K[p] = Si[o1] – S[p] – jp-1[12].
3.1.4. Cuộc tấn công thứ hai: Korek A_s13:
Xác suất thành công là: (254
256)256-p ≈ 13.75% (p = 3)
Trong cuộc tấn công thứ hai này, một thủ thuật đƣợc sử dụng trong PRGA. Nếu kết thúc sau KSA với một trạng thái trong là: S[1] = p và S[p] = 0, PRGA sẽ đổi chỗ những giá trị này dẫn tới kết quả o1 = p. Để đạt đƣợc
điều này thì cần những điều kiện sau:
1. S[1] = p. Điều kiện này cho phép PRGA nhắm mục tiêu cho phần tử
thứ p trong trạng thái trong có giá trị bằng p. 2. o1 = p.
Giả sử rằng byte kết quả đầu tiên là p, giả định rằng sau khi PRGA trao đổi giá trị p sẽ đƣợc ở vị trí p, và jp =0.
Xét ví dụ cụ thể sau: Giả sử IV:
Với K[3] là mục tiêu (trong ví dụ này K[3] = Si[0] – S[p] – jp-1 = 63). Sau
đó theo KSA ta có: Khởi tạo: i0 = 0, j0 = 6 Bƣớc 1: 6 252 193 0 1 2 3 4 5 6 ….. 0 1 2 3 4 5 6 ….. 0 1 2 3 4 5 6 ….. 6 1 2 3 4 5 0 …..
i1 = 1, j1 = 3 (nhớ rằng 6+252+1 = 3)
Bƣớc 2:
i2 = 2, j2 = 198
Bƣớc 3:
i3 = 3, j3 = 199 + K[3]
(chú ý rằng ta đang đi tìm giá trị của K[3])
Trƣớc khi kiểm tra xem bƣớc 4 làm gì ta đi phân tích hành vi của PRGA. Biết rằng sau KSA ta có S[1] = p (=3), nên để có o1 = p (=3) ta phải có S[p] =