xác nhận danh tính
6.6. Phép chứng minh không lộ tri thức.
(zero-knowledge proof)
Nh− đã giới thiệu trong phần mở đầu 6.1, bài toán x−ng danh và xác nhận danh tính đóng một vai trò có ý nghĩa to lớn trong mọi hoạt động giao dịch của xã hộị Để việc x−ng danh đ−ợc an toàn, một yêu cầu quan trọng là cần chống đ−ợc việc mạo x−ng danh tính của ng−ời khác trong giao dịch. Khi việc giao dịch đ−ợc điện tử hoá một cách rộng rãi, yêu cầu an toàn đặt ra nhiều vấn đề cần đ−ợc giải quyết bằng những giải pháp khoa học. Những giải pháp đơn giản và thô sơ nh− trình tên tuổi, mật hiệu (password),... không còn an toàn, vì khó giữ đ−ợc bí mật làm cho ng−ời khác có thể dễ dàng bắt ch−ớc để mạo x−ng. Trong các phần trên của ch−ơng này, ta đã trình bày một số sơ đồ x−ng danh dựa vào các giao thức hỏi-đáp, ng−ời kiểm thử đ−a ra các câu hỏi, và ng−ời x−ng danh trả lời, dựa trên các trả lời đó ng−ời kiểm thử hoặc đ−a thêm những câu hỏi mới, hoặc chấp nhận (hay bác bỏ) danh tính của ng−ời x−ng danh. Phần lớn các giao thức hỏi-đáp trong các sơ đồ x−ng danh đó đều có ít nhiều tính chất của một chứng minh không lộ tri thức, dù tri thức mà ta đề cập đến chỉ là việc biết hay không biết một bí mật (của khoá x−ng danh). Khái niệm chứng
minh không lộ tri thức ban đầu xuất phát từ việc nghiên cứu các sơ
đồ x−ng danh, về sau đã đ−ợc mở rộng cho nhiều loại bài toán khác.
Các bài toán mà ta sẽ tìm kiếm cho chúng những “chứng minh không lộ tri thức” th−ờng là những bài toán quyết định, đó là những bài toán đ−ợc xác định bởi một tập dữ liệu Σ và một tính chất Π, và nội dung của bài toán là xét xem với mỗi x∈Σ, x có tính chất Π hay không. Một số lớp các bài toán quyết định nh− vậy đã đ−ợc xét đến khi ta nghiên cứu về độ phức tạp tính toán trong ch−ơng IỊ Tham gia vào một giao thức chứng minh gồm có hai ng−ời: một là ng−ời chứng minh (ký hiệu là P-prover) và một là ng−ời kiểm thử (ký hiệu V- verifier). Giao thức gồm các câu hỏi- đáp giữa V và P, th−ờng là V đ−a ra các câu hỏi hay thách đố, và V đ−a ra các câu trả lờị Giả thử P biết chắc chắn rằng x có tính chất
Π, P có thể dùng một giao thức chứng minh để thuyết phục V tin rằng x có tính chất Π, và một giao thức chứng minh đ−ợc gọi là không lộ tri thức, nếu ngoài việc thuyết phục đ−ợc V tin là x có tính chất Π ra, P không để lộ bất cứ một thông tin nào có thể giúp ng−ời khác (kể cả V) dùng để chứng minh x có tính chất Π. Tr−ớc khi đ−a ra đ−ợc các định nghĩa toán học về các khái niệm đó, ta hãy xét một thí dụ về một bài toán quen thuộc là bài toán đẳng cấu graph, với tập dữ liệu Σ là tập các cặp graph (G1, G 2), và nội dung bài toán là câu hỏi: hai graph G1 và G 2 có đẳng cấu với nhau không. Trong lý
thuyết về độ phức tạp tính toán, bài toán này có một vai trò đặc biệt, vì là một bài toán ch−a biết có thuật toán nào với thời gian đa thức giải nó hay không, nh−ng cũng ch−a có chứng minh nào chứng tỏ nó là NP-đầy đủ .
D−ới đây là sơ đồ t−ơng tác chứng minh không lộ tri thức của bài toán đẳng cấu graph:
Giả sử cho hai graph G1 và G 2 có tập đỉnh {1, 2,...,n}. Giả sử P biết G1 và G 2 đẳng cấu với nhau (chẳng hạn do biết một hoán vị σ
trên tập {1, 2,...,n} sao cho G1 là ảnh của G 2 qua hoán vị đó).
Sơ đồ t−ơng tác chứng minh “G1 và G 2 đẳng cấu” gồm m vòng hỏi- đáp, mỗi vòng có 4 b−ớc sau đây:
1. P chọn một hoán vị ngẫu nhiên π của {1, 2,...,n}, lập graph
H là ảnh của G 1 qua hoán vị π, và gửi H cho V.
2. V chọn số ngẫu nhiên i ∈ {1, 2} và gửi nó cho P.
3. P tính một hoán vị ρ trên {1, 2,...,n} sao cho H là ảnh của
Gi qua ρ (cụ thể, nếu i =1 thì lấy ρ =π , nếu i =2 thì lấyρ =π .σ ), rồi gửi ρ cho V.
4. V thử xem H có là ảnh của Gi qua ρ hay không.
V sẽ chấp nhận chứng minh của P nếu V thử đúng điều kiện 4 ở tất cả m vòng hỏi-đáp đó.
Thí dụ: Ta minh hoạ hoạt động của giao thức t−ơng tác để chứng minh sự đẳng cấu của hai graph bằng thí dụ d−ới đây:
Giả sử G1 = (V, E1) và G 2 = (V,E 2) là hai graph với tập đỉnh
V ={1, 2, 3, 4} và các tập cạnh E 1 ={12,13,14,34}, E 2={12,13,23,24}. Giả sử P biết G 2 đẳng cấu với G1 qua hoán vị σ = {4 1 3 2}.
2 4 1 2 2 4
π σ
3 1 4 3 1 3 H G1 G2