Luận văn Thủy vân cơ sở dữ liệu quan hệ dựa trên kỹ thuật tối ưu hoá áp dụng giải thuật di truyền

THỦY VÂN CƠ SỞ DỮ LIỆU QUAN HỆ DỰA TRÊN KỸ THUẬT TỐI ưU HOÁ ÁP DỤNG GIẢI THUẬT DI TRUYỀN LUẬN VĂN THẠC SĨ NGÀNH KHOA HỌC MÁY TÍNH MỞ ĐẦU 1. Lý do lựa chọn đề tài 2. Mục tiêu nghiên cứu 3. Phạm vi nghiên cứu 4. Phương pháp nghiên cứu 5. Ý nghĩa khoa học và ý nghĩa thực tiễn 6. Cấu trúc của luận văn 1. Lý do lựa chọn đề tài Ngày nay, các ứng dụng và các sản phẩm số trong đó bao gồm cả các cơ sở dữ liệu quan hệ được phát triển và phân phối rộng khắp trong môi trường Internet, vì vậy việc chứng minh quyền sở hữu đối với các sản phẩm này sau khi chuyển giao là một vấn đề rất cần thiết. Việc thực thi quyền sở hữu dữ liệu là một yêu cầu quan trọng đòi hỏi các giải pháp đồng bộ, bao gồm các khía cạnh về kỹ thuật, về tổ chức, và cả luật pháp. Mặc dù vẫn chưa có được những giải pháp toàn diện như vậy nhưng trong các năm gần đây, các kỹ thuật thuỷ vân đã đóng một vai trò quyết định nhằm giải quyết vấn đề về quyền sở hữu này. Hiện nay, mới chỉ có một vài cách tiếp cận đối với bài toán thuỷ vân dữ liệu quan hệ được đề xuất. Tuy nhiên, những kỹ thuật này không bền vững trước các tấn công thông thường và các tấn công gây hại, vì vậy cần có một kỹ thuật thủy vân cơ sở dữ liệu quan hệ có độ bền vững cao hơn nhất là đối với các tấn công xoá, sửa, và chèn các bản ghi. Luận văn “thủy vân cơ sở dữ liệu quan hệ dựa trên kỹ thuật tối ưu hoá áp dụng giải thuật di truyền” trình bày kỹ thuật thuỷ vân cơ sở dữ liệu dựa vào kỹ thuật tối ưu hoá. Kỹ thuật này phải đảm bảo bền vững trước các tấn công thêm, bớt và thay đổi giá trị của các bộ trong quan hệ. 2. Mục tiêu nghiên cứu Mục tiêu chính của luận văn là đi sâu nghiên cứu kỹ thuật tối ưu hoá để mã hoá và giải mã thuỷ vân. Trong đó tập trung nghiên cứu kỹ thuật phân hoạch dữ liệu không phụ thuộc vào các bộ được đánh dấu để định vị các phân hoạch; nghiên cứu cách giải bài toán tối ưu bằng giải thuật di truyền với các ràng buộc trên thuộc tính được chọn để tiến hành thủy vân, và nghiên cứu kỹ thuật phát hiện thủy vân dựa vào một ngưỡng tối ưu. 3. Phạm vi nghiên cứu Phạm vi nghiên cứu của đề tài là đi sâu nghiên cứu về mặt lý thuyết của thuỷ vân và áp dụng cho cơ sở dữ liệu quan hệ. Nghiên cứu về cơ chế mã hoá và giải mã thuỷ vân cơ sở dữ liệu quan hệ dựa trên kỹ thuật tối ưu hoá áp dụng thuật toán di truyền. 4. Phương pháp nghiên cứu Luận văn này là luận văn thuộc ngành kỹ thuật chuyên ngành khoa học máy tính nên phương pháp nghiên cứu chủ yếu ở đây là phương pháp tiếp cận lý thuyết, sau đó áp dụng lý thuyết vào một ngôn ngữ lập trình cụ thể để kiểm chứng. Dựa trên những kết quả kiểm chứng đó để đưa ra các kết luận và các đề xuất nhằm hoàn thành mục tiêu nghiên cứu của luận văn. Cụ thể trong luận văn này, tác giả lấy thông tin tiêu thụ điện làm cơ sở dữ liệu phục vụ cho nghiên cứu; nghiên cứu về lý thuyết thuỷ vân; nghiên cứu về cách giải bài toán tối ưu hoá bằng giải thuật di truyền; sử dụng phần mềm Matlab để lập trình kiểm chứng lý thuyết. 5. Ý nghĩa khoa học và ý nghĩa thực tiễn của đề tài Đưa ra cơ sở khoa học của việc áp dụng kỹ thuật tối ưu hoá để mã hoá và giải mã thuỷ vân trong đó sử dụng giải thuật di truyền để giải quyết bài toán tối ưu hoá. Kết quả nghiên cứu của đề tài rất có ý nghĩa trong việc chứng minh quyền sở hữu đối với các sản phẩm số hoá, đặc biệt là trong cơ sở dữ liệu quan hệ sau khi đã phân phối hoặc chuyển giao. Đồng thời việc chứng minh quyền sở hữu này cũng là một vấn đề rất quan trọng trong môi trường ứng dụng dựa trên Internet nhằm phát tán và truyền tải thông tin. 6. Cấu trúc của luận văn Ngoài phần mở đầu và phần kết luận, luận văn được trình bày thành ba chương như sau: - Chương 1. Tổng quan về thuỷ vân và giải thuật di truyền. Chương này chủ yếu trình bày về các thông tin cơ bản của kỹ thuật giấu tin, các khái niệm cơ bản về thuỷ vân và ứng dụng thực tiễn của thuỷ vân, sơ lược về giải thuật di truyền. - Chương 2. Thực trạng nghiên cứu về thuỷ vân cơ sở dữ liệu quan hệ. Chương này chủ yếu trình bày về thực trạng nghiên cứu về thuỷ vân cơ sở dữ liệu quan hệ ở trong nước và trên thế giới. - Chương 3. Nội dung và các kết quả nghiên cứu. Chương này đi sâu mô tả chi tiết lý thuyết các bước tiến hành thí nghiệm áp dụng kỹ thuật tối ưu hoá cho mã hoá và giải mã thuỷ vân số. MỤC LỤC MỤC LỤC . 1 DANH MỤC CÁC THUẬT NGỮ . 3 DANH MỤC CÁC HÌNH VẼ . 4 DANH MỤC CÁC BẢNG BIỂU . 5 MỞ ĐẦU . 6 1. Lý do lựa chọn đề tài . 6 2. Mục tiêu nghiên cứu 7 3. Phạm vi nghiên cứu . 7 4. Phương pháp nghiên cứu 7 5. Ý nghĩa khoa học và ý nghĩa thực tiễn của đề tài . 8 6. Cấu trúc của luận văn . 8 CHưƠNG 1 – TỔNG QUAN VỀ THUỶ VÂN VÀ GIẢI THUẬT DI TRUYỀN 9 1.1. Cơ bản về kỹ thuật giấu tin . 10 1.1.1. Khái niệm về giấu tin 10 1.1.2. Phân loại các kỹ thuật giấu tin 10 1.1.3. Mục đích của giấu tin . 12 1.1.4. Môi trường giấu tin . 12 1.2. Cơ bản về thuỷ vân . 14 1.2.1. Khái niệm thuỷ vân . 14 1.2.2. Một số vấn đề có liên quan đến thuỷ vân . 16 1.2.3. Khái niệm thuỷ vân cơ sở dữ liệu 17 1.3. Một số ứng dụng của thuỷ vân 18 1.3.1. Bảo vệ bản quyền tác giả (copyright protection) . 18 1.3.2. Phát hiện xuyên tạc thông tin (authentication and tamper detection) . 18 1.3.3. Lấy dấu vân tay hay dán nhãn (fingerprinting and labeling) . 19 1.3.4. Điều khiển thiết bị (Device control) 19 1.3.5. Theo dõi quá trình sử dụng (Tracking) 19 1.3.6. Theo dõi truyền thông (Broadcast Monitoring) . 19 1.3.7. Truyền tin bí mật (Concealed Communication) . 20 1.4. Giải thuật di truyền 20 CHưƠNG 2 – THỰC TRẠNG NGHIÊN CỨU THUỶ VÂN CƠ SỞ DỮ LIỆU QUAN HỆ 22 2.1. Tình hình nghiên cứu trong nước . 22 2.2. Tình hình nghiên cứu trên thế giới 22 2.2.1. Theo kiểu dữ liệu (Data type) 23 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn -2- 2.2.2. Theo kiểu biến dạng (Distortion) 23 2.2.3. Theo độ nhạy (Sensitivity) . 24 2.2.4. Theo thông tin thuỷ vân (watermark information) . 25 2.2.5. Tính kiểm tra được 26 2.2.6. Theo cấu trúc dữ liệu (Data structure) 27 CHưƠNG 3 – NỘI DUNG VÀ CÁC KẾT QUẢ NGHIÊN CỨU . 29 3.1. Phân hoạch dữ liệu 29 3.2. Nhúng thuỷ vân 33 3.2.1. Mã hoá bit đơn . 34 3.2.2. Áp dụng giải thuật di truyền giải bài toán tối ưu . 38 3.2.3. Thuật toán nhúng thuỷ vân 41 3.2.4. Đánh giá ngưỡng giải mã . 42 3.3. Giải mã thuỷ vân 46 3.4. Kết quả thực nghiệm 48 KẾT LUẬN VÀ KIẾN NGHỊ 52 PHỤ LỤC . 54 TÀI LIỆU THAM KHẢO 57

pdf63 trang | Chia sẻ: maiphuongtl | Lượt xem: 1851 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Luận văn Thủy vân cơ sở dữ liệu quan hệ dựa trên kỹ thuật tối ưu hoá áp dụng giải thuật di truyền, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
2.2.1. Theo kiểu dữ liệu (Data type) a) Thuỷ vân dữ liệu kiểu số (watermarking numerical data) có các nghiên cứu của R. Agrawaland J. Kiernan: Watermarking Relational Databases. VLDB, 2002. Giả thiết cơ bản của nghiên cứu này là chấp nhận một lượng thay đổi với các số nhỏ ở  bit ít ý nghĩa nhất của các giá trị dữ liệu kiểu số. Ý tưởng cơ bản là phải đảm bảo rằng các vị trí bit nhúng đó có chứa các giá trị đặc trưng để có thể xác định được bởi khoá bí mật K. Để nhận dạng lại thuỷ vân đã nhúng, người ta đã tiến hành so sánh các giá trị đánh dấu được tính toán với các giá trị bit đã lưu trong cơ sở dữ liệu. Thuỷ vân được nhận dạng nếu tỷ lệ phần trăm trùng lặp lớn hơn một ngưỡng T nào đó cho trước. b) Watermarking categorical data có các nghiên cứu của + R. Sion: Proving ownership over categorical data. ICDE 2004 + E. Bertino, B.C Ooi, Y.Yang, and R. Deng: Privacy and ownership preserving of outsourced medical data. ICDE 2005. Ý tưởng cơ bản của các nghiên cứu này là: đối với mỗi nhóm thuộc tính X nào đó, thay đổi một số giá trị của thuộc tính này thành các giá trị khác sao cho các thay đổi này là chấp nhận được. Các thay đổi này sẽ tuỳ thuộc vào từng ứng dụng cụ thể. 2.2.2. Theo kiểu biến dạng (Distortion) Ba nhà khoa học Y. Li, H. Guo, và S. Jajodia công bố công trình “Tamper Detection and Localization for Categorical Data Using Fragile Watermarks”, DRM 2004. Ý tưởng cơ bản của nghiên cứu này là: Tất cả các bộ được phân hoạch một cách bí mật thành g nhóm thông qua hàm băm H(K,r.P). Một dấu thuỷ Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 24 - vân (watermark) khác được nhúng vào mỗi nhóm, vì vậy bất kỳ một thay đổi nào trên dữ liệu đều có thể được nhận dạng và định vị với độ chính xác cao tới cấp nhóm. 2.2.3. Theo độ nhạy (Sensitivity) Hệ thống thuỷ vân có thể được phân thành hai dạng là bền vững và dễ bị phá huỷ thông qua độ nhạy của chúng đối với các tấn công cơ sở dữ liệu + Thuỷ vân bền vững (Robust watermarks) được sử dụng cho bảo vệ bản quyền, chứng mình quyền sở hữu, hoặc chống lại sự sao chép lậu. + Thuỷ vân dễ bị phá huỷ (Fragile watermarks) được sử dụng để định vị và phát hiện sự giả mạo dữ liệu. a) Thủy vân bền vững Có nghiên cứu của tác giả R. Agrawaland J. Kiernan: “Watermarking Relational Databases”. VLDB 2002. Cho B(k;m,p) là xác suất có nhiều hơn k thành công trong m phép thử Bernoulli. Một dấu thuỷ vân được nhận dạng nếu có nhiều hơn một tỉ lệ phần trăm T các bit đã nhúng được nhận dạng chính xác. b) Thủy vân dễ vỡ *) Các tác giả Y. Li, H. Guo, và S. Jajodia công bố công trình “Tamper Detection and Localization for Categorical Data Using Fragile Watermarks”. DRM 2004. Đóng góp của công trình này là: Thuỷ vân được tính toán bằng cách băm tất cả các bộ thành các nhóm Bất kỳ thay đổi nào tới dữ liệu đều có thể được nhận dạng chi tiết đến mức nhóm dữ liệu với tỉ lệ thành công/lỗi là !ln21 g Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 25 - *) Các tác giả H. Guo, Y. Li, A. Liu, và S. Jajodia với công trình “A Fragile Watermarking Scheme for Detecting Malicious Modifications of Database Relations”. IS 2006 Đóng góp của công trình này là cải thiện độ chính xác khi xác định vị trí làm giả trong dữ liệu 2.2.4. Theo thông tin thuỷ vân (watermark information) a) Nhúng một bit đến nhiều bit R. Sion, M. Atallah, và S. Prabhakar với công trình “Rights Protection for Relational Data”. SIGMOD 2003. Thuỷ vân một tập các số thực bằng cách thay đổi các phân phối của nó. Phương pháp này được thực hiện bằng cách: + Sắp xếp các giá trị thông qua khoá được băm của tập các bit ý nghĩa nhất của các giá trị đã được chuẩn hoá. + Phân hoạch chúng thành các tập con không giao nhau + Nhúng một bit thuỷ vân vào một tập con bằng cách thực hiện các thay đổi rất nhỏ, như vậy các đầu ra trong phân phối là nhỏ hơn (hoặc lớn hơn) một ngưỡng nhỏ (hoặc lớn) nào đó. b) Nhúng từ nhiều bit đến cả một dấu vân tay Y. Li, V. Swarup, và S. Jajodia với công trình “Fingerprinting Relational Databases: Schemes and Specialties”. TDSC 2005. Đặc điểm của phương pháp là: + Định danh đối tượng sử dụng dữ liệu + Nhiều bit fingerprint được sử dụng để xác định đối tượng người dùng nào là kẻ gian lận. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 26 - c) Nhúng một thuỷ vân đến nhiều thuỷ vân (from one watermark to multiple watermark) Y. Li, H. Guo, và S. Wang công bố công trình nghiên cứu “A Multi-Bit Watermark for Relational Data”. JDM 2007 Công trình này giải quyết được các giả thiết đặt ra như sau: + Kẻ giả mạo cố tình chèn thêm thuỷ vân khác nữa vào dữ liệu đã được thuỷ vân + Một nhóm người dùng muốn nhúng thuỷ vân riêng của mỗi người vào dữ liệu và xác minh lại quyền sở hữu của họ một cách độc lập. Giải pháp của nghiên cứu này đưa ra là: Mở rộng nghiên cứu của Agrawal và Kiernan là nhúng nhiều thuỷ vân khác nhau W1, W2, W3,… vào dữ liệu với các khoá K1, K2, K3,…khác nhau. 2.2.5. Tính kiểm tra đƣợc Y. Li và R. Deng với công trình “Publicly Verifiable Ownership Protection for Relational Databases”. ASIACCS 2006 Yêu cầu: + Các cách tiếp cận dựa vào khoá mật là không phù hợp với việc cung cấp bản quyền tác phẩm ra công chúng. + Người chủ sở hưu dữ liệu sử dụng một khoá công khai để thực hiện một thuỷ vân công khai. Vì vậy bất kỳ ai cũng có thể sử dụng các khoá công khai này để nhận dạng thuỷ vân đã nhúng. Giải pháp của tác giả đưa ra là: + Công khai khoá + Thuỷ vân (công khai): Khoá chính, bit ý nghĩa nhất được chọn (most significant bit) Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 27 - + Dấu xác thực: Số hiệu chủ sở hữu (owner ID), khoá thuỷ vân (key), hàm băm, thời điểm tạo dữ liệu, tính pháp lý, thuộc lĩnh vực nào. 2.2.6. Theo cấu trúc dữ liệu (Data structure) a) Sử dụng khoá chính ảo (Virtual primary key) Y. Li, V. Swarupand S. Jajodia với công trình “Constructing a Virtual Primary Key for Fingerprinting Relational Data”. DRM 2003 Giải quyết vấn đề đặt ra là: Nhiều lược đồ thuỷ vân đều dựa vào sự tồn tại của khoá chính, điều này tồn tại một số nhược điểm như sau: + Không thể áp dụng thuỷ vân trực tiếp với những quan hệ mà không tồn tại khoá chính. + Rất dễ bị tấn công bởi kẻ tấn công đơn giản là thực hiện thay đổi hoặc xoá khoá chính Ý tưởng cơ bản để giải quyết các vấn đề trên được nêu ra trong công trình này là: + Xây dựng khoá chính ảo bằng cách kết hợp các bit ý nghĩa nhất của một số thuộc tính để tạo khoá chỉnh ảo. + Các thuộc tính khác nhau được chọn cho mỗi bộ là dựa vào một khoá bí mật. + Nhược điểm của phương pháp này là làm tăng gấp đôi nguy cơ thất bại khi nhận dạng lại thuỷ vân đã nhúng bởi vì, khi tao ra thêm một khoá chính ảo, một số bit thuỷ vân sẽ được nhúng ít lần hơn các bit khác vào dữ liệu. Điều này làm gia tăng khả năng thất bại trong nhận dạng thuỷ vân nếu bị tấn công. b) Xử lý dữ liệu theo khối (Data cube) Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 28 - J. Guo, Y. Li, R. Deng, và K. Chen công bố công trình “Rights Protection for Data Cubes”. ISC 2006 Dữ liệu dạng khối là một dạng dữ liệu phổ biến mà hỗ trợ tốt cho việc khai thác một lượng lớn dữ liệu đa chiều. Thao tác phố biến nhất đối với dữ liệu dạng này là truy vấn tổ hợp. c) Xử lý theo dòng dữ liệu (Streaming data) *) R. Sion, M. Atallah, và S. Prabhakar công bố công trình công trình nghiên cứu “Resilient Rights Protection for Sensor Streams”. VLDB 2004 Ý tưởng của công trình này là sử dụng một số các giá trị cực trị và các giá trị lân cận của nó như là những đối tượng mang các bit thuỷ vân. Lựa chọn các giá trị cực trị và thuỷ vân mọi giá trị lân cận (LSB) dựa trên một khoá bí mật và các bit ý nghĩa nhất của chúng (MSB). Mọi mẫu đều bao gồm đầy đủ các giá trị cực trị và các giá trị lân cận của nó. *) H. Guo, Y. Li, và S. Jajodia với công trình “Chaining Watermarks for Detecting Malicious Modifications to Streaming Data”. IS 2007 Ý tưởng của nghiên cứu này là phân hoạch một luồng dữ liệu dạng số thành các nhóm và nhúng một thuỷ vân vào mỗi nhóm. Việc phân nhóm là dựa vào các điểm động bộ. Một thuỷ vân dùng để nhúng được tính toán bằng cách băm nhóm đã được băm trước đó hiện tại và nhóm đã băm trước đó tiếp theo, từ đó thuỷ vân được móc nối với nhau. Việc nhận dạng thuỷ vân có thể được thực hiện và định vị các thay đổi ngay cả khi một số nhóm đã bị xoá toàn bộ cả nhóm. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 29 - CHƢƠNG 3 – NỘI DUNG VÀ CÁC KẾT QUẢ NGHIÊN CỨU 1. Phân hoạch dữ liệu 2. Nhúng thuỷ vân 3. Giải mã thuỷ vân Các mục trong chương này của luận văn sẽ tập trung trình bày các kỹ thuật áp dụng để nhúng thuỷ vân và giải mã thuỷ vân cơ sở dữ liệu quan hệ. Đó là kỹ thuật thuỷ vân cơ sở dữ liệu quan hệ sử dụng kỹ thuật tối ưu hoá như một bài toán tối ưu hoá có ràng buộc, và sử dụng giải thuật di truyền để giải quyết bài toán tối ưu này. Kỹ thuật này bao gồm hai quá trình là mã hoá và giải mã thuỷ vân. Quá trình mã hoá được thực hiện qua các bước [22]: + Phân hoạch dữ liệu + Nhúng thuỷ vân + Đánh giá ngưỡng giải mã Quá trình giải mã thuỷ vân được thực hiện qua các bước + Phân hoạch dữ liệu + Giải mã ngưỡng + Bầu chọn theo đa số Các mục dưới đây sẽ nêu chi tiết cách thức tiến hành. 3.1. Phân hoạch dữ liệu Một số ký hiệu được sử dụng trong luận văn Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 30 - Ký hiệu Ý nghĩa m Số phân vùng  Kích thước nhỏ nhất của một phân vùng W Chuối bit thuỷ vân {bl-1,…,b0} l Chiều dài của chuỗi bit thuỷ vân Xmax Các thống kê nhúng thuỷ vân cực đại Xmin Các thống kê nhúng thuỷ vân cực tiểu Si Phân vùng dữ liệu thứ i |Si|, n Độ dài của vector Si Ks Khoá bí mật T* Ngưỡng giải mã tối ưu Gi Ràng buộc thứ i i Vector thao tác trong R n Bảng 1. Danh mục các ký hiệu Mục tiêu chính của phần này là trình bày về kỹ thuật phân hoạch, kỹ thuật này sẽ làm tăng tính ngẫu nhiên khi chọn các bộ và phân vào các phân hoạch riêng rẽ. Tính ngẫu nhiên này có độ bảo mật cao được đảm bảo bằng hàm băm mật mã gọi mà mã xác thực thông điệp. Với việc áp dụng kỹ thuật phân hoạch này sẽ làm tăng khả năng bền vững của thuỷ vân trước các tấn công. Thuật toán phân hoạch dữ liệu phân chia bộ dữ liệu thành các phần, các tập hợp con dựa vào khoá bí mật KS . Khoá bí mật KS thường được chọn sao cho kẻ tấn công khó có thể đoán ra được, đồng thời đảm bảo sự duy nhất và ổn định trong quá trình tính toán phân hoạch. Vì vậy, giá trị thích hợp nhất dành cho KS là các số nguyên tố càng dài càng tốt, điều này nhằm làm khó cho kẻ tấn công trong việc dò ra khoá bí mật. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 31 - Bộ dữ liệu D là một quan hệ cơ sở dữ liệu với lược đồ D(P, A0,…, Av-1) trong đó + P là thuộc tính khoá chính. + A0,…, Av-1 là v thuộc tính cho việc thuỷ vân và |D| là số bản ghi trong D Bộ dữ liệu D này được chia thành m phần không giao nhau (hay không chồng lên nhau) {S0,…., Sm-1}, sao cho mỗi phần Si chứa trung bình m D || bản ghi từ bộ dữ liệu D. Các phần không giao nhau, tức là, với 2 phần bất kỳ Si và Sj mà i  j thì   ji SS . Với mỗi bản ghi Dr  , thuật toán phân hoạch dữ liệu tính toán mã xác thực thông tin (MAC) để đảm bảo an toàn trong quá trình phân hoạch và mã này được cho bởi hàm băm H(Ks || H(r.P || Ks)) , trong đó + Pr. là khoá chính của bản ghi r + H() là hàm băm an toàn + || là toán tử nối. Sử dụng MAC đã tính toán, các bản ghi được chia cho các phần. Với bản ghi r , phần được chia của nó được tính như sau: partition(r) = H(Ks || H(r.P || Ks)) mod m Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 32 - Hình 3. 1. Cách phân hoạch bộ dữ liệu Sử dụng đặc tính này để các hàm băm an toàn sinh ra các bản tin được phân phối một cách giống nhau, kỹ thuật phân hoạch này trung bình chứa m D || bản ghi trong mỗi phần của phân hoạch. Hơn thế nữa, một kẻ tấn công không thể đoán trước được các bản ghi đã chia thành các phần mà không biết rõ về khoá bí mật Ks và số phần dữ liệu đã phân hoạch m được giữ bí mật. Giữ m bí mật không phải là đòi hỏi. Tuy nhiên, giữ nó bí mật để gây khó khăn hơn cho kẻ tấn công muốn tái sinh các phần đó. Thuật toán phân hoạch dữ liệu được mô tả như sau: Algorithm: get_partitions Input: bộ dữ liệu D, khoá bí mật Ks, số phần phân hoạch m Output: Các phần dữ liệu S0,…., Sm-1 1. S0,…., Sm-1 {} 2. for each Tuple Dr  3. partition(r)  H(Ks || H(r.P || Ks)) mod m 4. insert r into Spartition(n) 5. return S0,…., Sm-1 r.P Field1 Field 2 … 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 . . n-1 n S1 S3 S2 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 33 - Mặc dù sự có mặt của khoá chính trong quan hệ được thuỷ vân là phổ biến trong dữ liệu quan hệ, kỹ thuật này có thể dễ dàng được mở rộng để xử lý các trường hợp khi quan hệ không có khoá chính. Giả sử quan hệ thuộc tính đơn,  bít ý nghĩa nhất (MSB) của dữ liệu có thể được dùng để thay thế cho khoá chính. Việc sử dụng MSB cho rằng dữ liệu nhúng thuỷ vân thay đổi sẽ không giống như  bít MSB thay đổi. Tuy nhiên, nếu quá nhiều bản ghi chia sẻ cùng  bít MSB thì có thể cho phép kẻ tấn công suy luận được thông tin về sự phân phối phần dữ liệu. Giải pháp này có thể chọn  để làm cực tiểu hoá các bản sao. *) Các giá trị thực nghiệm của luận văn được tác giả áp dụng như sau: Ký hiệu Ý nghĩa m = 20 Số phân vùng Ks = 97 Khoá bí mật H = MD5 Hàm băm 3.2. Nhúng thuỷ vân Để nhúng thuỷ vân vào cơ sở dữ liệu đã được phân hoạch, quá trình nhúng được tiến hành thông qua bước mã hoá bit đơn để xác định xem bit nào trong chuỗi bit thuỷ vân sẽ được nhúng vào phân vùng cụ thể nào. Việc mã hoá này chính là việc thực hiện giải bài toán tối ưu hoá có ràng buộc áp dụng giải thuật di truyền. Sau quá trình nhúng, kết quả thu được là hai tập thống kê được dùng để tính ngưỡng cho quá trình giải mã thuỷ vân sau này. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 34 - Để đơn giản, ta giả sử các bản ghi trong phần phân hoạch iS chứa thuộc tính số đơn. Trong trường hợp này, mỗi phần iS có thể được biểu diễn như là một véc tơ dữ liệu số   ninii SSS  ,..., . 3.2.1. Mã hoá bit đơn Cho bít thuỷ vân bi, và véc tơ dữ liệu số   ninii SSS  ,..., . [22] Thuật toán mã hoá bít ánh xạ vectơ dữ liệu iS thành vectơ dữ liệu mới ii W i SS  , trong đó n inii  ],...,[ 1 là vectơ thao tác. Các thao tác bị hạn chế bởi các ràng buộc trong bộ   ipii ggG ,...,1 . Việc mã hoá này dựa trên hàm mã hoá tối ưu như là hàm giấu được định nghĩa như sau: Định nghĩa 1: Hàm giấu  : n , với  là tập hợp các tham số bí mật được quyết định bởi người chủ sở hữu dữ liệu. Tập hợp  có thể được xem như là một phần của khoá bí mật. Chú ý rằng khi hàm giấu được áp dụng cho iiS  thì chỉ vectơ thao tác i là biến, trong khi iS và  là các hằng số. Để mã hoá bit bi vào trong tập iS , thuật toán mã hoá bít sẽ làm tối ưu hoá hàm hàm giấu )( iiS  . Mục đích của bài toán tối ưu hoá cực đại hoặc cực tiểu hàm giấu dựa vào bít ib : Nếu bít bi=1 thì thuật toán mã hoá bít đi giải bài toán cực đại hoá: imax )( iiS  thoả mãn ràng buộc iG Nếu bít bi = 0 thì bài toán đơn giản được chuyển thành bài toán cực tiểu hoá. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 35 - Giải pháp cho bài toán tối ưu hoá sinh ra vectơ thao tác * i để *)( iiS  tối ưu. Khi đó, bộ dữ liệu mới *ii W i SS  .Việc cực đại hoá cho ib =1 và cực tiểu hoá cho ib =0, đảm bảo rằng các giá trị của hàm *)( iiS  sinh ra trong cả hai trường hợp được đặt ở vị trí có khoảng cách lớn nhất và do đó làm cho bít được chèn bền vững hơn đối với các tấn công, đặc biệt là các tấn công thay đổi dữ liệu. Thuật toán mã hoá bít đơn được mô tả như sau: Algorithm: Encode_single_bit Input: Tập dữ liệu Si, bit bi, tập ràng buộc Gi, tham số bí mật , tập thống kê Xmax, Xmin Output: Tập dữ liệu Si + * i 1. If (|Si| <  ) then return Si 2. If (bi = = 1) then 3. maximize ( )( iiS  ) phụ thuộc vào các ràng buộc Gi 4. insert *)( iiS  into Xmax 5. else 6. minimize ( )( iiS  ) phụ thuộc vào các ràng buộc Gi 7. insert *)( iiS  into Xmin 8. return Si + * i Thuật toán mã hoá bít nhúng bít bi vào phần Si nếu |Si| >  . Giá trị của  biểu diễn kích cỡ phần cực tiểu. Việc cực đại hoá và cực tiểu hoá trong thuật toán mã hoá bít làm tối ưu hoá hàm giấu *)( iiS  thoả mãn các ràng buộc trong iG . Các thống kê cực đại hoá và cực tiểu hoá được ghi lại cho mỗi bước mã hoá trong maxX , minX Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 36 - tương ứng như đã được chỉ ra trong các dòng 4 và 7 của thuật toán mã hoá. Các thống kê này được dùng để tính toán các tham số giải mã tối ưu. Tập hợp các ràng buộc sử dụng Gi biểu diễn các biên với những thay đổi cho phép có thể được thực hiện trên các phần tử của Si. Các ràng buộc này mô tả không gian khả thi cho vectơ thao tác i với mỗi bước mã hoá bít. Các ràng buộc này phụ thuộc vào ứng dụng và dữ liệu. Ví dụ đối với dữ liệu là mức tiêu thụ điện sinh hoạt thì có thể có các ràng buộc là các điểm cận để chuyển đổi mức giá tính phí tiêu thụ. Với Việt Nam thời điểm hiện tại (năm 2009) thì các mốc để tính phí tiêu thụ điện là: 50 KW, 100 KW, 150 KW, 200 KW. Các ràng buộc khoảng có thể được dùng để điều khiển độ lớn sự thay đổi cho ij , tức là: maxmin ijijij  Kiểu ràng buộc thú vị khác có thể yêu cầu bộ dữ liệu đã thuỷ vân duy trì các thống kê nào đó. Ví dụ, trung bình bộ dữ liệu sinh ra bằng trung bình bộ dữ liệu gốc thì ràng buộc trong trường hợp này có dạng: 0 1   n j ij Một vài ràng buộc sử dụng khác có thể được tạo ra phụ thuộc vào các yêu cầu ứng dụng. Các ràng buộc này được xử lý bằng thuật toán mã hoá bít dùng các kỹ thuật tối ưu hoá có ràng buộc. Hàm giấu được sử dụng ở đây phụ thuộc vào các thống kê dữ liệu. Các giá trị trung bình và phương sai của bộ dữ liệu mới ii W i SS  tương ứng là )( iiS   và 2 )( iiS   ; gọi tắt là  và 2 . Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 37 - Điểm tham chiếu :   cref , trong đó )1,0(c là một số thực bí mật, là một phần của tập  . Các điểm dữ liệu trong iiS  ở trên ref như là các đầu vào “tail”. c được định nghĩa là số đầu vào tail đã chuẩn hoá bằng độ dài của iS , cũng như tail count được chuẩn hoá. Hàm này được tính như sau:    n j refsiic ijijn S 1 }{1 1 )( trong đó : n là độ dài của iS {}1 là hàm được định nghĩa như sau: Chú ý rằng tham chiếu ref phụ thuộc vào cả  và  , có nghĩa là nó không cố định và thay đổi tự động với các thống kê iiS  . Tail count )( iic S  được chuẩn hoá phụ thuộc vào phân phối của iiS  và tham chiếu động. Hàm mục tiêu )( iic S  không tuyến tính và không thể lấy vi phân, vì vậy nó làm cho bài toán tối ưu hoá gần với bài toán tối ưu hoá có ràng buộc không tuyến tính. Các cách tiếp cận truyền thống dựa vào gradient không thể áp dụng được cho những bài toán như thế này. Thuật toán di truyền sẽ được áp dụng để giải bài toán tối ưu hoá này. Việc giải bài toán tối ưu hoá này không nhất thiết phải tìm ra lời giải tối ưu toàn cục bởi vì việc tìm ra lời giải 1 Nếu thoả mãn điều kiện trong {} 0 Các trường hợp còn lại 1{} = Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 38 - như thế này có thể đòi hỏi một lượng tính toán rất lớn. Mục đích chính của phương pháp là tìm ra lời giải (phương án) gần tối ưu mà đảm bảo các giá trị cực tiểu hoá hàm )( iic S  và cực đại hoá hàm )( iic S  cách xa nhau. 3.2.2. Áp dụng giải thuật di truyền giải bài toán tối ƣu Thuật toán di truyền (GA) là một kỹ thuật tìm kiếm dựa trên các nguyên tắc chọn ngẫu nhiên hoặc quá trình chọn lọc tự nhiên. Thay vì sử dụng thông tin gradient, GA sử dụng trực tiếp hàm mục tiêu trong việc tìm kiếm. Thuật toán di truyền này sẽ tìm kiếm không gian giải pháp bằng cách duy trì các giải pháp thế. Sau đó, bằng cách sử dụng các hoạt động liên quan như là sự giao nhau, sự biến đổi, và sự lựa chọn, thuật toán di truyền (GA) tạo ra các thế hệ giải pháp thành công – các thế hệ có kế thừa và phát triển các đặc tính tốt của cha mẹ chúng và như thế chúng dần dần tới gần các giải pháp tối ưu hoặc gần tối ưu. Bằng việc sử dụng trực tiếp hàm mục tiêu trong tìm kiếm, thuật toán di truyền có thể được áp dụng một cách có hiệu quả trong các bài toán không lồi, không tuyến tính cao, và phức tạp. Thuật toán di truyền trong tìm kiếm đã thường xuyên được sử dụng để giải các bài toán tối ưu hoá và các bài toán không tuyến tính kết hợp với các ràng buộc hoặc các hàm mục tiêu phức tạp. Thuật toán di truyền không bảo đảm tìm ra tối ưu toàn cục; tuy nhiên nó có vẻ ít đặt bẫy tại vị trí tối ưu hơn các phương pháp tìm kiếm truyền thống dựa vào gradient khi hàm mục tiêu không trơn và nói chung là tốt. GA thường phân tích phần không gian giải pháp rộng hơn các phương pháp thông thường và do đó nó có thể tìm ra các giải pháp khả thi hơn trong các bài toán có ràng buộc nặng. Bài toán dành cho GA là tìm kiếm trên không gian các giả thuyết ứng cử để xác định giả thuyết tốt nhất. Trong GA “giả thuyết tốt nhất” được định Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 39 - nghĩa như là một giả thuyết tối ưu hoá một đại lượng số được định nghĩa trước cho bài toán sắp tới, được gọi là độ thích nghi của giả thuyết. Mặc dù các thuật giải di truyền được thực hiện thay đổi theo bài toán cụ thể, nhưng chúng chia sẻ chung cấu trúc tiêu biểu sau: Thuật giải hoạt động bằng cách cập nhật liên tục tập giả thuyết – được gọi là quần thể. Ở mỗi lần lặp, tất cả các cá thể trong quần thể được ước lượng tương ứng với hàm thích nghi. Rồi quần thể mới được tạo ra bằng cách lựa chọn có xác suất các cá thể thích nghi tốt nhất từ quần thể hiện tại. Một số trong những cá thể được chọn được đưa nguyên vẹn vào quần thể kế tiếp. Những cá thể khác được dùng làm cơ sở để tạo ra các cá thể con bằng cách áp dụng các tác động di truyền: lai ghép và đột biến. Các giả thuyết mới được tạo ra bằng cách áp dụng toán tử lai ghép cho cặp giả thuyết thích nghi nhất và bằng cách tạo ra các đột biến điểm đơn trong thế hệ giả thuyết kết quả. Quá trình này được lặp cho đến khi các giả thuyết thích hợp được phát hiện. Các giả thuyết trong GA thường được thể hiện dưới dạng chuỗi các bit, để chúng có thể dễ dàng được thực hiện bởi các toán tử di truyền: đột biến và lai ghép. Các giả thuyết được thể hiện bởi chuỗi bit này có thể khá phức tạp. Hàm thích nghi (hàm phạt) định nghĩa tiêu chuẩn để xếp hạng các giả thuyết tiềm ẩn và để chọn lọc chúng theo xác suất để đưa vào quần thể thế hệ kế tiếp. Thường các tiêu chuẩn khác có thể được bao hàm, chẳng hạn như độ phức tạp và mức độ tổng quát của luật. Một cách tổng quát hơn, khi giả thuyết chuỗi bit được hiểu như là một thủ tục phức tạp, hàm thích nghi có thể đo hiệu suất tổng của thủ tục kết quả hơn là hiệu suất của các luật riêng biệt. Với bài toàn này, bộ khả thi i là tập hợp các giá trị của i làm thoả mãn tất cả các ràng buộc trong Gi. Thuật toán di truyền trong tìm kiếm không làm việc trực tiếp với các điểm trong bộ i , nhưng có ánh xạ các điểm trong i Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 40 - thành xâu các ký hiệu được gọi là nhiễm sắc thể. Một lược đồ biểu diễn nhị phân đơn giản sử dụng các ký hiệu {0, 1}; mỗi nhiễm sắc thể dài L ký hiệu. Ví dụ một nhiễm sắc thể nhị phân biểu diễn véctơ  inii  ,....,1 có dạng: Mỗi thành phần của i sử dụng n L bít, với n = |Si|. Biểu diễn nhiễm sắc thể này tự động xử lý các ràng buộc khoảng trên i . Ví dụ nếu ij chỉ có thể lấy các giá trị trong khoảng [lij, hij], thì bằng việc ánh xạ các số nguyên trong khoảng [0, 2L/n - 1] thành các giá trị trong khoảng [lij, hij] qua sự tịnh tiến và sự đếm gộp đơn giản, điều này đảm bảo rằng bất cứ hoạt động nào được thực hiện trên nhiễm sắc thể đó, các đầu vào được đảm bảo ở trong khoảng khả thi. Mỗi nhiễm sắc thể có một giá trị tương ứng với hàm mục tiêu, như là sự phù hợp của nhiễm sắc thể. Để xử lý các loại ràng buộc khác, người ta phạt các nhiễm sắc thể không khả thi bằng cách làm giảm giá trị phù hợp của chúng theo hàm phạt )( i - hàm biểu diễn mức độ không khả thi. Không mất tính tổng quát, nếu bài toán tối ưu hoá được giải với các ràng buộc Gi={gi1,…., gip}, thì hàm thích hợp được sử dụng là )()( iiic S   , trong đó  là hệ số phạt và nó được chọn đủ lớn để phạt hàm mục tiêu trong trường hợp i không khả thi. Hàm phạt )( i được tính như sau:    p j iiji g 1 )()( trong đó: Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 41 -  ),( iijg biểu diễn lượng không khả thi đối với ràng buộc gij. Ví dụ nếu ràng buộc gij là 0 1   n j ij thì ||||),( 1   n j ijiij g . Thuật toán di truyền ít dùng cho tối ưu cục bộ. Tuy nhiên, thuật toán di truyền yêu cầu một lượng lớn các đánh giá hàm cho hội tụ tới tối ưu toàn cục. Như vậy, thuật toán di truyền được sử dụng trong tìm kiếm chỉ khi thời gian xử lý không đòi hỏi chính xác (khắt khe) và thuỷ vân được thực hiện độc lập. 3.2.3. Thuật toán nhúng thuỷ vân Thuỷ vân là một bộ l bít W=bl-1, . . . , b0 được nhúng vào các phần dữ liệu  10 ,..., mSS . Để việc nhúng thuỷ vân được nhiều lần trong bộ dữ liệu, độ dài thuỷ vân l được chọn sao cho: ml  . Thuật toán nhúng thuỷ vân sẽ nhúng bít ib vào phần kS sao cho ilk mod . Kỹ thuật này đảm bảo mỗi bít thuỷ vân được nhúng       l m lần trong bộ dữ liệu D . Thuật toán nhúng thuỷ vân được mô tả như sau: Algorithm: embed_watermark Input: Tập dữ liệu D, khoá bí mật Ks, số phân vùng m, thuỷ vân W = {b0, …, bl-1} Output: Tập dữ liệu đã nhúng thuỷ vân Dw, ngưỡng tối ưu giải mã T * 1. Dw, Xmax, Xmin  {} 2. S0, …., Sm-1  get_partition(D, Ks, m) 3. for each Partition Sk )( iijg   = 0 Nếu i thoả mãn ràng buộc gij (gij, i ) Trƣờng hợp còn lại Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 42 - 4. i  k mod l 5. w kS  encode_single_bit(bi, Sk, c, Xmax, Xmin) 6. insert w kS  Dw 7. T*  get_optimal_thershold(Xmax, Xmin) 8. return Dw, T * Thuật toán nhúng thuỷ vân sẽ sinh ra các phần  10 ,..., mSS bằng cách gọi hàm get_partitions, sau đó với mỗi phần kS bít thuỷ vân ib được mã hoá bằng cách sử dụng thuật toán mã hoá bít đơn (encode_single_bit). Phần thay đổi sinh ra W kS được chèn vào bộ dữ liệu đã nhúng thuỷ vân. Các thống kê (Xmax, Xmin) được thu thập sau mỗi bít nhúng và được sử dụng bằng thuật toán get_optimal_threshold để tính toán ngưỡng giải mã tối ưu. *) Các giá trị thực nghiệm mà tác giả áp dụng trong luận văn này là : Watermark = 10101 ; //Chuỗi bit thuỷ vân dùng để nhúng c = 0.75; // Tham số bí mật c  = 10; // Kích thƣớc nhỏ nhất của một phân vùng l = 5 // Độ dài thuỷ vân 3.2.4. Đánh giá ngƣỡng giải mã Trong phần này, ta sẽ thảo luận kỹ thuật giải mã bít – kỹ thuật được dùng để lấy ra bít thuỷ vân đã nhúng bi từ phần W iS . Kỹ thuật giải mã bít dựa trên ngưỡng tối ưu T* để làm cực tiểu hoá xác suất xảy ra lỗi giải mã. Với phần dữ liệu W iS , kỹ thuật giải mã bít sẽ tính toán hàm giấu )( WiS và so sánh với ngưỡng giải mã tối ưu T* để giải mã bít đã nhúng ib . Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 43 - Nếu )( WiS >T* thì bít được giải mã là 1, ngược lại bít giải mã là 0. Ví dụ: sử dụng hàm giấu đã được mô tả ở các phần trước, kỹ thuật giải mã tính toán tail count đã chuẩn hoá của W iS bằng cách tính toán tham chiếu ref và đếm số đầu vào trong W iS lớn hơn ref. Sau đó, tail count đã chuẩn hoá được so sánh với T*. Giá trị của ngưỡng T* nên được tính toán cẩn thận để làm cực tiểu hoá xác suất xảy ra lỗi giải mã bít. Xác suất xảy ra lỗi giải mã bít được định nghĩa như là xác suất (khả năng) bít nhúng được giải mã sai. Ngưỡng giải mã tối ưu T* được chọn để làm cực tiểu hoá xác suất xảy ra lỗi giải mã. Thời kỳ nhúng bít dựa trên việc cực tiểu hoá hoặc cực đại hoá tail count; các giá trị hàm giấu đã tối ưu hoá này sẽ được tính toán trong suốt thời kỳ mã hoá để tính toán ngưỡng tối ưu T*. Các giá trị hàm giấu cực đại hoá tương ứng với bi = 1 được lưu trong tập Xmax. Tương tự, các giá trị hàm giấu cực tiểu hoá được lưu trữ trong Xmin. Cho errP , 0P và 1P tương ứng là xác suất xảy ra lỗi giải mã, xác suất mã hoá bít =0, và xác suất mã hoá bít =1. Cho eb , db , và )(xf tương ứng là bít được mã hoá, bít được giải mã, và hàm mật độ xác suất. Khi đó, errP được tính như sau: errP = )0,1()1,0(  eded bbPbbP = 01 )0|1()1|0( PbbPPbbP eded  = 01 )0|()1|( PbTxPPbTxP ee  =     T e T e dxbxfPdxbxfP )0|()1|( 01 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 44 - Để cực tiểu hoá xác suất lỗi giải mã ( errP ) đối với ngưỡng T, ta lấy đạo hàm cấp một của errP đối với T để xác định ngưỡng tối ưu T*, như sau:             T e T e err dxbxf T Pdxbxf T P T P )0|()1|( 01 )0|()1|( 01  ee bTfPbTfP Các phân phối )0|( ebxf và )1|( ebxf được đánh giá từ các thống kê của các tập hợp Xmin và Xmax tương ứng. Qua các thí nghiệm về Xmin và Xmax , cho thấy các phân phối )0|( ebxf và )1|( ebxf có dạng chuẩn tắc và như vậy chúng có thể được đánh giá như các phân phối Gaussian ),( 00 N và ),( 11 N một cách tương ứng. Tuy nhiên, sự phân tích sau đây có thể vẫn được thực hiện với các kiểu phân phối khác. P0 có thể được đánh giá bằng |||| || minmax min XX X  , 1P 01 P . Thay thế các biểu thức Gaussian cho )0|( ebxf và )1|( ebxf , thì đạo hàm cấp một của errP có dạng: ) 2 )( exp( 2 ) 2 )( exp( 2 2 0 2 0 0 0 2 1 2 1 1 1            TPTP T Perr Cho đạo hàm cấp một của errP bằng 0, ta sẽ được phương trình bậc 2, có thể tính giá trị ngưỡng tối ưu T* làm cực tiểu hoá errP . Đạo hàm cấp 2 của errP được đánh giá tại T* để đảm bảo điều kiện ( 0 *)( 2 2    T TPerr ) được thoả mãn. 0 2 ln** 2 21 2 0 2 1 2 0 2 0 2 1 01 10 2 1 2 0 2 01 2 102 2 1 2 0 2 1 2 0                   P TT Từ sự phân tích trên, việc chọn ngưỡng tối ưu T* dựa trên các thống kê kết quả thu được của thuật toán nhúng thuỷ vân. Ngưỡng tối ưu T* làm cực Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 45 - tiểu hoá xác suất xảy ra lỗi giải mã và như thế nó sẽ nâng cao độ bền của thuỷ vân được nhúng do khả năng giải mã thành công tăng. Hình 3. 2. Thống kê phân bố tập Xmax, Xmin và cách lấy ngưỡng T* Ở hình trên, đường chấm gạch nằm giữa hai phân phối sẽ làm cực tiểu hoá xác suất xảy ra lỗi giải mã. Xác suất xảy ra lỗi giải mã cũng phụ thuộc vào các ràng buộc sử dụng. Nếu các ràng buộc sử dụng chặt thì lượng thay đổi cho bộ dữ liệu D có thể không đủ cho sự chèn thuỷ vân. Tất cả xác suất xảy ra lỗi giải mã thuỷ vân được làm giảm đi bằng cách nhúng thuỷ vân nhiều lần trong bộ dữ liệu đó, về cơ bản nó là sự lặp lại mã sửa sai. Sau nhiều lần chạy thử nghiệm kết quả giải mã, tác giả của luận văn nhận thấy rằng, ngưỡng giải mã T* sẽ nằm trong miền thuộc phần giao nhau của hai phân phối giải mã ra bit 0 và giải mã ra bit 1. Miền giao nhau này thường nằm ngoài khoảng tin cậy khi tính thống kê của tập Xmax và Xmin. Vì vậy, để Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 46 - đơn giản và tăng tốc độ xử lý tính toán khi lập trình, tác giả đã tính toán giá trị ngưỡng giải mã T* bằng cách lấy giá trị trung bình của các tập thống kê Xmax và Xmin này: + Lấy giá trị cực đại của tập Xmin + Lấy giá trị cực tiểu của tập Xmax T* = 2 )()( minmax XMaxXMin  Theo các kết quả thực nghiệm tác giả nhận thấy rằng, ngưỡng giải mã T* phụ thuộc vào phân phối của tập Xmax và Xmin, nếu phân phối của hai tập này càng cách xa nhau thì sẽ càng làm cực tiểu hoá lỗi giải mã. Điều này phụ thuộc nhiều vào kỹ thuật áp dụng dùng để giải bài toán tối ưu hoá, ở đây là kỹ thuật GA. 3.3. Giải mã thuỷ vân Thuật toán phát hiện thuỷ vân sẽ lấy ra thuỷ vân đã nhúng nhờ các tham số bí mật gồm có: KS, m,  , c, T. Quá trình giải mã thuỷ vân sẽ được thực hiện thông qua ba bước chính: Phân hoạch, giải mã và bầu chọn theo đa số + Phân hoạch tập dữ liệu chứa thuỷ vân: Kỹ thuật phân hoạch này đã được trình bày kỹ trong phần [3.1]. Đầu vào bao gồm: i) Bộ dữ liệu đã thuỷ vân DW ii) Khoá bí mật KS iii) Số phần phân hoạch m Bộ dữ liệu đạt được DW là các phần phân hoạch  10 ,..., mSS . Mỗi phần sẽ chứa một bit thuỷ vân đơn đã được mã hoá trong đó. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 47 - + Giải mã để lấy ra bít đã nhúng: Sử dụng lược đồ giải mã ngưỡng dựa vào ngưỡng tối ưu T làm cực tiểu hoá xác suất xảy ra lỗi giải mã như đã nói trong phần [3.2.4]. Nếu kích cỡ phần dữ liệu nhỏ hơn  thì bít giải mã không được thực hiện, ngược lại thì nó được giải mã nhờ lược đồ giải mã ngưỡng. Thuỷ vân 01 ,..., bbW l được nhúng vài lần trong bộ dữ liệu, mỗi bít thuỷ vân được lấy ra vài lần ở nơi mà bít ib được lấy ra từ phần kS với ilk mod . Các bít lấy ra được giải mã nhờ kỹ thuật bầu chọn theo đa số. Mỗi bít ib được lấy ra l m lần . + Kỹ thuật bầu chọn theo đa số: Bit bi được quyết định bởi số lượng bit 0 hay bit 1 trong tổng số bit của bi được giải mã ra. Ví dụ nếu bit b2 được nhúng 10 lần vào cơ sở dữ liệu, sau khi giải mã, kết quả giải mã thuỷ vân thu được giả sử là 7 bit 0 và 3 bit 1. Vậy kết luận của kỹ thuật bình chọn theo đa số là bit b2 là bit 0 (b2 = 0). Với kỹ thuật bầu chọn theo đa số này thuỷ vân nhận được sẽ bền vững trước một số tấn công như chèn thêm dữ liệu, sửa đổi dữ liệu, hoặc ngay cả xoá dữ liệu, bởi vì ngưỡng giải mã được chọn tuân thủ theo nguyên lý xác suất thống kê nhằm làm cực tiểu hoá lỗi giải mã. Thuật toán phát hiện thuỷ vân như sau: Algorithm: detect_watermark Input: Tập dữ liệu đã thuỷ vân Dw, m, c,  , Ks, T *, độ dài thuỷ vân l Output: Chuỗi thuỷ vân đã nhúng WD 1. Set ones[0,.., l-1]  0 //Tập các bit giải mã là bit 1 2. Set zeros[0,.., l-1]  0 //Tập các bit giải mã là bit 0 3. S0,…., Sm-1  get_pertitions(Dw, Ks, m) 4. for j = 0 to m – 1 5. if |Sj|   Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 48 - 6. i  j mod l 7. value  (Sj, 0, c) 8. if value  T* 9. ones[i]  ones[i] + 1 10. else 11. zeros[i]  zeros[i] + 1 12. for j = 0 to l -1 13. if ones[j] > zeros[j] 14. WD[j]  1 15. else if ones[j] < zeros[j] 16. WD[j]  0 17. else 18. WD[j]  x 19. Return WD Trường hợp quan hệ đa thuộc tính thì sự đàn hồi ( bền vững) thuỷ vân được tăng lên do nhúng thuỷ vân trong nhiều thuộc tính. 3.4. Kết quả thực nghiệm Bộ dữ liệu thực nghiệm trong luận văn này là bộ dữ liệu tự tạo được giả định là số liệu điện sinh hoạt của một vùng nào đó, bộ dữ liệu này bao gồm 8000 bộ. Để cho đơn giản trong quá trình cài đặt và thực nghiệm, giả sử bộ dữ liệu chỉ bao gồm 2 trường, một trường là khoá chính của quan hệ, một trường là trường được chọn để nhúng thuỷ vân. Các thông số dùng cho quá trình thí nghiệm bao gồm: + Hàm băm: MD5 + Khoá bí mật: KS = 97 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 49 - + Số phân vùng: m = 30 + Tham số bí mật c = 0.75 + Chuỗi bit đem nhúng (watermark): 10101 + Kích cỡ nhỏ nhất của 1 phân vùng:  = 10 + Số cặp dùng cho quá trình sinh sản của GA: 5 cặp = 10 cá thể + Số thế hệ tiến hoá: 50 + Số cá thể khởi tạo ngẫu nhiên ban đầu: 50 + Ràng buộc thay đổi dữ liệu:  8%% (0.008) Bộ dữ liệu được thiết kế chứa trong file định dạng Excel với tên là Data.xls Tác giả dùng Matlab 7.04 làm môi trường cài đặt ứng dụng. Thí nghiệm được chạy trên hệ thống có cấu hình Intel Pentium IV 2 Ghz, 512 MB Ram. Sau nhiều lần chạy thử nghiệm tác giả nhận thấy, tốc độ giải mã thuỷ vân nhanh hơn gấp nhiều lần tốc độ nhúng thuỷ vân (trung bình từ 10 đến 15 lần). Thử nghiệm với các tấn công kết quả như sau: Thực hiện tấn công mỗi kiểu tấn công 20 lần, mỗi lần tác động trên các số lượng bản ghi khác nhau, kết quả thống kê như bảng 2 dưới đây. Căn cứ vào bảng đã thống kê các tấn công sau các quá trình thực nghiệm tác giả có nhận xét như sau: + Tỉ lệ thành công của kiểu tấn công thay đổi dữ liệu là cao nhất. Khi thay đổi các thông số đầu vào như khoảng cho phép dữ liệu thay đổi là 0.05, số lượng bộ bị thay đổi là 7500 (trên tổng số 8000 bộ) tương đương với trên 90% tổng số bộ bị thay đổi thì tỉ lệ thành công khi giải mã thuỷ vân vẫn là trên 60% (khoảng 63%). Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 50 - + Tỉ lệ giải mã thuỷ vân thành công của kiểu tấn công xoá bộ kém hơn so với kiểu tấn công thay đổi dữ liệu. i) Với số lượng bộ cho phép xoá đi là 30% tổng số bộ thì tỉ lệ giải mã thành công là trên 40%. ii) Với 50% số bộ bị xoá thì tỉ lệ giải mã thành công/thất bại là trên 15%. + Tỉ lệ giải mã thuỷ vân thành công/thất bại của kiểu tấn công chèn thêm bộ vào cơ sở dữ liệu là thấp nhất. i) Nếu chèn trung bình khoảng 7.5% đến 8% tổng số bộ vào cơ sở dữ liệu thì tỉ lệ giải mã thành công là 50% ii) Nếu chèn thêm trên 10% (khoảng 12%) số lượng bộ mới vào cơ sở dữ liệu thì tỉ lệ giải mã thành công là 0% Các thông số trên cũng có thể bị thay đổi nếu thay đổi các thông số đầu vào như: Tăng hoặc giảm khoảng thay đổi cho phép trên dữ liệu khi nhúng thuỷ vân; độ ngẫu nhiên của việc tấn công (phá hoại); số lượng phân vùng đi kèm với độ lớn của dữ liệu (tổng số bộ). Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 51 - Loại tấn công Số bản ghi bị tác động 100 200 300 500 600 1000 1500 2000 2500 3000 4000 5000 6000 7000 7500 Xoá Thành công (lần) 20 20 18 20 18 14 14 13 8 4 3 1 0 0 0 Thất bại (lần) 0 0 2 0 2 6 6 7 12 16 17 19 20 20 20 Chèn Thành công (lần) 20 20 20 17 10 0 0 0 0 0 0 0 0 0 0 Thất bại (lần) 0 0 0 3 10 20 20 20 20 20 20 20 20 20 20 Sửa Thành công (lần) 20 20 20 18 19 17 19 18 18 18 16 12 11 11 12 Thất bại (lần) 0 0 0 2 1 3 1 2 2 2 4 8 9 9 8 Bảng 2. Thống kê các tấn công với số lần tấn công là 20 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 52 - KẾT LUẬN VÀ KIẾN NGHỊ Như vậy, để tiến hành thuỷ vân và giải mã thuỷ vân cơ sở dữ liệu quan hệ, quá trình thực hiện cần được tiến hành qua hai phần chính là nhúng thuỷ vân và giải mã thuỷ vân đã nhúng. Việc nhúng thuỷ vân được thực hiện thông qua ba bước nhỏ đó là: Phân hoạch bộ dữ liệu, nhúng thuỷ vân vào các phân hoạch và tính toán ngưỡng tối ưu giải mã. + Mục đích của phân hoạch là chia nhỏ bộ dữ liệu thành các nhóm bản ghi (phân hoạch) sao cho trong mỗi nhóm các bản ghi được chọn trong cơ sở dữ liệu là ngẫu nhiên. Để tăng tính ngẫu nhiên và đảm bảo tính bí mật trong quá trình lựa chọn các bản ghi khi phân vào mỗi phân vùng thì quá trình phân hoạch được thực hiện với hàm băm mật mã (HMAC). Một số dạng hàm băm đáp ứng được các tiêu chí này có thể được áp dụng như MD5, SHA-0, SHA- 1… Việc lựa chọn hàm băm cũng có ảnh hưởng đến tốc độ tính toán khi phân hoạch dữ liệu, điều này tuỳ thuộc vào số word được lựa chọn khi sử dụng các hàm băm này. + Việc nhúng thuỷ vân sẽ được tính toán một cách hợp lý để đảm bảo những thay đổi trong dữ liệu là trong giới hạn cho phép. Thuật toán GA được áp dụng trong phần này nhằm tính toán các giá trị tối ưu để chèn các bit vào các phân hoạch. Việc giải bài toán tối ưu áp dụng giải thuật GA nhằm đưa ra hai tập thống kê Xmax và Xmin sao cho các phân phối trên hai tập này là cách xa nhau, điều này sẽ giúp làm cực tiểu hoá lỗi giải mã, đồng thời cũng là điểm mấu chốt giúp cho kỹ thuật thuỷ vân này đàn hồi hơn trước các tấn công thông thường. + Căn cứ vào hai tập thống kê Xmax và Xmin được lưu lại trong quá trình nhúng bit thuỷ vân, nguyên tắc xác suất thống kê được áp dụng để tính toán ra Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 53 - ngưỡng giải mã tối ưu cho bài toán này. Việc chọn ngưỡng giải mã tối ưu sẽ có ảnh hưởng rất lớn đến tính chính xác của quá trình giải mã, đặc biệt là trong trường hợp dữ liệu đã thuỷ vân bị tấn công. Quá trình giải mã thuỷ vân cũng được thực hiện qua ba bước là: Phân hoạch bộ dữ liệu đã nhúng thuỷ vân, giải mã thuỷ vân, và bình chọn theo đa số. Trong quá trình giải mã thuỷ vân này sẽ sử dụng một số tham số của quá trình nhúng thuỷ vân như các tham số bí mật (số phần phân hoạch, khoá bí mật), các tập thống kê Xmax, Xmin. Với kỹ thuật giải mã dùng phương pháp bình chọn theo đa số thì quá trình giải mã không cần thông tin về dữ liệu gốc những vẫn có thể giải mã ra được thuỷ vân đã nhúng. Mặc dù kỹ thuật thuỷ vân sử dụng GA để giải bài toán tối ưu trong trường hợp này là rất phù hợp, tuy nhiên kỹ thuật GA này chỉ áp dụng trong những ứng dụng với các bài toán không lồi, không tuyến tính cao và không yêu cầu quá khắt khe về thời gian tính toán. Kỹ thuật GA cần được nghiên cứu thêm để cải tiến về tốc độ tính toán cũng như làm giải quyết vấn đề tối ưu hoá tốt hơn nữa. Hướng nghiên cứu tiếp theo để phát triển đề tài theo tác giả đề nghị là: + Cải tiến hàm giấu để GA hội tụ nhanh hơn nhằm làm tăng tốc độ nhúng thuỷ vân. + Cải tiến cách sinh sản của các cá thể trong quần thể để GA có được những kết quả tối ưu tốt hơn. + Cải tiến hàm đánh giá của GA để có được sự đa dạng các cá thể trong quần thể của GA nhằm thu được các cá thể tốt hơn sau mỗi lần tiến hoá. + Nghiên cứu giải pháp để tránh trường hợp tối ưu cục bộ (giả tối ưu). Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 54 - PHỤ LỤC Các hàm băm được ứng dụng trong nhiều lĩnh vực, chúng thường được thiết kế phù hợp với từng ứng dụng. Một hàm băm tốt là một phép biến đổi "một chiều", nghĩa là không có một phương pháp thực tiễn để tính toán được dữ liệu vào nào đó tương ứng với giá trị băm mong muốn, khi đó việc giả mạo sẽ rất khó khăn. Một hàm một chiều mật mã học điển hình không có tính chất hàm đơn ánh và tạo nên một hàm băm hiệu quả. Các hàm băm dành cho việc phát hiện và sửa lỗi tập trung phân biệt các trường hợp mà dữ liệu đã bị làm nhiễu bởi các quá trình ngẫu nhiên. Khi các hàm băm được dùng cho các giá trị tổng kiểm, giá trị băm tương đối nhỏ có thể được dùng để kiểm chứng rằng một file dữ liệu có kích thước tùy ý chưa bị sửa đổi. Hàm băm được dùng để phát hiện lỗi truyền dữ liệu. Tại nơi gửi, hàm băm được tính cho dữ liệu được gửi, giá trị băm này được gửi cùng dữ liệu. Tại đầu nhận, hàm băm lại được tính lần nữa, nếu các giá trị băm không trùng nhau thì lỗi đã xảy ra ở đâu đó trong quá trình truyền. Việc này được gọi là kiểm tra dư (redundancy check). * Hàm băm MD5 (Message-Digest algorithm 5) MD5 là một hàm băm để mã hoá với giá trị băm là 128bit. Từng được xem là một chuẩn trên Internet, MD5 đã được sử dụng rộng rãi trong các chương trình an ninh mạng, và cũng thường được dùng để kiểm tra tính nguyên vẹn của tập tin. MD5 được thiết kế bởi Ronald Rivest vào năm 1991 để thay thế cho hàm băm trước đó, MD4 (cũng do ông thiết kế, trước đó nữa là MD2). MD5 có 2 ứng dụng quan trọng: 1/ MD5 được sử dụng rộng rải trong thế giới phần mềm để đảm bảo rằng Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 55 - tập tin tải về không bị hỏng. Người sử dụng có thể so sánh giữa thông số kiểm tra phần mềm bằng MD5 được công bố với thông số kiểm tra phần mềm tải về bằng MD5. 2/ MD5 được dùng để mã hoá mật khẩu. Mục đích của việc mã hoá này là biến đổi một chuổi mật khẩu thành một đoạn mã khác, sao cho từ đoạn mã đó không thể nào lần trở lại mật khẩu. Có nghĩa là việc giải mã là không thể hoặc phải mất một khoãng thời gian rất dài (đủ để làm nản lòng kẻ tấn công). Thuật giải MD5 biến đổi một thông điệp có chiều dài bất kì thành một khối có kích thước cố định 128 bits. Thông điệp đưa vào sẽ được cắt thành các khối 512 bits. Thông điệp được đưa vào bộ đệm để chiều dài của nó sẽ chia hết cho 512. Bộ đệm hoạt động như sau: - Trước tiên nó sẽ chèn bit 1 vào cuối thông điệp. - Tiếp đó là hàng loạt bit Zero cho tới khi chiều dài của nó nhỏ hơn bội số của 512 một khoảng 64 bit . - Phần còn lại sẽ được lấp đầy bởi một số nguyên 64 bit biểu diễn chiều dài ban đầu của thông điệp. Thuật toán chính của MD5 hoạt động trên một bộ 128 bit. Chia nhỏ nó ra thành 4 từ 32 bit, kí hiệu là A,B,C và D. Các giá trị này là các hằng số cố định. Sau đó thuật toán chính sẽ luân phiên hoạt động trên các khối 512 bit. Mỗi khối sẽ phối hợp với một bộ. Quá trình xữ lý một khối thông điệp bao gồm 4 bước tương tự nhau, gọi là vòng (“round”). Mỗi vòng lại gồm 16 quá trình tương tự nhau dựa trên hàm một chiều F, phép cộng module và phép xoay trái… Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 56 - Hình bên dưới mô tả một quá trình trong một vòng. Có 4 hàm một chiều F có thể sử dụng. Mỗi vòng sử dụng một hàm khác nhau. Hàm băm MD5 (còn được gọi là hàm tóm tắt thông điệp - message degests) sẽ trả về một chuỗi số thập lục phân gồm 32 số liên tiếp. Dưới đây là các ví dụ mô tả các kết quả thu được sau khi băm. MD5("K6CH") = 56861ffa22479429ba47cffeca03304e MD5("k6ch") = 11df758de80935b75b2a7bc1479aa164 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 57 - TÀI LIỆU THAM KHẢO [1]. “Nghiên cứu và Phát triển Kỹ thuật Thuỷ vân Cơ sở Dữ liệu Quan hệ”, Báo cáo kết quả nghiên cứu của đề tài cơ sở 2008, 12/2008, Phòng CSDL & LT. [2]. Bùi Thế Hồng, Nguyễn Thị Thu Hằng, Lƣu Thị Bích Hƣơng, “Thủy vân cơ sở dữ liệu quan hệ”, Tạp chí Khoa học & Công nghệ, ĐH Thái Nguyên, 2009. [3]. Vũ Ba Đình, “Giấu thông tin trong cơ sở dữ liệu không gian”, Tạp chí nghiên cứu khoa học kỹ thuật và công nghệ Quân sự, số 4, 30-37 [4]. Vũ Ba Đình, Nguyễn Xuân Huy, “Thuộc tính chẵn lẻ áp dụng trong kỹ thuật giấu tin bền vững”, Kỷ yếu Hội thảo FAIR: Nghiên cứu cơ bản và ứng dụng CNTT, NXB KHKT Hà Nội, 2004. [5]. Hoàng Kiếm, “Giải thuật di truyền - Cách giải các bài toán tự nhiên trên máy tính”, NXB Khoa học kỹ thuật, 2000. [6]. Nguyễn Đình Thúc, “Trí tuệ nhân tạo – Lập trình tiến hoá”, Nhà xuất bản Giáo dục. [7]. R. Agrawal, J. Kiernan, “Watermarking Relational Databases” in Proceedings of the 28th VLDB Conference, Hong Kong, China, 2002. [8]. R. Agrawal, P. J. Haas, and J. Kiernan. “Watermarking relational data: framework, algorithms and analysis*”. The VLDB Journal (2003). [9]. R. Sion, M. Atallah, S. Prabhakar.“Watermarking Relational Databases” CERIAS TR 2002-28*. Center for Education and Research in Information Assurance, Computer Sciences, Purdue University, 2002. [10]. R. Sion, M. Atallah, and S. Prabhakar. “Rights Protection for Relational Data”. IEEE Transactions on Knowledge and Data Engineering, 16(6), June 2004. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 58 - [11]. R. Sion, “Proving ownership over categorical data”. ICDE 2004. [12]. E. Bertino, B.C Ooi, Y.Yang, and R. Deng, “Privacy and ownership preserving of outsourced medical data”. ICDE 2005. [13]. Y. Li, H. Guo, and S. Jajodia, “Tamper Detection and Localization for Categorical Data Using Fragile Watermarks”. DRM 2004 [14]. H. Guo, Y. Li, A. Liu, and S. Jajodia, “A Fragile Watermarking Scheme for Detecting Malicious Modifications of Database Relations”. IS 2006 [15]. R. Sion, M. Atallah, and S. Prabhakar, “Rights Protection for Relational Data”. SIGMOD 2003. [16]. Y. Li, V. Swarup, and S. Jajodia, “Fingerprinting Relational Databases: Schemes and Specialties”. TDSC 2005 [17]. Y. Li, H. Guo, and S. Wang, “A Multi-Bit Watermark for Relational Data”. JDM 2007 [18]. Y. Li and R. Deng, “Publicly Verifiable Ownership Protection for Relational Databases”. ASIACCS 2006 [19]. Y. Li, V. Swarupand S. Jajodia, “Constructing a Virtual Primary Key for Fingerprinting Relational Data”. DRM 2003 [20]. J. Guo, Y. Li, R. Deng, and K. Chen, “Rights Protection for Data Cubes”. ISC 2006 [21]. R. Sion, M. Atallah, and S. Prabhakar, “Resilient Rights Protection for Sensor Streams”. VLDB 2004 [22]. M. Shehab, E. Bertino, A. Ghafoor. “Watermarking Relational Databases using Optimization Based Techniques”. CERIAS Tech Report 2006-41. [23]. MichaelArnold, MartinSchmucker, StephenD.Wolthusen, “Techniques and Applications of Digital Watermarking and ContentProtection”, ISBN1-58053-111-3, Tr. 15-53, 2003. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên - 59 - [24]. Saraju P. Mohanty, “Digital Watermarking : A Tutorial Review”, Dept of Comp Sc and Eng, Unversity of South Florida. 2001. [25]. J.J. Eggers, “Information embedding and digital watermarking”, Standford University, 2002. [26]. Juergen Seitz University of Cooperative Education Heidenheim, Germany, “Digital watermarking for digital media”, ISBN 1-59140-520-3. Tr. 1-35. [27]. YingjiuLi, “Database Watermarking: A Systematic View”, 2008. [28]. f5e5c5b595f5e [29]. [30]. www.watermarkingworld.org.

Các file đính kèm theo tài liệu này:

  • pdf29LV09_CNTT_KHMTVuVanHuy.pdf
Tài liệu liên quan