Tình hình nghiên cứu tổng quan 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).

pdf12 trang | Chia sẻ: vietpd | Lượt xem: 1214 | Lượt tải: 1download
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
Tài liệu liên quan