Nếu một mạng có liên kết Wi – Fi, dữ liệu từ hệ điều hành hoặc thiết bị điều khiển qua lớp dịch vụ trong IEEE802.11. Có những phát biểu khác,đó là gói tin của dữ liệu tới mạng Wi – Fi với những chỉ lệnh để giúp chúng được gửi ra ngoài. Gói dữ liệu đó được gọi là MSDU (MAC service data unit). Nếu mọi việc tốt đẹp, MSDU sẽ qua được lớp vật lý trên thiết bị mà nó cần gửi đến và được hệ điều hành hoặc phần điều khiển gửi đến trình ứng dụng đích. Trước khi được gửi qua sóng radio, MSDU được tách thành một vài mảnh nhỏ, quá trình này gọi là phân mảnh tức là làm giảm kích thước khung dùng để phát các frame qua giao thức MAC (Media Access Control) Mỗi mảnh đó sẽ được mã hóa bởi WEP. Một MAC header sẽ được thêm vào đằng trước và một bit để kiểm tra được thêm vào cuối mỗi mảnh.
Có thể thấy về cơ bản MSDU có thể được tách thành nhiều frame và nhiều byte sẽ được thêm vào các frame tách rời, rồi sẽ được mã hóa. Mỗi một frame như thế được gọi là một MPDU (MAC protocol data unit). Quá trình xử lý này làm giảm kích thước tối đa của các frame được phát đi.
Chương trình xử lý dữ liệu như một khối các byte chưa định dạng . Kích thước phụ thuộc vào số lượng MSDU và thiết lập phân mảnh. Thường là trong khoảng từ 10 đến 1,500 byte. Bước thứ nhất trong mã hóa đó là thêm một vai byte gọi là integrity check value (ICV).
2.4.2.Giá trị kiểm tra tính toàn vẹn - integrity check value (ICV)
Mục đích của IVC là để ngăn ngừa việc các frame gửi đi bị xáo trộn. Cả ở frame được mã hóa và không mã hóa, việc kiểm tra này để tìm ra có bit nào bị sai lạc hay không trong
quá trình truyền phát. Tất cả các byte trong frame được kết hợp lại bởi CRC (cyclic redundancy check).
CRC – Kiểm tra mã vòng dư (cyclic redundancy check)
CRC (cyclic redundancy check) là một loại hàm băm, được dùng để sinh ra giá trị kiểm thử, của một chuỗi bit có chiều dài ngắn và cố định, của các gói tin vận chuyển qua mạng hay một khối nhỏ của tệp dữ liệu. Giá trị kiểm thử được dùng để dò lỗi khi dữ liệu được truyền hay lưu vào thiết bị lưu trữ. Giá trị của CRC sẽ được tính toán và đính kèm vào dữ liệu trước khi dữ liệu được truyền đi hay lưu trữ. Khi dữ liệu được sử dụng, nó sẽ được kiểm thử bằng cách sinh ra mã CRC và so khớp với mã CRC trong dữ liệu.
CRC là một loại mã phát hiện lỗi. Cách tính toán của nó giống như phép toán chia số dài trong đó thương số được loại bỏ và số dư là kết quả, điểm khác biệt ở đây là sử dụng cách tính không nhớ (carry-less arithmetic) của một trường hữu hạn. Độ dài của số dư luôn nhỏ hơn hoặc bằng độ dài của số chia, do đó số chia sẽ quyết định độ dài có thể của kết quả trả về. Định nghĩa đối với từng loại CRC đặc thù quyết định số chia nào được sử dụng, cũng như nhiều ràng buộc khác.
Mặc dù các mã CRC có thể xây dựng được bằng cách sử dụng bất kỳ trường hữu hạn nào, nhưng tất cả các mã CRC thường dùng đều sử dụng trường hữu hạn GF(2). Đây là trường hai phần tử, thường được ký hiệu là 0 và 1, phù hợp với kiến trúc máy tính. Phần còn lại của bài viết sẽ chỉ đề cập đến những mã CRC thuộc dạng này, nhưng nguyên tắc thì khái quát hơn.
Một lý do quan trong lý giải sự phổ biến của mã CRC trong phát hiện sự thay đổi ngẫu nhiên của dữ liệu là hiệu suất đảm bảo. Điển hình, một mã CRC n bit, được áp dụng cho một đoạn dữ liệu có độ dài tùy ý, sẽ phát hiện được bất kỳ lỗi tín hiệu đơn nào có độ dài không quá n bit (nói cách khác, bất kỳ sự biến đổi đơn lẻ nào có chiều dài không quá n bit của dữ liệu), và sẽ phát hiện một phần 1-2-n của tất cả các lỗi tín hiệu có độ dài dài hơn thế. Các lỗi trong cả các kênh truyềndữ liệu và phương tiện bộ nhớ từ dẫn đến phân bố không ngẫu nhiên (v.d, "bursty"), làm cho các đặc tính của CRC trở nên hữu dụng hơn những mã khác như Multiple Parity checks.
Hệ thống tìm lỗi đơn giản nhất, bit parity (xet chẵn lẽ), thực ra là một mã CRC ở dạng tầm thường: sử dụng số chia độ dài 2 bit là 11.
Giá trị kiểm tra tính toàn vẹn - integrity check value (ICV)
4 byte giá trị được thêm vào cuối của frame trước quá trình truyền phát. Ngay cả khi một bit đơn lẻ bị sai lệch, thiết bị nhận sẽ thông báo rằng giá trị CRC không hợp lệ và loại bỏ frame đó. Trong thời gian mà phát hiện ra lỗi, thiết bị sẽ không được chú ý bảo vệ với lỗi đó bởi vì kẻ tấn công có thể dễ dàng tính toán lai giá trị CRC sau khi thay đổi frame và bảo đảm trùng khớp vào lần sau.
ICV tương tự CRC, nó được tính toán và thêm vào trước khi mã hóa. Thường thì CRC vẫn sẽ được thêm vào sau khi mã hóa. Theo lý thuyết, vì ICV ở dạng mật mã, nên không kẻ tấn công nào có thể tính toán ra nó khi mà cố gắng thay đổi frame.
ICV được tính toán sau khi kết hợp tất cả các byte dữ liệu để tạo ra 4 byte kiểm tra. Sau đó được thêm vào cuối frame.
Hình 2.10: IVC được thêm vào 2.4.3.Chuẩn bị frame để truyền phát
Sau khi ICV được thêm vào, frame đã sẵn sàng để mã hóa. Đầu tiên, hệ thống phải chọn một giá trị IV và thêm nó vào khóa bí mật WEP (giống như là chọn lựa khóa hoạt động). Tiếp đến, nó được mã hóa bằng RC4. Cuối cùng, mỗi byte đi qua từ sự kết hợp dữ liệu và khối IVC trong mã hóa. Và cứ mỗi byte đi qua là có một byte được mã hóa cho đến khi quá trình hoàn tất. Đó gọi là mã hóa dòng.
Để phía nhận biết được phải giải mã frame như thế nào, khóa và giá trị IV phải được đặt ở phía trước của frame. Bốn byte được thêm vào cho mục đích đó.Ba byte đầu tiên chứa 24- bit giá trị IV và byte sau chứa số KeyID 0, 1, 2, 3 như trong hình .
Hình 2.11: Thêm vào IV và KeyID
Cuối cùng, MAC header được gắn vào và giá trị CRC được đặt vào cuối để tìm ra lỗi trong quá trình truyền phát. Một bit trong MAC header chỉ ra cho nơi nhận biết frame được mã hóa bằng WEP.
Phía nhận xử lý theo logic. Phía nhận thông báo rằng bit WEP được thiết lập và nhờ vậy đọc và lưu giữ giá trị IV. Sau khi đọc bit KeyID, nơi nhận có thể chọn được đúng khóa WEP, giá trị IV và thuật toán mã hóa RC4. Thông báo rằng với RC4 không có sự khác nhau giữa quá trình mã hóa và giải mã. Nếu bạn cho dữ liệu qua quá trình mã hóa hai lần, bạn sẽ nhận được dữ liệu khác với dữ liệu đưa vào. Bởi vậy, bạn chỉ nên dùng một phương tiện cho cả mã hóa và giải mã. Sau khi mã hóa, dữ liệu chạy qua một byte chỉ ra thời gian frame gốc. Bước cuối cùng là tính toán ICV kiểm tra rằng giá trị có trùng khớp với giá trị trong frame gửi.
2.4.3.Mã hóa bằng thuật toán RC4
RC4 là tên của các thuật toán mã hóa được sử dụng trong WEP. Một thuật toán mã hóa là một tập hợp các hoạt động mà bạn sử dụng để biến đổi văn bản chưa mã hóa thành mật mã. Nó sẽ hữu ích, trừ khi có một thuật toán giải mã tương ứng. Trong trường hợp của RC4, cùng một thuật toán được sử dụng để mã hóa và giải mã. Giá trị của một thuật toán mã hóa là ở khả năng bảo mật cao và dễ dàng trong sử dụng. Sức mạnh của một thuật toán được đo bằng độ khố để crack các bản mã được mã hóa bằng thuật toán đó. Chắc chắn là có các phương pháp mạnh hơn RC4. Tuy nhiên, RC4 là khá đơn giản để thực hiện và được coi là rất mạnh, nếu được sử dụng đúng cách. Điểm cuối cùng này là quan trọng bởi vì chúng ta sẽ thấy tất cả sự yếu kém của WEP sau đó, và những điểm yếu không xuất phát từ lỗi trong RC4, nhưng trong cách thức mà nó được áp dụng trong trường hợp của WEP.
RC4 là một dòng mật mã độc quyền thiết kế vào năm 1987. Trong khi các thuật toán đã nhận được rất nhiều sự chú ý của công cộng, RSA Labs, Inc liên quan đến việc mô tả của thuật toán như là một bí mật thương mại. Để hiểu thêm về RC4 nên tham khảo RSA Labs. Tuy nhiên, các thuật toán đã được đảo ngược, thiết kế và công bố vào năm 1994. Thật may mắn là RC4 khá đơn giản để thực hiện và mô tả. Ý tưởng cơ bản mã hóa RC4 là tạo ra một chuỗi các trình tự giả ngẫu nhiên (giả ngẫu nhiên) của các byte được gọi là khóa dòng, sau đó được kết hợp với các dữ liệu bằng cách sử dụng toán tử OR (XOR). Toán tử XOR kết hợp hai byte và tạo ra một byte duy nhất. Nó làm điều này bằng cách so sánh các bit tương ứng trong từng byte. Nếu chúng bằng nhau, kết quả là 0, nếu chúng khác nhau, kết quả là 1. Ví dụ như hình
Hình 2.12: Toán tử XOR
XOR thường được viết bằng cách sử dụng ký hiệu toán học " " ví dụ như: 00110101 11100011 = 11010110
Một đặc tính quan trọng của XOR là nếu bạn áp dụng hai lần trên cùng một giá trị, giá trị ban đầu được trả về:
00110101 11100011 = 11010110 11010110 11100011 = 00110101
Nói cách khác, nếu AB = C, sau đó CB = A. Bạn có thể đoán rằng trong trường hợp sử dụng RC4, các dữ liệu này được sử dụng như sau:
Giải mã: Văn bản mã hóa Số ngẫu nhiên = Văn bản gốc
Đối với kẻ tấn công thì có vẻ như là ngẫu nhiên nhưng cả hai quá trình mã hóa và giải mã đều tạo ra những giá trị ngẫu nhiên giống nhau với từng byte xử lý. Do đó gọi là giả ngẫu nhiên (giả ngẫu nhiên) và được tạo ra bằng các thuật toán RC4.
Đặc tính quan trọng nhất của giả ngẫu nhiên khóa dòng là bạn có thể tính toán các byte tiếp theo trong chuỗi chỉ cần bạn biết các khóa dùng để phát sinh dòng. Nếu bạn không biết khóa, nó sẽ có vẻ thực sự là ngẫu nhiên. Lưu ý rằng toán tử XOR hoàn toàn làm ẩn đi những giá trị dữ liệu chưa được mã hóa. Ngay cả khi các dữ liệu đó chỉ là một chuỗi dài các giá trị 0, bản mã vẫn có vẻ ngẫu nhiên đối với kẻ tấn công.
XOR là một toán tử dễ dàng cho máy tính thực hiện. Khó khăn duy nhất là làm sao để tạo ra một số giả ngẫu nhiên tốt. Bạn cần một byte giả ngẫu nhiên cho mỗi byte của thông điệp được mã hóa. RC4 tạo ra như một dòng.
Có hai giai đoạn chính trong thiết lập RC4: thiết lập khóa và phát sinh số giả ngẫu nhiên. Giai đoạn đầu tiên, thuật toán thiết lập khóa được thực hiện, thiết lập một mảng 256 byte với một hoán vị của số 0-255 được sinh ra; có nghĩa là, tất cả các số có mặt trong mảng nhưng theo thứ tự là xáo trộn. Các hoán vị trong mảng, hoặc S-box, được thành lập bằng cách trước tiên khởi tạo mảng với 0-255 số theo thứ tự. Các phần tử trong S-bõ sau đó được sắp xếp lại thông qua quá trình sau đây. Trước tiên, một mảng 256 byte thứ hai được tạo ra, hoặc K-box, được làm đầy với khoá, lặp đi lặp lại và điền vào các mảng. Bây giờ mỗi byte trong S-box sẽ trao đổi với một byte trong S-box. Bắt đầu từ byte đầu tiên, các tính toán sau đây được thực hiện:
J = (Giá trị của byte đầu tiên trong S-box) + (Giá trị của byte đầu tiên trong K-box) J là một giá trị byte riêng biệt và bất cứ sự chồng lặp nào trong phép toán đều được bỏ qua.
Bây giờ j được sử dụng như một chỉ mục vào S-box và giá trị tại vị trí đó là trao đổi với giá trị tại vị trí đầu tiên.
Thủ tục này được lặp đi lặp lại cho đến khi mỗi 255 byte trong S-box đã được đổi chỗ. Quá trình này được mô tả bằng đoạn giải mã sau đây:
i = j = 0;
j = (j + Si + Ki) mod 256; Swap Si and Sj;
End;
Một khi các S-box đã được khởi tạo, giai đoạn tiếp theo là sinh ra giả ngẫu nhiên. Giai đoạn này bao gồm việc trao đổi nhiều byte trong S-box và tạo ra một byte giả ngẫu nhiên sau mỗi lần lặp (R). Các phương trình cho các lần lặp sẽ được hiển thị ở đây.
i = (i + 1) mod 256 j = (j + Si) mod 256 Swap Si and Sj
k = (Si + Sj) mod 256 R = Sk
Để tạo ra các bản mã, mỗi byte của bản chưa mã hóa là XORed với một giá trị của R được tạo ra bởi các thuật toán RC4. Toàn bộ quá trình được thực hiện bằng cách sử dụng bổ sung byte chiều dài và các thao tác chuyển dịch hoán đổi, rất dễ dàng trong tính toán logic.
Về mặt lý thuyết, RC4 không phải là một hệ thống mã hóa hoàn toàn an toàn bởi vì nó tạo ra một dòng giả ngẫu nhiên chính, không phải byte thực sự ngẫu nhiên. Nhưng nó đủ chắc chắn an toàn cho các ứng dụng, nếu được áp dụng đúng.
Kết luận
Chương này đã trình bày một số vấn đề cơ bản phương thức bảo mật WEP trong mạng WireLess Lan như: các định nghĩa, thuật ngữ, các vấn đề về bảo mật như xác thực, mã hóa, khóa sử dụng trong WEP, giá trị IV kết hợp với khóa, các thuật toán sử dụng để mã hóa như RC4, CRC...và cơ chế hoạt động của giao thức bảo mật WEP. Qua đó cho thấy một cái nhìn tổng quan về bảo mật WEP.
CHƯƠNG 3
ĐIỂM YẾU CỦA PHƯƠNG THỨC BẢO MẬT WEP VÀ NHỮNG PHƯƠNG THỨC THAY THẾ
3.1.Điểm yếu của phương thức bảo mật WEP
3.1.1.Phương thức bảo mật WEP là không chắc chắn
WEP nằm trong trong tiêu chuẩn 802,11 IEEE vào năm 1997,cho đến năm 1999 khi mà hệ thống đã được triển khai rộng rãi với sự ra đời của IEEE 802.11b và Wi-Fi thì nó đã không còn được ứng dụng rộng rãi. Hầu hết các nhà cung cấp cho phép mở rộng khóa từ 40-bit lên 104-bit (128 bit nếu sử dụng cả IV), và điều này cũng đã được thông qua trong Wi-Fi.
Đã bắt đầu có những lo ngại về bảo mật WEP và các chuyên gia đã chỉ ra một số vấn đề. Đặc biệt, sự yếu kém của các phương pháp xác thực, như được mô tả các phần trước, và giai đoạn xác thực đã bị bỏ hoàn toàn. Tuy nhiên, các nhà sản xuất vẫn lo ngại về sức mạnh bảo mật của WEP. Nói cách khác, họ sợ rằng một cuộc tấn công nghiêm trọng và lớn có thể thành công.
Vì những mối quan tâm và những khó khăn trong việc quản lý khóa, Ủy ban Tiêu chuẩn IEEE 802.11 đưa ra một nhóm nhiệm vụ mới để xem xét nâng cấp các phương pháp tiếp cận an ninh. Các ủy ban IEEE 802.11 là, về cơ bản,là một tổ chức tự nguyện. Các cuộc họp được tổ chức khoảng sáu lần một năm. Những cuộc họp này gồm các bài thuyết trình kỹ thuật, các cuộc thảo luận, soạn thảo văn bản, và xem xét ý kiến biểu quyết.
Trong khi các nhóm nghiên cứu về IEEE 802,11 được xem xét những cách tiếp cận mới, cộng đồng nghiên cứu về bảo mật cũng nhìn lại về WEP. Trong những ngày đầu, bảo mật không được quan tâm nhiều vì mạng WireLess Lan chưa phải là một công nghệ phổ biến rộng rãi. Nhưng vào năm 2000 nó đã được xuất hiện ở khắp mọi nơi và nhiều trường đại học đã cài đặt. Các nhà nghiên cứu về bảo mật đã nghiên cứu trực tiếp về Wi- Fi LAN. Như đã làm hầu hết mọi người, họ nhận ra tiềm năng lợi thế, nhưng, cũng ngay