Gruteser và Grunwald đề xuất một kỹ thuật giao tiếp ẩn danh sử dụng cho một dịch vụ dựa trên vị trí. Trong cách dùng này, một ngƣời dùng không gửi dữ liệu vị trí của anh ta không có sự thay đổi thu đƣợc bởi GPS đến nhà cung cấp dịch vụ nhƣng gửi nó với thông tin chính xác, điều này bị hạn chế. Hình 3.3(a) minh họa một ví dụ của cách sử dụng này. Trong Hình 3.3, ngƣời dùng này không gửi “Tôi ở một vị trí” nhƣng thay vào đó gửi “Tôi ở một vùng màu xám”. Nhà cung cấp dịch vụ có thể chỉ học những chi tiết không rõ ràng của vị trí ngƣời dùng trong cách này. Vì vậy, cách sử dụng này làm tăng vị trí ẩn danh.
Hình 3.3. Hai kỹ thuật giao tiếp ẩn danh cho LBS
Tuy nhiên, cách tiếp cận này gặp phải vấn đề sau: Ngƣời theo dõi có thể dễ dàng hiểu đƣợc sự di chuyển của ngƣời dùng theo dấu về dữ liệu trong vài
phút bởi vì chuỗi dữ liệu vị trí tạo ra một bản đƣờng đi, nhƣ ở Hình 3.3(a). Hơn nữa, nếu vị trí chính xác của dữ liệu bị giảm, độ chính xác của dịch vụ có thể cũng sẽ bị giảm. Kỹ thuật đƣợc đề xuất sau đây sẽ giải quyết vấn đề này: giải thuật sinh vật giả.
3.4.1. Ý tưởng chính
Cách sử dụng của Gruteser có một vấn đề: kẻ địch có thể dễ dàng hiểu đƣợc sự di chuyển của ngƣời dùng khi quan sát dấu vết của dữ liệu trong vài phút. Để giải quyết vấn đề này, phải có vài dữ liệu vị trí khác nhau để không phân biệt đƣợc với dữ liệu vị trí đúng của ngƣời dùng [9].
Dựa vào ý tƣởng này, một kỹ thuật giao tiếp ẩn danh mới đƣợc đề xuất cho LBSs trong trƣờng hợp ngƣời dùng gửi dữ liệu vị trí bao gồm nhiễu tới nhà cung cấp dịch vụ. Nhiễu này bao gồm một tập các dữ liệu vị trí sai gọi là “các vật giả - dummies”. Ở đây, tác giả miêu tả việc sử dụng ẩn danh LBSs nhƣ thế nào với kỹ thuật này.
Hình 3.4. Ví dụ của ẩn danh LBS sử dụng kỹ thuật này
Hình 3.4. minh họa một ví dụ của ẩn danh LBS sử dụng kỹ thuật này. Lx =
(Xx , Yx) biểu diễu vị trí dữ liệu tại vị trí x. Một tin nhắn yêu cầu (S) từ ngƣời
dùng gửi đến nhà cung cấp dịch vụ đƣợc định nghĩa nhƣ sau:
S = (u, L1, L2, …, Lm),
Trong đó u biểu diễn ID của ngƣời dùng và (L1, L2, …, Lm) biểu diễn một tập dữ liệu vị trí gồm một dữ liệu vị trí đúng và m-1 vật giả. Ví dụ, S bao gồm
(u, Lr, L1,L2) trong Hình 3.4. Mặt khác, một tin nhắn dịch vụ trả lời từ nhà cung
cấp dịch vụ gửi tới ngƣời dùng đƣợc định nghĩa nhƣ sau:
Trong đó (D1, D2,… ,Dm) biểu diễn nội dung của dịch vụ tƣơng ứng với (L1, L2,… ,Lm). Ví dụ, R gồm ((Lr, Dr), (L1, D1),(L2, D2)) nhƣ trong Hình 3.4, quy trình của dịch vụ từ lúc bắt đầu đến khi kết thúc nhƣ sau:
1. Thiết bị định vị thu đƣợc dữ liệu vị trí r của ngƣời dùng. 2. Các vật giả đƣợc sinh ra ở vị trí 1 và 2.
3. Ngƣời sử dụng tạo ra một tin nhắn yêu cầu S gồm dữ liệu ở r, 1, và 2; ngƣời dùng gửi S tới nhà cung cấp dịch vụ.
4. Nhà cung cấp dịch vụ tạo ra tin nhắn trả lời R phù hợp với tất cả dữ liệu vị trí nhận đƣợc và gửi R tới ngƣời dùng.
5. Ngƣời dùng nhận R và chỉ việc lựa chọn dữ liệu cần thiết từ R.
Ngƣời dùng biết đƣợc dữ liệu vị trí thực nhƣng nhà cung cấp dịch vụ thì không. Vì vậy, nhà cung cấp dịch vụ không phân biệt đƣợc dữ liệu đúng từ tập dữ liệu vị trí nhận đƣợc. Trong cách này, ẩn danh dịch vụ đƣợc hoàn thành. Hình 3.3(b) mình họa một ví dụ của kỹ thuật này. Ngƣời dùng gửi dữ liệu vị trí ở vùng màu xám giống nhƣ ở Hình 3.3(b), nhƣng ngƣời dùng sinh ra 2 vật giả khác với (a). Các vật giả này có thể di chuyển theo hƣớng khác với dữ liệu vị trí đúng. Do đó, việc hiểu đƣợc di chuyển của ngƣời dùng là khó khăn hơn. Đúng vậy, bởi những ngƣời dùng khác đồng thời gửi dữ liệu vị trí, ngƣời dùng đƣợc an toàn hơn.
3.4.2. Giải thuật sinh vật giả
Các vật giả phải đƣợc sinh để chúng không phân biệt đƣợc với dữ liệu đúng. Trong một vài LBSs, nhƣ dịch vụ dẫn đƣờng, ngƣời dùng phải gửi dữ liệu vị trí liên tục. Nói chung, khoảng cách mỗi đối tƣợng có thể di chuyển trong một thời gian cố định bị giới hạn. Nếu các vật giả đƣợc sinh ra ngẫu nhiên, ngƣời quan sát có thể dễ dàng tìm ra sự khác nhau giữa dữ liệu vị trí thực và các vật giả. Trong trƣờng hợp này, vị trí ẩn danh bị giảm. Để tránh điều này, vật giả phải không có các hành động hoàn toàn khác với dữ liệu vị trí đúng. Tác giả nghiên cứu hai giải thuật sinh vật giả để ngăn chặn nhà cung cấp dịch vụ tìm thấy dữ liệu vị trí đúng. Trong các giải thuật này, vị trí của vật giả đầu tiên đƣợc quyết định ngẫu nhiên vì các giải thuật này sử dụng vị trí các vật giả trƣớc đó. [5]
(7)Giải thuật di chuyển trong một vùng lân cận (MN)
Trong giải thuật này, vị trí tiếp theo của các vật giả đƣợc quyết định trong một vùng lân cận của vị trí hiện tại của vật giả. Hình 3.5 minh họa các vật giả theo giải thuật này. Thiết bị giao tiếp của ngƣời dùng ghi nhớ vị trí
trƣớc đó của mỗi vật giả. Sau đó thiết bị sinh ra các vật giả xung quanh vùng nhớ này.
Hình 3.5. Minh họa 2 giải thuật sinh vật giả
+ Giải thuật di chuyển trong một vùng lân cận // giai thuat MN:
// input: vị trí của các vật giả tại thời điểm t-1 // output: vị trí của các vật giả tại thời điểm t // RandomNumber(x,y): sinh ra một số ngẫu nhiên trong khoảng giữa x và y
struct dummy {
public double x; // tọa độ x public double y; // tọa độ y public double t; // thời gian }
static int RandomNumber(int min, int max) {
Random random = new Random(); return random.Next(min, max); }
static void MN(double m, int n) {
dummy[] prev = new dummy[100]; dummy[] next = new dummy[100]; //đọc prev[] đưa vào input for (int i = 1; i < n; i++) {
next[i].x = RandomNumber(prev[i].x - m, prev[i].x + m);
next[i].y = RandomNumber(prev[i].y - m, prev[i].y + m);
} }
(8) Giải thuật di chuyển trong một vùng giới hạn lân cận (MLN)
Trong giải thuật này, vị trí tiếp theo của vật giả cũng đƣợc quyết định trong vùng lân cận của vật giả. Tuy nhiên vị trí tiếp theo đƣợc giới hạn bởi mật độ của vùng này. Giải thuật này thích hợp trong các trƣờng hợp thiết bị giao tiếp của ngƣời dùng có thể lấy dữ liệu của các ngƣời dùng khác. Một ví dụ của các vật giải thích hợp với kỹ thuật này đƣợc minh họa trong hình 6(b). Đầu tiên, thiết bị sinh các vật giả xung quanh vùng nhớ giống nhƣ giải thuật MN. Nếu có nhiều ngƣời dùng trong vùng đƣợc sinh, thiết bị lại sinh vật giả. Quá trình đƣợc lặp lại vài lần.
// giai thuat MLN:
// input: vị trí của các vật giả tại thời điểm t-1 // output: vị trí của các vật giả tại thời điểm t // RandomNumber(x,y): sinh ra một số ngẫu nhiên trong khoảng giữa x và y
// position(x,y): trả về số dữ liệu vị trí thuộc (x,y,t-1)
struct dummy {
public double x; // tọa độ x public double y; // tọa độ y public double t; // thời gian }
static void MLN (int aveP, double m, int n){ dummy[] prev = new dummy[100];
dummy[] next = new dummy[100];
int k = 0; // đếm số lần lặp (mặc định là 3) //đưa prev[] vào input
for (i=1;i<n;i++){
next[i].x = random( prev[i].x-m, prev[i].x)+m); next[i].y = random( prev[i].y-m, (prev[i].y+m); next[i].t = (prev[i].t)++;
if (position(next[i].x, next[y].y) > aveP){ if (k<=3){ k++; continue;} else k=0;} }
//output các nội dung của next[] }
Định nghĩa Shift(P) là một độ đo, ƣớc lƣợng hai giải thuật. Shift(P) chỉ rõ một điểm khác của P trong mỗi vùng giữa thời gian t và t+1. Nếu số ngƣời thay đổi lớn trong một vùng, thì khả năng cao là vật giả di chuyển mạnh so với dữ liệu vị trí thực, tạo ra một rủi ro rằng ngƣời quan sát có thể tìm thấy dữ liệu vị trí thực. Vì thế, nó không làm tăng vị trí ẩn danh. Nói cách khác, khi Shift(P) giảm, vị trí ẩn danh cao.