Tiếp nội dung phần 1, Giáo trình Bảo mật thông tin: Phần 2 cung cấp cho người học những kiến thức như: Các hệ mật mã khoá công khai; Chữ ký điện tử hàm hash và phân phối khoá. Mời các bạn cùng tham khảo để nắm chi tiết nội dung giáo trình!
Giáo trình Bảo mật thơng tin CHƢƠNG 4: CÁC HỆ MẬT MÃ KHỐ CƠNG KHAI 4.1 Giới thiệu mật mã khố cơng khai Trong mơ hình mật mã cổ điển Alice (ngƣời gửi) Bob (ngƣời nhận) chọn cách bí mật khố K Sau dùng K để tạo luật mã hoá ekvà luật giải mã dk Trong hệ mật dk giống nhƣ ek dễ dàng tính đƣợc từ ek Các hệ mật thuộc loại đƣợc gọi hệ mật khố bí mật, để lộ ek làm cho hệ thống an tồn Nhƣợc điểm hệ mật u cầu phải có thơng tin khố K Alice Bob qua kênh an toàn trƣớc gửi mã Trên thực tế điều khó đảm bảo Chẳng hạn Alice Bob cách xa họ liên lạc với thƣ tín điện tử (Email) Trong tình Alice Bob khơng thể tạo kênh bảo mật với giá phải Ý tƣởng xây dựng hệ mật khố cơng khai (hay khố dùng chung) tìm hệ mật khơng có khả tính tốn để xác định dk biết ek Nếu thực đƣợc nhƣ quy tắc mã ek đƣợc cơng khai cách cơng bố danh bạ (bởi nên có thuật ngữ hệ mật khố cơng khai) Ƣu điểm hệ mật khố cơng khai chỗ Alice (hoặc ai) gửi tin mã cho Bob (mà khơng cần thơng tin trƣớc khố mật) cách dùng luật mã công khai ek Ngƣời nhận ngƣời giải đƣợc mã cách sử dụng luật giải mã bí mật dk Có thể hình dung hệ mật tƣơng tự nhƣ sau: Bob tạo hai khóa lập mã Kd giải mã Ke gửi khóa lập mã cho Alice, Alice dùng khóa lập mã Bob để mã hóa sau gửi tin mã cho Bob Bob dùng khóa bí mật để giải mã tin nhận đƣợc Ý tƣởng hệ mật khố cơng khai đƣợc Diffie Hellman đƣa vào năm 1976 Việc thực hoá Rivesrt, Shamir Adleman đƣa vào năm 1977, họ tạo nên hệ mật tiếng RSA Kể từ số hệ mật đƣợc công bố, độ mật chúng dựa tốn tính tốn khác 89 Giáo trình Bảo mật thơng tin 4.1.1 Một số tốn Phần giới thiệu số toán số học đƣợc sử dụng xây dựng hệ mật mã khoá cơng khai Bài tốn phân tích số ngun (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 k khác i Bài tốn có liên hệ mật thiết với tốn thử tính nguyên tố hay thử tính hợp số số nguyên Trong lý thuyết mật mã, toán thƣờng đƣợc sử dụng với liệu n số ngun Blum, tức số ngun dƣơng có dạng tích hai số ngun tố lớn Bài tố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)) = bảo đảm với số nguyên c 0, 1, , n -1 có số m 0, 1, , n -1 cho me c (mod n) Nếu biết hai thừa số nguyên tố n tính đƣợc (n) = (p -1)(q -1) Vì gcd(e, (n)) =1 nên tính đƣợc d = e -1mod (n), tìm đƣợc m = c d modn Nhƣ vậy, tốn RSA qui dẫn thời gian đa thức tốn phân tích số ngun Bài tốn thặng dƣ bậc hai : Cho số nguyên lẻ n hợp số, số nguyên a Jn ( tập tất số a có ký hiệu Jacobi J(a,n) =1) Hãy định xem a có thặng dƣ bậc hai theo mod n 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 Khi a Jn , a thặng dƣ bậc hai theo modn J(a,n) =1, điều kiện thử đƣợc tƣơng đƣơng với điều kiện a (p -1)/2 (modp) Nhƣ vậy, trƣờng hợp này, tốn thặng dƣ bậc hai qui dẫn 90 Giáo trình Bảo mật thơng tin thời gian đa thức tốn phân tích số ngun Mặt khác, khơng biết cách phân tích n thành thừa số nguyên tố nay, khơng có cách giải đƣợc tốn thặng dƣ bậc hai thời gian đa thức Bài tốn tìm bậc hai mod n : Cho số nguyên lẻ n hợp số Blum, số a Qn (tập thặng dƣ bậc hai theo modn) Hãy tìm bậc hai a theo modn, nghĩa 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ƣ China đƣợ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 thu đƣợc bốn nghiệm, tức bốn bậc hai a theo modn Ngƣời ta tìm đƣợc số thuật tố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ố Nhƣ vậy, tốn tìm bậc hai modn qui dẫn thời gian đa thức tốn phân tích số ngun Ngƣợc lại, có thuật tốn giải tốn tìm bậc hai modn xây dựng thuật tốn giải tốn phân tích số ngun nhƣ sau: Chọn ngẫu nhiên số x với gcd(x,n) =1, tính a = x2modn Dùng thuật tố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ử thất bại, ta phải chọn tiếp số x khác, y ≢ x (modn) gcd(x-y, 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 tốn học) phép thử để thu đƣợc thừa số p hay q n 2, từ ta thu đƣợc thuật tốn giải tốn phân tích số ngun (Blum) với thời gian trung bình đa thức Bài tốn logarithm rời rạc : Cho số nguyên tố p, phần tử nguyên thuỷ theo modulo p (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) Bài toán logarithm rời rạc suy rộng : 91 Giáo trình Bảo mật thơng tin 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 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, 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 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 logarithm rời rạc thời gian đa thứ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 xem có hay khơng xi 0,1 (1 i n) cho n i 1 xi s Bài toán toán P- đầy đủ, tức thuộc lớp toán khó mà chƣa tìm đƣợc thuật tố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ố hố Có thể phát biểu trực tiếp tốn giải mã mã tuyến tính nhƣ sau: Cho ma trận cấp n x m A = (aij) gồm thành phần 1, vectơ y = (y1,y2, ,ym) giá trị và số ngun 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 n j (1j m): x a i 1 i ij y j (mod 2) đây, x vectơ thông tin, y vectơ mã, phép giải mã tìm lại x nhận đƣợc y 92 Giáo trình Bảo mật thơng tin 4.1.2 Một số hệ mật mã khố cơng khai quan trọng : - Hệ mật mã RSA: Độ bảo mật dựa độ khó việc phân tích thừa số nguyên tố số nguyên lớn - Hệ mật mã xếp ba lơ Merkle - Hellman: dựa tính khó giải tốn tổng tập (là toán NP đầy đủ - lớp lớn tốn khơng có thuật giải đƣợc biết thời gian đa thức) - Hệ mật mã McEliece: dựa lý thuyết mã đại số Hệ mật McEliece dựa tốn giải mã cho mã tuyến tính (cũng toán NP đầy đủ) - Hệ mật mã Elgamal: tính khó giải tốn logarithm rời rạc trƣờng hữu hạn - Hệ mật mã Chor - Rivest: đƣợc xem nhƣ loại hệ mật xếp ba lô - Hệ mật mã đƣờng cong Elliptic: Các hệ mật mã biến tƣớng hệ mật mã khác (chẳng hạn nhƣ hệ mật Elgamal), chúng làm việc đƣờng cong Elliptic Hệ mật mã đảm bảo độ mật với khoá số nhỏ hệ mật mã khoá công khai khác Một ý quan trọng hệ mật mã khố cơng khai khơng đảm bảo đƣợc độ mật tuyệt đối (an tồn vơ điều kiện) Vì đối phƣơng nghiên cứu mã y mã lần lƣợt rõ luật mã cơng khai ek tìm đƣợc rõ x đảm bảo y = ek(x) Bản rõ kết giải mã y Bởi ta nghiên cứu độ mật mặt tính tốn hệ mật mã 4.1.3 Hàm cửa sập chiều Hàm mã khố cơng khai ek phải hàm dễ tính tốn Song việc tìm hàm ngƣợc (hàm giải mã) phải khó khăn (đối với Bob) Đặc tính dễ tính tốn nhƣng khó tính tốn hàm ngƣợc thƣờng đƣợc gọi đặc tính chiều Bởi điều kiện cần thiết ek phải hàm chiều Khái niệm: Hàm số số học y = f(x) đƣợc gọi hàm chiều (one-way function), việc tính thuận từ x y “dễ”, nhƣng việc tính ngƣợc từ y tìm lại x 93 Giáo trình Bảo mật thơng tin “khó”, (có thể hiểu “dễ” tính đƣợc thời gian đa thức, cịn “khó” khơng tính đƣợc thời gian đa thức) Các hàm chiều đóng vai trị quan trọng mật mã học: chúng quan trọng hệ mật khố cơng khai nhiều lĩnh vực khác Tuy nhiên, có nhiều hàm đƣợc coi hàm chiều nhƣng không tồn hàm chứng minh đƣợc hàm chiều Ví dụ Cho p số nguyên tố phần tử nguyên thuỷ theo modulo p Hàm số y = x modp (từ Z *p vào Z *p ) hàm chiều hàm ngƣợc nó, tính x từ y mà ta ký hiệu x = loga ( y) hàm có độ phức tạp tính tốn lớn Ví dụ Cho n =p.q tích hai số nguyên tố lớn Hàm số y = x modn (từ Zn vào Zn ) đƣợc xem hàm phía Ví dụ Cho n =p.q tích hai số nguyên tố lớn, a số nguyên cho gcd(a, (n)) =1 Hàm số y = x a modn (từ Zn vào Zn ) hàm phía, giả thiết biết n nhƣng p, q Để xây dựng hệ mật mã khố cơng khai việc tìm đƣợc hàm chiều chƣa đủ ek khơng phải hàm chiều Bob phải có khả giải mã tin nhận đƣợc cách hiệu Điều cần thiết Bob phải có cửa sập chứa thơng tin bí mật cho phép dễ dàng tìm hàm ngƣợc ek Nhƣ Bob giải mã cách hữu hiệu có hiểu biết tuyệt mật K Bởi hàm đƣợc gọi cửa sập chiều hàm chiều trở nên dễ tính ngƣợc biết cửa sập định Khái niệm: Hàm y = f (x ) đƣợc gọi hàm cửa sập chiều (trapdoor oneway function), việc tính thuận từ x y “dễ”, việc tính ngƣợc từ y tìm lại x “khó”, nhƣng có cửa sập z để với trợ giúp cửa sập z việc tính x từ y z lại trở thành dễ Ví dụ Hàm số y = x a modn biết p q hàm cửa sập chiều Từ x tính y dễ, từ y tìm x (nếu biết n, a) khó, nhƣng biết p q nên tính đƣợc (n) = (p-1)(q-1), dùng thuật toán Euclide mở rộng tìm đƣợc b cho a.b (mod(n)) , từ dễ tính đƣợc x = y b modn Ở đây, xem b cửa sập 94 Giáo trình Bảo mật thơng tin 4.1.4 Định nghĩa hệ mật mã khóa cơng khai Sơ đồ chung hệ mật mã khố cơng khai đƣợc cho S = (P, C, K, E, D) P tập ký tự rõ, C tập ký tự mã, K tập khoá, khoá K gồm có hai phần K = (K’, K''), K' khố cơng khai dành cho việc lập mật mã, cịn K'' khố 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 4.2 Kiểm tra tính ngun tố theo xác suất Các thuật tốn mã hóa khóa cơng khai cần phải sử dụng số nguyên tố Có số phƣơng pháp để sinh số nguyên tố hầu hết chúng dựa thuật tốn kiểm tra tính ngun tố số nguyên Các thuật toán kiểm tra số nguyên tố đƣợc chia làm hai loại: thuật toán tất định thuật toán xác suất Các thuật toán tất định cho biết xác câu trả lời số ngun có phải số ngun tố hay khơng, cịn thuật toán xác suất cho biết xác suất số nguyên số nguyên tố Các thuật toán xác suất thƣờng đƣợc xây dựng cho toán định, tức toán xác định tập hợp liệu cho ứng với liệu tốn có trả lời có khơng Ngƣời ta chia thuật tốn xác suất thành hai loại: loại thuật toán Monte Carlo loại thuật tốn Las Vegas Thuật tốn Monte Carlo ln kết thúc với kết có khơng liệu đầu vào bất kỳ; cịn thuật tốn Las Vegas kết thúc với liệu, nhƣng kết thúc với thơng báo khơng có trả lời có khơng Thuật tốn Monte Carlo đƣợc gọi thiên có, cho trả lời có trả lời chắn đúng, cịn cho trả lời khơng trả lời sai với xác suất Tƣơng tự, thuật toán Monte Carlo đƣợc gọi thiên khơng, cho trả lời khơng trả lời chắn đúng, cịn cho trả lời có trả lời sai với xác suất Cịn với thuật tốn Las Vegas, kết thúc với trả lời có khơng, trả lời chắn đúng, kết thúc với thơng báo khơng có trả lời với xác suất 95 Giáo trình Bảo mật thơng tin 4.2.1 Một số khái niệm định nghĩa Một toán định tốn câu hỏi cần đƣợc trả lời có khơng Một thuật tốn xác suất thuật tốn có sử dụng số ngẫu nhiên (ngƣợc lại, thuật tốn khơng sử dụng số ngẫu nhiên đƣợc gọi thuật tốn tất định) Các định nghĩa sau có liên quan tới thuật toán xác suất cho toán định Định nghĩa 1: Thuật toán Monte Carlo định hƣớng “có” thuật tốn xác suất cho tốn định, câu trả lời “có” ln ln cịn câu trả lời “khơng” sai Thuật tốn Monte Carlo định hƣớng “không” đƣợc định nghĩa theo cách tƣơng tự Ta nói rằng, thuật tốn Monte Carlo định hƣớng “có” có xác suất sai với trƣờng hợp mà câu trả lời “có” thuật tốn có câu trả lời sai “khơng” với xác suất không lớn (xác suất đƣợc tính phép chọn ngẫu nhiên) Bài tốn hợp số: Cho số nguyên dƣơng n ≥ Hỏi n có phải hợp số hay khơng? Phần sau mơ tả hai thuật tốn Soloway - Strasson Miler Rabin để giải toán Đây thuật tốn Monte- Carlo định hƣớng “có” cho tốn hợp số xác xuất sai 1/2 Bởi vậy, thuật tốn trả lời “có” n hợp số; ngƣợc lại n khơng hợp số thuật tốn trả lời “có” với xác xuất tối thiểu 1/2 Định nghĩa 2: Phƣơng trình đồng dƣ bậc hai thặng dƣ bậc hai Phƣơng trình đồng dƣ bậc hai có dạng x2 = a (mod n) (1) với n nguyên dƣơng, a nguyên thỏa mãn điều kiện gcd(a,n) = Nếu phƣơng trình (1) có nghiệm ta nói a thặng dƣ bậc hai theo modulo n, ngƣợc lại phƣơng trình vơ nghiệm, a đƣợc gọi bất thặng dƣ bậc hai theo modulo n Ví dụ: Các thặng dƣ bậc hai theo modulo 11 1, 3, 4, (1)2 = 1, (5)2 = 3, (2)2 = 4, (4)2 = 5, (3)2 = (các phép số học thực Z11) Tập thặng dƣ bậc hai theo modulo n đƣợc ký hiệu Qn, tập bất thặng dƣ bậc hai theo modulo n đƣợc ký hiệu 96 Giáo trình Bảo mật thơng tin Định lý: Nếu p số nguyên tố phần tử sinh Z*p, a thặng dƣ bậc hai theo modulo p a = i mod p, i số nguyên chẵn Từ định lý suy Qn = = (p-1)/2, hay tập Z*n đƣợc phân hoạch thành tập Qn Ví dụ với p = 13, = Z*13 ta có Vậy Q13 = {1, 3, 4, 9, 10, 12} = {2, 5, 6, 7, 8, 11} Tiêu chuẩn Euler: Nếu p số nguyên tố, a thặng dƣ bậc hai theo modulo p Định nghĩa 3: Ký hiệu Legendre Giả sử p số nguyên tố lẻ, với số nguyên a a ≥ 0, ta định nghĩa ký hiệu Legendre nhƣ sau Theo tiêu chuẩn Euler: a(p-1)/2 (mod p) a thặng dƣ bậc hai theo modulo p Nếu a bội p rõ ràng a(p-1)/2 0(mod p) Nếu a không thặng dƣ bậc hai theo modulo p a(p-1)/2 -1 (mod p) ap-1 1(mod p) Vậy ký hiệu Legendre đƣợc đánh giá theo định lý sau: Định lý: Giả sử p số nguyên tố, a(p-1)/2 (mod p) Ví dụ: p = 13 L(9/13) = 96 mod 13 mod 13 L(6/13) = 66 mod 13 12 mod 13 -1 mod 13 Định nghĩa 4: Ký hiệu Jacobi 97 Giáo trình Bảo mật thơng tin Ký hiệu Jacobi khái quát hóa ký hiệu Legendre, định nghĩa cho cặp số nguyên a n Định nghĩa Giả sử n số nguyên dƣơng lẻ phân tích theo luỹ thừa nguyên tố n p1e1 … pKek Giả sử a số nguyên Ký hiệu Jacobi đƣợc định nghĩa nhƣ sau: Nếu n số nguyên tố ký hiệu Jacobi Legendre đồng Trên thực tế tính đƣợc ký hiệu Jacobi cách thuận lợi nhờ tính chất sau: Nếu n số nguyên tố lẻ m1 m2 (mod n) thì: m m n n Nếu n số nguyên lẻ n (mod 8) -1 nếun (mod 8) Nếu n số nguyên lẻ m1m2 m1 m2 n n n Đặc biệt m=2kt với t số lẻ thì: k m 2 t n n n Giả sử m n số ngun lẻ, đó: 98 Giáo trình Bảo mật thơng tin Nếu mạng có n ngƣời dùng, theo phƣơng pháp thông thƣờng, ngƣời dùng phải quản lý n-1 khóa, tồn mạng có n*(n-1)/2 khóa khác Nếu n lớn giải pháp khơng thực tế lƣợng thơng tin lớn cần truyền khơng đảm bảo an tồn Để quản lý khóa, ngƣời ta lập quan có nhiệm vụ xác minh danh tính ngƣời sử dụng, chọn gửi khóa đến ngƣời dùng, … , gọi quan đƣợc ủy thác (TA – trusted authority), TA nơi thực phân phối thỏa thuận khóa Phân phối khố đƣợc định nghĩa chế nhóm chọn khố mật sau truyền đến nhóm khác Cịn thoả thuận khố giao thức để hai nhóm (hoặc nhiều hơn) liên kết với thiết lập khoá mật cách liên lạc kênh công khai Trong sơ đồ thoả thuận khoá, giá trị khoá đƣợc xác định nhƣ hàm đầu vào hai nhóm cung cấp Mục tiêu phân phối khoá giao thức thoả thuận khoá thời điểm kết thúc thủ tục, hai nhóm có khố K song khơng nhóm khác biết đƣợc Trƣớc hết ta xem xét ý tƣởng phân phối khoá trƣớc Với cặp ngƣời sử dụng {U,V}, TA chọn khoá ngẫu nhiên KU,V= KV,U truyền “ngoài dải” đến U V kênh an toàn Biện pháp gọi an toàn khơng điều kiện song địi hỏi kênh an toàn TA ngƣời sử dụng mạng Tuy nhiên điều quan trọng ngƣời phải lƣu n -1 khoá TA cần truyền tổng cộng n(n-1)/2 khố cách an tồn Thậm chí với số mạng tƣơng đối nhỏ, giá để giải vấn đề đắt nhƣ giải pháp hồn tồn khơng thực tế Một biện pháp thực tế TA phân phối khoá trực tiếp Trong sơ đồ nhƣ vậy, TA làm việc nhƣ ngƣời chủ khoá (key server) TA chia khoá mật KU cho ngƣời sử dụng U mạng Khi U muốn liên lạc với V, cô ta yêu cầu TA cung cấp khoá cho phiên làm việc (session key) TA tạo khố session K gửi dƣới dạng mã hố cho U V để giải mã Nếu nhƣ vấn đề phân phối khố thơng qua TA khơng thực tế khơng mong muốn biện pháp chung dùng giao thức thoả thuận khoá Trong giao thức thoả thuận khoá, U V kết hợp chọn khoá cách liên lạc với kênh công khai 166 Giáo trình Bảo mật thơng tin 5.3.2 Phân phối khố trƣớc a Sơ đồ Blom Giả thiết có mạng gồm n ngƣời sử dụng Để thuận tiện, giả sử khoá đƣợc chọn trƣờng số hữu hạn ZP, p n số nguyên tố Cho k số nguyên, < k < n -2 Giá trị k để hạn chế kích thƣớc lớn mà sơ đồ trì đƣợc mật độ Trong sơ đồ Blom, TA truyền k +1 phần tử ZP cho ngƣời sử dụng kênh an toàn (so với n -1 sơ đồ phân phối trƣớc bản) Mỗi cặp ngƣời sử dụng U V có khả tính khố KU,V = KV,U nhƣ trƣớc Điều kiện an toàn nhƣ sau: tập gồm nhiều k ngƣời sử dụng khơng liên kết từ {U, V} phải khơng có khả xác định thơng tin KU,V Trƣớc hết, xét trƣờng hợp đặc biệt sơ đồ Blom k =1 Ở TA truyền phần tử ZP cho ngƣời sử dụng kênh an toàn ngƣời sử dụng riêng W khơng thể xác định đƣợc thơng tin KU,V W U,V Sơ đồ Blom: TA chọn số nguyên tố p công khai (p ≥ n), ngƣời sử dụng U chọn phần tử rU ZP công khai, rU khác TA chọn phần tử ngẫu nhiên a, b, c ZP (không cần khác biệt) thiết lập đa thức f(x,y) = (a + b(x+y) + cxy) mod p Với ngƣời sử dụng U, TA tính đa thức: gU(x) = f(x, rU) mod p truyền gU(x) đến U kênh an toàn Chú ý rằng, gU(x) đa thức tuyến tính theo x nên viết nhƣ sau: gU(x) = aU + bUx, aU = a + b rUmod p bU = b + c rUmod p Nếu U V muốn liên lạc với nhau, họ dùng khóa chung KU,V = KV,U = f(rU,rV) = a + b(rU+rV) + crUrV mod p U tính KU,V nhƣ sau: f(rU, rV) = gU(rV) cịn V tính KV,U nhƣ sau: f(rU, rV) = gV(rU) Ví dụ minh họa sơ đồ Blom với k = 1: 167 Giáo trình Bảo mật thơng tin Giả sử có ngƣời sử dụng U, V W, p =17, cịn phần tử cơng khai họ rU = 12, rV = 7, rW =1 Giả thiết TA chọn a = 8, b = cịn c = 2, đa thức f nhƣ sau: f(x,y) = + 7(x+y) +2xy Các đa thức g nhƣ sau: gU(x) = + 14x gV(x) = + 4x gW(x) = 15 + 9x Nhƣ khoá: KU,V = KU,W = KV,W = 10 U tính KU,V nhƣ sau: gU(rV) = + 1412 mod 17 = V tính KV,U nhƣ sau: gV(rU) = + 412 mod 17 = Định lý Sơ đồ Blom với k = an tồn khơng điều kiện trƣớc ngƣời sử dụng cá biệt b Phân phối khoá trƣớc Diffie – Hellman Trong sơ đồ phân phối khoá Diffie-Hellman, TA chọn số nguyên tố lớn p phần tử nguyên thuỷ theo modp, cho tố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 Ngồi ra, TA có sơ đồ chữ ký với thuật tốn ký (bí mật) sigTA thuật tốn kiểm thử (cơng khai) verTA Một thành viên U với thông tin định danh ID(U) chọn số ngẫu nhiên mật au ( ≤ au ≤ p-2) tính bu = U giữ bí mật au đăng ký thơng tin (ID(U), bu) với TA TA cấp cho U chứng C(U) = (ID(U), bu , sigTA(ID(U),bu)) 168 Giáo trình Bảo mật thông tin Các chứng thành viên mạng đƣợc lƣu giữ sở liệu công khai, uỷ thác cho TA lƣu giữ cung cấp công khai cho thành viên cần đến Khi hai thành viên U V mạng cần có khố bí mật chung để truyền tin bảo mật cho nhau, U dùng thơng tin cơng khai bu có C(V) kết hợp với số bí mật au để tạo nên khoá KU,V = = Khoá chung V tạo đƣợc từ thông tin công khai b u U số bí mật av mình: KV,U = = Để bảo đảm đƣợc thơng tin bu bv xác, U V dùng thuật tốn verTA để kiểm thử chữ ký xác nhận TA chứng C(U) C(V) 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: biết a mod p b mod p , tính ab mod p Đây tốn khó tƣơng đƣơng tốn tính logarithm rời rạc hay tốn phá mật mã ElGamal Ví dụ: Giả sử p = 25307 cịn =2 tham số công khai (p nguyên tố nghiệm nguyên thuỷ theo modulo p) Giả thiết U chọn aU = 3578 tính: bU = aU mod p = 23578 mod 25307 = 6113, đặt dấu xác nhận củaU Giả thiết V chọn aV = 19956 Sau tính: bV = aV mod p 219956 mod 25307 7984 169 Giáo trình Bảo mật thơng tin đóng dấu xác thực V U tính khố: KU,V = bVa mod p 79843578 mod 25307 = 3694 U V tính khoá: KV,U = bUa mod p 611319956 mod 25307 = 3694 V 5.3.3 Kerboros Trong phƣơng pháp phân phối khóa xét, cặp ngƣời dùng cần tính tốn khóa cố định dùng chung thời gian dài, nhƣ dễ bị mật an toàn 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ó khố đố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ẻ khố 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 u cầu TA cấp khố 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 khố 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 cho m2 dK cho m3 để thu đƣợc K ,T, L,ID(A) B 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 170 Giáo trình Bảo mật thơng tin A dùng hàm giải mã dK cho m4, thử xem kết thu đƣợc có T +1 hay không 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 Hồ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ù khố K bí mật, A, B (và TA) đƣợc biết mà thơi Ngồi việc cấp phát khố, giao thức cịn thực đƣợc việc xác nhận khoá: B A tin đƣợc đối tác thực có khố K kết việc thực phép thử bƣớc 5; thêm nữa, A B cịn biết đƣợc thời hạn có hiệu lực khố Phân phối khố 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ế 5.3.4 Trao đổi khoá Diffie - Hellman Nếu không muốn dùng dịch vụ phân phối khố qua TA ngƣời dùng phải dùng giao thức thoả thuận khoá để trao đổi khoá mật Giao thức thoả thuận khoá tiếng giao thức trao đổi khoá Diffie - Hellman Giao thức Diffie – Hellman: Chọn p số nguyên tố lớn, phần tử nguyên thuỷ Z*P, p công khai U chọn aU ngẫu nhiên, mật (0 ≤ aU ≤ p-2) U tính bu = au mod p gửi đến V V chọn aV ngẫu nhiên, mật (0≤ aV ≤ p-2) V tính bv = av mod p gửi đến U U tính: K = ( av ) au mod p V tính: K = ( au ) av mod p Giao thức tƣơng tự với sơ đồ phân phối khoá trƣớc Diffie Hellman Sự khác chỗ số mũ aU, aV U V đƣợc chọn lại lần thực giao thức thay cố định Cũng nhƣ vậy, giao thức này, U lẫn V đƣợc đảm bảo khố tƣơi khố session phụ thuộc vào hai số mũ ngẫu nhiên a U aV a Giao thức trạm tới trạm 171 Giáo trình Bảo mật thơng tin Giao thức thỏa thuận khóa trạm tới trạm (STS) cải tiến giao thức phân phối khóa Diffie – Hellman, có bổ sung phần xác thực danh tính ngƣời dùng STS đƣợc gọi giao thức thỏa thuận khóa có xác thực Giao thức giả thiết số nguyên tố p phần tử nguyên thuỷ α đƣợc biết cách cơng khai dùng với dấu xác nhận Mỗi ngƣời sử dụng U có sơ đồ chữ ký với thuật tốn xác minh cơng khai verU TA có sơ đồ chữ ký với thuật tốn xác minh cơng khai verTA Mỗi ngƣời sử dụng U có chứng chỉ: C(U) = (ID(U), verU, sigTA(ID(U), verU)) ID(U) thơng tin định danh cho U Giao thức trạm tới trạm có xác thực Diffie, Van Oorschot Wiener nhƣ sau: U chọn aU ngẫu nhiên (0≤ aU ≤ p-2) U tính αau mod p gửi đến V V chọn aV ngẫu nhiên, (0≤ aV ≤ p-2) V tính: αav mod p sau tính K = ( αau ) av mod p yV = sigV (αau ,αav) V gửi (C(V), αav, yV) đến U U tính: K = ( αav ) au mod p Cô dùng verV xác minh yV xác minh C(V) nhờ verTA U tính:yU = sigU (αau ,αau) gửi (C(U), yU) đến V V xác minh yU verU xác minh C(V) nhờ verTA Mức an toàn: STS giao thức lần truyền tin, thông tin giao thức trao đổi nhƣ sau: Kẻ cơng W khơng thể tính chữ ký V (sigV (αau ,αa‟u)) khơng biết thuật tốn ký sigV V Tƣơng tự, W khơng thể thay sigU (αau ,αa‟v) sigU (αa‟u ,α av ) khơng biết thuật tốn ký sigU U Điều đƣợc minh hoạ dƣới đây: Tóm lại, nhờ sử dụng chữ ký mà tránh cơng W 172 Giáo trình Bảo mật thơng tin Giao thức khơng đƣa khẳng định khố Tuy nhiên, dễ dàng biến đổi để thực đƣợc điều cách định nghĩa: yV = eK(sigV (αau ,αav)) bƣớc yU = eK(sigU (αau ,αav)) bƣớc b Các giao thức thoả thuận khoá MTI Matsumoto, Takashima, Imai (MTI) xây dựng giao thức thỏa thuận khóa cách cải biên giao thức trao đổi khóa STS Giao thức khơng u cầu U V tính chữ ký Nó giao thức hai lần truyền có hai lần truyền thông tin riêng biệt (một từ U đến V từ V đến U) Việc thiết lập giao thức tƣơng tự nhƣ sơ đồ phân phối khoá trƣớc Diffie – Hellman U chọn rU ngẫu nhiên, 0≤ rU ≤ p-2 tính: sU = αrU mod p U gửi (C(U),sU)) đến V V chọn rV ngẫu nhiên, 0≤ rV ≤ p-2 tính: SV = αrV mod p V gửi (C(V),sV)) đến U U tính: K = sVaubVru mod p đây, cô nhận đƣợc giá trị bV từ C(V) V tính: K = sUavbUrv mod p đây, nhận đƣợc giá trị bV từ C(V) Trong đó: + p, α đƣợc biết công khai + Mỗi ngƣời sử dụng U có xâu ID(U), số mũ bí mật aU (0≤ aU ≤ p-2) giá trị công khai tƣơng ứng: bU = αau mod p Tƣơng tự V + TA có sơ đồ chữ ký với thuật tốn xác minh cơng khai verTA thuật toán ký mật sigTA + Mỗi ngƣời sử dụng U có dấu xác nhận: C(U) = (ID(U), bU, sigTA(ID(U), bU)) bU đƣợc thiết lập nhƣ Tƣơng tự cho V + Cả U V tính khố: K = αruav+rvau mod p Ví dụ: Giả sử p= 27803, α = Giả sử U chọn aU = 21131, V chọn aV = 17555 Khi đó: bU = 521131 mod 27803 = 21420 bV = 517555 mod 27803 = 17100 (bU, bV đƣợc đóng giấy xác nhận U V) Giả sử U chọn rU = 169, V chọn rV = 23456 Khi đó: 173 Giáo trình Bảo mật thơng tin sU = 5169 mod 27803 = 6268 sV = 523456 mod 27803 = 26759 U gửi sU tới V V gửi sV tới U U tính khố: KU,V = sVaubVru mod p = 267592113117100169 mod 27803 = 21600 V tính khố: KU,V = sUavbUrv mod p = 6268175552142023456 mod 27803 = 21600 Độ mật giao thức MTI trƣớc cơng thụ động tốn Diffie – Hellman Khi khơng dùng chữ ký suốt q trình thực giao thức, giao thức khơng an tồn trƣớc cơng đƣờng Khi có cơng chủ động W U V tính khố khác nhau: U tính khố: K = αruav+r‟vau mod p V tính khố: K = αr‟uav+rvau mod p Mặc dù U V tính đƣợc khố khác (khơng có lợi cho họ) nhƣng W khơng thể tính khố U V chúng đòi hỏi phải biết số mũ mật aU aV tƣơng ứng Cả U V đƣợc đảm bảo ngƣời sử dụng khác mạng tính đƣợc khố mà họ tính đƣợc Đây kiểu xác thực khoá ẩn c Thoả thuận khoá dùng khoá tự xác nhận Phƣơng pháp thoả thuận khoá Girault đƣa không cần dấu xác nhận Giá trị khố cơng khai danh tính ngƣời sở hữu ngầm xác thực Sơ đồ Girault kết hợp tính chất RSA thuật tốn logarithm rời rạc Giả sử n=pq, p= 2p1+1, q= 2q1+1 p, q, p1, q1 số nguyên tố lớn Giá trị n đƣợc biết TA TA chọn số mũ mã hố e (cơng khai) số mũ giải mã d (bí mật ) mà d = e-1 mod Φ(n) Mỗi ngƣời sử dụng U có xâu ID(U) U nhận đƣợc khoá tự xác nhận pU từ TA đó: bU = pUe + ID(U) mod n Nhận khoá xác nhận từ TA U chọn số mũ mật aU tính: bU = αaU mod n 174 Giáo trình Bảo mật thơng tin U đƣa aU bU cho TA TA tính: pU = (bU – ID(U))d mod n TA đƣa pU cho U Giao thức thoả thuận khoá Girault U chọn rU ngẫu nhiên, 0≤ rU ≤ p-2 tính: sU = αrU mod n U gửi ID(U), pU, sU cho V V chọn rV ngẫu nhiên, 0≤ rV ≤ p-2 tính: sV = αrV mod n V gửi ID(V), pV, sV cho U U tính: K = sVau ( pVe + ID(V))ru mod n V tính: K = sUav ( pUe + ID(U))rv mod n Tại thời điểm kết thúc giao thức, U V tính khố: K = αruav+rvau mod n Ví dụ: p = 839, q = 863, α = Khi đó: n = pq = 724057, Φ(n) = (p-1)(q-1) = 722356 Giả sử TA chọn: d= 125777 làm số mũ giảI mã RSA, e = 84453 Giả sử U có ID(U) = 500021 aU = 111899 thì: bU = 48889 pU = 650704 Tƣơng tự, V có ID(V) = 500022 aV = 423456 thì: bV = 111692 pV = 683556 Bây U V muốn trao đổi khoá thì: U chọn rU = 56381, V chọn rV = 356935 Khi đó: sU = 171007, sV = 320688 Cả U V đề tính khố: K = 42869 - Khi đối phƣơng W muốn giả dạng U W bắt đầu vớI ID(U) giá trị giả b‟U Khi khơng có cách để W tính số mũ a‟U tƣơng ứng với b‟U (nếu toán logarithm rời rạc khó giải) Khơng có a‟U, W khơng thể tính đƣợc khố - Khi W ngăn cản U V tính tốn khố chung nhƣ kẻ xâm nhập W khơng thể lại việc tính tốn U V, Vì vậy, sơ đồ cung cấp xác thực ngầm nhƣ giao thức MTI 175 Giáo trình Bảo mật thơng tin Tại U đƣợc yêu cầu cung cấp giá trị aU tới TA TA tính pU trực tiếp từ bU mà không cần biết aU? lý để đảm bảo tính an tồn giá trị aU phải đƣợc biết trƣớc TA tính pU cho U (TA tính bU dựa vào aU, sau so sánh với bU nhận từ U: giống chấp nhận, ngược lại huỷ bỏ) Giả sử W chọn giá trị giả a‟U tính giá trị tƣơng ứng: b‟U = αa‟U mod n Khi đó: p‟U = (b‟U – ID(U))d mod n W tính b'W = b‟U – ID(U) + ID(W) gửi b‟W , ID(W) tới TA Giả sử TA tính gửi khố bí mật p‟W tới W: p‟W = (b‟W – ID(W))d mod n Vì b'W - ID(W) = b‟U – ID(U) + ID(W) mod n nên p‟W = p‟U Giả sử thời gian sau, U V thực thi giao thức W thay thông tin nhƣ sau: V tính khố: K‟ = αr‟uav+rva‟u mod n = KW U tính khố: K = αruav+rvau mod n Cho nên W V tham gia khoá, v nghĩ tham gia khố với U Vì vậy, W giải mã điện gửi từ V tới U 176 Giáo trình Bảo mật thông tin BÀI TẬP Cho hệ chữ ký điện tử Elgamal có p = 1019, = 191 phần tử nguyên thủy thuộc Z*p, a = 37 a Hãy tìm khóa sơ đồ chữ ký b Thực ký tài liệu X = 102 với số bí mật k = 143 c Kiểm tra xem cặp (251, 507) có phải chữ ký văn X = 127 hay không? Cho hệ chữ ký điện tử RSA có p = 31, q = 41, e = 271 a Hãy tìm khóa sơ đồ chữ ký b Thực ký tài liệu X = 100 Cho hệ chữ ký điện tử DSS có q = 11, p = 67, = 9, = 62, khóa bí mật a = Để ký tài liệu X = ngƣời ta chọn k = Hãy xác định chữ ký tài liệu X Giả thiết Bob dùng sơ đồ Elgamal, kí hai điện x1 x2 chữ kí (, 1) (, 2) tƣơng ứng (giá trị giống hai chữ kí) Cũng giả sử UCLN ( 1- 2, p-1)=1 a Hãy cho biết cách tính k hiệu biết thơng tin b Hãy mơ tả cách sơ đồ chữ kí bị phá c Giả sử p=31847, =5, =25703 Tính k a cho trƣớc chữ kí (23972, 31396 ) với điện x=8990 chữ kí (23972, 20481) điện x = 31415 Giả sử I thực hiên sơ đồ Elgamal với p = 31847, =5, =26379 a Xác minh chữ kí (20679, 11082 ) điện x=20543 b Xác định số mũ mật a cách dùng thuật toán tối ƣu hoá thời gian - nhớ Shark, sau xác định giá trị k ngẫu nhiên dùng việc kí lên điện x Giả sử Bob dùng sơ đồ chữ kí Elgamal với p=467, =2 =132 Giả sử Bob kí lên điện x=100 chữ kí (29, 51) Hãy tính chữ kí giả mạo mà Oscar lập cách dùng h = 100, i = 45 j =293.Hãy kiểm tra xem chữ ký vừa nhận đƣợc có thoả mãn điều kiện xác minh khơng 177 Giáo trình Bảo mật thông tin Giả sử Bob dùng DSS với q = 101, p = 7879, = 170, a = 75 cịn = 4567 Xác định chữ kí Bob điện x = 5011, cách dùng giá trị ngẫu nhiên k = 49 cách xác minh chữ kí nhận đƣợc Trong sơ đồ Lamport, giả sử hai điện x x‟ bội k (k-tuple) Bob kí Cho l = d(x, x‟) toạ độ x x‟ khác Hãy cách Oscar kí 2l điện Giả sử Bob dùng chữ kí khơng chối đƣợc Chaum Van Antwerpen với p = 467, = 4, a = 101, = 449 Giả sử Bob đƣợc trình chữ kí y = 25 điện x =157 muốn chứng minh giả mạo Giả sử số ngẫu nhiên Alice e1 = 46, e2 = 123, f1 =198, f2 =11 thủ tục từ chối Hãy tính yêu cầu c, d, Alice câu trả lời C, D Bob; phép kiểm tra tính phù hợp Alice thành công 10 Giả sử A B sử dụng kỹ thuật phân phối khóa Diffie – Hellman để truyền tin cho với số nguyên tố đƣợc chọn p = 71 phần tử nguyên thủy = a Nếu khóa bí mật A XA = khóa cơng khai A b Nếu khóa bí mật B XB = 12 khóa cơng khai B c Cho biết khóa bí mật dùng để truyền tin 11 Giả sử A B sử dụng kỹ thuật phân phối khóa Diffie – Hellman để truyền tin cho với số nguyên tố đƣợc chọn p = 11 phần tử nguyên thủy = a Chứng minh = phần tử ngun thủy Z*11 b Nếu khóa cơng khai A YA= khóa bí mật A bao nhiêu? c Nếu B có khóa cơng khai YB = Hãy tìm khóa bí mật để truyền tin A B 12 Giả sử sơ đồ Blom với k =1 đƣợc thực cho tập ngƣời sử dụng, U, V, W X Giả thiết p = 7873, rU = 2365, rV =6648, rW = 1837 rX = 2186 Các đa thức mật g nhƣ sau: gU(x) = 6018 + 6351x gV(x) = 3749 + 7121x gW(x) = 7601 + 7802x gX(x) = 635 + 6828x 178 Giáo trình Bảo mật thơng tin a Tính khố cho cặp ngƣời sử dụng, xác minh cặp nhận đƣợc khoá chung (nghĩa KU,V = KV,U v.v ) b Chỉ cách W X tính khố KV,U 13 Giả thiết sơ đồ Blom với k = đƣợc thực cho tập ngƣời sử dụng U, V, W, X Y Giả thiết p = 97, rU = 14, rV = 38, rW = 92, rX =69 rY = 70 Các đa thức mật g nhƣ sau: gU(x) = 15 + 15x + 2x2 gV(x) = 95 + 77x + 83x2 gW(x) = 88 + 32x + 18x2 gX(x) = 62 + 91x + 59x2 gY(x) = 10 + 82x + 52x2 a Chỉ cách U V tính khố KU,V = KV,U b Chỉ cách W, X Y tính khố KU,V 13 Xét sơ đồ định danh Girault p = 167, q = 179 n = 29893 Giả sử = e = 11101 a Tính d b Cho trƣớc ID(U) = 10021 aU = 9843, tính bU pU Cho trƣớc ID(V) = 10022 aV = 7692, tính bV pV c Chỉ ta cách tính bU từ pU ID(V) cách dùng số mũ công khai e Tƣơng tự, cách tính bV từ pV ID(V) d Giả sử U chọn rU = 15556 V chọn rV = 6420 Hãy tính sU sV cách U V tính khố chung họ 179 Giáo trình Bảo mật thông tin TÀI LIỆU THAM KHẢO [1] Douglas Stinson - Cryptography: Theory and Practice Boca Raton FL CRC Press, 2007 [2] William Stallings Cryptography and Network Security: Principles and Practice Third Edition Pearson Education, 2003 [3] A Menezes, P van Oorschot S Vanstone - Handbook of Applied Cryptography, Fifth Edition, CRC Press, 1996 [4] Phạm Huy Điển, Hà Huy Khối Mã hố thơng tin sở tốn học ứng dụng Nhà xuất Đại học Quốc gia Hà Nội 2004 [5] Phan Đình Diệu Lý thuyết mật mã an tồn thơng tin Nhà xuất Đại học Quốc gia Hà Nội 2006 [6] http://en.wikipedia.org [7] http://vn.wikipedia.org [8] http://www.ietf.org/rfc [9] http://www.schneier.com/blowfish.html [10] http://www.rsasecurity.com 180 ... p1q1+p1q1(1 +22 +24 + +22 i-1) = p1q1(1+ 2 2i 2i ) = p1 q1 3 Để ý p-1 = 2ip1 q-1=2jq1 Bây giả sử j i 1 p1q1