1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

11 414 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Một số công cụ hỗ trợ cho thuyết mật mã
Chuyên ngành Toán học
Thể loại Giáo trình
Định dạng
Số trang 11
Dung lượng 67,79 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

a.Thuật giải Euclid- Tìm UCLN của hai số nguyênGiải thuật Euclid hay thuật toá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ả.. Bởi vì bài

Trang 1

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 là số nguyên dương Hai số nguyên và được gọi là đồng

dư với nhau theo module m nếu hiệu a

Ký hiệu a  b(mod m) được gọi là một đồng dư thức Nếu không chia hết cho , ta viết

Ví dụ 3  -1 (mod 4))

5  17 (mod 6))

18  0 (mod 6))

Điều kiện a  0(mod m) nghĩa là a

b Tính chất và các hệ quả

Tính chất 1:

Với mọ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 3

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

vì a – c = (a – b) + (b – c )  m | (a - c

Tính chất 4

Chứng minh:

Trang 2

Tính chất 5

Chứng minh:

Theo tính chất 4) ta có:

Nhân từng vế hai ĐT ta có:

Nhận xét:

1, Nếu a  1(mod 2) và b ) và b  1(mod 2) và b ) thì a + b  2) và b (mod 2) và b ), và 2) và b  0 (mod 2) và b ) suy ra: a + b  0(mod 2) và b ), còn a.b  1(mod 2) và b )

Điều này có nghĩa : Tổng của hai số lẻ là một số chẵn; Tích của hai số lẻ là một số lẻ

2) và b ,Nếu a  3(mod 7)  a2) và b  9 (mod 7)  2) và b (mod 7)

Có nghĩa: Nếu một số chia cho 7 dư 3 thì bình phương số đó chia 7 dư 2) và b Các hệ quả của tính chất 4) và 5:

Chú ý:

1_Chia hai vế cho một đẳng thức, nói chung là không được

nhưng 2) và b nhưng ab có thể đồng dư với 0 theo module m Chẳng hạn : nhưng 2) và b 5=10  0(mod 10)

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

Trang 3

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

Giải thuật Euclid hay thuật toá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 Nguyên Nhà toá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) và b ) 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 nguyên (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 (nguyên) 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) và b ) Khai báo 5 biến trung gian x1, x2) và b , y1, y2) và b và q

(3) Đặt x2) và b = 1, x1 = 0, y2) và b = 0, y1 = 1

Trang 4

(4)) While b > 0 do

(4).1) q = [a/b], r = a – qb, x = x2) và b – qx1, y = y2) và b – qy1

(4).2) và b ) a = b, b = r, x2) và b = x1 , x1 = x, y2) và b = y1, y1 = y

(5) Đặt d = a, x = x2) và b , y = y2) và b và return (d,x,y)

Đánh giá độ phức tạp: Thuật toán Euclid mở rộng có độ phức tạp về thời gian là O((lg n)2) và b )

Ví dụ: Xét ví dụ với a=4)86)4) và b=34)58

q r x y a b x2) và b x1 y2) và b y1

2) và b 6)4)6) -2) và b 3 14)06) 6)4)6) 1 -2) và b -1 3 2) và b 114) 5 -7 6)4)6) 114) -2) và b 5 3 -7

5 76) -2) và b 7 38 114) 76) 5 -2) và b 7 -7 38

1 38 32) và b -4)5 76) 38 -2) và b 7 32) và b 38 -4)5 2) và b 0 -91 12) và b 8 38 0 32) và b -91 4)5 12) và b 8 Ứng dụng thuật toá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 luôn 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 toá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 toá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

Trang 5

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:

3 u1-q2) và b .u2) và b v1-q2) và b .v2) và b [v2) và b /v3]

K uk-2) và b -qk-1.uk-1 vk-2) và b -qk-1.vk-1 [vk-1/vk]

Bước 1:

1 u := 0;

2) và b v := n; (ví dụ: n=2) và b 3)

3 Chuyển đến bước 2) và b

Bước 2) và b :

1 u := 1;

2) và b 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) và b -qk-1.uk-1;

2) và b vk := vk-2) và b -qk-1.vk-1;

Trang 6

3 Nếu v k =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=2) và b 3 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 toá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) và b , … , mk Với mỗi bộ số nguyên bất kỳ a1, a2) và b , … , ak Hệ phương trình đồng dư:

Luôn có nghiệm duy nhất theo mođun M = m1.m2) và b mk là:

trong đó

M1 = M / m1, M2) và b = M / m2) và b , , Mk = M / mk

y1 = (M1) − 1(mod m1), y2) và b = (M2) và b ) − 1(mod m2) và b ), , 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ố

Trang 7

(1) Write n – 1 = 2) và b k m, where m is old

(2) và b ) 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) và b (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 = pi2) và b i(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 = pi2) và b i(i = 0, 1)

Output: y = xp mod m

(1) y = 1

(2) và b ) for i = 1 downto 0 do

y = y2) và b mod m

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

(3) return y

g Định lý Ferma

Trang 8

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)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 x N N

2) và b 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)n) = #MM

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) và b φ(∏ppi) = ∏p(pi – 1), trong đó pi là các số nguyên tố khác nhau;

3 φ(∏ppiki) = ∏p(pi∙(pi – 1)k

i), 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) và b số nguyên dương, nguyên tố cùng nhau: (a,n)=1.

Định lý Euler khẳng định: aφ(n) ≡ 1 (mod n), trong đó φ(n)n) là hàm Euler của n

Trang 9

3.2.Lý thuyết độ phức tạp

Một chương trình máy tính thường được cài đặt dựa trên một thuật toán đúng để giải quyết bài toán hay vấn đề Tuy nhiên, ngay cả khi thuật toán đúng, chương trình vẫn có thể không sử dụng được đối với một dữ liệu đầu vào nào đó vì thời gian để cho ra kết quả là quá lâu hoặc sử dụng quá nhiều bộ nhớ (vượt quá khả năng đáp ứng của máy tính)

Khi tiến hành phân tích thuật toán nghĩa là chúng ta tìm ra một đánh giá về thời

gian và "không gian" cần thiết để thực hiện thuật toán Không gian ở đây được hiểu

là các yêu cầu về bộ nhớ, thiết bị lưu trữ, của máy tính để thuật toán có thể làm việc Việc xem xét về không gian của thuật toán phụ thuộc phần lớn vào cách tổ chức dữ liệu của thuật toán Trong phần này, khi nói đến độ phức tạp của thuật toán, chúng ta chỉ đề cập đến những đánh giá về mặt thời gian mà thôi

Phân tích thuật toán là một công việc rất khó khăn, đòi hỏi phải có những hiểu biết sâu sắc về thuật toán và nhiều kiến thức toán học khác Ðây là công việc mà không phải bất cứ người nào cũng làm được Rất may mắn là các nhà toán học đã phân tích cho chúng ta độ phức tạp của hầu hết các thuật toán cơ sở (sắp xếp, tìm kiếm, các thuật toán số học, ) Chính vì vậy, nhiệm vụ còn lại của chúng ta là hiểu được các khái niệm liên quan đến độ phức tạp của thuật toán

Ðánh giá về thời gian của thuật toán không phải là xác định thời gian tuyệt đối

(chạy thuật toán mất bao nhiêu giây, bao nhiêu phút, ) để thực hiện thuật toán mà

là xác định mối liên quan giữa dữ liệu đầu vào (input) của thuật toán và chi phí (số

thao tác, số phép tính cộng,trừ, nhân, chia, rút căn, ) để thực hiện thuật toán Sở dĩ người ta không quan tâm đến thời gian tuyệt đối của thuật toán vì yếu tố này phụ thuộc vào tốc độ của máy tính, mà các máy tính khác nhau thì có tốc độ rất khác

nhau Một cách tổng quát, chi phí thực hiện thuật toán là một hàm số phụ thuộc vào dữ liệu đầu vào :

T = f(input)

Trang 10

Tuy vậy, khi phân tích thuật toán, người ta thường chỉ chú ý đến mối liên quan

giữa độ lớn của dữ liệu đầu vào và chi phí Trong các thuật toán, độ lớn của dữ liệu đầu vào thường được thể hiện bằng một con số nguyên n Chẳng hạn : sắp xếp

n con số nguyên, tìm con số lớn nhất trong n số, tính điểm trung bình của n học

sinh, Lúc này, người ta thể hiện chi phí thực hiện thuật toán bằng một hàm số

phụ thuộc vào n :

T = f(n) Việc xây dựng một hàm T tổng quát như trên trong mọi trường hợp của thuật toán là một việc rất khó khăn, nhiều lúc không thể thực hiện được Chính vì vậy

mà người ta chỉ xây dựng hàm T cho một số trường hợp đáng chú ý nhất của thuật

toán, thường là trường hợp tốt nhất và xấu nhất Để đánh giá trường hợp tốt nhất

và xấu nhất người ta dựa vào định nghĩa sau:

Cho hai hàm f và g có miền xác định trong tập số tự nhiên Ta viết

f(n) = O(g(n)) và nói f(n) có cấp cao nhất là g(n) khi tồn tại hằng số C và k sao cho

| f(n) | ≤ C.g(n) với mọi n > k

Tuy chi phí của thuật toán trong trường hợp tốt nhất và xấu nhất có thể nói lên nhiều điều nhưng vẫn chưa đưa ra được một hình dung tốt nhất về độ phức tạp của thuật toán Ðể có thể hình dung chính xác về độ phức tạp của thuật toán, ta xét đến

một yếu tố khác là độ tăng của chi phí khi độ lớn n của dữ liệu đầu vào tăng

Một cách tổng quát, nếu hàm chi phí của thuật toán (xét trong một trường hợp nào đó) bị chặn bởi O(f(n)) thì ta nói rằng thuật toán có độ phức tạp là O(f(n)) trong trường hợp đó

Như vậy, thuật toán tìm số lớn nhất có độ phức tạp trong trường hợp tốt nhất và xấu nhất đều là O(n) Người ta gọi các thuật toán có độ phức tạp O(n) là các thuật toán có độ phức tạp tuyến tính

Trang 11

Sau đây là một số "thước đo" độ phức tạp của thuật toán được sử dụng rộng rãi Các độ phức tạp được sắp xếp theo thứ tự tăng dần Nghĩa là một bài toán có độ phức tạp O(nk) sẽ phức tạp hơn bài toán có độ phức tạp O(n) hoặc O(logn)

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w