(b) truy vấn trên dữ liệu mã của CryptDB [60]
Một truy vấn trong CryptDB thực hiện qua bốn bước:
❼ Ứng dụng gởi truy vấn đến máy chủ trung gian và sẽ được proxy viết lại: nó sẽ ẩn danh tên bảng và cột, và sử dụng khóa MK mã hoá các thành phần cố định trong truy vấn với một lược đồ mã hóa thích hợp nhất cho các tính toán mong muốn. Proxy cũng thay thế một số phép toán với hàm do người dùng định nghĩa (User Defined Function - UDF).
lớp mã hóa trước khi thực hiện truy vấn, nếu như vậy, một truy vấn UPDATE tại server sẽ gọi một UDF để điều chỉnh lớp mã hóa của các cột cho thích hợp.
❼ Proxy sẽ gửi truy vấn được mã hóa đến server.
❼ Server trả về kết quả truy vấn mã hóa, proxy giải mã và trả kết quả về cho ứng dụng.
Li và cộng sự [50] đề xuất phương pháp hỗ trợ truy vấn mờ (fuzzy query) gọi là L-EncDB. Trong mô hình lưu trữ L-EncDB, Li đã mã hóa từng ký tự trong chuỗi. Giả sử chuỗi t = t1||t2||...||tn, thì các từ t1, t2, ..., tn được thay thế bằng các giá trị mã của hàm FQE. Trong đó, hàm FQE được thực hiện bằng cách: Đầu tiên, duyệt các ký tự trong chuỗi và thêm vào các ký tự l giá trị 1, nghĩa là str ← ti||{11...1} và mã hóa chuỗi str thành chuỗi str′ bằng mã hóa FPE, sau đó băm chuỗi str′ thành một số nguyên và chuyển số nguyên này thành ký tự Unicode. Li gọi thuật toán mã từng ký tự là gen(c). Khi đó giá trị mã của chuỗi t là F QEk(t) = gen(t1)||gen(t2)||...||gen(tn). Để thực hiện truy vấn mờ, tầng ứng dụng của L-EncDB chuyển đổi giá trị rõ của từ khóa thành giá trị mã bằng hàm F QEk(x), sau đó đưa vào câu truy vấn. Giả sử câu truy vấn rõ là: "SELECT * FROM Table1 WHERE Field1 LIKE ’%key1 %key2 %’" sẽ được chuyển thành: "SELECT * FROM Table1 WHERE Field1Extra LIKE ’%F QEk(key1)%F QEk(key2)%’". Khi có kết quả trả về, tầng ứng dụng sẽ giải mã trả về kết quả rõ cho người dùng. Nhận xét 2.1 Mã hóa dữ liệu sẽ làm tăng sự phức tạp trong truy vấn dữ liệu, ảnh hưởng nhiều đến thời gian đáp ứng của CSDL. Với bảng kết quả trả về có n dòng và m cột thì phương pháp của Hacigumus tốn n lần giải mã, phương pháp của Popa là (n×m) lần giải mã, còn phương pháp của Li là (n× m ×k) lần giải mã, với k là chiều dài trung bình của chuỗi. Nếu số lượng bản ghi trả về lớn thì thời gian tăng đáng kể so với phương pháp truy vấn trên dữ liệu rõ. Như vậy, muốn ứng dụng hiệu quả các phương pháp truy
vấn trên dữ liệu mã vào thực tế để đảm bảo an toàn cho ODBS thì cần giảm thời gian truy vấn càng nhiều càng tốt.
2.2.2. Giảm thời gian khi truy vấn trên CSDL mã
Để giảm thời gian truy vấn trên CSDL, các nhà khoa học đã đề xuất những phương pháp khác nhau. Q.Zhang và cộng sự đề xuất công cụ Qscheduler [89] để truy vấn song song trên hệ thống CSDL. Tuy nhiên, giải pháp này thực hiện trên CSDL rõ và thực hiện song song các câu truy vấn cùng lúc truy xuất đến CSDL. Ying-Fu Huang [39] cũng đưa ra phương pháp truy vấn song song trên dữ liệu rõ và thực hiện các phép giao, nối, sắp xếp, nhóm,. . . của các bảng dữ liệu. Samraddhi Shastri [67] đưa ra giải pháp tăng tốc trên dữ liệu mã, tuy nhiên, phương pháp này thực hiện truy vấn song song tìm kiếm nhị phân trên dữ liệu mã. Nghĩa là, nếu muốn sử dụng phương pháp của Shastri thì các bản ghi dữ liệu phải được sắp xếp theo thứ tự.
Trong quá trình truy vấn trên dữ liệu mã, có nhiều tiến trình xử lý như: Giải mã kết quả rồi loại bỏ các bản ghi không phù hợp hoặc tính toán lại, giải mã kết quả sau truy vấn trả dữ liệu rõ cho người dùng. Các tiến trình này đều được xử lý trên tập dữ liệu quan hệ (bảng) của CSDL nên có thể dùng phương pháp xử lý song song để tính toán bằng cách chia quan hệ thành các tập con và xử lý đồng thời. Phương pháp này sẽ giảm đáng kể thời gian thực hiện truy vấn trên CSDL mã (hình 2.6).
Máy chủ trung gian
CSDL mã hóa Kết quả rõ Người dùng Internet Nhà cung cấp dịch vụ Trả dữ liệu mã cho truy vấn D R D1 D2 Dn R1 R2 Rn Giải mã và tính toán Giải mã và tính toán Giải mã và tính toán