[06] lần đầu tiên đưa ra ý tưởng phân vùng dữ liệu thành các đoạn (bucket) để hỗ trợ truy vấn dữ liệu đã mã hóa trong mô hình dịch vụ cơ sở dữ liệu (database as service model – DAS model) trong đó dữ liệu nhạy cảm được lưu trữ trên một server không đáng tin. Sau đó, [07] đề nghị cách phân vùng dữ liệu tối ưu nhất sao cho tổng số các trường hợp kết quả trả về sai (false positive) xét trên mọi câu truy vấn có thể (có tính đến xác suất xuất hiện khác nhau của các câu truy vấn) là nhỏ nhất, đồng thời đềnghịhai độ đo tính riêng tư dữ liệu cho phương pháp phân đoạn dữ liệu (data bucketization).
12 trang |
Chia sẻ: vietpd | Lượt xem: 1301 | Lượt tải: 1
Bạn đang xem nội dung tài liệu Tình hình nghiên cứu tổng quan cơ sở dữ liệu, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
8
CHƯƠNG 2. TÌNH HÌNH NGHIÊN CỨU TỔNG QUAN
2.1. Bảo toàn tính bí mật và toàn vẹn trong cơ sở dữ liệu
[06] lần đầu tiên đưa ra ý tưởng phân vùng dữ liệu thành các đoạn (bucket) để hỗ
trợ truy vấn dữ liệu đã mã hóa trong mô hình dịch vụ cơ sở dữ liệu (database as service
model – DAS model) trong đó dữ liệu nhạy cảm được lưu trữ trên một server không
đáng tin. Sau đó, [07] đề nghị cách phân vùng dữ liệu tối ưu nhất sao cho tổng số các
trường hợp kết quả trả về sai (false positive) xét trên mọi câu truy vấn có thể (có tính
đến xác suất xuất hiện khác nhau của các câu truy vấn) là nhỏ nhất, đồng thời đề nghị
hai độ đo tính riêng tư dữ liệu cho phương pháp phân đoạn dữ liệu (data bucketization).
Hai phương pháp này đều dựa trên việc phân vùng dữ liệu. Về lâu dài, nếu cách phân
vùng dữ liệu là không đổi, kẻ tấn công có thể dò ra biên của các vùng dữ liệu.
[09] đưa ra ý tưởng sử dụng phân phối do người dùng cung cấp làm tập bản mã,
sau đó thực hiện biến đổi các giá trị bản rõ thành các giá trị mã sao cho đảm bảo được
tính thứ tự của dữ liệu. Như vậy bản mã được sinh ra không sử dụng bất kỳ thông tin
nào từ bản rõ nên sẽ tránh được tấn công bản mã/ bản rõ. Phương pháp mã hóa bảo
toàn thứ tự này cho phép thực hiện các phép so sánh trên dữ liệu đã mã hóa, cập nhật
các giá trị mới mà không yêu cầu thay đổi phân vùng dữ liệu.
[11][12][13] sử dụng Merkle hash tree để chứng thực các thành phần dữ liệu,
chống thoái thác trách nhiệm, và xác nhận tính toàn vẹn cho các câu trả lời truy vấn.
[15] và [16] đề nghị giao thức giống nhau giúp xác nhận tính toàn vẹn của kết quả câu
truy vấn và chứng thực nguồn gốc kết quả truy vấn bằng cách sử dụng kỹ thuật tổ hợp
và kết nối chuỗi chữ ký (signature aggregation and chaining). Các chữ ký sinh ra bởi
các chủ thể khác nhau, ký trên các thông điệp khác nhau, được tổ hợp vào một chữ ký
duy nhất. Với mỗi bộ trong cơ sở dữ liệu, [15] tính toán chữ ký của bộ đó bằng cách ký
lên phần kết nối của các giá trị băm của bộ đó với bộ bên trái và bộ bên phải. [16] tính
toán chữ ký bằng cách ký lên phần kết nối giá trị băm của bộ và các bộ láng giềng bên
9
trái theo từng chiều. [16] mở rộng kỹ thuật tổ hợp và kết nối chuỗi chữ ký để hỗ trợ xác
nhận tính toàn vẹn cho dữ liệu hai chiều. [20]
[14] đề nghị cấu trúc Canonical Range Trees (CRTs) để lưu trữ thông tin đếm cho
dữ liệu đa chiều. Các thông tin đếm này được sử dụng để xác nhận tính toàn vẹn mà
không gây rò rỉ thông tin biên. Tuy nhiên, bảo vệ thông tin biên là không cần thiết
trong ngữ cảnh chúng ta đang xét vì trạm chính có quyền biết tất cả dữ liệu ghi nhận
bởi các nút cảm ứng. Vì vậy, chi phí cho việc bảo vệ thông tin biên là không cần thiết.
Giải pháp của [14] yêu cầu mỗi nút tính toán và gửi một CRT đa chiều, đã mã hóa đến
cho nút lưu trữ, vì vậy làm tăng chi phí truyền thông giữa các nút thường và các nút lưu
trữ. [20]
Trong khi đó, [08] đưa ra phương pháp mã hóa song phương (dual encryption). Ý
tưởng là với một số bộ trong cơ sở dữ liệu, thực hiện mã hóa với hai khóa. Cho một bộ
r nào đó trong cơ sở dữ liệu gốc T, và hai khóa k và k’, cơ sở dữ liệu đã mã hóa Ts có
thể chứa cả bản mã Ek(r) (mã hóa sử dụng khóa k) và Ek’(r) (mã hóa sử dụng khóa k’).
Do r được chọn ngẫu nhiên, nên có thể dùng để kiểm tra ngẫu nhiên tính toàn vẹn của
cơ sở dữ liệu. Tuy nhiên, phương pháp này phát sinh overhead (do phải sinh thêm các
bộ dữ liệu Ek’(r)), đồng thời làm lộ một phần thông tin về mối liên quan giữa các dữ
liệu (data correspondence) vì cùng một mẫu tin r, có hai thông tin: Ek(r) và Ek’(r).
[17] đưa ra phương pháp dựa trên xác suất, thực hiện thêm vào cơ sở dữ liệu trên
nút lưu trữ (ví dụ như outsourced database) một số lượng nhỏ các bộ dữ liệu “giả” sao
cho: nút lưu trữ không thể phân biệt được bộ dữ liệu giả và bộ dữ liệu gốc trong cơ sở
dữ liệu. Khi đó, do mỗi câu truy vấn được gửi tới đều được xử lý trên toàn bộ dữ liệu
(bao gồm dữ liệu thật và giả), các bộ dữ liệu giả thỏa điều kiện truy vấn cũng được trả
về. Như vậy, vấn đề đặt ra là làm thế nào trạm chính (sink) khi nhận kết quả trả về, có
thể phân biệt được đâu là dữ liệu giả, đâu là dữ liệu gốc. Hướng giải quyết trong [17] là
tạo ra bản sao các bộ dữ liệu giả, lưu trữ ngay trên trạm chính; hoặc sử dụng tập các
hàm quyết định (deterministic functions) để sinh ra các bộ dữ liệu giả. Trong đó hàm
10
quyết định là các hàm đơn điệu tăng hoặc đơn điệu giảm, số biến bằng số thuộc tính
quan trọng trong truy vấn (các thuộc tính có thể làm điều kiện khi truy vấn). k bộ dữ
liệu giả là k điểm trên hàm đó (ví dụ: k điểm cách đều nhau trên một đoạn bất kỳ thuộc
hàm đó).
2.2. Các phương pháp bảo toàn tính bí mật (privacy) và toàn vẹn
(integrity) trong mạng cảm ứng không dây
Gần đây, bài toán truy vấn khoảng giá trị (range query) sao cho vẫn bảo đảm tính
bí mật và toàn vẹn dữ liệu trong mạng cảm ứng không dây lôi kéo sự chú ý của nhiều
tác giả [05] [18][19][20]. Tuy nhiên, thực sự vấn đề này vẫn chưa được giải quyết trọn
vẹn.
Giải pháp [05] đưa ra là sử dụng kỹ thuật phân vùng dữ liệu (data bucketing),
nghĩa là phân hoạch miền giá trị dữ liệu thành nhiều đoạn không giao nhau gọi là các
bucket (được đề nghị bởi [06] cho bảo mật cơ sở dữ liệu), sử dụng khóa chia sẻ và
chứng chỉ số. Trong từng khoảng thời gian cố định (gọi là time slot hay epoch), một
nút cảm ứng ghi nhận các dữ liệu từ môi trường, phân vào các đoạn (bucket) tương ứng
và mã hóa (các giá trị cùng đoạn (bucket) được mã hóa chung như là một khối) và gán
nhãn tương ứng với đoạn (bucket) đó. Đối với các đoạn (bucket) không có dữ liệu, nút
cảm ứng sinh ra một con số định danh (encoding-number) (con số này sẽ được trạm
chính dùng để xác nhận là bucket rỗng). Các con số định danh và dữ liệu sau khi mã
hóa được gửi đến cho nút lưu trữ gần nhất.
Khi trạm chính muốn thực hiện truy vấn khoảng giá trị, nó sẽ tìm tập các nhãn
ứng với tập các đoạn (bucket) phủ khoảng giá trị cần truy vấn sao cho có ít giá trị dư
thừa và lặp lại nhất, sau đó gửi tập nhãn đó đến các nút lưu trữ. Khi nhận được tập các
nhãn, nút lưu trữ trả về các dữ liệu đã mã hóa tương ứng (dữ liệu có gắn nhãn đó).
Trạm chính giải mã các đoạn (bucket) đã mã hóa và xác nhận lại các con số định danh.
11
Giao thức này có hai điểm yếu: Thứ nhất, như được chỉ ra trong [07], kỹ thuật
phân vùng dữ liệu cho phép các nút lưu trữ bị khống chế có thể dự đoán một phần nào
đó thông tin liên quan đến dữ liệu và câu truy vấn. Thứ hai, đối với dữ liệu đa chiều,
năng lượng tiêu thụ của các nút cảm ứng, nút lưu trữ, không gian lưu trữ tiêu thụ của
nút cảm ứng tăng theo hàm mũ với số lượng chiều. [20]
Căn cứ trên phương pháp trong [05], [18] cũng sử dụng cùng giao thức nhưng đề
nghị cách tối ưu hóa nhằm giảm chi phí giao tiếp giữa các nút cảm ứng và các nút lưu
trữ. Ý tưởng chính là các nút cảm ứng sử dụng một bản đồ bit để biểu diễn đoạn
(bucket) nào có dữ liệu, và công bố (bruteforce broadcast) bản đồ bit cho tất cả các nút
cảm ứng gần kề. Mỗi nút cảm ứng khi nhận được bản đồ bit thì thực hiện gắn thêm dữ
liệu của nó vào và thực hiện mã hóa. Trạm chính kiểm tra các bản đồ bit từ các nút cảm
ứng gần nó. [20]
[20] đề nghị phương pháp thể hiện cho mối quan hệ ‘một giá trị thuộc về hoặc
không thuộc về một khoảng giá trị’. Mỗi khoảng giá trị [a, b] được biểu diễn bằng tập
hợp các chuỗi có dạng {0,1}k(*)n-k (n là số bit biểu diễn cho mỗi giá trị, * cho biết vị trí
đó có thể là bit 0 hoặc bit 1), sao cho tập hợp các chuỗi bit này có thể mô tả đầy đủ các
giá trị trong khoảng đó. Chẳng hạn, khoảng giá trị [3,5] gồm các giá trị {3, 4, 5} có
biểu diễn nhị phân là {101, 100, 101}. Như vậy tập hợp các chuỗi biểu diễn cho [3,5]
là {10*,1**}. Tương tự, mỗi giá trị x cũng được biểu diễn bằng một tập hợp chuỗi duy
nhất. Chẳng hạn với giá trị 4 (biểu diễn nhị phân là 100) thì tập hợp chuỗi tương ứng
với nó là: {100,10*,1**}. Một giá trị x thuộc về khoảng [a,b] khi tập hợp chuỗi tương
ứng với x và tập hợp chuỗi tương ứng với [a,b] có phần giao với nhau.
Trong các phương pháp trên, chúng tôi muốn đề nghị một cải tiến cho phương
pháp [05], vì vậy phần tiếp theo sau đây là phần làm rõ về phương pháp [05]. Để cho
dễ theo dõi, chúng tôi tạm gọi phương pháp được nêu trong bài báo [05] là phương
pháp Sheng-Li, ghép từ tên của hai tác giả bài báo.
12
2.3. Phương pháp Sheng-Li
Trong [05], mô hình mạng cảm ứng được xem xét là mô hình hai lớp, gồm các
thành phần: nút cảm ứng, nút lưu trữ (storage node) với khả năng lưu trữ cao và trạm
chính (gọi là base station, query server hay sink) tiếp nhận các yêu cầu truy vấn do
người dùng gửi tới.
Hình 2-1 Mô hình hệ thống 2 lớp (với 2 nút lưu trữ) [05]
Việc truyền/ gửi dữ liệu trong mô hình hai lớp như sau:
v Từ nút cảm ứng đến nút lưu trữ
Mỗi nút cảm ứng ghi nhận giá trị dữ liệu theo tốc độ cố định, và gửi các dữ liệu
ghi nhận được về nút lưu trữ một cách định kỳ. Chẳng hạn, nút cảm ứng ghi nhận nhiệt
độ mỗi 10 giây, và gửi toàn bộ dữ liệu về nút lưu trữ mỗi 60 giây. Như vậy, mỗi lần
gửi dữ liệu, nút cảm ứng gửi 6 giá trị nhiệt độ ghi nhận được trong mỗi 60 giây đó. Gọi
epoch là khoảng thời gian giữa hai lần gửi dữ liệu về nút lưu trữ (trong ví dụ trên,
epoch = 60 giây) và m là số lượng dữ liệu gửi về mỗi epoch. Giả sử tất cả các nút cảm
13
ứng đều được đồng bộ hóa sao cho có cùng thời điểm bắt đầu và kết thúc một epoch.
Dữ liệu gửi đến nút lưu trữ từ nút cảm ứng thứ i tại epoch thứ t có dạng sau:
Nút si nút lưu trữ: i, t, {d1, d2, …,dm}
trong đó i là con số định danh (ID) của nút cảm ứng si, t là giá trị hiện tại của bộ
đếm epoch (epoch counter)
v Từ trạm chính đến nút lưu trữ
Khi có yêu cầu truy vấn dữ liệu do người dùng gửi đến trạm chính, trạm chính sẽ
gửi yêu cầu đến nút lưu trữ. Nút lưu trữ tìm kiếm các dữ liệu thỏa yêu cầu và trả kết
quả về cho trạm chính. Trạm chính nhận kết quả trả về, xử lý (lọc kết quả nếu cần
thiết) và gửi kết quả cho client.
Câu truy vấn mà phương pháp Sheng-Li hỗ trợ là câu truy vấn khoảng giá trị, có
dạng: RangeQuery = {t, [a, b]} nghĩa là truy vấn dữ liệu tại thời điểm t, có giá trị trong
đoạn [a, b]. Kết quả từ nút lưu trữ gửi về cho trạm chính là kết quả gần đúng. Trạm
chính giải mã và lọc kết quả đúng, sau đó trả về cho người dùng.
Bài báo đặt ra ngữ cảnh là nếu như nút lưu trữ cũng không thể tin cậy 100%.
Nút lưu trữ có khả năng bị khống chế (compromised storage node). Khi đó, kẻ tấn công
có thể tấn công vào tính bí mật của dữ liệu và tính toàn vẹn của câu truy vấn (data
fidelity, data integrity). Tính bí mật của dữ liệu bị vi phạm khi kẻ tấn công lấy được nội
dung dữ liệu. Tính toàn vẹn của câu truy vấn bị vi phạm nếu sau khi nhận câu truy vấn
từ trạm chính, nút lưu trữ trả về kết quả không đúng đắn hoặc không đầy đủ. Đúng đắn
nghĩa là kết quả phải có trong dữ liệu thật sự, và không bị can thiệp (thay đổi, thêm,
bớt). Đầy đủ nghĩa là kết quả bao gồm tất cả các dữ liệu thỏa điều kiện truy vấn.
Để đảm bảo tính bí mật của dữ liệu, nút cảm ứng không gửi dữ liệu gốc mà phải
gửi dữ liệu đã được mã hóa hay biến đổi sang dạng khác. Khi đó, dữ liệu lưu trong nút
lưu trữ cũng không là dữ liệu gốc, câu hỏi đặt ra là làm thế nào nút lưu trữ có thể trả lời
14
câu truy vấn của trạm chính? Một cách giải quyết là: các nút lưu trữ vẫn phải gửi toàn
bộ dữ liệu về cho trạm chính, sau đó trạm chính mới biến đổi dữ liệu về dạng ban đầu
(dữ liệu gốc) và thực hiện truy vấn trên đó. Cách này hao tốn nhiều năng lượng. Giải
pháp của Sheng-Li [05] là tiết lộ một ít thông tin cho nút lưu trữ trong khi vẫn đảm bảo
được tính bí mật của dữ liệu, bằng cách sử dụng kết hợp các kỹ thuật sau: khóa bí mật
(shared key), phân đoạn dữ liệu (bucketing), gán nhãn (tagging).
Khóa bí mật:
ki,t: khóa bí mật của nút cảm ứng si tại thời điểm (epoch) t. Khóa được chia sẻ
giữa nút cảm ứng si và trạm chính. Như vậy, các nút cảm ứng khác nhau không biết
được khóa bí mật của nhau.
Sau mỗi thời điểm (epoch), khóa mới được sinh ra nhờ phép băm (hashing), và
khóa cũ bị xóa đi: ki,t = hash(ki,t-1). Giá trị khóa chia sẻ thay đổi theo thời gian giúp
tăng tính an toàn cho hệ thống.
Thông tin trước khi gửi đi cần được mã hóa với khóa bí mật.
Bucketing và gán nhãn:
Nếu nút cảm ứng chỉ đơn thuần sử dụng khóa chia sẻ với trạm chính để mã hóa
dữ liệu và gửi tới nút lưu trữ thì khi nhận câu truy vấn từ trạm chính, nút lưu trữ cũng
không thể trả lời được (vì dữ liệu đã mã hóa). Khi đó, nút lưu trữ phải trả về tất cả dữ
liệu cho trạm chính, trạm chính giải mã ra và thực hiện truy vấn trực tiếp trên dữ liệu
đã giải mã. Cách này tiêu tốn nhiều năng lượng do phải truyền tải lượng dữ liệu lớn.
Để giải quyết, [05] sử dụng kỹ thuật bucketing.
Giả sử miền giá trị là rời rạc, có thể chia thành nhiều đoạn giá trị sao cho: không
có chồng lấp (overlap) hoặc khoảng trống giữa hai đoạn liên tiếp, mỗi đoạn được gọi
là một bucket, được gán một nhãn (tag). Khi một giá trị thuộc đoạn (bucket) nào thì nó
sẽ được gán nhãn tương ứng với bucket đó. Các nút cảm ứng và trạm chính cùng thống
nhất về cách phân chia bucket.
15
Từ nút cảm ứng đến nút lưu trữ
Các nút cảm ứng gán nhãn cho các dữ liệu cần gửi. Các dữ liệu cùng nhãn sẽ
được xem như thuộc cùng một khối (block) khi mã hóa.
q Ví dụ
Nút si có thể gửi đến nút lưu trữ dữ liệu có định dạnh như sau:
Nút si nút lưu trữ: i, t, {T1, E ki,t{d1, d2} }, {T2, E ki,t{d3}}, ...
(i là ID của nút cảm ứng, t là thời điểm (epoch), ki,t là khóa chia sẻ giữa nút si và
trạm chính tại thời điểm (epoch) t, d1, d2 thuộc cùng đoạn (bucket) ứng với nhãn T1, d3
thuộc đoạn (bucket) ứng với nhãn T2)
Từ trạm chính đến nút lưu trữ
Giả sử trạm chính cần truy vấn đoạn giá trị [a, b]. Trạm chính dựa vào [a, b] để
xác định tập hợp các nhãn sao cho các bucket ứng với các nhãn đó phủ [a, b] với ít giá
trị trùng lắp và dư thừa nhất. Sau đó trạm chính sẽ gửi yêu cầu truy vấn các dữ liệu gắn
các nhãn thuộc tập hợp đó.
q Ví dụ:
Ứng với [a, b], giả sử {T2, T3, T5} là tập các nhãn tương ứng với các bucket phủ
[a, b] sao cho ít giá trị dư thừa và trùng lắp nhất. Khi đó trạm chính sẽ gửi yêu cầu truy
vấn dữ liệu có nhãn thuộc {T2, T3, T5}, tại thời điểm (epoch) t theo định dạng:
Trạm chính nút lưu trữ: t, {T2, T3, T5}
Để chống lại loại hình tấn công vào tính toàn vẹn của câu truy vấn, [05] sử dụng
chứng chỉ số (certificate).
Tính toàn vẹn của câu truy vấn bị vi phạm:
• Nếu nút lưu trữ trả về kết quả không đúng đắn, nghĩa là trong kết quả trả
về có giá trị thừa (không thỏa điều kiện truy vấn mà vẫn trả về) hoặc kết
quả trả về có mẫu dữ liệu bị sửa đổi,
16
• Nếu nút lưu trữ trả về kết quả không đầy đủ (incomplete reply), nghĩa là
kết quả trả về bị thiếu (có các giá trị thỏa điều kiện nhưng không trả về) .
Nếu như nút lưu trữ không đáng tin cậy hoặc bị khống chế, kẻ tấn công có thể vi
phạm tính đúng đắn bằng cách cố tình chèn giá trị thừa hoặc sửa giá trị khi trả lời một
truy vấn do trạm chính gửi tới. Tuy nhiên, khi kết quả được gửi về, trạm chính sẽ thực
hiện giải mã hoặc biến đổi ngược để đưa dữ liệu về dạng bản rõ. Dữ liệu do kẻ tấn
công tùy ý chỉnh sửa hoặc chèn vào khi được giải mã sẽ ra chuỗi bit vô nghĩa và dễ
dàng bị trạm chính phát hiện. Vì vậy, kẻ tấn công phải biết được phương thức mã hóa
và khóa dùng để mã hóa dữ liệu thì mới có khả năng thành công. Tuy nhiên, vì khóa
chỉ được chia sẻ giữa trạm chính và nút cảm ứng, nên tấn công này không thực hiện
được nếu chỉ khống chế được nút lưu trữ mà không có thêm thông tin nào khác.
Kẻ tấn công cũng có thể vi phạm tính đầy đủ của kết quả truy vấn bằng cách bỏ đi
một số giá trị trong các dữ liệu đang được lưu trữ. Tuy nhiên, do cơ chế mã hóa ở các
nút cảm ứng được thực hiện không phải với từng giá trị riêng rẽ mà thực hiện với khối
dữ liệu (block) gồm các giá trị cùng nhãn, nên nếu muốn bỏ đi một số giá trị thì kẻ tấn
công phải bỏ đi toàn bộ khối dữ liệu có cùng nhãn. Chẳng hạn, nếu dữ liệu do nút cảm
ứng i gửi về nút lưu trữ tại thời điểm (epoch) t là
Nút si nút lưu trữ: i, t, {T1, E ki,t{d1, d2} }, {T2, E ki,t{d3}}, ...
Kẻ tấn công muốn bỏ đi giá trị d1, thì chỉ có cách là bỏ toàn bộ khối {T1, Eki,t{d1,
d2}}. Khi đó, nút lưu trữ xem như không hề nhận được bất kỳ dữ liệu nào có gán nhãn
T1 do nút i gửi tới tại thời điểm (epoch) t.
Để phòng chống loại hình tấn công này, Sheng-Li đề nghị sử dụng chứng chỉ số
(certificate). Mỗi tập dữ liệu với cùng nhãn Tj bất kỳ do nút cảm ứng i gửi đến tại thời
điểm t được định danh duy nhất bởi một con số gọi là encoding-number, ký hiệu là
num(i,j,t).
num(i,j,t) = Hj(i||j||t||ki,t) là con số định danh cho nhãn Tj tại thời điểm epoch t
17
với ki,t là khóa chia sẻ tại thời điểm (epoch) t giữa nút cảm ứng i và trạm chính, Hj
là hàm băm được định nghĩa trước.
Sau khi gửi tất cả các dữ liệu cho nút lưu trữ, các nút cảm ứng đồng thời sinh ra
và gửi đi các con số định danh (encoding-number) cho các nhãn không có dữ liệu. Ví
dụ, giả sử tại thời điểm t, nút lưu trữ si ghi nhận được các dữ liệu ứng với nhãn T1
nhưng không chứa dữ liệu nào ứng với nhãn T2. Khi đó, nút lưu trữ si sẽ gửi đến nút
lưu trữ dữ liệu như sau:
Nút si nút lưu trữ: i, t, {T1, E ki,t{d1, d2,…} }, {T2, num(i,2,t)}, ...
Khi nhận được yêu cầu truy vấn từ trạm chính, nút lưu trữ tìm kiếm tất cả các dữ
liệu khớp với khoảng truy vấn, đồng thời phát sinh ra một chứng chỉ số và gửi đi.
Chứng chỉ số cho mỗi thời điểm epoch t được tạo ra dựa trên các con số định danh ứng
với các nhãn không có dữ liệu tại thời điểm t do cùng một nút cảm ứng gửi đến.
c(i,j,t) = H(i||j||t||num(i,j,t)) với H là hàm băm chọn tùy ý.
Certificate(t) = H’(||c(i,j,t)) với giá trị t nhất định, || là phép nối các chuỗi c(i,j,t)
lại với nhau, H’ là một hàm băm khác H.
Như vậy, thay vì gửi đi tập hợp các con số định danh (encoding-number), cách
tạo ra chứng chỉ số sẽ giảm kích thước thông điệp phải truyền đi.
Khi trạm chính nhận được kết quả trả về từ các nút lưu trữ, trạm chính cũng sẽ
nhận kèm được chứng chỉ số. Vì trạm chính biết được toàn bộ các khóa chia sẻ với các
nút cảm ứng, trạm chính có thể tính lại giá trị chứng chỉ số. Sau đó, so khớp với chứng
chỉ nhận được từ nút lưu trữ, từ đó suy ra tính toàn vẹn của thông tin nhận được (thông
tin toàn vẹn nếu hai chứng chỉ số trùng khớp nhau).
Với phương pháp này, mặc dù kẻ tấn công (đã khống chế được nút lưu trữ) có thể
bỏ bớt dữ liệu nhưng do không có đủ thông tin để sinh ra con số định danh (encoding-
number) ứng với nhãn (tag) của khối dữ liệu định bỏ đi đó (vì không có khóa chia sẻ
giữa nút cảm ứng và trạm chính), nên không đảm bảo phát sinh được chứng chỉ số thực
18
(giả sử chứng chỉ số đủ dài để tránh tấn công trực tiếp bằng phương pháp vét cạn, dò ra
giá trị của chứng chỉ số), vì vậy tấn công này có thể được trạm chính phát hiện.
q Ví dụ:
Miền giá trị dữ liệu D = {1,…,5}
Cách phân hoạch miền giá trị dữ liệu và các nhãn (tag) tương ứng:
{1,2,3}: nhãn T1 ; {4}: nhãn T2 ; {5}: nhãn T3
Dữ liệu cần gửi từ nút si đến nút lưu trữ: i, t, {3,3,2,1,2,4} . Khi đó, giá trị thực sự
được gửi đi là:
i, t, {T1, Eki,t(3,3,2,1,2)} {T2, Eki,t(4)} {T3, num(i,3,t)}
với num(i,j,t) = Hj(i||j||t||ki,t) (gọi là encoding-number), ki,t là khóa tại thời điểm
(epoch) t.
Nếu trạm chính muốn gửi câu truy vấn sau đến nút lưu trữ: cần truy vấn {t, [2,
4]} thì câu truy vấn thực sự gửi là: t, {T1, T2}
Khi đó nút lưu trữ trả về cho trạm chính kết quả gồm các dữ liệu có nhãn trong
{T1, T2} và chứng chỉ số:
Certificate(t) = H’(||c(i,j,t)) với c(i,j,t) = H(i||j||t||num(i,j,t))
2.4. Phát biểu bài toán
Luận văn quan tâm đến bài toán bảo toàn tính bí mật và toàn vẹn của dữ liệu
trong mô hình mạng cảm ứng hai lớp, với các giả định như sau:
• Tất cả các nút cảm ứng đều được đồng bộ hóa với trạm chính sao cho có cùng
thời điểm bắt đầu và kết thúc khoảng thời gian cố định giữa h