Sau đây là một số khái niệm và kí hiệu liên quan về vấn đề mã hóa dữ liệu : - Mã hóa Encryption: Quá trình chuyển đổi dữ liệu gốc thành dữ liệu được mã hóa sao người khác không thể đọc
Trang 1Mục lục
PHẦN 1: CƠ SỞ LÝ THUYẾT
I CƠ SỞ TOÁN HỌC VỀ SỐ NGUYÊN VÀ CÁC THUẬT TOÁN
I.1 Các phép toán trên số nguyên tố và modula 2
I.2 Phép đồng dư trên trường Zm 3
I.3 Hàm phi-Euler, định lí Euler và định lí Fermat 4
I.4 Định lí số dư Trung Hoa, biểu diễn cơ số hỗn hợp 5
I.5 Biểu diễn cơ số b và các phép toán số học 6
I.6 Các phép tính nhanh trên số nguyên 7
I.7 Phép toán modula trên trường Zm 8
II PHÉP LŨY THỪA MODULO VÀ HỆ THỐNG RSA II.1 Phép lũy thừa modula 9
II.2 Định lý Revert Sammer Ademan (RSA): 10
II.3 Hệ mật khóa công khai (RSA) 11
II.4 Minh họa hệ thống RSA 12
II.5 Lưu đồ xây dựng một hệ thống mật mã dùng RSA 13
II.6 Ứng dụng của RSA 14
PHẦN 2: PHẦN MỀM MINH HỌA THUẬT TOÁN RSA I Giới thiệu phần mềm minh họa 17
II Cài đặt và thử nghiệm chương trình 18
III Nhận xét & đánh giá 22
IV Tài liệu tham khảo 26
BÁO CÁO THU HOẠCH CHUYÊN ĐỀ
PHƯƠNG PHÁP TOÁN TRONG TIN HỌC
Đề tài:
Giảng viên phụ trách: PGS TS Đỗ Văn Nhơn
HV thực hiện: Vũ Thị Thu Thảo – CH1001072
Tp H Chí Minh – 12/ 2014 ồ
Trang 2PHẦN I: CƠ SỞ LÝ THUYẾT
I CƠ SỞ TOÁN HỌC VỀ SỐ NGUYÊN VÀ CÁC THUẬT TOÁN:
I.1 Các phép toán trên số nguyên tố và modula:
- Một số khái niệm khác:
Ký hiệu ước số chung lớn nhất của a và b:
gcd(a,b) hay a ∧ b hay (a,b)
Ký hiệu bội số chung nhỏ nhất của a và b:
lcm(a,b) hay a ∨ b
Đị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.
Trang 3⇔ 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.
B4 : d = a ; x = x2 ; y = y2
B5 : return d, x, y ;
- Định lý cơ bản của số học:
số nguyên tố (không kể sai khác phép hoán vị các thừa số nguyên tố).
Nhận xét:
o a,b,c ∈ N * với a⊥b và a| bc thì a|c
o a⊥ b, a⊥c ⇒ a⊥bc
o a⊥ b 1 , a⊥b 2 , a⊥b n⇒ a⊥(b 1 b 2 b n )
o Nếu một số nguyên tố là số chia của tích của các số nguyên tố khác thì nó
sẽ là số chia của ít nhất một thừa số trong các số đó và ngược lại.
I.2 Phép đồng dư trên trường Zm
Giả thiết m ∈ N *
Định nghĩa:
Cho x,y ∈ Z, m ∈ N * :
Trang 4x là đồng dư của y mod m, kí hiệu x ≡ y (mod m), nếu m là số chia của x-y; m gọi
là modulo của phép đồng dư:
x ≡ y (mod m) ⇔ m | (x-y) Tập các số nguyên modulo m: Z m = { 0, 1, 2, , m-1 }
Nếu x ∈ Z m , số nguyên x mod m của Z m được gọi là rút gọn modulo của x theo m.
Nhận xét: thực hiện phép cộng và trừ modulo
Nếu x,y ∈ Z m thì:
(x+y) mod m = x+y nếu x+y < m;
(x+y) mod m=x+y-m nếu x+y>= m;
(x-y) mod m=x-y+m nếu x<y;
(x-y) mod m=x-y nếu x>=y;
Định lý:
Cho a,b,c,a 1 ,b 1∈ Z, ta có:
a ≡ a mod m (tính phản xạ);
a ≡ b mod m ⇒ b ≡ a mod m ( tính đối xứng);
a ≡ b mod m, b ≡ c mod m ⇒ a ≡ c mod m (tính chất bắc cầu);
a ≡ a 1 mod m, b ≡ b 1 mod m ⇒ a +b ≡ (a 1 +b 1 ) mod m, ab ≡ a 1 b 1 mod m, a n = (a 1 ) n mod m với mọi n ∈ Z.
⇒ ta có phép toán cộng (+) và nhân (.) trên Zm.
Định lý cơ bản của số học:
số nguyên tố (không kể sai khác phép hoán vị các thừa số nguyên tố)
Trang 5* a=b(mod m), a= b(mod n) nếu và chỉ nếu a=b(mod lcm (m,n));
* Khi m ⊥ n, ta có: a=b(mod m), a =b (mod n) nếu và chỉ nếu a=b(mod mn);
I.3 Hàm phi-euler, định lí Euler và định lí Fermat
- Định nghĩa: Một số nguyên a∈ Z m được gọi là modulo khả nghịch nếu ∃ x ∈Z m :
Ax ≡ 1 (mod m)
a -1 ;
- Định nghĩa: Cho n≥ 1, ϕ(n) là tập chứa số các số nguyên [1,n], nguyên tố cùng
- Định lý dư số Trung Hoa:
* 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
** Ánh xạ f : Z n→ Z n1 x Z n2 x … x Z nk
Trang 6với f(x) = (x mod n 1 , x mod n 2 , …, x mod n k ), x ∈ Zn , là song ánh.
I.4 Định lí số dư Trung Hoa, biểu diễn cơ số hỗn hợp
Định nghĩa: cho m 1 ,m 2 m I ∈ N * đôi một nguyên tố cùng nhau m 1 <m 2 <m I và M=m 1 * m 2 m I
Thuật giải Garner ( phiên bản 2 số nguyên tố cùng nhau )
Input: x mod p, x mod q;
Output: x ∈ [0,pq] ;
b) X=V1+up c) Return (x)
I.5 Biểu diễn cơ số b và các phép toán số học
Định nghĩa: cho b ∈ N, b>=2.
A=ab + a 1 b+ Σ 0≤ i≤ n a b , trong đó a ∈ N, 0 a ≤ i ≤ b, 0≤ i≤ n ; và a >0 được gọi
là biểu diễn a theo cơ số b, và được viết như : a=(a a aa) b
Các số nguyên a i , 0 ≤ i≤ n, được gọi là các kí số, a n là ký số bậc cao, a 0 là bậc thấp nhất,b là cơ số, chiều dài bằng n+1.
Khi b=2 ( 8 hay 16) được gọi là biểu diễn cơ sở nhị phân (bát phân, thập lục phân) của a.
Hệ nhị phân biểu diễn bởi 2 kí hiệu :0,1
Hệ thập lục phân : 0→ 9,A→ Z ;
Thuật giải biểu diễn theo cơ số b
Input : a,b ∈ N * , b≥ 2 ;
Trang 7Output : a=(a a aa) b
n = [log(a)/log(b)]
I.6 Các phép tính nhanh trên số nguyên
Trong suốt phần này ta cho b ∈ N, b≥ 2
Thuật giải 3.5 (cộng 2 số nguyên dương)
Input : x,y∈ N * , x = ( x xx), y = ( y yy)
Trang 8Thuật giải 3.6 (trừ 2 số nguyên dương)
Input : x,y∈ N * , x≥ y, x = ( x xx), y = ( y yy)
Thuật giải 3.7 (nhân 2 số nguyên dương)
Input : x,y∈ N * , x≥ y, x = ( x xx), y = ( y yy)
Output : x*y = (w ww)
(1) cho i chạy từ 0 đến n, Do: w i = 0
(2) cho i chạy từ 0 đến n, Do:
Khi n =0, m=0, ta có tích z= x*y =(w w) , trong đó W = z % b , w = (z/b
% b và dùng thuật giải 3.4 ta được w, w
Thuật giải 3.8 (bình phương 1 số nguyên dương_ dùng thuật giải 3.7)
Input : x∈ N * , x≥ y, x = ( x xx)
Output : x 2 = (w ww)
(1) cho i chạy từ 0 đến n, Do: w i = 0
(2) cho i chạy từ 0 đến n, Do:
I.7 Phép toán modula trên trường Zm
Trong suốt phần này, ta xét m ∈ N *
Định nghĩa:
Cho x,y ∈ Z, m∈ N * ; x được gọi là đồng dư với y modulo m, kí hiệu :
Các số nguyên là dư số của m, kí hiệu Z m , là tập :
Z m = {0,1,2, m-1}
Nếu x ∈ Z m, số nguyên x mod m của Z m được gọi là dư số rút gọn của x theo m ;
và ta có thể tính x mod m theo thuật giải tính modulo.
Ghi chú :
Nếu x,y ∈ Z m , thì
(x+y) mod m = x+y nếu x+y<m ;
(x+y) mod m = x+y-m nếu x<y ;
(x+y) mod m = x-m nếu x≥ y ;
Thực vậy, ta có :
x <y ⇒ 0 ≤ x+m-y <m,(x-y) mod m =x+m-y ;
Trang 9x >y ⇒ 0 ≤ x-y <m,(x-y) mod m =x-y ;
Vì thế ta có thể tính cộng trừ modulo : (x+y) mod m một cách dễ dàng.
Nếu x,y ∈ Z m , thì 0≤ c, y ≤ m-1, 0≤ x*y≤ m 2 -1 ; và thuật giải nhân modulo cho
ta kết quả phép nhân modulo.
Cho k là 1 số nguyên thỏa : k*m≤ x*y<(k+1)*m, ta có :
(x*y) mod m = x*y-k*m ;
Khi x,y,m là những số nguyên lớn, 0≤ x,y<m,b≥ 2, và y = Σ 0 ≤ i ≤ I y i b j là biểu diễn cơ số b của y, ta có :
(x*y) mod m = (y *x+ Σ 0 ≤ i ≤ I yi(x* b ) mod m)) mod m,
(x*y i+1 ) mod m = (b *((x* b ) mod m)) mod m, 0 ≤ i ≤ I
Vì thế ta có thể sử dụng thuật giải sau để tính tích modulo P = (x*y) mod m.
Thuật giải tính tích modulo P = (x*y) mod m
1) Đặt x=x mod m, y = y mod m, và P = (x*y ) mod m.
Thuật giải tính tích modulo P = (x*y) mod m
1)Đặt x=x mod m, y = y mod m, và P = 0 Nếu y > 0 thì P = x.
a) Cho i từ 1 đến I, do :
b) x= (2*x ) mod m ;
3) return P.
II PHÉP LŨY THỪA MODULO VÀ HỆ THỐNG RSA
II.1 Phép lũy thừa modula
Trang 10Ghi chú: Xét x k (mod pq), trong đó p,q hai số nguyên tố khác nhau
Với k 1 = k mod(p-1), k 2 = k mod(q-1), ∃ n 1 , n 2 :
= ( v (x) mod p, v (x) mod q, v (x) mod r
= v ( x) mod p, v (x) mod q, v (x) mod r)
II.2 Định lý Revert Sammer Ademan (RSA):
Cho p và q là hai số nguyên tố phân biệt, n = pq,
Trang 11Ta có m =1 mod N, vì thế:
( m mod N) k = 1 k mod N = 1 mod N,
M=(m mod N)(m mod N) = m mod N = m mod N
Vì thế c d mod N = (m ) mod N = m mod N
II.3 Hệ mật khóa công khai (RSA):
Hệ mật 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, là một hệ thống khóa công khai hiện được dùng phổ biến nhất
Sau đây là một số khái niệm và kí hiệu liên quan về vấn đề mã hóa dữ liệu :
- Mã hóa (Encryption): Quá trình chuyển đổi dữ liệu gốc thành dữ liệu được mã hóa sao người khác không thể đọc hiểu được (kí hiệu E);
- Giải mã (Decryption): Quá trình ngược lại của mã hóa, biến đổi dữ liệu đã được mã hóa thành dạng gốc ban đầu (kí hiệu D);
- Thông điệp (Message), bản gốc (Plaintext): Tệp dữ liệu chưa mã hóa (kí hiệu M)
- Bản mã (Ciphertext): Tệp dữ liệu đã được mã hóa (kí hiệu C)
Theo quy ước, khi mã hóa thì C = E(M) và khi giải mã thì M = D(C) = D(E(M))
Thuật giải phát sinh khóa cho RSA:
B4 : Cặp (N,e) là khóa công khai, và (N,d) là khóa cá nhâ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] 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
Trang 12II.4 Minh họa hệ thống RSA:
Dưới đây là một số hệ thống mã hóa RSA đơn giản, ta có thể sửa đổi và mở rộng để xây dựng một hệ thống mã hóa RSA cho ứng dụng riêng.
Quy trình mã và giải mật được tiến hành theo các bước sau:
1) văn bản được chia thành các khối nhỏ có độ dài bằng nhau bởi một hàm băm.
2) Sinh khóa trên cơ sở tạo ba số mũ nguyên dương (e,d,N)
(e,N) -Khóa công khai;
(d,N) -Khóa cá nhân;
3) Mã hóa:
Hình 3.1 mã hóa dùng RSA
Trong đó (e,N) là cặp khóa công khai
m: Plain text C= m modulo N
Khóa (e,N)
c: cipher text
Trang 134) Giải mật
Hình 3.2 giải mật trên hệ RSA
Trong đó (d,N) là cặp khóa riêng tư
II.5 Lưu đồ xây dựng một hệ thống mật mã dùng RSA:
c: cipher text m = c modulo N
Khóa (d,N)
m: Plain text
Trang 14II 6 Ứng dụng của RSA:
II.6.1 Cetificate Authority (CA)
a Một tổ chức tin cậy phát hành các chứng thực điện tử (electronic certificate) cho các đối tác cần trao đổi thông tin, giao dịch với nhau thông qua các phương tiện giao tiếp điện tử như: Internet, Smart card, Security card…
b CA cung cấp và quản lý các electronic certificates cho các đối tác như: kiểm tra đối tác đăng ký (registration) cấp phát (issue), thu hồi certificate (revocation).
/* chương trình mã*/
p1,q1,M1,phi1, e1,d1 p2,q2,M2,phi2, e2,d2
Tính M1 = p1*q1 Phi1 = (p1-1)*(q1-1) E1= 3674911, d1=inverse(e1 ,phi1)
Tính M2 = p2*q2 Phi2 = (p2-1)*(q2-1) E2= 3674911, d2=inverse(e2 ,phi2)
Đọc khối văn bản (có thể mở từ file hoặc nhập trực tiếp) xx<=M1,M2
Trang 15c CA được cấu trúc theo mô hình phân cấp X.500 và cho phép các phân cấp con có thể tiếp tục chứng thực cho các đối tác khác (intermediate) Các thông tin trong một certificate bao gồm gồm public key của site's server, tên của đối tác đăng ký, Algorithm ID được dùng để ký lên certificate, ngày hết hạn certificate, tên của tổ chức CA cấp phát…
d Các trusted CA bảo đảm được đầy đủ ba yếu tố cho một đối tác khi sử dụng trusted certificates đó là: CONFIDENTIALITY, INTEGRITY, và AUTHENTICATION.
đang giao dịch.
sửa đổi lại data.
ký, không ai có thể giả mạo được.
II.6.2 Ứng dụng RSA trong Internet banking dùng giao thức https ssl
RSA được sử dụng rất nhiều trong các giao dịch Internet banking hiện nay.
Cơ chế hoạt động của một kết nối https (SSL) :
B1 Web browser kết nối với web server và yêu cầu một kết nối an toàn
và bảo mật.
B2 Web server trả về cho web browser site's certificate.
B3 Web browser kiểm tra các thông tin trong site's certificate xem có
trust được hay không (khi certificate không được trust ta sẽ thấy xuất hiện một warning dialogue, và nếu muốn cố tự mình cho rằng nó có thể trust được thì click Yes để kết nối, một khi thấy warning dialogue hiện
ra mà vẫn cố chấp nhận giao dịch thì web site mà bạn đang kết nối có thể là web site giả mạo).
B4 Web browser lúc này mới tạo ra một session key sau đó dùng
server's public key để mã hóa (asymmetric) và chuyển session key đã được encrypt này tới web server.
B5 Web server dùng private key của nó để giải mã (asymmetric) và lấy
được session key dùng để mã hóa data (symmetric) giửa web server và web browser.
Trang 16Như ta đã biết electronic certificate chứa các thông tin bao gồm public key của site's server, tên của đối tác đăng ký, Algorithm ID được dùng để ký lên certificate, ngày hết hạn certificate, tên của tổ chức CA cấp phát…và quan trọng nhất là certificate đó phải được
"ký" bởi các CA mà các thực thể (entities) phải hiểu (trust) được CA
đó, mà các entities trong trường hợp này ở đây là ai? đó chính là các WEB BROWSER dùng để kết nối giao dịch chứ không phải con người sử dụng web browser đang tiến hành giao dịch, để tránh các tình trạng giả mạo e-banking website bằng cách tạo ra một web site giả có nội dung tương tự giống như web site thật nhằm mục đích dụ users đánh vào các thông tin đăng nhập như username & password, thông tin tài khoản sau đó xuất ra cho khác hàng những câu thông báo đại loại như server busy, hãy vui lòng đăng nhập lại vào khi khác…để đánh lừa khách hàng.
Biện pháp dễ dàng và hiệu quả nhất để chống được trò giả mạo này là web browser mặc định (default) phải trust các certificates do các trusted CA ban hành, vì các thông tin như validity dates, name of certificate issuer trên electronic certificate đều có thể giả mạo được ngoại trừ chữ ký lên các certificates, do các trusted CA đó đã dùng RSA Private Key của mình để "ký" (mã hóa) nên không ai có thể giả mạo được.
Đa số các loại web browser ngày nay đều có tích hợp sẵn các certificate của các trusted root CA như Verisign, Thawte, Entrust… khi xây dựng các websites mà muốn có được các certificate của các hãng này ký thì ta phải trả tiền, ví dụ như khi sử dụng certificate cho
mã hóa ssl 128-bit do Verisign ký thì chi phí một năm vào khoảng USD 900.
Đối với các giao dịch Internet banking sử dụng https (ssl) mà không dùng các trusted CA thì sẽ gặp rất nhiều khó khăn trong việc phân phối site’s certificate cho khách hàng để nhúng vào PC của họ (vì khi
đó site’s certificate phải được phân phối an toàn đến khách hàng bằng hình thức không thông qua Internet - out of band) và dịch vụ đó
Trang 17sẽ khó được sử dụng rộng rãi ở mọi nơi do gây khó khăn và phiền phức cho khách hàng trong vấn đề import site’s certificate.
Giá trị quyết định tính tin cậy (trusted) của mỗi CA sẽ phụ thuộc vào tổng số lượng các loại web browser được cài sẵn các root trusted certificates, khi các CA nào mà có đến 99% các loại web browser hiểu được mình một cách mặc định (trusted by default) thì các CA đó được xếp vào loại High-Assurance SSL Certificate như Verisign, Thawte, Entrust, Baltimore, Comodo…
PHẦN 2: PHẦN MỀM MINH HỌA THUẬT TOÁN RSA
I Giới thiệu phần mềm minh họa
Đây là một chương trình demo đơn giản được viết để người dùng hiểu nội dung của mã hóa RSA.
Trang 18B5: Chọn 1 phần của khóa riêng d đó là số nghịch đảo lớn hơn nhiều lần của e, phi D= e InvMod phi = 17 Invmod 3120 = 2753
Khi đó : Public key <n,e> = <3233,17>
Private key <n,d> = <3233,2753>
Chữ kí điện tử:
Trong khi mã hóa bằng public key thực hiện nhanh hơn cung cấp 1 phương thức an toàn cho việc trao đổi thông tin, và cách mã hóa này không cần biết người gửi gửi thông điệp gì Tuy nhiên đây là cách giúp xác định người gửi, chính là chữ
ký điện tử.
Nếu Alice muốn gửi một thông điệp có xác nhận chữ ký đến Bob, cô ấy có thể
mã hóa 1 chữ ký và tiếp tục mã hóa chữ kí đó 1 lần nữa, với public key của Bob và gắn chữ kí ấy với thông điệp mà cô ấy muốn gửi cho Bob.
Khi Bob nhận được thông điệp của Alice, Bob giải mã thông điệp ấy bằng private key của mình và thấy được chữ kí mã hóa kèm theo thông điệp của Alice Bob có thể giải mã chữ kí đó bằng cách sử dụng public key của Alice, nếu văn bản giải mã có thể đọc được, Bob xác nhận rằng người gửi thực sự là Alice.Trên thực
tế chữ ký có thể là 1 hash code của mật mã, của thông điệp mà cho phép người nhận xác minh rằng thông điệp này an toàn trong suốt quá trình truyền thông điệp.
Chương trình demo không có tính năng chữ ký, tuy nhiên vẫn thực hiện mã hóa và giải mã khá tốt.
II Cài đặt và thử nghiệm chương trình