Phòng chống tấn công lặp gói tin bằng cách sử dụng nhãn thời gian

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu vấn đề chất lượng dịch vụ và an toàn bảo mật trong mạng WIMAX luận văn ths công nghệ thông tin 60 48 15 (Trang 60 - 81)

BS cũng sẽ gửi lại ID của mình cho các SS với BSID (Base Station ID). SS gửi ID này để các AS để kiểm tra tình trạng BS.

3.4.4 Phòng chống tấn công chen giữa và tấn công từ chối dịch vụ

Cả hai cuộc tấn cống bị bỏ qua từ kịch bản này. Chúng ta có thể xem xét cách các cuộc tấn công có thể xảy ra cho thuê bao. Khi kẻ tấn công lấy được các dữ liệu khởi động mà một thuê bao gửi đến BS lần đầu tiên, kẻ tấn công tạo bản sao và cổ gắng để gửi lại dữ liệu này nhiều lần tới BS. Sau đó BS sẽ xem xét SS ban đầu như là giả mạo và từ chối dịch vụ. Tuy nhiên, trong kịch bản đề xuất, những kẻ tấn công không thể gửi dữ liệu tới BS vì trong thông điệp có chứa nhãn thời gian. BS sẽ không cho phép bất kỳ chi tiết dữ liệu không mã hóa từ SS đó. Khi BS đã có khóa công khai của SS, BS chỉ chấp nhận các truyền phát được mã hóa tử SS. Như vậy kẻ tấn công không thể dễ dàng vượt qua cơ chế phòng tránh tẩn công sử dụng nhãn thời gian. Do không có tấn công chen giữa và cũng loại bỏ khả năng tấn công từ chối dịch vụ. Vì trong trường hợp này, các cuộc tấn công từ chối dịch vụ là công đoạn cuối cùng cuộc tấn công chen giữa.

CHƯƠNG IV: THỬ NGHIỆM NÂNG CAO CHẤT LƯỢNG QUÁ TRÌNH XÁC THỰC TRONG MẠNG WIMAX

Như đã nói ở chương 3 hạn chế của kiến trúc bảo mật trong Wimax đó chính là thiếu cơ chế xác thực dành cho BS, chính vì vậy để đảm bảo an toàn, bảo mật và chất lượng dịch vụ trong Wimax thì cần phải có một cơ chế đảm bảo quá trình xác thực qua lại trong Wimax. Ở phần 3.4. Giải pháp nâng cao chất lượng xác thực trong mạng Wimax đã đưa ra được thuật toán, cơ chế để SS có thể xác thực được BS thông qua một máy chủ xác thực AS. Trong chương này tôi sẽ đưa ra demo cho việc xác thực BS thông qua AS

4.1. Cấu hình hệ thống

Yêu cầu phần cứng: Bảng dưới đây mô tả phần cứng tối thiểu cho tất cả các máy cài đặt và sử dụng chương trình mã hóa AES.

Thành phần phần cứng Yêu cầu tối thiểu

CPU Tối thiểu là Pentium III hoặc các bộ vi

xử lý cao hơn như Dual-core, core i.

RAM Dung lượng đề nghị là 1G

Disk Còn trống ít nhất là 20MB

Yêu cầu phần mềm:

+ Chương trình chạy trên nền tảng hệ điều hành Windows. + Cài đặt Visual Studio 2010.

4.2. Kịch bản thử nghiệm

Ở đây kịch bản thử nghiệm gồm có 3 tiến trình đó là tiến trình trên BS, AS và SS, do không đủ thiết bị nên tôi thử nghiệm cả 3 tiến trình này trên cùng một máy và kịch bản thử nghiệm như sau:

BS và AS biết về nhau từ khi chúng bắt đầu thực hiện tiến trình. Một AS chỉ cho phép có một BS hợp pháp và không có yếu tố nào khác đáng lo ngại, SS nhận biết được BS và AS có thể xác minh các BS từ AS. Hình 4.1 cho ta thấy sơ đồ tổng thể các thông báo của một truyền xác thực thành công giữa một BS và SS mà cả hai đều được sự giúp đỡ từ bên đáng tin cậy thứ ba AS (Authentication Server). Tất cả các thông điệp được mô tả dưới đây trong sơ đồ trao đối thông điệp.

Hình 4.1: Quá trình truyền thông tổng thể Thông điệp 1: SS giao tiếp với BS.

Thông điệp 2: SS bắt đầu truyền thông bằng cách gửi chứng chỉ của riêng của nó và các thông tin khác như tên mật, khả năng hồ trợ, nhãn thời gian để tránh những kẻ trộm làm tràn các BS.

Thông điệp 3: BS gửi ID riêng của mình và các văn bản khác bằng cách mã hóa khóa công khai của SS.

Thông điệp 4: BS cũng sẽ gửi các thông tin bí mật của SS tới AS. Tuy nhiên, các BS và AS đều được thành lập từ nhà sản xuất nên là thiết bị tin tưởng lẫn nhau.

Thông điệp 5: SS gửi các thông tin bí mật mà nó nhận được từ BS tới AS sử dụng khóa riêng của nó.

Thông điệp 6: AS biết khóa công khai của SS từ BS và gửi lại thông báo xác nhận sau khi quan sát các thông điệp.

Thông điệp 7: Phiên thông tin liên lạc an toàn có thể bắt đầu giữa SS và BS. 4.3. Mô phỏng kết quả

Để mô phỏng giải pháp sử dụng một máy chủ xác thực (Authentication Server _ AS) xác thực BS hợp lệ, tôi xây dựng mô hình gồm một mối quan hệ TCP client – server: SS hoạt động như client, các BS và AS tương ứng làm việc như máy chủ server. Thuật toán này có điều kiện tiên quyết là BS và AS phải được tin cậy với nhau từ trước đó và việc mã hóa phải được sử dụng để mã hóa các thông điệp. Chi tiết thuật toán được hiển thị trong các hình dưới đây.

+ BS đang chờ đợi để nhận được yêu cầu của SS nào đó. BS đang chạy ở cổng 2008 và IP cục bộ là 192.168.1.2

+ AS đang chờ để một SS nào đó gửi thông tin xác thực BS tại cổng 2009 và địa chỉ IP của AS là 192.168.1.3

+ SS đã kết nối đến BS với cổng 2008 và Local end point là 192.168.1.2. SS đang gửi ID của mình và tất cả thông tin cần thiết đến BS.

+ BS nhận thành công các thông tin SS. BS mã hóa các thông tin của nó và gửi đến SS.

+ SS gửi thông tin đó đến AS để xác minh BS.

+ AS đang chạy tại cổng 2009 với Local end point là 192.168.1.3. Nó nhận được thông tin của BS mà SS gửi tới, xác thực và trả lời SS.

+ SS nhận được trả lời từ AS. Nếu thông tin của BS là đúng thì phiên truyền thông được bắt đầu.

` + Nếu thông tin của BS không đúng thì ngắt kết nối tại đây.

KẾT LUẬN

Luận văn này tập trung vào nghiên cứu về tổng quan mạng không dây Wimax, các chuẩn IEE 802.16 sử dụng trong Wimax. Qui trình bảo mật trong mạng Wimax. Các cơ chế tấn công khác nhau được phân tích đối với kiến trúc bảo mật của mạng Wimax. Luận văn chỉ ra các nhược điểm về an ninh của mạng Wimax, những kiểu tấn công trong Wimax và cách thức phòng chống các kiểu tấn công đó. Việc xác thực lẫn nhau giữa trạm BS và SS được demo để tăng cường bảo mật cho thuê bao để tránh trạm cơ sở giả mạo. Các thuật toán trong luận văn cho thấy cách thức để thiết lập quy trình xác thực lẫn nhau.

Hướng nghiên cứu và phát triển của luận văn

Nghiên cứu và xây dựng chương trình xác thực, mã hóa hoàn thiện để đảm bảo an ninh, bảo mật trong mạng Wimax.

TÀI LIỆU THAM KHẢO Tiếng Việt

1. Đỗ Ngọc Anh, biên dịch “Wimax di động: Tổng quan kỹ thuật- đánh giá hoạt động” http://vi.scribd.com/doc/83302487/WiMAX-Di-Dong-Phan-1-

031106#scribd

2. Nguyễn Quốc Khương, Nguyễn Văn Đức, Nguyễn Trung Kiên, Nguyễn Thi Hà, “WiMax – Công nghệ truy nhập mạng không dây băng rộng”

3. Nguyễn Việt Hùng, “Công nghệ truy cập mạng NGN” – Tổng công ty Bưu chính viễn thông Việt Nam – Học viện công nghệ bưu chính viễn thông – Trung tâm đào tạo bưu chính viễn thông I.

4. “WiMax – Công nghệ truy nhập mạng không dây băng rộng”, ThS. Nguyễn Quốc Khương, TS. Nguyễn Văn Đức, ThS. Nguyễn Trung Kiên, KS. Nguyễn Thu Hà

5. “Wimax di động: Tổng quan kỹ thuật đánh giá hoạt động”, Đỗ Ngọc Anh 6. “Tổng quan về mạng truy nhập băng thông rộng-WiMax”

http://timtailieu.vn/tai-lieu/tong-quan-ve-mang-truy-nhap-bang-rong-wimax- 37488/

Tiếng Anh

5. IEEE Standards 802.16a – 2003 6. IEEE Standards 802.16 REVd – 2004 7. IEEE 802.16 WiMax

8. “Wimax/802.16 Threat Analysis” Michel Barbeau, School of Computer Science, Carleton University, Canada, October

9. “Security ISSues of IEEE 802.16 (WiMAX)”,

JamshedHasanSchoolofComputerandInformationScience, EdithCowanUniversity, Australia

Thai Computer Emergency Response Team (ThaiCERT) National Electronics and Computer Technology Center Thailand

11. “IEEE 802.16 WiMaxSecurity” Dr. Kitti Wongthavarawat

WireleSS Security R&D, ThaiCERT, NECTEC, Presents at NAC 2005 March 28, 2005

12. “ADVANCED ENCRYPTION STANDARD (AES)” Federal Information ProceSSing Standards Publication 197, November 26, 2001

13. “ADVANCEDENCRYPTIONSTANDARD”

InSight:RIVIERACADEMICJOURNAL,VOLUME6,NUMBER2,FALL2010 14. WiMAX: Technology for Broadband WireleSS AcceSS Loutfi Nuaymi © 2007 John Wiley & Sons, Ltd. ISBN: 0-470-02808-4

15. Overview of IEEE 802.16 Security David Johnston & JeSSe Walker

16. “WiMAX: Standards and Security”, 2008 by Taylor & Francis Group, LLC 17. “DENIAL OF SERVICE VULNERABILITIES IN IEEE 802.16

WIRELESS NETWORKS ” by Derrick D. Boom, September 2004

18. “Analysis and ASSeSSment the Security ISSues of IEEE 802.16/WiMax Network” by Mohammad HoSSain

19. WiMAX Handbook Building 802.16 WireleSS Networks Frank Ohrtman, McGraw-Hill

Phụ lục 1: Lập trình mã cho các BS (Base Station) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; //Thư viện socket

using System.Net;

using System.Net.Sockets;

using System.Security.Cryptography; using System.Threading;

namespace BS_DTTU //Tên ứng dụng (Project) {

public partial class Form1 : Form {

public Form1() {

InitializeComponent(); }

//Khai báo biến toàn cục public static IPEndPoint iep; public static Socket server; public static Socket client; public static string s1;

private void btnStart_Click(object sender, EventArgs e)//Sự kiện Click { try { if (btnStart.Text == "Bắt đầu") { btnStart.Enabled = false; Application.DoEvents();

Thread A = new Thread(new ParameterizedThreadStart(Listen)); A.Start(Int32.Parse(txtPort.Text));

A.Join();

lstMsg.Items.Add("BS đang chạy tại cổng: " + txtPort.Text);//+ port.ToString());

lstMsg.Items.Add("Địa chỉ IP cục bộ của BS: " + iep.ToString()); lstMsg.Items.Add("Đang chờ kết nối... ");

Thread B = new Thread(new ThreadStart(KetNoi)); B.Start();

B.Join();

lstMsg.Items.Add("Chấp nhận kết nối từ địa chỉ: " + client.RemoteEndPoint.ToString());

Thread MaHoaID = new Thread(new ParameterizedThreadStart(maHoaID));

MaHoaID.Start(txtBSID.Text); MaHoaID.Join();

lstMsg.Items.Add("Đang gửi BS Code cho SS..."); btnStart.Enabled = true;

btnStart.Text = "Kết thúc";

Thread rev = new Thread(new ThreadStart(recev)); rev.Start(); rev.Join(); lstMsg.Items.Add("SS gửi: " + s1); txtMsg.Enabled = true; btnRecei.Enabled = true; } else { client.Close(); server.Close(); Application.Exit(); } }

catch (Exception ex) {

MessageBox.Show("Lỗi: " + ex); }

}

private void Listen(object port)//Thread Listen {

iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), cong);

server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//Tạo socket Server

server.Bind(iep);//Gắn kết với địa chỉ IP

server.Listen(10);//Lắng nghe kết nối từ Client }

static void KetNoi()//Thread chấp nhận Kết nối {

client = server.Accept(); }

static void maHoaID(object bsID)//Thread Mã hóa thông tin của BS {

string id = (string)bsID;

Sec_AES mahoa = new Sec_AES();//Mã hóa string s = mahoa.Encrypt(id, "1", 128); //Chuyen chuoi s thanh byte

byte[] databs = new byte[1024];

databs = Encoding.ASCII.GetBytes(s); //Gui nhan du lieu theo giao thuc da thiet ke

client.Send(databs, databs.Length, SocketFlags.None); }

static void recev()//Nhận thông điệp từ SS {

try {

byte[] databs2 = new byte[1024]; int recvbs = client.Receive(databs2); if (recvbs == 0) { client.Close(); server.Close(); Application.Exit(); } else {

//Chuyen mang byte data thành chuoi va in ra man hinh s1 = Encoding.ASCII.GetString(databs2, 0, recvbs); //Neu nhan duoc chuoi quit thi thoat

if (s1.ToUpper().Equals("QUIT")) {

client.Close(); server.Close();

Application.Exit(); } } } catch {

//MessageBox.Show("Lỗi truyền dữ liệu từ SS"); client.Close();

server.Close(); Application.Exit(); }

}

private void btnRecei_Click(object sender, EventArgs e)//Sự kiện Click Trả lời SS

{

Thread tl = new Thread(new ParameterizedThreadStart(traloi)); tl.Start(txtMsg.Text);

tl.Join();

Thread rev = new Thread(new ThreadStart(recev)); rev.Start();

rev.Join();

lstMsg.Items.Add("SS gửi: " + s1); }

static void traloi(object msg)//Trả lời SS {

string input = (string)msg;

if (input.ToUpper().Equals("QUIT")) { client.Close(); server.Close(); Application.Exit(); }

//chuyen input thanh mang byte gui len cho SS else

{

byte[] databs2 = new byte[1024];

databs2 = Encoding.ASCII.GetBytes(input);

client.Send(databs2, databs2.Length, SocketFlags.None); }

}

private void Form1_Load(object sender, EventArgs e) {

} }

Phụ lục 2: Lập trình mã cho các SS (Subscriber Station) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Threading; namespace SS_DTTU {

public partial class Form1 : Form {

public Form1() {

InitializeComponent(); }

public static IPEndPoint iep; public static Socket client; public static string s; public static string ss; Sec_AES gma;

public static string giaima;

static void Connect(object port)//Kết nối với BS {

try {

int cong = (int)port;

iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), cong); client = new Socket(AddressFamily.InterNetwork,

SocketType.Stream, ProtocolType.Tcp); client.Connect(iep);

catch { MessageBox.Show("Không tìm thấy BS"); client.Close(); Application.Exit(); } }

static void sendIDBS()//Phương thức nhận BS {

try {

byte[] data = new byte[1024]; int recv = client.Receive(data);

s = Encoding.ASCII.GetString(data, 0, recv); } catch { client.Close(); Application.Exit(); } }

public static IPEndPoint iep2; public static Socket client2; public static string s2;

static void sendIDAS(object port)//Thread Kết nối với AS {

try {

int p = (int)port;

iep2 = new IPEndPoint(IPAddress.Parse("127.0.0.2"), p); client2 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

client2.Connect(iep2);

byte[] dataas = new byte[1024];

dataas = Encoding.ASCII.GetBytes(giaima);

client2.Send(dataas, dataas.Length, SocketFlags.None); byte[] data2 = new byte[1024];

int recv2 = client2.Receive(data2);

s2 = Encoding.ASCII.GetString(data2, 0, recv2); } catch { client.Close(); client2.Close();

Application.Exit(); }

}

private void btnConnect_Click(object sender, EventArgs e)//Sự kiện click nút kết nối

{

btnConnect.Enabled = false;

Thread conn = new Thread(new ParameterizedThreadStart(Connect)); conn.Start(Int32.Parse(txtPortBS.Text));

conn.Join();

lstMessage.Items.Add("SS đang kết nối với BS...");

Thread sendID = new Thread(new ThreadStart(sendIDBS)); sendID.Start();

sendID.Join();

lstMessage.Items.Add("BS Code là: " + s); gma = new Sec_AES();

if (s!=null) {

giaima = gma.Decrypt(s, "1", 128); }

lstMessage.Items.Add("Giải mã BS Code: " + giaima);

lstMessage.Items.Add("Gui BS Code = " + giaima + " sang AS để xác thực:");

Thread sendAS = new Thread(new ParameterizedThreadStart(sendIDAS)); sendAS.Start(Int32.Parse(txtAS.Text)); sendAS.Join(); lstMessage.Items.Add("Đang gửi...."); lstMessage.Items.Add("Kết quả xác thực là: " + s2); if (s2 == "true") {

MessageBox.Show("Kết quả xác thực BS Code là true \nGiao dịch an toàn \nNhập nội dung vào TextBox để gửi thông điệp cho BS");

txtMSG.Enabled = true; btnSend.Enabled = true; }

else {

MessageBox.Show("Giao dịch không an toàn - nhấn OK để thoát"); client.Close();

client2.Close(); Application.Exit();

} }

private void btnSend_Click(object sender, EventArgs e)//sự kiện click vào nút gửi

{

string input = txtMSG.Text;

if (input.ToUpper().Equals("QUIT")) {

client.Close(); Application.Exit(); }

//chuyen input thanh mang byte gui len cho server else

{

byte[] datass = new byte[1024];

datass = Encoding.ASCII.GetBytes(input);

client.Send(datass, datass.Length, SocketFlags.None); }

Thread nhan = new Thread(new ThreadStart(nhanDL)); nhan.Start(); nhan.Join(); lstMessage.Items.Add("BS gửi: " + ss); }

static void nhanDL() {

try {

byte[] databs = new byte[1024]; int recvbs = client.Receive(databs);

ss = Encoding.ASCII.GetString(databs, 0, recvbs); } catch { MessageBox.Show("Ngắt kết nối"); client.Close(); Application.Exit(); } }

} }

Phụ lục 3: Lập trình mã cho các AS (Authentication Station) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Threading; namespace AS_DTTU {

public partial class Form1 : Form {

public Form1() {

InitializeComponent(); }

public static IPEndPoint iep2; public static Socket server; public static Socket client2; static void ListenSS(object port) {

int p = (int)port;

iep2 = new IPEndPoint(IPAddress.Parse("127.0.0.2"), p);

server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

server.Bind(iep2); server.Listen(10); }

static void AcceptSS() {

}

private void btnStart_Click(object sender, EventArgs e) { try { if (btnStart.Text == "Bắt đầu") { btnStart.Enabled=false;

Thread Connect = new Thread(new ParameterizedThreadStart(ListenSS));

Connect.Start(Int32.Parse(txtPort.Text)); Connect.Join();

lstMessage.Items.Add("Authentication Server (AS) đang chạy tại cổng: " + txtPort.Text);

lstMessage.Items.Add("Địa chỉ cục bộ của AS: " + iep2.ToString());

lstMessage.Items.Add("AS đang chờ xác nhận thông tin của BS Code");

Thread AccepSS = new Thread(new ThreadStart(AcceptSS)); AccepSS.Start();

AccepSS.Join();

lstMessage.Items.Add("Kiểm tra BS Code tu SS gui");

byte[] dataas = new byte[1024];//Khai báo mảng byte nhận BS Code

int recv2 = client2.Receive(dataas);

//Chuyen mang byte data thành chuoi va in ra man hinh string s2 = Encoding.ASCII.GetString(dataas, 0, recv2); lstMessage.Items.Add("SS gửi BS Code lên AS là: " + s2); lstMessage.Items.Add("AS đang trả lời SS...");

btnStart.Text = "Kết thúc"; btnStart.Enabled = true;

byte[] dataas2 = new byte[1024];

if (s2.Equals("0011"))// || s2.Equals("0012"))//Kiểm tra BS Code {

s2 = "true";

dataas2 = Encoding.ASCII.GetBytes(s2);

client2.Send(dataas2, dataas2.Length, SocketFlags.None); }

else {

s2 = "false";

dataas2 = Encoding.ASCII.GetBytes(s2);

client2.Send(dataas2, dataas2.Length, SocketFlags.None); } } else { client2.Close(); server.Close(); Application.Exit(); } } catch { MessageBox.Show("Lỗi kết nối"); client2.Close(); server.Close(); Application.Exit(); } }

private void Form1_Load(object sender, EventArgs e) {

} } }

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu vấn đề chất lượng dịch vụ và an toàn bảo mật trong mạng WIMAX luận văn ths công nghệ thông tin 60 48 15 (Trang 60 - 81)

Tải bản đầy đủ (PDF)

(81 trang)