Giáo trình lý thuyết mật mã và an toàn thông tin phần 2 phan đình diệu

73 648 1
Giáo trình lý thuyết mật mã và an toàn thông tin  phần 2   phan đình diệu

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

CHƯƠNG IV Các hệ mật mã khoá công khai 4.1 Giới thiệu mở đầu 4.1.1 Sự đời mật mã khoá công khai Trong chơng I ta giới thiệu qua định nghĩa khái niệm hệ mật mã khoá đối xứng hệ mật mã khoá công khai Sự đời khái niệm hệ mật mã khoá công khai tiến có tính chất bớc ngoặt lịch sử mật mã nói chung, gắn liền với phát triển khoa học tính toán đại Ngời ta xem thời điểm khởi đầu bớc ngoặt xuất ý tởng W Diffie M.E Hellman đợc trình bày vào tháng sáu năm 1976 Hội nghị quốc gia hàng năm AFIPS (Hoa kỳ) Multiuser cryptographic techniques Trong đó, với ý tởng chung, hai tác giả đa thí dụ cụ thể để thực ý tởng đó, thí dụ cha có ý nghĩa thuyết phục tác giả, ý tởng hệ mật mã khoá công khai rõ ràng có sức hấp dẫn nhiều ngời Và sau đó, công việc tìm kiếm thể cụ thể có khả ứng dụng thực tế bắt đầu thu hút quan tâm nhiều chuyên gia Một năm sau, năm 1977, R.L Rivest, A Shamir L.M Adleman đề xuất hệ cụ thể mật mã khoá công khai mà độ an toàn hệ dựa vào toán khó phân tích số nguyên thành thừa số nguyên tố, hệ sau trở thành hệ tiếng mang tên hệ RSA, đợc sử dụng rộng rãi thực tiễn bảo mật an toàn thông tin Cũng vào thời gian đó, M.O Rabin đề xuất hệ mật mã khoá công khai dựa vào toán số học khó nói Liên tiếp sau đó, nhiều hệ mật mã khóa công khai đợc đề xuất, mà tiếng đợc quan tâm nhiều hệ: hệ McEliece đợc đa năm 1978 dựa độ NP-khó toán giải mã hệ mã cyclic tuyến tính, hệ MerkleHellman dựa tính NP- đầy đủ toán xếp ba lô(knapsack problem), hệ mật mã tiếng ElGamal dựa độ khó toán lôgarit rời rạc, hệ sau đợc mở rộng để phát triển nhiều 92 hệ tơng tự dựa độ khó toán tơng tự lôgarit rời rạc cấu trúc nhóm cyclic hữu hạn, nhóm điểm nguyên đờng cong eliptic, v.v Để tăng độ bảo mật, hệ mật mã ElGamal dùng với t cách đầu vào cho thuật toán lập mật mã mình, khoá công khai rõ, yếu tố ngẫu nhiên đợc chọn tuỳ ý, điều làm cho hệ mật mã trở thành hệ mật mã xác suất khoá công khai Một số hệ mật mã xác suất khoá công khai đợc phát triển sau Goldwasser-Micali BlumGoldwasser Tất hệ mật mã khoá công khai kể đợc trình bày chơng với số tính chất liên quan chúng 4.1.2 Một số toán Sau ta nhắc lại số toán số học đợc sử dụng đến xây dựng hệ mật mã khoá công khai nh nói Các toán phần lớn đợc trình bày chơng II, số đợc phát triển thêm cho ứng dụng trực tiếp xây dựng hệ mã cụ thể, ta liệt kê dới lần để thuận tiện cho dẫn sau Bài toán phân tích số nguyên (thành thừa số nguyên tố): Cho số nguyên dơng n , tìm tất ớc số nguyên tố nó, tìm dạng phân tích tắc n = p1 p2 pk , pi số nguyên tố cặp khác i 1 k Bài toán có liên hệ mật thiết với toán thử tính nguyên tố hay thử tính hợp số số nguyên, nhng với mà ta biết đến nay, dờng nh khó nhiều so với hai toán thử tính nguyên tố tính hợp số Trong lý thuyết mật mã, toán thờng đợc sử dụng với liệu n số nguyên Blum, tức số nguyên dơng có dạng tích hai số nguyên tố lớn Bài toán RSA (Rivest-Shamir-Adleman) : Cho số nguyên dơng n tích hai số nguyên tố lẻ khác nhau, số nguyên dơng e cho gcd(e, (n)) =1, số nguyên c ; tìm số nguyên m cho me c (mod n) Điều kiện gcd(e, (n)) =1 bảo đảm cho việc với số nguyên c {0,1, ,n -1} có số m {0,1, ,n -1} cho me c (mod n) Dễ thấy biết hai thừa số nguyên tố n, tức biết n =p.q biết (n) = (p -1)(q -1), từ đó, gcd(e, (n)) =1 93 tìm đợc d =e -1mod (n), tìm đợc m =c d modn Nh vậy, toán RSA qui dẫn thời gian đa thức toán phân tích số nguyên Tuy cha có chứng minh cho việc qui dẫn ngợc lại nhng nhiều ngời tin hai toán tơng đơng với độ phức tạp tính toán Bài toán thặng d bậc hai : Cho số nguyên lẻ n hợp số, số nguyên a Jn , a tập tất số a có ký hiệu Jacobi =1 Hãy định xem a có n thặng d bậc hai theo modn hay không? Trong lý thuyết mật mã, toán thờng đợc xét với trờng hợp n số nguyên Blum, tức n tích hai số nguyên tố p q , n =p.q Ta ý trờng hợp này, a Jn , a a thặng d bậc hai theo modn =1, điều kiện p thử đợc dễ dàng tơng đơng với điều kiện a (p (modp) Nh vậy, trờng hợp này, toán thặng d bậc hai qui dẫn thời gian đa thức toán phân tích số nguyên Mặt khác, cách phân tích n thành thừa số nguyên tố nay, cách giải đợc toán thặng d bậc hai thời gian đa thức Điều củng cố thêm niềm tin toán thặng d bậc hai toán phân tích số nguyên có độ khó tơng đơng 1)/2 Bài toán tìm bậc hai modn : Cho số nguyên lẻ n hợp số Blum, số a Qn , tức a thặng d bậc hai theo modn Hãy tìm bậc hai a theo modn, tức tìm x cho x a (modn) Nếu biết phân tích n thành thừa số nguyên tố, n =p.q , cách giải phơng trình x a theo modp modq, sau kết hợp nghiệm chúng lại theo định lý số d Trung quốc ta đợc nghiệm theo modn , tức bậc hai a theo modn cần tìm Vì phơng trình x a theo modp modq có hai nghiệm (tơng ứng theo modp modq ), nên kết hợp lại ta đợc bốn nghiệm, tức bốn bậc hai a theo modn Ngời ta tìm đợc số thuật toán tơng đối đơn giản (trong thời gian đa thức) giải phơng trình x a (modp) với p số nguyên tố 94 Nh vậy, toán tìm bậc hai modn qui dẫn thời gian đa thức toán phân tích số nguyên Ngợc lại, có thuật toán  giải toán tìm bậc hai modn xây dựng thuật toán giải toán phân tích số nguyên nh sau: Chọn ngẫu nhiên số x với gcd(x,n) =1, tính a =x2modn Dùng thuật toán  cho a để tìm bậc hai modn a Gọi bậc hai tìm đợc y Nếu y x (modn), phép thử coi nh thất bại, ta phải chọn tiếp số x khác y x (modn), gcd(x-y, n) chắn ớc số không tầm thờng n, cụ thể p q Vì n có bậc hai modn nên xác suất thành công lần thử 1/2, số trung bình (kỳ vọng toán học) phép thử để thu đợc thừa số p hayq n 2, từ ta thu đợc thuật toán giải toán phân tích số nguyên (Blum) với thời gian trung bình đa thức Tóm lại, theo nghĩa không chặt chẽ lắm, ta xem hai toán phân tích số nguyên tìm bậc hai modn khó tơng đơng Bài toán lôgarit rời rạc : Cho số nguyên tố p, phần tử nguyên thuỷ theo modp (hay phần tử nguyên thuỷ Z p ), phần tử Z p Tìm số nguyên x (0 x p - 2) cho x (modp) Trong mục 2.4.3 ta giới thiệu qua toán này, biết trờng hợp chung, cha có thuật toán giải toán thời gian đa thức Bài toán đợc suy rộng cho nhóm cyclic hữu hạn nh sau: Bài toán lôgarit rời rạc suy rộng : Cho nhóm cyclic hữu hạn G cấp n, phần tử sinh (nguyên thuỷ) G, phần tử G Tìm số nguyên x (0 x n - 1) cho x = Các nhóm đợc quan tâm nhiều lý thuyết mật mã là: nhóm nhân trờng hữu hạn GF (p) - đẳng cấu với nhóm Z p trờng Zp ,nhóm nhân F2m trờng hữu hạn GF (2m), nhóm nhân Z n = {a :0 a n 1, gcd(a, n) = 1} trờng Zn với n hợp số, nhóm gồm điểm đờng cong elliptic xác định trờng hữu hạn, v.v Bài toán Diffie-Hellman : Cho số nguyên tố p, phần tử nguyên thuỷ theo modp (tức phần tử sinh Z p ), phần tử a mod p b mod p 95 Hãy tìm giá trị ab mod p Có thể chứng minh đợc toán Diffie-Hellman qui dẫn đợc toán lôgarit rời rạc thời gian đa thức Thực vậy, giả sử có thuật toán  giải toán lôgarit rời rạc Khi đó, cho liệu vào toán Diffie-Hellman gồm p, , a mod p b mod p ; trớc hết dùng thuật toán  cho (p, , a mod p ) ta tìm đợc a , sau tính đợc ab mod p = ( b ) a mod p Ngời ta chứng minh đợc hai toán lôgarit rời rạc DiffieHellman tơng đơng mặt tính toán số trờng hợp, ví dụ p -1 B-mịn với B = O ((lnp)c ),c số Tơng tự nh với toán lôgarit rời rạc, ta định nghĩa toán Diffie-Hellman suy rộng cho nhóm cyclic hữu hạn khác Bài toán tổng tập (hay toán KNAPSACK) : Cho tập số nguyên dơng {a1 , a2 , , an } số nguyên dơng s Hãy xác định xem có hay không tập aj mà tổng chúng s Một cách tơng đơng, xác định n xem có hay không xi {0,1} (1 i n) cho i =1 xi = s Bài toán toán NP- đầy đủ, tức thuộc lớp toán khó mà cha tìm đợc thuật toán giải chúng thời gian đa thức ! Bài toán giải mã mã tuyến tính : Mã tuyến tính lớp mã truyền tin có tính chất tự sửa sai đợc sử dụng kỹ thuật truyền tin số hoá Không vào chi tiết lớp mã này, ta phát biểu trực tiếp toán giải mã mã tuyến tính nh sau: Cho ma trận cấp n xm A=(aij) gồm thành phần 1, vectơ y =(y1,y2, ,ym) giá trị 1, số nguyên dơng K Hỏi: có hay không vectơ x =(x1,x2, ,xn) gồm số có không nhiều K số cho với j (1 j m): n x a i =1 i ij y j (mod 2) ? Chú ý đây, x vectơ thông tin, y vectơ mã, phép giải mã tìm lại x nhận đợc y, toán tiếc thay lại toán khó; Berlekamp, McEliece Tilborg năm 1978 chứng minh thuộc lớp toán NP- đầy đủ ! 96 4.2 Hệ mật mã khoá công khai RSA 4.2.1 Mô tả hệ mật mã RSA Sơ đồ chung hệ mật mã khoá công khai đợc cho S = (P , C , K , E , D ) (1) P tập ký tự rõ, C tập ký tự mã, K tập khoá K , khoá K gồm có hai phần K =(K,K''), K' khoá công khai dành cho việc lập mật mã, K'' khoá bí mật dành cho việc giải mã Với ký tự rõ xP , thuật toán lập mã E cho ta ký tự mã tơng ứng y =E (K', x) C , với ký tự mã y thuật toán giải mã D cho ta lại ký tự rõ x : D (K'', y) = D (K'', E (K', x)) =x Để xây dựng hệ mật mã khoá công khai RSA, ta chọn trớc số nguyên n =p.q tích hai số nguyên tố lớn, chọn số e cho gcd(e, (n)) =1, tính số d cho e.d 1(mod (n)) Mỗi cặp K =(K,K''), với K' =(n,e) K'' = d cặp khoá hệ mật mã RSA cụ thể cho ngời tham gia Nh vậy, sơ đồ chung hệ mật mã RSA đợc định nghĩa danh sách (1), đó: P = C = Zn , n số nguyên Blum, tức tích hai số nguyên tố; K = {K =(K,K''): K' =(n,e) K'' = d, gcd(e, (n)) =1, e.d 1(mod (n))}; E D đợc xác định bởi: E (K', x) = xe modn, với x P , D (K'', y) = yd modn, với y C Để chứng tỏ định nghĩa hợp thức, ta phải chứng minh với cặp khoá K =(K' ,K'' ), x P , ta có D (K'', E (K', x)) = x Thực vậy, e.d 1(mod (n)) ta viết e.d = t (n) +1 Nếu x nguyên tố với n , dùng định lý Euler (xem 2.1.3) ta có D (K'', E (K', x)) = xed xt ( n )+1 xt ( n ) x (mod n) = x Nếu x không nguyên tố với n , n =p.q , x chia hết cho p nguyên tố với q, x chia hết cho q nguyên tố với p, (n) =(p -1).(q -1),trong hai trờng hợp ta có xt ( n )+1 x (mod p), xt ( n )+1 x (mod q); 97 từ suy xt ( n ) +1 x (mod n), tức D (K'', E (K', x)) =x Thí dụ: Giả sử chọn n =p.q = 2357.2551 = 6012707, ta có (n) = (p -1).(q -1)=2356.2550 = 6007800 Chọn e = 3674911, tính đợc d = 422191 cho e.d 1(mod (n)) Một ngời dùng A chọn khoá công khai K' =(n =6012707, e = 3674911) giữ khoá bí mật K'' =d =422191 Một đối tác B muốn gửi cho A thông báo x =5234673, dùng khoá công khai để tạo mật mã y =xe = 52346733674911mod6012707 = 3650502 A nhận đợc y, giải mã đợc rõ x =3650502422191mod 6012707 =5234673 4.2.2 Thực hệ mật mã RSA Để thực hệ mật mã RSA cho mạng truyền tin bảo mật, việc xây dựng chơng trình tính toán hàm E (với tham biến đầu vào n ,e x) hàm D (với tham biến đầu vào n ,d y), ta phải chọn cho ngời tham gia (n,e,d) để tạo khoá công khai K' khoá bí mật K'' Hệ mã ngời tham gia có khả bảo mật n =p.q số nguyên lớn (và p,q phải số nguyên tố lớn); lớn có nghĩa p,q phải có biểu diễn thập phân cỡ 100 chữ số, n có cỡ 200 chữ số thập phân, hay n 10200! Tính toán số e,d , hay thực hàm E , D , chủ yếu thực phép tính số học số nguyên lớn; vấn đề chục năm qua, khoa lập trình máy tính đề xuất nhiều chơng trình máy tính làm việc có hiệu quả, ta tham khảo để sử dụng thực thi hệ mật mã RSA nh nhiều hệ mật mã khác 4.2.3 Tính bảo mật mật mã RSA Bài toán thám mã (khi biết mã) mật mã RSA là: biết khoá công khai K' =(n,e), biết mã y =x e modn, tìm x Bài toán toán RSA đợc trình bày mục 4.1.2 Trong mục ta chứng tỏ biết hai thừa số p,q n dễ tìm đợc x từ y, nói chung có chứng để coi toán RSA (hay toán thám mã RSA) có độ khó tơng đơng với toán phân tích số nguyên (Blum) thành thừa số nguyên tố Do đó, giữ tuyệt mật khoá bí mật d , hay giữ tuyệt mật thừa số p,q , có ý nghĩa định đến việc bảo vệ tính an toàn hệ mật mã RSA Một mạng truyền tin bảo mật sử dụng sơ đồ hệ mật mã RSA đợc xem an toàn, tuân thủ điều kiện bản: 98 ngời tham gia phải độc lập lựa chọn tham số n, e,d riêng mình, chọn n có nghĩa chọn thừa số p,q n (n =p.q), có p,q nên tính đợc (n) = (p -1).(q -1), từ tìm đợc e,d tơng đối dễ dàng; nhng mà sau chọn ngời tham gia phải giữ tuyệt đối bí mật giá trị p,q,d , công bố khoá công khai (n,e) mà Tuy nhiên, điều kiện chung, thực tế nhiều sơ hở mà ngời thám mã lợi dụng để công vào tính bảo mật hệ mã RSA khó mà lờng trớc hết đợc; sau số trờng hợp đơn giản biết mà ta cần ý: 1.Dùng môđuyn n chung Giả sử có hai ngời tham gia A B sử dụng môđuyn chung n khoá công khai mình, chẳng hạn A chọn khoá công khai (n,e) giữ khoá bí mật d, B chọn khoá công khai (n,a) giữ khoá bí mật b Một ngời tham gia thứ ba C gửi văn cần bảo mật x đến A B dùng khoá công khai nói để gửi đến A mật mã y =x emodn gửi đến B mật mã z = x a mod n Ta chứng tỏ ngời thám mã O dựa vào thông tin n,e,a,y,z đờng công khai mà phát rõ x nh sau: a Tính c = e -1moda, b Sau tính h = (ce -1)/a , c Và ta đợc x = yc (z h)-1 modn Thực vậy, theo định nghĩa trên, ce -1 chia hết cho a, ta có: yc (z h)-1modn = x ec ( x a ( ce 1) / a ) mod n = x ce ( x ce1 ) mod n = x Nh vậy, trờng hợp việc truyền tin bảo mật không an toàn Vì vậy, ta cần nhớ dùng hệ RSA để tổ chức mạng truyền tin bảo mật, cần tránh dùng môđuyn n chung cho ngời tham gia khác nhau! Dùng số mũ lập mã e bé Để cho việc tính toán hàm lập mã đợc hiệu quả, ta dễ có xu hớng chọn số mũ e hàm lập mã số nguyên bé, chẳng hạn e =3 Tuy nhiên, mạng truyền tin bảo mật dùng hệ mật mã RSA, có nhiều ngời chọn số mũ lập mã e bé giống có nguy bị công việc thám mã nh sau : Giả sử có ba ngời tham gia chọn ba khoá công khai (n1, e), (n2, e), (n3, e) với số mũ e =3 Một ngời tham gia A muốn gửi thông báo x cho ba ngời đó, để bảo mật, gửi mã ci = x3modni cho ngời thứ i Ba môđuyn ni khác nhau, có phần cặp nguyên tố với Một ngời thám mã dùng định lý số d Trung quốc để tìm số m (0 m n1n2n3) thoả mãn 99 m c1 mod n1 m c2 mod n2 m c mod n 3 Vì x ni , nên x n1n2n3 , có m =x Vậy ta đa đợc toán tìm bậc ba theo nghĩa đồng d modni toán tìm bậc ba theo nghĩa số học thông thờng: tìm bậc ba m ta đợc x, tức đợc rõ! Với lý khác, ngời ta có chứng để chứng tỏ hệ RSA không bảo đảm an toàn ta dùng khoá có số mũ giải mã d số nguyên bé, thuật toán giải mã có làm việc hiệu Vì thế, sử dụng hệ mật mã RSA, để bảo đảm an toàn ta nên chọn số mũ e d số nguyên lớn, có kích cỡ lớn gần nh thân số n Lợi dụng tính nhân hàm lập mã Ta ý hàm lập mã f (x) = x emodn có tính nhân (multiplicative property), nghĩa f (x.y) = f (x).f (y) Dựa vào tính chất đó, ta thấy c mật mã rõ x, c = c.u e mod n mật mã rõ xu Do đó, lấy đợc mật mã c , để phát rõ x ngời thám mã chọn ngẫu nhiên số u tạo mã c ,và ngời thám mã có khả thám mã theo kiểu ô có mã đợc chọn ằ (xem 1.5.1), tức có khả với c đợc chọn tìm rõ tơng ứng x =xu ,thì rõ gốc cần phát x = x u mod n Tất nhiên, khả ngời thám mã có lực giải toán thám mã theo kiểu có mã đợc chọn hiếm, nhng trờng hợp mà vấn đề bảo mật dễ bị công, ta không tính đến để tìm cách tránh! Tấn công cách lặp phép mã Ta ý hàm lập mã f (x) = x emodn phép hoán vị tập Zn ={0,1, ,n -1}, với c Zn ta thực lặp phép lập mã để đợc c0 = c, c1 = c e mod n, c2 = c e mod n, , ci = c e mod n, i tìm đợc số k cho ck = c e mod n = c Nếu c mã rõ x đó, c =x emodn, ngời thám mã xuất phát từ c thực lặp phép lập mã nh tìm đợc số k bé cho ck =c Và ta có số hạng trớc ck -1=x, rõ cần phát Thuật toán hình thức đơn giản, nhng hiệu thực không đáng hy vọng lắm, số phép lặp cần thực nói chung lớn, cỡ số phép hoán vị Zn , tức n !, với số n có khoảng 200 chữ số thập phân Trên thực tế, theo thuật toán nói ta dễ dàng có thuật toán phân tích n thành thừa số nguyên tố, mà thuật k 100 toán nh làm việc có hiệu thiết thực, nh trình bày phần trên, cha có! Vì vậy, nguy bị thám mã thuật toán đơn giản nói tính an toàn hệ mật mã RSA không đáng ngại Về khả che giấu mật mã Mật mã, giữ đợc bí mật, khả che giấu thông tin nó, tức biết mã y khó lòng tìm đợc thông tin để phát rõ x Một cách thô thiển, ta nói rõ x không che giấu đợc qua phép lập mật mã RSA eK (x) =x e modn, eK (x) =x Nói cách khác, x không che giấu đợc mã x x Tiếc với hệ mật mã RSA có rõ không che giấu đợc, rõ x = -1, 0, modn (vì số mũ e luôn số lẻ) Ngời ta chứng minh đợc n =p.q, số rõ x Zn không che giấu đợc (1+gcd(e -1, p -1)).(1+gcd(e -1, q -1)) Vì e -1, p -1, q -1 số chẵn, nên số 9, nên hệ RSA có rõ không che giấu đợc Tuy nhiên, thờng n, p q, lớn, nên tỷ lệ rõ không che giấu đợc nói chung bé không đáng kể, khả gặp rõ không che giấu đợc không tạo nên nguy đáng kể việc dùng hệ mật mã RSA 4.3 Hệ mật mã khoá công khai Rabin 4.3.1 Mô tả hệ mật mã Rabin Sơ đồ hệ mật mã khoá công khai Rabin đợc cho S = (P , C , K , E , D ), đó: P =C = Zn , n số nguyên Blum, n =p.q, với p q hai số nguyên tố có tính chất p 3(mod4), q 3(mod4), K = {K = (K', K'') : K' =(n,B), K'' =(p,q), 0B n 1}, thuật toán E D đợc xác định E (K' ,x) = x (x +B) modn , D (K'',y) = B2 B + y mod n (ký hiệu bậc hai đợc giải thích sau) 101 Nh vậy, G đẳng cấu với G (hay xác hơn, A biết G đẳng cấu với G ) qui định đợc tôn trọng, giao thức thành công, xác suất việc V chấp nhận chứng minh Đó tính đầy đủ giao thức Mặt khác, G1 G không đẳng cấu với nhau, cách để P lừa V chấp nhận theo giao thức vòng hỏiđáp, P đoán trớc đợc câu hỏi (số i) mà V đa bớc 2, bớc 1, P chọn ngẫu nhiên hoán vị gửi cho V graph H ảnh Gi qua , bớc để trả lời câu hỏi (là số i ) V, P đáp lại phép hoán vị = Rõ ràng V chấp nhận câu trả lời đúng, vòng hỏi-đáp thành công Nh vậy, P lừa đợc V vòng, xác suất thành công xác suất P đoán trớc câu hỏi mà V đa ra, tức không lớn 1/2 Vậy G1 G không đẳng cấu với khả V bị lừa mà tin G1 G đẳng cấu có xác suất không qúa 2-m = 2-logn = 1/n , giá trị không đáng kể bỏ qua n lớn Điều nói P G1 G đẳng cấu với P lợi dụng giao thức mà lừa V P biết G1 G đẳng cấu Đó tính đắn giao thức Bây ta nói đến tính không lộ tri thức giao thức nói Ta thấy thực vòng hỏi-đáp giao thức, tất mà P đa đến cho V H đẳng cấu vớiG1 G 2, hoán vị thực đẳng cấu từ G1 tới H từ G tới H (nhng hai !) Từ thông tin không đủ để V thiết lập đợc phép đẳng cấu G1 G (ta ý hoán vị mà P chuyển cho V = = , từ không dễ tìm đợc ) Một cách trực giác, điều chứng tỏ giao thức không lộ tri thức Để có định nghĩa toán học cho khái niệm không lộ tri thức, ta xét kỹ lập luận Ta xem qua chứng minh tơng tác nh P Vđể lại thông tin Ngoài thông tin hai graph G1 G 2, vòng hỏi-đáp, P V trao đổi thông tin graph H, câu hỏi i , trả lời Nh vậy, ta định nghĩa ghi T chứng minh tơng tác T = ((G1 ,G 2); (H 1,i1,1) ; ; (Hm,im ,m)) Thông tin chứng minh tơng tác đợc chứa đựng đầy đủ ghi T Bây ta ý ghi đợc tạo cách giả mạo Thực vậy, ta chọn ngẫu nhiên số i {1, 2}, hoán vị , sau tính H ảnh đẳng cấu 149 Gi qua Thực m lần nh vậy, ta đợc m ba (H,i,), với (G1 ,G 2) ta tạo đợc ghi giả mạo, ghi trung thực theo việc thực thực chứng minh theo giao thức tơng tác, nhng cách để phân biệt giao thức hợp thức với giao thức gồm ghi giả mạo Thuật toán tạo cac ghi giả mạo đợc gọi mô Bây ta đa định nghĩa cho khái niệm không lộ tri thức nh sau: Giả sử có hệ chứng minh tơng tác toán định , mô S 1, x liệu toán có trả lời câu hỏi Ký hiệu T(x) tập tất ghi hợp thức có, F(x) tập hợp tất ghi giả mạo sinh S Giả thiết T(x) =F(x) Với T T(x) ký hiệu pT(T ) xác suất việc T ghi sinh từ chứng minh tơng tác, pF (T ) xác suất việc T ghi giả mạo sinh mô S Nếu pT(T ) = pF (T ) với T T(x) , tức phân bố xác suất T(x) F(x) trùng nhau, ta nói hệ chứng minh tơng tác ta không lộ tri thức hoàn hảo (perfect zero-knowledge) V Đối với toán đẳng cấu hai graph với sơ đồ chứng minh tơng tác kể trên, ngời ta chứng minh đợc hai phân bố xác suất T(x) F(x) trùng nhau, đó, với định nghĩa khái niệm không lộ tri thức hoàn hảo, ta kết luận : Đối với toán đẳng cấu hai graph, có sơ đồ tơng tác chứng minh không lộ tri thc hoàn hảo Bây ta giới thiệu thêm dới sơ đồ tơng tác chứng minh không lộ tri thức toán thặng d bậc hai, toán NP-đầy đủ Cho số nguyên n tích hai số nguyên tố lớn p q đợc giữ bí mật Giả thiết P biết x thặng d bậc hai theo modn, u bậc hai (tức u x (modn)).Sơ đồ chứng minh tơng tác gồm m vòng, vòng gồm bớc sau đây: P chọn ngẫu nhiên số v Z n , tính y =v 2modn , gửi y cho V V chọn ngẫu nhiên số i {0, 1} gửi cho P Thông thờng ngời ta giả thiết ngời kiểm thử V, nh mô V, thuật toán có khả tính toán thời gian đa thức 150 P tính z = u iv modn, gửi z cho V V thử điều kiện z xi y (modn) Nếu qua m vòng, V thử điều kiện V chấp nhận chứng minh P x thặng d bậc hai theo modn Giao thức chứng minh tơng tác có tính chất đầy đủ, đắn, không lộ tri thức, nhng cha phải không lộ tri thức hoàn hảo Việc nghiên cứu sơ đồ tơng tác chứng minh không lộ tri thức chủ đề đợc nhiều ngời quan tâm vài thập niên vừa qua, thu đợc nhiều kết lý thú, lý thú có lẽ kết liên quan đến toán NP-đầy đủ Ngời ta chứng tỏ chứng minh không lộ tri thức hoàn hảo toán NP-đầy đủ; nhiên, không đòi hỏi chặt chẽ điều kiện không lộ tri thức hoàn hảo, mà đòi hỏi điều kiện nhẹ chút không lộ tri thức tính toán (computational zero-knowledge), ngời ta chứng minh đợc nhiều toán NP-đầy đủ nh toán thặng d bậc hai theo modn hay toán tô ba mầu graph xây dựng tơng ứng sơ đồ tơng tác chứng minh không lộ tri thức tính toán Rồi từ đó, toán lớp NP qui dẫn thời gian đa thức toán NP-đầy đủ, chẳng hạn toán tô ba màu graph, nên chứng minh đợc toán lớp NPđều có sơ đồ tơng tác chứng minh không lộ tri thức (tính toán) Khái niệm không lộ tri thức tính toán khác khái niệm không lộ tri thức hoàn hảo điểm định nghĩa không lộ tri thức hoàn hảo ta đòi hỏi hai phân bố xác suất T(x) F(x) trùng nhau, khái niệm không lộ tri thức tính toán, ta đòi hỏi hai phân bố xác suất không phân biệt đựơc theo nghĩa tơng tự nh không -phân biệt đợc mà ta xét đến mục 4.6.1, chơng IV 151 CHƯƠNG VII Vấn đề phân phối khoá thoả thuận khoá 7.1 Quản trị khoá mạng truyền tin Trong chơng trớc, ta làm quen với phơng pháp lập mật mã toán quan trọng khác liên quan đến việc truyền tin bảo mật mạng truyền tin công cộng nói chung Ta thấy hệ mật mã khoá công khai có nhiều u việt hệ mật mã khoá đối xứng việc làm tảng cho giải pháp an toàn thông tin, đặc biệt hệ mật mã khoá đối xứng việc thực đòi hỏi kênh bí mật để chuyển khoá trao đổi khoá đối tác, nguyên tắc, hệ mật mã khoá công khai, không cần có kênh bí mật nh vậy, khoá công khai đợc truyền trao đổi cho cách công khai qua kênh truyền tin công cộng Tuy nhiên, thực tế, để bảo đảm cho hoạt động thông tin đợc thật an toàn, thông tin khoá công khai hệ mật mã, thuật toán kiểm thử chữ ký, giao thức xác nhận thông báo hay xác nhận danh tính, v.v phát công khai cách tràn lan mạng công cộng, mà công khai nhng ngời ta mong muốn cần biết nên biết mà Do đó, dùng hệ có khoá công khai, ngời ta muốn có giao thức thực việc trao đổi khoá đối tác thực có nhu cầu giao lu thông tin với nhau, kể trao đổi khoá công khai Việc trao đổi khoá chủ thể cộng đồng đợc thiết lập cách tự hai ngời có nhu cầu trao đổi thông tin, đợc thiết lập cách tơng đối lâu dài thời hạn cộng đồng với điều phối quan đợc uỷ thác (mà ta ký hiệu TA-trusted authority) Việc trao đổi khoá trờng hợp thứ ta gọi đơn giản thoả thuận khoá, trờng hợp thứ hai ta gọi phân phối khoá , TA nơi thực việc phân phối, tức nơi quản trị khoá Việc thoả thuận khoá nói chung không cần có tham gia TA xẩy 152 hệ bảo mật mà ta sử dụng hệ có khoá công khai, việc phân phối khoá xẩy trờng hợp sử dụng hệ khoá đối xứng nh hệ có khoá công khai Việc phân phối khoá với vai trò quản trị khoá TA việc bình thờng, tồn từ lâu trớc có hệ mật mã khoá công khai Ta bắt đầu với việc giới thiệu vài hệ phân phối khoá nh vậy, tiếp sau giới thiệu số hệ phân phối trao đổi khoá dùng sơ đồ an toàn bảo mật có khoá công khai Một số hệ phân phối khoá 2.1 Sơ đồ phân phối khoá Blom Giả sử ta có mạng gồm có n ngời dùng, ngời dùng có nhu cầu trao đổi thông tin bí mật với ngời mạng Giả sử sơ đồ mật mã đợc sử dụng sơ đồ mật n(n 1) mã khoá đối xứng (chẳng hạn, DES) Toàn mạng cần có khoá khác cho chừng cặp ngời dùng khác mạng Một quan đợc uỷ thác TA quản lý chừng khoá phải chuyển cho ngời dùng n -1 khoá chung với n -1 ngời lại mạng, nh TA phải truyền kênh bí mật tất n (n -1) lợt khoá đến cho tất n ngời dùng Blom (1985) đề nghị sơ đồ phân phối khoá, mà sau ta gọi sơ đồ Blom, trờng hợp đơn giản đợc mô tả nh sau: TA chọn số nguyên tố p n, chọn cho ngời dùng A số rAZp Số p số rA đợc công bố công khai Sau đó, TA chọn ba số ngẫu nhiên a,b,c Zp , lập đa thức f ( x, y ) = a + b( x + y ) + cxy modp Với ngời dùng A, TA tính g A ( x) = f ( x, rA ) = a A + bA x modp, a A = a + brA mod p , bA = b + crA mod p TA chuyển bí mật cặp số (a A , bA ) cho A; nh vậy, A biết g A ( x) = a A + bA x So với việc TA phải truyền bí mật n (n -1) lợt khoá kể với sơ đồ Blom, TA phải truyền n lợt cặp số (a A , bA ) mà Sau thực xong công việc chuẩn bị đó, hai ngời dùng A B muốn tạo khoá chung để truyền tin mật mã cho nhau, khoá chung K A,B : K A, B = g A ( rB ) = g B ( rA ) = f ( rA , rB ), mà ngời A B tính đợc thông tin có 153 Nh vậy, theo sơ đồ phân phối này, TA phân phối cho ngời dùng phần bí mật khoá, hai ngời dùng phối hợp phần bí mật riêng với phần công khai ngời để tạo nên khoá bí mật chung cho hai ngời Sơ đồ an toàn theo nghĩa sau đây: Bất kỳ ngời thứ ba C (kể C ngời tham gia mạng) phát đợc khoá bí mật riêng hai ngời A B Thực vậy, dù C có ngời tham gia mạng nữa, mà C biết nhiều hai số aC , bC TA cấp cho Ta chứng minh với mà C biết giá trị l Zp đợc chấp nhận K A,B Những mà C biết, kể việc chấp nhận l = K A,B , đợc thể thành a + b(rA + rB ) + crA rB = l a + brC = aC + crC b = bC Hệ thống phơng trình đó, xem a,b,c ẩn số, có định thức hệ số vế phải rA + rB rA rB = (rC rA )(rC rB ) , rC 0 rC theo giả thiết chọn số r , định thức khác 0, hệ phơng trình có nghiệm (a,b,c), tức việc chấp nhận l giá trị K A,B hoàn toàn Bất kỳ giá trị l Zp đợc C chấp nhận K A,B , điều đồng nghĩa với việc C K A,B số nào! Tuy nhiên, có hai ngời tham gia C D, khác A,B, liên minh với để phát K A,B , lại dễ dàng, C D biết a + brC = aC b + crC a + brD b + crD = bC = aD = bD Bốn phơng trình đủ để xác định (a,b,c), từ tìm đợc K A,B Ta mở rộng sơ đồ Blom nói để đợc sơ đồ Blom tổng quát, khoá chung K A,B hai ngời dùng A B bí mật hoàn toàn liên minh gồm k ngời A B, nhng không bí mật liên minh gồm k +1 ngời tham gia mạng Muốn vậy, ta cần 154 thay đa thức f (x,y ) nói đa thức đối xứng bậc 2k sau : k k f ( x, y ) = aij xi y j mod p , i =0 j = j Z p , i, j k , j = a ji với i, j 7.2.2 Hệ phân phối khoá Kerberos Kerberos tên hệ dịch vụ phân phối (hay cấp phát) khoá phiên (session key) cho phiên truyền tin bảo mật theo yêu cầu ngới dùng mạng truyền tin Hệ mật mã đợc sử dụng thờng hệ có khoá đối xứng, chẳng hạn DES Để thực hệ này, trớc hết, quan đợc uỷ thác (hay trung tâm điều phối) TA cần chia sẻ khoá DES bí mật KA với thành viên A mạng Sau đó, lần A có nhu cầu truyền tin bảo mật với thành viên khác B yêu cầu TA cấp khoá phiên cho A B Việc cấp phát đợc thực giao thức phân phối khoá nh sau: TA chọn ngẫu nhiên khoá phiên K, xác định tem thời gian T thời gian sống L (nh có nghĩa khoá phiên K có giá trị sử dụng khoảng thời gian từ T đến T +L) TA tính m1 = eK A ( K , ID ( B ), T , L), m2 = eK B ( K , ID ( A), T , L) gửi ( m1 , m2 ) đến A A dùng hàm giải mã d K A cho m1 để thu đợc K, T,L,ID(B) Sau tính m3 = eK ( ID( A), T ) , gửi (m3 , m2 ) cho B B dùng hàm giải mã d K B cho m2 dK cho m3 để thu đợc K ,T, L,ID(A) ID(A),T Nếu thử thấy hai giá trị ID(A) T trùng nhau, B tính tiếp m = eK (T +1) gửi m4 cho A A dùng hàm giải mã dK cho m4, thử xem kết thu đợc có T +1 hay không 155 Trong giao thức kể trên, ký hiệu ID(A) ID(B) cho danh tính A B, thông tin công khai Hoàn thành giao thức gồm bớc nói trên, TA (cùng với A B) thực xong việc cấp phát khoá phiên K cho hai ngời dùng A B để truyền tin mật mã cho Tất việc trao đổi thông tin giao thức đợc thực kênh công cộng, dù khoá K bí mật, A, B (và TA) đợc biết mà Ngoài việc cấp phát khoá, giao thức thực đợc việc xác nhận khoá: B A tin đợc đối tác thực có khoá K kết việc thực phép thử bớc 5; thêm nữa, A B biết đợc thời hạn có hiệu lực khoá Phân phối khoá bí mật theo giao thức Kerberos có độ tin cậy cao, nhiên thực tế, việc sử dụng đòi hỏi tốn nhiều thời gian, nên ngày đợc dùng trờng hợp hạn chế 2.3 Hệ phân phối khoá Diffie-Hellman Hệ phân phối khoá Diffie-Hellman không đòi hỏi TA phải biết chuyển thông tin bí mật khoá ngời tham gia mạng để họ thiết lập đợc khoá chung bí mật cho việc truyền tin với Trong hệ phân phối khoá Diffie-Hellman, TA việc chọn số nguyên tố lớn p phần tử nguyên thuỷ theo modp, cho toán tính log Z p khó Các số p đợc công bố công khai cho ngời tham gia mạng Ngoài ra, TA có sơ đồ chữ ký với thuật toán ký (bí mật) sigTA thuật toán kiểm thử (công khai) verTA Một thành viên A với danh tính ID(A) tuỳ ý chọn số a A (0 a A p 2) tính bA = a A mod p A giữ bí mật a A đăng ký thông tin (ID(A), bA ) với TA TA cấp cho A chứng C(A) = (ID(A), bA , sigTA(ID(A), bA )) Các chứng thành viên mạng đợc lu giữ sở liệu công khai, uỷ thác cho TA lu giữ cung cấp công khai cho thành viên cần đến Khi hai thành viên A B mạng cần có khoá bí mật chung để truyền tin bảo mật cho nhau, A dùng thông tin công khai bB có C(B) kết hợp với số bí mật a A để tạo nên khoá 156 K A, B = bBaA mod p = aB aA mod p Khoá chung B tạo đợc từ thông tin công khai bA A số bí mật aB mình: K A, B = bAaB mod p = aAaB mod p Để bảo đảm đợc thông tin bB bA xác, A B dùng thuật toán verTA để kiểm thử chữ ký xác nhận TA chứng C(B) C(A) tơng ứng Độ an toàn hệ phân phối khoá Diffie-Hellman đợc bảo đảm điều sau đây: Biết bA bB để tính KA,B toán Diffie-Hellman mà ta đề cập tới mục 4.1, chơng IV: biết a mod p b mod p , tính ab mod p Đây toán khó tơng đơng toán tính lôgarit rời rạc hay toán phá mật mã ElGamal 7.3 Trao đổi khoá thoả thuận khoá 7.3.1 Giao thức trao đổi khoá Diffie-Hellman Hệ phân phối khoá Diffie-Hellman nói mục trớc dễ dàng biến đổi thành giao thức trao đổi (hay thoả thuận) khoá trực tiếp ngời sử dụng mà không cần có can thiệp TA làm nhiệm vụ điều hành phân phối khoá Một nhóm ngời sử dụng thoả thuận dùng chung số nguyên tố lớn p phần tử nguyên thuỷ theo modp , hai ngời nhóm A B muốn truyền tin bảo mật cho thực giao thức say để trao đổi khoá: A chọn ngẫu nhiên số aA (0 aA p -2), giữ bí mật aA, tính bA = aA mod p gửi bA cho B Tơng tự, B chọn ngẫu nhiên số aB (0 aB p -2), giữ bí mật aB , tính bB = aB mod p gửi bB cho B A B tính đợc khoá chung K A, B = bBaA mod p = bAaB mod p (= aAaB mod p) Giao thức trao đổi khoá Diffie-Hellman có tính chất sau: Giao thức an toàn việc công thụ động, nghĩa ngời thứ ba, dù biết bA bB khó mà biết đợc KA,B Ta biết toán biết bA bB tìm KA,B toán Diffie-Hellman, mục 7.2.3 ta có nói toán tơng 157 đơng với toán phá mật mã ElGamal Bây ta chứng minh điều Phép mật mã ElGamal với khoá K = (p,,a , ), = a mod p , cho ta từ rõ x số ngẫu nhiên k Z p lập đợc mật mã eK ( x, k ) = ( y1 , y2 ), y1 = k mod p, y2 = x k mod p Và phép giải mã đợc cho d K ( y1 , y2 ) = y2 ( y1a ) mod p Giả sử ta có thuật toán A giải toán Diffie-Hellman Ta dùng A để phá mã ElGamal nh sau: Cho mật mã ( y1 , y2 ) Trớc hết, dùng A cho y1 = k mod p = a mod p , ta đợc A(y1,) = ka = k mod p, sau ta thu đợc rõ x từ k y2 nh sau : x = y2 ( k ) mod p Ngợc lại, giả sử có thuật toán B phá mã ElGamal, tức B ( p, , , y1 , y2 ) = x = y2 ( y1a ) mod p áp dụng B cho = bA , y1 = bB , y2 = , ta đợc B ( p, , bA , bB ,1) = (1.(bBa A ) ) = a AaB mod p, tức giải đợc toán Diffie-Hellman Giao thức không an toàn việc công chủ động cách đánh tráo đờng, nghĩa ngời thứ ba C đánh tráo thông tin trao đổi A B, chẳng hạn, C thay a A mà A định gửi cho B aA ,và thay aB mà B định gửi cho A aB , nh vậy, sau thực giao thức trao đổi khoá, A lập khoá chung a AaB với C mà tởng với B, đồng thời B lập khoá chung aAaB với C mà tởng với A; C giải mã thông báo mà A tởng nhầm gửi đến B, nh thông báo mà B tởng nhầm gửi đến A ! Một cách khắc phục kiểu công chủ động nói để A B kiểm thử để xác nhận tính đắn khoá công khai bA bB Đa vào giao thức trao đổi khoá DiffieHellman thêm vai trò điều phối TA để đợc hệ phân phối khoá Diffie-Hellman nh mục 7.2.3 cách khắc phục nh Trong hệ phân phối khoá Diffie-Hellman, can thiệp TA yếu, thực TA làm việc cấp chứng xác nhận khoá công khai cho ngời dùng không đòi hỏi biết thêm bí mật ngời dùng Tuy nhiên, cha 158 thoả mãn với vai trò hạn chế TA, cho TA vai trò xác nhận yếu hơn, không liên quan đến khoá, chẳng hạn nh xác nhận thuật toán kiểm thử chữ kỹ ngời dùng, thân thông tin khoá (cả bí mật công khai) ngời dùng trao đổi trực tiếp với Với cách khắc phục có vai trò hạn chế TA, ta đợc giao thức sau đây: 7.3.2 Giao thức trao đổi khoá DH có chứng xác nhận Mỗi ngời dùng A có danh tính ID(A) sơ đồ chữ ký với thuật toán ký sigA thuật toán kiểm thử verA TA có vai trò xác nhận, nhng xác nhận thông tin liên quan đến việc tạo khoá mật mã ngời dùng (dù khoá bí mật khoá công khai), mà xác nhận thông tin quan hệ khác nh thuật toán kiểm thử chữ ký ngời dùng Còn thân thông tin liên quan đến việc tạo khoá mật mã ngời dùng trao đổi trực tiếp với TA có sơ đồ chữ ký mình, gồm thuật toán ký sigTA thuật toán kiểm thử (công khai) verTA Chứng mà TA cấp cho ngời dùng A C(A) = (ID(A), verA , sigTA(ID(A), verA)) Rõ ràng chứng TA không xác nhận điều liên quan đến việc tạo khoá A Việc trao đổi khoá hai ngời dùng A B đợc thực theo giao thức sau đây: 1.A chọn ngẫu nhiên số a A (0 a A p 2), tính bA = aA mod p, gửi bA cho B B chọn ngẫu nhiên số aB (0 aB p 2), tính bB = aB mod p, tính tiếp K = bAaB mod p, yB = sig B (bB , bA ), gửi (C(B),bB , yB) cho A A tính K = bBa mod p, A dùng verB để kiểm thử yB , dùng verTA để kiểm thử C(B), sau tính yA = sigA(bA , bB ), gửi (C(A), yA) cho B 4.B dùng verA để kiểm thử yA ,và dùng verTA để kiểm thử C(A) Nếu tất bớc đợc thực phép kiểm thử cho kết đắn, giao thức kết thúc, A B có đợc khoá chung K Do việc dùng thuật toán kiểm thử nên A biết giá trị bB B B biết giá trị bA A, loại 159 trừ khả ngời C khác đánh tráo giá trị đờng 7.3.3 Giao thức trao đổi khoá Matsumoto-TakashimaImai Giao thức trình bày mục cần dùng ba lần chuyển tin qua lại để thiết lập khoá chung Các tác giả Nhật Matsumoto, Takashima Imai đề nghị cải tiến để dùng giao thức gồm hai lần chuyển tin (một từ A đến B từ B đến A) để thoả thuận khoá nh sau: Ta giả thử trớc thực giao thức, TA ký cấp chứng cho ngời dùng A theo cách làm mục 7.2.3: C(A) = (ID(A), bA , sigTA(ID(A), bA )), thuật toán kiểm thử chữ ký verTA TA công khai Trong giao thức này, bA không trực tiếp tạo nên khoá mật mã cho truyền tin, mà với phiên truyền tin bảo mật, khoá phiên (sesion key) đợc tạo cho phiên theo giao thức Giao thức trao đổi khoá phiên MTI gồm ba bớc (trong có hai lần chuyển tin) nh sau: A chọn ngẫu nhiên số rA (0 rA p 2), tính s A = rA mod p, gửi (C(A), sA ) cho B B chọn ngẫu nhiên số rB (0 rB p 2), tính sB = rB mod p, gửi (C(B),sB ) cho A A tính K = sBa A bBrA mod p, với giá trị bB thu đợc từ C(B), B tính K = s AaB bArB mod p, với giá trị bA thu đợc từ C(A) Hai cách tính cho giá trị K = rAaB + rB a A mod p Giao thức có khả giữ bí mật khoá K nh giao thức Diffie-Hellman trớc công thụ động Tuy nhiên, chứng giá trị sA , sB nên có nguy công tích cực việc đánh tráo đờng C theo kiểu sau đây: C(A), rA C(A), rA A C(B), rB C(B), rB C B Đáng lẽ A gửi đến B (C(A),sA) C đánh tráo cách nhận r (C(A),sA) gửi đến B (C ( A), sA ), với sA = A mod p , ngợc lại, 160 B gửi đến A (C(B), sB) C đánh tráo cách nhận (C(B), sB) gửi đến A (C ( B), sB ) , với sB = rB mod p Khi đó, A tính đợc khoá K1 = rAaB + rB a A mod p , B tính đợc khoá K = rA aB + rB a A mod p Hai giá trị K1 K2 khác nhau, nên không giúp A B truyền tin đợc cho nhau, nhng C khả tính đợc giá trị hai giá trị (vì aA aB ), nên khác với giao thức Diffie-Hellman mục 7.2.3, C phá rối, đánh cắp thông tin đợc 7.3.4 Giao thức Girault trao đổi khoá không chứng Giao thức Girault đợc đề xuất năm 1991 Trong giao thức này, ngời sử dụng A không cần dùng chứng C(A), mà thay khoá công khai tự chứng thực , đợc cấp trớc TA Phơng pháp sử dụng kết hợp đặc tính toán RSA lôgarit rời rạc Giả thử n tíc hai số nguyên tố lớn p q, n =p.q , p q có dạng p =2p1+1, q =2q1+1, p1 q1 số nguyên tố Nhóm nhân Z n đẳng cấu với tích Z p ì Z q Cấp cao phần tử Z n bội chung bé p -1 q -1, tức 2p1q1 Giả sử phần tử cấp 2p1q1 Z n Nhóm cyclic sinh đợc ký hiệu G, toán tính lôgarit rời rạc theo số G đợc giả thiết khó Các số n công khai Chỉ TA biết p ,q TA chọn số mũ công khai e , với gcd(e, (n ))=1,và giữ bí mật d =e -1mod (n ) Mỗi ngời dùng A có danh tính ID(A), chọn ngẫu nhiên số aA G, giữ bí mật aA tính bA= a A mod n , gửi aA ,bA cho TA TA thử lại điều kiện bA= a A mod n , cấp cho A khoá công khai tự chứng thực pA = (bA- ID(A))d modn Trong khoá công khai pA thông tin aA , nhng TA cần biết aA để thử điều kiện bA= a A mod n Giao thức Girault trao đổi khoá hai ngời dùng A B đợc thực bớc sau đây: A chọn ngẫu nhiên rAG, tính s A = rA mod n, gửi cho B (ID(A),pA , sA) 161 B chọn ngẫu nhiên rB G , tính sB = rB mod n, gửi cho A (ID(B), pB , sB) A tính khoá K = sBa A ( pBe + ID (V )) rA mod n, B tính khoá K = s AaB ( p eA + ID ( A)) rB mod n Cả hai giá trị K K = rA aB + rB a A mod n Bằng lập luận nh mục trớc, ta dễ thấy ngời thứ ba C khó mà tạo thông tin giả mạo để gửi đến A B, công cách đánh tráo đờng phá rối để ngăn cản A B tạo lập khoá chung, nhng đánh cắp thông tin trao đổi A B Còn lại vấn đề: Tại TA cần biết aA thử điều kiện aA bA= mod n trớc cấp pA cho A? Ta giả thử TA aA cấp pA= (bA- ID(A))d modn cho A, thử xem xẩy chuyện gì? Một ngời thứ ba C chọn giá trị rởm aA , tính bA = aA mod n, tính bC = bA ID( A) ID (C ), đa ( ID(C ), bC ) cho TA TA cấp cho C khoá công khai tự chứng thực pC = (bC ID (C )) d mod n Vì bC ID(C ) = bA ID( A), nên thực tế C đợc cấp pC = pA = (bA ID ( A)) d mod n Bây giả sử A B thực giao thức trao đổi khoá, C xen vào giữa, nh vậy, A gửi đến B ( ID ( A), p A , rA mod n), nhng bị C đánh tráo nên B lại nhận đợc ( ID ( A), pA , rA mod n), B C tính đợc khoá K = rA aB + rB aA mod n = sBaA ( pBe + ID ( B )) rA mod n, A tính đợc khoá K = rA aB + rB a A mod n ID(A), pA , rA ID(A), pA, rA A ID(B),pB , rB ID(B),pB, rB C B B C có khoá khác với khoá A, nhng B nghĩ có chung khoá với A Vì thế, C giải mã thông báo mà B gửi cho A, tức đánh cắp thông tin từ B đến A Việc TA biết aA thử điều kiện bA= a A mod n trớc cấp pA cho A để loại trừ khả đánh tráo nh kẻ công C 162 Chú dẫn sách tham khảo Sách báo Khoa học mật mã đợc công khai xuất từ khoảng ba thập niên gần đây, nhng nhu cầu nghiên cứu ứng dụng lớn nên phát triển nhanh chóng, có tài liệu giáo khoa trờng Đại học xuất nh công trình nghiên cứu đăng tải tạp chí khoa học tập công trình hội nghị khoa học quốc tế hàng năm Mật mã Đó nguồn tài liệu phong phú quí giá cho tất quan tâm đến việc học tập nghiên cứu khoa học mật mã Tập giáo trình đợc biên soạn chủ yếu dựa vào số sách chuyên khảo trở thành giáo khoa cho nhiều trờng Đại học giới, đợc xuất năm gần đây: Douglas R Stinson Cryptography Theory and Practice, CRC Press,1995 2.A.J Menezes, P.C van Oorschot, S.A Vanstone Handbook Applied Cryptography, CRC Press, 1997 of 3.Bruce Schneier Applied Cryptography Protocols, Algorithms and Source Code in C John Wiley &Son,Inc, 1996 S Goldwasser, M Bellare Lecture Notes on Cryptography MIT Laboratory of Computer Science, 2001 5.J.Seberry, J Pieprzyk Cryptography An introduction to Computer Security Prentice Hall, 1989 6.Vitor Shoup A computational Introduction to Number Theory and Algebra, New York University, 2003 163 [...]... chọn ngẫu nhiên k =853, sẽ có eK ( 129 9, 853) = (28 53, 129 9 949853)mod2579 = (453, 23 96) Và giải mã ta đợc lại d K (453, 23 96) = 23 96 (453765)-1mod2579 = 129 9 4.4 .2 Tính an toàn của hệ mật mã ElGamal Nh đã trình bày ở trên, nếu ta xem tính an toàn của hệ mật mã ElGamal là ở việc giữ tuyệt mật khoá bí mật K'', thì ta có thể yên tâm vì bài toán phát hiện khoá bí mật có độ khó tơng đơng với bài toán... tiếng Anh thông thờng) 1 02 Thí dụ : Giả sử n =77 = 7.11, B =9 (ở đây p =7, q =11) Ta có eK (x) = x 2 + 9x mod77, d K (y) = 1 + y 43mod 77 , vì 2- 1=39mod77, 9 .2- 1 =9.39 =43mod77, B 2= 4mod77, B 2/ 4 =1mod 77 Với x =44 ta có eK (x) = 4 42+ 9.44 =23 32 =22 mod77, bản mã tơng ứng với x là y = 22 Bây giờ giải mã với bản mã y =22 , bằng thủ tục nói trên ta có thể tìm đợc 4 giá trị của 1 + y = 1 + 22 = 23 theo... lập mật mã Thực vậy, giả sử dùng cùng một số ngẫu nhiên k cho hai lần lập mã, một lần cho x1 , một lần cho x2 , và đợc các bản mã tơng ứng (y1,y2) và (z1,z2) Vì cùng dùng một số k nên y1=z1 Và do đó theo công thức lập mã ta có z2/y2 = x2/x1, tức là x2 = x1.z2/y2 Nh vậy, một ngời thám mã, một lần biết cả bản rõ dễ dàng phát hiện đợc bản rõ trong các lần sau 4.4.3 Các hệ mật mã tơng tự ElGamal Hệ mật mã. .. = 2, a = 127 Khi đó = 21 27mod467=1 32 Cho x =100; ta chọn ngẫu nhiên k =21 3 ( Z 466 ) và đợc k -1mod466 =431 Chữ ký trên văn bản x =100 với số ngẫu nhiên k =21 3 là (, ), trong đó =22 13mod467 = 29 và = (100 - 127 .29 ).431mod466 =51 Để kiểm thử ta tính : . = 1 322 9 .29 51 189 (mod467), x = 21 00 189 (mod467), hai giá trị đó đồng d với nhau theo mod467, chữ ký(, )= (29 ,51) đợc xác nhận là đúng 5 .2. 2... là yếu tố bảo đảm tính an toàn của hệ mật mã Rabin ! 4.4 Hệ mật mã khoá công khai ElGamal 4.4.1 Mô tả hệ mật mã ElGamal Hệ mật mã ElGamal đợc T ElGamal đề xuất năm 1985, dựa vào độ phức tạp của bài toán tính lôgarit rời rạc, và sau đó đã nhanh chóng đợc sử dụng rộng rãi không những trong vấn đề bảo mật truyền tin mà còn trong các vấn đề xác nhận và chữ ký điện tử Sơ đồ hệ mật mã khoá công khai ElGamal... trong thời gian đa thức dựa vào một thuật toán của Lenstra giải bài toán qui hoạch động Tuy nhiên, sau đó, vào năm 1988, Chor và Rivest có đa ra một cách khác xây dựng hệ mật mã cũng dựa vào bài toán sắp balô, cho đến nay vẫn giữ đợc an toàn 4.5.3 Hệ mật mã McEliece Hệ mật mã McEliece đợc xây dựng dựa vào tính NP-đầy đủ của bài toán giải mã tuyến tính tự sửa sai (trong lý thuyết truyền tin) Bài toán... bất kỳ có trọng số t Hệ mật mã này cũng tơng tự nh hệ mật mã ElGamal ở chỗ khi lập mật mã ta có thể chọn thêm cho dữ liệu vào một yếu tố ngẫu nhiên; về sau ta sẽ gọi những hệ mật mã nh vậy là hệ mật mã xác suất Yếu tố chủ yếu bảo đảm tính an toàn của các hệ mật mã McEliece là ở chỗ từ khoá công khai G* khó phát hiện ra khoá bí mật (G,S,P ) và ở tính NP-khó của bài toán giải mã tuyến tính tự sửa sai... n n n và khoá bí mật K'' = (p,q ) Các thuật toán lập mật mã và giải mã đợc xác định bởi eK (x,r ) = mx.r 2 modn , 0, khi y Qn d K (y) = 1, khi y Qn với mọi x P , r R , y C Hệ mật mã Goldwasser-Micali lập mật mã cho bản rõ một bit: mật mã của bit 0 luôn luôn là một thặng d bậc hai modn , và mật mã của bit 1 là một giả thặng d bậc hai modn Việc giải mã là khá dễ dàng khi ta biết khoá bí mật K''... y = 00011101010111010111 Để giải mã, trớc hết ta tìm s 0 từ s21 = 94739 Ta có (p +1)/4 =96, (q +1)/4 = 126 Theo thuật toán giải mã: a 1 = 9 621 mod3 82 =26 6, a 2 = 126 21mod5 02 = 486 Từ đó tính đợc b 1 = 9473 926 6mod383 =67, b 2 = 94739486mod503 = 126 Giải hệ phơng trình đồng d: s0 67 ( mod 383) s0 126 (mod 503) 114 ta đợc s 0 =20 749, từ đó tính lại đợc dãy z, cộng mod2 từng bit với y ta lại thu đợc bản... 10,67, 32, 45, từ đó 4 giá trị có thể có của d K (y) là d K (y) = 44, 24 , 66, 2 Bản rõ nằm trong 4 giá trị đó, trong trờng hợp này là 44 4.3 .2 Tính an toàn của hệ mật mã Rabin Trong định nghĩa của hệ mật mã Rabin, khoá công khai là (n,B), khoá bí mật là (p,q) tức là cặp thừa số nguyên tố của n Nh vậy, tính an toàn của hệ mật mã nằm ở việc giữ bí mật các thừa số p và q Định nghĩa của phép giải mã cũng ... + y 43mod 77 , 2- 1=39mod77, 9 .2- 1 =9.39 =43mod77, B 2= 4mod77, B 2/ 4 =1mod 77 Với x =44 ta có eK (x) = 4 42+ 9.44 =23 32 =22 mod77, mã tơng ứng với x y = 22 Bây giải mã với mã y =22 , thủ tục nói... = 23 96 (453765)-1mod2579 = 129 9 4.4 .2 Tính an toàn hệ mật mã ElGamal Nh trình bày trên, ta xem tính an toàn hệ mật mã ElGamal việc giữ tuyệt mật khoá bí mật K'', ta yên tâm toán phát khoá bí mật. .. thám mã thuật toán đơn giản nói tính an toàn hệ mật mã RSA không đáng ngại Về khả che giấu mật mã Mật mã, giữ đợc bí mật, khả che giấu thông tin nó, tức biết mã y khó lòng tìm đợc thông tin để

Ngày đăng: 03/12/2015, 00:07

Từ khóa liên quan

Mục lục

  • lythmatma0.pdf

    • Tháng 12 năm 2002

    • Thí dụ: 23 \( 8 \(mod 5 \), vì 23 

    • Phương trình đồng dư tuyến tính có dạng

    • lythmatma1.pdf

      • CHƯƠNG III

      • Thí dụ: Cho bản mã chreevoahmaeratbiaxxwtnxbeeophbsbqmqeqerb

      • lythmatma3.pdf

        • CHƯƠNG IV

          • Các hệ mật mã khoá công khai

          • lythmatma4.pdf

            • Bài toán xác nhận và

            • chữ ký điện tử

              • Khi đó, đồng dư thức (modp) đúng với xác suất 1/q , tức nếu

              • lythmatma5.pdf

                • CHƯƠNG VI

                  • Các sơ đồ xưng danh và

Tài liệu cùng người dùng

Tài liệu liên quan