CƠ SỞ TOÁN HỌC CHO
MÃ HÓA THÔNG TIN
I. CƠ SỞ TOÁN HỌC VỀ SỐ NGUYÊN
VÀ CÁC THUẬT TOÁN
1. Một số định nghĩa
- Tập số tự nhiên:
N = {0, 1, 2, 3, 4, . . . }
- Tập số nguyên:
Z = {0, ±1, ±2, ±3, . . . }
- Thứ tự ≤ trên N là tối thứ tự.
- Quan hệ “ước số”, ký hiệu | :
a | b ⇔ ∃ k ∈ Z, k.a = b
Nói cách khác: b là bội số của a.
- Một số khái niệm khác:
• ước số chung, ước số chung lớn nhất.
Ký hiệu ước số chung lớn nhất của a và b:
gcd(a,b) hay a ∧ b hay (a,b)
• bội số chung, bội số chung nhỏ nhất.
Ký hiệu bội số chung nhỏ nhất của a và b:
lcm(a,b) hay a ∨ b
• Phép toán chia “thương” và chia “dư”:
Định lý: Với a ∈ Z, b ∈ N
*
, có duy nhất q ∈ Z và r ∈ N
sao cho
a = q.b + r, 0 ≤ r < b.
Định nghĩa: a / b = q, và a % b = r.
a % b còn được viết là a mod b.
• a và b là nguyên tố cùng nhau khi (a,b) = 1.
Ký hiệu: a ⊥ b.
• p ∈ N là số nguyên tố khi : p > 1, và
p chỉ có 2 ước số dương là 1 và p.
Ngược lại, thì p được gọi là hợp số.
• Ký hiệu tập các số nguyên tố là P.
2. Một số tính chất, định lý, và thuật toán
- Định lý:
a, b ∈ N
*
⇒ a ∨ b = a.b / (a ∧ b).
- Định lý:
Với a, b ∈ N
*
và a > b ta có :
a ∧ b = a ∧ (a % b)
a ∧ b = a ∧ (a - b)
- Thuật toán Euclide: tính gcd(a,b) với a và b là các số tự nhiên.
B1 : While a > 0 and b > 0 do
if a > b then a := a % b
Else b := b % a.
B2 : gcd(a,b) = a + b.
- Định lý Bezout:
Với a, b ∈ N, a > b ≥ 1 ta có :
(i) Tồn tại x, y ∈ Z: a.x + b.y = gcd(a,b).
(ii) a và b nguyên tố cùng nhau
⇔ tồn tại x, y ∈ Z: a.x + b.y = 1.
- Thuật toán Bezout:
Input: a và b không âm, a ≥ b.
Output: d = gcd(a,b) và hai số nguyên x, y: a.x + b.y = d.
B1: nếu b = 0 thì d = a; x =1; y = 0.
B2 : x2 = 1 ; x1 = 0 ; y2 = 0 ; y1 = 1.
B3 : while b > 0 do
Begin
q = a/b ; r = a-q.b ; x = x2 – q.x1 ; y = y2 – q.y1 ;
a = b ; b = r ; x2 = x1 ; x1 = x ; y2 = y1 ; y1 = y ;
end
B4 : d = a ; x = x2 ; y = y2.
B5 : return d, x, y ;
- Định lý cơ bản của số học:
Mọi số nguyên n ≥ 2 đều có thể biểu diễn duy nhất dưới dạng tích các
thừa số nguyên tố (không kể sai khác phép hoán vị các thừa số nguyên
tố).
3. Phép chia dư trên trường Z
m
, với m ∈ N
*
Cho m ∈ N
*
. Quan hệ “đồng dư mod m” trên Z:
x ≡ y (mod m) ⇔ m | (x-y)
Z
m
= tập các số nguyên mod m.
= { 0, 1, 2, . . . , m-1 }
- Định lý:
(i) Quan hệ “đồng dư mod m” là quan hệ tương đương trên Z.
(ii) a ≡ a1 (mod m), b ≡ b1 (mod m)
⇒ a + b ≡ a1 + b1 (mod m)
a.b ≡ a1.b1 (mod m)
a
n
= (a1)
n
(mod m), với mọi n ∈ Z.
⇒ ta có phép toán cộng (+) và nhân (.) trên Z
m
.
4. Hàm phi-Euler, Định lý Euler và Định lý Fermat
Ký hiệu tập các phần tử khả nghịch trong Z
m
là Z
m
*
.
- Định nghĩa hàm phi-Euler :
Cho n ≥1, đặt
ϕ(n) = số các số nguyên trong khoảng [1,n] nguyên tố
cùng nhau với n.
- Định lý:
Cho x, y ∈ Z
m
, m ≥ 2.
(i) x ∈ Z
m
*
⇔ x ⊥ m.
(ii) x, y ∈ Z
m
*
⇔ x
-1
, xy ∈ Z
m
*
.
(iii) card(Z
m
*
) = ϕ(m)
Nhận xét : Khi m nguyên tố thì ϕ(m) = m-1 và Z
m
*
= Z
m
- {0}.
- Định lý Euler:
Cho m ≥ 2. ta có :
x ⊥ m ⇒ x
ϕ
(m)
≡ 1 (mod m).
- Định lý Fermat:
Cho m ≥ 2. ta có :
p ∈ P, x ⊥ p ⇒ x
p-1
≡ 1 (mod p).
- Định lý:
(i) p ∈ P, n ∈ Z ⇒ n
p
≡ n (mod p).
(ii) p ∈ P, n ∈ Z, r ≡ s (mod ϕ(m)) ⇒ n
r
≡ n
s
(mod p).
(iii) Nếu p và q là hai số nguyên tố khác nhau, và n = p.q thì
ϕ(n) = (p-1)(q-1).
- Định lý dư số Trung Hoa:
(i) Nếu các số nguyên n
1
, n
2
, …, n
k
đôi một nguyên tố cùng nhau
và n = n
1
.n
2
…n
k
, thì hệ đồng dư
x ≡ a
1
(mod n
1
)
x ≡ a
2
(mod n
2
)
. . .
x ≡ a
k
(mod n
k
)
có nghiệm duy nhất trong Z
n
.
(ii) Ánh xạ f : Z
n
→ Z
n1
x Z
n2
x … x Z
nk
với f(x) = (x mod n
1
, x mod n
2
, …, x mod n
k
), x ∈ Z
n
,
là song ánh.
- Định lý:
Cho m ⊥ n.
Ánh xạ f : Z
mn
→ Z
m
x Z
n
xác định bởi
f(x) = (x mod m, x mod n), x ∈ Z
mn
,
là song ánh.
5. Các biểu diễn số theo cơ số và các thuật giải tính toán số học.
(tham khảo: [12])
II. BẢO MẬT THÔNG TIN
1. Giới thiệu:
Bảo mật thông tin là khoa học nghiên cứu các nguyên lý
và phương pháp cho phép mã hóa thông tin sao cho chỉ
người có khóa giải mã (bí mật) mới có thể giải để hiểu
được thông tin gốc.
- Hai dạng bài toán an toàn thông tin:
(1) Bảo mật: ngăn cản không cho người lạ trích chọn thông tin
từ các thông điệp được gởi trên các kênh truyền phổ biến
(thường không an toàn).
(2) Chứng thực: đảm bảo chỉ có người nhận đúng mới có thể
đọc được thông điệp, đồng thời cũng đảm bảo người gửi
không thể phủ nhận thông điệp mình gửi.
- Hai loại hệ mã:
(1) Hệ mã khóa bí mật (còn được gọi là hệ mã đối xứng).
(2) Hệ mã khóa công khai (còn được gọi là hệ mã không đối xứng).
- Các ký hiệu:
• M: không gian các bản rõ, mỗi bản rõ là một chuỗi ký tự cần
mã hóa.
• C: không gian các bản mã, mỗi bản mã là một chuỗi ký tự
đã được mã hóa.
• K: không gian khóa, mỗi khóa là một chuỗi ký tự. Trong đó,
e
k
: khóa mã hóa.
d
k
: khóa giải mã.
• E: tiến trình (thuật giải) mã hóa: E(e
k
,M) = C.
• D: tiến trình (thuật giải) giải mã: D(d
k
,C) = M.
Các thuật giải E và D phải thỏa các tính chất:
D(d
k
,C) = D(d
k
, E(e
k
,M) = M
2. Mã khóa bí mật
Trong mã khóa bí mật cả quá trình mã hóa lẫn giải mã chỉ sử dụng
một khóa, gọi là khóa bí mật; vì vậy hệ thống này còn được gọi là
hệ mã đối xứng.
Ở người gửi, thực hiện mã hóa và truyền đi:
C = E(k,M)
Ở người nhận được C, thực hiện giải mãđể có được thông tin gốc:
D(k,C) = M.
Dưới đây là một số dạng mã đối xứng.
- Mã theo chuỗi bit:
Thông điệp M là một chuỗi bit, khóa K cũng là chuỗi bit
được phát sinh ngẫu nhiên. Bản rõ được mã hóa theo từng bit
một để được bản mã, chẳng hạn C = M xor K; khi đó phép
giải mã sẽ là C xor K = M.
- Mã theo theo chữ:
Biến đổi một chữ cái trong bản rõ thành một chữ cái khác
trong bản mã. Kỹ thuật này còn được gọi là mã thay thế.
Ví dụ: Các chữ cái từ A đến Z được cho tương ứng với các số nguyên từ
0 đến 25. Phép mã hóa như sau:
E(k,m) = m + k (mod 26) = c, 0 ≤ k,m ≤ 25;
và phép giải mã:
D(k,c) = c – k (mod 26), 0 ≤ k,c ≤ 25
Cụ thể:
E(3,IBM) = LEP
E(7,ENCRYPTION) = LUJXFWAPYU
- Mã theo khối:
Để tăng độ an toàn ta có thể mã hóa theo khối. Bản rõ và bản
mã được chia thành từng khối ký tự trước khi thực hiện mã
hóa và giải mã:
(1) Chia văn bản M thành nhiều khối
M = M
1
M
2
…M
j
, mỗi khối M
i
gồm n ký tự.
(2) Chuyển các ký tự thành các số tương ứng và
xây dựng bản mã:
C
i
≡ A.M
i
+ B (mod n), i = 1, 2, …, j
trong đó, (A, B) là khóa, A là ma trận khả nghịch
cấp n với
gcd(det(A), n) = 1, B = [B
1
B
2
… B
n
]
t
,
C = [c
1
c
2
… c
n
]
t
, và M = [m
1
m
2
… m
n
]
t
.
(3) Để giải mã, ta thi hành phép toán:
M
i
≡ A
-1
.(C
i
– B) (mod n).
Trong đó, A
-1
là ma trận nghịch đảo của A.
Ví dụ :
Chọn B = [0 0 … 0]
t
, n = 3, ma trận mã hóa là
=
17720
25235
19212
A
Ta có :
=
−
2195
22915
72310
1
A
Thông điệp M = ONE TWO SIX sẽ được mã hóa thành:
C = WBX ZPS BRB
Tiến trình giải mã sẽ cho ta thông điệm gốc:
M = ONE TWO SIX
3. Mã khóa công khai
- Khái niệm cơ bản:
• Trong một hệ mạ hóa công khai (mã không đối xứng),
khóa mã hóa e
k
và khóa giải mã d
k
khác nhau.
• e
k
có thể công bố (vì chỉ dùng để mã hóa), còn gọi là
khóa công khai.
• d
k
phải giữ bí mật, còn gọi là khóa cá nhân.
• Hệ mã khóa công khai được xây dựng trên ý tưởng
hàm một chiều.
Định nghĩa:
Cho các tập hữu hạn S và T. Hàm một chiều f : S → T là hàm
khả nghịch thỏa:
(1) f dễ thực hiện.
(2) hàm ngược f
-1
khó thực hiện.
(3) f
-1
có thể dễ tính được khi có thêm một số thông tin.
Ví dụ: Một số hàm một chiều
(a) f : (p,q) → n = p.q là hàm một chiều với p và q là các số
nguyên tố lớn.
(b) f
g,N
: x → g
x
mod N là hàm một chiều.
(c) f
k,N
: x → x
k
mod N là hàm một chiều, với N = pq, p và q là các
số nguyên tố lớn, k.k’ ≡ 1 (mod ϕ(N)).
Phép tính x
k
mod N có độ phức tạp đa thức, nhưng tính f
-1
cực
khó. Tuy nhiên, nếu biết k’, có thể dễ dàng tính f
-1
từ công thức
(x
k
)
k’
= x.
- Hệ mã RSA:
Hệ thống RSA, viết tắt từ tên của 3 nhà toán học đã phát minh ra
hệ mã RSA: R. Rivest, A. Shamir, L. Adleman.
Định lý:
Cho p và q là hai số nguyên tố phân biệt, n = pq,
ϕ = ϕ(n) = (p-1)(q-1), 1 < e < ϕ, e và ϕ nguyên tố cùng nhau,
d = e
-1
mod ϕ, 1 < d < ϕ, 0 ≤ m < n, và c = m
e
mod n.
Thì m = c
d
mod n.
- Thuật giải RSA:
[1] Mã hóa
(1) Từ khóa công khai (n, e) và thông điệp dưới dạng một số
nguyên m ∈ [0, n), m được gọi là bản rõ (plaintext).
(2) Tính c = m
e
mod n, c được gọi là bản mã (ciphertext).
[2] Giải mã
Tìm lại bản rõ m từ bản mã c, sử dụng khóa cá nhân d để tính
M = c
d
mod n.
Ví dụ:
p = 2357, q = 2551.
n = pq = 6012707, ϕ = (p-1)(q-1) = 6007800.
Với e = 3674911 ∈ (1, ϕ), thuật giải Bezout cho ta
d = e
-1
mod ϕ = 422191.
Vì thế khóa công khai là cặp (n = 6012707, e = 3674911) và khóa
cá nhân là d = 422191.
Để mã hóa bản tin m = 5234673 ta tính c = m
e
mod n = 3650502.
Để giải mã c, ta tính c
d
mod n = 5234673.