Chương trình mô phỏng được xây dựng để minh hoạ tính chính xác, hoàn hảo và cách thức hoạt động của các thuật toán đề xuất. Kết quả thu được của quá trình mô phỏng xác nhận rằng thuật toán hoạt động theo thiết kế. Môi trường thử nghiệm mô phỏng và cách làm việc của nó được đưa ra dưới đây. Bước 1: Các BS chờ để nhận được yêu cầu từ SS. BS sử dụng cổng 8001 và địa chỉ IP là 192.168.1.73.
Bước 2: SS đã kết nối tới BS với cổng 8001 và điểm cuối của mạng cục bộ là 192.168.1.73. SS được gửi ID thuê bao của mình và tất cả các thông tin cần thiết đến BS.
Hình 3.6: SS đƣợc gửi thông tin đến BS
Bước 3: BS nhận được thành công các thông tin SS. BS mã hóa ID của mình bằng cách sử dụng mã hóa DES và gửi nó đến SS.
Bước 4: SS nhận được thông tin được mã hóa từ các BS. SS giải mã thông tin của BS bằng cách sử dụng DES và biết được ID của BS.
Hình 3.8: SS nhận đƣợc thông điệp từ BS và giải mã các thông điệp
Bước 5: Để xác minh các BS, SS được gửi ID của BS cho máy chủ xác thực (AS). Điểm cuối của mạng cục bộ là 192.162.1.73 và cổng TCP 8002.
Bước 6: AS nhận được các thông báo từ SS, xác minh BS là giả mạo hay đáng tin cậy và gửi xác nhận cho SS.
Hình 3.10: AS xác minh các BS và gửi thông báo tới AS
Bước 7: Sau khi nhận được sự thừa nhận của AS, SS biết được BS là tin cậy hay không. Nếu BS là đáng tin cậy, sau đó truyền thông an toàn sẽ bắt đầu giữa SS và BS. Ngược lại, tất cả các giao tiếp sẽ vẫn dừng lại ở giai đoạn này.
Kết luận
Nghiên cứu này tập trung vào bảo mật của mạng WIMAX chuẩn IEEE802.16. Các cơ chế tấn công khác nhau được phân tích đối với kiến trúc an ninh mạng WIMAX. Xác thực lẫn nhau được minh hoạ để tăng cường bảo mật cho thuê bao để tránh trạm cơ sở giả. Các thuật toán đề xuất cho thấy cách thức để thiết lập quy trình xác thực lẫn nhau. Các phần tử an ninh và các chức năng chính của nó được giải thích để giới thiệu kiến trúc các an ninh WIMAX cho các nhà nghiên cứu. Có thể chỉ ra các nhược điểm về an ninh của WIMAX qua công trình trên giấy, nhưng các cuộc tấn công là không dễ dàng thực hiện được trong thế giới thực. Ngay cả khi các lỗ hổng bảo mật tồn tại, kẻ tấn công chuyên nghiệp mới tạo được công cụ để xâm nhập. Các nhà nghiên cứu và các nhà sản xuất đang làm việc có trách nhiệm để làm cho WIMAX được xác thực và mạnh mẽ. Mặc dù một số lỗ hổng đã được xác định, các cuộc tấn công mới có thể xảy ra. Vì lý do này, việc nghiên cứu, quan sát, quan tâm thường xuyên là điều cần thiết.
Công trình trong tƣơng lai
IEEE 802.16.e cũng được biết đến như Mobile WIMAX, các tiêu chuẩn mới nhất cho WIMAX đã trình bày những cải tiến bảo mật đáng kể so với IEEE 802.16. Tiêu chuẩn này sử dụng phương pháp mã hóa tốt hơn và có thêm giao thức quản lý khóa an toàn. Một phương pháp xác thực dựa trên EAP (Giao thức xác thực mở rộng) được thêm vào.Tuy nhiên, có rất nhiều các vấn đề an ninh vẫn chưa được giải quyết. Xác thực và ủy quyền là nền tảng cho mọi công nghệ không dây, bởi vì không có bảo mật mạnh mẽ, công nghệ sẽ không sử dụng hiệu quả được. Công việc trong tương lai là tập trung vào việc xác thực và ủy quyền của IEEE 802.16e một số vấn đề đặt ra cần giải quyết:
a)Xác thực chính và các khía cạnh ủy quyền tại WIMAX di động là gì? b)Các vấn đề an ninh liên quan đến chứng thực và ủy quyền cho WIMAX di động là gì?
c)Những giải pháp bảo mật đáp ứng các vấn đề an ninh? d) Điều gì có thể được thực hiện như cải tiến bảo mật?
TÀI LIỆU THAM KHẢO
[1] Jamshed Hasan, School of Computer and Information Science, Edith Cowan University, Australia Security Issues of IEEE 802.16 (WIMAX)
http://scissec.scis.ecu.edu.au/conference_proceedings/2006/aism/Hasan%20- 20Security%20Issues%20of%20IEEE%20802.16%20(WIMAX).pdf.
[2] Loutfi Nuaymi, WIMAX Technology for Broadband Wireless Access, John Wiley & Son Ltd.
[3] IEEE 802.16-2004, “IEEE Standard for Local and Metropolitan Area Networks Part 16: Air Interface for Fixed Broadband Wireless Access Systems”, 1 October, 2004.
[4] Mohammad Azizul Hasan, Performance evaluation of WIMAX/802.16 OFDM Physical layer, Helsinki University of Technology.
[5] Frank Ohrtman, WIMAX Handbook, building 802.16 WIMAX networks, McGraw-Hill 2005.
[6] Roger B Marks, “IEEE Standard 802.16 for Global Broadband Wireless
Access,” http://ieee802.org/16/docs/03/C8021603_14.pdf”
[7] IEEE Std 802.16-2001,”IEEE Std. 802.16-2001 IEEE Standard for Local
and Metropolitan area networks Part 16: Air Interface for Fixed Broadband Wireless Access Systems”, December 2001.
[8] Derrick D. Boom, “Denial of Service Vulnerabilities In IEEE 802.16 Wireless Networks”, Master’s Thesis at Naval Postgraduate School Monterey, California, USA, 2004.
[9] M. Zubair Shafiq and Muddassar Farooq, College of Electrical & Mechanical Engineering National University of Sciences & Technology, Rawalpindi, Pakistan.
[10] http://www.wildpackets.com/
[11] Panu Hamalainen, Marko Hannikainen, Configurable Hardware Implementation Of Triple DES Encryption Algorithm For Wireless Local Area Network, Tampere University of Technology, Finland.
[12] Laurent Butti, WIMAX: Security Analysis and Experience Return, Network Security Senior Expert, Orange Division R&D, France Telecom. [13] VMD Jagannath, Wireless Security - 802.16, Term Paper Report; CS 625. [14] David Johnston and Jesse Walker, Overview of IEEE 802.16 Security. IEEE Computer Society.
[15] IEEE Std 802.16a2003 (Amendment to IEEE Std 802.162001), “IEEE Standard for Local and metropolitan area networks Part 16: Air Interface for Fixed Broadband Wireless Access Systems Amendment 2: Medium Access Control Modifications and Additional Physical Layer Specifications for 211 GHz”, January 2003.
[16] Frank Ohrtman, WIMAX Handbook, building 802.16 WIMAX networks, McGraw-Hill 2005.
Phụ lục 1: Lập trình mã cho các BS (Base Station) using System; using System.Text; using System.Net; using System.Net.Sockets; using System.Security.Cryptography; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Linq; using System.IO; namespace Base_Station { class Program {
public static void Main() {
try {
IPAddress iIPAddress =
IPAddress.Parse("192.168.1.73"); //use the same in the client /* Initializes the Listener */
TcpListener iTcpListener = new TcpListener(iIPAddress, 8001);
/* Start Listeneting at the specified port */ iTcpListener.Start();
Console.WriteLine("\nThe local End point is :" + iTcpListener.LocalEndpoint);
Console.WriteLine("\nWaiting for a connection..."); Socket iSocket = iTcpListener.AcceptSocket(); Console.WriteLine("\nConnection accepted from the Subscriber Station (SS) " + iSocket.RemoteEndPoint); byte[] vbyte = new byte[100];
int k = iSocket.Receive(vbyte);
Console.WriteLine("\nRecieved Subscriber Station (SS) ID : "); for (int i = 0; i < k; i++)
Console.Write(Convert.ToChar(vbyte[i])); /******************Message Encryption**********************/ string smsg = "005"; string venc; DESCryptoServiceProvider iDESCryptoServiceProvider = new DESCryptoServiceProvider();
System.Text.Encoding iEncoding = new System.Text.UTF8Encoding(); byte[] vkey = iEncoding.GetBytes("12345678");
byte[] viv = { 1, 2, 3, 4, 5, 6, 7, 8 }; ICryptoTransform iICryptoTransform = iDESCryptoServiceProvider.CreateEncryptor(vkey, viv); byte[] vmsg = iEncoding.GetBytes(smsg); byte[] benc = iICryptoTransform.TransformFinalBlock(vmsg, 0, vmsg.Length); venc = System.Convert.ToBase64String(benc); /*******************Message Encryption********************/
string vBSIDEncry = venc;
ASCIIEncoding asen = new ASCIIEncoding(); iSocket.Send(asen.GetBytes(vBSIDEncry)); Console.WriteLine("\nSent Acknowledgement..."); Console.WriteLine("\n*************************************** "); /* clean up */ iSocket.Close(); iTcpListener.Stop(); } catch (Exception e) { Console.WriteLine("Error... " + e.StackTrace); } } } }
Phụ lục 2: Lập trình mã cho các SS (Subscriber Station) using System; using System.Text; using System.Net; using System.Net.Sockets; using System.Security.Cryptography; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Linq; using System.IO; namespace Subscriber_Station { class Program {
public static void Main() {
try {
TcpClient iTcpClient = new TcpClient(); Console.WriteLine("\nConnecting..."); iTcpClient.Connect("192.168.1.73", 8001); // Connected to the BS
Console.WriteLine("\nConnected to the Base Station (BS)"); Console.Write("\nEnter the Subscriber Station (SS) ID
String iString = Console.ReadLine(); Stream iStream = iTcpClient.GetStream();
ASCIIEncoding iASCIIEncoding = new ASCIIEncoding(); byte[] vbyte = iASCIIEncoding.GetBytes(iString);
Console.WriteLine("\nTransmitting..."); iStream.Write(vbyte, 0, vbyte.Length); byte[] bb = new byte[100];
int k = iStream.Read(bb, 0, 100); for (int i = 0; i < k; i++)
Console.Write(Convert.ToChar(bb[i]));
Console.WriteLine("\nReceived Message Successfully..."); iTcpClient.Close();
Console.WriteLine("\nOops! The Base Station (BS) ID is Encrypted ..."); Console.WriteLine("\nDecrypting ...");
string str;
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding(); str = enc.GetString(bb);
string trimmed = str.Trim('\0');
/*******************Message Decryption*******************/ string sdec;
DESCryptoServiceProvider iDESCryptoServiceProvider = new DESCryptoServiceProvider();
Encoding iEncoding = new System.Text.UTF8Encoding(); byte[] bkey = iEncoding.GetBytes("12345678");
byte[] biv = { 1, 2, 3, 4, 5, 6, 7, 8 }; ICryptoTransform iICryptoTransform =
byte[] ibyte = System.Convert.FromBase64String(trimmed); byte[] idec =
iICryptoTransform.TransformFinalBlock(ibyte, 0, ibyte.Length); sdec = iEncoding.GetString(idec);
/******************Message Decryption********************/ string vBSIDDe = sdec;
Console.WriteLine("\nBase Station (BS) ID is: " + vBSIDDe); TcpClient Atcpclnt = new TcpClient();
Atcpclnt.Connect("192.168.1.73", 8002); // Connected to the AS
Console.WriteLine("\nConnected to the Authentication Server (AS) ..."); Console.Write("\nEnter the Base Station (BS) ID to be
transmitted to the Authentication Server (AS): "); iString = Console.ReadLine(); iStream = Atcpclnt.GetStream(); vbyte = iASCIIEncoding.GetBytes(iString); Console.WriteLine("\nTransmitting..."); iStream.Write(vbyte, 0, vbyte.Length); bb = new byte[100]; k = iStream.Read(bb, 0, 100); for (int i = 0; i < k; i++)
Console.Write(Convert.ToChar(bb[i])); Console.WriteLine("\n******************************************** **********"); Atcpclnt.Close(); } catch (Exception e) {
Console.WriteLine("Error... " + e.StackTrace); }
} }
Phụ lục 3: Lập trình mã cho các AS (Authentication Server) using System; using System.Text; using System.Net; using System.Net.Sockets; namespace Authentication_Server { class Program {
static void Main(string[] args) {
try {
IPAddress iIPAddress = IPAddress.Parse("192.168.1.73"); //use the same in the client (Local machine IP Address)
TcpListener iTcpListener = new TcpListener(iIPAddress, 8002); iTcpListener.Start();
Console.WriteLine("\nAuthentication server (AS) is running at port 8002...\n");
Console.WriteLine("\nThe local End point is :" + iTcpListener.LocalEndpoint);
Console.WriteLine("\nWaiting for a connection..."); Socket iSocket = iTcpListener.AcceptSocket();
Console.WriteLine("\nConnection accepted from the Subscriber Station (SS)" + iSocket.RemoteEndPoint); byte[] vbyte = new byte[100];
Console.WriteLine("\nRecieved..."); for (int i = 0; i < j; i++)
Console.Write(Convert.ToChar(vbyte[i])); string str;
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding(); str = enc.GetString(vbyte);
string str1 = "005";
int result = str1.CompareTo(str);
ASCIIEncoding iASCIIEncoding = new ASCIIEncoding(); if (result == 0) { iSocket.Send(iASCIIEncoding.GetBytes("\nThisBase Station (BS) is Trusted !!!!!!!")); Console.WriteLine("\nSent Acknowledgement"); Console.WriteLine("********************************************** "); } if (result != 0) { iSocket.Send(iASCIIEncoding.GetBytes("\nThis BS is Rouge !!!!")); Console.WriteLine("\nSent Acknowledgement"); Console.WriteLine("********************************************** "); } /* clean up */ iSocket.Close();
iTcpListener.Stop(); } catch (Exception e) { Console.WriteLine("\nError... " + e.StackTrace); } } } }