Chương 2. Cơ s ở toán h ọc
c ủa lý thuy ết m ật mã
2.1 Số học các số nguyên và
thuật toán Euclide
Tính chia h ết c ủa s ố nguyên
Cho a, b≠0 là các số nguyên. Ta nói a chia hết
cho b nếu tồn tại 1 số c sao cho:
a=b.c
Ký hiệu b|a
a là bội số của b (divisor), b là ước số của a
( mutiple)
Ví dụ: 2| 6
Tính chia h ết c ủa các s ố nguyên
Với a, b, c, d, e ∈Z, ta có:
- Nếu a|b và b|c ⇒ a|c
- Nếu a|b, thì ac|bc ∀c
- Nếu c|a và c|b, thì c| da+ be ∀d, e
- Nếu a|b và b≠0, thì |a|≤|b|
- Nếu a|b và b|a, thì |a|=|b|
Đ ịnh lý phép chia c ủa Euclid
Đối
với mọi số n, d\{0}, luôn tồn tại duy nhất các
số q, r∈Z sao cho:
n=qd+r với 0
n
là số bị chia (divident), d là số chia (divisor), q
thương số (quotient), r là số dư (remainder), ký
hiệu Rd (n)
ví dụ:
R7 (16)=2
R7 (-16)=?
Ư ớc chung l ớn nh ất(greatest
common divisor- gcd)
Cho hai số a, b ∈Z\{0}, c∈Z được gọi là ước chung
của a và b nếu c|a và c|b
C được gọi là ước chung lớn nhất, ký hiệu gcd(a,
b), nếu nó là số nguyên lớn nhất a, b chia hết.
B ội chung nh ỏ nh ất(Least common
multiple)
Cho hai số a, b ∈Z\{0}, c∈Z được gọi là bộichung
của a và b nếu a|c và b|c
C được gọi là bộichung nhỏ nhất, ký hiệu lcm(a,
b), nếu nó là số nguyên nhỏ nhất chia hết cho a,
b.
Thuật toán Euclide tìm UCLN
Input:
hai số không âm a, b, a>=b
Output: gcd(a, b).
Trong khi b>=0 thực hiện:
r a mod b
a b
b r
Cho kết quả (a)
Thu ật toán Euclid m ở r ộng
Thuật toán Euclid mở rộng dùng để tìm hai số x,
y thỏa mãn phương trình sau:
ax + by = gcd(a, b)
Euclide m ở r ộng
Ví dụ
Cho a=4864, b= 3458, tìm (d, x, y)
(38, 32, -45)
Nguyên t ố và h ợp s ố
Số tự nhiên 1
nếu nó chỉ chia hết cho chính nó và cho 1.
Số tự hiên n∈N không phải là nguyên tố được gọi là hợp
số(composite).
Hai số a và b được gọi là nguyên tố cùng nhau nếu
gcd(a, b)=1.
Mọi số nguyên n>1đều có thể viết dưới dạng:
n=p1a1 .p2a2 …pkak
Lưu ý: số 1 không pải là ngto cũng không phải là hợp
số.
Hàm đ ếm các s ố nguyên t ố
Hàm đếm các số nguyên tố(prime counting
function) ∏(n) cho kết quả là các số nguyên tố
nhỏ hơn hay bằng n∈N
∏(n)=|{p∈P| p≤n}|
Phân tích h ợp s ố thành th ừa s ố
nguyên tố
Mỗi số tự nhiên n ∈N đều có thể phân tích thành
các thừa số nguyên tố duy nhất
ep (n): là số mũ của p
Ví dụ: 4725=32 .53 . 7
Phân tích h ợp s ố thành th ừa s ố
nguyên tố
Ví dụ: tìm gcd và lcm của ( 143, 220)
143=11.13
220= 2^2. 5. 11
Gcd(143, 220)= 2min(2,0) .5min(1,0) . 11. 13min(1, 0)
lcm(143, 220)= 2max(2,0) .5max(1,0) . 11. 13max(1, 0)
Euler’s Totient function
Dùng để đếm các số
với n.
Ví dụ: ɸ(10)=4
Nếu p là nguyên tố thì ɸ(p)= p-1
Nếu n=p.q thì ɸ(n)=(p-1)(q-1)
Euler’s Totient function
Với mọi số nguyên n có thể phân tích thành thừa
số nguyên tố thì
Ví dụ: ɸ(45)= ɸ(32 .5)=(3-1)2-1 .(5-1)1-1 =24
Euler’s Totient function
Từ ɸ(p.q)=(p-1)(q-1), ta có thể tính p khi biết
ɸ(p.q) theo công thức sau:
Công thức này được dùng trong mã hóa công
khai RSA
2.2. Đ ồng dư theo modular
Cho a, b∈Z, n∈N. a được gọi là đồng dư với b
theo modulo n nếu n|a-b( tức a-b chia hết cho n,
hay a và b chia cho n cùng số dư)
Ký hiệu: a≡b(mod n)
Ví dụ: 7≡12(mod 5)
4≡-1(mod 5)
Tính ch ất đ ồng dư modular n
Với mọi số n∈N, a, b,c ∈Z các tính chất sau luôn thỏa
mãn:
1. a≡a(mod n)- tính chất phản xạ
2. Nếu a≡b(mod n) thì b≡a(mod n)- tính đối xứng.
3. If a≡b(mod n) and b≡c(mod n) thì a≡c(mod n) (tính
bắc cầu)
Quan hệ đồng dư theo modular n là quan hệ tương
đương
Các phép toán đ ồng dư
Có thể thực hiện các phép cộng và nhân phần dư
tương tự như cộng nhân các số nguyên.
Rn (a + b) = Rn ( Rn (a ) + Rn (b))
Rn (a.b) = Rn ( Rn (a ).Rn (b))
Ví dụ:
R 7 (12 + 18) = R7 ( R7 (12) + R7 (18)) = 2
R7 (12.18) = R7 ( R7 (12).R7 (18)) = R7 (4.5) = 6
Ngh ịch đ ảo nhân
Nếu tồn tại một số b∈Zn sao cho ab≡1(mod n) thì
b được gọi là nghịch đảo nhân của a modulo n.
−1
b = a (mod n)
Điều kiện để a có nghịch đảo nhân khi và chỉ khi
gcd(a, n)=1 ( a, n nguyên tố cùng nhau).
Ví dụ: 8= 22-1 (mod 25) vì:
8.22=176=1(mod 25)
Ví d ụ ngh ịch đ ảo nhân
Cho m=5, a=2. gcd(2,5)=1, do đó 2 có nghịch
đảo nhân modulo 5.
3=2-1 (mod 5) vì 2.3≡1(mod 5)
gcd(4, 15)=1 vậy 4 có nghịch đảo nhân modulo
15
4.4≡1(mod 15) nên 4=4-1 (mod 15)
Cách tìm ngh ịch đ ảo nhân
C1: giải thuật Euclid mở rộng
au + pu = 1
−1
u = a mod p
C2: dùng giải thuật tính số mũ nhanh
a
−1
≡a
p −2
mod p
Cách tìm ngh ịch đ ảo nhân(tt)
Để tìm nghịch đảo nhân modulo n , áp dụng
Euclid mở rộng:
xa + yn = gcd(a, n) = 1
xa ≡ 1(mod n)
x là nghịch đảo nhân a modulo n
Nếu gcd(a, n)=k>1 thì a không có nghịch đảo
nhân modulo n.
Ví dụ