Cơng việc mơ phỏng trên Hệ điều hành Contiki bao gồm xây dựng cơ sở cho thí nghiệm như mã nguồn, thuật tốn và thiết lập kịch bản hoạt động bao gồm xây dựng tình huống, hình thái mạng, thiết lập thời gian, cơ chế đo đạc dữ liệu.
Việc xây dựng cơ sở cho thí nghiệm mơ phỏng bao gồm các bước như sau: Xây dựng lại cuộc tấn cơng DoS và xây dựng cơ chế Overhearing.
Contiki-OS khơng cĩ sẵn tấn cơng DoS, cần xây dựng một file mơ phỏng hoạt động của nút Client nhưng cĩ thêm đoạn mã thực hiện chức năng sản sinh và truyền các gĩi tin rác tương tự như nút Client truyền dữ liệu đo đạc. File này được đặt tên là malicious.c, mã nguồn thêm vào (xem Phụ lục Hình 1 (PL)).
Khi chạy mơ phỏng trên Cooja, đối với nút Bot, sẽ thao tác tương tự như với các nút Client khác, chỉ cĩ điều thay vì sử dụng file udp-Client.c do Contiki cung cấp mà sử dụng file malicious.c cĩ cấu trúc tương tự file udp-Client.c, nhưng chèn thêm đoạn “mã độc” này vào. Sau đĩ, sẽ mơ phỏng mạng bị nhiễm độc này như bất cứ hệ thống mạng bình thường nào khác trong Contiki-OS.
Sau khi xây dựng một cuộc tấn cơng Botnet, cơng việc tiếp theo là xây dựng giải pháp Overhearing. Quá trình triển khai thuật tốn được chia làm 3 giai đoạn. + Giai đoạn 1: Đếm số gĩi tin, chỉ đơn giản là tạo 2 mảng, mảng *arrsender dành cho
số gĩi tin gửi đi, mảng *arrreceiver dành cho số gĩi tin mà nút đĩ nhận được. Độ dài mảng chính là tổng số nút trong mơ phỏng. Nút nào khơng phải nút hàng xĩm của nút đang xét sẽ cĩ giá trị là 0. Việc khai báo mảng được tiến hành trong file framer-802154.c và sẽ tham chiếu đến hai file Client.c và malicious.c.
+ Giai đoạn 2: Trong file Client.c và malicious.c, để thực thi thuật tốn này, sử dụng 1 vịng lặp for để tính giá trị trung bình, 1 vịng lặp for để tính phương sai. Sau đĩ dùng hàm sqrt() trong bộ thư viện <math.IoT>. Cuối cùng, dùng if để kiểm tra từng nút một lấy từ file framer-802154.c.
Mã nguồn thực hiện cơng đoạn 1-2 triển khai thuật tốn Overhearing (xem tại Phụ lục Hình 2 (PL)).
+ Giai đoạn 3: Cấu hình cài đặt giải pháp ngăn chặn Bots.
Cấu hình giải pháp ngăn chặn nút Bots
Khởi tạo thêm 1 mảng nữa cĩ độ dài bằng số nút trong giả lập ở file framer- 802154.c để đánh dấu nút nào là nút Bot. Các giá trị trong mảng được khởi tạo là 0.
Trong quá trình mơ phỏng, mảng này sẽ nhận tham chiếu từ thuật tốn ở file
Client.c và malicious.c xem nút nào là Bot để đánh lại giá trị là 1. Sau đĩ, đặt điều
kiện if-else trong file framer-802154.c để trong quá trình giao dịch, nếu phát hiện gĩi tin nút đĩ gửi tới, nĩ sẽ trả về FRAMER_FAILED (tức là từ chối xử lý gĩi tin).
Sau đây là lưu đồ thuật tốn thực hiện:
Sau cơng đoạn xây dựng cơ sở, thí nghiệm cĩ thể được triển khai với mơ phỏng tấn cơng Botnet cũng như mơ phỏng giải pháp Overhearing.
Tiếp theo là xây dựng kịch bản các tình huống thí nghiệm mơ phỏng này. Về mơ hình mạng, luận án chọn mơ hình lưới vì cĩ tính chịu lỗi cao, một nút sẽ cĩ từ 3 đến 8 nút lân cận (nút hàng xĩm là nút nằm trong phạm vi phủ sĩng), cho phép cĩ lựa chọn tuyến đường truyền tin. Thí nghiệm thực hiện trên ba mơ hình dạng lưới là 4x4 (16 nút), 5x5 (25 nút) và 6x6 (36 nút). Việc đưa ra các kịch bản cĩ số nút khác nhau nhằm so sánh ảnh hưởng của tấn cơng DoS lên các hệ thống mạng với quy mơ khác nhau.
a) b) Mơ hình Lưới 4x4 a) b) Mơ hình Lưới 5x5 a) b) Mơ hình Lưới 6x6
Hình 2.3. Tấn cơng DoS và giải pháp Overhearing trên WSN
- Chú thích Hình 2.3:
+ Nút nền hồng, số màu đen là nút Client.
+ Nút nền đen, số màu trắng là nút bị nhiễm mã độc (Bot).
+ Các nút trong phạm vi phủ sĩng của một nút là các nút nằm 4 bên cạnh và 4 bên chéo. Như vậy, các nút ở trung tâm sẽ cĩ 8 nút hàng xĩm, nút ở cạnh cĩ 5 nút cịn nút ở gĩc chỉ cĩ 3 nút hàng xĩm. Khoảng cách giữa các nút hàng xĩm trong mơ phỏng: Hai nút bên cạnh nhau cách nhau 30m (khoảng cách mơ phỏng trên Contiki), và theo định lý Pythagoras về tam giác vuơng cân thì hai nút chéo nhau sẽ cách nhau một khoảng bằng căn bậc hai của giá trị, gấp đơi bình phương khoảng cách giữa hai nút cạnh nhau, giá trị này là khoảng 42,4m. Tốc độ truyền của các gĩi tin tuân theo tiêu chuẩn Ethernet được mơ phỏng trong hệ điều hành Contiki là 10 Mb/s. Kích thước gĩi tin tối đa cĩ thể tạo ra và gửi trong hệ điều hành Contiki là 128 byte. Các nút Client đều cĩ khả năng đĩng vai trị Bot đồng nghĩa với nút đĩ cĩ khả năng tạo ra và gửi nhiều bản tin rác trong một thời gian ngắn với giao thức UDP.
Truyền thơng giữa các nút được mơ tả như sau: Tất cả các nút Client sẽ gửi một bản tin cho nút Coordinator trong khoảng thời gian 10s. Lưu ý rằng khái niệm
bản tin đề cập là thơng điệp ứng dụng (message), khái niệm chỉ các thơng tin ứng
dụng được các nút mạng gửi để phục vụ cơng việc hoặc để tấn cơng DoS. Khái niệm này khác với khái niệm gĩi tin (data packet) là dữ liệu được các nút mạng gửi dưới khái niệm vật lý. Trước khi khi gửi thơng điệp, các nút mạng sẽ chia tách thơng điệp thành các bản tin theo các giao thức phân tầng trong mạng cảm biến trong mơi trường IoT. Cũng theo giao thức RPL thì các gĩi tin sẽ được chuyển tiếp giữa các nút với nhau cho đến khi tới nút root và trong quá trình hoạt động của nút mạng luơn xảy ra trao đổi các gĩi tin với nhau phục vụ các hoạt động cơ bản trong truyền thơng mạng IoT. Như vậy, tần suất gửi và số lượng, kích thước các gĩi tin khơng chỉ phụ thuộc vào chu kỳ gửi thơng điệp mà cịn phụ thuộc vào nhiều yếu tố chủ quan và khách quan như vị trí nút, các hoạt động cơ bản duy trì hệ thống, cùng nhiều yếu tố ngẫu nhiên khác. Vì vậy, mặc dù hoạt động gửi bản tin (message) ở mỗi nút là giống nhau, nhưng hoạt động gửi nhận dữ liệu vật lý là khác nhau. Ngồi ra, mạng cảm biến được thí nghiệm đảm bảo mạng tiêu biểu và xuất hiện phổ biến trong thực tế, khi mà hầu hết các mơ hình mạng cảm biến hiện nay, việc gửi các
thơng điệp tuân theo chu kỳ xác định vì các dữ liệu thu thập và thống kê cũng tuân theo một chu kỳ để dễ đồng bộ hĩa. Với mạng cảm biến thí nghiệm khi được triển khai trên thực tế, thơng điệp được gửi về nút root với chu kỳ 10s cĩ thể mang thơng tin của mơi trường xung quanh mà nút cảm biến thu thập được. Các bản tin này được truyền theo mơ hình RPL, khi mà các nút Client ở xa sẽ truyền cho các nút Client gần nút Server hơn đến khi tới nút Client cĩ thể truyền tới nút Server. Như vậy, càng gần nút Server thì tần suất trao đổi dữ liệu càng dày và hệ quả là các cuộc tấn cơng DoS vào các nút Client gần Server sẽ gây hậu quả nghiêm trọng hơn các nút Client ở xa.
Về các tình huống thí nghiệm, cĩ bốn tình huống:
+ Tình huống TH0: Hoạt động bình thường, khơng giải pháp Overhearing khơng cĩ
sự xuất hiện Bot. Kịch bản sử dụng mơ hình mạng (a) trong Hình 2.3:
+ Tình huống TH1: Hoạt động bình thường, cĩ cài giải pháp Overhearing khơng cĩ
sự xuất hiện Bot. Kịch bản sử dụng mơ hình mạng (a) trong Hình 2.3:
+ Tình huống TH2: Kịch bản tấn cơng, khơng giải pháp Overhearing ta cĩ thể thấy
Mơ hình lưới 4x4 cĩ 1 nút đĩng vai trị Bot, lưới 5x5 cĩ 2 nút và Lưới 6x6 cĩ 3 nút. Các nút này nằm khá gần nút Coordinator nên hậu quả của các cuộc tấn cơng DoS thường nghiêm trọng. Kịch bản sử dụng mơ hình mạng (a) trong Hình 2.3:
+ Tình huống TH3: Tình huống mạng tấn cơng DoS nhưng được cài giải pháp
Overhearing. Tình huống sử dụng Mơ hình mạng trong Hình 2.3 nhưng tất cả các nút đều đã cài đặt giải pháp Overhearing cải tiến. Kịch bản sử dụng mơ hình mạng (a) trong Hình 2.3.
Với mỗi kịch bản sẽ đo đạc cả ba tiêu chí là tỉ lệ truyền nhận thành cơng, Độ trễ và năng lượng tiêu thụ. Ngồi ra, nhằm chứng tỏ sự khả thi của việc xác định Bot dựa trên đếm số gĩi tin gửi nhận của mỗi nút mạng xung quanh, tác giả cũng kiểm đếm số gĩi tin từng nút gửi đi và nhận về. Cơng việc này được thực hiện khi tính tốn tỉ lệ truyền nhận thành cơng của mạng.