Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 108 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
108
Dung lượng
1,22 MB
Nội dung
Hệ mật mã đồng cấu đầy đủ BGV thư viện mã hóa đồng cấu HeLib by Phạm Trần Tuấn Submitted to the Viện Công Nghệ Thông Tin Truyền Thông in partial fulfillment of the requirements for the degree of Đồ Án Tốt Nghiệp chuyên ngành Khoa Học Máy Tính at the HA NOI UNIVERSITY OF SCIENCE AND TECHNOLOGY Tháng 2016 c Ha Noi Univervisty Of Science and Technology 2016 All rights reserved Author Viện Công Nghệ Thông Tin Truyền Thông Tháng 6, 2016 Certified by Trần Vĩnh Đức PhD Thesis Supervisor Accepted by Lê Hồng Sơn Chairman, Department Committee on Graduate Theses PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Thông tin sinh viên Họ tên sinh viên : Phạm Trần Tuấn Số điện thoại liên lạc : 0898258558 Email : Ptuankhang@gmail.com Lớp : CNTT-TT 2.3 Hệ đào tạo : Kỹ sư đại trà Đồ án tốt nghiệp thực : Trường đại học Bách Khoa Hà Nội Từ ngày : 07/03/2016 đến ngày 12/06/2016 Mục đích nội dung Đồ án Tìm hiểu Hệ mật mã hóa đồng cấu đầy đủ (theo cấp) BGV ứng dụng thư viện mã hóa đồng cấu Helib để cài đặt vài thuật toán xếp liệu mã mật Các nhiệm vụ cụ thể đồ án tốt nghiệp : • Nghiên cứu lý thuyết hệ mật mã đồng cấu hệ mật mã đồng cấu đầy đủ (theo cấp) BGV • Tìm hiểu thư viện mã hóa đồng cấu HeLib • Sử dụng thư viện Helib để cài đặt số thuật toán liệu mã hóa • Xây dựng mơ hình cloud-client giả lập máy,trong máy chủ nhận nhiệm vụ xếp liệu (thông qua liệu mã mật) mà máy khách gửi đến Lời cam đoan sinh viên : Tôi - Phạm Trần Tuấn - cam kết ĐATN cơng trình nghiên cứu thân hỗ trợ TS Trần Vĩnh Đức sau dựa tài liệu phần tài liệu tham khảo Các kết quả,kiến thức trình bày đồ án trung thực hồn tồn,khơng phải chép,mượn lời thiếu trích dẫn đồ án,cơng trình khác.Ngoài phần sản phẩm đồ án,cũng công sức riêng em,không tham khảo hay chép từ nguồn mã mở bên Chữ ký: Xác nhận giáo viên hướng dẫn mức độ hoàn thành ĐATN cho phép bảo vệ: Hà Nội,ngày tháng năm 2016 Giáo viên hướng dẫn Tiến Sĩ Trần Vĩnh Đức Tóm tắt nội dung báo cáo Hệ mật mã hóa đồng cấu đầy đủ hệ cho phép hai bên tham gia bên (gọi bên dịch vụ) tính tốn hàm (mạch) liệu mật mã hóa bên khách hàng,để phục vụ yêu cầu bên khách hàng mà không cần giải mã Tính riêng tư khách hàng quan tâm, có nhiều vụ bê bối lợi dung thông tin khách hàng để vụ lợi gây nhiều công ty công nghệ khác nhau, có sở hữu sở liệu lớn thơng tin khách hàng Ngồi giải pháp tốt cho lĩnh vực sở hữu trí tuệ an tồn bảo mật, ví dụ máy tính chạy chương trình mật mã hóa mã nguồn, khơng cho phép kỹ thuật dịch ngược can thiệp đọc kiến trúc chương trình để lợi dụng vào mục đích chép, tạo chương trình độc hại nhằm xung đột với chương trình Ý tưởng hệ mã hóa đồng cấu đầy đủ Rivest đề xuất vào năm 1978 báo ông,ngay sau hệ RSA - hệ đồng cấu nhân tính - đề xuất ơng Nhưng hệ đồng cấu phát triển sau tính tốn phép nhân,hoặc phép cộng,hoặc hai phép với số lượng giới hạn phép Cho đến năm 2009, Gentry trình bày luận án tiến sĩ Đại học Stanford, đưa hướng cho việc thiết kế hệ mật mã hóa đồng cấu đầy đủ sở cho phát triển Tuy nhiên, thứ hệ mật mã đồng cấu đầy đủ số, lý thuyết phức tạp, năm 2012, giáo sư MIT Shai Halevi Victor Shoup tập đồn IBM cơng bố thư viện hệ mật mã đồng cấu có tên Helib phát triển ngôn ngữ C++ Tuy có nhiều thư viện khác thực thi hệ mã đồng cấu,nhưng thư viện thư viện mã nguồn mở, đóng góp cộng đồng mã nguồn mở, quan tâm cải tiến thường xuyên (gần vào năm 2015) Thư viện Helib dựa hệ mã hóa đồng cấu đầy đủ (theo cấp) đề xuất ba tác giả Brakerski,Gentry Halevi sau tiếp tục tối ưu Gentry,Halevi Smart Hệ BGV hệ đồng cấu ước mạch có độ sâu bất kỳ,với cấu hình tham số phù hợp với giá trị độ sâu (theo cấp),và có độ phức tạp thời gian thực tiễn Nội dung báo cáo theo trình tự sau : báo cáo trình bày kiến thức Đại số, Lý thuyết mật mã đại có liên quan chương số 2, chương số báo cáo trình bày kiến thức sở hệ mật mã đồng cấu,chương số kiến thức hệ mật mã đồng cấu BGV, chương số cài đặt thử nghiệm thư viện Helib, chương số kết luận Tất nội dung kiến thức liên quan đồ án, tác giả thêm vào theo tiêu chí sau : tác giả có tham khảo kiến thức cảm thấy cần thời gian nghiên cứu đề tài, tất nhiên phải có liên hệ mật thiết với nội dung báo cáo Cơng sức,"đóng góp" đồ án tập trung phần trình bày lại kiến thức theo cách em hiểu sau nghiên cứu,tổng hợp tài liệu phần tham khảo,và việc cá nhân em thực thi hai thuật toán xếp liệu mã mật với thư viện mật mã hóa đồng cấu Helib."Đóng góp" nằm việc thực thi hai thuật toán xếp thư viện Helib,tuy nhiên thời gian có hạn,lại khơng biết cách tập trung vào vấn đề nên làm,nên em trình bày có phần hời hợt cách em sử dụng thư viện Helib để xếp liệu mã mật,và báo cáo lại dài lan man vào phần phụ Em tiếc điều này,mong thông cảm thầy cô đọc báo cáo em Lời tri ân Cảm ơn Bố,Mẹ nuôi dạy xin cảm ơn Tiến sĩ Trần Vĩnh Đức hướng dẫn,đưa lời góp ý kịp thời q trình em hồn thành Đồ án Tầm nhìn ta thật ngắn,mà thấy việc cần phải làm - Alan Turing Mục lục Giới thiệu 17 Các kiến thức 23 2.1 Số học 23 2.1.1 Số nguyên tố Sự chia hết (Divisibility) 23 2.1.2 Tích 24 2.1.3 Số học Đồng dư 24 Cấu trúc Đại số 26 2.2.1 Nhóm 26 2.2.2 Vành 29 2.2.3 Phép đồng cấu đẳng cấu 34 2.2.4 Định lý đồng dư Trung hoa 36 2.3 Chu trình Hốn vị (Permutation Cycle) 36 2.4 Lý thuyết mật mã đại 39 2.4.1 Những nguyên tắc 39 2.4.2 An tồn tính tốn 42 2.4.3 Hệ mật mã công khai 44 Bài toán Learning with Error 46 2.5.1 Bài tốn tính tốn 46 2.5.2 Các lớp toán 47 2.5.3 Bài tốn khó Learning with Error 48 2.5.4 Bài toán Ring Learning with Errors (RLWE) 49 2.2 2.5 Hệ mật mã hóa Đồng cấu 51 3.1 Định nghĩa 52 3.2 Hệ mật mã đồng cấu đầy đủ 54 Hệ mật mã Đồng cấu đầy đủ (theo cấp) BGV 57 4.1 Các ký hiệu sử dụng 58 4.2 Hệ mã hóa mật sở BGV 58 4.2.1 Kiến trúc 59 4.2.2 Tính đắn bảo mật 60 4.2.3 Tính chất đồng cấu 61 4.2.4 Kỹ thuyật chuyển khóa 64 4.5.1 Kỹ thuật chuyển modulus 66 Họ hệ mật mã hóa đồng cấu đầy đủ theo cấp BGV 68 4.7.1 Kiến trúc 69 4.7.2 Tính đắn an toàn 72 4.14 Đóng gói rõ tính tốn đồng cấu theo lơ họ BGV 75 4.7 4.14.1 Ứng dụng Packing Patching Brakerski, Gentry Vaikuntanathan 75 4.14.2 Ứng dụng Packing Patching Gentry, Halevi Smart 77 4.14.3 Cấu hình 77 Cài đặt thực nghiệm với Helib 5.1 5.2 87 Thư viện Helib 87 5.1.1 Kiến trúc 88 5.1.2 Cấu hình tham số 88 5.1.3 Cấu trúc mã nguồn 89 Cài đặt thuật toán xếp liệu mã mật 92 5.2.1 Độ phức tạp độ sâu 92 5.2.2 Các thủ tục quan trọng 94 5.2.3 Thuật toán xếp 97 5.2.4 Kết thử nghiệm 101 10 Nếu rẽ nhánh thực với liệu thơng thường, ta rẽ theo nhánh, thẳng đến đích, nhiên kết phép tính mã mật mã mật, ta đơn giản rẽ nhánh phải thực tất khả xảy ra, sử dụng kết phép CLT để tổng hợp lại kết cuối (cũng mã mật) Để lựa chọn thuật toán xếp liệu mã mật, tác giả báo cáo tìm thuật tốn xếp song song để cài đặt, thuật tốn xếp song song có độ phụ thuộc thơng tin bước ít, có cấu trúc khơng q phức tạp, nên với khả có hạn tác giả cài đặt khoảng thời gian thực đồ án, báo cáo trình bày cách tác giả cài đặt thuật toán Bitonic Sort để xếp liệu mã hóa Ngồi tác giả có tham khảo cài đặt thuật toán Direct Sort đề xuất [C ¸ et+15], thuật toán dành nhiều phép so sánh, độ phức tạp mạch lại O(log n) Và để đạt độ phức tạp mạch tối ưu nhất, q trình tính tốn, giá trị, tham gia ước lượng nhiều lần (như thơng tin bổ sung) ta không dùng mã mà tạo nhân độc lập nhau, số lượng mã ước lượng, khơng làm ảnh hưởng cấp mà thuộc 5.2.2 Các thủ tục quan trọng Đầu tiên ta cần xác định cách mà ta mã hóa (encode) liệu số nguyên số đầu vào thành rõ dành cho đầu vào Enc trơng Các thuật tốn xếp cài đặt yêu cầu phép cộng bình thường trường số nguyên Z, mà phép cộng hệ đồng cấu BGV phép cộng vành đa thức, khó phù hợp Ngoài để thực phép so sánh ta cần can thiệp vào bit liệu để mô lại mạch so sánh kỹ thuật số (digital comparator) với phép tính bit Tác giả tìm thấy cách encode số nguyên đầu vào để phù hợp với yêu cầu thực thi sau 94 Đầu tiên ta mô tả số nguyên đầu vào a dạng dãy 32-bit, sau ta thiết lập cấu hình cho Helib cho số lượng rãnh rõ 32, rãnh ta đặt bit tương ứng số nguyên vào đó, tức ta mã hóa bit a rãnh rõ, coi mã đóng gói mã mật dành cho a Vì thao tác bit, nên ta lấy không gian rõ R2 )(với p = r = 1), để có số lượng rãnh 32 tác giả thử vét cạn tìm giá trị m = 771 Sau báo cáo trình bày cách cài đặt sơ lược thủ tục quan trọng, yếu tố cốt tử cho thuật toán xếp so sánh (compare-based sorting algorithm) : so sánh (compare) Thống ký hiệu • Nếu ta viết Dec(c) = tức c mã mật đóng gói nslots rõ sau 0, 0, , • Nếu ta viết Dec(c) = tức c mã mật đóng gói nslots rõ sau 0, 0, , • Nếu ta viết Dec(c ) = Dec(c) Dec(c) = Dec(c ) = 0, Dec(c) = Dec(c ) = Phép so sánh compare Ý tưởng để thực phép so sánh, dựa thao tác bit ta tham khảo cấu trúc so sánh kỹ thuật số, để mô tả cách làm việc so sánh kỹ thuật số, ta xem xét hai số với − bit sau : A = A3 A2 A1 A0 B = B3 B2 B1 B0 Mọi phép cộng phép OR phép nhân phép AND Đầu tiên so sánh bit Ai Bi lấy kết xi có giá trị bit Ai = Bi bit Ai = Bi Tính theo cơng thức sau xi = Ai Bi + A¯i B¯i Sau ta tính bit r = A¯3 B3 + x3 A¯2 B2 + x3 x2 A¯1 B1 + x3 x2 x1 A¯0 B0 Trả lại kết r với r = A < B r = điều ngược lại xảy 95 Như compare(c1 , c2 ) trả lại cr với Dec(cr ) = (giá trị rãnh rõ đầu có giá trị 0, rãnh cuối có giá trị 1) m1 < m2 Dec(cr ) = trường hợp ngược lại Phép so sánh tác giả thực cần bỏ + log(nslots) độ sâu, hàm compare3() chứa tệp mã nguồn common_function.h Phép so sánh tráo đổi compareAndSwap hàm compareAndSwap(Ctxtc1 , Ctxtc2 , Ctxtdir) phục vụ chủ yếu cho thuật toán BitonicSort, dựa vào kết hàm compare(c1 , c2 ) giá trị dir mà định xem có tráo đổi giá trị hai mã hay không Giả sử mã c3 giá trị trả kết hợp từ hai giá trị compare dir, c3 mã hóa chuỗi bit toàn 1, toàn 0, ta xét mã sau c1 = c¯3 · c1 + c3 · c2 c2 = c¯3 · c2 + c3 · c1 , c3 mã hóa chuỗi toàn bit nhiên giá trị c1 c2 hốn đổi cho nhau, cịn ngược lại khơng hốn đổi Phép so sánh tráo đổi mà tác giả cài đặt cần bỏ + log(nslots) độ sâu Phép so sánh isEqual Đối với thuật toán DirectSort, tác giả cài đặt hàm isEqual2 cách thực phép AND bit kết so sánh bit hai số, tiêu tốn + log(nslots) mức Riêng phép so sánh cài đặt thuật toán BitonicSort tác giả cài đặt hàm isEqual3 dành riêng cho đầu vào BitonicSort dành cho phép so sánh không tốn mức Các phép thao tác phần tử mảng Các phép thao tác phép nhân phần tử mảng, phép OR, phép addMemo (cộng có nhớ) Cách thơng thường ta cộng phần tử, nhiên cách dẫn đến tiêu hao nhiều mức mã, cụ thể ˜ O(array.length) Tác giả sử dụng cộng đệ quy mảng con, để thu số lượng ˜ mức cần tiêu hao O(log(array.length)) 96 5.2.3 Thuật toán xếp Dưới bảng thống kế độ phức tạp thời gian độ phức tạp mạch thuật toán xếp, với thuật tốn thơng minh Quick Sort Merge Sort, khó thiết kế thuật tốn tương ứng dành cho liệu mật, với kiến thức có hạn tác giả chưa thể tính tốn độ phức tạp tiệm cận hai khía cạnh thuật tốn này, tác giả khơng tìm báo có tính tốn độ phức tạp tiệm cận cho hai thuật toán này, [C ¸ et+15] có đề cập tới đưa phân tích, nhiên để bỏ ngõ, nghĩ có độ phức tạp tính tốn độ phức tạp mạch không phù hợp cài đặt để tính tốn liệu mã mật Theo cảm quan tơi nghĩ quick sort merge sort có độ phức tạp lớn, trường hợp phép rẽ nhánh phải tính tốn Thuật tốn buble sort insert sort bitonic sort direct sort Bảng 5.1: Sorting Algorithm Time Complexity Circuit Complexity O(n2 ) O(n2 ) O(n2 ) O(n2 ) O(n · log n) O(n · log2 n) O(n2 ) O(log n) Bitonic Sort BitonicSort thuật toán xếp song song, thực máy ˜ · log2 n), nhiên thuật tốn song song nên có độ phức tạp thời gian O(n dễ cài đặt để thực xếp liệu mã mật, có độ phức tạp mạch tốt so với thuật toán xếp khác Dãy Bitonic Một dãy số a = (a1 , a2 , , ap ) gọi chuỗi có tính chất Bitonic tồn số ≤ i ≤ p cho a0 ≤ a1 ≤ ≤ ≥ ai+1 ≥ ≥ ap Trộn dãy Bitonic Giả sử ta có hai dãy bitonic sau : a = (a1 , a2 , , ap ) b = (b1 , b2 , , bp ) ta sinh hai dãy sau : 97 max = (max(a1 , b1 ), max(a2 , b3 ), , max(ap , bp )) = (min(a1 , b1 ), min(a2 , b3 ), , min(ap , bp )) Hai dãy dãy bitonic phần tử dãy bitonic max lớn phần tử dãy bitonic Tiếp tục chạy đệ quy phép trộn dãy max dãy min, dãy bitonic nhỏ cuối bao gồm hai số, lúc xếp tầm thường, ta thực phép swap Vậy có dãy bitonic có độ dài ta đưa dãy có thứ tự Mạng xếp Bitonic Ta giả sử trường hợp đơn giản độ dài dãy đầu vào lũy thừa Bắt đầu từ hai dãy bitonic (độ dài k - độ dài sở với dãy bitonic nhỏ nhất) ta trộn chúng theo thứ tự hợp lý, cặp trộn theo chiều giảm dần, cặp thứ hai trộn theo chiều tăng dần, sau hai cặp lại ghép cặp, thành dãy bitonic có độ dài 2k, tiếp tục trộn dãy bitonic với dãy bitonic có độ dài 2k ta xếp có thứ tự cho dãy đầu vào Mã giả (cho trường hợp đầu vào tùy ý) v o i d bitonicSorting ( vector &array , l o n g lo , l o n g n , Ctxt dir ) { i f ( n > 1) { long m = n /2; bitonicSorting ( array , lo , m , notDir ) ; bitonicSorting ( array , lo + m , n−m , dir ) ; bitonicMerge ( array , lo , n , dir ) ; } 98 } 10 v o i d bitonicMerge ( vector &array , l o n g lo , l o n g n , Ctxt dir ) { i f ( n > 1) { 11 12 l o n g iter ; 13 l o n g m = maxPow2LT ( n ) ; 14 l o n g boundIter = lo + n − m ; 15 f o r ( iter = lo ; iter < boundIter ; compareAndSwap ( array , iter , iter+m , dir ) ; 16 17 } 18 bitonicMerge ( array , lo , m , dir ) ; 19 bitonicMerge ( array , lo+m , n−m , dir ) ; } 20 21 iter++){ } Cài đặt cho liệu mã hóa Ta sử dụng phép compare để xây dựng phép compareAndSwap sau cài đặt giống cách thuật tốn cài đặt để tính tốn liệu thơng thường Có tất (log n(log(n + 1))/2 tầng, tầng rõ phải tham gia lần phép compareAndSwap với rõ khác, mã qua (log n(log(n + 1))/2 lần phép compareAndSwap độ sâu mạch Bitonic Sort thực tế ((3 + log(nslots)) · log n · (log(n + 1))/2 Direct Sort Cách thực Direct Sort tương đối đơn giản, với dãy mã mật đầu vào (c0 , c2 , , cn−1 ) mã hóa rõ (m0 , m2 , , mn−1 ), trước tiên ta xây dựng ma trận sau x0,0 x1,0 x0,1 ··· x1,1 ··· xn−1,0 xn−1,1 · · · xn−1,n−1 Các phần tử ma trận tính theo thứ tự sau 99 x0,n−1 x1,n−1 Giá trị xi,j với j > i tính sau : xi,j = compare(ci , cj ) tức Dec(xi,j ) = : Dec(ci ) < Dec(cj ) i,j ) = : Dec(ci ) ≥ Dec(cj ) Dec(x Giá trị xi,j với j < i tính cho : Dec(xi,j ) = Dec(xi,j ) Giá trị xi,i = Ta nhận thấy để tính tính tốn ma trận ta cần dùng phép compare tất phép compare độc lập Nhờ ta "nhân vơ tính" tạo "ủy quyền" cho mã, mã mật tham gia k phép compare ta có k − ủy quyền nó, với phép compare cần thơng tin đầu vào ta cho ủy quyền khác tham gia, kể mã mật có phải tham gia nhiều phép compare cấp giảm xuống việc sau tham gia phép compare mà thơi Trong C + + ta hồn toàn thực việc dễ dàng cách truyền giá trị, thay truyền địa mã mật cho hàm compare Ở bước ta tiêu thụ độ sâu độ sâu hàm compare : + log(nslots) Ta nhận thấy số lượng ni mã mật mã hóa rõ có giá trị 0, 0, , 0, cột i số lượng giá trị mà mi lớn hơn, tức vị trí mi mảng xếp Vậy có tồn giá trị mj có giá trị với mi sao, liệu giá trị ni nj có trùng May mắn thay, yên tâm hoàn toàn khơng, với việc tính ma trận so sánh theo thứ tự j > i xi,j tính trước có giá trị 0, 0, , 0, , giá trị xj,i tính theo xi,j có giá trị 0, 0, , 0, , tức j > i việc tính theo cách ngầm định mj đứng trước mi dãy xếp rồi, xung đột xảy Vì vậy, bước thuật tốn cộng (có nhớ) mã cột lại với kết (cI0 , cI1 , , cIn−1 ) mã mật mã hóa vị trí (m0 , m1 , , mn−1 ) dãy xếp Việc tính tốn cột độc lập nhau, độ sâu tiêu thụ bước độ sâu thực phép cộng mảng có nhớ (sử dụng hàm addMemoVector tệp common_function.h) nslots · log n 100 Bước cuối cùng, sử dụng kết (cI0 , cI1 , , cIn−1 ), mã mật (σ0 , σ1 , , σn−1 ) (là mã hóa số → n − 1) cRj = i∈[n] isEqual(σj , cIi ) · ci Dãy mã theo thứ tự (cR0 , cR1 , , cRn−1 ) mã hóa dãy kết xếp theo thứ tự tăng dần Bước sử dụng phép OR theo mảng (phép cộng công thức bước cuối cần sử dụng phép OR xác) tiêu thụ độ sâu + log(nslots) Độ phức tạp mạch Độ sâu mạch thực Direct Sort + 4log (nslots) + nslot · log n, tức có độ phức tạp mạch O(log n) 5.2.4 Kết thử nghiệm Cài đặt hai thuật toán xếp Bitonic Sort Direct sort dành cho liệu mã mật sử dụng thư viện Helib, tác giả báo cáo thu kết cho bảng sau Alg Bitonic Direct Bitonic Direct Bitonic Direct Bitonic Direct Bitonic Direct Bitonic Direct n 3 4 5 6 7 8 Result Chính xác Chính xác Chính xác Chính xác Chính xác Chính xác Chính xác Chính xác Chính xác Chính xác Chính xác Chính xác Bảng 5.2: Kết thực Time (sec) Depth 853 377 81 2372 37 95 1687 97 81 4476 39 95 2469 08 135 7113 34 126 3529 19 162 10490.7 126 4897 69 162 14522 126 6506 59 162 19165 126 Nhận xét Ta đưa số nhận xét kết 101 nghiệm Alg Bitonic Direct Bitonic Direct Bitonic Direct Bitonic Direct Bitonic Direct Bitonic Direct n 9 10 10 11 11 12 12 13 13 14 14 Result Chính xác Chính xác Chính xác Chính xác Chính xác Chính xác Chính xác Chính xác Chính xác Chính xác Chính xác Chính xác Time (sec) 7440.06 24053 8698 55 29940.2 10175 36478 11934 43597 13772 51341 15877 60352 Depth 216 157 243 157 270 157 270 157 270 157 270 157 Về độ sâu : Ban đầu dường Bitonic Sort có độ sâu mạch thời gian chạy hiệu Direct Sort, nhiên sau n lớn "đè" lại số phụ Bitonic Sort có độ sâu mạch lớn Direct Sort Direct Sort có độ sâu tăng chậm, Bitonic Sort độ sâu tăng nhanh, phù hợp với tính tốn độ phức tạp độ sâu mạch tiệm cận hai thuật toán Về thời gian : Rõ ràng thời gian tính tốn hai thuật toán chậm, theo kết [C ¸ et+15] tác giả chạy đầu vào với n = 64 xấp xỉ 12 tiếng đồng hồ, tình trạng chung tính toán liệu mã mật Thời gian chạy Direct Sort tăng nhanh hơn, lâu nhiều so với Bitonic Sort, điều phù hợp với kết tính tốn độ phức tạp thời gian tiệm cận hai thuật toán 5.2.5 Xây dựng giao thức server-client xếp liệu mật mã (đơn giản) Sử dụng hàm hỗ trợ ghi thông tin lên tệp, báo cáo xin trình bày mơ hình đơn giản mơ dịch vụ xếp liệu mật mã hóa theo giao thức mơ tả hình vẽ Hình 5-2: Mơ hình cloud sorter đơn giản - source : tự tạo 102 Người dùng để dãy số nguyên 32-bit cần xếp tệp input_array txt Tệp thực thi encrypter_x thiết lập cấu hình cần thiết, cho hệ mã đồng cấu, sau mật mã hóa dãy số nguyên, ghi tệp sendF_encrypter txt thông tin để gửi đến server mã , khóa cơng khai, chuỗi modulus, thơng tin chuyển khóa etc, tệp secF_encrypter txt chứa thơng tin bí mật lát khóa bí mật để phục vụ cho trình giải mã kết sau Máy chủ nhận yêu cầu xếp liệu mật mã hóa tệp sendF_encrypter txt Máy khách gửi, sau sử dụng thông tin để xếp liệu mật mã hóa nhận Kết mật mã hóa dãy xếp máy chủ lưu tệp result txt sau gửi lại cho máy khách Máy khách thực hàm thực thi decrypter_x để giải mã kết nhận dãy xếp giá trị dãy đầu vào Giao diện dịng lệnh • encrypter_x : Mã hóa dãy cần xếp Hình 5-3: Giao diện thực thi encrypter_x - source : tự tạo 103 • cloud_sorter : Sau nhận tệp mã cần xếp thực xếp Hình 5-4: Giao diện thực thi cloud_sorter_x - source : tự tạo • decrypter_x : Thực giải mã kết sau nhận kết mã mật từ máy chủ Hình 5-5: Giao diện thực thi decrypter_x - source : tự tạo 104 Chương Kết luận hướng phát triển Như theo thống kê hiệu năng, thời gian chạy thực nghiệm lâu, để cải thiện vấn đề hiệu báo cáo xin đưa đề xuất tương lai sau : • Sử dụng Bootstrapping để tăng hiệu việc xử lý nhiễu • Tìm cách ứng dụng kỹ thuật tính tốn theo lơ, nhằm giả lập mơ hình tính tốn song song SIMD • Tìm cách thực thi, cài đặt tốt cho thủ tục so sánh, so sánh bằng, cộng có nhớ etc 105 106 Tài liệu tham khảo [RAD78] Ronald L Rivest, Len Adleman, and Michael L Dertouzos “On data banks and privacy homomorphisms” In: Foundations of secure computation 4.11 (1978), pp 169–180 [Reg05] Oded Regev “On Lattices, Learning with Errors, Random Linear Codes, and Cryptography” In: Proceedings of the Thirty-seventh Annual ACM Symposium on Theory of Computing STOC ’05 Baltimore, MD, USA: ACM, 2005, pp 84–93 isbn: 1-58113-960-8 doi: 10 1145 / 1060590 1060603 url: http://doi.acm.org/10.1145/1060590.1060603 [KL07] Jonathan Katz and Yehuda Lindell Introduction to Modern Cryptography (Chapman & Hall/Crc Cryptography and Network Security Series) Chapman & Hall/CRC, 2007 isbn: 1584885513 [Mic07] Daniele Micciancio “Generalized Compact Knapsacks, Cyclic Lattices, and Efficient One-Way Functions” In: Comput Complex 16.4 (Dec 2007), pp 365–411 issn: 1016-3328 doi: 10.1007/s00037-007-0234-9 url: http://dx.doi.org/10.1007/s00037-007-0234-9 [BV11] Zvika Brakerski and Vinod Vaikuntanathan “Efficient Fully Homomorphic Encryption from (Standard) LWE” In: Proceedings of the 2011 IEEE 52Nd Annual Symposium on Foundations of Computer Science FOCS ’11 Washington, DC, USA: IEEE Computer Society, 2011, pp 97–106 isbn: 978-0-7695-4571-4 doi: 10.1109/FOCS.2011.12 url: http://dx.doi org/10.1109/FOCS.2011.12 107 [GHS12] Craig Gentry, Shai Halevi, and Nigel P Smart “Fully Homomorphic Encryption with Polylog Overhead” In: Proceedings of the 31st Annual International Conference on Theory and Applications of Cryptographic Techniques EUROCRYPT’12 Cambridge, UK: Springer-Verlag, 2012, pp 465– 482 isbn: 978-3-642-29010-7 doi: 10.1007/978- 3- 642- 29011- 4_28 url: http://dx.doi.org/10.1007/978-3-642-29011-4_28 [HS13] Shai Halevi and Victor Shoup “Design and implementation of a homomorphicencryption library” In: IBM Research (Manuscript) (2013) [BGV14] Zvika Brakerski, Craig Gentry, and Vinod Vaikuntanathan “(Leveled) Fully Homomorphic Encryption Without Bootstrapping” In: ACM Trans Comput Theory 6.3 (July 2014), 13:1–13:36 issn: 1942-3454 doi: 10 1145/2633600 url: http://doi.acm.org/10.1145/2633600 [C ¸ et+15] Gizem S C ¸ etin et al “Low Depth Circuits for Efficient Homomorphic Sorting.” In: IACR Cryptology ePrint Archive 2015 (2015), p 274 [Mul16] Jamie Mulholland Lecture notes in Permutation Puzzles: A Mathematical Perspective 2016 108 ... Tuy nhiên h? ?nh th? ?nh mơ h? ?nh tính tốn lượng tử, nhiều tốn khó giải th? ??i gian đa th? ??c thuật toán lượng tử, RSA h? ??n tồn bị phá th? ??i gian đa th? ??c mơ h? ?nh tính tốn hoàn thiện Tuy nhiên, nhà nghiên... (Th? ??i gian th? ??c thi thuật toán đại diện h? ?m phụ thuộc độ d? ?i 23 đầu vào Với lý thuyết số h? ??c thuật toán - nhánh nghiên cứu thuật toán d? ?ng sử d? ??ng cho lý thuyết số - số ngun đầu vào ln biểu diễn... cách em hiểu sau nghiên cứu,tổng h? ??p tài liệu phần tham khảo,và vi? ??c cá nhân em th? ??c thi hai thuật toán xếp liệu mã mật với th? ? vi? ??n mật mã h? ?a đồng cấu Helib."Đóng góp" nằm vi? ??c th? ??c thi hai thuật