trình bày về hệ mã hoá rabin
ĐẠI HỌC QUỐC GIA HÀ NỘI ĐẠI HỌC CÔNG NGHỆ BÀI TẬP LỚN AN TOÀN VÀ BẢO MẬT DỮ LIỆU Trình bày về hệ mã hoá Rabin Giảng viên: PGS, TS. Trịnh Nhật Tiến Học viên: Trần Đại Long Lớp: Cao học K10T3 Hà Nội 6/2005 Page of 14 1 Một đặc điểm quan trọng đáng mong muốn của bất kỳ lược đồ mã hoá nào là nó phải được chứng minh là việc phá khoá khó tương đương với việc giải một bài toán nào đó đã biết, mà người ta tin tưởng là rất khó, như việc phân tích ra thừa số hay giải bài toán logarit rời rạc. Hệ mã hoá RSA, mặc dù được người ta tin là việc phá khoá khó tương đương với việc phân tích ra thừa số module n, nhưng s ự tương đương đó lại chưa được chứng minh. Hệ mã hoá công khai Rabin là một ví dụ đầu tiên về một lược đồ khoá công khai đã được chứng minh về tính an toàn. Khó khăn mà một người tấn công thụ động gặp phải khi giải mã là khó tương đương về mặt tính toán với việc phân tích ra thừa số. I. Sơ đồ hệ mã hoá Rabin Sơ đồ hệ mật mã khóa công khai Rabin được cho bởi : S = (P, C, K, E, D) Trong đó: - P = C = Zn, trong đó n là một số nguyên Blum, n = p.q, với p và q là 2 số nguyên tố có tính chất p ≡ 3 mod 4, q ≡ 3 mod 4. - K = {(K’, K”): K’ (khóa công khai) = (n, B), K” (khóa bí mật) = (p, q), 0 <= B <= n-1} - Các thuật toán E và D được xác định bởi: E(K’, x) = y = x (x + B) mod n, n B y B y mod 24 "D 2 ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ −+ = ) ,Κ( Trong một mạng truyền tin bảo mật với sơ đồ mật mã Rabin, mỗi người tham gia chọn cho mình các yếu tố n, B, p, q để lập nên khoá công khai và khoá bí mật của mình. Thuật toán giải mã d K” = D(K”, .): Đặt C = B 2 / 4 + y, ta có d K” (y) = n B C mod 2 ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ − , do đó ta cần tính nC mod , tức cần giải phương trình Z 2 ≡ C mod n. Theo định lý số dư Trung quốc thì phương trình đó tương đương hệ hai phương trình sau đây: Z 2 ≡ C mod p Z 2 ≡ C mod q (2) Page of 14 2 Định lý Fermat: nếu p là số nguyên tố thì: C (p-1) ≡ 1 mod p Theo tiêu chuẩn Euler: khi p là số nguyên tố thì số a là thặng dư bậc 2 mod p nếu và chỉ nếu a (p-1)/2 ≡ 1 mod p . Vì p là số nguyên tố và C là thặng dư bậc 2 mod p nên ta có: C (p-1)/2 ≡ 1 mod p Tuơng tự, vì q là số nguyên tố và C là thặng dư bậc 2 mod q nên ta có: C (q-1)/2 ≡ 1 mod q. Do đó: C (p-1)/2+1 = C (p+1)/2 ≡ C mod p C (q-1)/2+1 = C (q+1)/2 ≡ C mod q. Theo giả thiết, p ≡ 3 mod 4 và q ≡ 3 mod 4 nên (p+1)/4 và (q+1)/4 là các số nguyên, và ta có: (±C (p+1)/4 ) 2 ≡ C mod p, (±C (q+1)/4 ) 2 ≡ C mod q Do đó, phương trình Z 2 ≡ C mod n, hay hệ phương trình (2) có 4 nghiệm theo mod n, tương ứng với 4 hệ phương trình sau đây: Z ≡ C (p+1)/4 mod p Z ≡ C (q+1)/4 mod q (1) Z ≡ C (p+1)/4 mod p Z ≡ -C (q+1)/4 mod q (2) Z ≡ -C (p+1)/4 mod p Z ≡ C (q+1)/4 mod q (3) Z ≡ -C (p+1)/4 mod p Z ≡ -C (q+1)/4 mod q (4) Cả 4 nghiệm của 4 hệ phương trình đó theo mod n đều được viết chung dưới 1 ký hiệu là C mod n, vì vậy thuật toán giải mã d K” (y) thực tế sẽ cho ta 4 giá trị khác nhau theo mod n mà bản rõ là 1 trong 4 giá trị đó. Việc chọn giá trị nào trong 4 giá trị tìm được làm bản rõ tuỳ thuộc vào những đặc trưng khác của bản rõ mà người giải mã nhận biết. A. Giải thuật tạo khoá cho hệ mã hoá Rabin: Mỗi bên tạo 1 khoá công khai và 1 khoá bí mật tương ứng. Bên A phải làm các việc sau: 1. Tạo 2 số ngẫu nhiên lớn và khác nhau p và q, p gần bằng q. 2. Tính n = pq. 3. Khoá công khai của A là n, khoá bí mật của A là (p, q). Page of 14 3 B. Giải thuật mã hoá công khai Rabin: Tóm tắt: B mã hoá 1 thông điệp m gửi cho A, dùng khoá công khai của A để mã hoá, A sẽ giải mã bằng khoá bí mật tương ứng của mình. 1. Mã hoá: B cần làm các việc sau: a) Nhận khoá công khai đã được xác thực của A là n. b) Giả sử thông điệp là 1 số nguyên m trong khoảng [0, 1, …, n-1] c) Tính c = m 2 mod n d) Gửi bản mã hoá c cho A. 2. Giải mã: A có khoá bí mật là p và q, với n= pq, để nhận được bản rõ m từ c, A phải làm các việc sau: a) Sử dụng giải thuật 3.44 để tìm 4 căn bậc 2 của c theo module n là m 1 , m 2 , m 3 , m 4 . b) Bức thông điệp ban đầu có thể là m1, m2, m3, hoặc m4. Một đặc điểm nào đó sẽ cho biết cái nào là bản rõ. Nếu p và q được chọn để cả p ≡ q ≡ 3 mod 4 thì thuật toán để tìm 4 căn bậc 2 của c mod n có thể đơn giản như sau: 1. Dùng thuật toán Euclide mở rộng tìm 2 số nguyên a và b thoả mãn: ap + bq = 1. 2. Tính r = c (p+1)/4 mod p 3. Tính s = c (q+1)/4 mod q 4. Tính x = (aps + bqr) mod n. 5. Tính y = (aps - bqr) mod n. 6. Bốn căn bậc 2 của c mod n là x, -x mod n, y và –y mod n. C. Các giải thuật và định lý có liên quan đến việc tính toán 1. Giải thuật 3.44 : Tìm căn bậc 2 modulo n biết các thừa số nguyên tố của nó là p và q. Page of 14 4 Input: 1 số nguyên n, các thừa số nguyên tố p và q của nó (n = pq), và 1 số a ∈ Q n . Output: 4 căn bậc 2 của a theo modulo n. 1. Sử dụng giải thuật 3.39 ( hoặc giải thuật 3.36 hoặc 3.37, nếu có thể) để tìm 2 căn bậc 2 của a theo modulo p là r và –r . 2. Sử dụng giải thuật 3.39 ( hoặc giải thuật 3.36 hoặc 3.37, nếu có thể) để tìm 2 căn bậc 2 của a theo modulo q là s và –s . 3. Sử dụng giải thuật Euclidean mở rộng để tìm các số nguyên c và d thoả mãn: cp + dq = 1. 4. Đặt x = (rdq + scp) mod n và y = (rdq - scp) mod n. 5. Trả về (±x mod n, ±y mod n). Giải thuật 3.44 có độ phức tạp O((lg p) 3 ) . Giải thuật 3.44 cho thấy nếu n có thể bị phân tích thành các thừa số nguyên tố thì bài toán tìm căn bậc 2 (SQROOT) là dễ. Chính xác hơn là SQROOT ≤ ρ FACTORING. Điều ngược lại cũng đúng. 2. Định lý 3.46. SQROOT ≤ ρ FACTORING. Nghĩa là bài toán FACTORING được đưa về bài toán SQROOT trong thời gian đa thức. Do SQROOT ≤ ρ FACTORING nên bài toán SQROOT và bài toán FACTORING là phức tạp tương đương nhau về mặt tính toán. Chứng minh: Giả sử có 1 giải thuật thời gian đa thức A để giải bài toán SQROOT. Giải thuật này có thể dùng để phân tích ra thừa số nguyên tố 1 số nguyên n cho trước như sau: 1. Chọn 1 số nguyên x ngẫu nhiên thoả mãn gcd(x, n) = 1. Tính a = x 2 mod n . 2. Chạy giải thuật A với input là a và n, tìm được căn bậc 2 của a mod n là y. 3. Nếu y ≡ ±x mod n thì phép thử thất bại. Thủ tục trên được lặp lại với 1 số x mới được chọn ngẫu nhiên. Page of 14 5 4. Ngược lại, nếu y ≢ ±x mod n thì gcd(x-y, n) được đảm bảo là 1 thừa số không tầm thường của n (theo 3.18), gọi là p và q. Vì a có 4 căn bậc 2 modulo n, (±x và ±z, với ±z ≢ ±x mod n), khả năng thành công của mỗi lần thử là ½. Vì vậy số lần thử để tìm ra thừa số của n là 2. Vì vậy giải thuật chạy trong thời gian đa thức. 3. Định lý 3.47. Nhấn mạnh 3.46. Việc chứng minh ở mục 3.46 có thể dễ dàng sửa đổi để nhận được kết quả mạnh hơn sau đây: Gọi c ≥ 1 là 1 hằng số bất kỳ. Nếu có 1 giải thuật A mà, cho biết số n, có thể tìm căn bậc 2 modulo n trong thời gian đa thức với 1 tỷ lệ 1/ (lg n) c của tất cả các phần dư bậc 2 a ∈ Q n , thì giải thuật A có thể được dùng để phân tích ra thừa số số n trong thời gian đa thức. Kết luận này cũng có nghĩa rằng nếu bài toán phân tích ra thừa số số n là khó thì với phần lớn tất cả a ∈ Q n , bài toán tìm căn bậc 2 modulo n là khó. Sự tương đương về mặt tính toán của bài toán SQROOT và FACTORING là cơ sở của lược đồ chữ ký số và mã hoá công khai “được chứng minh an toàn” đầu tiên. 4. Định lý 3.18. Gọi x, y và n là các số nguyên. Nếu x 2 ≡ y 2 mod n nhưng x ≢ ±y mod n thì gcd(x – y, n) là 1 thừa số không tầm thường của n. Phương pháp bình phương ngẫu nhiên cố gắng tìm các số nguyên x và y 1 cách ngẫu nhiên mà x 2 ≡ y 2 mod n. Như chỉ ra trong 3.19, khả năng 50% là x ≢ ±y mod n , do đó gcd(x-y, n) sẽ sinh ra các thừa số không tầm thường của n. 5. Định lý 3.19. Gọi n là 1 hợp số lẻ (n không phải là số nguyên tố) mà có thể chia hết bởi k số nguyên tố lẻ khác nhau. Nếu a ∈ Z * n thì nhóm đồng dư x 2 ≡ a 2 mod n có chính xác 2 k nghiệm mod n, 2 trong số đó là x = a và x = -a. 3.20. Ví dụ: Giả sử n = 35. Khi đó có 4 nghiệm với nhóm đồng dư x 2 ≡ 4 mod 35 là x 1 = 2, x 2 = 12, x 3 = 23 và x 4 = 33. Như vậy y 2 = 4 Æ y = 2. gcd(x 1 - y, n) = gcd(2 – 2, 35) = gcd(0, 35) = 1 gcd(x 2 - y, n) = gcd(12 – 2, 35) = gcd(10, 35) = 5 gcd(x 3 - y, n) = gcd(23 – 2, 35) = gcd(21, 35) = 7 gcd(x 4 - y, n) = gcd(33 – 2, 35) = gcd(31, 35) = 1 Page of 14 6 Như vậy 35 đã được phân tích thành 2 thừa số 5 và 7. Có 1 giải thuật để tìm 2 số x và y ngẫu nhiên thoả mãn x 2 ≡ y 2 mod n. 6. Giải thuật 3.39 Tìm căn bậc 2 của số a theo modulo số nguyên tố p. Input: 1 số nguyên tố lẻ p và 1 số nguyên a ∈ Q p . Output: 2 căn bậc 2 của a modulo p. 1. Chọn ngẫu nhiên b ∈ Z p cho đến khi b 2 – 4a là 1 số không dư bậc 4 modulo p (a quadratic non-residue modulo p), nghĩa là (b 2 – 4a) / p = -1 2. Gọi f là 1 đa thức f = x 2 – bx + a trong Z p [x]. 3. Tính r = x (p+1)/2 mod f (giải thuật 2.227) (r sẽ là 1 số nguyên). 4. Trả lại (r, -r). 7. Giải thuật 3.36 Tìm căn bậc 2 modulo số nguyên tố p của số a trường hợp p ≡ 3 mod 4. Input: 1 số nguyên tố lẻ p thoả p ≡ 3 mod 4 và 1 số nguyên a ∈ Q p . Output: 2 căn bậc 2 của a theo modulo p. 1. Tính r = a (p+1)/4 mod p (giải thuật 2.143) (r sẽ là 1 số nguyên). 2. Trả lại (r, -r). 8. Giải thuật 3.37 Tìm căn bậc 2 modulo số nguyên tố p của số a trường hợp p ≡ 5 mod 8. Input: 1 số nguyên tố lẻ p thoả p ≡ 5 mod 8 và 1 số nguyên a ∈ Q p . Output: 2 căn bậc 2 của a modulo p. 1. Tính d = a (p-1)/4 mod p (giải thuật 2.143) (r sẽ là 1 số nguyên). 2. Nếu d = 1 thì tính r = a (p+3)/8 mod p. 3. Nếu d = p-1 thì tính r = 2a(4a) (p-5)/8 mod p. 4. Trả lại (r, -r). Giải thuật 3.36 và 3.37 có thời gian chạy là O((lg p) 3 ) thao tác bít. 9. Giải thuật 3.34 Page of 14 7 Tìm căn bậc 2 của số a theo modulo số nguyên tố p. Input: 1 số nguyên tố lẻ p và 1 số nguyên a thoả 1 ≤ a ≤ p-1. Output: 2 căn bậc 2 của a theo modulo p, với điều kiện a là số dư bậc 4 theo modulo p (a is a quadratic residue modulo p). 1. Tính giá trị Legendre (a/p) sử dụng giải thuật 2.149. Nếu (a/p) = -1 thì trở về và kết thúc (a không có căn bậc 2 theo modulo p). 2. Chọn 1 số nguyên b, 1 ≤ b ≤ p-1, ngẫu nhiên cho đến khi (b/p) = -1 (b là số không dư bậc 4 modulo p) (b is a quadratic non-residue modulo p). 3. Lặp lại phép chia cho 2, có p-1 = 2 s t, trong đó t là 1 số lẻ. 4. Tính a -1 mod p bằng thuật toán Euclidean mở rộng. 5. Đặt c = b t mod p và r = a (t+1)/2 mod p (giải thuật 2.143). 6. For i = 1 to s-1 do{ 6.1 Tính d = r 2 . a -1 ) t mod p, với t = 2 s-i-1 . 6.2 Nếu d ≡ -1 mod p thì đặt r = r . c mod p. 6.3 Đặt c = c 2 mod p. } 7. Trả lại (r, -r). Giải thuật 3.34 là 1 giải thuật ngẫu nhiên vì cách b là số không dư bậc 4 modulo p được tìm ở bước 2. Người ta chưa tìm được giải thuật đơn định trong thời gian đa thức nào để tìm b. Giải thuật 3.34 có thời gian chạy là O((lg p) 4 ) thao tác bít. Page of 14 8 II. Các điểm đặc trưng của hệ mã hoá Rabin 1. Tính an toàn của hệ mã hoá Rabin (i) Một người tấn công bị động cần phục hồi bản rõ m từ bản mã c. Đây chính là giải bài toán căn bậc 2 ở mục 3.5.2. Vấn đề phân tích ra thừa số số n và tính căn bậc 2 theo module n là tương đương về mặt tính toán.Vì vậy giả sử việc phân tích ra thừa số số n là khó về mặt tính toán thì lược đồ mã hoá công khai Rabin được chứng minh là an toàn đối với m ột người tấn công bị động. (ii) Trong khi được chứng minh là an toàn đối với một người tấn công bị động, lược đồ mã hoá công khai Rabin lại không chống nổi một cuộc tấn công bản mã lựa chọn (chosen-ciphertext) (xem Note 8.14(ii)). Một cuộc tấn công như vậy có thể mô tả như sau: người tấn công chọn 1 số nguyên m ∈ Z * n và tính c = m 2 mod n. Người tấn công sau đó đưa c đến máy giải mã của A, giải mã c và trả lại 1 bản rõ y nào đó. Vì A không biết m, và m được chọn ngẫu nhiên, bản rõ y không nhất thiết phải giống hệt m. Với khả năng ½, y ≢ ± m mod n, khi đó gcd(m-y, n) là một trong các thừa số của n. Nếu y ≡ ±m mod n, người tấn công lại lặp lại với một số m mới. (iii) Lược đồ mã hoá công khai Rabin dễ bị thương tổn bởi những cuộc tấn công tương tự như với các trường hợp của hệ mã hoá RSA mô tả ở mục 8.2.2(ii). Giống như hệ RSA, các cuộc tấn công (ii) và (iii) có thể bị thất bại bằng cách biến đổi (salting) bản rõ, trong khi các cuộc tấn công (v) có thể tránh được bằng cách thêm dư thừa dữ liệu trước khi mã hoá. 2. Sử dụng dư thừa dữ liệu (i) Một nhược điểm của hệ mã hoá công khai Rabin là người nhận phải có nhiệm vụ chọn bản rõ đúng từ 4 khả năng. Sự nhầm lẫn trong việc giải mã có thể vượt qua một cách dễ dàng bằng cách thêm dư thừa dữ liệu vào bản rõ gốc một cách xác định trước khi mã hoá. (ví dụ: 64 bit cuối cùng của thông điệp có thể được lặp lại). Với khả năng cao, ch ỉ 1 trong 4 căn bậc 2 của bản mã c là m1, m2, m3, m4 có được dư thừa đó. Người giải mã sẽ chọn bản này làm bản rõ. Nếu không có căn bậc 2 nào của c có dư thừa này, người nhận sẽ từ chối c, vì nó là giả mạo. (ii) Nếu sử dụng dư thừa dữ liệu như trên, lược đồ Rabin sẽ không còn dễ bị thương tổn bởi các cuộc tấn công bản mã lựa ch ọn như nói ở trên. Nếu người tấn công chọn 1 thông điệp m có dư thừa dữ liệu như yêu cầu và đưa c = m 2 mod n vào máy giải mã của A, khả năng rất cao là máy sẽ trả lại bản rõ m cho người tấn công (vì 3 căn bậc 2 của c kia sẽ có khả năng rất cao là không chứa dư thừa dữ liệu như yêu cầu), không đưa ra thông tin mới nào. Mặt khác, nếu người tấn công chọn một thông điệp m mà không có dư thừa dữ liệu cần thiết, khả năng cao là cả bốn căn bậc 2 của c mod n đều không có dư Page of 14 9 thừa dữ liệu cần thiết. Trường hợp này máy giải mã sẽ thất bại việc giải mã c và không trả lời người tấn công. Chú ý rằng việc chứng minh tính tương đương của việc phá khoá lược đồ cải tiến này bởi một người tấn công thụ động với việc phân tích ra thừa số không còn giá trị nữa. Tuy nhiên, nếu giả sử rằng việc giải mã Rabin gồm hai giai đ oạn, giai đoạn thứ nhất là tìm bốn căn bậc 2 của c mod n, và giai đoạn thứ hai là lựa chọn căn bậc 2 làm bản rõ thì vẫn chứng minh được tính tương đương. Vì vậy lược đồ mã hoá khoá công khai Rabin, được sửa đổi một cách thích hợp bằng cách thêm dư thừa dữ liệu, là rất được quan tâm ứng dụng. 3. Tính hiệu quả Việc mã hoá Rabin là cực kỳ nhanh vì nó chỉ liên quan đến việc tính một bình phương theo module duy nhất. Để so sánh, mã hoá của hệ RSA với e = 3 cần một phép nhân module và một phép bình phương module. Giải mã Rabin chậm hơn mã hoá, nhưng có thể sánh được với tốc độ giải mã của hệ RSA. [...]... = 102941, khoá bí mật của A là (p = 331, q = 311) 2 Mã hoá: Giả sử 6 bít cuối cùng của thông điệp ban đầu cần phải được lặp lại trước khi mã hoá Để mã hoá thông điệp 10 bit m = 633 (10) = 1001111001 (2), B lặp lại 6 bit cuối cùng của m để nhận được thông điệp 16 bit m Theo hệ 10 thì m B sau đó tính: = 1001111001111001 = 40569 c = m2 mod n = 405692 mod 102941 = 23053 và gửi c cho A 3 Giải mã: 1 Dùng... yêu cầu, A giải mã c thành m3 (bỏ 6 bit lặp cuối cùng) và phục hồi bản rõ ban đầu là m = 1001111001(2) = 633 (10) IV Chương trình Page 11of 14 Page 12of 14 Tài liệu tham khảo 1 GS.TS Phan Đình Diệu: Lý thuyết mật mã & An toàn thông tin - Đại học Công nghệ - Đại học quốc gia Hà Nội 2 PGS.TS Trịnh Nhật Tiến: Các bài giảng về An toàn và bảo mật dữ liệu - Lớp Cao học K10T3 - Đại học Công nghệ - Đại học quốc... điệp 16 bit m Theo hệ 10 thì m B sau đó tính: = 1001111001111001 = 40569 c = m2 mod n = 405692 mod 102941 = 23053 và gửi c cho A 3 Giải mã: 1 Dùng thuật toán Euclide mở rộng tìm 2 số nguyên a và b thoả mãn: ap + bq = 1 Tìm được a = 140, b = -149 = c(p+1)/4 mod p = 23053 (331+1)/4 mod 331 = 144 (q+1)/4 Tính s = c mod q = 23053 (311+1)/4 mod 311 = 139 Tính x = (aps + bqr) mod n 2 Tính r 3 4 x = (140*331*139 . Khoá công khai của A là n, khoá bí mật của A là (p, q). Page of 14 3 B. Giải thuật mã hoá công khai Rabin: Tóm tắt: B mã hoá 1 thông điệp m gửi cho A, dùng khoá công khai của A để mã hoá, . of 14 8 II. Các điểm đặc trưng của hệ mã hoá Rabin 1. Tính an toàn của hệ mã hoá Rabin (i) Một người tấn công bị động cần phục hồi bản rõ m từ bản mã c. Đây chính là giải bài toán căn. nhất. Để so sánh, mã hoá của hệ RSA với e = 3 cần một phép nhân module và một phép bình phương module. Giải mã Rabin chậm hơn mã hoá, nhưng có thể sánh được với tốc độ giải mã của hệ RSA. Page