Tổng quan về cơ sở dữ liệu đồ thị thuộc tính
Cơ sở dữ liệu đồ thị [1] là bất kỳ hệ thống lưu trữ nào sử dụng cấu trúc đồ thị với các nút và cạnh, để biểu diễn và lưu trữ dữ liệu
Mô hình đồ thị được sử dụng phổ biến nhất trong ngữ cảnh của cơ sở dữ liệu đồ thị được gọi là mô hình đồ thị thuộc tính - Attributed Graph Model (có nhãn) Mô hình đồ thị thuộc tính chứa các thực thể được kết nối (các nút) có thể chứa bất kỳ số lượng thuộc tính (thuộc tính) được biểu thị dưới dạng cặp khóa-giá trị Các nút và cạnh có thể được gắn thẻ bằng các nhãn thể hiện các vai trò khác nhau của chúng trong miền ứng dụng Một số cách tiếp cận gọi nhãn là loại Nhãn cũng có thể dùng để đính kèm siêu dữ liệu — chỉ mục hoặc thông tin ràng buộc — vào một số nút nhất định
Các mối quan hệ cung cấp các kết nối có hướng, có liên quan về mặt ngữ nghĩa (các cạnh) giữa hai nút Một mối quan hệ luôn có một hướng, một nút bắt đầu và một nút kết thúc Giống như các nút, các mối quan hệ có thể có bất kỳ thuộc tính nào Thông thường, các mối quan hệ có các thuộc tính định lượng, chẳng hạn như trọng lượng, chi phí, khoảng cách, xếp hạng hoặc khoảng thời gian Thuộc tính làm cho các nút và các cạnh mang tính mô tả và thực tế hơn Cả hai nút và cạnh đều được xác định bởi một mã định danh duy nhất
Ví dụ về mô hình đồ thị thuộc tính (Hình 1-1) với các thực thể là: Employee, Company và City Các mối quan hệ là: Company HAS_STAFF Employee { Tên:
“Johnny Chen” ; Năm sinh: 1994 } hay Company LOCATED_IN City
Hình 1-1 Ví dụ về mô hình đồ thị thuộc tính
2 Khi các mối quan hệ được lưu trữ hiệu quả, hai nút có thể chia sẻ bất kỳ số lượng hoặc mối quan hệ nào thuộc các loại khác nhau mà không làm giảm hiệu suất Lưu ý rằng mặc dù chúng được định hướng nhưng các mối quan hệ luôn có thể được điều hướng bất kể hướng nào Trên thực tế, mô hình đồ thị thuộc tính liên quan đến cấu trúc dữ liệu trong lý thuyết đồ thị được gọi là “labelled and directed attributed multigraphs”
Cơ sở dữ liệu đồ thị tập trung vào:
• Xử lý dữ liệu được kết nối tốc độ cao
• Linh hoạt trong các mô hình dữ liệu sử dụng đằng sau các đồ thị được sử dụng
• Hiệu suất đặc biệt cao cho các lần đọc cục bộ, bằng cách duyệt qua cây.
Cơ sở dữ liệu đồ thị Neo4j
Cơ sở dữ liệu đồ thị Neo4j [2] là một cơ sở dữ liệu đồ thị gốc, NoSQL, mã nguồn mở, cung cấp phần phụ trợ giao dịch tuân thủ ACID cho các ứng dụng Sự phát triển ban đầu bắt đầu vào năm 2003, nhưng nó đã được công bố rộng rãi từ năm
2007 Mã nguồn, được viết bằng Java và Scala, có sẵn miễn phí trên GitHub hoặc dưới dạng tải xuống ứng dụng máy tính thân thiện với người dùng Neo4j có cả phiên bản cộng đồng và phiên bản doanh nghiệp của cơ sở dữ liệu Phiên bản doanh nghiệp bao gồm tất cả những gì cộng đồng phải cung cấp, cùng với các yêu cầu bổ sung dành cho doanh nghiệp như khả năng sao lưu, phân cụm và chuyển đổi dự phòng
Neo4j được gọi là cơ sở dữ liệu đồ thị gốc vì nó triển khai hiệu quả mô hình đồ thị thuộc tính xuống cấp lưu trữ Điều này có nghĩa là dữ liệu được lưu trữ chính xác như khi bạn viết bảng trắng và cơ sở dữ liệu sử dụng con trỏ để điều hướng và duyệt qua đồ thị Trái ngược với xử lý đồ thị hoặc thư viện trong bộ nhớ, Neo4j cũng cung cấp các đặc điểm cơ sở dữ liệu đầy đủ, bao gồm tuân thủ giao dịch ACID, hỗ trợ cụm và chuyển đổi dự phòng thời gian chạy - làm cho nó phù hợp để sử dụng đồ thị cho dữ liệu trong các kịch bản sản xuất
Một số tính năng cụ thể sau làm cho Neo4j rất phổ biến trong số các nhà phát triển, kiến trúc sư và nhà quản trị cơ sở dữ liệu:
• Cypher, một ngôn ngữ truy vấn khai báo tương tự như SQL, nhưng được tối ưu hóa cho đồ thị Hiện được sử dụng bởi các cơ sở dữ liệu khác như SAP HANA Graph và Redis graph thông qua dự án OpenCypher
• Constant time traversals (Thời gian ngắn để duyệt) trong đồ thị lớn cho cả chiều sâu và chiều rộng do biểu diễn hiệu quả các nút và mối quan hệ Cho phép mở rộng quy mô lên đến hàng tỷ nút trên phần cứng vừa phải
• Cơ sở dữ liệu đồ thị thuộc tính linh hoạt có thể thích ứng theo thời gian, có thể hiện thực hóa và thêm các mối quan hệ mới sau này để cập nhật và tăng tốc suy suất dữ liệu khi nhu cầu kinh doanh thay đổi
• Trình điều khiển cho các ngôn ngữ lập trình phổ biến, bao gồm Java, JavaScript, NET, Python,…
Các công trình liên quan
Nói về ẩn danh hoá dữ liệu, đầu tiên rất nổi tiếng và đơn giản là mô hình k- anonymity [6] Mô hình đưa ra một ví dụ về tấn công quyền riêng tư như sau Giả sử kẻ tấn công có 2 tập dữ liệu (Hình 1-2 Mô tả về 2 tập dữ liệu) [6]:
• Tập thứ nhất là bảng dữ liệu danh sách bầu cử có tên, địa chỉ, giới tính, số vùng và ngày sinh
• Tập thứ hai là bảng bệnh án bệnh nhân gồm tên bệnh của nhiều bệnh nhân đã xoá đi cột tên, tuy nhiên vẫn còn các cột như giới tính, số vùng và ngày sinh
Dựa vào các cột dữ liệu trùng nhau, kẻ tấn công có thể liên kết dữ liệu của tập dữ liệu thứ nhất qua tập dữ liệu thứ hai để biết chính xác bệnh nhân nào bị bệnh gì, tên gì và địa chỉ ở đâu
Hình 1-2 Mô tả về 2 tập dữ liệu
Từ đó, trong ví dụ này, tên bệnh thuộc tập các cột dữ liệu nhạy cảm Thêm nữa, bài báo xem các cột: giới tính, số vùng và ngày sinh là tập các thuộc tính bán định danh hay còn gọi là tập quasi-identifier Nghĩa là nếu ai đó có được dữ liệu gồm giới tính, số vùng và ngày sinh thì sẽ có thể xác định lại một người cách liên kết lại các dữ liệu từ bảng thứ hai về bảng thứ nhất Để giải quyết cho vấn đề này, mô hình k-anonymity với ý tưởng chính như sau Một tập dữ liệu được cho là thoả k-anonymity nếu thông tin của mỗi người không thể phân biệt được với ít nhất k - 1 cá nhân có thông tin cũng xuất hiện trong đó Ví dụ,
6 dữ liệu sẽ được biến đổi thoả mô hình k-anonymity (Hình 1-3 Bảng dữ liệu đã biến đổi để thoả mô hình k-anonymity với k=2) [6] với k = 2
Hình 1-3 Bảng dữ liệu đã biến đổi để thoả mô hình k-anonymity với k=2
Tuy nhiên, mô hình k-anonymity vẫn có những điểm yếu nhất nhất định của nó như có thể bi tấn công dựa trên kiến thức đã biết hay bị tấn công đồng nhất Điều này dẫn đến mô hình khắc phục dạng tấn công đồng nhất cho k-anonymity, là mô hình l- diversity [7]
Mô hình l-diversity với ý tưởng chính là: Một lớp dữ liệu thỏa mãn mô hình l- diversity khi có ít nhất L giá trị biểu diễn tốt phân biệt cho thuộc tính nhạy cảm Mô hình l-diversity có ưu điểm là có thể cản trở kẻ tấn công tận dụng phân phối toàn cục của tập dữ liệu với các giá trị dữ liệu của thuộc tính để suy ra thông tin về các giá trị dữ liệu nhạy cảm Tuy nhiên trong tập dữ liệu thực, các giá trị thuộc tính có thể bị lệch hoặc tương tự về mặt ngữ nghĩa vì vậy mô hình t-closeness được đề xuất để để khắc phục nhược điểm đó
Mô hình t-closeness: Một lớp tương đương được cho là thoả t-closeness nếu khoảng cách giữa phân phối của một thuộc tính nhạy cảm trong lớp này và phân phối của thuộc tính trong toàn bộ bảng không quá ngưỡng t Một bảng được cho thỏa t- closeness nếu tất cả các lớp tương đương thoả t-closeness [8]
Hỗ trợ xây dựng mô hình k-anonymity trên có thể hiện thực bằng các thuật như: Suppression hay Generalization [9] Với kỹ thuật Generalization là kỹ thuật tổng quát hoá dữ liệu, ví dụ ta có 1 giá trị ngày sinh trong bảng dữ liệu là ‘24-01-1994’ chúng ta có thể tổng quát hoá lại thành ‘01-1994’ hay ‘1994’ hay ‘19**’ Với kỹ thuật Suppression ta sẽ loại bỏ những giá trị trong bảng dữ liệu Ví dụ (Hình 1-4 Ví dụ minh hoạ kỹ thuật Suppression) [9]
Hình 1-4 Ví dụ minh hoạ kỹ thuật Suppression
Tổng quát các vấn đề thì có công trình “Graph-Based Privacy-Preserving Data Publication” [10] Bài báo đề xuất một framework bảo vệ quyền riêng tư dữ liệu mở bao gồm nhiều kiểu dữ liệu như mạng xã hội, định nghĩa mạng ẩn danh và các độ đo hỗ trợ.
Cây khái quát hoá (Generalization hierarchy)
Việc ẩn danh hoá còn được kết hợp với việc mã hoá bằng cây khái quát [11] Cách mã hoá này có thể áp dụng cho dữ liệu có tính liên tục như số hoặc rời rạc Ý
8 tưởng của việc áp dụng cây khái quát nhầm mục tiêu loại bỏ các bảng ghi vi phạm quyền riêng tư và thay thế bằng dữ liệu khái quát hơn trong một cây
Ví dụ dữ liệu là màu sắc có khoảng từ 8 màu
Cấp 0: 4 nhóm gồm: “xanh”, “đỏ”, “tím”, “vàng”
Cấp 1: 2 nhóm gồm “xanh-đỏ” và “tím-vàng”
Cấp 2: Chia thành 1 nhóm “màu” (tất cả giá trị được khái quát hoá về 1 giá trị màu)
Với giá trị đỏ và khái quát hoá cấp 1 thì giá trị sẽ được mã hoá thành nhãn
“xanh-đỏ” Như vậy việc biến đổi giá trị với cấp độ khái quát càng cao, thì mức độ đảm bảo quyền riêng tư càng tốt Lúc này cây khái quát sẽ được biểu diễn (Hình 1-5
Ví dụ cây khái quát) như sau:
Thuật toán graph pertubation
Thuật toán graph pertubations [12] thuộc nhóm thuật toán nhiễu loạn ngẫu nhiên Đồ thị mới Gp = (Vp, Ep) được xây dựng từ Gna thông qua một chuỗi xóa m cạnh sau đó là chèn m cạnh Các phép xóa được chọn ngẫu nhiên đồng nhất từ tập hợp tất cả các cạnh tồn tại trong Gna Các phần chèn được chọn ngẫu nhiên đồng nhất từ tập hợp tất cả các cạnh không tồn tại của đồ thị tạm thời.
Thuật toán ẩn danh k-Degree anonymity
Nổi bật gần đây nhất có công trình lớn về ẩn danh đồ thị là “Towards Plausible Graph Anonymization” [13] Bài báo chỉ ra điểm yếu nổi bật nhất của các thuật toán ẩn danh đồ thị đó là: Khi tạo ra thêm các cạnh giả trong đồ thị, thuật toán không tính đến các đặc điểm chính của cấu trúc đồ thị, cụ thể như “Vấn đề dự đoán liên kết cho
9 mạng xã hội” [14] Từ đó, bài báo đề xuất ra các giải thuật, nổi bật trong đó là giải thuật k-Degree anonymity [15]
Do k-Degree anonymity đáp ứng được khái niệm chính là mô hình k-anonymity trong cơ sở dữ liệu riêng tư mà vẫn hạn chế thay đổi dữ liệu ban đầu nên ứng dụng tập trung vào triển khai k-Degree anonymity Giải thuật giả định rằng kẻ tấn công có kiến thức trước về số liên kết nút mục tiêu trong mạng xã hội, cụ thể như biết được số lượng liên kết bạn bè của mục tiêu để xác định được mục tiêu Để gảm thiểu điểm yếu này k-Degree anonymity sửa đổi đồ thị ban đầu, sao cho tạo ra đồ thị ẩn danh, mỗi người chia sẻ cùng một mức độ (degree) với ít nhất k -1 người dùng khác
2 CÁC PHƯƠNG PHÁP ĐỀ XUẤT Ứng dụng có 2 chế độ cho người dùng ẩn danh hoá dữ liệu cá nhân ở các nút của đồ thị với thuật toán k-anonymity và l-diversity, gồm:
• Run with Optimal Method - Ứng dụng sẽ dùng thuật toán Mondrian Multidimensional [16] để ẩn danh hoá dữ liệu
• Run with Manually Configs - Ứng dụng sẽ dùng các thông số người dùng cung cấp để ẩn danh hoá dữ liệu Ứng dụng còn dùng thêm thuật toán để ẩn danh đồ thị là thuật toán k-Degree Anonymity
Sau quá trình ẩn danh hoá, ứng dụng tiến hành áp dụng các độ đo phổ biến để đánh giá kết quả là Discernability metric (CDM) [16], Normalized average equivalence class size metric (CAVG) [16] và Information loss of Generalization [17] Ứng dụng sử dụng ngôn ngữ Cypher để truy xuất và lưu trữ dữ liệu trong cơ sở dữ liệu đồ thị Neo4j trong quá trình ẩn danh hoá dữ liệu.
Thuật toán Mondrian Multidimensional K-Anonymity
Thuật toán Mondrian [16] là 1 thuật toán greedy partitioning algorithm Giống như xây dựng kd-tree, độ phức tạp thời gian là O (nlogn), trong đó n = | T | Thuật toán kiểm tra nếu có thể phân chia 1 phân vùng thì sẽ tìm giá trị trung bình của phân vùng là điểm phân chia Sau đó thuật toán tiếp tục đệ quy và lấy điểm chia đặt vào phân vùng con bên trái và phân vùng con bên phải để tiếp tục xử lý bằng đệ quy
Cơ chế chính của giải thuật là:
Anonymize(partition) if (no allowable multidimensional cut for partition) return φ : partition → summary else dim ← choose dimension() fs ← frequency set(partition, dim) splitV al ← find median(f s) lhs ← {t ∈ partition : t.dim ≤ splitV al} rhs ← {t ∈ partition : t.dim > splitV al} return Anonymize(rhs) ∪ Anonymize(lhs)
Ví dụ như sau, đối với việc ẩn danh Mondrian có thể khái quát động thành những khoảng chồng lên nhau, tuy nhiên vẫn đảm bảo được mô hình k-anonymization Ví dụ ta có các điểm dữ liệu 2 cột Age và Zipcode Sau khi áp dụng giải thuật có thể minh hoạ như cách phân cụm (Hình 2-1 Ví dụ điểm dữ liệu và áp dụng Mondrian) và kết quả đạt được (Hình 2-2 Bảng dữ liệu sau khi ẩn danh bằng Mondrian)
Hình 2-1 Ví dụ điểm dữ liệu và áp dụng Mondrian
Thuật toán k-Degree anonymity
Ứng dụng áp dụng triển khai với k-Degree vì cách ẩn danh của đảm bảo được đặc trưng cấu trúc của đồ thị và kết quả là đồ thị đã ẩn danh vẫn có thể tích tục được dùng truy vấn bằng ngôn ngữ Cypher trong Neo4j
Thuật toán k-Degree anonymity [15]gồm 2 bước chính như sau: Đầu vào là: đồ thị G(V, E) với tập degree sequence d và số dương k
Bước 1: Từ d, tạo một tập degree sequence 𝑑$ thoả ẩn danh k để độ đo degree anonymization cost:
𝐷 ! &𝑑$, 𝑑( = 𝐿 " (𝑑$ − 𝑑) là nhỏ nhất Bước 2: Từ tập degree sequence 𝑑$ chúng ta tạo ra đồ thị 𝐺0&𝑉, 𝐸0( sao cho
𝑑 #$ = 𝑑$ 𝑣à 𝐸0 ∩ 𝐸 = 𝐸 hoặc phiên bản relaxed là 𝐸0 ∩ 𝐸 ≈ 𝐸
Một số định nghĩa liên quan
Tập d được gọi là tập degree sequence của đồ thị G(V,E) là tập có các phần tử sắp xếp với d(1) ≥ d(2) ≥ … ≥ d(n), với di là độ của một đỉnh trong đồ thị và n là số đỉnh.
Các độ đo kết quả
Discernability metric
Discernability metric (CDM) [16] đã được sử dụng như một độ đo tiêu chuẩn phổ biến trong nhiều nghiên cứu Đây là một số đo bằng tổng hình phạt cho mỗi bản ghi
12 dựa trên kích thước của lớp tương đương chứa bản ghi và đo lường số lượng bản ghi có thể phân biệt được với nhau Công thức như sau:
Với E là một lớp tương đương.
Normalized average equivalence class size metric
Normalized average equivalence class size metric (CAVG) [16] đo lường mức độ tiếp cận của phân vùng trong trường hợp tốt nhất Chỉ số này có nghĩa là chất lượng của dữ liệu ẩn danh được đo bằng kích thước trung bình của các lớp tương đương và mục tiêu của nó là giảm kích thước lớp tương đương trung bình được chuẩn hóa Công thức như sau:
G(𝑘)Với total_records là tổng số bảng ghi, total_quiv_classes là tổng số lớp tương đương và thông số k ẩn danh.
Normalized Certainty Penalty metric
Với cây phân cấp tổng quát hóa ℋ, Normalized Certainty Penalty (NCP) [18] cho một mục i trong ℐ được định nghĩa là:
|ℐ| , 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒 Với 𝚤̃ kí hiệu cho phần tử đã ẩn danh hoá, thuộc một lá của cây ℋ
Và subtr : ℐ̃ → [1, |ℐ|] là hàm đếm số thứ tự cấp độ nốt lá chứa 𝚤̃
Dựa trên hàm này, có thể tính NCP của một tập dữ liệu D như sau:
Degree anonymization cost
Chi phí 𝐿 " (𝑑$ − 𝑑) là chi phí ẩn danh độ, được tính bằng công thức sau:
13 Với 𝑑$ là tập degree sequence đã bị ẩn danh hoá k từ tập d Và d(v) là hàm lấy số độ của đỉnh v.
Các câu truy vấn cơ bản của ngôn ngữ Cypher
Tạo nút trong mạng
Với n là thông tin nút cần tạo
Ví dụ: CREATE (n:Person {name: 'Huy'}) Với “Person” là nhãn của nút n cần tạo và “Huy” là giá trị của thuộc tính name của nút n.
Tạo quan hệ giữa các nút
Cú pháp tạo 1 quan hệ cho 2 nút trong mạng:
WHERE (điều kiện để tìm được a và b)
WHERE a.name = 'Huy' AND b.name = 'Chi'
Giải thích ví dụ: Câu truy vấn trên để tạo 1 quan hệ cho 2 nút có name là Huy và Chi với loại quan hệ là KNOWS Trong thực tế tạm hiểu là người tên Huy biết(KNOWS) người tên Chi Mối quan hệ là biết.
Xoá nút trong mạng
14 MATCH (n:Person {name: ‘Huy’}) DELETE n
Giải thích ví dụ: Xoá nút có thuộc tính name là Huy.
Xoá quan hệ giữa các nút
MATCH (n {name: 'Huy'})-[r:KNOWS]->() DELETE r
Giải thích ví dụ: Xoá mối quan hệ KNOWS của nốt có name là Huy.
Cập nhật giá trị nút
Cập nhật thuộc tính property1 của nút n thành giá trị value1.
Tìm kiếm nút hay quan hệ trong mạng
Tìm kiếm các nút b sao cho có quan hệ r với a
MATCH (a {name: 'Huy'})-[:KNOWS]->(b) RETURN b.name
Tìm tên những người b, mà a tên Huy và a có mối quan hệ KNOWS với b
3 TỔNG QUAN VỀ ỨNG DỤNG
Kiến trúc ứng dụng
Ứng dụng gồm 3 thành phần chức năng chính (Hình 3-1 Kiến trúc ứng dụng):
• Giao diện người dùng là ứng dụng web application – UI Web(Khối số 1)
• Khối API Server để nhận các yêu cầu từ người dùng và điều khiển dòng dữ liệu (Khối số 2)
• Khối ẩn danh hoá dữ liệu để nhận các yêu cầu của người dùng (Khối số 3), đây là nơi tiếp nhận 3 thành phần chính từ yêu cầu là thông số để cấu hình cho
15 các thuật tóan ẩn danh; thông tin cấu hình của cơ sở dữ liệu đồ thị nguồn và đích
• Trong quá trình vận hành, ứng dụng lưu trữ thông tin người dùng tại cơ sỡ dữ liệu NOSQL MongoDb.
Các công nghệ để hiện thực ứng dụng
Yêu cầu hệ thống
Hệ điều hành: Ubuntu version 20.4 hoặc MacOS version 11.4
Thư viện xây dựng giao diện người dùng ReactJS
ReactJS là thư viện lập trình ngôn ngữ JavaScript, nó mở và miễn phí Thư viện đang được bảo trì bởi công ty Facebook và cộng đồng các lập trình viên độc lập ReactJS tập trung vào quản lý trạng thái ứng dụng và render giao diện Thư viện được giới thiệu lần đầu tiên vào ngày 29-05-2013 và được chia sẻ công khai tại https://github.com/facebook/react Ứng dụng sử dụng ReactJS để xây dựng khối giao diện người dùng web application (UI Web).
Phần mềm Node.js
Node.js là phần mềm để viết máy chủ web có tính mở rộng và được viết bằng ngôn ngữ JavaScript Node.js sử dụng kỹ thuật driven-event, tức là hướng điều khiển theo sự kiện và sử lý bắt đồng bộ để tăng hiệu năng ứng dụng Node.js hiện tại được chia sẻ tài liệu cũng như bộ cài đặt tại trang https://nodejs.org/en/ Ứng dụng sử dụng phần mềm Node.js để viết khối máy chủ (API Server) để nhận các yêu cầu từ người dùng thông qua khối giao diện Từ đây mỗi khi có yêu cầu ẩn danh hoá dữ liệu của người dùng, ứng dụng sẽ sinh ra tệp task dạng json và chạy mã
Ngôn ngữ lập trình Python
Python là ngôn ngữ lập trình được tạo ra bởi tác giả Guido van Rossum vào năm 1991 Python cho phép chạy ứng dụng ở dạng thông dịch nên tốt độ triển khai và nâng cấp nhanh cho các yêu cầu xây dựng data pipeline để khai phá dữ liệu Có thể tải và cài đặt tại trang chủ https://www.python.org/ Ứng dụng xây dựng chức năng ẩn danh trong các thư mục có chứa script python khác nhau Từ đấy người dùng dễ nâng cấp cũng như mở rộng ra thêm nhiều thuật toán khác
Tổng quan về mã nguồn ứng dụng
Ứng dụng sử dụng phần mềm git để quản lý mã nguồn và version Mã nguồn được chia sẻ tại https://github.com/tranthehuy/lvtn.git
Cấu trúc thư mục của ứng dụng bao gồm:
• Tệp README.md chứa thông tin cài đặt ứng dụng và chạy các ứng dụng
• Tệp package.json chứa thông tin cài đặt các thư viện node module để hỗ trợ xây dựng khối giao diện người dùng và khối hệ thống web
• Thư mục src và public chứa mã nguồn ReactJS để xây dựng giao diện người dùng
• Thư mục server chứa mã nguồn Node.js để xây dựng khối hệ thống web nhận yêu cầu từ người dùng để sinh task có dạng json
• Thư mục con serve/anonymazation có chứa các thư mục con như: kdegree, manually, morian-k và morian-l Đây là những khối ứng dụng Python script độc lập để nhận các task yêu cầu ẩn danh từ khối hệ thống web.
Chức năng ứng dụng
Ẩn danh hoá dữ liệu bằng giải pháp trên cây khái quát
Chức năng này của ứng dụng sẽ trải qua 3 trang màn hình chính (Hình 3-2 Các bước ẩn danh dữ liệu cây khái quát):
Hình 3-2 Các bước ẩn danh dữ liệu cây khái quát
Quá trình sử dụng trải qua 4 bước sau:
Bước 1: Tại trang 1, chọn cơ sở dữ liệu nguồn cần biến đổi (Source Database), cơ sở dữ liệu sẽ chứa dữ liệu đã ẩn danh (Destination Database) và nhập câu query Cypher Query truy suất danh sách cạnh hay đỉnh để ẩn danh và chọn chế độ ẩn danh là: “Manual Config” Ví dụ: Hình 3-3 Ví dụ chọn Manual Config đã chọn dữ liệu nguồn là “Neo4j Source Database”, dữ liệu đích là “Neo4j Destination Database 2” và câu query “MATCH (n) RETURN * LIMIT 1001” Câu query có ý nghĩa là lấy
Hình 3-3 Ví dụ chọn Manual Config
Bước 2: Tại trang 1, chọn cấu hình các thuộc tính sẽ ẩn danh, loại dữ liệu các thuộc tính và cấu hình cây khái quát từng thuộc tính Sau khi cấu hình xong người dùng sẽ nhấn nút “Choose solution in Generation Hierarchy” để qua bước tiếp theo
Ví dụ: Hình 3-4 Cấu hình cây khái quát đã chọn 2 thuộc tính native-country và hours-per-week để ẩn danh hoá Với thuộc tính native-country có gíá trị là rời rạc và hours-per-week có giá trị là số liên tục Cây khái quát của từng giá trị là:
Với thuộc tính native-country cây khái quát là: [[["United-States" , "Mexico" ,
"Philippines" , "Puerto-Rico" , "Japan" , "Laos" , "Italy" , "Nicaragua" , "Jamaica" ,
1 Trang cấu hình chạy thuật toán
2 Trang lựa chọn giải pháp ẩn danh
"Hong" , "France"],["?" , "Dominican-Republic" , "Thailand" , "Vietnam" , "India" ,
"England" , "Canada" , "Honduras" , "Ecuador" , "Greece" , "Holand-
Netherlands"]],[["Peru" , "Ireland" , "Haiti" , "South" , "Cambodia" , "Cuba" ,
"Portugal" , "Iran" , "Yugoslavia" , "Trinadad&Tobago"],["Guatemala" ,
"Germany" , "El-Salvador" , "Columbia" , "Poland" , "Taiwan" , "China" ,
"Scotland" , "Hungary" , "Outlying-US(Guam-USVI-etc)"]]]
Với thuộc tính hours-per-week là: [[[1,25],[26,50]],[[51,75],[76,99]]] Ý nghĩa của cấu hình hours-per-week như sau: Đối với ẩn danh cho thuộc tính này cấp độ 0 sẽ được chia vào 4 nhóm là [1,25], [26,50], [51,75], [76,99] Khái quát tại cấp độ 1 sẽ chia thành 2 nhóm là [1,50], [51,99] Khái quát tại cấp độ 2 là [1,99] Còn cấp độ -1, nghĩa là không ẩn danh cho thuộc tính này Các cấp độ này sẽ được kí hiệu cho bước tiếp theo trong phần cây khái quát
Hình 3-4 Cấu hình cây khái quát
20 Bước 3: Trang 2, trang lựa chọn cấu hình trong cây khái quát Dựa trên thông tin cấu hình khái quát cho từng thuộc tính tại bước trước, ứng dụng sẽ tổng hợp lại cây không gian khái quát, mà tại đó, các node trong cây là 1 tổ hợp giải pháp khái quát cho các thuộc tính đã chọn Người dùng sẽ chọn 1 giải pháp, giải pháp sẽ được tô sáng màu cam Sau đó người dùng nhấn nút “Next” để bắt đầu tiến trình ẩn danh
Ví dụ Hình 3-5 Chọn giải pháp ẩn danh thuộc cây khái quát Giải pháp “hours- per-week [1,1]” có nghĩa là sẽ ẩn danh “native-country” cấp độ ẩn danh là 1 và
Hình 3-5 Chọn giải pháp ẩn danh thuộc cây khái quát
Bước 4: Trang 3, xem và nhận kết quả đã ẩn danh Ví dụ: Hình 3-6 Kết quả ẩn danh bằng cây khái quát Sau khi kết thúc quá trình, cây tiến trính sẽ hiện màu xanh 100% đã hoàn tất Phía dưới là khung nhìn với 3 lựa chọn để xem cơ sở dữ liệu đã ẩn danh: xem dạng dữ liệu trực quan, xem dạng dữ liệu dạng bảng từng đỉnh với các thuộc tính và nhập xuất dữ liệu đối với cơ sở dữ liệu đã ẩn danh
Hình 3-6 Kết quả ẩn danh bằng cây khái quát
Dòng dữ liệu của ứng dụng để sinh ra 1 task ẩn danh hoá dữ liệu như sau:
Hình 3-7 Tạo task ẩn danh hoá dữ liệu
22 Bước 1: Người dùng truy cập đến trang tạo task ẩn danh trên UI website Tạo một yêu cầu gởi đến khối API Server, với các yêu cầu ẩn danh hoá dữ liệu
Bước 2: Nếu người dùng chọn ẩn danh với thông số Manual Config ứng dụng sẽ trả về không gian giải pháp
Bước 3: Người dùng chọn 1 giải pháp từ không gian giải pháp
Bước 4: Từ các thông số đã chọn và giải pháp, khối API Server sẽ tạo 1 task ẩn danh hoá để khối ẩn danh Anonymization Module tiến hành đọc cơ sở dữ liệu nguồn và đích để biến đổi
Bước 5: Sau khi Anonymization Module bắt đầu sẽ trả thông tin task về người dùng Từ thông tin đó, người dùng có thể kiểm tra trạng thái task làm đến đâu hay đã xong và hiện lên màn hình UI website.
Ẩn danh hoá dữ liệu bằng thuật toán Mondrian Multidimensional K-Anonymity
Chức năng này của ứng dụng sẽ trải qua 2 trang màn hình chính (Hình 3-8 Cấu hình thuật toán thuật toán Mondrian):
Hình 3-8 Cấu hình thuật toán thuật toán Mondrian
Quá trình sử dụng trải qua các bước sau:
Bước 1: Tại trang 1, chọn cơ sở dữ liệu nguồn cần biến đổi (Source Database), cơ sở dữ liệu sẽ chứa dữ liệu đã ẩn danh (Destination Database) và nhập câu query Cypher Query truy suất danh sách cạnh hay đỉnh để ẩn danh và chọn chế độ ẩn danh là: “l-Diversity” hay “k-Anonymity” và cấu hình thông số k hay l cho thuật toán Ví dụ: Hình 3-9 Ví dụ cấu hình thuật toán thuật toán Mondrian đã chọn dữ liệu nguồn là
“Neo4j Source Database”, dữ liệu đích là “Neo4j Destination Database 2” và câu query “MATCH (n) RETURN * LIMIT 10000” Câu query có ý nghĩa là lấy 10.000
1 Trang cấu hình chạy thuật toán
23 đỉnh để ẩn danh Với thông số l=7 để áp dụng thuật toán Mondrian phù hợp với mô hình l-diversity
Hình 3-9 Ví dụ cấu hình thuật toán thuật toán Mondrian
Bước 2: Tại trang 1, chọn cấu hình các thuộc tính sẽ ẩn danh, loại dữ liệu các thuộc tính và cấu hình cây khái quát từng thuộc tính Sau khi cấu hình xong người dùng sẽ nhấn nút “Run Morian alogrithm (l-Diversity model)” để qua bước tiếp theo
Ví dụ: Hình 3-10 Cấu hình l-Diversity Ví dụ đã chọn 2 cột để ẩn danh là cột age và gender Với cột thông tin nhạy cảm là fnlwgt
24 Bước 3: Trang 2, xem và nhận kết quả đã ẩn danh Trong kết quá sẽ có thêm thời gian chạy và thông số độ đo NCP (Hình 3-11 Kết quả l-Diversity)
Áp dụng thuật toán ẩn danh hoá đồ thị k-Degree anonymity
Tương tự như chạy thuật toán bằng Mondrian Multidimensional K-Anonymity Tuy nhiên bước 1 cấu hình, người dùng sẽ chọn thuật toán k-Degree Anonymity Ví dụ (Hình 3-12 Cấu hình cho thuật toán k-Degree Anonymity)
Hình 3-12 Cấu hình cho thuật toán k-Degree Anonymity
Đăng ký và đăng nhập
• Trang đăng ký Để sử dụng hệ thống người dùng sẽ đăng ký tài khoản bằng email và nhập password lặp lại 2 lần để gửi yêu cầu đăng ký hệ thống
Sau khi nhập email và nhập password, người dùng phải nhập lại password để xác nhận, nhấn nút submit để hoàn tất yêu cầu tạo tài khoản mới trong hệ thống
Người dùng đăng nhập vào hệ thống bằng email và password đã đăng ký
26 Sau khi nhập email và password, người dùng có thể nhấn nút “Log in” để đăng nhập vào hệ thống
Quản lý kết nối đến các cơ sở dữ liệu đồ thị thuộc tính
Trang quản lý danh sách kết nối có 2 mục (Hình 3-15 Trang quản lý kết nối)
• Mục “Add New Connection” để thêm vào 1 kết nối đến cơ sở dữ liệu đồ thị thuộc tính vào danh sách kết nối Người dùng sẽ nhập tên kết nối, địa chỉ kết nối, tên đăng nhập và mật khẩu để truy cập cơ sở dữ liệu Sau đó người dùng nhấn add để thêm kết nối vào danh sách
• Mục “Database Connections Management” liệt kê danh sách các kết nối người dùng đã thêm vào Mỗi dòng trong bảng cho người dùng 3 nút chức năng: o View: khi người dùng bấm vào sẽ vào trang “Database Overview” xem hay tương tác dữ liệu của cơ sở dữ liệu đồ thị đó o Edit: thay đổi các thông tin kết nối đến cơ sở dữ liệu quan hệ đó
27 o Delete: xoá kết nối khỏi danh sách kết nối
Hình 3-15 Trang quản lý kết nối
Xem dữ liệu cơ sở dữ liệu đồ thị (Database Overview)
Có ba mục chức năng chính trong trang này gồm:
• Xem dữ liệu trực quan dạng đồ thị thuộc tính (Hình 3-16 Trang xem cơ sở dữ liệu dạng đồ thị) Đây là trang trực quan hoá dữ liệu đồ thị thuộc tính trong cơ sở dữ liệu Neo4j, trang cung cấp ô nhập câu truy vấn dữ liệu trong đồ thị Neo4j và nút kích hoạt truy vấn đó (Query) Từ đó ứng dụng sẽ truy cập và hiện lên các nút truy vấn được cũng như các cạnh quan hệ truy vấn được
Hình 3-16 Trang xem cơ sở dữ liệu dạng đồ thị
• Xem dữ liệu các nút trong đồ thị dạng bảng (Hình 3-17 Trang xem cơ sở dữ liệu dạng bảng) Đây là trang xem các nút dữ liệu dưới dạng bảng, số hàng tương ứng với số nút và số cột tương ứng với số thuộc tính của nút và nhãn
Hình 3-17 Trang xem cơ sở dữ liệu dạng bảng
• Thêm và xuất dữ liệu vào cơ sở dữ liệu đồ thị (Hình 3-18 Trang thêm hay xuất dữ liệu)
Trang này cho phép người dùng nhập hoặc xuất cơ sở dữ liệu đang xem
Hình 3-18 Trang thêm hay xuất dữ liệu
4 KẾT QUẢ KIỂM THỬ ỨNG DỤNG
Cấu hình máy tính chạy kiểm thử
• Hệ điều hành: macOS version 11.4
• Processor: 1,4 GHz Quad-Core Intel Core i5
Kết quả kiểm thử với thuật toán Mondrian
Tập dữ liệu được dùng Adult dataset được tải tại https://archive.ics.uci.edu/ml/datasets/adult (Đã lọc bớt các dòng dữ liệu lỗi, còn lại
32561 dòng để chạy kiểm thử)
Tham số k Tham số l Mô hình bảo mật Thời gian chạy thuật toán (s) NCP of dataset
Kết quả kiểm thử với thuật toán ẩn danh đồ thị k-Degree anonymity và Graph pertubations
Tập dữ liệu được dùng để kiểm thử là “email-Eu-core network” được tải tại trang https://snap.stanford.edu/data/email-Eu-core.html Tổng số nút là 1005, tổng số cạnh là 16706
30 Với thuật toán k-Degree anonymity
Tham số k Thời gian chạy thuật toán (s)
Với thuật toán Graph pertubations
Tỷ lệ số cạnh được làm nhiễu Thời gian chạy thuật toán (s)
Dữ liệu đồ thị ngày càng được thu thập trên nhiều lĩnh vực như giao thông, mạng xã hội, giáo dục và y tế Dữ liệu đồ thị còn chứa trong đó là thông tin của rất nhiều cá nhân và tổ chức Loại dữ liệu này mang đến nhiều giá trị to lớn cho cộng đồng nếu biết khai thác và phân tích hợp lý Để làm được vậy dữ liệu phải được mở hay chia sẻ một cách hợp pháp và đảm bảo được tính riêng tư cho các cá nhân hay tổ chức có liên quan Ứng dụng được viết ra để góp thêm một cách tiếp cận hợp lý cho việc đảm bảo tính riêng tư của dữ liệu nhất là dữ liệu đồ thị thuộc tính
Luận văn đã xây dựng được ứng dụng để ẩn danh hoá đồ thị thuộc tính thông qua việc kết hợp với cơ sở dữ liệu đồ thị Neo4j Sau đó với đồ thị đã ẩn danh, các nhà nghiên cứu có thể tiếp tục truy vấn dữ liệu đồ thị một cách trực quan và với tốc độ truy suất xử lý cao với ngôn ngữ Cypher
Thêm nữa, ứng dụng đảm bảo được có thể tạo ra đồ thị ẩn danh cho các nút hoặc cạnh trong đồ thị với các mô hình ẩn danh phổ biến là k-anonymity, l-diversity hay thuật toán ẩn danh đồ thị như k-Degree anonymity
DANH MỤC CÁC TÀI LIỆU THAM KHẢO
[1] J Pokorný "Graph Databases: Their Power and Limitations,” Lecture Notes in Computer Science, vol 9339, Oct 2015
[2] NEO4J “What is a Graph Database?.” Internet: https://neo4j.com/developer/graph-database, Jan 1 st , 2021
[3] L Backstrom, D P Huttenlocher, J M Kleinberg and X Lan, "Group formation in large social networks: membership, growth, and evolution,” presented at Proceedings of the Twelfth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, Philadelphia, PA, USA, Aug 20-23, 2006
[4] R Kumar, J Novak and A Tomkins, "Structure and evolution of online social networks,” Intelligent Systems Reference Library, vol 65, 2006
[5] L T Hieu and D T Khanh, "An Elastic Anonymization Framework for Open
Data,” In Proceedings of the 7th International Conference (FDSE 2020 – Part
II), Virtual (QNU, Binh Dinh, Vietnam), November 25-27, 2020, CCIS 1306,
[6] L Sweeney "k-Anonymity: A Model for Protecting Privacy,” International
Journal of Uncertainty, Fuzziness and Knowledge-Based Systems, vol 10,
[7] A Machanavajjhala, J Gehrke, D Kifer and M Venkitasubramaniam, "L- diversity: privacy beyond k-anonymity,” in the 22nd International Conference on Data Engineering, 2006
[8] N Li, T Li and S Venkatasubramanian, "t-Closeness: Privacy Beyond k-
Anonymity and l-Diversity,” in 2007 IEEE 23rd International Conference on
[9] Turner, K Mivule and Claude "Applying Data Privacy Techniques on
Tabular Data in Uganda,” Internet: https://arxiv.org/abs/1107.3784, 2011
32 [10] X.-Y Li, C Zhang, T Jung, J Qian và L Chen "Graph-Based Privacy-
Preserving Data Publication,” in IEEE INFOCOM 2016 - The 35th Annual
IEEE International Conference on Computer Communications, Jul 2016
[11] P Samarati "Protecting respondents identities in microdata release,” in IEEE
[12] M Hay, G Miklau, D Jensen, P Weis and S Srivastava, "Anonymizing
[13] Y Zhang, M Humbert, B Surma, P Manoharan and M B Jilles Vreeken,
"Towards Plausible Graph Anonymization,” in Network and Distributed Systems Security (NDSS), 2020
[14] D Liben-Nowell and J Kleinberg, "The Link-prediction Problem for Social
Networks,” Journal of the American Society for Information Science and Technology, vol 58, 2007
[15] K Liu and E Terzi, "Towards Identity Anonymization on Graphs,” presented at Proceedings of the 2008 ACM SIGMOD International Conference on Management of Data (SIGMOD), p 93–106, 2008
[16] K LeFevre, D DeWitt and R Ramakrishnan, "Mondrian Multidimensional k-anonymity,” in ICDE, vol 1, 2006
[17] J.-W Byun, A Kamra, E Bertino and N Li, "Efficient k -Anonymization
Using Clustering Techniques,” in DASFAA, p 188–200, 2007
[18] M Terrovitis, N Mamoulis and P Kalnis, "Privacy-preserving anonymization of set-valued data,” in VLDB, p 115–125, 2008.