Bây giờ ta sẽ tìm hiểu cách mà CryptDB thực thi các truy vấn SQL trên dữ liệu mã hóa nhằm chống lại mối đe dọa từ các DBA xấu của bên thứ ba. Các máy DMBS và những người quản trị không đáng tin cậy, nhưng ứng dụng và proxy là tin cậy.
CryptDB cho phép máy chủ DBMS thực thi các truy vấn SQL trên dữ liệu mã hóa gần như giống với nó được thực thi cùng các truy vấn trên dữ liệu rõ. Các ứng dụng có sẵn không cần thiết thay đổi. Cách tiến hành truy vấn của DMBS cho truy vấn mã hóa thường giống như đối với các truy vấn nguyên gốc, ngoại trừ các toán tử bao gồm truy vấn, chẳng hạn như lựa chọn (selections), phép chiếu (projections), kết hợp (joins), tập hợp (aggregates), và xếp thứ tự (ordering), được thực hiện trên bản mã, và sử dụng các toán tử sửa đổi trong một số trường hợp.
Proxy của CryptDB lưu trữ một secret master key MK, lược đồ cơ sở dữ
31
server chỉ thấy một lược đồ ẩn danh (với tên bảng và tên cột nào được thay thế bởi các định danh hoàn toàn vô nghĩa), dữ liệu người dùng mã hóa, và một vài bảng phụ được CryptDB sử dụng. CryptDB cũng trang bị cho máy chủ với các chức năng người dùng định nghĩa cụ thể cho phép máy chủ tính toán trên các bản mã cho các phép toán nhất định.
Việc xử lý một truy vấn trong CryptDB gồm 4 bước:
Ứng dụng sinh ra một truy vấn, proxy chặn lại và viết lại: để bảo vệ danh tính của các bảng và cột, nó ẩn danh mỗi tên bảng, tên cột, sử dụng master key MK mã hóa mỗi hằng số (constant) trong truy vấn với một lược đồ mã hóa phù hợp nhất cho phép toán mong muốn
Proxy kiểm tra xem liệu máy chủ DBMS có được đưa các key để điều chỉnh các lớp mã hóa trước khi thực thi truy vấn, và nếu có, sinh ra một truy vấn UPDATE tại máy chủ DBMS để gọi một UDF để điều chỉnh lớp mã hóa của các cột thích thợp
Proxy chuyển tiếp truy vấn được mã hóa đến máy chủ DBMS, nơi thực hiện nó sử dụng SQL tiêu chuẩn (đôi khi gọi UDFs cho các hàm tập hợp (aggregation) hoặc tìm kiếm từ khóa).
DBMS server trả về kết quả truy vấn (được mã hóa), proxy sẽ giải mã và trả về cho ứng dụng.