Xây dựng hệ thống phát hiện xâm nhập là nhu cầu cần thiết cho mạng
Internet của vạn vật. Do sự phát triển không ngừng của công nghệ cũng như sự
phát triển của IoT, các lỗ hổng ngày càng nhiều và các phương pháp tấn công mới
luôn được những kẻ xấu thực hiện. Vì vậy, việc nghiên cứu và phát triển hệ thống
cũng rất cần thiết. Kết quả nghiên cứu của luận văn như sau:
- Luận văn đã trình bày được những đặc điểm cơ bản của hệ thống phát hiện
xâm nhập trong mạng Internet của vạn vật SVELTE.
- Luận văn cũng đã nghiên cứu, cải tiến được thuật toán phát hiện sự không
nhất quán trong mạng. Kết quả thu được cho thấy thuật toán cải tiến đã có
hiệu quả so với thuật toán cũ.
- Contiki OS là hệ điều hành phổ biến để mô phỏng hệ thống phát hiện xâm
nhập. Qua một thời gian nghiên cứu, tìm hiểu, tôi cũng đã hiểu rõ được cơ
chế hoạt động của các process trong Contiki OS, hiểu biết cơ bản về các
thuật toán định tuyến trong RPL.
Do thời gian và kinh nghiệm có hạn, luận văn vẫn còn tồn tại một số hạn
chế như việc thực hiện mô phỏng với số lần chưa đủ nhiều, có thể dẫn đến sai sót
về kết quả. Do vậy trong thời gian tới, mô phỏng sẽ được chạy lại với nhiều lần
hơn để có thể có được kết quả khách quan.
SVELTE được thiết kế để có thể mở rộng với các kiểu tấn công khác. Hệ
thống có thể mở rộng với việc phát hiện wormhole attack bằng cách mô hình hóa
lại mạng qua đồ họa máy tính. Việc này khả thi khi các giải phát phát hiện
wormhole attack trên mạng không dây đã được đề xuất [10].
50 trang |
Chia sẻ: yenxoi77 | Lượt xem: 558 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Luận văn Phát hiện xâm nhập theo thời gian thực trong mạng Internet của vạn vật, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
hí lắp đặt, dịch
vụ quản lý, và giá trị kinh tế gia tăng.
- Giá trị của các thiết bị IOT sẽ chạm mốc 6,7 tỷ USD vào năm 2019. Trong
đó doanh thu từ phần cứng sẽ chỉ chiếm 8% - khoảng 50 triệu USD, các
nhà sản xuất phần mềm và các công ty cơ sở hạ tầng sẽ thu lợi nhiều hơn
từ cổ phiếu IOT.
- Sự tăng trưởng của IOT sẽ mang lại hiệu quả lớn và chi phí thấp hơn tại
nhà, nơi làm việc và các thành phố trong tương lai. Tuy nhiên, việc sử dụng
các thiết bị điện tử trong hệ thống an ninh vẫn là một vấn đề nan giải.
- Nền tảng IOT đang thiếu một chuẩn công nghệ và tiêu chuẩn chung để
tương thích và sử dụng với các thiết bị. Hiện nay có rất ít các tiêu chuẩn
(hoặc quy định) cho những thiết bị chạy trên nền tảng này. Vấn đề cấp bách
nhất là phải chuẩn hoá các nền tảng IOT và giải quyết những vấn đề an ninh
hiện tại.
(Trích, genk.vn – Internet of Things sẽ thế nào trong 5 năm tới)
Rõ ràng, IoT có thể thay đổi hoàn toàn cách sống của con người trong tương
lai. Khi mọi thứ đã được “Internet hóa”, người dùng hoàn toàn có thể điều khiển
chúng từ bất cứ đâu, chỉ cần một chiếc điện thoại có kết nối Internet. Nhưng đây
cũng là một thách thức cho các nhà quản lý, một khi “vạn vật” được kết nối, thì
tính bảo mật sẽ bị đặt dấu hỏi lớn và trở nên quan trọng.
Các thiết bị trong mạng IoT kết nối với nhau thông qua một thiết bị điều
khiển, thiết bị điều khiển này có thể là một máy tính, smartphone,... Các thiết bị
này có khả năng kết nối trực tiếp ra Internet, sẽ dễ dàng cho những kẻ tấn công sử
dụng chính mạng Internet đó xâm nhập và tấn công các thiết bị trong mạng. Do
IoT là mạng kết nối mà các phần tử sẽ truyền tải thông tin, giao tiếp với nhau, vì
thế việc truyền tải gói tin cần được bảo vệ chặt chẽ. Mặc dù giải pháp mã hóa và
xác thực đã được thực hiện trong IoT nhưng IoT vẫn bị ảnh hưởng nặng bởi một
số kiểu tấn công đặc biệt như sinkhole attack, selective forwarding attack... Vì thế
cần có một giải pháp chống lại các kiểu tấn công dạng này. Giải pháp phổ biến
nhất hiện này là triển khai hệ thống phát hiện xâm nhập theo thời gian thực trong
mạng Internet của vạn vật.
Luận văn thạc sĩ CNTT Đặng Xuân Đích
3
1.2 Các công trình nghiên cứu liên quan
Trên thế giới hiện nay, cũng có một số hệ thống phát hiện xâm nhập theo
thời gian thực đã được đề xuất, ví dụ như:
- RIDES [7], một hệ thống phát hiện xâm nhập trong mạng cảm biến không
dây dựa trên chữ ký.
- Phát hiện xâm nhập DoS trong mạng 6LoWPan [8] hay SVELTE, một hệ
thống phát hiện xâm nhập theo thời gian thực phát hiện các cuộc tấn công
sinkhole đã được kiểm chứng qua mạng giả lập.
SVELTE triển khai trên mạng IoT sử dụng Ipv6 để định danh các thiết bị
trong mạng và được định tuyến bằng giao thức RPL. IoT được gọi là mạng cho
các thiết bị năng lượng thấp (6LoWPAN), thiết bị chuyển tiếp gói tin từ các thiết
bị trong mạng ra ngoài được gọi là 6BR. SVELTE được cài đặt trên 6BR và trên
các node, module chạy trên các node có nhiệm vụ gửi thông tin về cho 6BR,
module trên 6BR nhận thông tin và phân tích các thông tin để đưa ra các cảnh
báo. Hệ thống SVELTE được đề xuất có tỉ lệ phát hiện khá cao, đặc biệt với những
mạng nhỏ. Tuy nhiên, SVELTE cũng có một hạn chế là không thể phân biệt được
sự không nhất quán thông tin của các node báo về cho 6Mapper là do bản thân
mạng hay do cuộc tấn công từ bên ngoài.
1.3 Mục đích của luận văn
Sự không nhất quán thông tin trong mạng có thể bị gây ra bởi việc gửi nhận
gói tin không đồng thời trong SVELTE hoặc do kẻ tấn công cố tình gửi thông tin
sai lệch. Thuật toán phát hiện sự không nhất quán của SVELTE dựa vào thông tin
khai báo bởi số đông hàng xóm so với thông tin của node đó để đưa ra quyết định
về sự không nhất quán. Thuật toán này có nhược điểm đó là không xác định được
thông tin sai lệch là do kẻ tấn công gây ra hay do việc gửi nhận thông tin trong
mạng gây ra. Vì thế, luận văn tập trung cải tiến thuật toán này dựa vào kỹ thuật
gán nhãn thời gian vector. Kết quả cho thấy thuật toán mới chạy ổn định và thu
được kết quả tốt hơn.
1.4 Kết quả đạt được
Luận văn thạc sĩ CNTT Đặng Xuân Đích
4
SVELTE được chạy mô phỏng trên Contiki OS, hệ điều hành chuyên để mô
phỏng các thiết bị nhúng không dây.
Mô phỏng được chạy với mạng có 8 node, 16 node, 32 node trong 5 phút,
10 phút, 20 phút, 30 phút với một số lần nhất định để tìm ra được tỉ lệ phát hiện
đúng các cuộc tấn công trong mạng.
Kết quả đã phát hiện được các kiểu tấn công sinkhole attack với tỉ lệ phát
hiện đúng tương đương SVELTE trong khi tỉ lệ phát hiện sai đã giảm so với hệ
thống cũ.
1.5 Cấu trúc của luận văn
Phần tiếp theo của luận văn được tổ chức như sau:
- Chương 2: Hệ thống phát hiện xâm nhập SVELTE
Chương này mô tả cấu trúc, thuật toán của SVELTE và hạn chế của
thuật toán gốc.
- Chương 3: Cải tiến giải thuật phát hiện sự không nhất quán về thông
tin trong mạng
Chương này đi sâu phân tích, thiết kế giải thuật, đưa ra các giả mã
của thuật toán sử dụng kĩ thuật gán nhãn thời gian vector để phát hiện các
sự sai khác là do bản thân mạng hay do cuộc tấn công sinkhole. Trình bày
ưu điểm của giải thuật cải tiến.
- Chương 4: Mô phỏng
Chương này đưa ra hướng dẫn cài đặt mô phỏng SVELTE-VC, đưa
ra các giả thiết, trường hợp trong mô phỏng. Đồng thời, trong chương này
cũng đưa ra các biểu đồ, so sánh kết quả với kết quả cũ đã được kiểm chứng.
- Chương 5: Kết luận và phương hướng phát triển
Chương này tóm lược nội dung luận văn, đề xuất những hướng phát
triển của đề tài.
Luận văn thạc sĩ CNTT Đặng Xuân Đích
5
2. HỆ THỐNG PHÁT HIỆN XÂM NHẬP SVELTE
SVELTE được cài đặt trên mạng của các thiết bị hạn chế về tài nguyên kết
nối với mạng Internet thông qua giao thức Ipv6 để định danh 6LoWPAN. RPL
được sử dụng làm giao thức định tuyến trong hệ thống.
SVELTE có ba module chính. Module đầu tiên là 6LoWPAN Mapper,
module được cài trên 6BR với nhiệm vụ phân tích, phát hiện xâm nhập trong
mạng từ dữ liệu thu thập được và phát hiện xâm nhập, module này sẽ được trình
bày trong phần 2.2.1. Module thứ hai là 6LoWPAN Client, được cài đặt trên các
node, có nhiệm vụ thu thập thông tin của các node hàng xóm và gửi về cho
6Mapper, module này sẽ được trình bày trong phần 2.2.2. Module cuối cùng là
hệ thống tường lửa được thiết kế để lọc các gói tin không muốn truyền tải trong
mạng, nhưng do luận văn nghiên cứu và cải tiến hệ thống phát hiện xâm nhập,
nên việc triển khai tường lửa không được đề cập tới.
Nhưng trước hết, để hiểu được hệ thống phát hiện xâm nhập, ta phải hiểu
cơ chế định tuyến và tấn công trong RPL.
2.1 Định tuyến trong RPL và cơ chế tấn công sinkhole
DAG [13] [14] là một topo mạng mà mọi kết nối giữa các phần tử (Node)
trong DAG đều có hướng hướng về DAG ROOT và đảm bảo không tạo ra các
vòng lặp trong DAG. RPL [13] [14] sử dụng DAG để định tuyến, 6BR chính là
DAG ROOT trong RPL, các thiết bị là các Node trong RPL. Thuật toán định tuyến
này sử dụng một giá trị gọi là rank để xác định tuyến đường từ node cần gửi tin
tới DAG ROOT. DAG ROOT sẽ có rank nhỏ nhất, càng ra xa, các node sẽ có rank
càng cao, node sẽ chọn node bên cạnh (node hàng xóm – node neighbor) có rank
nhỏ nhất làm node chuyển tiếp gói tin (node cha – node parent).
Luận văn thạc sĩ CNTT Đặng Xuân Đích
6
Hình 2.1 - Chọn Node cha (parent) trong thuật toán định tuyến RPL
Sinkhole attack [3] là kiểu tấn công mà node bị kẻ tấn công điều khiển khai
báo sai lệch rank nhằm mục đích đánh lừa các node trong mạng chuyển tiếp gói
tin qua node đó tức là chọn node đó làm node cha. Kiểu tấn công này có thể kết
hợp với selective forwarding attack [3]. Sự kết hợp giữa hai kiểu tấn công này gây
hậu quả rất nghiêm trọng cho mạng, có thể một phần lớn mạng không thể giao
tiếp với mạng Internet bên ngoài.
Hình 2.2 - Cơ chế tấn công của sinkhole attack
Luận văn thạc sĩ CNTT Đặng Xuân Đích
7
SVELTE tập trung vào phát hiện kiểu tấn công trên dựa vào việc phân tích
các thông tin về rank do các Node trong mạng gửi về. SVELTE được cài đặt trên
cả 6BR và các node trong mạng, đây là mô hình của SVELTE:
Hình 2.3 – Hệ thống phát hiện xâm nhập SVELTE
Module cài trên 6BR được gọi là 6LoWPAN Mapper (6Mapper), 6Mapper
có nhiệm vụ thu thập thông tin về mạng do các node báo lại, phân tích đưa ra các
cảnh báo về các cuộc tấn công trong mạng. Module cài trên các Node gọi là
6Mapper client, module này chỉ có nhiệm vụ thu thập thông tin và gửi về cho
6Mapper.
Khi nhận được các thông tin của các node, 6Mapper bắt đầu phân tích các
gói tin bằng các giải thuật như phát hiện sự không nhất quán thông tin trong mạng,
phát hiện mâu thuẫn giữa quan hệ cha-con trong mạng, ...
2.2 Các thành phần phát hiện xâm nhập trong SVELTE
6LoWPAN Mapper
Module này còn được gọi tắt là 6Mapper. Nó thực hiện nhiệm vụ tái hiện
lại cấu trúc mạng tại 6BR, tức là xây dựng lại thông tin của các node trên 6BR
bằng các cấu trúc dữ liệu định sẵn.
Để tái hiện lại cấu trúc của của mạng, 6Mapper sẽ gửi đi các gói tin yêu cầu
lấy thông tin tới tất cả các node (còn gọi là Mapping request packet). Các gói tin
này bao gồm các thông tin: RPL Instance ID (IID), DODAG ID, DODAG
version, timestamp.
Luận văn thạc sĩ CNTT Đặng Xuân Đích
8
IID
DODAG
ID
DODAG VERSION TIMESTAMP
Hình 2.4 - Cấu trúc mapping request packet
Trong đó:
- IID: IID của 6BR.
- DODAG ID: địa chỉ gửi gói tin, trong trường hợp này là địa chỉ của 6BR.
- DODAG version: phiên bản của DODAG.
- Timestamp: nhãn thời gian của gói tin.
SVELTE có thể sử dụng các giải pháp mã hóa và xác thực gói tin, nhưng
để đơn giản phần cài đặt mô phỏng, giả thiết gói tin đã được mã hóa và xác thực.
Nếu trong thực tế khi triển khai hệ thống, hệ thống mà có cài đặt thêm việc
xác thực gói tin thì trường DODAG ID không cần được thêm vào gói tin Mapping
request do việc xác nhận đã chứa thông tin về nguồn gửi gói tin.
6Mapper dựa vào các thông tin nhận được từ các node gửi tới để phân tích
đưa ra nhận định về việc mạng có là mục tiêu của cuộc tấn công nào hay không.
Sự không nhất quán trong khi xây dựng lại cấu trúc của mạng tại 6BR có
thể xảy ra, điều đó có thể gây ra cảnh báo sai lầm trong hệ thống. Sự không nhất
quán này có thể xảy ra khi thông tin về một node quá cũ hoặc do kẻ tấn công cố
tình gửi thông tin sai lệch.
Luồng xử lý thông tin trong SVELTE
Dữ liệu được xử lý với 3 thuật toán: phát hiện và hiệu chỉnh thông tin không
nhất quán giữa các node, phát hiện các node có thông tin quá hạn (out of date),
phát hiện bất thường giữa quan hệ cha-con. Sau khi dữ liệu được phân tích, hệ
thống sẽ đưa ra cảnh báo về các node có dấu hiệu bất thường.
Luận văn thạc sĩ CNTT Đặng Xuân Đích
9
Hình 2.5 – Luồng xử lý dữ liệu trong SVELTE
2.2.1.1 Phát hiện sự không nhất quán trong mạng
Trong mạng Internet của vạn vật, các node có thể bị chiếm quyền điểu khiển
bởi kẻ tấn công thông qua nhiều cách. Khi node bị chiếm quyền điều khiển, kẻ tấn
công có thể chỉ định node đó gửi các thông tin sai lệch về rank của node đó hoặc
rank của hàng xóm cho 6Mapper. Thông tin sai lệch này cũng có thể bị gây ra bởi
sự mất mát gói tin, do mạng Internet của vạn vật là mạng không dây của các thiết
bị năng lượng thấp (thường là chạy bằng pin), nên việc mất mát gói tin là không
tránh khỏi. Vì thế việc phát hiện sự không nhất quán về thông tin của các node và
sửa lại thông tin đó rất quan trọng. Giải thuật dưới đây giải quyết vấn đề trên. Sau
đây là mã giả của giải thuật:
Giải thuật (GT1):
Require: N – A list of nodes
for Node in N do
for Neighbor in Node.neighbors do
Diff= |Node.neighborRank(Neighbor) - Neighbor.rank |
Avg = (Node.neighborRank(Neighbor) + Neighbor.rank)/2
{If the absolute difference is greater than 20% of the ranks
average}
if Diff > Avg * 0.2 then
Node.fault = Node.fault + 1
Neighbor.fault = Neighbor.fault + 1
end if
end for
end for
Phát hiện và hiệu chỉnh thông tin không nhất
quán
Phát hiện các node có thông tin quá hạn
Phát hiện bất thường giữa node cha và con
Thông
tin node
Cảnh
báo
Luận văn thạc sĩ CNTT Đặng Xuân Đích
10
for Node in N do
if Node.fault > FaultThreshold then
Node.rank = Rank reported for Node by any neighbor
for Neighbor in Node.neighbors do
Node.neighborRank (Neighbor) = Neighbor.rank
end for
end if
end for
Giải thuật (GT1) phát hiện sự không nhất quán về thông tin trong mạng dựa
vào sự tích lũy số lần thông tin không nhất quán của các node. Vòng lặp đầu tiên
kiểm tra thông tin không nhất quán. Mỗi node được tái hiện trên 6BR bởi một cấu
trúc dữ liệu. Mỗi cấu trúc dữ liệu biểu diễn một node sẽ có một biến fault. Nếu sự
chênh lệch về rank của node đó do node đó báo cáo với 6Mapper và do hàng xóm
của node đó báo cáo với 6Mapper lớn hơn 20% trung bình của hai giá trị thì biến
fault được cộng thêm 1 tại cả hai node. Vòng lặp thứ hai kiểm tra biến fault của
các node, biến fault của node nào vượt ngưỡng cho phép, node đó sẽ bị đánh giá
là không nhất quán thông tin so với thực tế, thông tin về rank của node đó sẽ được
sửa theo thông tin của bất kỳ hàng xóm nào báo về. Con số 20% trung bình của
hai giá trị rank được tác giả đưa ra qua kết quả thực nghiệm trong mạng từ 8 đến
32 node, con số này có thể bị thay đổi với các mạng có số cấu trúc mạng khác.
Thuật toán (GT1) có nhược điểm không phân biệt được thông tin không
nhất quán do kẻ tấn công gây ra hay do sự truyền tải gói tin trong mạng. Việc phát
hiện do việc truyền tải gói tin trong mạng hoàn toàn có thể xác định được bằng kỹ
thuật gán nhãn thời gian vector.
2.2.1.2 Kiểm tra các node còn hoạt động trong mạng
Việc kiểm tra các node còn hoạt động trong mạng rất quan trọng. Ví dụ, khi
có cuộc tấn công selective forwarding trong mạng, node bị chiếm quyền điểu
khiển có thể chặn tất cả các gói tin, chỉ cho gói tin định tuyến RPL đi qua. Chúng
ta có thể dựa vào bảng định tuyến RPL tại node root để kiểm tra các node còn
hoạt động hay không. Việc kiểm tra cần sử dụng một danh sách trắng W, danh
Luận văn thạc sĩ CNTT Đặng Xuân Đích
11
sách các node đã biết thông tin bởi 6Mapper là M. Kết quả của việc kiểm tra sẽ là
danh sách các node bị lọc F.
Giải thuật (GT2):
Require: W – Set of whitelisted nodes
Require: M – Set of nodes known to the 6Mapper
F = [] {F will contain the filtered nodes}
for Node in W do
if Node in M and M[Node].lastUpdate() > RecencyThreshold then
F.add (Node)
end if
end for
return F
Trong giải thuật trên, một vòng lặp được tạo ra để duyệt hết các node trong
danh sách trắng, nếu node đó là node 6Mapper đã biết thông tin và thời gian gửi
thông tin của node đó quá một ngưỡng thì node đó sẽ được thêm vào danh sách
các node bị lọc.
2.2.1.3 Phát hiện sai lệch trong quan hệ giữa node cha và node con.
Một kẻ tấn công có thể thực hiện sinkhole attack để quảng bá tuyến đường
ngắn nhất cho các hàng xóm để gửi các gói tin. Nếu kiểu tấn công này kết hợp với
các kiểu tấn công khác như selective forwarding attack thì hậu quả rất nghiêm
trọng, một lượng lớn gói tin trong mạng có thể không được gửi đi.
SVELTE có thể phát hiện hầu hết các cuộc tấn công sinkhole attack bằng
việc phân tích cấu trúc mạng. Trong RPL, rank sẽ tăng dẫn từ root, vì thế rank của
node cha luôn luôn nhỏ hơn node con. Với mọi trường hợp, rank của node cha lớn
hơn rank của node con đều là dấu hiệu của cuộc tấn công sinkhole attack.
Việc phát hiện sai hoàn toàn có thể xảy ra, vì thế cần đặt ra một ngưỡng số
lần phát hiện rank của node đó nhỏ hơn rank của cha, nếu vượt ngưỡng thì hệ
thống sẽ đưa ra cảnh báo. Sau đây là giải thuật phát hiện sai lệch thông tin trong
quan hệ cha-con:
Luận văn thạc sĩ CNTT Đặng Xuân Đích
12
Giải thuật (GT3):
Require: N – A list of nodes
for Node in N do
if Node.rank < Node.parent.rank + MinHopRankIncrease then
Node.fault = Node.fault + 1
end if
end for
for Node in N do
if Node.fault > FaultThreshold then
//Raise alarm
end if
end for
Trong RPL, một root sẽ có giá trị MinHopRankIncrease là giá trị tăng nhỏ
nhất của rank, hiểu đơn giản rank của node con phải lớn hơn ít nhất
MinHopRankIncrease so với rank của node cha.
Vòng lặp thứ nhất để kiểm tra sự sai lệch về rank giữa node con và node
cha. Biến toàn cục fault sẽ được tăng nếu có sự sai lệch đó. Khi sự sai lệch vượt
quá ngưỡng đặt ra trước thì cảnh báo sẽ được đưa ra.
Giải thuật này phát hiện hầu hết các cuộc tấn công sinkhole attack. Kẻ tấn
công khi thực hiện sinkhole attack sẽ quảng bá rank của node bị điều khiển nhỏ
hơn rank của node cha, vì thế thuật toán cho kết quả tốt. Nếu kẻ tấn công quảng
bá rank lớn hơn rank của node cha, điều này không có ý nghĩa nhiều về việc định
tuyến các gói tin qua nó.
6LoWPAN Client
Module này có chức năng thu thập thông tin của các node hàng xóm và gửi
đến cho 6Mapper qua gói tin Mapping reponse.
Các node dựa vào thông tin của gói tin yêu cầu lấy thông tin về node để xây
dựng lên gói tin trả lời (Mapping response packet).
Luận văn thạc sĩ CNTT Đặng Xuân Đích
13
Cấu trúc gói tin trả lời như sau:
Hình 2.6 - Cấu trúc mapping response packet
Trong đó:
- Node ID: id của node gửi gói tin trả lời.
- IID, DAG ID, ver, TS: là các giá trị được lấy từ gói tin yêu cầu gửi thông
tin.
- Rank: rank của node gửi gói tin.
- Parent ID: id của node cha
- Neighbors: là danh sách chứa các thông tin về hàng xóm. Danh sách này
gồm:
+ N: số hàng xóm.
+ Nbr ID: id của node hàng xóm.
+ Rank: rank của hàng xóm.
Luận văn thạc sĩ CNTT Đặng Xuân Đích
14
3. CẢI TIẾN GIẢI THUẬT PHÁT HIỆN SỰ KHÔNG
NHẤT QUÁN VỀ THÔNG TIN TRONG MẠNG
3.1 Hạn chế của SVELTE
Giải thuật gốc của tác giả dựa vào việc tích lũy thông tin sai khác, vì thế các
thông tin của các node không hiệu chỉnh lại ngay. Khi đã phân tích hết các gói tin
được các node báo cáo về, giải thuật chạy vòng lặp cuối cùng và kiểm tra biến
đánh dấu sự không nhất quán của từng node, nếu vượt ngưỡng thì chỉnh lại thông
tin của node đó bằng thông tin báo về của bất kỳ hàng xóm nào. Điều này sẽ xuất
hiện khả năng có những node mà biến đánh dấu sự không nhất quán không vượt
ngưỡng, sẽ không được cập nhật lại dẫn đến không phát hiện được node giả mạo.
Ngoài ra, SVELTE phân tích sự bất thường dựa trên thông tin là rank, nên đôi khi
sự bất thường về rank của node là do bản thân mạng chứ không phải cuộc tấn
công giả mạo rank từ bên ngoài nên SVELTE có sự nhận định sai.
Hình 3.1 – Ví dụ SVELTE không phân biệt được sự không nhất quán do bản thân
mạng
Luận văn thạc sĩ CNTT Đặng Xuân Đích
15
Node K là cha của Node G, Rm(Node) sẽ là rank của Node tại 6Mapper,
Ra(Node) sẽ là rank thực tế của Node đó, Rn(Node) là rank của node ghi nhận tại
các node neighbor.
- K gửi thông tin về rank cho 6Mapper là 1280, vì thế Ra(K) = 1280, Rm(K)
= 1280.
- Đến một thời điểm nào đó, node K tính toán lại rank và giá trị lúc đó là
768, node K sẽ quảng bá rank tới các hàng xóm trong đó có cả G, vậy Ra(K)
= 768.
- Vì một lý do nào đó, Node K chưa gửi lại gói tin mapping response cho
6Mapper. 6Mapper vẫn chỉ ghi nhận rank của node K, Rm(K) = 1280.
- G nhận được giá trị rank mới của K, G tính toán lại rank của bản thân, gửi
thông tin lại cho 6Mapper, lúc này Ra(G) = 1024, Rm(G) = 1024, Rn(K) =
768.
Node E và node G khi gửi gói tin mapping response cho 6Mapper thì có gửi
thông tin về rank của bản thân nó, kèm theo rank của node K. Hiện tại, 6Mapper
lưu giá trị rank của K là 1280 và rank của G là 1024, rank của node K do node G
báo lại cho 6Mapper là 768. 6Mapper kiểm tra thấy có sự sai khác về rank của
node K. 6Mapper sẽ tiến hành đếm số lần phát hiện sai khác rank từ các node
neighbor gửi về, nếu vượt quá ngưỡng cho phép thì sẽ coi đó là sinkhole attack,
nhưng thực chất sự sai khác rank ở node K là do trong quá trình xây dựng DAG
mạng bị lỗi, delay, hay sự cố nào đó mà node K chưa kịp gửi thông tin cập nhật
rank mới về cho 6Mapper.
Việc sử dụng nhãn thời gian vector trên thế giới được ứng dụng khá nhiều
trong các bài toán ứng dụng thực tế, nó giải quyết được vấn đề đánh dấu các luồng
gửi-nhận thông tin qua lại có phân biệt trước sau. Kết quả là việc phân biệt được
đâu là sự kiện diễn ra trước, đâu là sự kiện diễn ra sau theo quan hệ nhân quả. Áp
dụng kỹ thuật gán nhãn thời gian vector vào hệ thống SVELTE sẽ giải quyết được
việc phân biệt được sự sai khác thông tin node có phải là do bản thân mạng hay
không. Chi tiết giải thuật cải tiến sẽ được trình bày trong phần sau.
Luận văn thạc sĩ CNTT Đặng Xuân Đích
16
3.2 Cải tiến SVELTE sử dụng nhãn thời gian Vector
Khái niệm đồng bộ hóa tiến trình
Trong hệ tin học phân tán [1] [15], đồng bộ hóa tiến trình được hiểu như là
quá trình tạo nên sự hoạt động nhịp nhàng ăn khớp với nhau giữa tất cả các đối
tượng có tham gia yêu cầu chia sẻ tài nguyên dùng chung.
Điều kiện chủ yếu của việc đồng bộ hóa các tiến trình trong hệ phân tán là:
- Các tiến trình của hệ phải được phát triển trong cùng chu kỳ thực hiện
với các thời gian thực hiện lệnh khác nhau do khả năng xử lý của các
bộ xử lý (hoặc vi xử lý) thành phần khác nhau.
- Các tiến trình phát triển trong các hệ thống thành phần khác nhau,
nằm ở các địa điểm khác nhau và nối với nhau qua đường truyền trong
điều kiện có diễn ra sự cố kỹ thuật.
Không sử dụng bộ nhớ và đồng hồ chung.
Xuất phát từ yêu cầu và điều kiện kỹ thuật nêu trên, người ta cần phải nghiên
cứu các giải pháp đủ mạnh và hiệu quả để có thể đồng bộ hóa các tiến trình như
là đối tượng chủ yếu tham gia tạo nên sự hoạt động của hệ thống đồng bộ.
Xác định trật tự cho các sự kiện trong hệ phân tán
Giới thiệu
Một hệ thống phân tán bất kỳ nào cũng được cấu tạo từ 𝑛 thành phần. Các
thành phần này có thể là các tiến trình hoặc các trạm, các nút hoặc các máy Server
không dùng bộ nhớ chung và liên lạc với nhau bằng cách duy nhất là trao đổi
thông điệp. Mỗi một thành phần như thế hoạt động như một otomat có nghĩa là
nó triển khai các phép toán có khả năng thay đổi trạng thái của mình và của toàn
hệ thống.
Các phép toán thực hiện bằng một trong những thành phần vừa nêu phải
được sắp xếp một cách tự nhiên theo những trình tự diễn ra. Nếu một tiến trình
nào đó cho phép chứa nhiều luồng, trên hệ thống đơn bộ xử lý, đó chính là trật tự
thực hiện các lệnh trên bộ xử lý này. Chính bộ xử lý này sắp xếp các sự kiện.
Việc xác định trật tự các sự kiện trên hệ thống đa bộ xử lý là một vấn đề
phức tạp liên quan đến những khó khăn trong việc duy trì một thời gian tuyệt đối
Luận văn thạc sĩ CNTT Đặng Xuân Đích
17
gắn bó. Đối với hệ tin học phân tán, việc thống nhất các giá trị của đồng hồ vật lý
để đồng bộ hóa các sự kiện là việc làm không khả thi vì những lý do sau đây:
Độ trễ của truyền thông.
Sự không thống nhất các đồng hồ vật lý theo một chuẩn nhất định.
Xử lý không theo thời gian thực.
Các khái niệm cơ bản
- Trật tự nhân quả
Trên một trạm, các sự kiện cục bộ có thể sắp xếp bằng trật tự thực hiện
của chúng hay bằng việc xác định thời gian tuyệt đối, mặt khác sự kiện
truyền đi một thông điệp trên trạm truyền luôn diễn ra trước sự kiện nhận
thông điệp đó. Điều đó được định nghĩa bởi trật tự nhân quả (Ký hiệu bằng
→).
Khái niệm này được biểu diễn theo kiểu như sau:
Sự kiện 𝑒1 có trước một sự kiện 𝑒2, ta viết 𝑒1 → 𝑒2, nếu một trong
hai điều kiện sau đây là đúng:
1. 𝑒1 và 𝑒2 diễn ra trên cũng một trạm và 𝑒1 diễn ra trước 𝑒2 theo
đồng hồ logic trên chính trạm đó.
2. 𝑒1 tương ứng với việc gửi thông điệp 𝑚 trên trạm 𝑆𝑖 và 𝑒2 tương
ứng với việc nhận thông điệp này trên trạm 𝑆𝑗 với 𝑖 và 𝑗 là số thứ tự
của hai trạm trong hệ. Khái niệm có trước/nhân quả được ký hiệu bằng
→ và phản ánh quan hệ bắc cầu giữa các sự kiện.
3. Nếu 𝑒1, 𝑒2, 𝑒3 là các sự kiện mà 𝑒1 → 𝑒2 và 𝑒2 → 𝑒3 thì 𝑒1 → 𝑒3
(phép bắc cầu của quan hệ)
Trật tự của các sự kiện được so sánh bằng quan hệ → gọi là trật tự
nhân quả. Các sự kiện 𝑒1 và 𝑒2 không so sánh với nhau bằng quan hệ → gọi
là quan hệ tương tranh, được ký hiệu là 𝑒1||𝑒2.
- Thời gian logic vô hướng
Định nghĩa
Luận văn thạc sĩ CNTT Đặng Xuân Đích
18
Khái niệm về thời gian vô hướng được đưa ra bởi Lamport nhằm sắp
xếp thứ tự các sự kiện trong hệ phân tán. Thời gian logic vô hướng được thể
hiện bởi các số nguyên không âm. Thời gian logic vô hướng còn gọi là đồng
hồ toàn cục của hệ.
Gọi 𝐶𝑒 là thời gian logic của sự kiện 𝑒. Trật tự toàn bộ diễn ra giữa
hai sự kiện 𝑒1, 𝑒2 được thể hiện như sau:
𝑒1 → 𝑒2 => 𝐶(𝑒1) < 𝐶(𝑒2)
Đây là trật tự không chặt chẽ vì hai sự kiện riêng rẽ 𝑒1 và 𝑒2 có thể
có thời gian logic giống nhau (𝐶(𝑒1) = 𝐶(𝑒2)), khi đó chúng được gọi là
hai sự kiện tương tranh (𝑒1||𝑒2). Một quan hệ trật tự chặt chẽ được thiết lập
như sau :
𝑒1 → 𝑒2 nếu và chỉ nếu 𝐶𝑖(𝑒1) < 𝐶𝑗(𝑒2) hoặc 𝐶𝑖(𝑒1) = 𝐶𝑗(𝑒2) và 𝑖 < 𝑗
Với 𝑖, 𝑗 là số thứ tự của hai trạm bất kỳ trong hệ.
- Cập nhật đồng hồ Logic Lamport
Gọi 𝐶𝑖 là thời gian logic vô hướng tại trạm 𝑆𝑖. Hai quy luật sau nhằm
cập nhật đồng hồ logic vô hướng của một trạm:
1. Tăng 𝐶𝑖 mỗi khi có một sự kiện mới bất kỳ xảy ra tại 𝑆𝑖.
2. Khi một trạm 𝑆𝑖 gửi thông điệp 𝑚, nó gán nhãn thời gian 𝑡 = 𝐶𝑖
cho thông điệp 𝑚 truyền đi. Khi một trạm 𝑆𝑗 nhận được thông điệp, nó sẽ
cập nhật nhãn thời gian của mình theo công thức sau:
𝐶𝑗 = 𝑀𝑎𝑥 (𝑡, 𝐶𝑗)
Sau đấy nó sẽ áp dụng quy luật 1 cho thông điệp 𝑚.
(i, j là thứ tự của các trạm trong hệ , 1≤ i ≤n, 1≤ j≤ n , n là số trạm hoạt động
của hệ)
Ghi chú : Nhãn thời gian được gán cho thông điệp chính là giá trị của đồng
hồ logic tại thời điểm truyền thông điệp và gọi là dấu của thông điệp.
Ví dụ về sự cập nhật đồng hồ lôgic vô hướng trong quá trình gửi và nhận
các thông điệp :
Luận văn thạc sĩ CNTT Đặng Xuân Đích
19
Hình 3.2 – Ví dụ về sự cập nhật Logic Lamport timestamp
- Hạn chế của thời gian Logic vô hướng
Hệ thống đồng hồ logic dùng thời gian vô hướng không tương
thích mạnh mẽ bởi vì đồng hồ logic cục bộ và đồng hồ logic của trạm
chỉ là một nên kết quả bị mất thông tin, nghĩa là ta không biết được
trạng thái của các trạm khác cũng như trạng thái của các thông điệp
được truyền đi ở bất cứ thời điểm nào.
Thời gian logic vô hướng không đảm bảo được thứ tự nhân quả
hoàn toàn chặt chẽ. Đối với hai sự kiện 𝑒1 và 𝑒2 với thời gian logic vô
hướng tương ứng là 𝐶(𝑒1) và 𝐶(𝑒2) .
Nếu 𝑒1 → 𝑒2 => 𝐶(𝑒1) < 𝐶(𝑒2)
Điều ngược lại chưa chắc xảy ra.
Trong khi đó việc biết được chính xác thứ tự nhân quả chặt chẽ
giữa hai sự kiện 𝑒1 và 𝑒2 lại rất quan trọng. Nó giúp cho việc phục hồi
hệ thống một cách chính xác và hiệu quả nếu trong hệ có phát sinh sự
cố.
- Cập nhật đồng hồ Logic vector
Vector clocks được Mattern [1989] và Fidge [1991] phát triển
để thiết lập một trật tự nhân quả chặt chẽ:
𝑒1 → 𝑒2 ⟺ 𝐶(𝑒1) < 𝐶(𝑒2)
Luận văn thạc sĩ CNTT Đặng Xuân Đích
20
Các quy luật để một trạm 𝑆𝑖 cập nhật lại nhãn thời gian Vector
với 𝑉𝑖 là nhãn thời gian Vector của sự kiện 𝑖:
1. Khởi tạo, 𝑉𝑖[𝑗] = 0; 𝑖, 𝑗̅̅ ̅ = 0,1,2, 𝑁 − 1;
2. Trước khi gửi một thông điệp đi, trạm 𝑆𝑖 sẽ gán nhãn thời
gian cho thông điệp ấy theo thời gian mới nhất: 𝑉𝑖[𝑖] =
𝑉𝑖[𝑖] + 1;
3. 𝑆𝑖 bao gồm giá trị 𝑡 = 𝑉𝑖[𝑖] trong các thông điệp gửi.
4. Trạm 𝑆𝑗 nhận được thông điệp, đầu tiên nó sẽ tăng phần tử
thứ 𝑗 của vector clock mới nhất của bản thân nó lên 1
(𝑉𝑗[𝑗] = 𝑉𝑗[𝑗] + 1), sau đó cập nhật lại đồng hồ Logic của
nó theo công thức:
𝑉𝑘[𝑗] = max (𝑉𝑘[𝑗], 𝑡𝑘); 𝑘 = 0,1,2 , 𝑁 − 1
Ví dụ về sự cập nhật nhãn thời gian Vector trong quá trình gửi và
nhận các thông điệp :
Hình 3.3 – Ví dụ về sự cập nhật nhãn thời gian Vector
Thiết lập nhãn thời gian Vector trong SVELTE
Giải thuật phát hiện sự không nhất quán áp dụng phương pháp gán nhãn thời
gian Vector, tôi tự gọi là NGID-VC (Vector clock timestamp network graph
inconsistency detection);
Để chạy được giải thuật NGID-VC, module gửi thông tin cho 6Mapper, các
neighbor và nhận thông tin của node từ các neighbor cần được chỉnh sửa.
Luận văn thạc sĩ CNTT Đặng Xuân Đích
21
Cụ thể:
+ Trong gói tin mapping response của node gửi cho 6Mapper và các
neighbor sẽ có thêm trường vclock, ghi lại sự kiện cập nhật rank rồi gửi cho
6Mapper và các neighbor. Mỗi node sẽ có một danh sách các hàng xóm gửi về
cho 6Mapper, ngoài thông tin về ID của hàng xóm, Rank của hàng xóm như giải
thuật trước, trong giải thuật này gói tin Mapping response của node đồng thời
cũng ghi nhận lại vclock của các node neighbor.
+ Việc truy vết qua các node parent trong mạng để gửi gói tin mapping
response về cho 6Mapper không thực hiện việc cập nhật vclock để đảm bảo vclock
của node không bị thay đổi và dễ dàng để đối sánh về sau.
+ Chỉ cập nhật vclock của node khi có sự kiện cập nhật rank. Điều này giúp
phân biệt sự kiện cập nhật nào diễn ra trước, sự kiện cập nhật nào diễn ra sau.
Node
ID
IID
DAG
ID
Ver TS VCLOCK Rank
Parent
ID
Neighbors
Neighbors
N
Nbr
ID
Rank VCLOCK
Nbr
ID
Rank VCLOCK .
Hình 3.4 – Cấu trúc mapping response packet sử dụng nhãn thời gian vector
Các thông tin về node đó vẫn như cũ, chỉ khác ở cấu trúc danh sách neighbor
gửi về:
N: số hàng xóm của node đó.
Nbr ID: ID của hàng xóm.
Rank: rank của hàng xóm..
TS: Timestamp của node.
VCLOCK: nhãn thời gian Vector tại node và neighbors.
Luận văn thạc sĩ CNTT Đặng Xuân Đích
22
Mã giả thiết lập nhãn thời gian Vector tại mỗi node.
Require: Node and Node’s neighbors
//Khởi tạo mảng vclock ban đầu là 0: [0,0,0,,0] theo số lượng neighbors
if update(node.rank) then
node.vclock[0]++;
end if
for Neighbor in Node.neighbors do
node.neighbor.vclock(neighbor)[neighbor]++;
node.neighborvclock(neighbor)[0]=
max(node.neighborvclock(neighbor)[0], node.vclock[0]);
end for
Với việc thiết lập nhãn thời gian vector mà 6Mapper nhận được từ các node
thì việc kiểm tra một node có phải được giả mạo hay sai khác trở nên dễ dàng hơn.
Việc phân tích thông tin được xử lý như sau:
Nếu Rank của node do node báo cho 6Mapper và Rank của node do
các Neighbor báo cho 6Mapper là khác nhau:
Nếu vclock tại thời điểm gửi gói tin của node do node báo cho
6Mapper nhỏ hơn vclock tại thời điểm gửi gói tin của node do
neighbor báo cho 6Mapper: Phát hiện sự sai khác do bản thân
node trong mạng.
Nếu vclock tại thời điểm gửi gói tin của node do node báo cho
6Mapper lớn hơn hoặc bằng vclock tại thời điểm gửi gói tin của
node do neighbor báo cho 6Mapper: Cảnh báo phát hiện tấn công
giả mạo rank, phương án xử lý vẫn giống giải thuật cũ, nếu độ
lệch giữa hai giá trị rank lớn hơn 20% trung bình hai giá trị rank
thì một biến fault sẽ được tăng ở cả hai node, nếu biến fault ≥
FaultThreshold thì sẽ update lại thông tin node qua thông tin
mà các neighbor báo cho 6Mapper.
Luận văn thạc sĩ CNTT Đặng Xuân Đích
23
Sau đây là mã giả của giải thuật cài đặt trên 6Mapper.s
Require: N - list all nodes
for Node in N do
for Neighbor in Node.neighbors do
if Node.neighborRank != Neighbor.Rank then
if Node.neighborvclock(neighbor)[0] < Neighbor.vclock[0] then
//Warning
//Rank inconsistency: in itself
Node.fault1 = Node.fault1 + 1 ;
Neighbor.fault1 = Neighbor.fault1 + 1;
else
Diff = | Node.neighborRank - Neighbor.Rank |
Avg = (Node.neighborRank - Neighbor.Rank) / 2
if Diff > Avg * 0.2 then
Node.fault = Node.fault + 1;
Neighbor.fault = Neighbor.fault + 1;
end if
end if
end if
end for
for Node in N do
if (Node.fault > FaultThreshold || Node.fault1 > FaultThreshold1) then
//Warning
//Node.rank = Rank reported for Node by any neighbor
// Node.vclock = vclock reported for Node by any neighbor
for Neighbor in Node.neighbors do
Node.neighborRank(Neighbor) = Neighbor.Rank
Node. Neighbor.vclock(Neighbor)= Neighbor. vclock
end for
end if
end for
Luận văn thạc sĩ CNTT Đặng Xuân Đích
24
Hình 3.5 – Ví dụ mô phỏng phát hiện không nhất quán do bản thân mạng.
Node K là cha của Node G, Rm(Node) sẽ là rank của Node tại 6Mapper,
Ra(Node) sẽ là rank thực tế của Node đó, Rn(Node) là rank của node ghi nhận tại
các node neighbor. Khởi tạo vclock của K [0,0,0].
- K gửi thông tin về rank cho 6Mapper là 1280, vì thế Ra(K) = 1280, Rm(K)
= 1280. K thiết lập vclocka(K)=[1,0,0].
- Đến một thời điểm nào đó, node K tính toán lại rank và giá trị lúc đó là
Ra(K) = 768, vclocka(K)=[2,0,0]..
- Node K sẽ quảng bá rank tới các hàng xóm trong đó có cả G, vậy Ra(G) =
1024, Rm(G) = 1024, Rn(K) = 768, vclockn(K)=[2,2,0].
- Vì một lý do nào đó, Node K chưa gửi lại gói tin mapping response cho
6Mapper. 6Mapper vẫn chỉ ghi nhận rank của node K, Rm(K) = 1280 và
vclockm(K)=[1,0,0].
Node G khi gửi gói tin mapping response cho 6Mapper thì có gửi kèm thông
tin về rank và vclock của node K. 6Mapper kiểm tra thấy có sự sai khác về rank
của node K, lúc này 6Mapper tiến hành kiểm tra thêm tính nhất quán trong của
Luận văn thạc sĩ CNTT Đặng Xuân Đích
25
các sự kiện cập nhật rank của node K thông qua vclock. 6Mapper nhận thấy
vlockm(K) ghi nhận sự kiện cập nhật rank của node K được 6Mapper lưu trữ là 1
nhỏ hơn vlockn(K) do node G báo về cho 6Mapper là 2. Điều này chứng tỏ sự sai
khác của node K là do quá trình tái hiện cấu trúc mạng, vì một lý do nào đó node
K chưa kịp gửi lại gói tin mapping response kèm theo vclock của sự kiện cập nhật
rank mới. Nếu kiểm tra vlockm(K) ghi nhận sự kiện cập nhật rank của node K được
6Mapper lưu trữ lớn hơn hoặc bằng vlockn(K) do node G báo về cho 6Mapper thì
phát hiện sự sai khác do cuộc tấn công sinkhole và tiến hành kiểm tra như thuật
toán gốc.
Luận văn thạc sĩ CNTT Đặng Xuân Đích
26
4. MÔ PHỎNG
4.1 Cài đặt và cấu hình
Tôi chạy mô phỏng trên môi trường giả lập Contiki Cooja, các node tôi sử
dụng là Tmote Sky. Để cài Contiki 2.6, trước hết ta vào trang chủ của ContikiOS
[8], tải mã nguồn về, phiên bản mới nhất hiện tại là phiên bản 2.7.
Trong luận văn này, Contiki được cài đặt trên hệ điều hành Ubuntu 12.04.
Sau khi download mã nguồn về, giải nén mã nguồn, bật terminal và di chuyển tới
thư mục Contiki\tool\cooja.
Để chạy Cooja ta dùng lệnh:
sudo ant run
Để chạy được lệnh trên, ta phải cài ant trên ubuntu trước. Để cài đặt ant, sử
dụng lệnh:
sudo apt-get -u install ant
Giao diện Cooja:
Hình 4.1 - Giao diện của chương trình cooja trên ubuntu
Để thực hiện mô phỏng sử dụng mã nguồn SVELTE đã được cải tiến, ta
chạy tool Cooja như ở phần trên, nhưng lưu ý là để chạy được mô phỏng có IDS,
ta phải tạo ra thêm 1 folder giống như folder chứa module phát hiện xâm nhập và
Luận văn thạc sĩ CNTT Đặng Xuân Đích
27
thêm đuôi “-evil” ở cuối, folder này sẽ chứa mã nguồn của node bị kẻ tấn công
điều khiển. Như trong hình, folder Contiki-IDS-IDS là folder chứa mã nguồn
SVELTE-VC, folder Contiki-IDS-IDS-evil là folder chứa mã nguồn node bị kẻ
tấn công điều khiển.
4.2 Kịch bản mô phỏng
Để tiện việc so sánh kết quả với bài báo [6], luận văn cũng sử dụng kịch bản
mô phỏng tương tự với bài báo [6], cụ thể như sau.
Mô phỏng nhiều lần với số lượng node lần lượt là 8 Node, 16 Node, 32
Node.
Đối với mỗi số lượng node, ta chạy 30 lần mô phỏng với vị trí của các node
trong mạng khác nhau.
Đối với mỗi lần chạy, kết quả sẽ được lấy tại các thời điểm 5 phút, 10 phút,
20 phút, 30 phút.
Đối với kịch bản tấn công, mô phỏng sẽ chạy với kiểu tấn công sinkhole
attack :
o Node bị kẻ tấn công điều khiển báo cáo sai giá trị rank về cho 6Mapper.
Như đã phân tích ở trên, ta sẽ sử dụng giải thuật cải tiến với kỹ thuật gán
nhãn thời gian vector để phát hiện node sai khác có phải do sự không nhất quán
trong quá trình xây dựng mạng hay do cuộc tấn công sinkhole gây ra. Từ đó đánh
giá tỉ lệ phát hiện thành công các node độc hại giữa thuật toán gốc và thuật toán
cải tiến, số lượng cảnh báo của hệ thống đưa ra. Các ví dụ về cấu trúc mạng với
số lượng node trong mạng là 8 node, 16 node, 32 node.
Hình 4.2 - Đặt tên thư mục để chạy SVELTE-VC
Luận văn thạc sĩ CNTT Đặng Xuân Đích
28
Hình 4.3 - Mô phỏng với 8 Node, trong đó có 1 Node bị attacker điều khiển
Hình 4.4 - Mô phỏng với 16 Node, trong đó có 2 Node bị attacker điều khiển
Luận văn thạc sĩ CNTT Đặng Xuân Đích
29
Hình 4.5 - Mô phỏng với 32 Node, trong đó có 4 Node bị attacker điều khiển
Luận văn thạc sĩ CNTT Đặng Xuân Đích
30
4.3 Kết quả mô phỏng
Chạy mô phỏng SVELTE-VC
Đây là mô phỏng hệ thống phát hiện xâm nhập với sinkhole attack với 26
node và 1 node bị tấn công.
Hình 4.6 - Mô phỏng sinkhole attack với 26 node mạng
Các loại Node trong mô phỏng:
- Node màu xanh lá chính là 6BR, node thu thập dữ liệu của các sensor
trong mạng để phân tích dữ liệu, đưa ra các cảnh báo.
- Node màu vàng là các node bình thường trong mạng.
- Node màu tím là mote bị kẻ tấn công điều khiển, sẽ có các hành động gây
ảnh hưởng xấu đến mạng, trong sinkhole attack, node này gửi đi rank nhỏ để các
node hàng xóm sẽ định tuyến qua nó.
Với những kịch bản mô phỏng được trình bày ở phần 4.2. Tôi đánh giá tỉ lệ
phát hiện thành công các node độc hại xâm nhập vào hệ thống. Tỉ lệ được tính
bằng số lượng các node độc hại phát hiện thành công so với tổng số lượng các
node độc hại xâm nhập vào hệ thống và tỉ lệ dương tính đúng tức là tỉ lệ cảnh báo
thành công trên tổng số cảnh báo mà hệ thống đưa ra. Việc phát hiện thời gian
thực ở đây có ý nghĩa là sự phát hiện ngay khi node độc hại xâm nhập vào.
Luận văn thạc sĩ CNTT Đặng Xuân Đích
31
Trong tất cả các mô phỏng, 6Mapper được cấu hình để yêu cầu dữ liệu và
phân tích dữ liệu sau mỗi 2 phút. Do đó, việc yêu cầu và phân tích dữ liệu đầu tiên
là sau 2 phút, tuy nhiên sẽ không đem lại kết quả gì do dữ liệu chưa được thu thập.
Thời gian phát hiện sớm nhất là khoảng 4 phút. Theo thuật toán gốc thì tỉ lệ phát
hiện đúng các node độc hại đôi khi không cao do có thể đưa ra các cảnh báo sai
hay phát hiện sai các node độc hại xâm nhập vào hệ thống, nguyên nhân có thể do
sự sai khác thông tin của node do bản thân trong mạng gây ra như đã trình bày ở
trên. Với thuật toán cải tiến có sử dụng nhãn thời gian vector, tỉ lệ phát hiện sai
các node độc hại đã giảm đi rõ rệt, trong nhiều trường hợp không có phát hiện sai.
Tỉ lệ phát hiện
Kết quả mô phỏng với kịch bản kẻ tấn công khai báo sai rank cho 6Mapper
nhằm tránh phát hiện hành vi gian lận trong mạng. Kết quả cho thấy tỉ lệ phát hiện
thành công các cuộc tấn công ngang bằng so với giải thuật gốc, đồng thời hệ thống
mới đã phát hiện ra được những sự sai khác thông tin của node là do sự sai khác
trong quá trình xây dựng DODAG chứ không phải bị tấn công giả mạo thông tin
từ đó giảm được cảnh báo sai. Tỉ lệ dương tính sai được tính bằng tổng số cảnh
báo sai trên số cảnh báo mà hệ thống đưa ra. Tỉ lệ dương tính đúng được tính bằng
tổng số cảnh báo phát hiện thành công trên tổng số cảnh báo được đưa ra.
Hình 4.7 – Tỉ lệ dương tính sai với kịch bản 8 node của SVELTE và SVELTE-VC
0
20
40
60
80
100
5 Minutes 10 Minutes 20 Minutes 30 Minutes
R
at
e
Runtime (Minutes)
False Positive Rate with 8 nodes
SVELTE SVELTE-VC
Luận văn thạc sĩ CNTT Đặng Xuân Đích
32
Hình 4.8 – Tỉ lệ dương tính sai với kịch bản 16 node của SVELTE và SVELTE-VC
Hình 4.9 – Tỉ lệ dương tính sai với kịch bản 32 node của SVELTE và SVELTE-VC
0
20
40
60
80
100
5 Minutes 10 Minutes 20 Minutes 30 Minutes
R
at
e
Runtime (Minutes)
False Positive Rate with 16 nodes
SVELTE SVELTE-VC
0
20
40
60
80
100
5 Minutes 10 Minutes 20 Minutes 30 Minutes
R
at
e
Runtime (Minutes)
False Positive Rate with 32 nodes
SVELTE SVELTE-VC
Luận văn thạc sĩ CNTT Đặng Xuân Đích
33
Hình 4.10 – Tỉ lệ dương tính đúng với kịch bản 8 node của SVELTE và SVELTE-VC
Hình 4.11 – Tỉ lệ dương tính đúng với kịch bản 16 node của SVELTE và SVELTE-VC
0
20
40
60
80
100
5 Minutes 10 Minutes 20 Minutes 30 Minutes
R
at
e
Runtime (Minutes)
True Positive Rate with 8 nodes
SVELTE SVELTE-VC
0
20
40
60
80
100
5 Minutes 10 Minutes 20 Minutes 30 Minutes
R
at
e
Runtime (Minutes)
True Positive Rate with 16 nodes
SVELTE SVELTE-VC
Luận văn thạc sĩ CNTT Đặng Xuân Đích
34
Hình 4.12 – Tỉ lệ dương tính đúng với kịch bản 32 node của SVELTE và SVELTE-VC
Năng lượng tiêu thụ
Các node trong mạng Internet của vạn vật thường sử dụng năng lượng thấp
mà chủ yếu là Pin, nên nguồn năng lượng là một tài nguyên khan hiếm đối với
các thiết bị này. Ở đây tôi sử dụng Contiki – Powertrace một module trong Contiki
OS để đo năng lượng tiêu thụ sử dụng tại các node và cả hệ thống.
Tôi sử dụng 3V để tính toán và sử dụng các giá trị danh nghĩa (Bảng 4.1)
trong điều kiện hoạt động của Tmote Sky [12]. MCU idle và radio off được coi
như chế độ năng lượng thấp hay LPM. MCU on và radio off được coi là thời gian
CPU. Thời gian radio nhận và truyền với MCU on được coi là nghe và truyền
riêng biệt. Thời gian mà tôi đo năng lượng tiêu thụ của mô phỏng chỉ có RPL và
RPL có thêm Network mapper là 30 phút.
Typical conditions Min NOM Max Unit
Voltage 2.1 3.6 V
MCU on, Radio RX 21.8 23 mA
MCU on, Radio TX 19.5 21 mA
MCU on, Radio off 1800 2400 𝜇𝐴
MCU idle, Radio off 54.5 1200 𝜇𝐴
MCU standby 5.1 21.0 𝜇𝐴
Bảng 4.1 - Tmote Sky Operating Conditions
0
20
40
60
80
100
5 Minutes 10 Minutes 20 Minutes 30 Minutes
R
at
e
Runtime (Minutes)
True Positive Rate with 32 nodes
SVELTE SVELTE-VC
Luận văn thạc sĩ CNTT Đặng Xuân Đích
35
𝐸𝑛𝑒𝑟𝑔𝑦(𝑚𝐽)
= (𝑡𝑟𝑎𝑛𝑠𝑚𝑖𝑡 ∗ 19.5 𝑚𝐴 + 𝑙𝑖𝑠𝑡𝑒𝑛 ∗ 21.8 𝑚𝐴 + 𝐶𝑃𝑈 ∗ 1.8 𝑚𝐴
+ 𝐿𝑃𝑀 ∗ 0.0545 𝑚𝐴) ∗
3𝑉
4096 ∗ 8
Từ năng lượng tiêu thụ của toàn mạng, tôi tính toán năng lượng tiêu thụ trung bình
như sau:
𝑃𝑜𝑤𝑒𝑟(𝑚𝑊) =
𝐸𝑛𝑒𝑟𝑔𝑦(𝑚𝐽)
𝑇𝑖𝑚𝑒(𝑠)
Khi chia năng lượng tiêu thụ này cho tổng số node, tôi có được điện năng trung
bình tại các node trong hệ thống. Với các kết quả nhận được, tôi nhận thấy năng
lượng tiêu thụ của hệ thống và điện năng trung bình của mỗi node khi so sánh
mạng chỉ có RPL và mạng RPL có 6Mapper trong các mạng nhỏ (8 nodes, 16
nodes) có độ chênh lệch không đáng kể, chỉ từ 32 node trở lên mới thấy rõ sự
chênh lệch.
Hình 4.13 – Năng lượng sử dụng của toàn mạng trong 30 phút
0
50000
100000
150000
200000
8 Nodes 16 Nodes 32 Nodes 64 Nodes
Number of Nodes
Energy (mJ)
RPL Only RPL & Mapper network
Luận văn thạc sĩ CNTT Đặng Xuân Đích
36
Hình 4.14 – Điện năng sử dụng trung bình của các node trong 30 phút
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
8 Nodes 16 Nodes 32 Nodes 64 Nodes
Number of Nodes
Avarage Power per Node (mW)
RPL Only RPL & Mapper network
Luận văn thạc sĩ CNTT Đặng Xuân Đích
37
5. KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN
Xây dựng hệ thống phát hiện xâm nhập là nhu cầu cần thiết cho mạng
Internet của vạn vật. Do sự phát triển không ngừng của công nghệ cũng như sự
phát triển của IoT, các lỗ hổng ngày càng nhiều và các phương pháp tấn công mới
luôn được những kẻ xấu thực hiện. Vì vậy, việc nghiên cứu và phát triển hệ thống
cũng rất cần thiết. Kết quả nghiên cứu của luận văn như sau:
- Luận văn đã trình bày được những đặc điểm cơ bản của hệ thống phát hiện
xâm nhập trong mạng Internet của vạn vật SVELTE.
- Luận văn cũng đã nghiên cứu, cải tiến được thuật toán phát hiện sự không
nhất quán trong mạng. Kết quả thu được cho thấy thuật toán cải tiến đã có
hiệu quả so với thuật toán cũ.
- Contiki OS là hệ điều hành phổ biến để mô phỏng hệ thống phát hiện xâm
nhập. Qua một thời gian nghiên cứu, tìm hiểu, tôi cũng đã hiểu rõ được cơ
chế hoạt động của các process trong Contiki OS, hiểu biết cơ bản về các
thuật toán định tuyến trong RPL.
Do thời gian và kinh nghiệm có hạn, luận văn vẫn còn tồn tại một số hạn
chế như việc thực hiện mô phỏng với số lần chưa đủ nhiều, có thể dẫn đến sai sót
về kết quả. Do vậy trong thời gian tới, mô phỏng sẽ được chạy lại với nhiều lần
hơn để có thể có được kết quả khách quan.
SVELTE được thiết kế để có thể mở rộng với các kiểu tấn công khác. Hệ
thống có thể mở rộng với việc phát hiện wormhole attack bằng cách mô hình hóa
lại mạng qua đồ họa máy tính. Việc này khả thi khi các giải phát phát hiện
wormhole attack trên mạng không dây đã được đề xuất [10].
Luận văn thạc sĩ CNTT Đặng Xuân Đích
38
6. TÀI LIỆU THAM KHẢO
[1] Sukumar Ghosh, Distributed Systems: An Algorithmic Approach
Distributed Systems, Second Edition,2015.
[2] J. Hui, P. Thubert, Compression Format for IPv6 Datagrams Over IEEE
802.15.4-Based Networks, RFC 6282, September 2011.
[3] C. Karlof, D. Wagner, Secure routing in wireless sensor networks: attacks
and countermeasures, Ad Hoc Networks 1 (2) (2003) 293–315.
[4] N. Kushalnagar, G. Montenegro, C. Schumacher, IPv6 over LowPower
Wireless Personal Area Networks (6LoWPANs): Overview, Assumptions,
Problem Statement, and Goals, RFC 4919, August 2007.
[5] Linus Wallgren, Shahid Raza, and Thiemo Voigt. Routing Attacks and
Countermeasures in the RPL-Based Internet of Things. International
Journal of Distributed Sensor Networks, vol. 2013, Article ID 794326, 11
pages, 2013.
[6] Shahid Raza, Linus Wallgren, Thiemo Voigt. SVELTE: Real-time
Intrusion Detection in the Internet of Things. Ad Hoc Networks (Elsevier),
11(8), 2661-2674, November, 2013.
[7] Amin, Syed Obaid, et al. “A novel coding scheme to implement signature
based IDS in IP based Sensor Networks.” Integrated Network
Management-Workshops, 2009. IM’09. IFIP/IEEE International
Symposium on. IEEE, 2009.
[8] Kasinathan, Prabhakaran, et al. “Denial-of-Service detection in
6LoWPAN based internet of things.” Wireless and Mobile Computing,
Networking and Communications (WiMob), 2013 IEEE 9th International
Conference on. IEEE, 2013.
[9] Jun, Chen, and Chen Chi. “Design of Complex EventProcessing IDS in
Internet of Things.” Measuring Technology and Mechatronics Automation
(ICMTMA), 2014 Sixth International Conference on. IEEE, 2014.
[10] W. Wang, B. Bhargava, Visualization of wormholes in sensor networks,
in: Proceedings of the 3rd ACM Workshop on Wireless Security, ACM,
2004, pp. 51–60.
Luận văn thạc sĩ CNTT Đặng Xuân Đích
39
[11]
[12]
e-sky-datasheet.pdf
[13] https://tools.ietf.org/html/rfc6550
[14] https://www.net.in.tum.de/fileadmin/TUM/NET/NET-2011-07-1/NET-
2011-07-1_09.pdf
[15] Trần Thị Lý, Xây dựng giải pháp phân tán chống đăng ký trùng vé
trong vận tải đường sắt, 2013.
Luận văn thạc sĩ CNTT Đặng Xuân Đích
40
7. PHỤ LỤC
Hàm kiểm tra sự không nhất quán và hiệu chỉnh thông tin được cài đặt
trên 6Mapper
int correct_rank_inconsistencies(void)
{
PRINTF("PHAT HIEN XAM NHAP BANG CACH KIEM TRA SU KHONG NHAT QUAN
RANK| VECTOR \n");
int i, j, k;
int inconsistencies = 0;
for (i = 0; i < node_index; ++i)
network[i].visited = 0;
for (i = 1; i < node_index; ++i)
{
// If we haven't gotten any information for this node, ignore it
if (!valid_node(&network[i]))
continue;
for (j = 0; j < network[i].neighbors; ++j)
{
// If we haven't gotten any information from this neighbor, ignore it
if (!valid_node(network[i].neighbor[j].node) ||
network[i].neighbor[j].node == &network[0])
continue;
int diff;
if (network[i].neighbor[j].node->rank > network[i].neighbor[j].rank)
diff = network[i].neighbor[j].node->rank - network[i].neighbor[j].rank;
else
diff = network[i].neighbor[j].rank - network[i].neighbor[j].node->rank ;
if(network[i].neighbor[j].node->vclock[j]< network[i].neighbor[j].vclock[j])
{
network[i].visited1++;
network[i].neighbor[j].node->visited1++;
}
else
// If the absolute difference is > 20% of the ranks averages.
// (r1+r2)/2*0.2 => (r1+r2)/10
if (diff > (network[i].neighbor[j].rank + network[i].neighbor[j].node-
>rank)/10) {
PRINTF("Node %d is claiming node %d has rank %d, while it claims
it has %d\n",
(uint8_t) network[i].id, (uint8_t) network[i].neighbor[j].node->id,
network[i].neighbor[j].rank, network[i].neighbor[j].node->rank);
Luận văn thạc sĩ CNTT Đặng Xuân Đích
41
network[i].visited++;
network[i].neighbor[j].node->visited++;
}
}
}
for (i = 0; i < node_index; ++i) {
if (network[i].visited > INCONSISTENCY_THREASHOLD) {
PRINTF("Rank inconsistency: ");
PRINT6ADDR(network[i].ip);
PRINTF("\n");
inconsistencies = 1;
// Update the rank of the lying node with the information from one of its
// neighbors.
struct Node * neighbor = NULL;
for (k = 0; k < network[i].neighbors; ++k) {
for (j = 0; j neighbors; ++j) {
if (network[i].neighbor[k].node->neighbor[j].node->id == network[i].id) {
neighbor = network[i].neighbor[k].node;
network[i].rank = neighbor->neighbor[j].rank;
network[i].vclock[i] = neighbor->neighbor[j].vclock[j];
break;
}
}
}
if (neighbor == NULL) {
PRINTF("Could not correct ranks\n");
continue;
}
PRINTF("Updating information with info from node %x\n", neighbor->id);
// As we do not trust this node, overwrite the neighboring information
// with the info from the nodes we do trust
for (j = 0; j < network[i].neighbors; ++j) {
if(network[i].neighbor[j].node->visited <= INCONSISTENCY_THREASHOLD)
network[i].neighbor[j].rank = network[i].neighbor[j].node->rank;
network[i].neighbor[j].ts = network[i].neighbor[j].node->timestamp;
network[i].neighbor[j].vclock[j]=network[i].neighbor[j].node->vclock[j];
}
PRINTF("New rank: %d\n", network[i].rank);
}
}
return inconsistencies;
}
Luận văn thạc sĩ CNTT Đặng Xuân Đích
42
Các file đính kèm theo tài liệu này:
- luan_van_phat_hien_xam_nhap_theo_thoi_gian_thuc_trong_mang_i.pdf