NGHIÊN CỨU TÌM HIỂU GIAO THỨC XÁC THỰC ĐỊNH DANH SCHNORR THEO RFC 8235 Có ứng dụng mang tính thực tiễn cao là xác thực định danh người dùng được nhiều người biết đến đó là “Giao thức định danh không tiết lộ tri thức Schnorr” được nêu trong RFC 8235 được IETF công bố vào năm 2017. Vậy em đã quyết định chọn đề tài : “Nghiên cứu tìm hiểu giao thức xác thực định danh Schnorr theo RFC 8235” 2. MỤC TIÊU CỦA ĐỀ TÀI Nghiên cứu tìm hiểu giao thức định danh tri thức không. Nghiên cứu, đánh giá giao thức xác thực Schnorr theo RFC 8235. Cài đặt mô phỏng giao thức xác thực Schnorr ứng dụng vào dịch vụ chia sẻ dữ liệu. 3. NỘI DUNG NỘI DUNG 1 :GIAO THỨC ĐỊNH DANH TRI THỨC KHÔNG 1.1 Giới thiệu về giao thức tri thức không 1.2 Cơ sở toán học của giao thức tri thức không 1.3 Ứng dụng của giao thức tri thức không NỘI DUNG 2: GIAO THỨC ĐỊNH DANH SCHNORR 2.1 Vấn đề xác định định danh 2.2 Giao thức định danh Schnorr Giao thức định danh Schnorr trên trường hữu hạn Giao thức định danh Schnorr trên đường cong elliptic 2.3 Đánh giá độ an toàn của giao thức định danh Schnorr 2.4 Ứng dụng của giao thức định danh Schnorr NỘI DUNG 3: MÔ PHỎNG GIAO THỨC SCHNORR TRONG DỊCH VỤ CHIA SẺ DỮ LIỆU 3.1 Dịch vụ chia sẻ dữ liệu 3.2 Mô phỏng giao thức định danh Schnorr trong dịch vụ chia sẻ dữ liệu 3.3 Ứng dụng của giao thức định danh Schnorr trong chia sẻ dữ liệu ở mạng LAN Tìm hiểu tổng quan về giao thức tri thức không, bao gồm khái niệm, cơ sở toán học và một số ứng dụng trong thực tế của giao thức tri thức không. Tìm hiểu, đi sâu nghiên cứu giao thức định danh Schnorr trên cả trường hữu hạn và trên đường cong elliptic thông qua đó đánh giá độ an toàn của giao thức. Mô phỏng giao thức định danh Schnoor ứng dụng trong dịch vụ chia sẻ dữ liệu đối với các máy tính trong mạng LAN. Hướng nghiên cứu tiếp tục trong thời gian tới của em là: Tiếp tục tìm hiểu về các giao thức xác thực định danh khác. Áp dụng thành công những giao thức định danh mới vào dịch vụ chia sẻ dữ liệu cũng như các dịch vụ khác như: giao dịch ngân hàng, kiểm soát việc truy cập, đăng nhập
ĐẠI HỌC BÁCH KHOA HÀ NỘI LUẬN VĂN THẠC SĨ NGHIÊN CỨU TÌM HIỂU GIAO THỨC XÁC THỰC ĐỊNH DANH SCHNORR THEO RFC 8235 Nguyen Thanh Long Hà Nội - 2023 MUC LỤC LỜI CẢM ƠN Lỗi! Thẻ đánh dấu không được xác định LỜI CAM ĐOAN Lỗi! Thẻ đánh dấu không được xác định MUC LỤC i DANH MỤC KÍ HIỆU VÀ VIẾT TẮT iii DANH MỤC HÌNH VẼ iv DANH MỤC BẢNG BIỂU v LỜI NÓI ĐẦU CHƯƠNG 1: GIAO THỨC ĐỊNH DANH TRI THỨC KHÔNG 1.1 Giới thiệu giao thức tri thức không 1.1.1 Khái niệm 1.1.2 Một số ví dụ chứng tri thức khơng 1.2 Cơ sở tốn học giao thức tri thức khơng 1.2.1 Khái niệm độ phức tạp thuật toán 1.2.2 Lớp toán P, NP NP – đầy đủ 1.2.3 Các tốn áp dụng cho giao thức tri thức không 11 1.3 Ứng dụng giao thức tri thức không 13 1.3.1 Bằng chứng tri thức không nghiệm hàm đa thức 13 1.3.2 Bài toán đẳng cấu 14 1.3.3 Quản lý an toàn dịch vụ lưu trữ đám mây 14 1.3.4 Ứng dụng RFID 15 1.3.5 Chữ ký số proxy 17 1.3.6 Xác thực định danh 18 CHƯƠNG 2: GIAO THỨC ĐỊNH DANH SCHNORR 21 2.1 Vấn đề xác định định danh 21 2.2 Giao thức định danh Schnorr 22 2.2.1 Giao thức định danh Schnorr trường hữu hạn 23 i 2.2.2 Giao thức định danh Schnorr đường cong Elliptic 25 2.3 Đánh giá độ an toàn giao thức định danh Schnorr 31 2.3.1 Một số công lên mật mã đường cong elliptic để giải toán logarit rời rạc 33 2.3.2 Tấn công gây lỗi lên giao thức định danh Schnorr 42 2.4 Ứng dụng giao thức định danh Schnorr 46 CHƯƠNG 3: MÔ PHỎNG GIAO THỨC ĐỊNH DANH SCHNORR TRONG DỊCH VỤ CHIA SẺ DỮ LIỆU 47 3.1 Dịch vụ chia sẻ liệu 47 3.1.1 Giới thiệu dịch vụ chia sẻ liệu 47 3.1.2 Các kỹ thuật chia sẻ liệu 47 3.2 Mô giao thức định danh Schnorr dịch vụ chia sẻ liệu 48 3.2.1 Tham số đường cong 48 3.2.2 Tạo khóa 49 3.2.3 Tạo chữ ký 50 3.2.4 Xác minh chữ ký 52 3.2.5 Giao diện chương trình 54 3.3 Ứng dụng giao thức định danh Schnorr chia sẻ liệu mạng LAN… 55 KẾT LUẬN 60 TÀI LIỆU THAM KHẢO 61 ii DANH MỤC KÍ HIỆU VÀ VIẾT TẮT Ký hiệu Ý nghĩa Thuật ngữ National Institute of Standards Viện tiêu chuẩn kỹ thuật Quốc and Technology Gia ( Hoa Kỳ) ZKP Zero-knowledge proof Bằng chứng tri thức không RSA Rivest Shamir Adleman POR Post Office Protocol Giao thức bưu điện RFID Radio Frequency Identification Nhận dạng qua tần số vô tuyến NIZK Non-interactive zero-knowledge DSA Digital Signature Algorithm Thuật toán chữ ký số Elliptic Curve Digital Signature Thuật toán chữ ký số đường Algorithm cong elliptic Ellipticic Curve Đường cong elliptic NIST ECDSA EC Thuật tốn mã hóa khóa cơng khai RSA iii Bằng chứng tri thức không không tương tác DANH MỤC HÌNH VẼ Hình 1.1 Mơ hình hang động Hình 1.2 Quan hệ giả thuyết lớp độ phức tạp 11 Hình 1.3 Giao thức tri thức không sử dụng cho RFID 16 Hình 1.4 Giao thức tri thức không áp dụng chữ ký số proxy 18 Hình 1.5 Quá trình xác thực Fiat-Shamir 19 Hình 1.6 Quá trình xác thực Guillou-Quisquater 20 Hình 2.1 Lược đồ định danh Schnorr trường hữu hạn 25 Hình 2.2 Mô tả đường cong Elliptictic y = x3 + x + y = x3 − x + 26 Hình 2.3 Lược đồ xác định Schnorr đường cong elliptic 30 Hình 3.1 Lưu đồ thuật tốn q trình tạo khóa 49 Hình 3.2 Tạo khóa mã nguồn python 50 Hình 3.3 Ký tài liệu mã nguồn python 50 Hình 3.4 Lưu đồ thuật tốn q trình tạo chữ ký 51 Hình 3.5 Lưu đồ thuật tốn qua trình xác minh chữ ký 52 Hình 3.6 Xác minh tài liệu ký mã nguồn python 53 Hình 3.7 Xác minh tin dựa vào thơng tin xác thực khóa cơng khai 53 Hình 3.8 Giao diện chương trình mơ giao thức Schnorr dịch vụ chia sẻ liệu 54 Hình 3.9 Mơ hình ứng dụng Schnorr chia sẻ liệu mạng Lan 55 Hình 3.10 Tạo người dùng Server 56 Hình 3.11 Phân quyền cho người dùng vuquyet thư mục A 56 Hình 3.12 Phân quyền cho người dùng vuquyet1 thư mục A 57 Hình 3.13 Dùng chương trình mơ giao thức Schnorr để ký tập tin 57 Hình 3.14 File liệu ký chia sẻ lên server 58 Hình 3.15 Dùng chương trình mơ Schnorr để xác minh định danh file ký 58 Hình 3.16 Trường hợp xác minh thất bại 59 iv DANH MỤC BẢNG BIỂU Bảng 2.1 Phép nhân kP nhận cách thực liên tiếp phép cộng 27 Bảng 2.2 Tạo lưu trữ iP với < i < 10 34 Bảng 2.3 Bảng tính theo thuật toán Pollard 37 Bảng 2.4 Tỷ lệ thành công để khôi phục khóa bí mật tùy thuộc vào số lượng c ghi l -bit 45 v LỜI NÓI ĐẦU TÍNH CẤP THIẾT CỦA ĐỀ TÀI Xác thực q trình mà ứng dụng xác minh danh tính người dùng Việc xác thực ứng dụng sử dụng nhiều giao thức khác từ mật khẩu, giải pháp xác thực lần đến kiểm tra chữ ký, thẻ RFID, quét vân tay,… Để thực việc xác thực có hệ thống kiểm tra gọi “Hệ thống xác thực” bao gồm: người kiểm tra với nhiệm vụ kiểm tra xem người chứng minh có hiểu biết chứng khơng Sau xác thực việc cho phép người chứng minh truy cập vào tài nguyên hệ thống với quyền hạn khác Có số nguy an tồn tiềm ẩn q trình xác thực sau: Trong trình gửi mật lên, chúng bị lộ mơi trường truyền thơng tin khơng an tồn, server lưu mật dạng rõ Với tồn trên, việc cần có giao thức kiểm tra mà phía người kiểm tra khơng biết kiến thức mà phía người chứng minh đưa Từ chứng mà người chứng minh đưa ra, người kiểm tra khơng có cách lần kiến thức nguồn gọi Zero Knowledge Proof – chứng không tiết lộ tri thức Đây thành phần quan trọng mật mã, năm gần nhận nhiều quan tâm nhiều nhà nghiên cứu Lĩnh vực ứng dụng rộng đạt nhiều tiến đột phá nhiều khía cạnh, ứng dụng phong phú như: RFID (nhận dạng qua tần số vô tuyến), ký số proxy xác thực định danh Có ứng dụng mang tính thực tiễn cao xác thực định danh người dùng nhiều người biết đến “Giao thức định danh không tiết lộ tri thức Schnorr” nêu RFC 8235 IETF công bố vào năm 2017 Vậy em định chọn đề tài : “Nghiên cứu tìm hiểu giao thức xác thực định danh Schnorr theo RFC 8235” MỤC TIÊU CỦA ĐỀ TÀI - Nghiên cứu tìm hiểu giao thức định danh tri thức khơng - Nghiên cứu, đánh giá giao thức xác thực Schnorr theo RFC 8235 - Cài đặt mô giao thức xác thực Schnorr ứng dụng vào dịch vụ chia sẻ liệu NỘI DUNG NỘI DUNG :GIAO THỨC ĐỊNH DANH TRI THỨC KHÔNG 1.1 Giới thiệu giao thức tri thức khơng 1.2 Cơ sở tốn học giao thức tri thức không 1.3 Ứng dụng giao thức tri thức không NỘI DUNG 2: GIAO THỨC ĐỊNH DANH SCHNORR 2.1 Vấn đề xác định định danh 2.2 Giao thức định danh Schnorr - Giao thức định danh Schnorr trường hữu hạn - Giao thức định danh Schnorr đường cong elliptic 2.3 Đánh giá độ an toàn giao thức định danh Schnorr 2.4 Ứng dụng giao thức định danh Schnorr NỘI DUNG 3: MÔ PHỎNG GIAO THỨC SCHNORR TRONG DỊCH VỤ CHIA SẺ DỮ LIỆU 3.1 Dịch vụ chia sẻ liệu 3.2 Mô giao thức định danh Schnorr dịch vụ chia sẻ liệu 3.3 Ứng dụng giao thức định danh Schnorr chia sẻ liệu mạng LAN CHƯƠNG 1: GIAO THỨC ĐỊNH DANH TRI THỨC KHÔNG 1.1 Giới thiệu giao thức tri thức không 1.1.1 Khái niệm Trong bối cảnh nay, việc trao đổi liệu hoạt động xảy liên tục thường xuyên liệu chứa liệu, thơng tin quan trọng để lộ lọt gây hậu xấu sau Ví dụ số thẻ tín dụng mật để truy cập sở liệu bí mật Một bên thứ ba nghe việc truyền nhận liệu sau sử dụng liệu theo cách phục vụ cho lợi ích cá nhân kẻ Trong thực tế xảy hành vi chặn tin nhắn toán điện tử sau sử dụng thơng tin đánh cắp chiếm đoạt số tiền Độ an toàn hệ mật chủ yếu dựa tính bí mật khóa Trong hệ mật khóa bí mật, hai bên thống khóa bí mật chung trước trao đổi xảy Trong hệ mật khóa cơng khai, bên có cặp khóa, khóa cơng khai có sẵn cho người khóa giữ bí mật Việc giúp loại bỏ cần thiết phải có thống từ trước hai bên Độ mạnh hệ mật khóa cơng khai dựa tài ngun tính tốn hạn chế có sẵn người dùng, kể người sử dụng hợp pháp lẫn kẻ nghe bất hợp pháp Ý tưởng hệ mật khóa cơng khai tốn khó giải thời gian ngắn Ở hệ mật khóa cơng khai có hai khóa khóa riêng khóa chung Với khóa chung, người dùng mã hóa tin nhắn người khác giải mã chúng khóa riêng Chủ sở hữu khóa riêng người giải mã tin nhắn, biết khóa chung truyền thơng tin cách riêng tư Ý tưởng chứng minh kiến thức liệu mà không tiết lộ thơng tin liệu hấp dẫn Giao thức tri thức không cho phép loại kịch diễn Chúng giao thức mật mã khơng tiết lộ bí mật q trình hoạt động, bí mật khơng chuyển cho bên kia, người dùng chứng minh cho bên biết bí mật Cách tiếp cận giải pháp tốt để chứng minh danh tính lẫn ví dụ bước trao đổi khóa ứng dụng mật mã Trong giao thức tri thức không, người chứng minh (Prover) cố gắng chứng minh kiến thức bí mật người xác minh (Verifier) mà không tiết lộ bí mật Người xác minh đặt câu hỏi với mục tiêu tìm hiểu xem người chứng minh (Prover) có thực biết bí mật hay không, khám phá thông tin bí mật Một kẻ nghe bên thứ ba lắng nghe trò chuyện, giao thức bảo mật, khơng thể tìm hiểu điều bí mật thuyết phục người khác biết bí mật trao đổi Kỹ thuật gọi “bằng chứng tri thức khơng” – ZKP Tóm lại, chứng tri thức không kỹ thuật để hạn chế lượng thông tin truyền từ người A sang người B Để hoạt động chứng tri thức khơng cần thoả mãn tính chất sau: Completeness (tính đầy đủ): Nếu mệnh đề người kiểm tra trung thực bị thuyết phục người chứng minh trung thực mệnh đề Soundness (tính tin cậy): Nếu người chứng minh khơng trung thực họ khơng thể thuyết phục người kiểm tra mệnh đề cách dối trá Zero-Knowledge (tính tri thức khơng): Nếu mệnh đề người kiểm tra biết khơng thể biết xác mệnh đề 1.1.2 Một số ví dụ chứng tri thức khơng 1.1.2.1 Mơ hình hang động CHƯƠNG 3: MÔ PHỎNG GIAO THỨC ĐỊNH DANH SCHNORR TRONG DỊCH VỤ CHIA SẺ DỮ LIỆU 3.1 Dịch vụ chia sẻ liệu 3.1.1 Giới thiệu dịch vụ chia sẻ liệu Chia sẻ liệu trình chép di chuyển tệp tin, thư mục từ máy tính sang máy tính khác qua mạng LAN kết nối Internet Nó cho phép chia sẻ, truyền truyền tệp tin, thư mục người dùng máy tính khác mạng cục mạng diện rộng Chia sẻ liệu tải lên tải xuống File Transfer Protocol (FTP), Hypertext Transfer Protocol (HTTP), BitTorrent giao thức truyền tệp tin, thư mục phổ biến sử dụng Có hai loại chuyển tập tin chính: - Pull-Based: u cầu chuyển tập tin bắt đầu người nhận - Push Based: Yêu cầu chuyển tập tin bắt đầu người gửi Ngồi mạng LAN Internet việc truyền tệp tin thư mục thực thủ công cách chép tệp vào thư mục, ổ đĩa máy tính cách chép vào USB, CD thiết bị lưu trữ di động khác để chuyển sang máy tính khác 3.1.2 Các kỹ thuật chia sẻ liệu Chia sẻ liệu qua mạng LAN (Local Area Network) LAN có tên gọi đầy đủ Local Network Area (Mạng cục bộ) Mạng LAN hiểu kết hợp nhiều thiết bị kết nối lại với hệ thống mạng khu vực định (Công ty, trường học, nhà ở, ) Việc ghép nối thiết bị hệ thống cho phép thiết bị trao đổi liệu với cách nhanh chóng dễ dàng (chia sẻ tập tin, hình ảnh, máy in,…) Việc truyền file nhận file khơng q phức tạp Mơ hình chia sẻ liệu qua mạng LAN khái quát sau: - Client A đưa tệp tin, thư mục muốn chia sẻ lên Server - Người quản trị Server tiến hành phân quyền, làm rõ xem, chỉnh sửa, xóa thư mục - Căn vào phân quyền thực trên, người dùng khác thực quyền tương ứng với tệp tin, thư mục vừa chia sẻ Chia sẻ liệu qua đám mây Lưu trữ đám mây (Cloud Storage) hình thức sử dụng dịch vụ nhà cung cấp cho phép người dùng dịch vụ họ lưu giữ, quản lý, chia sẻ backup liệu họ từ xa Dịch vụ cho phép người dùng truy cập tập tin lúc nào, miễn có truy cập internet Dữ liệu người dùng lưu server nhà cung cấp người dùng sử dụng ứng dụng desktop ứng dụng web online để truy xuất đến liệu Đối với trường hợp người dùng muốn chia sẻ liệu người khác, họ phân quyền cho tệp tin, thư mục muốn chia sẻ Điều làm tăng phạm vi chia sẻ liệu người dùng Hiện có nhiều dịch vụ lưu trữ đám mây khác là: AWS, Google Drive, Droxbox, OneDrive,… 3.2 Mô giao thức định danh Schnorr dịch vụ chia sẻ liệu Phần thực mô giao thức định danh Schnorr dịch vụ chia sẻ liệu hình thức ứng dụng chữ ký Schnorr Sự khác biệt giao thức định danh ứng dụng chữ ký Schnorr tham số (V, c) bên ký lựa chọn mà không cần trao đổi tương tác hai bên chứng minh bên xác minh giao thức định danh Schnorr 3.2.1 Tham số đường cong Phương trình đường cong curve P-256: y = x3 − 3x + 410583637251521421293261297800472684091144 41015993725554835256314039467401291 Điểm sinh ( điểm sở đường cong): G(x,y)=(48439561293906451759052585252797914202762949526041747 995844080717082404635286,3613425095674979579858512791958788195661 1106672985015071877198253568414405109) p = 2256 − 2224 + 2192 + 296 − sử dụng hàm băm SHA-256 3.2.2 Tạo khóa Hình 3.1 Lưu đồ thuật tốn q trình tạo khóa • Khởi tạo số ngẫu nhiên a khoảng (0, 2256) làm khóa bí mật • Khóa công khai: A = G * [a] Thực thi mã nguồn python: class PrivateKey: def init (self, secret = None): self.secret = secret if secret is not None else randint(0, 2**256) # khóa bí mật a self.point = self.secret*G #khóa cơng khai A Hình 3.2 Tạo khóa mã nguồn python Khóa bí mật người tạo khóa giữ lại cho riêng Người dùng sử dụng giá trị khóa để ký lên tài liệu Khóa cơng khai cơng bố cho tất người biết Khóa có chức dùng để xác thực tài liệu có phải ký người cơng bố khóa hay khơng 3.2.3 Tạo chữ ký v = randint(0, 2**256) V = v * ecc.G with open(filename, 'rb') as file_sign: data = file_sign.read() S = (v - HI(V.sec(), data) * pk.secret)%ecc.N data_pad = pad(data, AES.block_size) end_byte = pad(((V.get_data_as_str() + '|' + str(s))+ '|' + A.get_data_as_str()).encode('utf8'), AES.block_size) new_data = data_pad + end_byte with open(filename+'_signed', 'wb') as signed_file: signed_file.write(new_data) Hình 3.3 Ký tài liệu mã nguồn python Nội dung ký giá trị băm tệp tin khóa cơng khai Phần cuối tệp tin sau ký chứa giá trị chữ ký (V, S) khóa cơng khai (A) người ký để xác định xem tệp tin có ký hay không Hình 3.4 Lưu đồ thuật toán trình tạo chữ ký 3.2.4 Xác minh chữ ký Hình 3.5 Lưu đồ thuật toán qua trình xác minh chữ ký Việc xác minh tài liệu ký thực theo bước sau đây: Đầu tiên lấy giá trị khóa cơng khai (A) chữ ký tệp tin (V, S) def verify_docs(filename:str): try: with open(filename, 'rb') as f: data = f.read() end_bytes = data[-704:] file_pad = data[:-704] end_bytes = unpad(end_bytes, AES.block_size) file_unpad = unpad(file_pad, AES.block_size) [x, y, a, b, s, px, py, pa, pb] = end_bytes.decode('utf8').split('|') V = S256Point(S256Field(int(x)), S256Field(int(y)),S256Field(int(a)), S256Field(int(b))) A = S256Point(S256Field(int(px)), S256Field(int(py)), S256Field(int(pa)), S256Field(int(pb))) return verify(V, int(s), file_unpad, A) except Exception: return False Hình 3.6 Xác minh tài liệu ký mã nguồn python Sau lấy giá trị trên, việc thực thực thực sau: def verify(V, S, z, A): ''' Xác thực tin z dựa vào thông tin xác thực (là V S) khóa cơng khai (A) ''' Q = S * ecc.G + HI(R.sec(),z) * A return Q == R Hình 3.7 Xác minh tin dựa vào thông tin xác thực khóa cơng khai Trong đó: • (V, S) chữ ký tệp tin • Z nội dung tệp tin • A khóa cơng khai Nếu file ký với khóa bí mật tương ứng với khóa công khai A, hàm verify trả giá trị True, không hàm trả False 3.2.5 Giao diện chương trình Hình 3.8 Giao diện chương trình mô giao thức Schnorr dịch vụ chia sẻ liệu Chương trình có chức năng: • Tạo khóa: Tạo cặp khóa cơng khai khóa riêng đó, khóa riêng dùng để ký lên tệp tin Khóa riêng khởi tạo ngẫu nhiên, đảm bảo có người chủ khóa có khóa riêng này; khóa cơng khai dùng phương thức xác thực Khóa cơng khai tương ứng với khóa bí mật • Ký tệp tin: Ký tệp tin với khóa riêng khởi tạo trước • Xác minh chữ ký: Xác minh tệp tin có ký với khóa riêng tương ứng với khóa cơng khai kèm hay không 3.3 Ứng dụng giao thức định danh Schnorr chia sẻ liệu mạng LAN Hình 3.9 Mô hình ứng dụng Schnorr chia sẻ liệu mạng Lan Mơ hình ứng dụng Schnorr chia sẻ liệu mạng LAN bao gồm máy: Server, Client A Client B Trong máy chủ server tạo người dùng để quản lý thư mục chia sẻ liệu: Thư mục A Thư mục B Trong thư mục A phân quyền cho người dùng A máy Client A full control: modify, read, write,…Còn người dùng B máy Client B người dùng khác phép read, copy thư mục A Trong máy Client A: Người dùng A có file liệu ký chương trình Schnorr sau chia sẻ liệu ký lên server Trong máy Client B: Người dùng B copy file liệu ký dùng chương trình mơ Schnorr xác thực định danh file ký xem người dùng A máy client A hay không? Trong máy chủ server: Tạo người dùng: vuquyet (người dùng A) vuquyet1 (người dùng B) để quản lý thư mục chia sẻ liệu server Hình 3.10 Tạo người dùng Server Trong thư mục A phân quyền người dùng vuquyet máy Client A full control bao gồm Modify, Read, Write Hình 3.11 Phân quyền cho người dùng vuquyet thư mục A Đối với người dùng vuquyet1 máy client B người dùng khác phép read, copy thư mục A Hình 3.12 Phân quyền cho người dùng vuquyet1 thư mục A Trong máy Client A người dùng vuquyet lấy file thongbao.docx, dùng chương trình Schnorr để ký lên tập tin Hình 3.13 Dùng chương trình mô giao thức Schnorr để ký tập tin Người dùng vuquyet máy Client A chia sẻ liệu file thongbaodocx_signed ký lên máy chủ server vào Thư mục A Hình 3.14 File liệu ký chia sẻ lên server Tại máy Client B người dùng vquyet1 vào thư mục A người dùng vuquyet server copy file thongbao.docx_signed Tiếp dùng chương trình Schnorr để xác thực định danh xem file thongbao.docx_signed có phải người dùng vuquyet máy client A hay không? Hình 3.15 Dùng chương trình mô Schnorr để xác minh định danh file ký Vậy sau xác thực định danh, tập tin xác thực là người dùng vuquyet gửi lên server Trường hợp xác minh tập tin thất bại: Hình 3.16 Trường hợp xác minh thất bại Kết luận chương Trong chương 3, đồ án trình bày tổng quan dịch vụ chia sẻ liệu, bao gồm khái niệm kỹ thuật chia sẻ liệu Thơng qua đó, đồ án xây dựng thành cơng chương trình xác thực liệu chia sẻ sử dụng lược đồ định danh Schnorr KẾT LUẬN - Tìm hiểu tổng quan giao thức tri thức không, bao gồm khái niệm, sở toán học số ứng dụng thực tế giao thức tri thức khơng - Tìm hiểu, sâu nghiên cứu giao thức định danh Schnorr trường hữu hạn đường cong elliptic thông qua đánh giá độ an tồn giao thức - Mô giao thức định danh Schnoor ứng dụng dịch vụ chia sẻ liệu máy tính mạng LAN Hướng nghiên cứu tiếp tục thời gian tới em là: - Tiếp tục tìm hiểu giao thức xác thực định danh khác - Áp dụng thành công giao thức định danh vào dịch vụ chia sẻ liệu dịch vụ khác như: giao dịch ngân hàng, kiểm soát việc truy cập, đăng nhập,… TÀI LIỆU THAM KHẢO [2] [3] [4] [5] [6] [7] [8] [9] [10] Michael O’Donnell, “Identification Protocols in Cryptography”, 2002 Wang Huqing, Sun Zhixin, Research on Zero-Knowledge Proof Protocol IJCSI, Vol 10, Issue 1, No 1, January 2013 Sattar J Aboud, “Identification Protocols”, 2014 RFC 8235, Schnorr Non-interactive Zero-Knowledge Proof, 2017, https://tools.ietf.org/html/rfc8235 Pierre-Alain Fouque, Fault Attack on Schnorr based Identification and Signature Schemes, 2009 Berry Schoenmakers, “Lecture Notes Cryptographic Protocols” , 2019 Richard Crandall and Carl Pomerance Prime Numbers: A Computational Perspective, 2001 Dan Boneh and Victor Shoup, “A Graduate Course in Applied Cryptography”, latest version, Jan 2020 https://toc.cryptobook.us/ https://github.com/yuntai/schnorr-examples