Luận văn Tiếp cận đại số cho bài toán đảm bảo tính riêng tư dữ liệu trên mạng cảm ứng không dây

TIẾP CẬN ĐẠI SỐ CHO BÀI TOÁN ĐẢM BẢO TÍNH RIÊNG TƯ DỮ LIỆU TRÊN MẠNG CẢM ỨNG KHÔNG DÂY ĐẶNG HẢI VÂN Trang nhan đề Lời cảm ơn Mục lục Danh mục Chương 1: Mở đầu Chương 2: Tình hình nghiên cứu tổng quan Chương 3: Phương pháp đề nghị Chương 4: Kết luận Tài liệu trích dẫn

pdf40 trang | Chia sẻ: maiphuongtl | Lượt xem: 1703 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Luận văn Tiếp cận đại số cho bài toán đảm bảo tính riêng tư dữ liệu trên mạng cảm ứng không dây, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
20 CHƯƠNG 3. PHƯƠNG PHÁP ĐỀ NGHN 3.1. Nhận xét về phương pháp Sheng-Li Bên cạnh dữ liệu cần truyền, các nút cảm ứng phải truyền thêm các dữ liệu để chống lại khả năng nút lưu trữ trả lời không đủ câu truy vấn của trạm chính. Thực vậy, giả sử nút cảm ứng thứ i có k dữ liệu phân bố vào p nhãn (tag) trong tập [T1,…,Tq] với q > p thì: (i) nút i phải truyền thêm q - p thông điệp để kiểm tra dữ liệu trong (q-p) nhãn (tag) còn lại là rỗng (ii) hơn nữa, nút i còn phải truyền thêm một số dữ liệu padding khi mã hóa. Vấn đề này làm cho nút cảm ứng tốn chi phí lớn cho truyền thông tin (chi phí truyền thường cao hơn rất nhiều chi phí tính toán) Vấn đề có thể nghiêm trọng hơn khi hệ thống có thể bị tấn công “dần dần” khi nút lưu trữ tự nó/ hoặc bị khống chế để khai thác tính thường trực của dữ liệu trên hệ thống. Với một thuật toán mã hóa khối, kích thước bản mã thường bằng với kích thước bản rõ. Như vậy nếu kích thước bản mã lớn, có thể suy ra kích thước bản rõ lớn, đồng nghĩa với số lượng dữ liệu nhiều. Bên cạnh đó, kích thước giá trị sau khi băm có số bit cố định, nên hoàn toàn xác định được tag nào không có dữ liệu. Hơn nữa, các tag là cố định nên có thể dò ra gần đúng biên của các đoạn dữ liệu (bucket) ứng với các tag. Như vậy, do dữ liệu thường trực trên hệ thống, theo thời gian hoàn toàn có thể suy ra hoặc xấp xỉ được phân phối của dữ liệu thật sự. Khi biết được phân phối, các giá trị min, max, trung bình, phương sai,… hoàn toàn có thể xấp xỉ được, nhất là đối với phân phối đều. Ngoài ra, nút lưu trữ có thể đóng vai trò người dùng, thực hiện câu truy vấn và gửi đến trạm chính (như vậy nút lưu trữ có bản rõ). Trạm chính sẽ gửi yêu cầu đến nút lưu trữ và nút lưu trữ trả về tập các dữ liệu và nhãn tương ứng (như vậy nút lưu trữ có bản mã). Khi đó, nút lưu trữ có thể thực hiện tấn công khi biết bản rõ và bản mã. Vì vậy phương pháp Sheng-Li rủi ro cao với tấn công khi biết bản rõ và bản mã, mà thực ra là tấn công tự điển. 21 Bên cạnh đó, một đặc điểm khác của phương pháp Sheng-Li là: nếu cùng một giá trị xuất hiện nhiều lần, thì các giá trị đó được xem như là các giá trị phân biệt. Từ các hạn chế trên của phương pháp Sheng-Li, chúng tôi muốn đề nghị một hướng cải tiến phương pháp nhằm chống lại tấn công bản rõ/ bản mã, đồng thời đưa ra một hướng tiếp cận khác có thể khắc phục hai hạn chế trên (tuy nhiên hướng tiếp cận này cũng có một số hạn chế nhất định). 3.2. Hướng cải tiến phương pháp Sheng-Li 3.2.1. Mô tả phương pháp đề xuất Trong phương pháp Sheng-Li, các nút cảm ứng trực tiếp mã hóa dữ liệu và gửi bản mã của dữ liệu đến các nút lưu trữ, nên trong trường hợp nút lưu trữ bị khống chế, nó có thể khai thác được các giá trị bản mã đang được lưu thường trực trên nó. Vì vậy, chúng tôi muốn thay đổi giá trị gửi đi từ nút cảm ứng. Giá trị gửi đi sẽ là một giá trị có thể bao gồm trong đó thông tin về giá trị dữ liệu thật sự, và số lần xuất hiện dữ liệu. Hướng tiếp cận của chúng tôi là áp dụng định lý số dư Trung Hoa để tìm ra giá trị đó. Giả sử tại thời điểm t, nút cảm ứng thứ i cần gửi m giá trị sau {d1,d2,…,dm}. Giá trị dj xuất hiện fj lần trong tập {d1,d2,…,dm}. Khi đó, áp dụng định lý số dư Trung Hoa để giải hệ phương trình đồng dư sau có thể tìm được giá trị xj đại diện cho cặp {dj, fj} xj = dj mod mi,1 xj = fj mod mi,2 với mi,1, mi,2 là hai số nguyên tố cùng nhau (điều kiện để hệ có nghiệm duy nhất) chia sẻ giữa nút thứ i và trạm chính. Gọi Di là miền giá trị của dữ liệu ghi nhận ở nút cảm ứng thứ i. Khi đó, để đảm bảo cho hệ có nghiệm với mọi dj thuộc miền Di và với mọi fj, mi,1 và mi,2 cần lớn hơn mọi dj và mọi fj. Nói cách khác mi,1, mi,2 ≥ max(Di) và mi,1, mi,2 ≥ m (m là số lượng dữ liệu cần gửi tại một thời điểm). 22 Các giá trị xj chính là các giá trị bao gồm trong nó thông tin về dữ liệu gốc (dj) và tần số xuất hiện (fj). Nút cảm ứng sau đó thực hiện mã hóa với khóa chia sẻ ki,t (hoặc có thể không cần mã hóa) các giá trị xj và gửi đi kèm với các nhãn (tag). Lưu ý là cách gán nhãn vẫn theo phương pháp Sheng-Li, nghĩa là gán nhãn dựa trên dữ liệu gốc ban đầu. Khi trạm chính nhận được kết quả truy vấn, trạm chính hoàn toàn có thể khôi phục lại các giá trị dj và tần số fj từ các xj, vì mi,1, mi,2 được chia sẻ giữa trạm chính và nút cảm ứng i với mọi i. q Ví dụ: Giả sử D = {1,…,30} được phân hoạch thành các vùng rời nhau (hội các vùng này chính xác là D) [05] và các tag tương ứng như sau: T1 T2 T3 T4 T5 [1, 5] [6, 15] [16, 23] [24, 28] [28, 30] Nút cảm ứng i cần gửi tập dữ liệu gồm 9 giá trị (m=9): {3, 3, 7, 1, 7, 7, 28, 29, 28} Chọn 2 số nguyên tố cùng nhau m1, m2 (nhằm thỏa điều kiện để áp dụng định lý số dư Trung Hoa) với m1, m2 ≥ max(D, m) = max{[1,30],9} = 30. Ví dụ chọn m1 = 31, m2 = 33 Các giá trị 3, 1 nằm trong khoảng [1,5] nên gán nhãn T1, 7 nằm trong [6,15] nên gán nhãn T2, 28 và 29 nằm trong [28,30] nên gán nhãn T5. Theo phương pháp Sheng- Li, dữ liệu cần gửi đi là: t, {T1, {3,3,1}}, {T2, {7,7,7}}, {T3, num(i||3||t)}, {T4, num(i||4||t)}, {T5, {28,28,29}} 23 Các giá trị đại diện xj được tính như sau: Giá trị 3 1 7 28 29 Số lần xuất hiện 2 1 3 2 1 Nhãn T1 T1 T2 T5 T5 Giá trị xj Giải hệ x=3 mod m1 x=2 mod m2 x= x1 Giải hệ x=1 mod m1 x=1 mod m2 x= x2 Giải hệ x=7 mod m1 x=3 mod m2 x= x3 Giải hệ x=28 mod m1 x=2 mod m2 x = x4 Giải hệ x=29 mod m1 x=1 mod m2 x= x5 Dữ liệu thực sự được mã hóa và gửi đi đến nút lưu trữ là các giá trị đại diện: t, {T1, {x1, x2}}, {T2, {x3}}, {T3, num(i||3||t)}, {T4, num(i||4||t)}, {T5, {x4, x5}} Dữ liệu x1 x2 x3 x4 x5 Nhãn (tag) T1 T1 T2 T5 T5 24 3.2.2. Thuật toán Bảng 3-1 Thuật toán cải tiến CRT Thuật toán cải tiến CRT Input D = miền giá trị của dữ liệu X = tập dữ liệu cần gửi của nút cảm ứng m = số dữ liệu gửi mỗi lần Tập bucket và các tag tương ứng. {B1, T1} … {Bk, Tk} m1, m2: hai số nguyên tố cùng nhau, m1, m2 > max(D), m1, m2 > m m1 -1 mod m2, m2-1 mod m1 Output Các giá trị đại diện và nhãn tương ứng. Thực hiện For x thuộc X f(x) = tan so cua x p = xm2m2 -1 mod m1 + fm1m1 -1 mod m2 (mod m1 m2) Gan nhan cho x End for 25 3.2.3. Phân tích phương pháp đề xuất Sau đây là các nhận xét của chúng tôi về các khác biệt trong hướng tiếp cận dựa vào định lý số dư Trung Hoa (CRT) so với phương pháp Sheng-Li. Để cho dễ theo dõi, chúng tôi tạm gọi tên các giá trị xj được tìm dựa vào định lý số dư Trung Hoa như trên là ‘giá trị đại diện’, và gọi hướng tiếp cận này là hướng tiếp cận CRT. Thứ nhất, theo hướng tiếp cận này, các giá trị được lưu giữ thường trực trên các nút lưu trữ là bản mã của các giá trị đại diện hoặc chính các giá trị đại diện (trường hợp không thực hiện mã hóa). Đồng thời, giá trị đại diện phụ thuộc vào dữ liệu gốc và tần số xuất hiện nên nếu cùng một giá trị, nhưng tại thời điểm t1 dữ liệu có số lần xuất hiện khác với thời điểm t2, thì giá trị đại diện tại thời điểm t1 cũng khác với thời điểm t2. Thứ hai, mỗi giá trị đại diện đã bao gồm thông tin về dữ liệu và tần số xuất hiện dữ liệu đó. Nghĩa là nếu một dữ liệu xuất hiện nhiều lần, dữ liệu đó vẫn chỉ được đặc trưng bởi một giá trị đại diện duy nhất. Như vậy, các giá trị giống nhau được xem như là một giá trị duy nhất (phương pháp Sheng-Li xem các giá trị này như các giá trị phân biệt) và chỉ gửi đi một lần. Nhờ đó, trong trường hợp dữ liệu không rải đều mà tập trung vào một số giá trị, chi phí truyền tải được tiết kiệm đáng kể. Ngược lại, nếu dữ liệu rải đều thì tùy thuộc vào tần số của từng giá trị dữ liệu. Nếu tần số cao thì chi phí giảm so với phương pháp Sheng-Li. Nếu tần số thấp thì chi phí có thể cao hơn. Thông thường, dữ liệu phân phối chuNn, dữ liệu thường tập trung vào các giá trị nằm trong vùng gần đỉnh (vùng có xác suất cao), nên cách này thường có thể giúp cải tiến chi phí đường truyền. Ngoài ra, các ứng dụng mà vấn đề thời gian thực là không quan trong, có thể chủ động kéo dài khoảng thời gian định kỳ (epoch) ra nhằm tích lũy dữ liệu nhiều hơn trước khi gửi đi. Khi đó thì các giá trị dữ liệu có khả năng có tần số xuất hiện cao nên chi phí truyền tải sẽ giảm. Đồng thời, số lần truyền tải giảm (do khoảng thời gian định kỳ tăng) nên chi phí cũng được giảm. Cụ thể, chi phí truyền tải dữ liệu có thể ước lượng như sau: Nếu mỗi giá trị dj thuộc D được biểu diễn bởi b byte thì m1, m2 cần (b+1) byte để biểu diễn, vì m1, m2 ≥ max(D). Giá trị đại diện xj thuộc Zm1×m2 nên 26 mỗi giá trị xj cần 2(b+1) byte. Do đó, nếu tập dữ liệu cần gửi là tập {d1, d2,.., dk} giá trị phân biệt với tần số xuất hiện tương ứng là {f1, f2, …, fk} (lưu ý là f1 + f2 + … + fk = m = số dữ liệu gửi mỗi thời điểm) thì số byte cần để biểu diễn cho k giá trị đại diện tương ứng là 2×k×(b+1) trong khi số byte biểu diễn tập dữ liệu gốc là m×b. Rõ ràng nếu dữ liệu cần gửi chỉ tập trung ở một số giá trị, k sẽ nhỏ hơn hẳn m, khi đó 2×k×(b+1) sẽ nhỏ hơn hẳn m×b. Cuối cùng, tuy có khả năng giảm chi phí truyền tải, hướng tiếp cận này cần tốn chi phí thực hiện giải hệ phương trình đồng dư (gồm hai phương trình) cho mỗi giá trị dữ liệu. Tuy nhiên, giá trị mi,1, mi,2 (ứng với mỗi nút i) là biết trước nên ta có thể lưu giữ luôn các giá trị mi,1-1, m i,2-1 và không cần tính lại mỗi lần giải hệ đồng dư. Khi đó, giả sử mỗi thời điểm t, nút cảm ứng i gửi đi k giá trị thì chi phí để giải các hệ phương trình đồng dư tại nút đó là O(k). Ngoài các khác biệt trên, hướng tiếp cận CRT còn giữ lại các hạn chế khác của phương pháp Sheng-Li, do đó chưa giải quyết được trọn vẹn các tấn công dựa vào tính thường trực của dữ liệu trên nút lưu trữ. Chính vì vậy, trong trường hợp kích thước miền dữ liệu nhỏ, chúng tôi đưa ra một hướng tiếp cận khác, tạm gọi là phương pháp Histogram, có thể tránh được tấn công khai thác vào tính thường trực của dữ liệu. 3.3. Phương pháp Histogram 3.3.1. Mô tả phương pháp Histogram Trong phương pháp Sheng-Li, sau mỗi khoảng thời gian cố định (epoch), nút cảm ứng gửi dữ liệu đã mã hóa, đồng thời gửi các con số định danh (encoding-number) cho các đoạn giá trị (bucket) không có dữ liệu. Biên của các đoạn dữ liệu (bucket) là bí mật. Tuy nhiên, theo thời gian, nút lưu trữ bị khống chế có khả năng dò ra được các biên đó. Vì vậy, một hướng tiếp cận khác, thay vì giấu dữ liệu (bằng mã hóa) và biên 27 của các bucket, chúng tôi công khai miền giá trị dữ liệu, nhưng giấu tần số xuất hiện của từng giá trị. Một giá trị có thể không xuất hiện, xuất hiện một lần, hai lần,… Nói cách khác, trong hướng tiếp cận này, nút cảm ứng sẽ gửi histogram của dữ liệu đi. Để đảm bảo tính bí mật của histogram, chúng tôi sử dụng các giá trị ngẫu nhiên để làm biến đổi histogram. Giá trị ngẫu nhiên được sinh ra bởi hàm băm với tham số thay đổi theo thời gian. Gọi Di là miền rời rạc các giá trị của dữ liệu có khả năng ghi nhận ở nút cảm ứng i. Không mất tính tổng quát, giả sử Di = {1,…,n}. Tại thời điểm t, nút i cần gửi {d1,…,dk} với tần số xuất hiện tương ứng là {f1,…,fk}. Gọi x là giá trị thuộc Di, f(x) là tần số xuất hiện của x trong tập dữ liệu cần gửi ở nút i. h(x) = hash(x||ki,t) nếu x không thuộc {d1,…,dk} h(x) = f(x) + hash(x||ki,t) nếu x thuộc {d1,…,dk}. Trong đó, f(x) là một trong các giá trị thuộc {f1,…,fk} (ký hiệu || là phép kết nối) Có thể gom hai công thức trên thành: h(x) = f(x) + hash(x||ki,t) với f(x) là số lần x xuất hiện trong tập dữ liệu cần gửi đi {d1,…,dk} h(x) được tính với mọi giá trị x thuộc Di. Nút cảm ứng sẽ gửi tất cả các giá trị h(x) này đến nút lưu trữ. q Ví dụ: Với D = {1,…,5}, m = 6. Tập dữ liệu cần gửi là {4, 2, 3, 4, 3, 4}, tương ứng với histogram như sau: 28 Hình 3-1 Ví dụ - Histogram của dữ liệu ban đầu Các giá trị h(x) được tính như sau: h(x) = f(x) + hash(x||ki,t) Giả sử các giá trị hash đã được tính rồi và có giá trị như trong bảng. 1 2 3 4 5 hash(x||ki,t) 4 0 3 2 1 f(x) 0 1 2 3 0 h(x) 4 1 5 5 1 Nút cảm ứng sẽ gửi tập dữ liệu {4,1,5,5,1} đến nút lưu trữ. Histogram của dữ liệu sau khi biến đổi như sau: Hình 3-2 Ví dụ - Histogram của dữ liệu sau khi biến đổi 29 3.3.2. Thuật toán Sau đây là thuật toán theo phương pháp histogram. Thuật toán này nhận các giá trị đầu vào là dữ liệu cần gửi từ một nút cảm ứng đến nút lưu trữ, sau đó thực hiện tính histogram và biến đổi histogram. Kết quả đầu ra là dữ liệu sẽ được gửi đi. Bảng 3-2 Thuật toán histogram-1 Thuật toán histogram - 1 Input D = miền giá trị của dữ liệu X = tập dữ liệu cần gửi của nút cảm ứng Output Histogram đã được biến đổi {h(d)} = { h(d) = giá trị tần số của d sau khi bị biến đổi } với mọi d thuộc D. Thực hiện For d thuộc D h(d) = hash(d||ki,t); End for For x thuộc X h(x) = h(x) + 1 ; End for Sau đây là hai biến thể của thuật toán Histogram, giúp bảo toàn tính toàn vẹn dữ liệu trong trường hợp nút cảm ứng bị khống chế. 30 Bảng 3-3 Thuật toán histogram-2 Thuật toán histogram - 2 Input D = miền giá trị của dữ liệu X = tập dữ liệu cần gửi của nút cảm ứng Output Histogram đã được biến đổi: {h(d)} = { h(d) = giá trị tần số sau khi bị biến đổi } với mọi d thuộc D Thực hiện For d thuộc D h(d) = hash(d||ki,t); End for For x thuộc X h(x) = h(x) + (1 + hash(x||ki,t)); End for 31 Bảng 3-4 Thuật toán histogram-3 Thuật toán histogram - 3 Input D = miền giá trị của dữ liệu X = tập dữ liệu cần gửi của nút cảm ứng Output Histogram đã được biến đổi: {h(d)} = { h(d) = giá trị tần số của d sau khi bị làm nhiễu } với mọi d thuộc D Thực hiện For d thuộc D h(d) = hash(d||ki,t); End for For x thuộc X h(x) = h(x) + 1 ; End for For x thuộc X h(x) = Encki,t(h(x)); End for 3.3.3. Phân tích phương pháp Histogram Sau đây là một số đánh giá của chúng tôi về hướng tiếp cận Histogram. Kết quả trả về cho câu truy vấn khoảng trong phương pháp Sheng-Li là kết quả gần đúng, vì đơn vị nhỏ nhất được trạm chính sử dụng để truy vấn là các tag (ứng với các bucket). Sau khi nhận kết quả trả về từ nút lưu trữ, trạm chính mới thực hiện giải mã dữ liệu để loại bỏ các giá trị thừa. Còn trong phương pháp Histogram, đơn vị nhỏ 32 nhất là các giá trị, nên kết quả truy vấn trả về là kết quả chính xác. Trạm chính chỉ thực hiện biến đổi để đưa về dữ liệu gốc trước khi gửi kết quả cho người dùng. q Ví dụ: Nếu trạm chính cần truy vấn khoảng [3,5] thì các nút lưu trữ sẽ trả về chính xác các giá trị {h(3), h(4), h(5)} Phương pháp Sheng-Li xem các giá trị trùng nhau như các giá trị phân biệt. Trong khi đó, với mỗi giá trị trùng nhau, phương pháp Histogram chỉ cần tăng tần số xuất hiện của giá trị đó lên, cùng với giá trị băm của nó. Vì vậy, tương tự như trong phần nhận xét phương pháp CRT, tính chất này giúp cải tiến chi phí truyền tải. Sau mỗi khoảng thời gian cố định, nút cảm ứng phải gửi toàn bộ histogram đến nút lưu trữ. Nghĩa là ngay cả với giá trị x không có dữ liệu, nút cảm ứng cũng phải gửi giá trị h(x) của nó đi. Còn phương pháp Sheng-Li, mặc dù cũng phải gửi một con số định danh cho các bucket không chứa dữ liệu, nhưng số lượng bucket nhỏ hơn so với số lượng giá trị thực sự, nên chi phí truyền tải sẽ nhỏ hơn. Vì vậy, phương pháp Histogram chỉ thích hợp với lượng dữ liệu nhỏ và số lần truyền thông tin ít, nhưng mỗi lần truyền nhiều dữ liệu cùng lúc. Phương pháp Sheng-Li chủ yếu hỗ trợ câu truy vấn dạng khoảng. Tiếp cận dựa vào histogram cũng có thể trả lời câu truy vấn dạng khoảng nhưng đồng thời cũng hỗ trợ truy vấn count, sum, average. Trạm chính có thể yêu cầu tính tổng toàn bộ các dữ liệu, hoặc chỉ tính tổng các giá trị trong một khoảng giá trị nào đó. Đối với câu truy vấn count, trạm chính khi nhận được kết quả trả về, chỉ cần trừ đi tổng các giá trị hash(x||ki,t) (trạm chính biết được ki,t nên hoàn toàn có thể tính được giá trị băm). Đối với câu truy vấn sum, đầu tiên cần tính các giá trị s(x) = h(x) – hash(x||ki,t) với mọi x, sau đó chỉ cần cộng các giá trị s(x) lại với nhau. Có thể thực hiện mã hóa các giá trị h(x) trước khi gửi đi, nhằm chống lại tấn công vào tính toàn vẹn của giá trị h(x) [ 33 Bảng 3-4 Thuật toán histogram-3]. Một cách khác cũng giúp chống lại tấn công vào tính toàn vẹn của h(x) là thay vì sử dụng công thức tính h(x) như trên, có thể áp dụng công thức sau: h(x) = f(x)×(1+ hash(x||ki,t)) + hash(x||ki,t) [ 34 Bảng 3-3 Thuật toán histogram-2]. Giá trị hash(x||ki,t) được cộng dồn phía sau nhằm tránh trường hợp nếu không có dữ liệu, h(x) = 0 thì sẽ dễ dàng biết được. Theo công thức đó, f(x) = (h(x) - hash(x||ki,t))÷(1+hash(x||ki,t)), nên khi trạm chính nhận được h(x), nếu như (h(x) - hash(x||ki,t)) không chia hết cho (1+ h(x) - hash(x||ki,t)), có thể suy ra giá trị h(x) không toàn vẹn. Mặc dù hạn chế bởi phương pháp Histogram chỉ thích hợp với lượng dữ liệu nhỏ, và số lần truyền thông tin ít, nhưng mỗi lần truyền nhiều dữ liệu cùng lúc, nhưng trên thực tế, trong nhiều ứng dụng các giá trị do nút cảm ứng ghi nhận cũng có miền biến thiên không lớn, không không yêu cầu tính thời gian thực cao (ví dụ: nhiệt độ, chỉ số nước). Trong trường hợp lượng dữ liệu lớn, hoặc ứng dụng yêu cầu thời gian thực, hoặc mỗi lần truyền các dữ liệu phân bố rộng, không tập trung vào một số giá trị, phương pháp Histogram bộc lộ nhiều hạn chế về chi phí truyền tải. Hướng tiếp cận sau đây cũng dựa trên histogram nhưng thông tin truyền đi được giảm kích thước (nên tạm thời chúng tôi gọi là phương pháp Nén Histogram), làm giảm đáng kể chi phí truyền tải. Tuy nhiên, chúng tôi chỉ mới trình bày phương pháp này như là một hướng phát triển trong tương lai, vì hiện tại vẫn còn tồn tại một số vấn đề mà chúng tôi chưa giải quyết được trọn vẹn. 35 3.4. Phương pháp Nén Histogram 3.4.1. Mô tả phương pháp Nén Histogram Giả sử miền giá trị dữ liệu ở tất cả các nút cảm ứng đều như nhau (giả thiết này cũng phù hợp với thực tế vì các nút cảm ứng thường được gắn trong một khu vực hoặc nhiều khu vực để đo cùng một đại lượng quan tâm, chẳng hạn nhiệt độ. Và miền giá trị của đại lượng đó ở các khu vực là hoàn toàn xác định). Không mất tính tổng quát, giả sử miền giá trị dữ liệu là D = {1,2,…,n}, số lượng nút cảm ứng cùng gửi dữ liệu đến nút lưu trữ là l, lần lượt có các định danh là {1,…,l} Phương pháp này sử dụng các đa thức để nén histogram cần gửi đi. Số biến của đa thức bằng lực lượng của miền giá trị dữ liệu (|D| = n). Gọi k là số lượng đa thức sử dụng (k ≤ n), và x = (x1,x2,…,xn) là vec-tơ n thành phần. P1 (x) = a11x1 + a12x2 + … + a1nxn P2 (x) = a21x1 + a22x2 + … + a2nxn … Pk (x) = ak1x1 + ak2x2 + … + aknxn Với bộ hệ số a11 a12 … a1n a21 a22 … a2n … ak1 ak2 … akn trên là ta có thể biểu diễn lại k đa thức gốc. Bộ hệ số này sẽ được chia sẻ giữa các nút cảm ứng và trạm chính. 36 Ký hiệu vec-tơ n thành phần hi = {hi1, hi2, …, hin} là histogram của dữ liệu nút cảm ứng i muốn gửi tới (hij là tần số xuất hiện của giá trị j tại nút i, với 1≤ j ≤ n). Pi1 là giá trị đa thức P1 khi thế giá trị histogram của nút i vào. Pi1 (hi) = a11hi1 + a12hi2 + … + a1nhin … Pik (hi) = ak1hi1 + ak2hi2 + … + aknhin Với hi là vec-tơ n thành phần. Nút cảm ứng i sẽ tính giá trị các đa thức, và gửi đi tập giá trị này {Pi1,…,Pik} đến nút lưu trữ. Khi trạm chính gửi câu truy vấn dữ liệu tại thời điểm t (truy vấn khoảng giá trị, truy vấn count, average hay sum) , nút lưu trữ cộng các giá trị Pi1 lại với nhau (với mọi i), cộng các giá trị Pi2 lại với nhau, …, cộng các giá trị Pik lại với nhau. Ký hiệu P’1,P’2,…,P’n là kết quả cộng dồn. Sau đó nút lưu trữ gửi tập dữ liệu { P’1,P’2,…,P’n} trả về cho trạm chính. Rõ ràng: P’1 =∑Pi1 = a11∑hi1 + a12∑hi2 …+ a1n∑hin = a11h’1 + a12h’2 + … + a1nh’n= P1(h’) … P’ k = ∑Pik =ak1∑hi1 + ak2∑hi2 …+ akn∑hin = ak1h’1 + ak2h’2 + … + aknh’n = Pk(h’) với h’ = (h’1,h’2,…,h’n) là vec-tơ n thành phần và h’1 = ∑hi1 với mọi i, h’2 = ∑hi2 với mọi i, …, h’n = ∑hin với mọi i. Khi nhận được {P’1,P’2,…,P’n}, trạm chính sẽ giải hệ k phương trình n Nn (h’1,…,h’n) như trên. Lưu ý ngoài hệ phương trình trên, trạm chính luôn biết được ràng buộc như sau: h’1 + … + h’n = m×l với l là số nút cảm ứng, m là số lượng giá trị gửi đi mỗi thời điểm t. Ràng buộc này có thể sử dụng để giới hạn lại số nghiệm tìm ra của hệ k phương trình, n Nn (vì k ≤ n, mà hệ này luôn đảm bảo có nghiệm (chính là dữ liệu thực sự) nên hệ có một hoặc nhiều nghiệm). 37 q Ví dụ: Giả sử có l = 4 nút cảm ứng. Số lượng dữ liệu gửi đi mỗi thời điểm là m = 3. Số lượng đa thức sử dụng là k = 2. Hai đa thức sử dụng là: P1 = 2x1 + x2 + 3x3 + 4x4 + 5x5 P2 = 3x1 + 2x2 + x3 + 4x4 + 5x5 Không mất tính tổng quát, giả sử miền giá trị dữ liệu là D = {1,…,n} = {1,..,5} Giả sử dữ liệu ghi nhận được ở các nút cảm ứng lần lượt là: Nút 1: {3, 4, 3} Nút 2: {2, 1, 4} Nút 3: {1, 1, 2} Nút 4: {2, 3, 4} Histogram tương ứng với dữ liệu ở các nút là: Nút 1: h1={h11, h12, h13,h14,h15} = {0,0,2,1,1} Nút 2: h2={h21, h22, h23,h24,h25} = {1,1,0,1,0} Nút 3: h3={h31, h32, h33,h34,h35} = {2,1,0,0,0} Nút 4: h4={h41, h42, h43,h44,h45} = {0,1,1,1,0} Hình 3-3 Ví dụ histogram của các tập dữ liệu 38 Giá trị hai đa thức P1, P2 ứng với histogram dữ liệu ở các nút cảm ứng là: Bảng 3-5 Bảng giá trị đa thức ứng với dữ liệu trong ví dụ Nút 1 P11 = P1(h1) = 2x1 + x2 + 3x3 + 4x4 + 5x5 = 2*0 + 0+ 3*2 + 4*1 + 5*0 = 10 P12 = P2(h1) = 3x1 + 2x2 + x3 + 4x4 + 5x5 = 3*0 + 2*0 + 2 + 4*1 + 5*0 = 6 Nút 2 P21 = P1(h2) = 2x1 + x2 + 3x3 + 4x4 + 5x5 = 2*1 + 1+ 3*0 + 4*1 + 5*0 = 7 P22 = P2(h2) = 3x1 + 2x2 + x3 + 4x4 + 5x5 = 3*1 + 2*1 + 0 + 4*1 + 5*0 = 9 Nút 3 P31 = P1(h3) = 2x1 + x2 + 3x3 + 4x4 + 5x5 = 2*2 + 1+ 3*0 + 4*0 + 5*0 = 5 P32 = P2(h3) = 3x1 + 2x2 + x3 + 4x4 + 5x5 = 3*2 + 2*1 + 0 + 4*0 + 5*0 = 8 Nút 4 P41 = P1(h4) = 2x1 + x2 + 3x3 + 4x4 + 5x5 = 2*0 + 1+ 3*1 + 4*1 + 5*0 = 8 P42 = P2(h4) = 3x1 + 2x2 + x3 + 4x4 + 5x5 = 3*0 + 2*1 + 1 + 4*1 + 5*0 = 7 Các nút cảm ứng gửi các giá trị đa thức P1, P2 tới nút lưu trữ: Nút 1 nút lưu trữ: {10, 6} ; Nút 2 nút lưu trữ: {7, 9} Nút 3 nút lưu trữ: {5, 8} ; Nút 4 nút lưu trữ: {8, 7} Khi trạm chính thực hiện truy vấn, nút lưu trữ sẽ tổ hợp các giá trị đa thức lại (tổ hợp cộng): P’1 = P11 + P21 + P31 + P41 = 10 + 7 + 5 + 8 = 30 P’2 = P12 + P22 + P32 + P42 = 6 + 9 + 8 + 7 = 30 và gửi P’1, P’2 về cho trạm chính. Trạm chính nhận được {P’1, P’2}, sẽ thực hiện giải hệ phương trình sau đây để suy ra histogram của toàn bộ dữ liệu tại thời điểm t: 39 2x1 + x2 + 3x3 + 4x4 + 5x5 = P’1 = 30 3x1 + 2x2 + x3 + 4x4 + 5x5 = P’2 = 30 Ràng buộc về số lượng dữ liệu là: x1 + x2 + x3 + x4 + x5 = m×l = 3×4 = 12 (*) Hệ phương trình trên có các bộ nghiệm như sau: Bảng 3-6 Bộ nghiệm của hệ bất phương trình {0,0,0,0,6} {0,0,0,5,2} {0,2,1,0,5} {0,2,1,5,1} {0,4,2,0,4} {5,5,5,0,0} {0,4,2,5,0} {0,6,3,0,3} {0,8,4,0,2} {0,10,5,0,1} {0,12,6,0,0} {6,0,3,1,1} {1,1,1,1,4} {1,1,1,6,0} {1,3,2,1,3} {1,5,3,1,2} {1,7,4,1,1} {6,2,4,1,0} {1,9,5,1,0} {2,0,1,2,3} {2,2,2,2,2} {2,4,3,2,1} {2,6,4,2,0} {3,1,2,3,1} {3,3,3,3,0} {4,0,2,4,0} {5,1,3,0,2} {5,3,4,0,1} Điều kiện ràng buộc (*) có thể giảm bớt một số lượng lớn nghiệm không thỏa. Kết quả còn lại gồm 4 bộ nghiệm sau: {0 6 3 0 3} ; {1 5 3 1 2} ; {2 4 3 2 1} ; {3 3 3 3 0} Trong đó thực sự chỉ có {3 3 3 3 0} là bộ nghiệm đúng (vì {h11, h12, h13,h14,h15} + {h21, h22, h23,h24,h25} + {h31, h32, h33,h34,h35} + {h41, h42, h43,h44,h45} = {0,0,2,1,1} + {1,1,0,1,0} + {2,1,0,0,0} + {0,1,1,1,0} = {3,3,3,3,0}) Vấn đề đặt ra là làm thế nào trạm chính chỉ tìm được đúng một bộ nghiệm thực sự {3,3,3,3,0}. Hướng giải quyết sẽ được trình bày trong phần [3.4.5. Một giải pháp đề nghị]. 40 3.4.2. Thuật toán Bảng 3-7 Thuật toán Nén Histogram Thuật toán Nén Histogram Input D = miền giá trị của dữ liệu (|D| = n) X = tập dữ liệu cần gửi của nút cảm ứng Ak×n = ma trận hệ số k dòng, n cột (k ≤ n, m với m là số dữ liệu một lần gửi) ứng với k đa thức n Nn số (P1, …, Pk) Output Giá trị của k đa thức P1, …, Pk Thực hiện For d thuộc D h(d) = hash(d||ki,t); End for //Tính histogram For x thuộc X h(x) = h(x) + 1 ; End for h = {h(d) với mọi d thuộc D} là vec-tơ n thành phần //Tính k đa thức For i = 1 to k Pi = Ai × h với Ai là dòng i của ma trận hệ số, h là vec-tơ n thành phần, × là tích vô hướng End for Output P1,….,Pk 41 3.4.3. Phân tích phương pháp Nén Histogram Sau đây là một số đánh giá của chúng tôi về hướng tiếp cận nén histogram. Vì cách tiếp cận này cũng dựa trên các giá trị tần số xuất hiện của dữ liệu, nên chúng tôi chủ yếu so sánh với phương pháp Histogram đã trình bày ở [3.3. Còn các ưu điểm cũng như hạn chế khác so với phương pháp Sheng-Li, phương pháp này giống như phương pháp histogram. Ưu điểm của phương pháp này là khả năng trả lời chính xác mọi câu truy vấn và khả năng cải tiến chi phí truyền tải. Phương pháp histogram gửi toàn bộ histogram bao gồm n giá trị (n là lực lượng của miền giá trị dữ liệu) từ nút lưu trữ về trạm chính, còn phương pháp này, chỉ cần gửi k giá trị (k là số đa thức sử dụng). Hơn nữa, từ nút lưu trữ đến trạm chính, thay vì có k ×l (với l là số nút cảm ứng) dữ liệu cần gửi như trong phương pháp histogram, nhờ vào việc cộng dồn các đa thức, số lượng dữ liệu cần gửi chỉ còn k. Trong trường hợp các câu truy vấn chỉ truy vấn theo thời gian t, hoặc theo một khoảng thời gian, hoặc theo vùng (vùng gồm nhiều nút cảm ứng, khi đó trong vùng có một nút lưu trữ để tiếp nhận tất cả dữ liệu trong vùng gửi về) mà không quan tâm dữ liệu do nút cảm ứng nào gửi tới. Khi đó, các dữ liệu trên cùng một nút lưu trữ chỉ cần phân biệt về thời gian, không phân biệt về nguồn gốc xuất phát từ nút cảm ứng nào. Do đó, nút lưu trữ có thể không cần phải lưu giá trị các đa thức của từng nút cảm ứng mà chỉ cần giữ các giá trị tổ hợp cộng các đa thức. Gọi c1, …, ck là giá trị của k đa thức (hoặc k giá trị tổ hợp cộng các đa thức). P1 = c1 P1 = c2 …. Pk = ck 42 k đa thức tạo thành các vế trái và {c1,…,ck} tạo các vế phải của hệ k phương trình, n Nn số. P1 (x) = a11x1 + a12x2 + … + a1nxn = c1 P2 (x) = a21x1 + a22x2 + … + a2nxn = c2 … Pk (x) = ak1x1 + ak2x2 + … + aknxn = ck Vì hệ chỉ có k phương trình nhưng lại có n Nn số với n ≥ k nên không đảm bảo hệ chỉ có nghiệm duy nhất. Điều kiện ràng buộc về số lượng dữ liệu giúp giảm phần lớn các bộ nghiệm, nhưng vẫn không đảm bảo chỉ còn lại một nghiệm duy nhất. Trong phần [3.4.5. Một giải pháp đề nghị], chúng tôi sẽ đề xuất một phương pháp giải quyết bài toán này. Với hệ k phương trình, n Nn (hệ luôn đảm bảo có ít nhất một bộ nghiệm, chính là giá trị dữ liệu thật sự), điều kiện để số nghiệm ít nhất có thể là: ma trận hệ số (k dòng, n cột) có k cột độc lập tuyến tính. Mặc dù tăng giá trị k sẽ làm giảm số lượng bộ nghiệm, và hệ có nghiệm duy nhất khi k = n, nhưng tăng giá trị k cũng đồng nghĩa với tăng chi phí truyền tải dữ liệu. Vì vậy, vấn đề là chọn giá trị k như thế nào để cân bằng được hai yếu tố: chi phí truyền tải và số lượng bộ nghiệm. Một hướng tiếp cận là dựa vào phân bố xác suất của dữ liệu, chọn k bằng số lượng các giá trị dữ liệu có xác suất xuất hiện lớn, và k cột độc lập tuyến tính ứng với k giá trị dữ liệu có xác suất lớn đó. Ngoài ra, có thể thêm thông tin bổ sung làm điều kiện ràng buộc cho bộ nghiệm của hệ phương trình. Ma trận hệ số được thống nhất giữa các nút cảm ứng và trạm chính. Như vậy, trong trường hợp một nút cảm ứng bị khống chế, ma trận này sẽ bị lộ. Để có thể bảo mật histogram ngay cả khi ma trận hệ số bị lộ, có thể áp dụng cách tiếp cận như trong phương pháp histogram: sử dụng các giá trị ngẫu nhiên để làm biến đổi histogram, sau đó mới áp dụng vào trong đa thức, hoặc cộng thêm một lượng nhiễu vào từng gia trị đa thức 43 3.4.4. Về khía cạnh triển khai Ta thấy, để triển khai phương pháp Nén Histogram, bộ số phải được triển khai trước cho các nút cảm ứng và cho trạm chính. Điều này là khó khả thi khi số lượng hệ số lớn. Để khắc phục giải pháp của ta là sinh ra hệ số khi cần; Nghĩa là, nếu nút thứ i có di1,…,dik dữ liệu tại thời điểm (epoch) t thì ta chỉ cần sinh các hệ số aji1,…,ajik theo một hàm sinh chia sẻ trước giữa các nút với trạm chính. Để đảm bảo mỗi thời điểm (epoch) là một khối dữ liệu khác nhau, nghĩa là để đảm bảo tính ngẫu nhiên của dữ liệu, thay vì truyền tổng aji1+…+ajik của một đa thức j ta cộng thêm một đại lượng uj; mặt khác, để chống các nút bị khống chế, mỗi nút i sẽ cộng thêm giá trị hj=hash(j||kt) với kt là khoá ở thời điểm t (được sinh từ khoá kt-1 ở thời điểm (epoch) t-1và được chia sẻ với trạm chính khoá k0). Như vậy, khối dữ liệu tương ứng với đa thức thứ j là aji1+…+ajik+uj+hj. Đại lượng uj cũng là một đại lượng được phát sinh nhưng có thể phụ thuộc vào khoá kt nếu cần. 3.4.5. Một giải pháp đề nghị Trong phần này, chúng tôi trình bày một giải pháp sinh bộ hệ số sao cho bộ nghiệm tìm được là duy nhất. Để đơn giản hóa, chúng tôi giả sử các nút cảm ứng không gửi các thông tin trùng nhau (trong trường hợp dữ liệu trùng, số bất phương trình cần giải sẽ nhiều hơn nhưng cũng có thể giải được bằng phương pháp như trình bày trong luận văn này). Các bộ hệ số của k đa thức tạo thành một ma trận k dòng, n cột, gọi là ma trận hệ số Ak×n. Vấn đề là làm thế nào xây dựng ma trận hệ số sao cho đảm bảo hệ phương trình tạo bởi k đa thức (vế trái) và giá trị thông tin sau khi nén bằng đa thức (vế phải) chỉ có đúng một nghiệm. Gọi D={1,…,n} là miền giá trị dữ liệu, Ak×n là ma trận hệ số ứng với hệ số của k đa thức, n Nn số với k≤m,n. Dữ liệu cần gửi đi gồm m giá trị không trùng nhau thuộc D, nghĩa là nếu sử dụng vec-tơ n phần tử x=(x1,…,xn) để biểu diễn cho m giá trị dữ liệu 44 đó thì vec-tơ x có đúng m phần tử bằng 1, các phần tử khác bằng 0. Giả sử m phần tử bằng 1 đó là ( )1 2, ,..., md d dx x x ứng với các cột {d1, …, dm} của đa thức. { } { } { } { }1 1, 2,..., : , ; 1, 2,..., ; ,..., 1, 2,..., ; k n ij ij m i j D n A a k m n a N N n d d n d d i j × = = ∈ ≠ ∀ ≠ Ta có: ( ) ( ) 1 2 1 2 1 11 1 1 1 1 1 1 1 1 1 1 1 ... ... ... ... ... m j m j m n n d d d d j m k k kn n kd kd kd kd k j P x a x a x a a a a c P x a x a x a a a a c = =  = + + = + + + = =     = + + = + + + = =  ∑ ∑ Nút cảm ứng sẽ gửi giá trị các đa thức đến cho nút lưu trữ: i,t, {c1,…,ck} Khi trạm chính gửi yêu cầu truy vấn i,t, [a,b] đến nút lưu trữ, nút lưu trữ sẽ gửi trả kết quả {c1,…,ck} về cho trạm chính. Trạm chính nhận được {c1,…,ck}, do biết được bộ hệ số nên hoàn toàn có thể thiết lập lại hệ phương trình: ( ) ( ) 1 2 1 2 1 11 1 1 1 1 1 1 1 1 ... ... (*) ... ... ... m m n n d d d k k kn n kd kd kd k P x a x a x a a a c P x a x a x a a a c  = + + = + + + =    = + + = + + + = Hệ (*) có k phương trình, n Nn số với k<n, và (*) có nghiệm (chính là vec-tơ x biểu diễn cho m giá trị dữ liệu thực sự) nên suy ra hệ có một nghiệm hoặc nhiều nghiệm. Vấn đề đặt ra là làm thế nào phát sinh bộ hệ số (aij) để đảm bảo hệ (*) chỉ có một nghiệm. Trước tiên, chúng tôi rút ra nhận xét sau: 45 Bảng 3-8 Nhận xét về nghiệm của hệ k phương trình, n (n số với k<n Nhận xét: Hệ (*) có nhiều hơn 1 nghiệm ( ) ( ) 1 21 1 1 2 2 21 1 1 1 ,..., ,..., sao cho i=1,...,k: j j m m m m iid id j j d d d d d d a a c = = ∃ = ≠ = ∀ = =∑ ∑ Do (*) luôn chắc chắn có ít nhất một nghiệm, suy ra: (*) có đúng 1 nghiệm ( ) ( ) { } 1 21 1 1 2 2 21 1 1 1 ,..., ,..., , i 1,...,k : (1) j j m m m m id id j j d d d d d d a a = = ∀ = ≠ = ∃ ∈ ≠∑ ∑ Dựa trên nhận xét đó, chúng tôi đề nghị cách sinh bộ hệ số (aij) thỏa (1) như sau: Bảng 3-9 Cách sinh bộ hệ số (aij) cho hệ k phương trình, n (n số Cách sinh bộ hệ số (aij) (i) { } { }i 1,...,k-1 ,j 1,..., n∀ ∈ ∈ : sinh aij ngẫu nhiên (ii) { }, j 1,...,i k n= ∀ ∈ : sinh akj thỏa điều kiện: ( ) ( ) { } 1 2 1 2 1 1 1 2 2 2 1 1 1 1 1 1 ,..., ,..., : 1,...,k-1 , j j j j m m m m m m qd qd kd kd j j j j d d d d d d q a a a a = = = = ∀ = ≠ =   ∀ ∈ = ⇒ ≠    ∑ ∑ ∑ ∑ Cách này giúp giảm chi phí sinh (aij) vì đa số (aij) đều được sinh ngẫu nhiên. Để sinh (akj) (hệ số ứng với phương trình thứ k trong (*)) thỏa (ii) trong [Bảng 3-9 Cách sinh bộ hệ số (aij)], chúng tôi đề nghị phương pháp sau đây: 46 Cách sinh bộ hệ số (akj) cho phương trình thứ k của hệ (*): Điều kiện (ii) trong Bảng 3-9 ( ) ( ) { } 1 2 1 2 1 1 1 2 2 2 1 1 1 1 1 1 ,..., ,..., : 1,...,k-1 , j j j j m m m m m m qd qd kd kd j j j j d d d d d d q a a a a = = = = ∀ = ≠ =   ∀ ∈ = ⇒ ≠    ∑ ∑ ∑ ∑ Tương đương: ( ) ( ) { } 1 2 1 2 1 1 1 2 2 2 1 1 1 1 1 1 ,..., ,..., : 1,...,k-1 , 0 j j j j m m m m m m qd qd kd kd j j j j d d d d d d q a a a a = = = = ∀ = ≠ =   ∀ ∈ = ⇒ − ≠    ∑ ∑ ∑ ∑ Để đơn giản về mặt ký hiệu, đặt bj = akj (với j=1,…n). Như vậy: 1 2 1 2 1 1 1 1 0 0 j j j j m m m m kd kd d d j j j j a a b b = = = = − ≠ ⇔ − ≠∑ ∑ ∑ ∑ 1 2 1 1 0 j j m m d d j j b b = = − ≠∑ ∑ sau khi loại bỏ các giá trị 1jdb và 2jdb thỏa 1 2 j jd d= thì có thể biểu diễn lại như sau: { } { }( )' ' ' 1 1 2 21 1 1 1 0 ; j: ; ,..., ; q ,..., j j m m p q j j j m j m j j b b m m n p q p d d d d = = − ≠ ≤ < ∀ ≠ ∈ ∈∑ ∑ ' ' 1 1 j j m m p q j j b b = = −∑ ∑ có thể được biểu diễn thành tích vô hướng của hai vec-tơ n thành phần như sau: Vec-tơ thứ 1: chỉ gồm các phần tử 0, 1 và -1. Các phần tử nằm ở cột { }'1,..., mp p có giá trị 1, các phần tử nằm ở cột { }'1,..., mq q có giá trị -1, còn lại đều có giá trị 0. Vec-tơ thứ 2: vec-tơ ( )1 2, ,..., nb b b 47 Như vậy, mỗi điều kiện ( ) ( ) { } 1 2 1 2 1 1 1 2 2 2 1 1 1 1 1 1 ,..., ,..., : 1,...,k-1 , 0 j j j j m m m m m m qd qd kd kd j j j j d d d d d d q a a a a = = = = = ≠ =   ∀ ∈ = ⇒ − ≠    ∑ ∑ ∑ ∑ có thể biểu diễn lại bằng điều kiện: tích vô hướng của vec-tơ n thành phần gồm các phần tử {0,1,-1} với vec-tơ ( )1 2, ,...,k k kna a a khác 0. Suy ra toàn bộ các điều kiện được xây dựng trong (ii) Bảng 3-9 có thể biểu diễn bằng điều kiện: Tích của ma trận gồm các dòng tạo bởi các vec-tơ n thành phần gồm các phần tử {0,1,-1} với ( )1 2, ,..., Tk k kna a a khác vec-tơ 0. Trong đó, ma trận {0,1,-1} được xác định bởi các điều kiện xây dựng trong (ii) Bảng 3-9; ( )1 2, ,...,k k kna a a là các giá trị cần phải sinh ra. Để dễ trình bày, chúng tôi gọi ma trận {0,1,-1} là ma trận M. Chúng tôi đề nghị phương pháp sau đây để sinh ra ( )1 2, ,...,k k kna a a khi đã biết ma trận M. Bảng 3-10 Heuristic tìm ( )1 2, ,...,k k kna a a Input: Ma trận M Output: ( )1 2, ,...,k k kna a a Thực hiện: Đặt : αi = số dòng của M có phần tử ở cột thứ i mang giá trị 1, tích của dòng với ( )1 2, ,..., Tk k kna a a khác 0 βi = số dòng của M có phần tử ở cột thứ i mang giá trị 1, tích của dòng với ( )1 2, ,..., Tk k kna a a bằng 0 γ = số dòng của M có tích của dòng với ( )1 2, ,..., Tk k kna a a bằng 0 48 val1 = 2 For i = 1 to n Chọn akj thỏa βj lớn nhất. Nếu có nhiều giá trị akj cùng có βj lớn nhất thì chọn akj với αj nhỏ nhất val2 = val1 While (true) do if (akj = val2) làm giảm γ Gán xj = val2 val1 = val2 Break; end if End while End for Phương pháp này vẫn áp dụng được trong trường hợp khi hệ chỉ có 1 phương trình (k=1), n Nn số. Khi đó, điều kiện cần thỏa khi sinh bộ hệ số sẽ nhiều hơn: ( ) ( ) 1 21 1 1 2 2 21 1 1 1 1 1 ,..., ,..., : 0 j j m m m m d d j j d d d d d d a a = = ∀ = ≠ = − ≠∑ ∑ Do đó ma trận M cũng có nhiều dòng hơn. Tuy nhiên, khi đó ma trận M luôn cố định, không thay đổi theo thời gian. Nếu k>1, hệ số của k-1 phương trình đầu tiên được sinh ngẫu nhiên. Ma trận M phụ thuộc vào các hệ số đã được sinh này, vì vậy tăng tính ngẫu nhiên cho M. Từ nhận xét đó, chúng tôi đề nghị không nên chỉ sử dụng 1 đa thức (k=1) mà nên sử dụng 1<k≤m, n. 49 q Ví dụ: Miền giá trị dữ liệu: D = {1,…,n} = {1,…,5} Số dữ liệu gửi đi mỗi lần truyền: m = 3 Số đa thức sử dụng: k = 2 (k<m, n) P1(x) = a11x1 + a12x2 + a13x3 + a14x4 + a15x5 P2(x) = a21x1 + a22x2 + a23x3 + a24x4 + a25x5 x = (x1,x2,x3,x4,x5) Cần sinh các hệ số 11 12 13 14 15 21 22 23 24 25 a a a a a a a a a a       Phát sinh ngẫu nhiên ( ) ( )11 12 13 14 15 2 1 3 2 1a a a a a = Với ( ) ( ) ( ) ( )1 1 1 1 2 2 2 21 2 3 1 2 3, , 1, 2,3 , , 2,3, 4d d d d d d d d= = ≠ = = : 11 12 13 12 13 14 6a a a a a a+ + = + + = Suy ra điều kiện cần khi sinh ( )11 12 13 14 15a a a a a : 21 22 23 22 23 24 21 24a a a a a a a a+ + ≠ + + ⇔ ≠ Tương tự với các 1 2,d d khác, ta suy ra được các điều kiện sau: 21 24 21 24 22 25 22 25 21 24 23 25 21 24 23 25 21 24 22 23 21 24 22 23 21 22 24 25 21 22 24 25 21 25 22 24 21 25 22 24 0 0 0 0 0 0 a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a ≠ − ≠       ≠ − ≠       + ≠ + + − − ≠ ⇔    + ≠ + + − − ≠       + ≠ + + − − ≠       + ≠ + + − − ≠     50 Các điều kiện trên có thể được biểu diễn lại bởi: ( ) ( ) 21 24 22 25 21 24 23 25 21 22 23 24 25 21 24 22 23 21 22 24 25 21 25 22 24 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 1 1 1 0 ... 0 0 1 1 1 1 0 1 1 0 1 10 1 1 0 1 10 T T a a a a a a a a a a a a a a a a a a a a a a a a a − ≠  −      − ≠ −       + − − ≠ − − ⇔ × ≠    + − − ≠ − −        − −+ − − ≠       − −+ − − ≠    Nghiệm tìm được là: ( ) ( )21 22 23 24 25 2 3 1 1 1a a a a a = Như vậy hai đa thức được sinh ra là: P1(x) = 2x1 + x2 + 3x3 + 2x4 + x5 P2(x) = 2x1 + 3x2 + x3 + x4 + x5 Để chứng tỏ với hai đa thức này, với mọi giá trị x = (x1,x2,x3,x4,x5) tương ứng với các bộ m=3 dữ liệu khác nhau thì cặp giá trị đa thức (P1, P2) cũng khác nhau, chúng tôi in ra kết quả của các P1(x) và P2(x) với mọi giá trị có thể của x. ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) 1 2 1 2 1 2 1 2 1 2 1 2 1 1 1 1 0 0 P 6, P 6 1 1 0 1 0 P 5, P 6 1 1 0 0 1 P 4, P 6 1 0 1 1 0 P 7, P 4 1 0 1 0 1 P 6, P 4 P 5, P 41 0 0 1 1 P 6, P0 1 1 1 0 0 1 1 0 1 0 1 0 1 1 0 0 1 1 1 X X X X X X X X X X =  = =  =  = =   = = =    = = =   = = = ⇒  = ==    ==    =    =     =  2 1 2 1 2 1 2 5 P 5, P 5 P 2, P 4 P 6, P 3                     =   = =   = =    = =  51 q Ví dụ: Miền giá trị dữ liệu: D = {1,…,n} = {1,…,4} Số dữ liệu gửi đi mỗi lần truyền: m = 2 Số đa thức sử dụng: k = 1 (k<m, n) P1(x) = a11x1 + a12x2 + a13x3 + a14x4 + a15x5 Khi đó cần sinh ( )11 12 13 14a a a a thỏa: ( ) ( ) 1 22 21 1 1 2 2 21 2 1 2 1 1 1 1 , , : 0 j j m m d d j j d d d d d d a a = = = = ∀ = ≠ = − ≠∑ ∑ Ma trận M tương ứng với điều kiện trên là: 1 1 0 0 1 0 1 0 1 0 0 1 0 1 1 0 0 1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 −    −    −   −    −   −    − −   − −    − −  Kết quả tìm ra là: ( ) ( )11 12 13 14 2 3 5 1a a a a = 52 3.5. Thử nghiệm 3.5.1. Mô tả dữ liệu và mục tiêu thử nghiệm Dữ liệu ghi nhận từ 54 nút cảm ứng được thực hiện ở phòng nghiên cứu Intel Berkeley từ 28/04/2004 đến 05/05/2004, do Peter Bodik, Wei Hong, Carlos Guestrin, Sam Madden, Mark Paskin, Romain Thibaux, Joe Polastre và Rob Szewczyk thực hiện, thu thập. Tập tin dữ liệu có khoảng 2,3 triệu giá trị ghi nhận, kích thước tập tin 34MB (đã nén), khoảng 150MB (chưa nén). Cấu trúc tập tin dữ liệu gồm các cột thông tin sau: Bảng 3-11 Cấu trúc dữ liệu thực nghiệm Ngày tháng năm yyyy-mm-dd Giờ phút giây time:hh:mm:ss.xxx Epoch (int) ID của nút cảm ứng (int) Nhiệt độ (real) Độ Nm (real) Ánh sáng (real) Voltage (real) (int: số nguyên, real: số thực) Trên cùng một nút cảm ứng, giá trị epoch được tăng tuyến tính. Hai epoch giống nhau là của hai nút cảm ứng khác nhau tại cùng một thời điểm. Có một số thời điểm bị mất thông tin. Định danh (ID) của các nút cảm ứng từ 1 đến 54; dữ liệu của một số nút có thể bị mất hoặc bị mất một phần. Nhiệt độ được đo theo độ C. Độ Nm là độ Nm tương đối, giá trị từ 0 – 100%. Ánh sáng đo theo đơn vị Lux (1 lux tương ứng với ánh sáng của ánh trăng, 400 ứng với một văn phòng sáng trưng, 100000 lux ứng với ánh sáng mặt trời), điện thế đo theo vol, từ 2 vol đến 3 vol (pin là các cell lithium ion) [21]. Với dữ liệu trên, chúng tôi thực hiện thử nghiệm để minh họa cho các phân tích trong CHƯƠNG 3: (i) Phân bố dữ liệu trước và sau khi biến đổi theo phương pháp Histogram là hoàn toàn khác nhau và không đoán trước được. (ii) Xây dựng ma trận hệ số cho phương pháp Nén Histogram theo heuristic trình bày trong Bảng 3-10. 53 3.5.2. Tiền xử lý dữ liệu Hiện tại tất cả các dữ liệu được lưu trong cùng một tập tin. Đầu tiên chúng tôi thực hiện tiền xử lý dữ liệu như sau: • Xóa các dòng không đủ dữ liệu (mỗi dòng phải có đủ các cột dữ liệu sau: ngày tháng năm, giờ phút giây, thời điểm (epoch), định danh của nút cảm ứng (id), nhiệt độ, độ Nm, ánh sáng, điện thế. • Giả sử ta quan tâm đến dữ liệu về độ Nm, với độ chính xác là 1. Khi đó, ta chỉ giữ lại các cột: ngày tháng, giờ, epoch, định danh của nút cảm ứng (id), độ Nm, và xóa các cột khác đi. • Xóa các dòng có id>54 hoặc id<1 (vì id của nút chỉ từ 1 đến 54). • Xóa các dòng có độ Nm thấp hơn 0 hoặc lớn hơn 100 vì độ Nm có giá trị nằm trong khoảng [0, 100]. • Kiểm tra xem dữ liệu có phải sắp tăng dần theo con số định danh (id) hay không. • Kiểm tra xem dữ liệu có phải sắp tăng dần theo thời điểm (epoch) hay không. • Thời điểm sớm nhất trong tập dữ liệu là khi nào. • Thời điểm lớn nhất trong tập dữ liệu là khi nào. • Tổng số dòng dữ liệu còn lại là bao nhiêu. • Phân bố của dữ liệu về độ Nm Thực hiện tiền xử lý xong chúng tôi có kết quả như sau: • Tổng số dòng dữ liệu còn lại sau khi xóa các dòng không đủ dữ liệu và các dòng không thỏa điều kiện về id hoặc về humidity: 1920908. Kích thước tập tin dữ liệu: 85MB (kích thước tập tin dữ liệu trước khi xử lý là khoảng 150MB). • Có 52 nút cảm ứng, có id trong khoảng từ 1 đến 54. 54 • Dữ liệu được sắp tăng dần theo id. Trong mỗi id, dữ liệu sắp tăng dần theo epoch, nghĩa là tăng dần theo thời gian. • Thời điểm sớm nhất trong tập dữ liệu: 00:58:46 ngày 28/02/2004 • Thời điểm trễ nhất trong tập dữ liệu: 07:48:44 ngày 03/04/2004 • Phân bố của dữ liệu về độ Nm trước khi tiền xử lý Hình 3-4 Phân bố của dữ liệu thực nghiệm 55 • Phân bố của dữ liệu về độ Nm sau khi tiền xử lý Hình 3-5 Mật độ của dữ liệu thực nghiệm Hình 3-6 Tần số của dữ liệu thực nghiệm Rõ ràng ta thấy các giá trị độ Nm chỉ nằm trong khoảng [0,60], với các giá trị thống kê mổ tả mẫu là: mean = 39.26326, variance = 50.12565, median = 40.4328, standard deviation = 7.079947 56 3.5.3. Kết quả thử nghiệm Dữ liệu được ghi nhận ở các nút cảm ứng và gửi về nút lưu trữ theo khoảng thời gian định kỳ. Chúng tôi thực hiện thử nghiệm với khoảng thời gian định kỳ là 10 phút, và xét 4 lần gửi dữ liệu liên tiếp nhau. Ứng với từng thời điểm (epoch), chúng tôi lấy tất cả các dữ liệu và thực hiện: • Vẽ histogram ứng với dữ liệu lấy được, ứng với cột bên trái của các hình vẽ sau đây. • Thực hiện biến đổi phân phối của dữ liệu lấy được theo phương pháp Histogram. Hàm băm sử dụng khi thực hiện biến đổi là SHA1, tuy nhiên chỉ sử dụng 3 byte đầu nên tính ngẫu nhiên không cao. Sau đó vẽ histogram ứng với dữ liệu đã biến đổi, ứng với cột bên phải của các hình vẽ sau đây. 57 Hình 3-7 Phân bố dữ liệu trước và sau khi áp dụng phương pháp Histogram với khoảng thời gian định kỳ là 10 phút 58 Với khoảng thời gian định kỳ là 60 phút, kết quả được thể hiện trong hình vẽ sau: Hình 3-8 Phân bố dữ liệu trước và sau khi áp dụng phương pháp Histogram với khoảng thời gian định kỳ là 60 phút 59 Như vậy, phân bố của dữ liệu sau khi biến đổi không giúp suy đoán ra được phân bố của dữ liệu gốc ban đầu. Ngoài ra, chúng tôi cũng cài đặt heuristic tìm hệ số của đa thức thứ k khi biết ma trận M tương ứng với các điều kiện ràng buộc.

Các file đính kèm theo tài liệu này:

  • pdf6_4.pdf
  • pdf0_2.pdf
  • pdf1_2.pdf
  • pdf2_2.pdf
  • pdf3.pdf
  • pdf4.pdf
  • pdf5_2.pdf
  • pdf7.pdf
  • pdf8.pdf