Xây dựng chương trình mô phỏng kiểm tra ẩn danh

Một phần của tài liệu Chống tấn công che khuất trong các mạng ngang hàng (Trang 42)

4.2.1. Mô tả chương trình

Chương trình được viết bằng ngôn ngữ C#, với các file thư viện được xây dựng và phát triển bởi hãng Microsoft. Cơ chế kiểm tra ẩn được thực hiện dựa trên chương trình mô phỏng mạng Pastry, mạng Pastry ở đây có không gian định danh với l = 128 bit, tức có thể đánh định danh cho 2128 node hoặc khóa. Số của định danh là số trong hệ cơ số 16.

Cơ chế kiểm tra ẩn danh dựa vào việc giới hạn bậc để phát hiện ra các node gây hại trong hệ thống. Do đó, ta cần ấn định một số node trong mạng làm node gây hại và chọn ra một giới hạn bậc trong phù hợp. Gọi tỉ lệ node gây hại có trong mạng là f, ta sẽ chọn các node làm node gây hại là các node có số bậc trong cao nhất, tức là những node có kích thước tập con trỏ ngược lớn nhất. Gọi số node có trong mạng là N, ta chọn xấp xỉ f*N node làm node gây hại và một giới hạn bậc b sao cho tất cả các node gây hại được chọn có bậc trong cao hợn giới hạn bậc b và tất cả các node chuẩn có bậc trong nhỏ hơn hoặc bằng giới hạn bậc cho phép đó.

Trong tấn công che khuất, các node gây hại thông đồng với nhau để thực hiện che khuất các node khác trong mạng, do đó một node gây hại biết các node gây hại khác là các node nào. Truy vấn kiểm tra ẩn danh đòi hỏi node bị kiểm tra trả về tập con trỏ ngược của nó. Tập con trỏ ngược này phải chứa node tiến hành kiểm tra và kích thước tập con trỏ ngược phải nhỏ hơn bằng giới bậc cho phép thì mới được coi là kiểm tra thành công. Do node gây hại cần có nhiều node chuẩn chứa nó trong tập hàng xóm để có thể thực hiện âm mưu che khuất, nên các node gây hại có kích thước tập con trỏ ngược rất lớn. Mỗi khi có

truy vấn kiểm tra ẩn danh tới, nó sẽ phải quyết định có trả lời hay không. Nếu không trả lời thì sẽ bị tình nghi là node gây hại, nếu trả lời nó phải chọn một tập con ngẫu nhiên từ tập con trỏ ngược của nó để phản hồi về cho node kiểm tra. Tập con trỏ ngược trả lời cho cuộc kiểm tra có thể có hoặc không chứa node tiến hành kiểm tra, và xác suất có node kiểm tra bằng giới hạn bậc của mạng chia cho kích thước tập con trỏ ngược của nó. Chương trình kiểm tra ẩn danh sẽ cho tất cả các node chuẩn thực hiện kiểm tra ẩn danh đối với các node có trong tập hàng xóm của nó. Số lần kiểm tra ẩn danh đối với mỗi node hàng xóm sẽ được thay đổi với các giá trị khác nhau. Đây là cơ chế kiểm tra ẩn danh nên trong quá trình kiểm tra cần một node trung gian để chuyển tiếp thông điệp truy vấn kiểm tra từ node kiểm tra tới node bị kiểm tra nhằm che dấu danh tính node tiến hành và node bị kiểm tra. Node trung gian trong mỗi truy vấn kiểm tra sẽ được chọn ngẫu nhiên từ các node có trong hệ thống và khác với node kiểm tra và bị kiểm tra.

Do node trung gian chọn ngẫu nhiên, nên nó có thể là một node gây hại, nếu node trung gian được chọn là node gây hại nó sẽ thực hiện hành động phá hoại cuộc kiểm tra. Nếu node bị kiểm tra là node chuẩn, nó sẽ loại bỏ yêu cầu kiểm tra và trả lời cho node kiểm tra rằng kiểm tra thất bại. Như vậy node kiểm tra sẽ tình nghi node hàng xóm chuẩn của nó là node gây hại. Nếu node bị kiểm tra là node gây hại, nó sẽ thông đồng với node gây hại đó và gửi cho node kiểm tra một tập con trỏ ngược có chứa node kiểm tra, và node kiểm tra coi đó là một truy vấn kiểm tra ẩn danh thành công.

Thông điệp cài đặt dùng trong kiểm tra ẩn danh được chia làm bốn loại thông điệp: • CHALLENGE_REQ_1: Thông điệp truy vấn gửi từ node kiểm tra tới node

trung gian.

CHALLENGE_REQ_2: Thông điệp truy vấn gửi từ node trung gian tới node bị

Hình 7:Các loại thông điệp trong kiểm tra ẩn danh

CHALLENGE_RES_1: Thông điệp phản hồi từ node bị kiểm tra gửi cho node

trung gian.

CHALLENGE_RES_2: Thông điệp phản hồi từ node trung gian gửi cho node tiến

hành kiểm tra.

X Y Z

CHALLENGE_REQ_1 CHALLENGE_REQ_2

Dựa vào loại thông điệp ta có thể xác định các hành động tiếp theo của mỗi node nhận được thông điệp của quá trình kiểm tra ẩn danh.

4.2.2. Các file chương trình File Test.cs

File Test là file chính của chương trình mô phỏng, có chứa hàm main của chương trình. Các thuộc tính quan trọng trong lớp này bao gồm:

• Mảng lưu trữ tập hàng xóm của tất cả các ndoe trong mạng:

public static ArrayList[] NeighborSet • Mảng lưu trữ con trỏ ngược của tất cả các node trong mạng: public static ArrayList[] BackPointerSet

• Mảng chứa tất cả các node trong mạng:

public static ArrayList All_Node • Mảng chứa các node gây hại trong mạng

public static ArrayList MaliciousNodes • Tỉ lệ node gây hại trong mạng:

static double F

• Giới hạn bậc trong của các node: public static int bound

Một số phương thức chính của lớp Test:

• Phương thứ public void createMaliciousNodeSet(double

fMaliciousNode):Phương thức này sẽ khởi tạo các node gây hại và lưu vào trong mảng MaliciousNodes, số lượng các node gây hại sẽ chiếm tỉ lệ fMaliciousNode trong tổng số các node trong mạng, đồng thời phương thức này cũng sẽ xác định giới hạn bậc trong bound của mạng. Giá trị bound được

xác định sao cho tất cả các node gây hại có bậc trong cao hơn giá trị này, và các node chuẩn có bậc trong nhỏ hơn hoặc bằng giá trị bound.

• Phương thức public static Node CreateNodes(int

numNodes):Dùng khởi tạo một lượng node bằng numNodes cho mạng.

• Phương thức public static void SendMessages(int nodes, int

time): Phương thức này được gọi để gửi các thông điệp kiểm tra trong mạng. Hai tham số truyền vào là số node mạng và lượng thời thời gian để gửi các thông điệp truy vấn. Các node chuẩn được dùng để gửi các thông điệp truy vấn kiểm tra ẩn danh, đích của thông điệp chính là các node trong tập hàng xóm của nó.

• Phương thức khởi tạo: public Test(): Trong phương thức này sẽ khởi tạp mạng mô phỏng Sim s = Sim(string netFile, string routes- File, string distancesFile, Simulator.CheckIgnore ig- nore), trong đó các file netFile, routesFile, distancesFile là các file mô hình mạng được sinh ra bởi GT-ITM.

Ngoài các phương thức trên còn có các phương thức để liệ kê kết quả kiểm tra

showResult(), phương thức khởi tạo tập hàng xóm

getNeighbor(Pastry.NodeIdAddressBind NodeBind) và tập con trỏ ngược

createBackPointerSet() của các node trong mạng.

File AuditingApplication.cs

File này mô tả lớp AuditingApplication được kế thừa từ lớp trừu tượng MessageRouting.Application có trong file thư viện MessageRouting.dll. Lớp

AuditingApplication có thuộc tính quan trọng là :

private Node myServer: Chứa node đích của thông điệp được gửi đi.

Trong lớp này có các phương thức xử lý các thông điệp kiểm tra, mọi quá trình xử lý các thông điệp kiểm tra được gửi đi đều được xử lý trong phương thức:

protected override void

Phương thức này sẽ nhận dạng loại thông điệp kiểm tra dựa vào thuộc tính MessageType của thông điệp. Có bốn loại thông điệp, hai thông điệp truy vấn và hai thông điệp phản hồi đã được nói đến trong phần 4.1.2. Nếu node trung gian trong kiểm tra là node gây hại nó sẽ báo cho node tiến hành kiểm tra rằng không có phản hồi khi node bị kiểm tra là node chuẩn. Và nó trả về một thông điệp cho node kiểm tra giúp node bị kiểm vượt qua lần kiểm tra đó. Nếu node trung gian là node chuẩn, nó sẽ chuyển tiếp thông điệp kiểm tra đới đích. Nếu node đích là node chuẩn, nó sẽ phản gửi phản hồi lại cho node trung gian, và tất nhiên nó qua được lần kiểm tra này. Nếu node gây hại là node đích của cuộc kiểm tra, nó sẽ chọn trả lời hoặc không trả lời. Nếu trả lời, nó sẽ sinh một tập con từ tập con trỏ ngược của nó với các node trong tập con được lấy ngẫu nhiên, kích thước tập con này có thể bằng giới hạn bậc trong.

File Message.cs

Trong file này mô tả lớp Message, lớp này được kế thừa từ từ lớp RouteMsg được cung cấp trong file thư viện Pastry.dll. Lớp này mô tả các thông điệp được gửi đi, các thuộc tính của lớp này là:

• Danh sách tập con trỏ ngược trả về:

public ArrayList list

Tập con trỏ ngược của node bị kiểm tra trả về sẽ được lưu trong mảng này. • Thuộc tính lưu thông tin node kiểm tra và node đích:

public Pastry.NodeIdAddressBind aud_sour

public Pastry.NodeIdAddressBind aud_dest

• Thuộc tính để xác định có phản hồi từ node bị kiểm tra hay không

public bool has_res

Khi có phản hồi từ node bị kiểm tra, giá trị của thuộc tính này được thiết lập bằng true, hoặc khi node trung gian là node gây hại thực hiện phá hoại loại cuộc kiểm tra thì nó sẽ sinh thông điệp phản hồi cho node đích với giá trị thuộc tính này thiết lập bằng false.

Ngoài ra còn có bốn giá trị để thiết lập cho bốn loại thông điệp trong kiểm tra được thiết lập giá trị không đổi cho lớp này là:

public const int CHALLENGE_REQ_1 = 2111; public const int CHALLENGE_REQ_2 = 2222; public const int CHALLENGE_RES_1 = 3111; public const int CHALLENGE_RES_2 = 3222;

4.3. Thí nghiệm và nhận xét

Tôi sẽ tiến hành hai thí nghiệm để đánh giá hiệu quả của phương pháp kiểm tra ẩn danh. Trong hai thí nghiệm, số node trong mạng đều không đổi và bằng 5000. Tỉ lệ node gây hại là 0.2, tức trong mạng sẽ có khoảng 1000 node là node gây hại và 4000 node là node chuẩn. Mỗi thí nghiệm sẽ chạy chương trình mô phỏng năm lần, mỗi lần chạy có số lần lặp kiểm tra trên mỗi node là khác nhau. Gọi số lần kiểm tra trên mỗi node là n, giá trị tương ứng của n trong mỗi lần chạy chương trình là 8, 12, 16, 20 và 24. Gọi k là số cuộc kiểm tra mà một node bị kiểm tra phải vượt qua để được coi là node chuẩn, ngược lại nếu không qua sẽ bị coi là node gây hại. Ta sẽ thay k lần lượt bằng n/4, n/2 và 3n/4, và từ đó tính tỉ lệ node gây hại bị phát hiện được tương ứng với mỗi giá trị k.

4.3.1. Thí nghiệm 1

Trong thí nghiệm 1 này, ta giả định kích thước tập con trỏ ngược của node gây hại trong mạng lớn hơn 1.2 lần kích thước tập con trỏ ngược của các node chuẩn, tức xác suất để node gây hại chọn được tập con trỏ ngược để phản hồi kiểm tra có chứa node kiểm tra là xấp xỉ 1/1.2 hay 83%, điều này có nghĩa rằng khả năng node phá hoại vượt qua cuộc kiểm tra là rất cao.

Kết quả

Trong biểu đồ trên, trục tung là tỉ lệ node gây hại bị phát hiện, trục hoành là số kiểm tra đối với mỗi node. Ta có thể thấy rằng, tăng số lượng kiểm tra sẽ tăng tỉ lệ node gây hại bị phát hiện trong mạng, nhưng với k = n/4 thì ngược lại, tỉ lệ node gây hại bị phát hiện có xu hướng giảm và ở giá trị k này, tỉ lệ node gây hại bị phát hiện là thấp nhất, gần như bằng 0. Ta tăng giá trị của k lên n/2 và 3n/4 thì tỉ lệ node gây hại bị phát hiện tăng rõ rệt, đặc biệt với k = 3n/4 tỉ lệ phát hiện đều trên 0.8 và gần tới 1.

Trong biểu đồ này, trục tung là tỉ lệ node chuẩn bị kết luận nhầm là node gây hại, trục hoành là số lần kiểm tra với mỗi node.

4.3.2. Thí nghiệm 2

Trong thí nghiệm này, ta thiết lập tỉ lệ node gây hại trong mạng là 0.2, các node gây hại được chọn là các node có kích thước tập con trỏ ngược lớn nhất bởi tập con trỏ ngược lớn chính là đặc điểm nổi bật của một node gây hại. Chương trình tiến hành chọn tự động và chọn ra được 985 node đóng vai trò node gây hại. Các node gây hại này có tổng kích thước tập con trỏ ngược là 107258, chiếm tới 42% tổng kích thước tập con trỏ ngược của tất cả các node trong mạng. Giới hạn bậc được chương trình chọn ở đây bằng 62. Tức tất cả các node gây hại có bậc trong lớn hơn 62 và các node chuẩn có bậc trong nhỏ hơn hoặc bằng 62. Kích thước trung bình tập con trỏ ngược của node gây hại là 108. Xác suất trung bình để tập con trỏ ngược do node gây hại trả về có chứa node kiểm tra là xấp xỉ 57%.

Kết quả

Biểu đồ 3:Tỉ lệ node gây hại bị phát hiện trong thí nghiệm 2

Trong cả hai biể đồ trên, trục tung là tỉ lệ phát hiện và trục hoành là số lần kiểm tra với mỗi node.

4.3.3. Nhận xét

Trong hai thí nghiệm trên, tỉ lệ node gây hại bị phát hiện là rất cao với k = 3n/4. Đạt từ 0.8 đến gần bằng 1, đặc biệt với 24 cuộc kiểm tra và k = 3n/4 số node gây hại bị phát hiện trong cả hai lần thí nghiệm đều cao hơn 0.97. Chứng tỏ phương pháp kiểm tra ẩn danh rất hiệu quả trong phát hiện các node gây hại. Trong hai biểu đồ 1 và 3, chỉ có riêng đường tỉ lệ node gây hại bị phát hiện với k = n/4 có xu hướng đi xuống khi ta tăng số lần kiểm tra, trái với hai đường n/2 và 3n/4 có xu hướng đi lên khi tăng số lần kiểm tra. Sự đi xuống của tỉ lệ phát hiện với k = n/4 hoàn toàn hợp lý và tuân theo “Quy tắc phân phối xác suất nhị thức”[8].

Trong ba giá trị của k được thiết lập để đánh giá, ta thấy với k = 3n/4 đạt hiệu quả cao nhất trong phát hiện node gây hại, tuy nhiên nó lại có tỉ lệ kết luận node chuẩn là node gây hại cao nhất, và tỉ lệ này nằm trong khoảng 0.1 đến 0.2. Tỉ lệ kết luận nhầm đối với k =

n/4 và n/2 là rất thấp, và gần như bằng 0.

Trong thí nghiệm 1 có tỉ lệ node gây hại bị phát hiện thấp hơn so với tỉ lệ node gây hại bị phát hiện trong thí nghiệm 2, điều này có thể giải thích là do xác suất node gây hại chọn được một tập con trỏ ngược phù hợp có chứa node kiểm tra trong thí nghiệm 1 là 83%, cao hơn trong thí nghiệm 2 là 57%, do đó số node gây hại có khả năng qua được cuộc

kiểm tra cao hơn. Điều này đúng với công thức tỉ lệ node gây hại qua được cuộc kiểm tra: f+(1-f )pc được nói đến trong phần 3.3. Trong đó f là tỉ lệ node gây hại trong mạng, p là xác suất node gây hại phản hồi kiểm tra và c là xác suất node gây hại chọn được tập con trỏ phù hợp để phản hồi.

Để lý giải cho việc đi xuống của hai đường k = n/4 trong đồ thị 1, ta sẽ áp dụng quy tắc tính phân phối xác suất nhị thức để chứng minh cho sự đi xuống của đường này là đúng. Trong thí nghiệm 1, xác suất node gây hại qua được một cuộc kiểm tra là :

S = f+(1-f )pc = 0.2 + (1-0.2)* 0.5 * 0.83 = 0.532

Với giả thiết rằng, node gây hại chọn trả lời thông điệp kiểm tra với xác suất p=0.5. Theo quy tắc tính phân phối xác suất nhị thức, tỉ lệ node gây hại không qua được ít nhất 2 trong 8 cuộc kiểm tra là:

P1 = 0 8

C S0(1-S) 8 + 1 8

C S1(1-S) 7 = 0.0232

Tỉ lệ node không qua được ít nhất là 3 trong 12 cuộc kiểm tra là: P2= 0 12 C S0(1-S) 12 + 1 12 C S1(1-S) 11+ 2 12 C S2(1-S) 10 = 0.0110 Tỉ lệ node không qua được ít nhất là 4 trong 16 cuộc kiểm tra là:

Một phần của tài liệu Chống tấn công che khuất trong các mạng ngang hàng (Trang 42)

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

(54 trang)
w