Một số công cụ hỗ trợ cho thuyết mật mã

11 412 0
Một số công cụ hỗ trợ cho thuyết mật mã

Đ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

Một số công cụ hỗ trợ cho thuyết mật mã 3.1.Lý thuyết số 3.1.1.Kiến thức đồng dư thức a Định nghĩa: Cho số nguyên dương Hai số nguyên dư với theo module m hiệu a Ký hiệu a ≡ b(mod m) gọi đồng dư thức Nếu , ta viết Ví dụ ≡ -1 (mod 4) ≡ 17 (mod 6) 18 ≡ (mod 6) Điều kiện a ≡ 0(mod m) nghĩa a b Tính chất hệ Tính chất 1: Với số nguyên , ta có: a ≡ a (mod m) Tính chất 2: a ≡ b (mod m) ⇔ b ≡ a (mod m) Tính chất a ≡ b (mod m), b ≡ c (mod m) ⇒ a ≡ c (mod m) Chứng minh: a ≡ b (mod m) ⇒ m | (a - b) b≡ c(mod m) ⇒ m | (b- c a – c = (a – b) + (b – c ) ⇒ m | (a - c Tính chất Chứng minh: gọi đồng không chia hết cho Tính chất Chứng minh: Theo tính chất ta có: Nhân vế hai ĐT ta có: Nhận xét: 1, Nếu a ≡ 1(mod 2) b ≡ 1(mod 2) a + b ≡ 2(mod 2), ≡ (mod 2) suy ra: a + b ≡ 0(mod 2), cịn a.b ≡ 1(mod 2) Điều có nghĩa : Tổng hai số lẻ số chẵn; Tích hai số lẻ số lẻ 2,Nếu a ≡ 3(mod 7) ⇒ a2 ≡ (mod 7) ≡ 2(mod 7) Có nghĩa: Nếu số chia cho dư bình phương số chia dư Các hệ tính chất 5: Chú ý: 1_Chia , với hai vế cho đẳng thức, nói chung khơng hạn : ab đồng dư với theo module m Chẳng 2.5=10 ≡ 0(mod 10) 3.1.2.Một số định lý sử dụng thuật mã hóa cơng khai a.Thuật giải Euclid- Tìm UCLN hai số nguyên Giải thuật Euclid hay thuật toán Euclid, giải thuật giúp tính ước số chung lớn (ƯSCLN) hai số cách hiệu Giải thuật biết đến từ khoảng năm 300 trước Công Nguyên Nhà toán học Hy Lạp cổ Euclid viết giải thuật sách toán tiếng Elements Giả sử a = bq + r, với a, b, q, r số nguyên, ta có: Giải thuật Input: hai số nguyên không âm a b, b>0 Output: UCLN a, b (1) While b ≠ r= a mod b, a= b, b=r (2) Return (a) b.Giải thuật Euclid mở rộng Giải thuật Euclid mở rộng sử dụng để giải phương trình vơ định ngun (cịn gọi phương trình Đi-ơ-phăng) a*x+b*y=c, a, b,c hệ số nguyên, x, y ẩn nhận giá trị nguyên Điều kiện cần đủ để phương trình có nghiệm (ngun) UCLN(a,b) ước c Khẳng định dựa mệnh đề sau: Trong số học biết d=UCLN(a,b) tồn số nguyên x, y cho a*x+b*y = d Giải thuật Input: hai số nguyên không âm a b , a>b Output: d= UCLN(a,b) số nguyên x y thỏa mãn ax + by = d (1) Nếu b = đặt d =a, y = 0, return (d,x,y) (2) Khai báo biến trung gian x1, x2, y1, y2 q (3) Đặt x2 = 1, x1 = 0, y2 = 0, y1 = (4) While b > (4.1) q = [a/b], r = a – qb, x = x2 – qx1, y = y2 – qy1 (4.2) a = b, b = r, x2 = x1 , x1 = x, y2 = y1, y1 = y (5) Đặt d = a, x = x2, y = y2 return (d,x,y) Đánh giá độ phức tạp: Thuật tốn Euclid mở rộng có độ phức tạp thời gian O((lg n)2) Ví dụ: Xét ví dụ với a=4864 b=3458 q — 2 r — 1406 646 114 76 38 x — -2 -27 32 -91 y — -1 -7 38 -45 128 a 4864 3458 1406 646 114 76 38 b 3458 1406 646 114 76 38 x2 1 -2 -27 32 x1 -2 -27 32 -91 Ứng dụng thuật tốn Euclid mở rộng để tìm phẩn tử nghịch đảo y2 -1 -7 38 45 y1 -1 -7 38 -45 128 Thuật toán Euclid mở rộng sử dụng thường xuyên mật mã với khóa cơng khai để tìm phần tử nghịch đảo Xét trường hợp riêng vận dụng thuật toán Euclid mở rộng: Cho hai số nguyên dương nguyên tố a, n: n>a, (a,n)=1 Cần tìm số nguyên dương b nhỏ cho ab ≡ (mod n) Số b gọi "nghịch đảo" a theo module n (và ngược lại, a "nghịch đảo" b theo module n) Áp dụng thuật toán Euclid mở rộng cho cặp số (n,a) ta tìm số (d,x,y) thỏa mãn d=(n,a) nx+ay=d Bởi a n nguyên tố nên d=1 nx+ay=1 Vì nx ln chia hết cho n nên từ đẳng thức cuối ta suy ay ≡ (mod n) Đối chiếu với yêu cầu tốn, ta có b = y + zn Trong z số nguyên nhỏ thõa mãn b > Dạng rút gọn thuật toán Euclid mở rộng Bởi tóan tìm "phần tử nghịch đảo" trường hợp riêng thuật toán Euclid mở rộng, lại dùng thường xuyên mật mã với khóa cơng khai nên người ta xây dựng thuật toán đơn giản để giải toán Thuật toán thể bảng đây: I K ? I ui u1-q2.u2 uk-2-qk-1.uk-1 y ui -4 -9 vi n a v1-q2.v2 vk-2-qk-1.vk-1 vi 23 qi [n/a] [v2/v3] [vk-1/vk] qi 1 Bước 1: u := 0; v := n; (ví dụ: n=23) Chuyển đến bước Bước 2: u := 1; v := a; (ví dụ: a=5) Nếu v=1 chuyển đến bước q = n/a Chuyển đến bước Bước 3: uk := uk-2-qk-1.uk-1; vk := vk-2-qk-1.vk-1; Nếu vk=1 chuyển đến bước qk := [vk-1/vk]; Chuyển đến bước Bước 4: Trở lại bước Bước 5: Đến ta thu giá trị v = y Số b cần tìm xác định b = y + zn Trong đó, z số nguyên nhỏ thỏa mãn b > Ở ví dụ đây, n=23 a=5 ta tìm y = -9 nên b = 14 (với z=1) c.Định lý phần dư Trung Hoa Định lý phần dư Trung Hoa, hay tốn Hàn Tín điểm binh, định lý nói nghiệm hệ phương trình đồng dư bậc Nội dung Cho tập số nguyên tố đôi :m 1, m2, … , mk Với số nguyên a1, a2, … , ak Hệ phương trình đồng dư: Ln có nghiệm theo mođun M = m1.m2 mk là: M1 = M / m1, M2 = M / m2, , Mk = M / mk y1 = (M1) − 1(mod m1), y2 = (M2) − 1(mod m2), , yk = (Mk) − 1(mod mk) d.Thuật giải Rabin – Miller (1980) Cho n ≥ lẻ, thuật toán sau xác định n hợp số in thông bao sn số nguyên tố (1) Write n – = 2k m, where m is old (2) Chose a random integer, ≤ a ≤ n – (3) Compute b = am mod n (4) If b=1 (mod n) then anwer “n is prime” and quit (5) For i =0 to k – If b = -1 (mod n) then anwer “n is prime” and quit else b = b2 (mod n) (6) Anwser “n is composite” f Thuật giải tính xp mod m Cho x ∈ Zm số nguyên p ∈ N* có biểu diễn nhị phân p = Σpi2i(i = 0, 1) Việc tính giá trị y = xp mod m gọi phép lũy thừa mod Input: x ∈ Zm, p = Σpi2i(i = 0, 1) Output: y = xp mod m (1) y = (2) for i = downto y = y2 mod m if pi = then y = (y*x) mod m (3) return y g Định lý Ferma Nếu p số ngun tố cịn a số ngun ap ≡ a(mod p) Nếu p không chia hết cho a (tức a(mod p) ≠ 0) a p-1 ≡ 1(mod p)(định lý Ferma nhỏ ) Dễ nhận thấy định lý Fermat nhỏ trường hợp riêng định lý Euler n số nguyên tố h Định lý Euler Định nghĩa hàm Euler: Cho n số nguyên dương Hàm Euler n ký hiệu φ(n) xác định công suất tập hợp M số nguyên dương nhỏ n ngun tố với n Giải thích: • Cho trước số nguyên dương n • Xác định tập hợp M (dối với số n cho): số x thuộc tập hợp M thõa mãn điều kiện sau: x  N < x < n (x,n) = • Hàm Euler n có giá trị số phần tử tập hợp M: φ(n) = #M Quy tắc tính giá trị hàm Euler: φ(p) = p – 1, p số nguyên tố; φ(∏pi) = ∏(pi – 1), pi số nguyên tố khác nhau; φ(∏piki) = ∏(pi∙(pi – 1)ki), pi số nguyên tố khác nhau; φ(m∙n) = φ(m)∙φ(n), (m,n)=1 Định lý Euler:Cho a n số nguyên dương, nguyên tố nhau: (a,n)=1 Định lý Euler khẳng định: aφ(n) ≡ (mod n), φ(n) hàm Euler n 3.2.Lý thuyết độ phức tạp Một chương trình máy tính thường cài đặt dựa thuật toán để giải toán hay vấn đề Tuy nhiên, thuật tốn đúng, chương trình không sử dụng liệu đầu vào thời gian kết lâu sử dụng nhiều nhớ (vượt khả đáp ứng máy tính) Khi tiến hành phân tích thuật tốn nghĩa tìm đánh giá thời gian "khơng gian" cần thiết để thực thuật tốn Khơng gian hiểu yêu cầu nhớ, thiết bị lưu trữ, máy tính để thuật tốn làm việc Việc xem xét khơng gian thuật tốn phụ thuộc phần lớn vào cách tổ chức liệu thuật toán Trong phần này, nói đến độ phức tạp thuật toán, đề cập đến đánh giá mặt thời gian mà thơi Phân tích thuật tốn cơng việc khó khăn, địi hỏi phải có hiểu biết sâu sắc thuật tốn nhiều kiến thức tốn học khác Ðây cơng việc mà người làm Rất may mắn nhà toán học phân tích cho độ phức tạp hầu hết thuật tốn sở (sắp xếp, tìm kiếm, thuật tốn số học, ) Chính vậy, nhiệm vụ lại hiểu khái niệm liên quan đến độ phức tạp thuật toán Ðánh giá thời gian thuật tốn khơng phải xác định thời gian tuyệt đối (chạy thuật toán giây, phút, ) để thực thuật toán mà xác định mối liên quan liệu đầu vào (input) thuật toán chi phí (số thao tác, số phép tính cộng,trừ, nhân, chia, rút căn, ) để thực thuật toán Sở dĩ người ta không quan tâm đến thời gian tuyệt đối thuật tốn yếu tố phụ thuộc vào tốc độ máy tính, mà máy tính khác có tốc độ khác Một cách tổng qt, chi phí thực thuật tốn hàm số phụ thuộc vào liệu đầu vào : T = f(input) Tuy vậy, phân tích thuật toán, người ta thường ý đến mối liên quan độ lớn liệu đầu vào chi phí Trong thuật tốn, độ lớn liệu đầu vào thường thể số nguyên n Chẳng hạn : xếp n số nguyên, tìm số lớn n số, tính điểm trung bình n học sinh, Lúc này, người ta thể chi phí thực thuật toán hàm số phụ thuộc vào n : T = f(n) Việc xây dựng hàm T tổng quát trường hợp thuật toán việc khó khăn, nhiều lúc khơng thể thực Chính mà người ta xây dựng hàm T cho số trường hợp đáng ý thuật toán, thường trường hợp tốt xấu Để đánh giá trường hợp tốt xấu người ta dựa vào định nghĩa sau: Cho hai hàm f g có miền xác định tập số tự nhiên Ta viết f(n) = O(g(n)) nói f(n) có cấp cao g(n) tồn số C k cho | f(n) | ≤ C.g(n) với n > k Tuy chi phí thuật tốn trường hợp tốt xấu nói lên nhiều điều chưa đưa hình dung tốt độ phức tạp thuật toán Ðể hình dung xác độ phức tạp thuật toán, ta xét đến yếu tố khác độ tăng chi phí độ lớn n liệu đầu vào tăng Một cách tổng qt, hàm chi phí thuật tốn (xét trường hợp đó) bị chặn O(f(n)) ta nói thuật tốn có độ phức tạp O(f(n)) trường hợp Như vậy, thuật tốn tìm số lớn có độ phức tạp trường hợp tốt xấu O(n) Người ta gọi thuật tốn có độ phức tạp O(n) thuật tốn có độ phức tạp tuyến tính Sau số "thước đo" độ phức tạp thuật toán sử dụng rộng rãi Các độ phức tạp xếp theo thứ tự tăng dần Nghĩa tốn có độ phức tạp O(nk) phức tạp tốn có độ phức tạp O(n) O(logn) ... Tổng hai số lẻ số chẵn; Tích hai số lẻ số lẻ 2,Nếu a ≡ 3(mod 7) ⇒ a2 ≡ (mod 7) ≡ 2(mod 7) Có nghĩa: Nếu số chia cho dư bình phương số chia dư Các hệ tính chất 5: Chú ý: 1_Chia , với hai vế cho đẳng... Euler: Cho n số nguyên dương Hàm Euler n ký hiệu φ(n) xác định công suất tập hợp M số nguyên dương nhỏ n ngun tố với n Giải thích: • Cho trước số nguyên dương n • Xác định tập hợp M (dối với số n cho) :... dương b nhỏ cho ab ≡ (mod n) Số b gọi "nghịch đảo" a theo module n (và ngược lại, a "nghịch đảo" b theo module n) Áp dụng thuật toán Euclid mở rộng cho cặp số (n,a) ta tìm số (d,x,y) thỏa mãn d=(n,a)

Ngày đăng: 07/10/2013, 00:20

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan