Khóa WEP
Chức năng chính của WEP là dựa trên khóa, là yếu tố cơ bản cho thuật toán mã hóa. Khóa WEP được cài đặt vào client và vào các thiết bị hạ tầng trong mạng WLAN. Khóa WEP là một chuỗi kí tự và số được sử dụng theo 2 cách:
+ Khóa WEP được sử dụng để kiểm tra định danh xác thực client. + Khóa WEP được dùng để mã hóa dữ liệu.
Hình 4.11: Cài đặt khóa WEP
Khi client sử dụng WEP để kết nối với AP thì AP sẽ xác định xem client có giá trị khóa WEP chính xác hay không. Chính xác ở đây có nghĩa là client đã có khóa là một phần của hệ thống phân phát khóa WEP được cài đặt trong WLAN. Khóa WEP phải khớp ở cả hai đầu xác thực client và AP. Hầu hết các AP và client có khả năng lưu trữ 4 khóa WEP đồng thời. Việc nhập khóa WEP tĩnh vào client hay các thiết bị hạ tầng như cầu nối, AP là hoàn toàn đơn giản. Có hai loại khóa WEP là 64bit và 128bit, do đó, chúng ta có thể phân ra hai nhóm người sử dụng khi
cần. Đối với nhóm người yêu cầu bảo mật cao ta sử dụng mã khóa 128bit (mã ASCII: chiều dài mã 13 ký tự; mã HEX: chiều dài mã 26 ký tự). Thông thường các phần mềm client sẽ cho phép nhập khóa WEP theo dạng ký tự số (ASCII) hay theo dạng thập lục phân (HEXA).
Ngoài ra, chúng ta cũng có thể sử dụng nhiều khóa WEP với mục đích phân đoạn mạng. Có thể sử dụng mỗi nhóm một khóa giúp tăng khả năng bảo mật hơn thay vì sử dụng chung một khóa WEP cho tất cả. Việc sử dụng khóa WEP tĩnh có thể tạo ra nhiều mối nguy hiểm cho mạng do rất dễ dàng cho hacker tấn công vào mạng vì các khóa WEP tĩnh này không bao giờ thay đổi. Do vậy, khóa WEP tĩnh chỉ thích hợp sử dụng như là một phương thức bảo mật căn bản cho các mạng WLAN nhỏ, đơn giản, không yêu cầu tính bảo mật cao.
Thường thì một máy chủ như RADIUS hay các máy chủ ứng dụng chuyên biệt sẽ đảm nhận việc phát sinh khóa, khi đó sẽ có một tiến trình tự động giữa client, AP và máy chủ sẽ thực hiện phân phát khóa.
Máy chủ khóa mã hóa tập trung cho phép tự động sinh khóa theo từng gói tin (per-packet), từng phiên làm việc (per-session)... Máy chủ khóa sẽ phân phát khóa WEP mới cho cả hai đầu kết nối đối với từng gói tin được truyền đi; trong khi đó, việc phân phát khóa theo từng phiên làm việc giữa các nút chỉ sử dụng khóa WEP mới cho mỗi phiên làm việc. Như vậy, việc sinh khóa theo từng gói tin sẽ ngốn nhiều băng thông mạng hơn là sinh khóa theo từng phiên làm việc. Đồng thời, khi các gói tin được sử dụng mã hóa WEP, các gói tin đó phải được giải mã mới có thể sử dụng được. Việc giải mã này làm tốn nhiều tài nguyên CPU và giảm hiệu quả băng thông trên WLAN đôi khi rất đáng kể.
Mã hóa WEP
WEP sử dụng thuật toán mã hóa dòng RC4 để mã hóa các gói dữ liệu. Thuật toán RC4 sẽ lấy một byte ở chuỗi ngõ vào và tạo ra một byte khác ở chuỗi ngõ ra, cứ như vậy cho đến khi không còn dữ liệu vào.
Hình 4.13: Mã hóa dòng RC4
Để tránh trùng lặp khóa WEP (chế độ ECB) trong quá trình mã hóa, WEP sử dụng 24 bit IV, nó được kết nối vào khóa WEP trước khi được xử lý bởi RC4.
Giá trị IV nên được thay đổi theo từng khung (per-frames) để tránh hiện tượng xung đột. Hiện tượng xung đột IV xảy ra khi sử dụng cùng một IV và khóa WEP kết quả là cùng một chuỗi khóa được sử dụng để mã hóa khung.
Mã hóa WEP chỉ được sử dụng cho các khung dữ liệu trong suốt tiến trình xác thực khóa chia sẻ. WEP chỉ mã hóa những trường sau đây trong khung dữ liệu:
+ Phần dữ liệu (payload).
+ Giá trị kiểm tra tính toàn vẹn của dữ liệu ICV (Integrity Check Value).
Hình 4.14: Khung được mã hóa bởi WEP có sử dụng vector IV
Tất cả các trường khác được truyền mà không được mã hóa. Giá trị IV được truyền mà không cần mã hóa để cho trạm nhận sử dụng nó để giải mã phần dữ liệu và ICV.
Giá trị kiểm tra tính toàn vẹn ICV có chiều dài 32 bit (4 byte) được thêm vào cuối khung truyền trước khi được truyền đi, có chức năng kiểm tra tính toàn vẹn của
khung. Việc kiểm tra này cho trạm thu biết rằng khung đã được nhận mà không có lỗi nào xảy ra trong suốt quá trình truyền.
Hình 4.15: Tiến trình mã hóa và giải mã WEP
ICV được tính dựa trên tất cả các trường trong khung sử dụng CRC-32 (Cyclic Redundancy Check 32). Trạm phát sẽ tính toán giá trị và đặt kết quả vào trong trường ICV. ICV sẽ được mã hóa cùng với khung dữ liệu. Do đó, nó không bị phát hiện bởi những kẻ nghe lén. Trạm thu sau khi nhận sẽ thực hiện giải mã khung, tính toán lại giá trị ICV và so sánh với giá trị ICV đã được trạm phát tính toán trong khung nhận được. Nếu hai giá trị trùng nhau thì khung xem như chưa bị thay đổi hay giả mạo, nếu giá trị không khớp nhau thì khung đó sẽ bị hủy bỏ.
Giải mã WEP
Quá trình giải mã cũng thực hiện tương tự như theo các khâu tương tự của quá trình mã hóa nhưng theo chiều ngược lại. Bên nhận dùng Khóa dùng chung và giá trị IV (tách được từ bản tin) làm 2 đầu vào của bộ sinh chuỗi mã RC4. Chuỗi khóa do RC4 tạo ra sẽ kết hợp XOR với Cipher Text để tạo ra Clear Text ở đầu ra, gói tin sau khi bỏ phần CRC sẽ còn lại phần Payload, chính là thông tin ban đầu gửi đi.
Chúng ta nói WEP là đơn giản, điều đó có nghĩa là nó khá yếu. Do WEP sử dụng thuật toán RC4, nếu RC4 được cài đặt không thích hợp thì sẽ tạo nên một giải pháp bảo mật kém. Cả khóa WEP 64bit và 128bit đều có mức độ yếu kém như nhau trong việc cài đặt 24bit IV và cùng sử dụng tiến trình mã hóa có nhiều lỗ hổng. Tiến trình này khởi tạo giá trị ban đầu cho IV là 0, sau đó tăng lên 1 cho mỗi khung được truyền. Trong một mạng thường xuyên bị nghẽn, những phân tích thống kê cho thấy rằng tất cả các giá trị IV (có thể là 224 giá trị) sẽ được sử dụng hết trong nửa ngày. Điều này có nghĩa là IV sẽ khởi tạo lại từ 0 ít nhất một lần trong ngày. Do đó, dễ tạo ra lỗ hổng cho các hacker tấn công. Khi WEP được sử dụng, vector khởi tạo IV sẽ được truyền đi (không mã hóa) cùng với mỗi gói tin (đã được mã hóa), việc này tạo ra những lỗ hổng bảo mật sau:
+ Tấn công chủ động để chèn lưu lượng mới dựa trên chuỗi dữ liệu biết trước, tấn công chủ động dựa vào việc “đánh lừa” AP để giải mã thông tin.
+ Tấn công bị động để giải mã lưu lượng, bằng cách sử dụng những phân tích thống kê, khóa WEP có thể bị giải mã.
+ Tấn công bằng cách xây dựng từ điển (dictionary building). Việc sử dụng các phần mềm miễn phí để tìm kiếm khóa WEP như là: AirCrack, AirSnort... Sau khi khóa WEP đã bị bẻ (crack) thì việc giải mã các gói tin theo thời gian thực có thể được thực hiện bằng cách lắng nghe các gói tin đã được quảng bá, sau đó dùng khóa WEP để giải mã chúng.
Để gia tăng mức độ bảo mật cho WEP, đồng thời gây khó khăn cho các hacker, các kỹ thuật, giao thức, chuẩn mã hóa khác nhau được đề xuất đưa ra nhằm bổ sung, thay thế cho mã khóa WEP như: kỹ thuật nhảy khóa sử dụng mã MD5, giao thức TKIP, chuẩn mã hóa cao cấp AES tương thích với các phương thức bảo mật cao hơn.