Báo cáo tốt nghiệp - Đề tài: "Phương pháp chứng minh không tiết lộ thông tin và ứng dụng trong giao dịch trên mạng máy tính" - Trường Đại học Công nghệ-Đại học Quốc gia Hà Nội - Năm 2010 - Vũ Quang Hòa

pdf 55 trang phuongnguyen 2930
Bạn đang xem 20 trang mẫu của tài liệu "Báo cáo tốt nghiệp - Đề tài: "Phương pháp chứng minh không tiết lộ thông tin và ứng dụng trong giao dịch trên mạng máy tính" - Trường Đại học Công nghệ-Đại học Quốc gia Hà Nội - Năm 2010 - Vũ Quang Hòa", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbao_cao_tot_nghiep_de_tai_phuong_phap_chung_minh_khong_tiet.pdf

Nội dung text: Báo cáo tốt nghiệp - Đề tài: "Phương pháp chứng minh không tiết lộ thông tin và ứng dụng trong giao dịch trên mạng máy tính" - Trường Đại học Công nghệ-Đại học Quốc gia Hà Nội - Năm 2010 - Vũ Quang Hòa

  1. ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ Vũ Quang Hòa PHƢƠNG PHÁP CHỨNG MINH KHÔNG TIẾT LỘ THÔNG TIN VÀ ỨNG DỤNG TRONG GIAO DỊCH TRÊN MẠNG MÁY TÍNH KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin Cán bộ hƣớng dẫn : PGS.TS Trịnh Nhật Tiến Cán bộ đồng hƣớng dẫn : ThS. Đặng Thu Hiền HÀ NỘI - 2010
  2. LỜI CẢM ƠN Trƣớc hết em xin gửi lời cảm ơn đến PGS.TS Trịnh Nhật Tiến, ngƣời thầy đã hƣớng dẫn em phát triển khóa luận này từ lý thuyết đến ứng dụng. Sự hƣớng dẫn của thầy đã giúp em có thêm đƣợc những hiểu biết sâu rộng về một số vấn đề liên quan đến bảo mật thông tin. Qua đó, những lý thuyết bảo mật cũng lôi cuốn em và sẽ trở thành hƣớng nghiên cứu tiếp của em sau khi tốt nghiệp. Em xin gửi lời cảm ơn đến cô Đặng Thu Hiền đã giúp em hoàn thành luận văn một cách tốt nhất. Từ đó, em có đƣợc những hiểu biết mới cũng nhƣ hoàn thành khóa luận một cách tốt nhất. Đồng thời em cũng xin chân thành cảm ơn các thầy cô trong bộ môn nói riêng cũng nhƣ các thầy cô trong khoa Công Nghệ nói chung. Nếu không có các thầy, các cô và khoa thì em không thể hoàn thành tốt luận văn này đƣợc. Em xin gửi lời cảm ơn đến các thành viên lớp K51CA, những ngƣời đã tìm hiểu và cùng em phát triển cơ sở công nghệ để xây dựng nên ứng dụng nêu trong khóa luận này. Sau cùng, em xin gửi lời cảm ơn đến gia đình, bạn bè đã tạo mọi điều kiện để em xây dựng thành công luận văn này. Hà Nội, tháng 5 năm 2010 Sinh viên thực hiện VŨ QUANG HÕA
  3. MỤC LỤC LỜI NÓI ĐẦU 1 Chương 1 : CÁC KHÁI NIỆM VÀ THUẬT TOÁN CƠ BẢN 2 1.1 LÝ THUYẾT MODULO 2 1.1.1 Hàm phi Euler 2 1.1.2 Đồng dƣ thức 2 1.1.3 Không gian Zn 3 * 1.1.4 Nhóm nhân Zn 5 1.1.5 Thặng dƣ 6 1.1.6 Căn bậc Modulo 6 * 1.1.7 Các thuật thoán trong Zn 7 * 1.1.8 Tính căn bậc bất kỳ trong Zn 9 1.2 VẤN ĐỀ MÃ HÓA 10 1.2.1 Mã hoá đối xứng 11 1.2.2 Mã hoá không đối xứng 12 1.3 VẤN ĐỀ KÝ ĐIỆN TỬ (DIGITAL SIGNATURE) 13 1.3.1 Khái niệm 13 1.3.2 Quá trình tạo ra chữ ký điện tử 13 1.3.3 Hàm băm sử dụng trong ký điện tử 14 1.3.4 Một số hàm băm thƣờng gặp 14 1.4 CHỮ KÝ MÙ 15 1.4.1 Khái niệm 15 1.4.2 Kỹ thuật chữ ký mù RSA 15 Chương 2 : PHƢƠNG PHÁP CHỨNG MINH KHÔNG TIẾT LỘ THÔNG TIN 16 2.1 KHÁI NIỆM PHÉP CHỨNG MINH KHÔNG TIẾT LỘ THÔNG TIN 16 2.1.1 Khái niệm phép chứng minh 16
  4. 2.1.2 Hệ thống chứng minh tƣơng tác 16 2.1.3 Phƣơng pháp chứng minh không tiết lộ thông tin 17 2.2 PHÂN LOẠI ỨNG DỤNG XUẤT PHÁT TỪ THỰC TIỄN 21 2.2.1 Thiết kế giao thức 21 2.2.2 Đề án nhận dạng 21 2.3 ỨNG DỤNG TRONG THĂM DÒ TỪ XA 23 2.3.1 Các khái niệm 23 2.3.2 Chứng minh tính hợp lệ của lá phiếu (x, y) (giao thức 1) 25 2.3.3 Chứng minh quyền sở hữu giá trị bí mật  (giao thức 2) 29 2.3.4 Giai đoạn cử tri chuyển lá phiếu đến ban kiểm phiếu (phƣơng án 2) 31 2.4 ỨNG DỤNG TRONG SỬ DỤNG TIỀN ĐIỆN TỬ VÀ LƢỢC ĐỒ BRAND . 33 2.4.1 Khởi tạo tài khoản 33 2.4.2 Chứng minh đại diện tài khoản 34 2.4.3 Giao thức rút tiền. 35 2.4.4 Giao thức thanh toán 37 2.4.5 Giao thức gửi 38 Chương 3 : THỬ NGHIỆM CHƢƠNG TRÌNH VỚI ỨNG DỤNG TRONG THĂM DÒ TỪ XA 39 3.1 MÔ TẢ CHƢƠNG TRÌNH 39 3.1.1 Giới thiệu 39 3.1.2 Mô tả các chức năng chính 40 3.2 THÀNH PHẦN CHÍNH CỦA CHƢƠNG TRÌNH 44 3.2.1 Cử tri chứng minh tính hợp lệ của lá phiếu 44 3.2.2 Ngƣời trung thực chứng minh có giữ tham số bí mật  45 KẾT LUẬN 47
  5. MỤC LỤC CÁC HÌNH VẼ Hình 1 : Sơ đồ cử chi chuyển lá phiếu đến ban kiểm phiếu 25 Hình 2 : Quá trình khởi tạo tài khoản 33 Hình 3 : CT điền các thông tin cần thiết để mã hóa lá phiếu thăm dò 40 Hình 4 : Các thông số trả về từ TT và các tính toán của CT 41 Hình 5 : Lá phiếu khi đã được TT kiểm tra lại 41 Hình 6 : TT tính Beta và w2 42 Hình 7 : TT tính r 42 Hình 8 : CT kiểm tra lại kết quả 43
  6. MỤC LỤC CÁC BẢNG Bảng 1 : Mô tả các bước tính : 5596 mod 1234 = 1013 8 Bảng 2 : Độ phức tạp theo bit của các phép toán cơ bản trong Z 9 Bảng 3 : Giai đoạn 1 cử tri chứng minh lá phiếu hợp lệ 26 Bảng 4 : Giai đoạn 2, TT chứng minh lá phiếu làm mù là hợp lệ 29 Bảng 5 : Phương án 1 gồm 2 giai đoạn một và hai 31 Bảng 6 : Quá trình chứng minh đại diện 34 Bảng 7 : Giao thức rút tiền 36 Bảng 8 : Giao thức thanh toán 38
  7. DANH MỤC TỪ VIẾT TẮT Ký hiệu viết tắt Giải thích CT Cử tri gcd(m, n) Ƣớc chung lớn nhất KP Kiểm phiếu Prover Ngƣời chứng minh TT Ngƣời trung thực Verifier Ngƣời xác minh
  8. LỜI NÓI ĐẦU Ngày nay Internet đã trở thành một phần không thể thiếu trong mỗi ngƣời dân Việt Nam nói riêng cũng nhƣ mỗi ngƣời dân trên thế giới nói riêng. Thông tin không ngừng đƣợc trao đổi, mua bán, trên mạng Internet, cũng chính vì lý do này mà việc bảo mật, đảm bảo an toàn thông tin đang là nhu cầu cấp thiết. Trƣớc các yêu cầu cần thiết đó, lý thuyết về mật mã thông tin đã ra đời nhằm đảm bảo tính an toàn dữ liệu tại nơi lƣu trữ cũng nhƣ khi dữ liệu đƣợc truyền trên mạng. Khoá luận này tập trung vào nghiên cứu các khái niệm cơ bản, cơ sở lý thuyết toán học modulo sử dụng trong bảo mật thông tin, các phƣơng pháp “chứng minh không tiết lộ thông tin” và đặc biệt là ứng dụng của “chứng minh không tiết lộ thông tin” trong bỏ phiếu thăm dò từ xa. Chứng minh không tiết lộ thông tin đã đƣợc nghiên cứu từ những năm 80, là phƣơng pháp chứng minh không có nghĩa là “không để lộ thông tin” mà “để lộ thông tin ở mức ít nhất” về sự vật, sự việc cần chứng minh. Với việc “không để lộ” ngƣời xác minh sẽ không có nhiều hiểu biết về sự vật sự việc, họ chỉ thu đƣợc chút ít thông tin (coi nhƣ là không) về đặc điểm tính chất của nó. Ngành mật mã học luôn phát triển không ngừng, trong phạm vi khóa luận này, chúng tôi chỉ trình bày về một vấn đề nhỏ là phƣơng pháp “chứng minh không tiết lộ thông tin” đồng thời tìm hiểu một số ứng dụng thực tế của cơ sở lý thuyết này. 1
  9. Chương 1 : CÁC KHÁI NIỆM VÀ THUẬT TOÁN CƠ BẢN Chƣơng này trình bày các vấn đề cơ bản trong toán học đƣợc ứng dụng nhiều trong các bài toán an toàn thông tin. Đó là các vấn đề về lý thuyết toán học sử dụng trong bảo mật và mã hóa thông tin nhƣ : Mã hóa đồng cấu, chữ ký mù, chia sẻ bí mật ngƣỡng Shamir và mã hóa Elgamal. Thông qua đó hình thành cơ sở lý thuyết cho an toàn truyền tin trên mạng máy tính. 1.1 LÝ THUYẾT MODULO 1.1.1 Hàm phi Euler 1/ Định nghĩa Cho n >= 1, Φ(n) đƣợc định nghĩa là số các số nguyên trong khoảng từ [1, n] nguyên tố cùng nhau với n. Hàm Φ (n) đƣợc gọi là hàm Euler phi. 2/ Tính chất của hàm Euler Nếu p là số nguyên tố thì Φ (n) = p – 1. Hàm phi Euler là hàm có tính nhân : Nếu gcd(m, n) = 1 thì Φ(mn) = Φ(m) Φ(n) (trong đó gcd(m, n) là ký hiệu ƣớc số chung lớn nhất của m và n) e1 e2 ek Nếu n = p1 p2 pk trong đó p1, p2, , pk là các thừa số nguyên tố của n thì: 1 1 1 Φ(n) = n(1 - )(1 - ) (1 - ) p1 p2 pk 1.1.2 Đồng dƣ thức 1/ Định nghĩa Cho a và b là các số nguyên, a đƣợc gọi là đồng dƣ với b theo modulo n, ký hiệu: a  b (mod n) nếu (a – b) chia hết cho n. Số nguyên n đƣợc gọi là modulus đồng dƣ. 2/ Ví dụ 10  3 (mod 7) vì 10 – 3 = 7 chia hết cho 7 7  -4 (mod 11) vì 7 – (-4) = 11 chia hết cho 11 2
  10. 3/ Tính chất của đồng dư Cho a, a1, b, b1, c Z. Ta có các tính chất sau: a  b (mod n) nếu và chỉ nếu a và b cùng có số dƣ khi chia cho n a  a (mod n) – Tính phản xạ a  b (mod n) thì b  a (mod n) – Tính đối xứng a  b (mod n) và b  c (mod n) thì a  c (mod n) – Tính bắc cầu nếu a  a1 (mod n) và b  b1 (mod n) thì : a + b  a1 + b1 (mod n) a.b  a1.b1 (mod n) Quan hệ “đồng dƣ” theo modulo n trên tập Z (tập các số nguyên) là một quan hệ tƣơng đƣơng (vì có tính chất phản xạ, đối xứng, bắc cầu), do đó nó tạo ra trên tập một phân hoạch gồm các lớp tƣơng đƣơng : hai số nguyên thuộc cùng một lớp tƣơng đƣơng khi và chỉ khi chúng có cùng một số dƣ khi chi cho n. Mỗi lớp tƣơng đƣơng đại diện bởi một số duy nhất trong tập Zn = {0, 1, 2, , n-1} là số dƣ khi chia các số trong lớp cho n, ký hiệu một lớp đƣợc đại diện bởi số a là [a]n: Nhƣ vậy : [a]n = [b]n tƣơng đƣơng với a  b (mod n) Vì vậy ta có thể đồng nhất Zn với tập các lớp tƣơng đƣơng theo modulo n. Zn = {0, 1, 2, , n-1} đƣợc gọi là tập các “thặng dƣ đầy đủ” theo modulo n. Mọi số nguyên bất kỳ đều có thể tìm đƣợc trong Zn một số đồng dƣ với mình theo modulo n. 1.1.3 Không gian Zn 1/ Các định nghĩa trong không gian Zn Các số nguyên theo modul n ký hiệu Zn là tập hợp các số nguyên {0,1,2, , n-1}. Các phép toán cộng, trừ, nhân trong Zn đƣợc thực hiện theo modulo n. 2/ Ví dụ Z25 = {0,1,2, ,24}. Trong Z25 : 13 + 16 = 4, bởi vì: 13 + 16 = 29  4 (mod 25). Tƣơng tự, 13*16 = 8 trong Z25 - Cho a Zn. Nghịch đảo nhân của a theo modulo n là một số nguyên x Zn sao cho a*x  1 (mod n). Nếu x tồn tại thì đó là giá trị duy nhất và a đƣợc gọi là khả nghịch, nghịch đảo của a ký hiệu là a-1. 3
  11. -1 - Cho a, b Zn . Phép chia của a cho b theo modulo n là tích của a và b theo modulo n, và chỉ dƣợc xác định khi b có nghịch đảo theo modulo n. 3/ Các tính chất trong không gian Zn - Cho a Zn , a có nghịch đảo khi và chỉ khi gcd(a, n) = 1 trong đó : gcd(a, n) (greatest common divisor) là ký hiệu ƣớc số chung lớn nhất của a và n Ví dụ: Các phần tử khả nghịch trong Z9 là: 1, 2, 4, 5, 7 và 8. Ví dụ 4-1 = 7 vì 4 .7  1 (mod 9) Tiếp theo là sự tổng quát hoá của tính chất 1.6 - Giả sử d = gcd(a, n). Phƣơng trình đồng dƣ ax  b (mod n) có nghiệm x nếu và chỉ nếu d chia hết cho b, trong trƣờng hợp các nghiệm d nằm trong khoảng 0 đến n-1 thì các nghiệm đồng dƣ theo modulo n/d. 4/ Định lý phần dư Trung Hoa CRT Nếu các số nguyên n1, n2, , nk là các số nguyên tố cùng nhau từng đôi một thì hệ phƣơng trình đồng dƣ : x  a1 (mod n1 ) x  a2 (mod n2 ) x  ak (mod nk ) có nghiệm duy nhất theo modulo n = n1n2 nk 5/ Thuật toán của Gausse Nghiệm x trong hệ phƣơng trình đồng dƣ (định lý phần dƣ Trung Hoa) đƣợc tính nhƣ sau : k x =  ai NiMi mod n i 1 -1 trong đó: Ni = n/ni, Mi = Ni mod ni 4
  12. Ví dụ: Cặp đồng dƣ: x  3 (mod 7) và x  7 (mod 13) có nghiệm duy nhất x  59 (mod 91) Tính chất : Nếu gcd(n1, n2) = 1 thì cặp đồng dƣ x  a (mod n1) và x  a (mod n2) có nghiệm duy nhất x  a (mod n1n2) * 1.1.4 Nhóm nhân Zn * 1/ Các định nghĩa trong nhóm nhân Z n * Nhóm nhân của Zn ký hiệu là Z n = {a Zn | gcd (a, n) = 1}. * Đặc biệt, nếu n là số nguyên tố thì Z n = {a Zn | 1 ≤ a ≤ n-1} * Cho a Zn . Bậc của a, ký hiệu là ord(a) là số nguyên dƣơng t nhỏ nhất sao cho at  1 (mod n). * 2/ Các tính chất trong Zn - Cho n ≥ 2 là số nguyên : * Φ(n) (Định lý Euler) Nếu a Zn thì a  1 (mod n). Nếu n là tích của các số nguyên tố phân biệt và nếu r  s (mod Φ(n)) ar  as (mod n) với mọi số nguyên a. Nói cách khác, làm việc với các số theo modulo nguyên tố p thì số mũ có thể giảm theo modulo Φ(n) - Cho p là số nguyên tố : (Định lý Fermat) Nếu gcd(a, p) = 1 thì ap-1  1 (mod p). Nếu r  s (mod p-1) thì ar  as (mod p) với mọi số nguyên a. Nói cách khác, làm việc với các số theo modulo nguyên tố p thì số mũ có thể giảm theo modulo p-1 Đặc biệt ap  a (mod p) với mọi số nguyên a. 5
  13. 1.1.5 Thặng dƣ 1/ Định nghĩa thặng dư * Cho a Zn . a đƣợc gọi là thặng dƣ bậc 2 theo modulo n hoặc bình phƣơng theo * 2 modulo n nếu tồn tại x Zn sao cho x  a (mod n). Nếu không tồn tại x thì a đƣợc gọi là thặng dƣ không bậc 2 theo modulo n. Tập hợp các thặng dƣ bậc 2 theo modulo n ký ___ hiệu là Qn và tập hợp các thặng dƣ không bậc 2 theo modulo n ký hiệu là Q n. * Chú ý vì định nghĩa 0 Zn nên 0 Qn và 0 n 2/ Tính chất của thặng dư * Cho n là tích của 2 số nguyên tố p và q. Khi đó a Zn là một thặng dƣ bậc 2 theo modulo n khi và chỉ khi a Qn và a n. Ta có, |Qn| = |Qp|.|Qq| = (p-1)(q-1)/4 và | n| = 3(p-1)(q-1)/4 3/ Ví dụ Cho n = 21. Khi đó: Q21 = {1, 4, 16} và 21 = {2, 5, 8, 10, 11, 13, 17, 19, 20} 1.1.6 Căn bậc Modulo 1/ Định nghĩa * 2 Cho a Qn . Nếu a Zn thoả mãn x  a (mod n) thì x đƣợc gọi là căn bậc 2 của a theo modulo n. 2/ Tính chất (Số căn bậc 2) Nếu p là một số nguyên tố lẻ thì a Qn thì a có chính xác 2 căn bậc 2 theo modulo p e1 e2 ek Tổng quát hơn: cho n = p1 p2 pk trong đó pi là các số nguyên tố lẻ phân k biệt và ei ≥1. Nếu a Qn thì a có chính xác 2 căn bậc 2 theo modulo n. 3/ Ví dụ Căn bậc 2 của 13 theo modulo 37 là 7 và 30. căn bậc 2 của 121 modulo 315 là 11, 74, 101, 151, 164, 214, 241 và 304. 6
  14. * 1.1.7 Các thuật thoán trong Zn 1/ Định nghĩa Cho n là số nguyên dƣơng. Nhƣ đã nói ở trƣớc, các phần tử trong Zn sẽ đƣợc thể hiện bởi các số nguyên {0, 1, 2, , n-1}. Ta thấy rằng: nếu a, b Zn thì: a + b nếu a + b 1 thì a-1 mod n không tồn tại. Ngƣợc lại, return (x). 3/ Thuật toán Euclidean mở rộng: INPUT: 2 số nguyên dƣơng a và b với a ≥ b. OUTPUT: d = gcd(a, b) và các số nguyên x, y thoả mãn: ax + by = d 1. Nếu b = 0 thì đặt d a, x 1, y  0 và return (d, x, y) 2. Đặt x2  1, x1  0, y2  0, y1 1 3. Khi b > 0 thực hiện: 3.1. q  [a/b], r = a – qb, x  x2 – qx1, y  y2 – qy1 3.2. a  b, r  b, x2  x1, x1  x, y2  y1, y1  y 4. Đặt d  a, x  x2, y  y2 và return (d, x, y) 7
  15. Số mũ modulo có thể đƣợc tính một các hiệu quả bằng thuật toán bình phƣơng và nhân liên tiếp, nó đƣợc sử dụng chủ yếu trong nhiều giao thức mã hoá. Một phiên bản t của thuật toán này nhƣ sau: Giả sử biểu diễn nhị phân của k là k 2i với i 0 i ki {0,1}. 4/ Thuật toán bình phương liên tiếp để tính số mũ modulo trong Zn. INPUT: a Zn và số nguyên dƣơng 0 ≤ k < n trong đó k có biểu diễn nhị phân i là: k = ki 2 OUTPUT: ak mod n 1. Đặt b  1. Nếu k = 0 return (b) 2. Đặt A  a 3. Nếu k0 = 1 thì đặt b  a. 4. For i = 1 to t do 2 Đặt A  A mod n Nếu ki = 1 thì b  A . b mod n 5. Return (b). Ví dụ: (Tính số mũ modulo) Bảng 1 : Mô tả các bước tính : 5596 mod 1234 = 1013 I 0 1 2 3 4 5 6 7 8 9 ki 0 0 1 0 1 0 1 0 0 1 A 5 25 625 681 1011 369 421 779 947 925 B 1 1 625 625 67 67 1059 1059 1059 1013 8
  16. Độ phức tạp theo bit của các phép toán cơ bản trong Zn đƣợc trình bày trong bảng sau: Bảng 2 : Độ phức tạp theo bit của các phép toán cơ bản trong Z Độ phức tạp về bit Phép toán Cộng modulo (a + b) mod n O(lg n) Trừ modulo (a - b) mod n O(lg n) Nhân modulo (a b) mod n O((lg n)2) Nghịch đảo theo modulo a-1 mod n O((lg n)2) Số mũ modulo ak mod n, k < n O((lg n)3) * 1.1.8 Tính căn bậc bất kỳ trong Zn * Sử dụng tính chất trong Zn : Nếu n là tích của các số nguyên tố phân biệt và nếu r  s (mod Φ(n)) ar  as (mod n) với mọi số nguyên a. Nói cách khác, làm việc với các số theo modulo nguyên tố p thì số mũ có thể giảm theo modulo Φ(n) để tính căn bậc k trong Zn : x x 1/x z Giả sử tính y trong không gian Zn. Áp dụng công thức y = y  y (mod n). Theo tính chất trên thì ta phải có 1/x  z (mod Φ(n) ). Sử dụng thuật toán Euclidean mở z rộng để tính nghịch đảo nhân z = 1/x trong ZΦ(n). Do đó:  y (mod n). Sử dụng z thuật toán bình phƣơng liên tiếp để tính số mũ modulo y trong Zn. Ví dụ: 7 Tính 5 trong Z13 7 5 (mod 13)  51/7 ( mod 12 ) (mod 13) = 57 (mod 13) = 8 = 8 9
  17. 1.2 VẤN ĐỀ MÃ HÓA Mặc dù mã hoá đã đƣợc sử dụng từ rất lâu trong các hoạt động ngoại giao và quân sự nhƣng chỉ sau khi bài báo "Lý thuyết truyền tin trong các hệ thống bảo mật" của Claude Shannon [10] ra đời nó mới trở thành một môn khoa học. Trƣớc đó các vấn đề về mã hoá, mật mã gần nhƣ là một môn "nghệ thuật". Mã hoá là phần rất quan trọng trong vấn đề bảo mật. Mã hoá ngoài nhiệm vụ chính là làm cho tài liệu an toàn hơn, nó còn có một lợi ích quan trọng là : thay vì truyền đi tài liệu thô (không đƣợc mã hoá) trên một đƣờng truyền đặc biệt, đƣợc canh phòng cẩn mật không cho ngƣời nào có thể “xâm nhập” vào lấy dữ liệu, ngƣời ta có thể truyền một tài liệu đã đƣợc mã hoá trên bất cứ đƣờng truyền nào mà không lo dữ liệu bị đánh cắp vì nếu dữ liêu có bị đánh cắp đi nữa thì dữ liệu đó cũng không dùng đƣợc. Một số khái niệm liên quan : - Thuật toán mã hoá/ giải mã : là thuật toán dùng để chuyển thông tin thành dữ liệu mã hoá hoặc ngƣợc lại. - Khoá : là thông tin mà thuật toán mã/ giải mã sử dụng để mã hóa/ giải mã thông tin. Mỗi khi một thông tin đã đƣợc mã hoá thì chỉ có những ngƣời có khoá thích hợp mới có thể giải mã. Nếu không thì dù dùng cùng một thuật toán giải mã nhƣng cũng không thể phục hồi lại thông tin ban đầu. Đây là đặc điểm quan trọng của khoá : mã hoá chỉ phụ thuộc vào khoá mà không phụ thuộc vào thuật toán mã/ giải mã. Điều này giúp cho một thuật toán mã/ giải mã có thể đƣợc sử dụng rộng rãi. Với hình thức khá phổ biến hiện nay là truyền tin qua thƣ điện tử và không sử dụng các công cụ mã hoá, bảo mật cũng nhƣ chữ ký điện tử thì các tình huống sau có thể xảy ra : - Không chỉ nguời nhận mà ngƣời khác có thể đọc đƣợc thông tin. - Thông tin mà ta nhận đƣợc có thể không phải là của ngƣời gửi đúng đắn. - Thông tin nhận đƣợc bị ngƣời thứ ba sửa đổi. - Bị nghe trộm: thông tin đƣợc truyền đi trên đƣờng truyền có thể bị ai đó “xâm nhập” vào lấy ra, tuy nhiên vẫn đến đƣợc ngƣời nhận mà không bị thay đổi. 10
  18. - Bị thay đổi : thông tin bị chặn lại ở một nơi nào đó trên đƣờng truyền và bị thay đổi. Sau đó thông tin đã bị thay đổi này đƣợc truyền tới cho ngƣời nhận nhƣ không có chuyện gì xảy ra. - Bị lấy cắp : thông tin bị lấy ra nhƣng hoàn toàn không đến đƣợc ngƣời nhận. Khi đó thì khỏi nói đến thƣơng mại điện tử, chính phủ điện tử với nền quản lý hành chính điện tử, vv và vv. Để giải quyết vấn đề này, thông tin trƣớc khi truyền đi sẽ đƣợc mã hoá và khi tới ngƣời nhận, nó sẽ đƣợc giải mã trở lại. Để đảm bảo rằng chỉ ngƣời cần nhận có thể đọc đƣợc thông tin mà ta gửi khi biết rằng trên đƣờng đi, nội dung thông tin có thể bị theo dõi và đọc trộm, ngƣời ta sử dụng các thuật toán đặc biệt để mã hoá thông tin. Trong trƣờng hợp này, trƣớc khi thông tin đƣợc gửi đi, chúng sẽ đƣợc mã hoá lại và kết quả là ta nhận đƣợc một nội dung thông tin "không có ý nghĩa". Khi thông điệp bị theo dõi hoặc bị bắt giữ trên đƣờng đi, để hiểu đƣợc thông tin của bạn, kẻ tấn công phải làm một việc là giải mã nó. Thuật toán mã hoá càng tốt thì chi phí cho giải mã đối với kẻ tấn công càng cao. Khi chi phí giải mã cao hơn giá trị thông tin thì coi nhƣ bạn đã thành công trong vấn đề bảo mật. Các thuật toán mã hoá thông tin khá đa dạng nhƣng có thể chia ra làm hai hƣớng: 1.2.1 Mã hoá đối xứng Là loại mã hoá chỉ dùng 1 khoá cho cả việc mã hoá và giải mã. 1/ Ưu điểm - Tốc độ mã/ giải mã nhanh. Đây là ƣu điểm nổi bật của mã đối xứng. - Sử dụng đơn giản : chỉ cần dùng một khoá cho cả 2 bƣớc mã và giải mã. 2/ Nhược điểm - Đòi hỏi khoá phải đƣợc 2 bên gửi/ nhận trao tận tay nhau vì không thể truyền khoá này trên đƣờng truyền mà không đƣợc bảo vệ. Điều này làm cho việc sử dụng khoá trở nên không thực tế. - Không an toàn : càng nhiều ngƣời biết khoá thì độ rủi ro càng cao. - Trong trƣờng hợp khoá mã hoá thay đổi, cần thay đổi đồng thời ở cả ngƣời gửi và ngƣời nhận, khi đó rất khó có thể đảm bảo đƣợc là chính bản thân khoá không bị đánh cắp trên đƣờng đi - Không cho phép ta tạo ra chữ ký điện tử. 11
  19. 3/ Một số thuật toán mã hoá đối xứng - DES : 56 bit, không an toàn. Có thể dễ dàng bị bẻ khoá trong khoảng vài phút. - Triple DES, DESX, GDES, RDES: mở rộng độ dài của khoá ở mã DES lên tới 168 bit. - RC2, RC4, RC5: độ dài khoá có thể lên tới 2048 bit. - IDEA (International Data Encryption Algorithm) : 128 bit, thƣờng dùng trong các chƣơng trình email. 1.2.2 Mã hoá không đối xứng Là loại mã hoá dùng một khoá để mã hoá (thƣờng gọi là khoá công khai - public key) và dùng một khoá khác để giải mã (thƣờng gọi là khoá riêng - private key). 1/ Ưu điểm Đây là loại mã hoá đƣợc sử dụng chủ yếu trên Internet. Một ngƣời muốn sử dụng loại mã hoá này cần tạo ra một cặp khoá công khai/ bí mật. Anh ta có thể truyền khoá công khai của mình tới bất cứ ai muốn giao tiếp với anh ta mà không sợ ngƣời khác lấy khoá này. Cô ta sẽ mã hoá thông điệp của mình bằng khoá công khai đó và gửi tới cho anh ta. Dĩ nhiên là chỉ mình anh ta với khoá bí mật của mình mới có thể thấy đƣợc thông điệp của cô. Nhƣ vậy kẻ tấn công, cho dù có biết nội dung của khoá công khai và nội dung của thông tin đã bị mã hoá vẫn không thể giải mã đƣợc thông tin. Lý do là tính ngƣợc khoá bí mật từ khoá công khai hoặc là rất khó, nếu không nói là không thể. Điều này đạt đựơc trên nguyên tắc sử dụng các hàm một chiều trong toán học khi tính hàm y=f(x) là đơn giản nhƣng ngƣợc lại việc tính giá trị y khi đã biết x là rất khó khăn. 2/ Nhược điểm Tốc độ mã hoá chậm : tốc độ mã hoá nhanh nhất của loại mật mã không đối xứng vẫn chậm hơn nhiều lần so với mật mã đối xứng. Do đó ngƣời ta thƣờng kết hợp 2 loại mã hoá để nâng tốc độ mã hoá lên. 3/ Một số thuật toán mã hoá không đối xứng - RSA : Hệ mã này đƣợc dùng nhiều nhất cho web và chƣơng trình email. Độ dài khoá thông thƣờng là từ 512 đến 1024 bit. [8] - Elgamal : 512 đến 1024 bit. 12
  20. 1.3 VẤN ĐỀ KÝ ĐIỆN TỬ (DIGITAL SIGNATURE) 1.3.1 Khái niệm Nếu việc sử dụng mật mã đã trở nên phổ biến, không chỉ trong quân đội mà còn trong thƣơng mại và những mục đích cá nhân thì những đoạn tin và tài liệu điện tử sẽ cần những chữ ký giống nhƣ các tài liệu giấy. Cũng giống nhƣ trong thực tế, chữ ký để xác nhận cho ngƣời nhận rằng bức thƣ đó do ngƣời này gửi mà không phải ai khác. Chữ ký điện tử sử dụng thuật toán mã không đối xứng để định danh ngƣời gửi. Thông thƣờng, để bảo vệ các văn bản mã hoá ngƣời ta dùng chữ ký điện tử. Việc ứng dụng chữ ký điện tử cũng nhƣ công nhận giá trị pháp lý của nó là điều kiện tiên quyết cho thƣơng mại điện tử. Nếu nhƣ việc giả mạo chữ ký viết tay hoặc con dấu là không đơn giản thì việc làm giả một đoạn thông tin nào đó là rất dễ dàng. Vì lý do đó, bạn không thể quét chữ ký của mình cũng nhƣ con dấu tròn của công ty để chứng tỏ rằng tài liệu mà bạn truyền đi đúng là của bạn. Khi bạn cần "ký " một văn bản hoặc một tài liệu nào đó, thủ tục đầu tiên là tạo ra chữ ký và thêm nó vào trong thông điệp. Có thể hình dung thủ tục này nhƣ sau. Phần mềm mã hoá mà bạn sử dụng sẽ đọc nội dung văn bản và tạo ra một chuỗi thông tin đảm bảo chỉ đặc trƣng cho văn bản đó mà thôi. Bất kỳ một thay đổi nào trong văn bản sẽ kéo theo sự thay đổi của chuỗi thông tin này. Sau đó phần mềm đó sẽ sử dụng khoá bí mật của bạn để mã hoá chuỗi thông tin này và thêm nó vào cuối văn bản nhƣ một động tác ký (Bạn có thể thấy là chúng ta hoàn toàn không mã hoá nội dung văn bản, chỉ làm động tác ký mà thôi). Khi nhận đƣợc văn bản, ngƣời nhận lặp lại động tác tạo ra chuỗi thông tin đặc trƣng, sau đó sử dụng khoá công khai mà bạn đã gửi để kiểm tra chữ ký điện tử có đúng là của bạn không và nội dung thông điệp có bị thay đổi hay không. Thuật toán mã hoá không đối xứng đầu tiên và nổi tiếng hơn cả có tên gọi là RSA (đƣợc ghép từ chữ cái đầu tiên của tên ba tác giả là Rivest, Shamir, Adleman). Thuật toán RSA cũng đƣợc áp dụng để tạo ra chữ ký RSA. 1.3.2 Quá trình tạo ra chữ ký điện tử 1. Tạo một câu ngắn gọn để nhận dạng – ví dụ nhƣ “Tôi là sinh viên Công Nghệ” 2. Mã hoá nó bằng khoá bí mật của mình tạo ra chữ ký điện tử. 3. Gắn chữ ký này vào thông điệp cần gửi rồi và mã hoá toàn bộ bằng khoá công khai của ngƣời nhận. 13
  21. 4. Gửi thông điệp đi. Ngƣời nhận sẽ dùng khoá bí mật của mình để giải mã thông điệp và lấy chữ ký ra. Sau đó họ sẽ giải mã chữ ký này bằng khoá công khai của ngƣời gửi. Chỉ ngƣời gửi nào có khoá bí mật phù hợp mới có thể tạo ra chữ ký mà ngƣời nhận giải mã thành công. Do đó ngƣời nhận có thể định danh ngƣời gửi. Tuy nhiên chữ ký điện tử tạo ra theo cách này vẫn chƣa dùng đƣợc. Nó có thể bị cắt và dán vào thông điệp khác mà không cần phải biết khoá bí mật. 1.3.3 Hàm băm sử dụng trong ký điện tử Một thông điệp đƣợc đƣa qua hàm băm sẽ tạo ra một giá trị có độ dài cố định và ngắn hơn đƣợc gọi là “đại diện” hay “bản tóm tắt”. Mỗi thông điệp đi qua một hàm băm chỉ cho duy nhất một “đại diện” và ngƣợc lại : rất khó có thể tìm đƣợc hai thông điệp khác nhau mà có cùng “đại diện” khi đi qua cùng một hàm băm. Hàm băm thƣờng kết hợp với chữ ký điện tử ở trên để tạo ra một loại chữ ký điện tử vừa an toàn hơn (không thể cắt/ dán) vừa có thể dùng để kiểm tra tính toàn vẹn của thông điệp. Các bƣớc để tao ra chữ ký điện tử nhƣ vậy đƣợc trình bày nhƣ sau : 1. Đƣa thông điệp cần gửi qua hàm băm tạo ra đại diện cho thông điệp đó . 2. Mã hoá đại diện bằng khoá bí mật của ngƣời gửi để tạo ra chữ ký điện tử. 3. Mã hoá toàn bộ thông điệp và chữ ký bằng khoá công khai của ngƣời nhận và gửi đi Ngƣời nhận sẽ giải mã thông điệp bằng khoá bí mật của mình, giải mã chữ ký bằng khoá công khai của ngƣời gửi để lấy đại diện ra. Sau đó cho thông điệp qua hàm băm để tạo lại đại diện của thông điệp rồi so sánh với đại diện nhận đƣợc : nếu giống nhau thì ngƣời nhận có thể vừa định danh ngƣời gửi vừa kiểm tra tính toàn vẹn của thông điệp. 1.3.4 Một số hàm băm thƣờng gặp - MD5 (Message Digest): 128 bit, nhanh, đƣợc sử dụng rộng rãi. - SHA (Secure Hash Algorithm): 160 bit 14
  22. 1.4 CHỮ KÝ MÙ 1.4.1 Khái niệm Theo phƣơng thức bỏ phiếu truyền thống, cử tri mang chứng minh thƣ và lá phiếu chƣa có nội dung gì đến bàn đóng dấu. Ở đó ngƣời ta kiểm tra giấy tờ để xác định quyền bỏ phiếu, sau đó họ đóng dấu xác thực trên lá phiếu. Cử tri cất chứng minh thƣ vào phòng bỏ phiếu, nhƣ vậy lá phiếu hoàn toàn không có thông tin định danh. Quá trình bỏ phiếu này đƣợc gọi là “nặc danh”. 1.4.2 Kỹ thuật chữ ký mù RSA - Giả sử Ban kiểm phiếu (KP) dùng sơ đồ chữ ký RSA (n, p, q, b, a). Nếu cử tri (CT) chuyển ngay Số định danh x của mình cho Ban KP thì sẽ nhận a đƣợc chữ ký là E(x) = x (mod n). CT không làm nhƣ vậy ! - Cử tri CT che dấu Số định danh x bằng bí danh y: y = Blind(x) = x * rb (mod n). (Trong đó r đƣợc chọn sao cho tồn tại phần tử nghịch đảo r -1 (mod n)). Cử tri CT gửi bí danh y cho Ban KP. Ban KP ký trên bí danh y đƣợc chữ ký z: z = E(y) = E(Blind(x)) = E(x * rb) = (x * rb) a = xa * (rb)a = xa * r . Ban KP gửi chữ ký z cho cử tri CT. - Cử tri CT “xoá mù” trên z sẽ nhận đƣợc chữ ký trên Số định danh x: Unblind(z)=Unblind(E(blind(x)))=Unblind(xa * r)= (xa * r) * r -1 = x a (mod n). Cử tri CT đã có đƣợc chữ kí của Ban KP trên x, đó là xa (mod n). 15
  23. Chương 2 : PHƢƠNG PHÁP CHỨNG MINH KHÔNG TIẾT LỘ THÔNG TIN 2.1 KHÁI NIỆM PHÉP CHỨNG MINH KHÔNG TIẾT LỘ THÔNG TIN 2.1.1 Khái niệm phép chứng minh Trong toán học và cuộc sống, chúng ta thƣờng muốn chứng minh một vấn đề gì đó cho ngƣời khác hiểu. Điển hình, nếu nhƣ tôi biết X đúng, và tôi muốn chứng minh điều này cho bạn, tôi cố gắng hết sức để sử dụng những điều đã có và những điều liên quan để chứng minh rằng X đúng. Ví dụ : Tôi biết rằng 26781 không là số nguyên tố bởi nó gấp 113 237 lần, để chứng minh cho bạn thấy điều đó, tôi chỉ ra rằng thực sự 26781 = 113 * 237. 2.1.2 Hệ thống chứng minh tƣơng tác Theo lý thuyết tính toán phức tạp, một hệ thống chứng minh tƣơng tác là một máy trừu tƣợng mà các mô hình tính toán nhƣ là việc trao đổi tin nhắn giữa hai bên. Các bên, có Verifier và Prover (ngƣời xác minh và ngƣời chứng minh), tƣơng tác với nhau bằng cách trao đổi thông điệp để xác định một chuỗi thuộc về một ngôn ngữ hay không? Prover là toàn năng và sở hữu không giới hạn nguồn lực tính toán, nhƣng không thể tin tƣởng đƣợc, trong khi ngƣời xác minh đã bị chặn sức mạnh tính toán. Thông điệp đƣợc gửi giữa hai bên Verifier và Prover cho đến khi có một câu trả lời cho vấn đề này và đã “thuyết phục” chính nó nếu nó đúng. Tất cả các hệ thống chứng minh tƣơng tác gồm có hai yêu cầu : Đầy đủ : Nếu phát biểu là đúng, việc xác minh trung thực (có nghĩa là, một trong các giao thức sau đây là đúng) sẽ đƣợc thuyết phục thực tế bởi Prover trung thực. Hoàn thiện : Nếu phát biểu là sai, không có Prover, ngay cả khi không theo giao thức, có thể thuyết phục ngƣời xác minh trung thực rằng nó là đúng, trừ với một số xác suất rất nhỏ. Chú ý rằng chúng ta không quan tâm tới những gì xảy ra nếu ngƣời xác minh không trung thực, chúng ta tin vào ngƣời xác minh. Bản chất cụ thể của hệ thống, và do đó các lớp phực tạp của ngôn ngữ nó có thể nhận ra, phụ thuộc vào những gì sắp xếp giới hạn đƣợc đặt trên Verifier, cũng nhƣ những gì mà khả năng của nó mang lại – ví dụ, hầu hết các hệ thống chứng minh tƣơng tác phụ thuộc vào rất nhiều vào khả năng của Verifier để đƣa ra lựa chọn ngẫu 16
  24. nhiên. Nó cũng phụ thuộc vào bản chất của tin nhắn trao đổi – có bao nhiêu và những gì chứa bên trong nó. Hệ thống chứng minh tƣơng tác đã tìm thấy một số ý nghĩa sâu sắc đáng ngạc nhiên cho các lớp truyền thống phức tạp đƣợc xác minh bằng cách sử dụng chỉ một máy. Các lớp phức tạp của hệ thống chính đƣợc miêu tả bằng hệ thống chứng minh tƣơng tác là AM và IP. (Arthur – Merlin protocol và Interactive Proof System) 2.1.3 Phƣơng pháp chứng minh không tiết lộ thông tin 1/ Khái niệm Một hệ quả tiêu biểu của một phép chứng minh là bạn đã học đƣợc một số hiểu biết, khác hơn là bạn đang tin rằng phát biểu là đúng sự thật. Trong ví dụ trƣớc chỉ có bạn biết 26781 không phải là số nguyên tố, nhƣng bạn cũng chỉ ra phân tích nhân của số đó. Chứng minh không tiết lộ thông tin cố gắng tránh khỏi điều này. Trong phƣơng pháp này, Alice muốn chứng minh cho Bob thấy rằng X đúng, Bob sẽ thực sự bị thuyết phục rằng X là đúng, nhƣng sẽ không học đƣợc bất kỳ điều gì nhƣ là hệ quả của quá trình này. Rằng Bob không có thêm hiểu biết. Ta lại xét thêm một ví dụ đơn giản nhƣ thế này : Giả sử P và V cùng tham gia trò chơi với các quân bài. P đƣa ra 2 quân bài úp và nói đó là “át” và “2”. P yêu cầu V chọn quân “át”. Trƣớc khi chọn quân “át”, V muốn kiểm tra chắc chắn rằng 2 quân bài đó đích thực là “át” và “2”. V yêu cầu P chứng minh điều này. Nếu P lật 2 quần bài đó lên thì coi nhƣ là một cách chứng minh thì trò chơi kết thúc vì V đã nhìn thấy chúng và dĩ nhiên là anh ta có thể chọn ngay ra đƣợc quân bài “át”. Có một cách khách để P chứng minh rằng quân bài đó là “át” và “2” mà không phải lật 2 quân bài đó lên, tức là không làm lộ thông tin về 2 quân bài trên tay P. Rất đơn giản, anh ta đƣa 50 quân bài còn lại cho V. Nếu V kiểm tra thấy thiếu một quân bài “át” và 1 quân bài “2” thì có thể coi quân bài trên tay P đƣa ra đúng nhƣ anh ta nói. Qua hai ví dụ trên có thể tạm hiểu “Chứng minh không tiết lộ thông tin” không có nghĩa là “không để lộ thông tin” mà nghĩa là “để lộ thông tin ở mức ít nhất” về sự vật sự việc cần chứng minh. Với những “thông tin để lộ”, ngƣời xác minh không có nhiều hiểu biết (knowledge) về sự vật sự việc, họ chỉ thu đƣợc chút ít thông tin (coi nhƣ “zero knowledge”) về đặc điểm tính chất của nó. 17
  25. Giao thức  là giao thức “Hỏi - Đáp” 3 bƣớc để P chứng minh cho V một vấn đề nào đó. - P gửi cho V - một giá trị ngẫu nhiên. - V gửi lại P - một giá trị ngẫu nhiên nhƣ là giá trị dùng để kiểm thử. - P gửi đáp lại V một giá trị. Kết quả V thừa nhận hoặc bác bỏ vấn đề P chứng minh. “Chứng minh không tiết lộ thông tin” đƣợc phát minh bởi Goldwasser, Micali và Rackoff năm 1981 (đƣợc viết tắt là GMR). Chứng minh không tiết lộ thông tin (và chứng minh tƣơng tác nói chung) hóa ra là một trong những lý thuyết hay nhất và có ảnh hƣởng lớn nhất trong khoa học máy tính, với ứng dụng ngày càng tăng trong dự án chữ ký thực để chứng minh rất nhiều vấn đề NP-complete là khó ngay cả khi xấp xỉ. 2/ Các thành phần bên trong phép chứng minh không tiết lộ thông tin Có hai nhân vật mà chúng ta thƣờng xuyên phải để nhắc đến trong vấn đề này : - Peggy, các Prover(ngƣời chứng minh) – Peggy có một số thông tin muốn chứng minh cho Victor thấy, nhƣng cô ấy lại không muốn nói thẳng bí mật đó cho Victor. - Victor, các Verifier(ngƣời xác minh) – Victor hỏi Peggy một loạt các câu hỏi, cố gắng tìm ra đƣợc là Peggy có thực sự biết đƣợc bí mật đó hay không. Victor không tiếp thu đƣợc bất cứ điều gì khác từ bí mật đó, ngay cả khi anh ta gian lận hay không tuân theo chỉ dẫn của giao thức. 3/ Tính chất của giao thức chứng minh không tiết lộ thông tin Giao thức chứng minh không tiết lộ thông tin có thể đƣợc mô tả nhƣ là các giao thức mật mã khác có tính năng đặc biệt đƣợc mô tả trong [10] – H. Aronsson. Zero knowledge protocols and small systems : - Ngƣời xác minh (verifier) không thể tiếp thu đƣợc bất cứ một điều gì từ giao thức này : Verifier không học thêm đƣợc bất cứ điều gì từ giao thức này, bởi anh ta không thể tự mình tìm hiểu mà không có ngƣời chứng minh (prover). Đây chính là nội dung chính của giao thức chứng minh không tiết lộ thông tin (giống nhƣ không có tri thức nào đƣợc trao đổi ở đây). Không có thuộc tính này, giao thức này sẽ đƣợc gọi là giao thức tiết lộ tối thiểu, tức là nó yêu cầu hoàn toàn không có thông tin nào có thể để lộ trong trƣờng hợp này. 18
  26. - Prover sẽ không gian lận Verifier : Nếu Peggy không biết bí mật đó, rõ ràng xác suất thành công của cô ấy là rất nhỏ. Sau số vòng lặp tƣơng đối lớn của giao thức này, tỉ lệ Prover gian lận sẽ đƣợc làm nhỏ nhất khi cần thiết. Giao thức này cũng đƣợc cắt và chọn lựa, tức là chỉ cần lần đầu tiên Prover thất bại, Victor có thể biết đƣợc ngay rằng Peggy gian lận. Nhƣ vậy, với mỗi vòng lặp của giao thức này, xác suất thành công sẽ cao hơn rất nhiều. Giao thức này có thể làm việc tốt ngay cả khi xác suất may mắn của Prover gian lận cao vì ta có thể tăng số lần vòng lặp của giao thức. Nói cách khác, khả năng nắm bắt của Verifier rất cao, có thể bảo vệ bản thân tránh khỏi bị thuyết phục bởi những vấn đề sai (không có vấn đề gì mà Prover có thể đánh lừa đƣợc Verifier). - Verifier không thể gian lận Prover đƣợc : Victor không có thêm đƣợc bất cứ thông tin nào từ giao thức, thậm chí nếu anh ta không tuân theo những chỉ dẫn đó. Điều duy nhất Victor có thể làm để thuyết phục chính anh ta rằng Peggy biết bí mật đó. Điều mà Prover tiết lộ chỉ là một giải pháp của trong rất nhiều giải pháp cho một vấn đề, không bao giờ tất cả những điều ấy kết hợp lại có thể tìm ra đƣợc bí mật đó. - Verifier không thể giả làm Prover để chứng minh cho ngƣời thứ ba đƣợc. Bởi vì không có thông tin rò rỉ từ Peggy cho Victor, Victor không thể thử để thay thể Peggy cho bên thứ 3 bất kỳ bên ngoài. Với một số giao thức khác, ngƣời trung gian có thể tấn công là điều có thể, tuy nhiên, điều đó có nghĩa là có ai đó có thể chuyển tiếp lƣu lƣợng truy cập từ Peggy thật và cố gắng thuyết phục một Victor khác, thủ phạm, là Peggy. Ngoài ra nếu các bản ghi Verifier khác ghi lại cuộc đàm thoại giữa anh ta và Prover, thì bản ghi đó cũng không thể đƣợc dùng để thuyết phục bên thứ ba nào cả. Nó trông giống nhƣ một cuộc trò chuyện giả (ví dụ: trong đó Verifier và Prover cùng đồng ý bắt tay trƣớc khi yêu cầu Verifier chọn) - Victor có thể chứng minh bất cứ một luận điểm đúng nào : Thuộc tính này đƣợc gọi là hoàn thiện và nó là khả năng nắm bắt cơ bản của một số Prover để thuyết phục Verifier về luận điểm đúng đó (thuộc về một số định trƣớc của một tập hợp các luận điểm đúng) 19
  27. Giả sử, Peggy có gắng thuyết phục Victor là cố ấy biết một bí mật có thể chấp nhận đƣợc của một công thức toán logic φ. Cô ấy có thể làm điều này bằng cách gửi đi sự chuyển nhƣợng chân lý đáp ứng cho φ tới Victor. Thay vào đó, GMR [8] [6] chuẩn bị một kịch bản xác suất mà Victor bị thuyết phục bởi Peggy thực sự có một chuyển nhƣợng cho φ bằng cách trao đổi thật nhiều tin nhắn với anh ta và khẳng định rằng cô ta biết bí mật. Vì tính hợp lệ và tính đây đủ của phép chứng minh không tiết lộ thông tin, nếu nhƣ có một chân lý tồn tại, thì Peggy có thể làm nhƣ vậy mà Victor hầu nhƣ luôn luôn chấp nhận, nhƣung nếu một chân lý nhƣ vậy không tồn tại, thì không có vấn đề gì mà Peggy làm, Victor chắc chắn sẽ từ chối. Một ý niệm khác của xác suất đã đề xuất một cách độc lập bởi Babai [3] đƣợc gọi là giao thức Arthur – Merlin. Nó đã đƣợc hạn chế so với mô hình GMR bởi trong mô hình này, Verifier đƣợc yêu cầu phải tiết lộ tất cả các bit ngẫu nhiên ngay sau khi kết thúc giao thức. 20
  28. 2.2 PHÂN LOẠI ỨNG DỤNG XUẤT PHÁT TỪ THỰC TIỄN Chứng minh không tiết lộ thông tin có rất nhiều ứng dụng. Các ứng dụng thực tiễn nhất đƣợc chia làm hai loại : 2.2.1 Thiết kế giao thức Một giao thức là một thuật toán cho các bên tƣơng tác để đạt đƣợc một số mục tiêu. Ví dụ, chúng ta thấy giao thức trao đổi khóa Diffie-Hellman. Trong giao thức này, chúng ta giả định rằng cả hai bên đều làm theo hƣớng dẫn của giao thức, và điều duy nhất ta lo lắng là ta đã trở thành một đối thủ thụ động. Tuy nhiên, trong mật mã học, chúng ta muốn thiết kế các giao thức rằng cần phải đạt đƣợc bảo mật thậm chí khi một trong các bên “gian lận” và không theo hƣớng dẫn. Đây là một vấn đề khó khăn kể từ khi chúng ta không có cách để biết chính xác các bên sẽ “gian lận”. Tuy nhiên, một cách để tránh gian lận là nhƣ sau : Nếu Alice chạy một giao thức với Bob, để cho Bob biết rằng Alice không gian lận, cô ấy sẽ gửi toàn bộ dữ liệu đầu vào cho Bob và sau đó Bob có thể chứng thực điều này. Tuy nhiên, cách này sẽ không đƣợc chấp nhận nhất là với Alice : lý do duy nhất là họ đang cùng chạy giao thức này và họ không thể thực sự tin tƣởng đối phƣơng, và những dữ liệu đầu vào mà cô ấy có là bí mật, và cô ấy không muốn chia sẽ chúng. Chứng minh không tiết lộ thông tin cung cấp một giải pháp cho vấn đề này. Thay vì gửi hết các dữ liệu đầu vào của mình, Alice sẽ chứng minh không tiết lộ thông tin rằng cô ấy đã theo đúng hƣớng dẫn. Bob sẽ bị thuyết phục, nhƣng cũng sẽ không biết đƣợc bất cứ điều gì về những dữ liệu đầu vào của Alice ngoài những cái anh ấy đã biết trƣớc kia. Thực tế, chúng ta sẽ thấy rằng có thể làm điều này một cách chung, áp dung cơ bản cho tất cả các giao thức mã hóa. Vì thế, một kỹ thuật tổng hợp (phát minh bởi Goldreich, Micali và Wigderson , GMW) [10] là để thiết kế ra một giao thức mật mã đầu tiên giả định tất cả mọi ngƣời sẽ phải làm theo hƣớng dẫn và sau đó “yêu cầu” sẽ bắt họ phải làm theo chỉ dẫn sử dụng hệ thống chứng minh không tiết lộ thông tin. 2.2.2 Đề án nhận dạng Một phần đơn giản hơn và ứng dụng trực tiếp là đề án nhận dạng. Giả sử rằng chúng ta muốn kiểm soát truy cập vào các bộ phận khoa học máy tính. Một cách để 21
  29. làm điều đó là cho ngƣời đƣợc ủy quyền (có thẩm quyền) một số bí mật là mã PIN, và có một ô trên cửa nơi gõ số PIN trên hộp đó. (Một cách thuận tiện hơn, nhƣng về cơ bản cũng giống nhƣ cách ngƣời đƣợc ủy quyền có thẻ mà truyền số PIN cho hộp). Một nhƣợc điểm của phƣơng pháp này là hộp vẫn còn ở bên ngoài suốt thời gian ấy, và nếu có ai đó có thể kiểm tra chiếc hộp, có lẽ họ sẽ có thể xem bộ nhớ của nó và trích xuất bí mật chìa khóa của tất cả mọi ngƣời. Nhƣ vậy, từ một quan điểm bảo mật, nó là tốt hơn nếu hộp không chứa thông tin bí mật nào cả, và thậm chí là nếu có ai đã cài đặt một hộp để giả mạo họ cũng sẽ không biết gì về những bí mật mã PIN. Chứng minh không tiết lộ thông tin giúp ta theo các cách sau : Có hộp chứa một thể hiện của vấn đề khó khăn. Ví dụ, hộp có thể chứa n hợp số mà không cần phân tích nhân của nó. Cung cấp cho những ngƣời có thẩm quyền giải pháp cho vấn đề này. Ví dụ, họ có thể nhận phân tích nhân của n để n = p.q Những ngƣời có thẩm quyền sẽ chứng minh cho họ biết hộp phân tích nhân không tiết lộ thông tin. Sau đây chúng tôi sẽ tập trung nghiên cứu một loại ứng dụng là “thiết kế giao thức” bằng việc đi sâu vào phân tích hai ví dụ nổi bật của loại ứng dụng này. 22
  30. 2.3 ỨNG DỤNG TRONG THĂM DÕ TỪ XA Chúng ta đã biết một số kỹ thuật thăm dò ý kiến từ xa (các kỹ thuật này có trong bỏ phiếu điện tử - Electronic Voting). Cử tri giữ bí mật lá phiếu khi truyền từ xa tới ban kiểm phiếu bằng cách mã hoá nội dung lá phiếu. Theo kỹ thuật “mã hoá đồng cấu”, ban kiểm phiếu có thể tính đƣợc kết quả thăm dò từ xa mà không cần phải giải mã nội dung lá phiếu. Vấn đề nảy sinh là cử tri phải chứng minh đƣợc với ban kiểm phiếu rằng lá phiếu của mình là hợp lệ nhƣng nội dung lá phiếu thì không đƣợc tiết lộ với họ. Để thực hiện điều này, hiện nay ngƣời ta dùng kỹ thuật “Chứng minh không tiết lộ thông tin” (Zero-knowledge proof). Chúng tôi trình bày ý tƣởng trên để thực hiện bỏ phiếu loại “Chọn 1 trong k”. Ở đây chúng ta coi “ngƣời đƣợc thăm dò” là cử tri để dễ xác định hoạt động. 2.3.1 Các khái niệm 1/ Vấn đề bỏ phiếu thăm dò từ xa (Electronic Voting) : Nghiên cứu về ''Bỏ phiếu thăm dò từ xa'' là một chủ đề quan trọng đóng góp cho sự tiến bộ của xã hội dân chủ. Nếu một hệ thống bỏ phiếu thăm dò an toàn và tin cậy, nó sẽ đƣợc sử dụng thƣờng xuyên để thu thập ý kiến của mọi ngƣời cho nhiều quyết định về chính trị và xã hội thông qua hệ thống tự động hóa. “Bỏ phiếu thăm dò từ xa'” cũng phải đạt đƣợc các tính chất nhƣ “bỏ phiếu truyền thống” [1]. Một qui trình bỏ phiếu gồm một số giai đoạn (công đoạn). Hiện nay có nhiều kỹ thuật mật mã để thực hiện hợp lý trong từng giai đoạn. Trong luận văn này tôi xin trao đổi về giai đoạn Cử tri (CT) chuyển lá phiếu thăm dò tới Ban kiểm phiếu (Ban KP) cho sơ đồ bỏ phiếu loại “Chọn 1 trong k”. Trong giai đoạn này ngƣời ta sử dụng kỹ thuật “Mã hóa đồng cấu - Chia sẻ bí mật” (Homomorphic Encryption – Secret Sharing) [1], kỹ thuật “Chứng minh không tiết lộ thông tin” (Zero-knowledge proof). 2/ Giai đoạn cử tri chuyển là phiếu đến ban kiểm phiếu : Theo suy nghĩ thông thƣờng, khi Cử tri (CT) chuyển lá phiếu tới Ban kiểm phiếu (Ban KP) thì họ chỉ cần mã hóa nội dung lá phiếu là đủ. Vì tiếp theo Ban KP chỉ cần giải mã nội dung lá phiếu là tính đƣợc kết quả (kiểm phiếu). 23
  31. Nhƣng trên thực tế có thể xảy ra các tình huống sau: - Ban KP hay một nhóm thành viên Ban KP không trung thực đã gian lận phiếu thăm dò, ví dụ sửa lại nội dung lá phiếu sau khi giải mã (trƣớc khi kiểm phiếu). Để khắc phục tình hình này, ngƣời ta dùng kỹ thuật “Mã hóa đồng cấu - Chia sẻ bí mật”. Với giải pháp này Ban KP không phải giải mã từng lá phiếu nhƣng vẫn tính đƣợc kết quả. - Để bảo đảm công khai kiểm phiếu, lá phiếu đã mã hóa khi tới Ban KP phải đƣợc niêm yết công khai. Nhƣ vậy nhìn trên bảng niêm yết này, CT sẽ nhận ra lá phiếu của mình và họ có thể “bán” phiếu thăm dò . Để khắc phục tình trạng này, ngƣời ta dùng một “Ngƣời xác minh trung thực” (TT - honest verifier) làm trung gian giữa CT và Ban KP. Cử tri gửi lá phiếu từ xa tới Ban KP thông qua ngƣời trung gian TT. Sau khi xác minh lá phiếu hợp lệ, anh ta làm “mù “ lá phiếu (mã hóa lá phiếu lần thứ 2), tiếp đó gửi nó về Ban KP. Trên bảng niêm yết công khai, CT không thể nhận ra lá phiếu của mình để có thể “bán” phiếu thăm dò”. Khi giải quyết 2 tình huống trên lại xuất hiện hai vấn đề khác: - Một là CT phải chứng minh cho TT biết lá phiếu của họ là hợp lệ, tức là nội dung lá phiếu chỉ ghi một trong số k lựa chọn (loại lựa chọn “chọn 1 trong k”), không cần phải chỉ rõ lá phiếu ghi rõ lựa chọn nào. Cách chứng minh nhƣ vậy gọi là “Chứng minh không tiết lộ thông tin”. Với cách chứng minh này, nội dung lá phiếu không bị tiết lộ, trong khi mọi ngƣời đủ bằng chứng tin đƣợc rằng lá phiếu này là hợp lệ. - Hai là TT phải chứng minh cho CT, Ban KP, biết rằng lá phiếu bị làm “mù“ vẫn hợp lệ (theo nghĩa trên) bằng cách chỉ ra rằng anh ta sở hữu giá trị  để là “mù” lá phiếu. TT chứng minh điều này cũng bằng phƣơng pháp “Chứng minh không tiết lộ thông tin”, tức là không cần phải tiết lộ chính giá trị . Sau đây là sơ đồ giai đoạn Cử tri (CT) chuyển lá phiếu tới Ban kiểm phiếu: Giao thức 1: CT mã hóa lá phiếu bằng hệ mã hóa Elgamal, CT gửi nó tới TT kèm theo “Chứng minh không tiết lộ thông tin” cho tính hợp lệ của lá phiếu đó. Giao thức 2: Sau khi xác minh lá phiếu hợp lệ, TT làm “mù“ lá phiếu và gửi nó về Ban KP kèm theo “Chứng minh không tiết lộ thông tin” cho tính hợp lệ của lá 24
  32. phiếu đã bị làm “mù“. Cụ thể chứng minh quyền sở hữu giá trị bí mật  dùng để làm “mù“ lá phiếu. Lá phiếu mã Lá phiếu đã hóa đã bị làm mù mã hóa (x, y) Cử tri Ngƣời xác minh trung Ban kiểm phiếu thực TT - Kiểm phiếu - Niêm yết công Xác minh tính khai các lá Lựa chọn quyết hợp lệ của lá phiếu định phù hợp phiếu đã mã hóa 2 lần Làm mù lá phiếu Mã hóa lá phiếu “Chứng minh không tiết Gửi tới TT lá phiếu đã lộ thông tin” tính hợp lệ mã hóa và “Chứng minh của lá phiếu mới (đã bị không tiết lộ thông tin” làm mù). cho tính hợp lệ của lá phiếu Hình 1 : Sơ đồ cử chi chuyển lá phiếu đến ban kiểm phiếu 2.3.2 Chứng minh tính hợp lệ của lá phiếu (x, y) (giao thức 1) Theo sơ đồ giai đoạn Cử tri (CT) chuyển lá phiếu tới Ban kiểm phiếu, phải thực hiện Giao thức 1. Tức là CT mã hóa lá phiếu bằng hệ mã hóa Elgamal, lá phiếu đã mã hoá đƣợc gửi tới ngƣời xác minh trung thực (TT) kèm theo “Chứng minh không tiết lộ thông tin” cho tính hợp lệ của lá phiếu đó. Trong cuộc thăm dò từ xa “Chọn 1 trong k”, nếu cử tri nào đó chọn Gi là lựa chọn thứ i trong danh sách, thì lá phiếu hợp lệ phải ghi với i là một trong các giá trị 1, 2, , k. Bằng mã hóa Elgamal, lựa chọn đƣợc mã hóa thành : (x, y) (g , h Gi ). Nhƣ vậy cử tri muốn chứng minh với ngƣời xác minh trung thực TT rằng lá phiếu (x,y) là hợp lệ thì anh ta phải chỉ ra một trong số k đẳng thức sau là đúng. (log g x log h (y /G1 ))   ((log g x log h (y /Gk )). (1) 25
  33. Để chứng minh (1) mà không bị lộ Gi , CT và TT thống nhất dùng giao thức “Chứng minh không tiết lộ thông tin” nhƣ sau: Bảng 3 : Giai đoạn 1 cử tri chứng minh lá phiếu hợp lệ Cử tri CT Ngƣời xác minh TT - Mã hóa lá phiếu [(x, y) (g , h Gi )] - Chọn ngẫu nhiên w Z p w w Tính ai g , bi h - Với j = 1, , i-1, i+1, , k chọn d j , rj Zp . (Chƣa chọn di , ri ) Tính a g rj xd j , b hrj (y / G )d j j j j - Đặt (A, B) (a ,b ), ,(a ,b ) 1 1 k k (x,y),( A,B) (Sử dụng ai, bi đã tính ở trên) - CT tính: (Trƣớc đó chƣa chọn di , ri ) - TT chọn ngẫu nhiên c Z p di c d j j i c - TT kiểm tra: ri w di ? c d1 d k (D, R) (d1 ,r1 ), ,(d k ,rk ) cho j 1, ,k ? rj d j a j g x (D,R) ?  b h rj (y /G ) d j j j Nếu đều đúng TT kết luận: Lá phiếu hợp lệ 26
  34. Ví dụ 1: Chứng minh tính hợp lệ của lá phiếu đã mã hóa (x, y) (g , h Gi ) . Giả sử cuộc thăm dò từ xa “chọn 1 trong 3”. Các lựa chọn là 1 hoặc 2 hoặc 3. Ký hiệu lựa chọn i là Gi . Để chứng minh tính hợp lệ của lá phiếu, cử tri phải chứng minh : (log g x log h (y /G1 ))   ((log g x log h (y /Gk )). (1) Để chứng minh (1), CT và TT thống nhất dùng giao thức “Chứng minh không tiết lộ thông tin” nhƣ sau: Chọn phần tử sinh g=3, α=5, khóa bí mật s =2, khóa công khai h=gs=32. Ký hiệu 3 lựa chọn G1=1, G2=2, G3=3. Giả sử cử tri CT chọn Gi=2. 27
  35. Cử tri CT Ngƣời xác minh TT - CT mã hóa lá phiếu [(x, y) (35, (32 )5.2] - CT chọn ngẫu nhiên w=2 2 2 2 Tính a2 3 ,b2 (3 ) - Với j = 1, 3 Chọn d1=8, r1=9 và tính: 9 5 8 a1 = 3 . (3 ) (32 )5.2 b (32 )9 ( )8 1 1 Chọn d3=10, r3=11 và tính: 11 5 10 a3 = 3 . (3 ) (32 )5.2 b (32 )11( )10 3 3 (32 )5.2 (A, B) = (39. (35)8, (32 )5 ( )8 ), (32, (37)2), 1 (32 )5.2 (311. (35)10, (32 )11( )10 ) 3 (x,y),( A,B) TT chọn ngẫu nhiên  c=13 c  - CT tính d2 = c -  d j j i = c - (d1+d3) = 13-(8+10) = -5 - CT tính r2 = w – α di = 2 – 5 d2 = 2 -5.(-5) = 2 + 25 = 27 - CT đặt (D,R)=(8, 9),(-5, 27),(10, 11) TT kiểm tra: thấy đều (D,R) đúng  c=d1+d2+d3=8+(-)+10=13 a g rj x d j j rj d j b j h (y / G j ) j=1,2,3. =>Kết luận: lá phiếu hợp lệ 28
  36. 2.3.3 Chứng minh quyền sở hữu giá trị bí mật  (giao thức 2) Theo sơ đồ giai đoạn Cử tri (CT) chuyển lá phiếu tới Ban kiểm phiếu (Ban KP), phải thực hiện Giao thức 2. Tức là sau khi xác minh lá phiếu của CT là hợp lệ, ngƣời xác minh trung thực (TT) làm “mù“ lá phiếu và gửi nó về Ban KP kèm theo “Chứng minh không tiết lộ thông tin” cho tính hợp lệ của lá phiếu đã bị làm “mù“. TT làm “mù” lá phiếu thông qua cặp (u, v) dựa trên giá trị bí mật . Nhƣ vậy để chứng minh lá phiếu đã bị làm “mù“ vẫn hợp lệ, TT phải chứng minh rằng anh ta sở hữu giá trị bí mật thõa mãn u g  , v h . Nhƣng mặt khác TT không muốn để lộ . Có một giao thức hiệu quả để anh ta làm việc này: giao thức  (đã trình bày ở mục trên). Trong sơ đồ dƣới đây, TT là ngƣời chứng minh (P), ngƣời kiểm tra (V) là CT, Ban KP Bảng 4 : Giai đoạn 2, TT chứng minh lá phiếu làm mù là hợp lệ Ngƣời chứng minh TT (P) Ngƣời kiểm tra (V) - P có [ (u,v) (g  , h  ) ] - P chọn w Zp w w (a,b) Tính (a,b) : (g ,h )  P gửi V giá trị ngẫu nhiên w thông qua (a, b) c - V chọn c Z p  V gửi lại P giá trị ngẫu nhiên c - P tính r : w c r - Kiểm tra:  ? g r au c P đáp lại V bằng r ? h r bv c Nếu đều đúng V thừa nhận P sở hữu giá trị 29
  37. Chú ý : Nếu không biết  , ngƣời chứng minh P không thể tạo ra: r : w c để kiểm tra. g r g w c g w .g c au c hr h w c h wh c bv c Ví dụ 2: Ngƣời chứng minh P chọn g=3, s=2, h=gs=32. Anh ta có  =5 sử dụng trong (u,v) (g  ,h ) =(35, (32)5), cặp số này dùng để làm “mù” lá phiếu đã mã hoá của cử tri. P muốn chứng minh với V rằng anh ta sở hữu  mà không muốn để lộ giá trị . P thực hiện giao thức  với ngƣời xác minh V nhƣ sau: Ngƣời chứng minh TT (P) Ngƣời kiểm tra (V) 5 2 5 - P có [(u,v)=(3 ,( 3 ) )] (a,b) - P chọn w Zp = 2. Tính (a, b) = (gw, hw) = (32, (32)2) c - V chọn c = 2 - P tính - V kiểm tra các đẳng thức đều đúng: r 12 2 5 2 c r = w +  c = 2 + 5 * 2 = r g =3 = 3 (3 ) = au 12 hr =(32 ) 12 = (32)2 ((32) 2)5 = bvc có V thừa nhận P sở hữu = 5. Nếu ngƣời nào đó giả mạo rằng đã biết để tạo (u,v)=(gβ, hβ) thì “khó” có thể ? ? tính đƣợc r=w+βc, tức là bƣớc kiểm thử gr auc, hr bvc “khó” có thể thực hiện đƣợc. Vì a, b, c, r, g, h, u, v đều công khai nên ai cũng có thể xác minh đƣợc r = w+βc. Nhờ giao thức trên mọi ngƣời tin rằng ngƣời xác minh TT đã dùng để làm “mù” lá phiếu. 30
  38. 2.3.4 Giai đoạn cử tri chuyển lá phiếu đến ban kiểm phiếu (phƣơng án 2) Trong mục 2.3.3 khóa luận đã trình bày giai đoạn Cử tri (CT) chuyển lá phiếu tới Ban kiểm phiếu (Ban KP). Nó đƣợc thực hiện bằng Giao thức 1 và Giao thức 2, ta,k gọi là phƣơng án 1. Có phƣơng án khác (tạm gọi là 2) cũng để thực hiện giai đoạn này bằng 2 giao thức. Giao thức 1 giống trong phƣơng án 1. Giao thức 2 có thay đổi nhƣ sau: Sau khi TT xác minh lá phiếu của CT là hợp lệ, sau khi CT xác minh TT sở hữu giá trị  thì chính CT làm “mù“ lá phiếu và gửi nó về Ban KP (thay vì TT làm “mù“ lá phiếu và gửi nó về Ban KP nhƣ theo giao thức 2 của phƣơng án 1). Trong phƣơng án này chúng tôi đề nghị: mỗi lần xử lý một lá phiếu, tại mỗi bƣớc thử điều kiện, nếu không thoả mãn, công việc xử lý dừng lại với lá phiếu này để chuyển ngay sang lá phiếu tiếp theo. Bảng 5 : Phương án 1 gồm 2 giai đoạn một và hai Cử tri (CT) Ngƣời xác minh TT - CT mã hoá lá phiếu [(x, y) (g , h Gi )] - CT chọn ngẫu nhiên w1 Z p w1 w1 Tính ai g bi h - Tính với j 1, ,i 1 ,i 1, ,k chọn d j , rj Z p , tính a g rj xd j , b hrj (y / G )d j j j j - Đặt (A, B) (a ,b ), ,(a ,b ) (x,y),( A,B) 1 1 k k  c1 TT chọn ngẫu nhiên  c1 Z p - CT tính di c1 d j j i r w d i 1 i (D, R) (d ,r ), ,(d ,r ) i i k k (D,R)  31
  39. - TT kiểm tra: ? c1 d1 d k cho j 1, ,k ? rj d j a j g x ? rj d j b j h (y /G j ) - Nếu điều kiện sai thì dừng giao thức và hủy bỏ lá phiếu. - Nếu đúng thì tiếp tục GT. - TT chọn  ngẫu nhiên bí mật và tính: [(u,v) (g  , h  ) ] (a,b)  - TT Chọn w2 Zp , tính: w w TT gửi CT giá trị w2 (a,b) : (g 2 ,h 2 ) thông qua (a, b) - CT chọn c2 c2 Z q  CT gửi lại TT giá trị c2 r  - TT tính r : w2 c2 TT đáp lại CT bằng r - CT kiểm tra: ? g r au c2 ? h r bv c2 - Nếu điều kiện sai thì thực hiện lại giao thức vì có thể CT đang giao dịch với ngƣời mạo danh TT. - Nếu điều kiện đúng thì CT mã hóa lại (làm “mù”) lá phiếu nhờ cặp (u, v) của TT: (x’,y’)=(xu, yv) 32
  40. 2.4 ỨNG DỤNG TRONG SỬ DỤNG TIỀN ĐIỆN TỬ VÀ LƢỢC ĐỒ BRAND Lƣợc đồ Brand đƣợc xây dựng dựa trên chữ ký số Schnorr và bài toán đại diện trong nhóm cấp nguyên tố. Gq là nhóm con cấp q của Zp*, trong đó p, q là số nguyên tố thoả mãn q|(p-1) Ngân hàng khởi tạo 5 thành phần: (g, h, g1, g2, d). (g, h) Gq (generator – tuple) : khoá công khai của ngân hàng đƣợc dùng trong sơ đồ ký ở giao thức rút tiền, x là khoá bí mật của ngân hàng. x x logg h ( h g ) (g1, g2): bộ phần tử sinh của Gq. Phần tử sinh giả d (khác g1 và g2), đảm bảo rằng định danh của ngƣời dùng sẽ không bị phát hiện trong giao thức thanh toán. 2.4.1 Khởi tạo tài khoản uu12 b1) Alice tạo ngẫu nhiên u1, u2 Zq, tính I g12 g , chuyển I đến Ngân hàng. b2) Ngân hàng lƣu cùng định danh của Alice và số tài khoản, nhƣng ngân hàng không biết u1 và u2. Trƣờng hợp Alice tiêu đồng tiền hai lần, ngân hàng có thể tìm ra (u1, u2) và tính đƣợc I, từ I tìm ra định danh kẻ gian lận. I u1, u2 Zq I Định danh Số tài khoản Bank Hình 2 : Quá trình khởi tạo tài khoản 33
  41. 2.4.2 Chứng minh đại diện tài khoản Khi Alice rút tiền, đầu tiên phải xƣng danh với ngân hàng, bằng cách chứng minh với ngân hàng là sẽ rút tiền trong tài khoản mà Alice sở hữu. Phƣơng pháp đƣợc dùng ở đây là “chứng minh không tiết lộ thông tin”. Alice phải chứng minh cho Ngân hàng rằng: Alice biết u1 và u2 (vì Alice là chủ sở hữu tài khoản), nhƣng không tiết lộ giá trị u1, u2 cho ngân hàng. Quá trình xác thực đƣợc tiến hành nhƣ sau: ww12 b1) Alice chọn ngẫu nhiên w12 ,w Zq và gửi y g12 g đến Ngân hàng. b2) Ngân hàng thử thách để kiểm tra có đúng Alice sở hữu tài khoản không, bằng cách chọn ngẫu nhiên CZrq và gửi đến Alice. b3) Alice tính r1 w 1 Crr u 1 mod q , r 2 w 2 C u 2 mod q , gửi đến Ngân hàng. b4) Ngân hàng chấp nhận xác thực là đúng khi và chỉ khi: Cr r12 r uu12 yI g12 g trong đó I g12 g Bởi vì, nếu Alice thực sự là chủ sở hữu tài khoản, thì phải biết u1, u2 (là 2 giá trị khởi tạo tài khoản lúc ban đầu) và nếu biết đƣợc chúng thì: Crw1 w 2 u 1 u 2 C r w 1 u 1 C r w 2 u 2 C r r 1 r 2 yI g1 g 2() g 1 g 2  g 1 g 2  g 1 g 2 Bảng 6 : Quá trình chứng minh đại diện Alice (người chứng minh) Ngân hàng (người kiểm tra) uu12 Biết u1, u2 là đại diện của I g12 g Chỉ biết I, g1, g2; không biết u1, u2 Tạo 2 số ngẫu nhiên Tính gửi đến ngân hàng Nhận y, chọn ngẫu nhiên Gửi thử thách Cr đến Alice Nhận Cr, tính: Nhận r1, r2. Kiểm tra: Và gửi chúng đến Ngân hàng Nếu thoả mãn, Ngân hàng chấp nhận Alice biết đại diện của I (có nghĩa là biết u1, u2 ) 34
  42. 2.4.3 Giao thức rút tiền. Nếu xác thực đƣợc chấp nhận, thì quá trình rút tiền đƣợc tiến hành nhƣ sau : b1) Ngân hàng trừ một lƣợng tiền tƣơng ứng từ tài khoản Alice. Ngân hàng và Allice cùng tính đƣợc m = Id (d là phần tử sinh và công khai). a. Ngân hàng gửi Alice: z = mx, a = gw, b = mw b. (w đƣợc chọn ngẫu nhiên từ Zq, x là khoá bí mật của ngân hàng). * b2) Alice chọn 3 số ngẫu nhiên s Zqq;, u v Z để làm “mù” m, z, a, b s su12 s u s s c. m'() m Id g11 g d d. zz' s ; a' auv g ; b' bsu m sv e. Tách ngẫu nhiên: f. u1 s ( x 1 x 2 )mod q , u 2 s ( y 1 y 2 )mod q g. với s z12 zmod q x1 y 1 z 1 x 2 y 2 z 2 h. Tính A g1 g 2 d; B m '/ A g 1 g 2 d b3) Alice dùng hàm băm H tính c’ = H (m’, z’, a’, b’, A). c' Làm “mù” c’ bằng cq mod , gửi c đến ngân hàng. u b4) Ngân hàng ký trên c đƣợc r = xc + w mod q, gửi r cho Alice, ghi có vào tài khoản của Alice. Alice chấp nhận nếu kiểm tra thấy gr = hca và mr = zcb và tính r’ = ru + v mod q. Lúc này, Alice có đồng tiền điện tử thật sự đƣợc đại diện bởi: A, B, Sign (A, B) với Sign (A, B) = (z’, a’, b’, r’) là chữ ký của Ngân hàng. Nhƣng làm thế nào chúng ta có thể biết đƣợc giá trị của từng đồng tiền. Có hai cách khác nhau để giải quyết vấn đề này: Cách 1: Ngân hàng sử dụng một khoá công khai cho mỗi loại tiền. Nghĩa là, nếu có k đồng tiền khác biệt thì ngân hàng phải công khai k khoá công khai sau: (g1, h1) (gk, hk). 35
  43. Cách 2: Chọn k phần tử sinh giả (dummy generator) khác nhau đƣợc công khai d1, ,dk . Mỗi phần tử sinh đƣợc dùng để biểu hiện giá trị của mỗi đồng tiền. Bảng 7 : Giao thức rút tiền Alice Ngân hàng uu12 I g12 g x : khoá bí mật x (g, h): khoá công khai (h = g ) w Zq z, a, b m = Id, z = mx, a = gw, b = mw uu12 m = Id = g12 g d * sZ q m'() ms Id s gu12 s g u s d s 11 zz' s Tách ngẫu nhiên u, v Z q uv a' a g b' bsu m sv c’ = H (m’, z’, a’, b’, A). c' c cq mod u r r = xc + w mod q Kiểm tra: gr = hca và mr = zcb Tính r’ = ru + v mod q Đồng tiền: (A, B, Sign (A, B)) với Sign (A, B) = (z’, a’, b’, r’) 36
  44. 2.4.4 Giao thức thanh toán Khi Alice muốn mua hàng hay sử dụng dịch vụ của Bob, trƣớc tiên Alice cần phải gửi tiền cho Bob, quá trình thanh toán đƣợc thực hiện theo những bƣớc sau: b1) Alice gửi tiền (A, B, Sign (A, B)) đến Bob. x1 y 1 z 1 x 2 y 2 z 2 A g1 g 2 d; B m '/ A g 1 g 2 d Sign (A, B) = (z’, a’, b’, r’) b2) Đầu tiên, Bob kiểm tra xem AB 1 hay không. Nếu AB = 1, có nghĩa: x1 y 1 z 1 x 2 y 2 z 2 (g1 g 2 d )( g 1 g 2 d ) 1 x1 x 2 y 1 y 2 z 1 z 2 u 1 s u 2 s s g1 g 2 d g 1 g 2 d 1 s 0 Vậy, ngân hàng không xác định đƣợc u1, u2 trong trƣờng hợp “double-spending”. Sau đó, Bob kiểm tra chữ ký của ngân hàng sign(A,B) có hợp lệ không. * Nếu đúng, Bob thử thách Alice bằng cách gửi cZ q , c không cần thiết là số ngẫu nhiên, nhƣng phải đảm bảo là duy nhất trong mỗi lần thanh toán. Bob tính c nhƣ sau: c = H0 (A, B, Ib, date/time), với I là định danh của Bob, date/time là nhãn thời gian của giao dịch, H0 là hàm băm. b3) Alice phản hồi với: r1 = x1 + cx2 mod q r2 = x2 + cy2 mod q r3 = x3 + cz2 mod q rr12r3 C b4) Bob kiểm tra, nếu g1 g 2 g 2 AB thì chấp nhận thanh toán vì: rr12r3 xcx 121212 ycy zcz x 111 yz cx 222 cy cz C ggg122 g 1 g 2 g 3 ( gggggg 123123 )( ) AB 37
  45. Bảng 8 : Giao thức thanh toán Alice Bob A, B, sign (A, B) AB 1? Kiểm tra sign (A, B) c r1 = x1 + cx2 mod q r2 = x2 + cy2 mod q r3 = x3 + cz2 mod q r1, r2, r3 rr12r3 C g1 g 2 g 2 AB ? Nếu đúng Bob chấp nhận thanh toán. 2.4.5 Giao thức gửi b1) Bob gửi thông tin thanh toán (A, B, Sign (A, B)), c, r1, r2 và r3 đến ngân hàng. b2) Ngân kiểm tra chữ ký có chính xác không và đồng tiền không đƣợc tiêu xài trƣớc đó. Bob thử thách Alice bằng giá trị c = H0 (A, B, Ib, date/time) Alice trả lời lại giá trị r1, r2, r3. Nếu tất cả đều thoả mãn, Ngân hàng gửi tiền vào tài khoản của Bob. 38
  46. Chương 3 : THỬ NGHIỆM CHƢƠNG TRÌNH VỚI ỨNG DỤNG TRONG THĂM DÕ TỪ XA 3.1 MÔ TẢ CHƢƠNG TRÌNH 3.1.1 Giới thiệu Chƣơng trình mô phỏng hai giao thức trên đƣợc thiết kế trên nền WEB cho các ứng dụng trên Internet đƣợc viết bằng ngôn ngữ PHP và có cài đặt chƣơng trình Xampp để hỗ trợ và Notepad++ cho việc lập trình. Do đƣợc ứng dụng trong thăm dò ý kiến từ xa nên việc chƣơng trình đƣợc chạy trên nền WEB là một lựa chọn đúng đắn. 1/Cấu hình của hệ thống : Phần cứng(cấu hình tối thiểu) : Bộ nhớ ổ cứng : 20gb Bộ nhớ ram : 128mb Tốc độ máy tối thiểu : 1GHz Phần mềm : Hệ điều hành : Linux, Window, Ngôn ngữ lập trình : PHP, HTML, CSS 2/ Các thành phần của chương trình : Chƣơng trình thực hiện trên nền Web nên các thành phần của nó gồm các trang web và các mẫu điền thông tin đầu vào của ngƣời dùng. 39
  47. 3.1.2 Mô tả các chức năng chính 1/ Giao thức 1 : CT chứng minh tính hợp lệ của lá phiếu sau khi đã đƣợc mã hóa và gửi đến TT : Bƣớc 1 : Với việc Cử tri điền các thông tin cần thiết để có thể mã hóa lá phiếu : Hình 3 : CT điền các thông tin cần thiết để mã hóa lá phiếu thăm dò 40
  48. Hình 4 : Các thông số trả về từ TT và các tính toán của CT Bƣớc 2 : Sau khi đã tính toán hết các tham số còn lại, cử tri sẽ gửi lại cho TT, TT kiểm tra, nếu các tham số không thỏa mãn thì sẽ loại lá phiếu, nếu đúng sẽ chấp nhận và tiếp tục mã hóa lá phiếu lần 2 và gửi cho ban KP: Hình 5 : Lá phiếu khi đã được TT kiểm tra lại 41
  49. 2/ Giao thức 2 TT chứng minh lá phiếu làm mù gửi tới ban KP cũng hoàn toàn hợp lệ : Bƣớc 1 : TT sẽ điền các tham số đầu vào và tính toán, sau đó gửi cho CT: Hình 6 : TT tính Beta và w2 Bƣớc 2 : Sau đó TT sẽ gửi luôn Beta và w2 cho CT, CT trả lại giá trị c2 và TT sẽ tính toán r. Hình 7 : TT tính r 42
  50. Bƣớc 3 : Cử tri kiểm tra lại kết quả nhận đƣợc, nếu đúng thì lá phiếu làm mù lần 2 hoàn toàn hợp lệ, nếu không đúng, CT sẽ không chấp nhận. Hình 8 : CT kiểm tra lại kết quả 43
  51. 3.2 THÀNH PHẦN CHÍNH CỦA CHƢƠNG TRÌNH 3.2.1 Cử tri chứng minh tính hợp lệ của lá phiếu //Lay Mang A function getArrayAj($d, $r, $gi, $x, $numOfCans, $w1) { global $g; $a = array(); for ($i=1; $i<$gi; $i++) { $a[$i] = luythua($g, $r[$i]) * luythua($x, $d[$i]); } $a[$gi] = getAi($w1); for ($i=$gi+1; $i<=$numOfCans; $i++) { $a[$i] = luythua($g, $r[$i]) * luythua($x, $d[$i]); } return $a; } //Lay mang B function getArrayBj($d, $r, $gi, $y, $numOfCans, $w1) { global $h; $b = array(); for ($i=1; $i<$gi; $i++) { $b[$i] = luythua($h, $r[$i]) * luythua(($y/$i), $d[$i]); } $b[$gi] = getBi($w1); for ($i=$gi+1; $i<=$numOfCans; $i++) { 44
  52. $b[$i] = luythua($h, $r[$i]) * luythua(($y/$i), $d[$i]); } return $b; } //Nguoi trung thuc kiem tra la phieu hop le function check($g, $h, $a, $b, $d, $r, $x, $y, $c1) { //global $g, $h, $a, $b, $d, $r, $x, $y, $c1; $sum = 0; for ($i=1; $i<=count($d); $i++) { $sum = $sum+$d[$i]; } if($sum != $c1) return false; for($i=1; $i<=count($a); $i++) { if($a[$i] != luythua($g, $r[$i])*luythua($x, $d[$i])) return false; if($b[$i] != luythua($h, $r[$i])*luythua(($y/$i), $d[$i])) return false; } return true; } 3.2.2 Ngƣời trung thực chứng minh có giữ tham số bí mật  //Lay gia tri Di voi i la vi tri nguoi duoc chon function getDi($d, $c1, $gi, $numOfCans) { $di = $c1; for ($i=1; $i<=$numOfCans; $i++) { $di = $di-$d[$i]; } return $di; 45
  53. } //Lay gia tri Ri voi i la vi tri nguoi duoc chon function getRi($w1, $alpha, $di) { return $w1-$alpha*$di; } //Them D[gi] vao mang D function addDgiToD($c1, $gi, $numOfCans) { global $d; $d[$gi] = getDi($d, $c1, $gi, $numOfCans); } //Them R[gi] vao mang R function addRgiToR($c1, $gi, $numOfCans, $w1, $alpha) { global $r, $d; $r[$gi] = getRi($w1, $alpha, getDi($d, $c1, $gi, $numOfCans)); } //Voter kiem tra lai ket qua chung minh nguoi trung thuc giu tham so bi mat  function voterCheck($r, $c2, $a, $b, $u, $v) { global $g, $h; if (luythua($g, $r) != luythua($u, $c2)*$a) return false; if (luythua($h, $r) != luythua($v, $c2)*$b) return false; return true; } 46
  54. KẾT LUẬN “Chứng minh không tiết lộ thông tin” không có nghĩa là “không để lộ thông tin” mà nghĩa là “để lộ thông tin ở mức ít nhất” về sự vật sự việc cần chứng minh. Với những “thông tin để lộ”, ngƣời xác minh không có nhiều hiểu biết (knowledge) về sự vật sự việc, họ chỉ thu đƣợc chút ít thông tin (coi nhƣ “zero knowledge”) về đặc điểm tính chất của nó. Kết quả chính của khóa luận gồm có : 1. Tìm hiểu và nghiên cứu qua tài liệu để hệ thống lại các vấn đề sau : Các khái niệm và thuật toán cơ bản Vấn đề “chứng minh không tiết lộ thông tin” “Chứng minh không tiết lộ thông tin” trong thăm dò từ xa “Chứng minh không tiết lộ thông tin” trong tiền điện tử 2. Thử nghiệm chƣơng trình trong việc ứng dụng “chứng minh không tiết lộ thông tin” trong thăm dò từ xa. 47
  55. TÀI LIỆU THAM KHẢO [1] Andrew Neff, “Conducting a Universally Verifiable Electronic Election Using Homomorphic Encryption ”, VoteHere.net, November 2000 [2] Berry Schoenmakers, “A brief Comparision of Cryptographic Schemes for Electronic Voting”, Tartu, Estonia, May 17, 2004 [3] Byoungcheon Lee, Kwangjo Kim, “Receipt-free Electronic Voting through Collaboration of Voter and honest Verifier” [4] C. E. Shannon “Communication Theory of Secrecy Systems”, Bell Systems Tech. Jr. Vol 28, pages 656-715, 1949 [5] Goldreich, Micali and Wigderson “Zero-Knowledge and Secure Computation”, July 1991 [6] Helger Lipmaa, “Zero knowledge and some applications”, Nordic Research Training course, Bergen, June 15, 2004 [7] Information Security Research Centre, Faculty of Information Technology, Queensland University of Technology, “Electronic Voting and Cryptography”, May 2002 [8] Ivan Damgard, Jens Groth and Gorm Salomonsen, “The Theory and Implementation of an Electronic Voting System”, July 31,2002 [9] Trịnh Nhật Tiến, Nguyễn Đình Nam, Trƣơng Thị Thu Hiền, “Một số kỹ thuật Bỏ phiếu từ xa”, Hội thảo Một số vấn đề chọn lọc của Công nghệ thông tin, Thái Nguyên, tháng 8 năm 2003 [10] Trịnh Nhật Tiến, Trƣơng Thị Thu Hiền, “Mã hóa đồng cấu và ứng dụng”, Hội nghị khoa học cơ bản và ứng dụng CNTT toàn quốc lần thứ 1, Đại học Quốc Gia Hà Nội, tháng 10 năm 2003