Quá trình đóng gói các gói tin của WEP khá đơn giản và bao gồm những bước sau:
• Bảo vệ tính toàn vẹn. Trước tiên, CRC-32 được sử dụng để bảo về MPDU. Các vector kiểm tra tính toàn vẹn (ICV) sử dụng CRC-32 để tính toán và nối vào phần cuối của MPDU, tư đó dẫn đến việc thêm vào 4 octets (8 bit) để MPDU gửi đi.
• Tạo keystream. Quá trình tạo keystream trong WEP có thể được xử lý độc lập với quá trình tạo CRC-32. 1 IV 24 bit mới sẽ được nối với khóa bí mật được chia sẻ để tạo thành 1 khóa WEP 64 bit hoăc 128 bit.
• Tạo bản mã. Quá trình tạo bản mã là quá trình kết hợp các keystream với MPDU nối với ICV sử dụng thuật toán XOR.
• Tạo header. Là quá trình trong đó bao gồm các IV 24 bit và các octets khác với bit 0 và 1 đại diện cho key ID. Như vậy header được thêm vào 4 octets so với chiều dài của MPDU gửi đi, khiến cho gói mở rộng tổng thể do WEP đóng gói lên đến 8 octets.
Hình 2.4: Minh họa quá trình đóng gói gói tin 2.2.4.3 Quá trình giải mã gói tin
Quá trình giải mã gói tin cũng tương tự như quá trình mã hóa, và trong thực tế, quá trình này sử dụng lại bước tạo keystream. Bao gồm các bước như sau:
• Trước tiên, một MPDU đã được mã hóa chứa các IV và key ID của khóa bí mật được chia sẻ được sử dụng để tạo RC4 keystream. Sử dụng key ID, các STA hoặc AP sẽ tìm kiếm khóa bí mật được chia sẻ và nối IV trong WEP header với bản sao của khóa bí mật. Sau đó, người nhận sẽ dùng các seed được hình thành bởi quá trình nối trên để tạo keystream.
• Tiếp theo, người nhận sử dụng thuật toán XOR với keystream và MPDU đã nhận được trư đi WEP header (ban đầu là 4 octets, sau đó là MAC header). Kết quả thu được là MPDU gốc và ICV.
• Sau khi nhận, quá trình xử lý để tính toán các ICV của MPDU đã được giải mã bằng cách sử dụng thuật toán CRC-32. Các ICV gửi được tính trùng với các ICV nhận.
• Bước cuối cùng, các STA nhận hoặc AP nhận sẽ so sánh ICV gửi và ICV nhận. Nếu cả 2 phù hợp thì MPDU được chấp nhận. Nếu không, nó sẽ bị hủy bỏ (dropped).
Hình 2.5: Minh họa quá trình giải mã gói tin
Tóm lại, mặc dù có những nhược điểm nghiêm trọng, bảo mật WEP vẫn tốt hơn là không dùng cơ chế mã hóa nào cho mạng không dây. WEP có thể được xem như một cơ chế bảo mật ở mức độ thấp nhất, cần thiết được triển khai khi không thể sử dụng các biện pháp khác tốt hơn. Điều này phù hợp cho các tình huống sử dụng các thiết bị không dây cũ chưa có hỗ trợ WPA hoặc các tình huống có yêu cầu về độ bảo mật thấp như mạng không dây gia đình, mạng không dây cộng đồng...
2.2.3. AES(Advanced Encryption Standard)
2.2.3.1 Giới thiệu về AES
AES (Advanced Encryption Standard, hay Tiêu chuẩn mã hóa tiên tiến) là một thuật toán mã hóa khối được chính phủ Hoa kỳ áp dụng làm tiêu chuẩn mã hóa. Giống như tiêu chuẩn tiền nhiệm DES, AES được kỳ vọng áp dụng trên phạm vi thế giới và đã được nghiên cứu rất kỹ lưỡng. AES được chấp thuận làm tiêu chuẩn liên bang bởi Viện tiêu chuẩn và công nghệ quốc gia Hoa kỳ (NIST - National Institute of Standards and Technology) sau một quá trình tiêu chuẩn hóa kéo dài 5 năm. Thuật toán được thiết kế bởi hai nhà mật mã học người Bỉ là Joan Daemen và Vincent Rijmen (lấy tên chung là "Rijndael" khi tham gia cuộc thi thiết kế AES)
2.2.3.2 Mô tả thuật toán AES
Mặc dù 2 tên AES và Rijndael vẫn thường được gọi thay thế cho nhau nhưng trên thực tế thì 2 thuật toán không hoàn toàn giống nhau. AES chỉ làm việc với khối dữ liệu 128 bit và khóa có độ dài 128, 192 hoặc 256 bit, trong khi Rijndael có thể làm việc với dữ liệu và khóa có độ dài bất kỳ là bội số của 32 bit nằm trong khoảng tư 128
tới 256 bit. Các khóa con sử dụng trong các chu trình được tạo ra bởi quá trình tạo khóa con Rijndael. Hầu hết các phép toán trong thuật toán AES đều thực hiện trong một trường hữu hạn. AES làm việc với tưng khối dữ liệu 4×4 byte (tiếng Anh: state, khối trong Rijndael có thể có thêm cột). Quá trình mã hóa bao gồm 4 bước:
a. AddRoundKey
Mỗi byte của khối được kết hợp với khóa con, các khóa con này được tạo ra tư quá trình tạo khóa con Rijndael. Tại bước này, khóa con được kết hợp với các khối. Khóa con trong mỗi chu trình được tạo ra tư khóa chính với quá trình tạo khóa con Rijndael. Mỗi khóa con có độ dài giống như các khối. Quá trình kết hợp được thực hiện bằng cách XOR tưng bít của khóa con với khối dữ liệu.
Hình 2.6: Mỗi byte được kết hợp với một byte trong khóa con của chu trình sử dụng phép toán XOR
b. SubBytes
Đây là phép thế (phi tuyến) trong đó mỗi byte sẽ được thế bằng một byte khác theo bảng tra (Rijndael S-box). Các byte được thế thông qua bảng tra S-box. Đây chính là quá trình phi tuyến của thuật toán. Hộp S-box này được tạo ra tư một phép nghịch đảo trong trường hữu hạn GF (28) có tính chất phi tuyến. Để chống lại các tấn công dựa trên các đặc tính đại số, hộp S-box này được tạo nên bằng cách kết hợp phép nghịch đảo với một phép biến đổi affine khả nghịch. Hộp S-box này cũng được chọn để tránh các điểm bất động (fixed point).
Hình 2.7: Mỗi byte được thay thế bằng một byte theo bảng tra S(bij)=S(aij)
c. ShiftRows
Đổi chỗ - các hàng trong khối được dịch vòng. Các hàng được dịch vòng một số vị trí nhất định. Đối với AES, hàng đầu được giữ nguyên. Mỗi byte của hàng thứ 2 được dịch trái một vị trí. Tương tự, các hàng thứ 3 và 4 được dịch 2 và 3 vị trí. Do vậy, mỗi cột khối đầu ra của bước này sẽ bao gồm các byte ở đủ 4 cột khối đầu vào. Đối với Rijndael với độ dài khối khác nhau thì số vị trí dịch chuyển cũng khác nhau.
Hình 2.8: Các byte trong mỗi hàng được dịch vòng trái số vị trí dịch chuyển tùy thuộc từng hàng
d. MixColumns
Quá trình trộn làm việc theo các cột trong khối theo một phép biến đổi tuyến tính. Bốn byte trong tưng cột được kết hợp lại theo một phép biến đổi tuyến tính khả nghịch. Mỗi khối 4 byte đầu vào sẽ cho một khối 4 byte ở đầu ra với tính chất là mỗi byte ở đầu vào đều ảnh hưởng tới cả 4 byte đầu ra. Cùng với bước ShiftRows, MixColumns đã tạo ra tính chất khuyếch tán cho thuật toán. Mỗi cột được xem như một đa thức trong trường hữu hạn và được nhân với đa thức c(x) = 3x3 + x2 + x + 2 (modulo x4 + 1). Vì thế, bước này có thể được xem là phép nhân ma trận trong trường hữu hạn.
Hình 2.9: Mỗi cột được nhân với một hệ số cố định c(x) 2.2.3.3 Tối ưu hóa AES
Đối với các hệ thống 32 bit hoặc lớn hơn, ta có thể tăng tốc độ thực hiện thuật toán bằng cách sát nhập các bước SubBytes, ShiftRows, MixColumns và chuyển chúng thành dạng bảng. Có cả thảy 4 bảng với 256 mục, mỗi mục là 1 tư 32 bit, 4 bảng này chiếm 4096 byte trong bộ nhớ. Khi đó, mỗi chu trình sẽ được bao gồm 16 lần tra bảng và 12 lần thực hiện phép XOR 32 bit cùng với 4 phép XOR trong bước AddRoundKey. Trong trường hợp kích thước các bảng vẫn lớn so với thiết bị thực hiện thì chỉ dùng một bảng và tra bảng kết hợp với hoán vị vòng quanh.
2.2.3.4 Bảo mật trong AES
Vào thời điểm năm 2006, dạng tấn công lên AES duy nhất thành công là tấn công kênh bên (side channel attack). Tháng 6 năm 2003, chính phủ Hoa kỳ tuyên bố AES có thể được sử dụng cho thông tin mật.
"Thiết kế và độ dài khóa của thuật toán AES (128, 192 và 256 bit) là đủ an toàn để bảo vệ các thông tin được xếp vào loại Tối Mật (secret). Các thông tin Tuyệt Mật (Top secret) sẽ phải dùng khóa 192 hoặc 256 bit. Các phiên bản thực hiện AES nhằm mục đích bảo vệ hệ thống an ninh hay thông tin quốc gia phải được NSA kiểm tra và chứng nhận trước khi sử dụng.”
Điều này đánh dấu lần đầu tiên công chúng có quyền tiếp xúc với thuật toán mật mã mà NSA phê chuẩn cho thông tin Tuyệt Mật. Nhiều phần mềm thương mại hiện nay sử dụng mặc định khóa có độ dài 128 bit. Phương pháp thường dùng nhất để tấn công các dạng mã hóa khối là thử các kiểu tấn công lên phiên bản có số chu trình thu gọn. Đối với khóa 128 bit, 192 bit và 256 bit, AES có tương ứng 10, 12 và 14 chu trình. Tại thời điểm năm 2006, những tấn công thành công được biết đến là 7 chu trình đối với khóa 128 bit, 8 chu trình với khóa 192 bit và 9 chu trình với khóa 256 bit. Một
số nhà khoa học trong lĩnh vực mật mã lo ngại về an ninh của AES. Họ cho rằng ranh giới giữa số chu trình của thuật toán và số chu trình bị phá vỡ quá nhỏ. Nếu các kỹ thuật tấn công được cải thiện thì AES có thể bị phá vỡ. Ở đây, “phá vỡ” có nghĩa chỉ bất cứ phương pháp tấn công nào nhanh hơn tấn công kiểu duyệt toàn bộ. Vì thế một tấn công cần thực hiện 2120 cũng được coi là thành công mặc dù tấn công này chưa thể thực hiện trong thực tế. Tại thời điểm hiện nay, nguy cơ này không thực sự nguy hiểm và có thể bỏ qua. Tấn công kiểu duyệt toàn bộ quy mô nhất đã tưng thực hiện là do distributed.net thực hiện lên hệ thống 64 bít RC5 vào năm 2002 (Theo định luật Moore thì nó tương đương với việc tấn công vào hệ thống 66 bit hiện nay). Một vấn đề khác nữa là cấu trúc toán học của AES. Không giống với các thuật toán mã hóa khác, AES có mô tả toán học khá đơn giản. Tuy điều này chưa dẫn đến mối nguy hiểm nào nhưng một số nhà nghiên cứu sợ rằng sẽ có người lợi dụng được cấu trúc này trong tương lai.
2.2.4 802.11
2.2.4.1 Giới thiệu về 802.11
IEEE 802 là họ các chuẩn IEEE dành cho các mạng LAN và mạng MAN. Các chuẩn IEEE 802 được giới hạn cho các mạng có các gói tin kích thước đa dạng. Con số 802 chỉ đơn giản là con số còn trống tiếp theo mà IEEE có thể dùng. Đôi khi 802 còn được liên hệ với ngày mà cuộc họp đầu tiên được tổ chức, đó là tháng 2 năm 1980. IEEE 802.11 là 1 chuẩn để “điều khiển truy cập mạng dựa trên port”. Nó cho phép quyết định cho hay không truy cập mạng được thực hiện tại port, trư khi port đã được xác thực, nó chỉ có thể được sử dụng để chuyển lưu lượng được kết hợp với quá trình xác thực. Giao thức 802.11 sử dụng EAP (Extensible Authentication Protocol) để mang các thông tin xác thực.
Tháng 2/2002, một bài báo được xuất bản tư trường Đại học Maryland đề cập đến các yếu điểm của 802.11. Bài báo này đã gây được nhiều sự chú ý do 802.11 được xem là có thể giải quyết những yếu điểm về an toàn của 802.11b nhưng đã bộc lộ những khuyết điểm của nó. May mắn là những kỹ thuật tấn công mô tả trong bài báo đó có thể ngăn chặn bằng cách sử dụng 802.11 một cách phù hợp. Các kỹ thuật tấn công được mô tả không cho phép các truy cập không mong muốn đến mạng hay nghe lén các dữ liệu đã được mã hóa. Chúng chỉ cho phép tấn công tư chối dịch vụ DoS và
gây nhiễu các truy cập mạng hợp lệ. Hiện tại, IEEE 802.11i đang giải quyết nhiều vấn đề để kết hợp 802.11b và 802.11 lại với nhau.
2.2.4.2 Những thành phần trong 802.11
a. Thiết bị yêu cầu (Supplicant)
Một thiết bị đầu cuối yêu cầu truy cập đến mạng được bảo vệ bằng 802.11. Laptop, PDA,… là một số các thiết bị yêu cầu thông dụng. Thiết bị yêu cầu phải hoàn tất trao đổi một cách suôn sẽ với thiết bị xác thực trong EAPOL (EAP Over LAN) để được truy cập mạng. Do đó, Supplicant phải chứa giao thức EAPOL, các máy trạng thái của Supplicant và tối thiểu một phương pháp xác thực EAP cụ thể mà thiết bị xác thực và máy chủ xác thực hỗ trợ. Nếu phương pháp EAP hỗ trợ nó, Supplicant có thể liên lạc với máy chủ xác thực, “khóa phiên làm việc” sẽ được sử dụng để mã hóa những khóa mã hóa được gởi đến nó.
b. Thiết bị xác thực (Authenticator)
Thường được thực hiện trên Access Point, Switch hay Router. Thành phần này giao tiếp với Supplicant bằng EAPOL. Liên lạc giữa Authenticator với máy chủ xác thực thường được thực hiện bằng Radius (Remote Authentication Dial In User Service). Do đó, Authenticator bao gồm giao thức EAPOL, các máy trạng thái của Authenticator và bất kỳ giao thức nào cần thiết để giao tiếp với máy chủ xác thực, thường là Radius.Tư khi Supplicant yêu cầu đến khi quá trình xác thực thành công, công việc của Authenticator là chuyển các gói EAP giữa Supplicant (EAPOL) và máy chủ xác thực (thường là Radius). Trong khi Authenticator mang tất cả các dữ liệu giữa Supplicant và máy chủ xác thực, nó không biết mật khẩu riêng hay chứng chỉ được sử dụng để tạo khóa phiên làm việc. Sau khi xác thực thành công, Authenticator nhận khóa phiên làm việc tư máy chủ xác thực và phân phối (hay tạo ra) các khóa mã hóa cho unicast và broadcast.
c. Máy chủ xác thực
Thông thường là máy chủ Radius xác thực người dùng. Nó tạo khóa phiên làm việc để giao tiếp với Supplicant, và sau khi xác thực thành công, phân phối khóa đó đến Authenticator. Miễn là máy chủ RADIUS hỗ trợ mở rộng RFC2869 cho EAP, và phương pháp xác thực EAP được yêu cầu, không cần thêm thành phần nào ở đây để thực hiện 802.11.
2.2.4.3 Quá trình mã hóa và những cơ chế chứng thực trong 802.11
a. Quá trình mã hóa:
Chuẩn 802.11 cung cấp dữ liệu riêng tư cùng với thuật toán WEP. WEP dựa trên mã hóa dòng của thuật toán RC4. Tính đối xứng của RC4 yêu cầu phải phù hợp với khóa WEP, độ dài 40 bit hoặc 104 bit, và phải được cấu hình tĩnh trên thiết bị client và các AP. WEP là sự lựa chọn chủ yếu vì nó có chi phí thấp. Trong một số trường hợp, WEP là 1 thuật toán rất dễ để thực hiện, bạn có thể lập trình nó trong khoảng 30 dòng lệnh. Chi phí phát sinh thấp khiến WEP trở thành một thuật toán mã hóa lý tưởng để sử dụng trên ASDs. Để tránh chế độ ECB (loại mã hóa dữ liệu sử dụng mật mã khối) trong quá trình mã hóa, WEP sử dụng một IV 24 bit được nối với một khóa trước khi được xử lý bằng thuật toán mã hóa RC4.
Hình 2.10: Minh họa 1 khung mã hóa WEP
b. Những cơ chế chứng thực:
Chuẩn 802.11 chỉ rõ 2 cơ chế chứng thực trong WLAN là: - Chứng thực mở
- Chứng thực chia sẻ khóa
Chứng thực mở là 1 thuật toán chứng thực null. Các AP chấp nhận bất kỳ các yêu cầu chứng thực nào. Các yêu cầu xác thực chấp nhận các thiết bị để nhanh chóng truy cập vào mạng.
Chứng thực mở kiểm soát truy cập dựa trên khóa WEP đã được cấu hình săn trên client và AP. Client và AP phải kết hợp với khóa WEP để kích hoạt mới có thể giao tiếp với nhau. Nếu Client và AP không kích hoạt WEP, sẽ không có sự bảo mật tại
BSS (Basic Service set – các thiết lập dịch vụ cơ bản). Bất kỳ thiết bị nào cũng có thể kết nối đến BSS và tất cả các khung dữ liệu (data frames) được truyền đi sẽ không được mã hóa.
Sau khi quá trình chứng thực mở và quá trình kết hợp được xử lý, client có thể bắt đầu truyền và nhận dữ liệu. Nếu Client được cấu hình với 1 khóa khác với khóa trên AP, Client sẽ không thể mã hóa hoặc giải mã các khung dữ liệu 1 cách chính xác, và các khung này sẽ bị loại bỏ bởi Client và AP. Quá trình này về cơ bản giống như cung cấp 1 phương tiện để kiểm soát quyền truy cập vào BSS.