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. CƠ SỞ TOÁN HỌC VỀ SỐ NGUYÊN VÀ CÁC THUẬT TOÁN Thuật giải RSA Mã khóa công khai Mã theo khối Mã khóa bí mật
Trang 1CƠ 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
Trang 2 Đị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
Trang 3- 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)
an = (a1)n (mod m), với mọi n Z.
Trang 4 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 Zm là Zm*
- Đị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 Zm, m 2
(i) x Zm* x m
(ii) x, y Zm* x-1, xy Zm*
(iii) card(Zm*) = (m)
Nhận xét : Khi m nguyên tố thì (m) = m-1 và Zm* = Zm- {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 xp-1 1 (mod p)
- Định lý:
(i) p P, n Z np n (mod p)
(ii) p P, n Z, r s (mod (m)) nr ns (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)
Trang 5- Định lý dư số Trung Hoa:
(i) Nếu các số nguyên n1, n2, …, nk đôi một nguyên tố cùng nhau
và n = n1.n2…nk, thì hệ đồng dư
x a1 (mod n1)
x a2 (mod n2)
x ak (mod nk)
có nghiệm duy nhất trong Zn
(ii) Ánh xạ f : Zn Zn1 x Zn2 x … x Znk
với f(x) = (x mod n1, x mod n2, …, x mod nk), x Zn,
là song ánh
- Định lý:
Cho m n
Ánh xạ f : Zmn Zm x Zn xác định bởi
f(x) = (x mod m, x mod n), x Zmn,
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])
Trang 6II 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
Trang 7 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 đó,
ek : khóa mã hóa
dk : khóa giải mã
E: tiến trình (thuật giải) mã hóa: E(ek,M) = C
D: tiến trình (thuật giải) giải mã: D(dk,C) = M
Các thuật giải E và D phải thỏa các tính chất:
D(dk,C) = D(dk, E(ek,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
Trang 8- 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 = M1M2…Mj, mỗi khối Mi gồm n ký tự
Trang 9(2) Chuyển các ký tự thành các số tương ứng và
xây dựng bản mã:
Ci A.Mi + 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 = [B1 B2 … Bn]t,
C = [c1 c2 … cn]t, và M = [m1 m2 … mn]t (3) Để giải mã, ta thi hành phép toán:
Mi A-1.(Ci – 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à
Ta có :
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:
Trang 10 Trong một hệ mạ hóa công khai (mã không đối xứng),
khóa mã hóa ek và khóa giải mã dk khác nhau
ek có thể công bố (vì chỉ dùng để mã hóa), còn gọi là
khóa công khai
dk 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) fg,N : x gx mod N là hàm một chiều
(c) fk,N : x xk 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 xk 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 (xk)k’ = x
Trang 11- 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 = me mod n
Thì m = cd 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 = me 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 = cd mod n
Ví dụ:
p = 2357, q = 2551
n = pq = 6012707, = (p-1)(q-1) = 6007800
Trang 12Vớ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 = me mod n = 3650502
Để giải mã c, ta tính cd mod n = 5234673