Mã hóa trong CryptDB

Một phần của tài liệu Xử lý và mã hóa bảo mật dữ liệu trên điện toán đám mây (Trang 40)

Phần này mô tả các loại mã hóa mà CryptDB sử dụng. Mỗi loại mã hóa sẽ được làm rõ đặc điểm an toàn, chức năng, và cách mà nó được thực hiện.

Random (RND). RND cung cấp bảo mật tối đa trong CryptDB: an toàn

ngữ nghĩa dưới một tấn công lựa chọn bản rõ thích ứng - IND-CPA, hai giá trị bằng nhau được ánh xạ tới hai bản mã khác nhau. Mặt khác, RND không cho phép bất cứ sự tính toán nào được thực hiện hiệu quả trên bản mã. Một cấu trúc hiệu quả của RND là sử dụng mã hóa khối như AES hoặc Blowfish trong chế độ CBC với một vector khởi tạo ngẫu nhiên (IV). (hầu như sử dụng AES, ngoại trừ các giá trị nguyên, Blowfish được sử dụng với kích thước khối là 64 bit vì khối 128 bit của AES sẽ khiến cho bản mã dài hơn đáng kể). Lớp mã hóa này cho phép máy chủ thực hiện các truy vấn SELECT không có điều kiện.

32

Deterministic (DET). DET có một đảm bảo hơn yếu hơn, nhưng nó vẫn cung cấp bảo mật mạnh mẽ: nó chỉ rò rỉ các giá trị mã hóa tương ứng với giá trị cùng một dữ liệu, bằng cách sinh ra cùng bản mã cho cùng bản rõ. Lớp mã hóa này cho phép server thực hiện các equality checks, có nghĩa là nó có thể thực hiện SELECT … WHERE …, GROUP BY, IN, COUNT, DISTINCT,…

Trong giới hạn mật mã, DET là một phép hoán vị giả ngẫu nhiên (pseudo- random permutation – PRP – hay còn gọi là Block ciphers). Với các giá trị 64 bit và 128 bit, một mã hóa khối với một kích thước khối phù hợp được sử dụng (Blowfish và AES tương ứng). Các giá trị nhỏ hơn 64 bít sẽ được đệm (padding), nhưng với dữ liệu dài hơn một khối AES 128 bit, chế độ CBC tiêu chuẩn của phép toán sẽ rò rỉ tiền tố bằng nhau (ví dụ, nếu hai mục dữ liệu có một tiền tố đồng nhất dài ít nhất 128 bit). Để tránh vấn đề này, AES được sử dụng với biến thể của chế độ CMC [7].

Order-preserving encryption (OPE). OPE cho phép quan hệ thứ tự giữa

các mục dữ liệu được thiết lập dựa theo các giá trị mã hóa của chúng mà không tiết lộ dữ liệu của chính nó. Nếu x < y, thì OPEK(x) < OPEK(y), với bất cứ khóa bí mật K nào. Vì thế, nếu một cột được mã hóa với OPE, server có

thể thực hiện các truy vấn sắp xếp (range queries) khi các hằng số được mã hóa đã cho OPEK(c1) và OPEK(c2) tương ứng với khoảng [c1, c2]. Server cũng có thể thực hiện ORDER BY, MIN, MAX, SORT, vv…

OPE là một lược đồ mã hóa yếu hơn DET vì nó để lộ thứ tự. Do đó, CryptDB proxy sẽ chỉ để lộ các cột được mã hóa OPE cho máy chủ nếu những người dùng yêu cầu các truy vấn thứ tự (order queries) trên các cột đó. Thuật toán mã hóa của Boldyreva [8] được sử dụng giúp OPE đạt được những đảm bảo an toàn có thể chứng minh được: mã hóa tương đương với một ánh xạ ngẫu nhiên duy trì thứ tự.

Homomorphic encryption (HOM). HOM là một lược đồ mã hóa cho

phép máy chủ thực hiện các tính toán trên dữ liệu mã hóa với kết quả cuối dùng được giải mã tại proxy. Trong khi mã hóa đồng cấu đầy đủ (fully homomorphic encryption) phục vụ chậm [9], mã hóa đồng cấu cho các phép toán cụ thể có hiệu quả hơn. Để hỗ trợ tính tổng của các giá trị nguyên, hệ mật Paillier [10] được thực hiện, với Paillier, kết quả của phép nhân các mã hóa

33

của hai giá trị dẫn tới kết quả là một mã hóa của tổng các giá trị đó, ví dụ, HOMK(x) * HOMK(y) = HOMK(x + y), với phép nhân được thực hiện modulo một vài giá trị khóa công khai. Để tính các hàm tập hợp SUM, proxy thay thế SUM với các lời gọi tới một UDF thực hiện phép nhân Paillier trên một cột được mã hóa với HOM. HOM cũng có thể được sử dụng để tính toán giá trị trung bình bằng cách DBMS server trả về giá trị tổng (sum) và đếm (count) riêng biệt.

Join (Equi-JOIN và OPE-JOIN). Một lược đồ mã hóa riêng là cần thiết

để phục vụ cho phép kết hợp (joins) giữa hai cột vì CryptDB sử dụng các key khác nhau cho DET để ngăn chặn các mối tương quan giữa các cột. Equi- JOIN hỗ trợ tất cả các phép toán mà DET cho phép và cũng cho phép máy chủ xác định những giá trị lặp lại giữa hai cột. OPE-JOIN cho phép các liên kết dựa trên các mối liên hệ thứ tự.

Word search (SEARCH). SEARCH được sử dụng để thực hiện các tìm

kiếm trên văn bản được mã hóa để hỗ trợ các truy vấn như LIKE của MySQL chẳng hạn. Giao thức mã hóa của Song [11] được sử dụng theo một cách khác, dẫn tới kết quả là một đảm bảo an toàn tốt hơn. Cho mỗi cột cần SEARCH, văn bản được chia thành các từ khóa sử dụng các ký tự phân cách tiêu chuẩn (hoặc sử dụng một chức năng trích ra từ khóa đặc biệt được quy định bởi người phát triển lược đồ). Sau đó những từ lặp lại được loại bỏ, hoán vị ngẫu nhiên vị trí của các từ và rồi mã hóa mỗi từ sử dụng lược đồ của Song, đệm (padding) mỗi từ cho cùng kích thước. SEARCH có mức độ an toàn gần như RND: mã hóa ko để lộ cho máy chủ DBMS bất kể một từ nào đó được lặp đi lặp lại trong nhiều hàng, nhưng nó rò rỉ số lượng từ khóa được mã hóa với SEARCH; kẻ xấu có thể ước lượng số lượng các từ khác biệt hoặc trùng lặp (ví dụ, bằng cách so sánh kích thước của các bản mã SEARCH và các bản mã RND của cùng dữ liệu).

Chú ý răng SEARCH chỉ cho phép CryptDB thực hiện các tìm kiếm từ khóa từ đầy đủ (full-word keyword searches); nó không thể hỗ trợ các biểu thức chính quy tùy ý. Với các ứng dụng yêu cầu tìm kiếm nhiều từ liền kề, CryptDB cho phép nhà phát triển ứng dụng vô hiệu hóa việc loại bỏ trùng lặp và sắp xếp lại bằng cách chú thích lược đồ, mặc dù đây không phải là mặc

34

định. Sử dụng LIKE hầu hết được SEARCH hỗ trợ với những chú thích như vậy. Tất nhiên, ta vẫn có thể kết hợp nhiều toán tử LIKE với AND hoặc OR để kiểm tra xem nhiều từ độc lập có trong văn bản hay không.

Một phần của tài liệu Xử lý và mã hóa bảo mật dữ liệu trên điện toán đám mây (Trang 40)

Tải bản đầy đủ (PDF)

(90 trang)