.Một số định lý sử dụng trong thuật mã hóa cơng khai

Một phần của tài liệu đồ án tốt nghiệp tim hiểu mật ma học va ứng dụng trong xac thực chữ ký điện tử (Trang 38 - 44)

3.1 .Lý thuyết số

3.1.2 .Một số định lý sử dụng trong thuật mã hóa cơng khai

a.Thuật giải Euclid- Tìm UCLN của hai số nguyên

Giải thuật Euclid hay thuật tốn Euclid, là một giải thuật giúp tính ước số chung lớn nhất (ƯSCLN) của hai số một cách hiệu quả. Giải thuật này đã được biết đến từ khoảng năm 300 trước Cơng Ngun. Nhà tốn học Hy Lạp cổ Euclid đã viết giải thuật này trong cuốn sách toán nổi tiếng Elements.

Giả sử a = bq + r, với a, b, q, r là các số nguyên, ta có:

Giải thuật

Input: hai số nguyên không âm a và b, b>0 Output: UCLN của a, b.

(1) While b ≠ 0 do

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 được gọi là phương trình Đi-ơ-phăng)

a*x+b*y=c,

trong đó a, b,c là các hệ số nguyên, x, y là các ẩn nhận giá trị nguyên. Điều kiện

cần và đủ để phương trình này có nghiệm (ngun) là UCLN(a,b) là ước của c.

Khẳng định này dựa trên một mệnh đề sau:

Trong số học đã biết rằng nếu d=UCLN(a,b) thì tồn tại các số nguyên x, y

sao cho

a*x+b*y = d Giải thuật

Input: hai số nguyên không âm a và b , a>b

Output: d= UCLN(a,b) và các số nguyên x và y thỏa mãn ax + by = d (1) Nếu b = 0 thì đặt d =a, y = 0, và return (d,x,y)

(2) Khai báo 5 biến trung gian x1, x2, y1, y2 và q (3) Đặt x2 = 1, x1 = 0, y2 = 0, y1 = 1

(4) While b > 0 do

(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 và return (d,x,y).

Đánh giá độ phức tạp: Thuật tốn Euclid mở rộng có độ phức tạp về thời gian là O((lg n)2). Ví dụ: Xét ví dụ với a=4864 và b=3458. q r x y a b x2 x1 y2 y1 — — — — 4864 3458 1 0 0 1 1 1406 1 -1 3458 1406 0 1 1 -1 2 646 -2 3 1406 646 1 -2 -1 3 2 114 5 -7 646 114 -2 5 3 -7 5 76 -27 38 114 76 5 -27 -7 38 1 38 32 -45 76 38 -27 32 38 -45 2 0 -91 128 38 0 32 -91 45 128

Ứng dụng thuật tốn Euclid mở rộng để tìm phẩn tử nghịch đảo

Thuật toán Euclid mở rộng được sử dụng rất thường xuyên trong mật mã với khóa cơng khai để tìm phần tử nghịch đảo. Xét một trường hợp riêng khi vận dụng thuật toán Euclid mở rộng:

Cho hai số nguyên dương nguyên tố cùng nhau a, n: n>a, (a,n)=1. Cần tìm số nguyên dương b nhỏ nhất sao cho ab ≡ 1 (mod n). Số b như thế được gọi là "nghịch đảo" của a theo module n (và ngược lại, a là "nghịch đảo" của b theo

module n).

Áp dụng thuật toán Euclid mở rộng cho cặp số (n,a) ta tìm được bộ 3 số (d,x,y) thỏa mãn d=(n,a) và nx+ay=d. Bởi vì a và n nguyên tố cùng nhau nên d=1 và nx+ay=1. Vì nx ln chia hết cho n nên từ đẳng thức cuối cùng ta suy ra được ay ≡ 1 (mod n).

Đối chiếu với yêu cầu của bài tốn, ta có b = y + zn. Trong đó z là số

nguyên nhỏ nhất thõa mãn b > 0. Dạng rút gọn của thuật tốn Euclid mở rộng. Bởi vì bài tóan tìm "phần tử nghịch đảo" là trường hợp riêng của thuật toán Euclid mở rộng, lại được dùng rất thường xuyên trong 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 hơn để giải bài toán này. Thuật toán được thể hiện ở bảng dưới đây:

I ui vi qi 1 0 n 2 1 a [n/a] 3 u1-q2.u2 v1-q2.v2 [v2/v3] ... ... ... ... K uk-2-qk-1.uk-1 vk-2-qk-1.vk-1 [vk-1/vk] ... ... ... ... ? y 1 I ui vi qi 1 0 23 2 1 5 4 3 -4 3 1 4 5 2 1 5 -9 1 Bước 1: 1. u := 0; 2. v := n; (ví dụ: n=23) 3. Chuyển đến bước 2 Bước 2: 1. u := 1; 2. v := a; (ví dụ: a=5)

3. Nếu v=1 thì chuyển đến bước 5. 4. q = n/a

5. Chuyển đến bước 3 Bước 3:

1. uk := uk-2-qk-1.uk-1; 2. vk := vk-2-qk-1.vk-1;

3. Nếu vk=1 thì chuyển đến bước 5. 4. qk := [vk-1/vk];

5. Chuyển đến bước 4 Bước 4: Trở lại bước 3.

Bước 5: Đến đây ta thu được giá trị v = y. Số b cần tìm được xác định bởi b = y + zn. Trong đó, z là số nguyên nhỏ nhất thỏa mãn b > 0. Ở ví dụ trên đây, đối với n=23 và a=5 ta tìm được 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 bài tốn Hàn Tín điểm binh, là một định lý nói về nghiệm của hệ phương trình đồng dư bậc nhất.

Nội dung

Cho tập các số nguyên tố cùng nhau từng đôi một :m1, m2, … , mk. Với mỗi bộ số nguyên bất kỳ a1, a2, … , ak. Hệ phương trình đồng dư:

Ln có nghiệm duy nhất theo mođun M = m1.m2...mk là:

trong đó

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 ≥ 3 lẻ, thuật toán sau đây xác định rằng n là một hợp số hoặc in ra thông bao sn là số nguyên tố

(1) Write n – 1 = 2k m, where m is old (2) Chose a random integer, 1 ≤ a ≤ n – 1 (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 – 1 do

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 và một 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 được gọi là phép lũy thừa mod Input: x  Zm, p = pi2i(i = 0, 1)

Output: y = xp mod m (1) y = 1

(2) for i = 1 downto 0 do y = y2 mod m

if pi = 1 then y = (y*x) mod m (3) return y

Nếu p là một số nguyên tố còn a là một số nguyên thì ap  a(mod p).

Nếu p không chia hết cho a (tức là a(mod p) ≠ 0) thì ap-1  1(mod p)(định lý Ferma nhỏ )

Dễ nhận thấy rằng định lý Fermat nhỏ là trường hợp riêng của định lý Euler khi n là số nguyên tố.

h. Định lý Euler

Định nghĩa hàm Euler: Cho n là một số nguyên dương. Hàm Euler của n được ký hiệu là φ(n) và được xác định bởi công suất của tập hợp M các số nguyên dương nhỏ hơn n và nguyên tố cùng nhau 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 khi và chỉ khi thõa mãn các điều kiện sau:

1.

2. 0 < x < n 3. (x,n) = 1

 Hàm Euler của n có giá trị bằng số phần tử của tập hợp M: φ(n) = #M Quy tắc tính giá trị của hàm Euler:

1. φ(p) = p – 1, nếu p là số nguyên tố;

2. φ(∏pi) = ∏(pi – 1), trong đó pi là các số nguyên tố khác nhau;

3. φ(∏piki) = ∏(pi∙(pi – 1)ki), trong đó pi là các số nguyên tố khác nhau; 4. φ(m∙n) = φ(m)∙φ(n), nếu (m,n)=1.

Định lý Euler:Cho a và n là 2 số nguyên dương, nguyên tố cùng nhau: (a,n)=1.

Một phần của tài liệu đồ án tốt nghiệp tim hiểu mật ma học va ứng dụng trong xac thực chữ ký điện tử (Trang 38 - 44)

Tải bản đầy đủ (PDF)

(89 trang)