4.1.1. Hình trạng mạng mô phỏng
Để mô phỏng mạng Pastry, mô hình mạng được sử dụng là mô hình mạng giao vận nhánh (Transit-stub). Mô hình mạng giao vận phân nhánh tạo ra đồ thị phân cấp bằng cách sinh ra các kết nối giao vận và các miền nhánh (stub domain). Có thể miêu tả một cách đơn giản và dễ hiểu cách hình thành mạng giao vận nhánh như sau: đầu tiên dựng lên đồ thị kết nối ngẫu nhiên; Mỗi node trong đồ thị tượng trưng cho toàn bộ một miền giao vận (transit domain). Mỗi node trong đồ thị đó sau đó được thay thế bởi một đồ thị kết nối ngẫu nhiên khác, đại diện cho topo xương sống của một miền giao vận. Tiếp đó, từ mỗi node trong từng miền giao vận, chúng ta sinh ra một đồ thị kết nối ngẫu nhiên đại diện cho miền nhánh gắn vào node đó. Cuối cùng chúng ta thêm các cạnh liên kết giữa các node, một đầu cạnh từ miền giao vận và một từ miền nhánh hay từ các miền nhánh riêng biệt với nhau. Hiển nhiên, nếu đồ thị ngẫu nhiên được sinh ra là kết nối hoàn toàn (liên thông hoàn toàn), thì mô hình được xây dựng là đồ thị liên thông.
Mô hình mạng dùng trong mô phỏng được tạo ra bởi chương trình sinh mô hình mạng GT-ITM . Các file dữ liệu cho mô hình mạng bao gồm:
• ts5050.sc
• ts5050-distances.out • ts5050-routes.out
Mô hình mạng mô phỏng này có 5050 bộ định tuyến và có thể mô phỏng cho 505.000 node.
4.1.2. Các file thư viện liên kết động trong chương trình
Để có thể thực hiện mô phỏng mạng Pastry, cần sử dụng bộ thư viện các lớp và hàm cho mạng ngang hàng có cấu trúc Pastry do hãng Microsoft xây dựng và phát triển.Bộ thư viện này gồm ba file đó là:
• Simulator.dll
• MessageRouting.dll • Pastry.dll
File thư viện MessageRouting.dll cung cấp các lớp và lớp trừu tượng dùng để xử lý các thông điệp trong mạng Pastry, lớp trừu tượng quan trọng nhất mà file này cung cấp được sử dụng trong mô phỏng là public abstract class Application. Lớp này có hai phương thức đáng quan tâm là:
• public abstract bool ContinueRouting(MessageRout-
ing.RouteMsg msg)
Phương thức này được thực thi trong quá trình chuyển tiếp thông điệp trong mạng.
• protected abstract void ProcessMessage(MessageRout-
ing.RouteMsg msg)
Khi thông điệp được chuyển tới đích, phương thức này được gọi và thực thi.
File thư viện động Simulator.dll cung cấp các lớp để tải mô hình mạng mô phỏng với lớp chính được sử dụng là public class Sim.Trong chương trình mô phỏng, ta cần
khởi tạo một đối tượng lớp Sim với các tham số truyền vào là ba file mạng mô phỏng sinh bởi chương trình GT-ITM được nêu ở trên.
File Pastry.dll cung cấp các lớp mô tả các đối tượng có trong mạng Pastry bao gồm:
public class LeafSet
public class RouteTable
public class NeighbourhoodSet
public class Node : MessageRouting.Node
public class NodeIdAddressBind :
MessageRouting.NodeIdAddressBind
public class NodeId : MessageRouting.NodeId
4.2. Xây dựng chương trình mô phỏng kiểm tra ẩn danh4.2.1. Mô tả chương trình 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
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.N-
odeIdAddressBind 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 Mes-
sageRouting.Application có trong file thư viện MessageRouting.dll. Lớp Au-
ditingApplication 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 ProcessMessage(MessageRout-
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 Mes-
sageType 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