Chương 1-3CƠ SỞ TOÁN HỌC Đồng dư và số học modulo Thuật toán lũy thừa nhanh Thuật toán Euclid tìm số nghịch đảo Thuật toán Miller-Rabin kiểm tra số nguyên tố... Đồng dư và số học
Trang 1Chương 1-3
CƠ SỞ TOÁN HỌC
Đồng dư và số học modulo
Thuật toán lũy thừa nhanh
Thuật toán Euclid tìm số nghịch đảo
Thuật toán Miller-Rabin kiểm tra số nguyên tố
Trang 2Đồng dư và số học modulo
• Các số nguyên tố và các vấn đề về số nguyên tố có một vai tròquan trọng trong số học và trong ứng dụng vào lý thuyết mật mã(ta sẽ xét riêng về số nguyên tố trong một mục sau)
• Định lý 1.1. Nếu b>0 và b|a thì gcd(a, b) = b Nếu a = bq + r thì gcd( a,b ) = gcd( b,r ).
• Một số nguyên m được gọi là bội số chung của a và b nếu
a| m và b| m Số m được gọi là bội số chung bé nhất của a
và b, và được ký hiệu là lcm(a, b), nếu m > 0, m là bội số
chung của a và b, và mọi bội số chung của a và b đều là bội của m Thí dụ lcm(14,21) = 42.
• Với hai số nguyên dương a và b bất kỳ ta có quan hệ lcm(a,b).gcd( a,b) = a.b.
Trang 3Đồng dư và số học modulo
• Cho n là một số nguyên dương Ta nói hai số nguyên a và b là đồng dư với nhau theo modunlo
n, và viết a b (mod n) hay a n b , nếu n|(a-b) (tức
là a-b chia hết cho n) Điều này có nghĩa là “khi chia a
và b cho n ta được cùng một số dư như nhau”.
• Thí dụ:
23 8 (mod 5), vì 23 - 8 = 5x3;
-19 9 (mod 7), vì -19 - 9 = - 4x7.
Trang 4Đồng dư và số học modulo
• Quan hệ đồng dư (theo một modunlo n) trên tập hợp các số
nguyên có các tính chất phản xạ, đối xứng và bắc cầu, tức là mộtquan hệ tương đương, do đó nó tạo ra một phân hoạch trên tập
hợp tất cả các số nguyên Z thành ra các lớp tương đương: hai
số nguyên thuộc cùng một lớp tương đương khi và chỉ khi chúngcho cùng một số dư nếu chia cho n Mỗi lớp tương đương như
vậy được đại diện bởi một số duy nhất trong tập hợp Z n = {0, 1,
2, 3, , n -1}, là số dư chung khi chia các số trong lớp đó cho n.
Vì vậy, ta có thể đồng nhất Z n với tập hợp tất cả các lớp tương
đương các số nguyên theo mod n; trên tập đó ta có thể xác định các phép tính cộng, trừ và nhân theo mod n
• Thí dụ: Z 25 = {0, 1, 2, , 24} Trong Z 25 ta có:
15 + 14 4, vì 15 + 14 = 29 4 (mod 25)
Trang 5Đồng dư và số học modulo
• Cho a Z n Một số nguyên x Z n được gọi là nghịch đảo
của a theo mod n, nếu a.x 1 (mod n) Nếu có số x như vậy thì ta nói a là khả nghịch, và ký hiệu x là a -1 mod n.
Thí dụ: 22-1 (mod 25) = 8, vì 22.8 = 176 1 (mod25)
• Từ định nghĩa ta có thể suy ra rằng a là khả nghịch theo mod
n khi và chỉ khi gcd( a, n ) = 1, tức là khi a và n nguyên tố với
nhau
• Ta định nghĩa phép chia trong Z n như sau: a : b (mod n ) =
a.b -1 mod n Phép chia chỉ thực hiện được khi b là khả nghịch theo mod n.
Trang 6Tính toán trên số nguyên lớn
• Tính toán với số học modunlo n ta có thể rút gọn ở các kết quả trung gian theo mod n vẫn nhận được cùng đáp số như khi tínhtoán trong số học thông thường
• Định lý 1.2: Nguyên lý số học modunlo
Cho a1, a2, là các số nguyên, op = {+, - , * } Khi đó ta có:
(a1 op a2) mod n = [ (a1 mod n ) op (a2 mod n)] mod n
• Chú ý: Nguyên lý số học modunlo cũng áp dụng được chophép toán dạng ek
• Thí dụ: Tính biểu thức 35 mod 7
35 mod 7 = ((((32 mod 7)2 mod 7)).3) mod 7
= ((22 mod 7).3) mod 7 = 12 mod 7 = 5
Trang 7Tính toán trên số nguyên lớn
• Bằng cách áp dụng nguyên lý số học modunlo n thì các kết
quả tính toán (cuối cùng cũng như trung gian) đều có giá trị nằmtrong [0, n-1], điều này tránh được việc sinh ra các kết quả trunggian là những con số lớn khổng lồ
• Như vậy, nếu cần k bít nhớ để lưu trữ số nguyên n thì chỉ cầnthiết kế kiểu số nguyên có 2k bít là có thể thực hiện tất cả cácphép toán trên tập số Zn
• Vì có một số thuật toán mã hoá sau này dựa trên cơ sở phéptính hàm mod n nên trong mục này sẽ trình bày thuật toán tínhluỹ thừa nhanh theo mod n (dùng bình phương liên tiếp và nhân)
Trang 8Thuật toán tính luỹ thừa theo mod n
/* INPUT: các số nguyên a, z, n;
OUTPUT: giá trị biểu thức az mod n;*/
Function fastexp(a, z, n)Var s, a1, z1;
Begin
s := 1; a1 := a; z1 := z;
While (z1<>0) doBegin
Trang 9Thuật toán tính luỹ thừa theo mod n
Trang 10Tính nghịch đảo
• Như đã trình bày ở mục 1.4.1, số a là khả đảo theo mod n khi và chỉ khi gcd(a,n) = 1.
• Vấn đề đặt ra là: giả sử a khả đảo, hãy tìm a-1? (tức
là tìm số x thuộc [1, n-1] sao cho a*x mod n =1)
• Đơn giản nhất là ta duyệt tất cả các số thuộc [1, n-1] ta sẽ tìm được một số x thoả mãn a*x mod n =1, và khi đó x chính là a-1, với cách này thì
số lần duyệt sẽ là n-1 Tuy nhiên, khi n lớn (cỡ 10100) thì số lần duyệt sẽ là một con số đáng nể mà với khả năng của các máy tính điện tử hiện nay cũng không thể thực hiện được Mục này sẽ giới thiệu thuật toán Euclide mở rộng để tìm phần tử nghịch đảo
Trang 11Thuật toán Euclide MR tìm nghịch đảo
/* INPUT: các số nguyên a, n với gcd(a,n)=1;
Trang 12Thuật toán Euclide MR tìm nghịch đảo
Trang 13Thuật toán Miller-Rabin
kiểm tra số nguyên tố
Để kiểm tra xem một số p có phải là số nguyên tố
p có chia hết cho 2 và p chia hết cho các số lẻ từ 3
số trên thì p là số nguyên tố, ngược lại chỉ cần p
phải là số nguyên tố Tuy nhiên nếu p là số
nguyên tố lớn thì việc kiểm tra các số như vậy không hiệu quả về mặt thời gian.
Trang 14Thuật toán Miller-Rabin
TT Miller-Rabin kiểm tra số nguyên tố p
TEST(p) {
Tìm k, q với k> 0, q lẻ thỏa mãn 𝑝 = 2𝑘𝑞 + 1; Chọn số ngẫu nhiên a trong khoảng [2, p - 1] ;
If (aq mod p ==1)
return “p có thể là số nguyên tố”;
For (j= 0; j<k; j++)
If ( 𝑎2𝑗𝑞 mod p == p-1) return “p có thể là số nguyên tố”;
return “p không phải là số nguyên tố”;
}
Trang 15Thuật toán Miller-Rabin
Người ta đã tính được xác suất để trong trường hợp p là hợp số, thuật toán MillerRabin đưa ra khẳng định “không phải là số nguyên tố” là 75% Trong 25% còn lại, Miller-Rabin không xác định được p nguyên tố hay hợp số Do đó nếu chúng ta áp dụng thuật toán t lần (mỗi lần với các giá trị a khác nhau) thì xác suất không xác định (trong cả t lần) là (0.25)t.
Trang 16Thuật toán Miller-Rabin
Ví dụ 3: Kiểm tra tính nguyên tố của số p = 41 với xác suất sai (1/4)3.
Giải: p = 41 = 23.5 + 1, do đó k = 3, q = 5, p-1 = 40.
=> p = 41 là số nguyên tố với xác suất sai là (1/4)3
t a a q mod p a 2q mod p a 4q mod p
1 7 38 9 40
Trang 17Bài tập chương 1
Bài 1 Áp dụng thuật toán FastExp tính giá trị các biểu thức (ghi rõ giá trị
x, z1, a1 ở các bước trung gian):
29 mod ))
15 24 12
)(
21 17
25
23 mod
53
mod 13
24 17
8 21 22
i
59mod
6
Trang 18Bài 1a) Tính 321 mod 23
Trang 19Bài 2a) Tính 5-1 mod 59
Buoc lap : t g2 v2 g0 v0 g1 v1 -K.gan : - - - 59 0 5 1
1 : 11 4 -11 5 1 4 -11
2 : 1 1 12 4 -11 1 12
3 : 4 0 -59 1 12 0 -59
So nghich dao: 12
Trang 20Bài 2b) Tính 24-1 mod 53
Buoc lap : t g2 v2 g0 v0 g1 v1 -K.gan : - - - 53 0 24 1
Trang 21Thuật toán Miller-Rabin