Tải bản đầy đủ (.doc) (27 trang)

Hệ mật RSA và ứng dụng trong bảo mật thông tin.DOC

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (587.91 KB, 27 trang )

Mục lục


 !" #$%#&'%()%*+,'%#) /$0+123
3!" 45%*06#&'%#&67%*8
/
9
9./ !:;<+1=&>4?%!1@<+1=& 4?%!1@A=&/2#B
BC?%!1@()06&+%*$2>D:E+0:F%G()!H%!I J
JK:E+0:F%G()D  !" #$%()!LM
M !" #@%!%!2%!#&'%()%*+,'%N
N!" #$%/$0+12#&'%#&67%*8
/
O
PQRSTUVWS
!" 1X,#!Y2/$0+12Z
3C?%!1[W=-=&#2//=&S0=/2%\WS]^
9_/`#a!b2c%*a!2:\WS]
BT:%!!L2!_#!)%*WS3
J6+45de,0f%*/g#!_#!)%*/`#/h0i%*WS9
Mj%*0k%*l2WSB
3TTTSWS
:m:#!:_+ !n%/o//:%!!L2N
.:4p# #!q%*!:_/!6G%*#&r%!O
!`%d"#s4%!*:33
.:1:_+#!2/a!t$3M
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
________________
BÁO CÁO THU HOẠCH CHUYÊN ĐỀ
uW
Đề 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ồ
Hệ mật RSA và ứng dụng trong bảo mật thông tin


 !" #$%#&'%()%*+,'%#) /$0+12
Một số định nghĩa
; Tập số tự nhiên:
 = {0, 1, 2, 3, 4, . . . }
; Tập số nguyên:
8 = {0, ±1, ±2, ±3, . . . }
; Thứ tự ≤ trên N là tối thứ tự.
; Quan hệ “6m()”, ký hiệu v :
a | b ⇔ ∃ k ∈ 8, k.a = b
Nói cách khác: b là Dg:() 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 2∧Dhay\2>D]
• 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 2∨D
• Phép toán chia “thương” và chia “dư”:
C?%!1[: 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à .
Một số tính chất, định lý, và thuật toán
; C?%!1[:
-2-
Hệ mật RSA và ứng dụng trong bảo mật thông tin
a, b ∈ N
*
⇒ a ∨ b = a.b / (a ∧ b).
; C?%!1[:
Với a, b ∈ N
*
và a > b ta có :
a ∧ b = a ∧ (a % b)
a ∧ b = a ∧ (a - b)
; !+`##$%<+1:0=: 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.
; C?%!1[K=w$+#
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.

; !+`##$%K=w$+#
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.
K%x+Dy^#!r0y2zdyz,y^
K3d3yzdy^z,3y^z,y
K9{!:1=D|^0$
K=*:%
}y2~Dz&y2;}Dzdyd3•}dz,y,3•},z
2yDzDy&zd3ydzdydz,3y,z,y,z
=%0
KB0y2zdyd3z,y,3
KJ&=#+&%0>d>,z
; C?%!1[GDt%l2()!L
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ố).
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.
3!" 45%*06#&'%#&67%*8
/

:t#!:x#/∈ N
*
C?%!%*!€2
!$d>,∈ Z, /∈ N
*
:
-3-
Hệ mật RSA và ứng dụng trong bảo mật thông tin
x 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
x+d>,∈ 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;
C?%!1[
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 8
/
.
C?%!1[GDt%l2()!L
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ố).
n =p
1
p
2
p
m
trong đó p
1
p
2
p
m
∈ P, p
1


p
2



p
m
;
C?%!1[
Một số nguyên n≥ 2 có thể biểu diễn duy nhất bằng tích các số nguyên tố theo
dạng:
n = (p
1
)
n1
(p
2
)
n2
(p
3
)
n3
(p
k
)
nk
; p
1
p
2
p
m
∈ P; p
1

<p
2
< p
m
;
hay n =Π
p

P
(p)
np
;
Định lý:
n= Π
p

P
(p)
np
;m= Π
p

P
(p)
mp
;k= Π
p

P
(p)

kp
; m,n,k ≥ 2
Ta có:
a) k=mn⇔ k
p
= m
p
+ n
p
, ∀ p ∈ P;
b) m| k ⇔ m
p
≤ k
p
, ∀ p ∈ P;
c) k = gcd(m,n) ⇔ k
p
= min(n
p
,m
p
), ∀ p ∈ P;
d) k = lmc(m,n) ⇔ k
p
= max(n
p
,m
p
), ∀ p ∈ P;
e) gcd(km,kn)=k gcd(m,n);

f) lcm(km,kn)=k lcm(m,n);
g) d=gcd(m,n), m=m/d,n=n/d ⇒ m

⊥ n

;
h) gcd(m,n)lcm(m,n) = mn;
i) m ⊥ n ⇔ m
p
n
p
=0, ∀ p ∈ P;
j) m ⊥ n ⇔ lcm(m,n) =mn, ∀ p ∈ P;
k) k ⊥ n, k ⊥ m ⇒ k ⊥ mn ;
Nhận xét:
* Các số nguyên m
1
m
k
là đôi một số nguyên tố cùng nhau nếu và chỉ nếu
min
1

i

k
(m
i
)
p

= 0; ∀ p ∈ P ⇔ Π
1

i

k
(m
i
)
p
=0;
-4-
Hệ mật RSA và ứng dụng trong bảo mật thông tin
* 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);
9./ !:;=+1=&>4?%!1@<+1=& 4?%!1@A=&/2#
;C?%!%*!€2: Một số nguyên a∈Z
m
được gọi là modulo khả nghịch nếu ∃d∈Z
m
:
Ax ≡ 1 (mod m)
Số x là duy nhất và được gọi là nghịch đảo của a modulo m kí hiệu a
-1
mod m hay
a
-1
;
;C?%!%*!€2Cho n≥ 1, ϕ(n) là tập chứa số các số nguyên [1,n], nguyên tố cùng
nhau với n. Hàm ϕ(n) gọi là hàm phi-Euler

ϕ(1) =1, ϕ(2) =2,ϕ(3) =2,ϕ(4) =2
;C?%!1[:
Cho x, y ∈8
m
, m ≥ 2.
o x ∈8
m
*
⇔ x ⊥ m.
o x, y ∈ 8
m
*
⇔ x
-1
, xy ∈ 8
m
*
.
o card(8
m
*
) = ϕ(m)
Nhận xét : Khi m nguyên tố thì ϕ(m) = m-1 và 8
m
*
= 8
m

- {0}.
; C?%!1[<+1=&:

Cho m ≥ 2. ta có :
x ⊥ m ⇒ x
ϕ
(m)
≡ 1 (mod m).
; C?%!1[A=&/2#:
Cho m ≥ 2. ta có :
p ∈ P, x ⊥ p ⇒ x
p-1
≡ 1 (mod p).
; C?%!1[:
a) p ∈ P, n ∈ Z ⇒ n
p
≡ n (mod p).
b) p ∈ P, n ∈ Z, r ≡ s (mod ϕ(m)) ⇒ n
r
≡ n
s
(mod p).
c) Nếu p và q là hai số nguyên tố khác nhau, và n = p.q thì
ϕ(n) = (p-1)(q-1).
; C?%!1[06()&+%*$2:
* 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 8
n
.
** Ánh xạ f : 8
n
→ 8
n1
x8

n2
x … x 8
nk
-5-
Hệ mật RSA và ứng dụng trong bảo mật thông tin
với f(x) = (x mod n
1
, x mod n
2
, …, x mod n
k
), x ∈8
n
, là song ánh.
; C?%!1[
Cho m ⊥ n.
Ánh xạ f : 8
mn
→ 8
m
x8
n
xác định bởi
f(x) = (x mod m, x mod n), x ∈8
mn
,
là song ánh.
BC?%!1@()06&+%*$2>D:E+0:F%G()!H%!I
C?%!%*!€2 cho m
1

,m
2
m
I
∈ N
*
đôi một nguyên tố cùng nhau m
1
<m
2
<m
I

M=m
1
* m
2
m
I
.
Thì mỗi số nguyên x ∈ [0,M] có thể được biểu diễn duy nhất dưới dạng :
v(x) = (v
1
,v
2
v
I
), v
I
=v

I
(x)=x(mod m
i
), 1≤ i≤ I ;
Và ánh xạ v : Z
m
→ Z
m1
x Z
m2
Z
ml
là một song ánh theo định lý số dư Trung Hoa
v(x) được gọi là một biểu diễn cơ số hỗn hợp của x cho modulo m
1
,m
2
m
I
.
Tổng và tích các biểu diễn hỗn hợp :
v(x)+v(y)=v(x+y)(mod M)=(w
1
,w
2
w
I
);
v(x)*v(y)=v((x*y)(mod M)=(z
1

,z
2
z
I
); Trong đó:
w =(ui+vi)(mod mi),zi=(ui*vi)(mod mi),1iI;
tổng quát ta có:
v(x)+ v(x )=v((x + x)(mod M))=v(x)+ +v(x )(mod M));
v(x )* *v(x)=v((x* *x )(mod M))=((v
1
(x )* …*v(x )(mod M)* *v
(x)*…v (x) mod m ∀k≥ 1.
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] ;
a) C=p
-1
mod q, u=(V2-V1)C mod q ;
b) X=V1+up
c) Return (x)
JK:E+0:F%G()D  !" #$%()!L
C?%!%*!€2 cho b ∈ N, b>=2.
Bất kỳ số nguyên a ∈ N
*
nào đều có thể được biểu diễn duy nhất dưới dạng:
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 ;
!+`#*:t:D:E+0:F%#!=$G()D
Input : a,b ∈ N
*
, b≥ 2 ;
-6-
Hệ mật RSA và ứng dụng trong bảo mật thông tin
Output : a=(a a aa)
b
i=0 ; x =a ; q=x/b ;a i = x%b.
While a>0, do : i =i+1 ;x=q ;q=x/b ;a =x%b
Return (a a aa)
b
Ví dụ : biểu diễn thập lục phân của 42 là : 42=2*16+A=(2A)

16
C?%!1[
Cho b ∈ N, b≥ 2 .
Nếu a= (a a aa)
b
là biểu diễn cơ sở của b theo a, và k là một số nguyên dương
thì :
A= (a a aa)
b
k
là biểu diễn cơ sở b
k
của a, trong đó :
u
i
= Σ
0

j

k-1
a
ik+j
b
j
, 0≤ i ≤ m-1, và
u
m
= Σ
0


j

n-2m
a
2m+j
b
j
, m+1 là số nguyên dương nhỏ nhất ≥ (n+1)/k
Khi k =2, ta có :
u
i
= Σ
0

j

1
a
i2+j
b
j
, 0≤ i ≤ m-1, và
u
m
= Σ
0

j


n-2m
a
2m+j
b
j
, m+1 là số nguyên dương nhỏ nhất ≥ (n+1)/2
Ví dụ :
Biểu diễn nhị phân của a = 123 là (1111011)
2
, thì biểu diễn tứ phân của a là :
a = ((1)
2
(11)
2
(10)
2
(11)
2
)
4
= (1323)
4
Thực vậy ta có b=2, n=6,k=2,(n+1)/2=3.5,n-2m=0.
u = ab +ab = (aa ) =(11)
2
= (3)
4
u
1
= ab +ab = (a

3
a
2
)
2
=(10)
2
= (2)
4
u = ab + ab =( aa)
2
=(11) = (3)
u = ab(a) = (1) = (1)
và (123) = 1* 4 3 + 3* 4 2+ 2*4+3= 64+48+8+3 =123.
Thuật giải biểu diễn cơ số b
Input : a,b ∈ N
*
, b ≥ 2 ;
Output : a = (a aaa)
b
và q,r : a= qb+r, 0 ≤ r <b
a)
Tính n= b
n
≤ a < b
n+1
b)
Cho i chạy từ n xuống 1, Do :
1.
Tính k :kb

i
≤ a <(k+1)b
i
;
2.
Đặt a
i
= k, a = a-kb
i
a=a,r = a;q=a b + + ab + a ;
c) Return (( a a aa)
b,q,r
)
Chú ý : b ≤ a<b ⇔ n≤ log(a)/log(b) < n :1
n = [log(a)/log(b)]
M !" #@%!%!2%!#&'%()%*+,'%
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)
Output : x+y = (w w ww)
(1) c=0~•;2&&,0:*:#•~
(2) cho i chạy từ 0 đến n, Do:
a. w = (x + y +c) %b
b. Nếu (x +y +c)< b then c=0 ; else c=1.
(3) w +1 = c
(4) Return (w w w w)
-7-
Hệ mật RSA và ứng dụng trong bảo mật thông tin

Thuật giải 3.6 (trừ 2 số nguyên dương)
Input : x,y∈ N
*
, x≥ y, x = ( x xx), y = ( y yy)
Output : x-y = (w ww)
(1) c=0~•;2&&,0:*:#•~
(2) cho i chạy từ 0 đến n, Do:
a. w = (x - y +c) %b
b. Nếu (x - y +c)< b then c=0 ; else c=-1.
(3) Return (w w w)
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:
a. c= 0
b. cho i chạy từ 0 đến n, Do: (uv) = w + X Y + c ;w = V ; c=u.
c. W = u.
(3) Return (w w w)
Ghi chú :
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:
a. c= 0
b. cho i chạy từ 0 đến n, Do: (uv) = w + X X + c ;w = V ; c=u.
c. W = u.
(3) Return (w w w)

N!" #$%/$0+12#&'%#&67%*8
/
Trong suốt phần này, ta xét m ∈ N
*
C?%!%*!€2
Cho x,y ∈ Z, m∈ N
*
; x được gọi là đồng dư với y modulo m, kí hiệu :
X ≡ y (mod m), nếu m chia hết cho x-y; m được gọi là dư số của phép đồng dư.
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≥ 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 ;
-8-
Hệ mật RSA và ứng dụng trong bảo mật thông tin
x >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.
!+`#*:t:#@%!#@!/$0+1$y\d•,]/$0/
1) Đặt x=x mod m, y = y mod m, và P = (x*y ) mod m.
2) Cho i từ 1 đến I, do :
a. x= (b*x) mod m ;
b. Tính x=(y
i
*x) mod m, và P= (P+z) mod m.
3) return P
Khi b =2, ta có :
!+`#*:t:#@%!#@!/$0+1$y\d•,]/$0/
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 ;
2)Tính x=(y
i
*x) mod m, và P= (P+z) mod m.
3) return P.
PQRSTUVWS
!" 1X,#!Y2/$0+12
C?%!%*!€2
Cho x ∈ Z
m
, và p ∈ N
*
; p = Σ
0

i

1
p 2 . Phép toán y = x
p
mod m được gọi là
phép lũy thừa modulo. Ta có : x
p

=x *(x)
p1
* ( x) * * (x)
!+`#*:t:
Input : x ∈ Z
m,

p = Σ
0

i

1
p 2
Output : y = x
p
mod m
(1) y =1 Nếu p=0, return y
(2) A = x nếu p
0
= 1 thì y = x
(3) Cho i chạy từ 1 đến I, do :
a. A= A mod m ;
b. Nếu p =1 thì y = (A*y) mod m
(4) return y
Thuật giải tính lũy thừa từ trái sang phải
Input : x ∈ Z
m,
p = Σ
0

i

1
p 2
Output : y = x
p

mod m
(1) y =1
(2) Cho i chạy từ 1 đến I, do :
-9-
Hệ mật RSA và ứng dụng trong bảo mật thông tin
a. y= y mod m ;
b. Nếu p =1 thì y = (x*y) mod m
(3) return y
thuật giải:
Input : x ∈ Z
m,
p = Σ
0

i

1
p 2
Output : y = x
p
mod m
(1) x
0
=1. cho i chạy từ 1 đến b-1, do :
x
i
= (x
i-1
*x) mod m
(2) y=1 cho i chạy từ I đến 0, do :

a. y = y
b
mod m
b. Nếu p
i
= 1 thì y = (y* x
pi
) mod m.
(3) return y
!:!‚ 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
:
k = k
1
+n
1
(p-1) = k
2
+n
2
(q-1)

thì x
k
(mod p) = ( x (mod p))( x (mod p)) , x mod p =1 (định lý Fermat)
Vì thế x
k
(mod p) = x (mod p)
Ta có x
k
(mod q) = x (mod q) (tính đối xứng), Vì thế x
k
(mod p) = x (mod p),
x
k
(mod q) = x (mod q)
Ta có :
V(x) = v(x mod pq)
= (v(x) mod p, v (x) mod q)
= (v(x) mod p, v (x) mod q)
Trong đó :
V(x) = (v (x), v (x))=(x mod p,x mod q),
k = k mod (p-1), k = k mod (q-1)
Lưu ý : thuật giải tính lũy thừa từ trái sang phải có thể mở rộng với nhiều số
nguyên tố phân biệt. Ví dụ, khi q,p,r phân biệt, ta có :
v(x) k = v(x mod pqr)
= ( v (x) mod p, v (x) mod q, v (x) mod r
= v ( x) mod p, v (x) mod q, v (x) mod r)
Trong đó :
v(x) = ( v (x), v (x), v (x))
= ( x mod p, x mod q, x mod r),
k = k mod (p-1),

k = k mod (q-1),
k = k mod (r-1).
3C?%!1[W=-=&#2//=&S0=/2%\WS]
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.
!ƒ%*/:%!
Do ed=1 mod ϕ, ∃ k thỏa mãn ed =1+ kϕ (định lý Euler)
-10-
Hệ mật RSA và ứng dụng trong bảo mật thông tin
Ta có m =1 mod N, vì thế:
( m mod N)
k
= 1
k
mod N = 1 mod N,
(( m mod N)
k
mod N) m = (1 mod N)m= m mod N = m,
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.

9_/`#a!b2c%*a!2:\WS]
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 \<%&, #:$%]„+#&r%!!+,E%4…:0†1:_+*)#!.%!0†1:_+46I/h!b2(2$%*67:
a!a!c%*#!E4L!:E+46I(kí hiệu E);
- Giải mã \U=&, #:$%]„+#&r%!%*6I1‡:l2/h!b2>D:x%4…:0†1:_+4h46I/h!b2#!.%!
0‡%**)D2%4n+(kí hiệu D);
- Thông điệp \T=((2*=]>bản gốc \12:%#=d#]_ 0†1:_+!62/h!b2(kí hiệu M).
- Bản mã \: !=&#=d#]_ 0†1:_+4h46I/h!b2(kí hiệu C).
!=$}+,6m>a!:/h!b2#!ry<\T] a!:*:t:/h#!rTyU\]yU\<\T]]
Thuật giải phát sinh khóa cho RSA:
B1 : Tính N = pq và ϕ = ϕ(n) = (p-1)(q-1) ; p,q là 2 số nguyên tố phân
biệt đủ lớn.
B2 : Chọn ngẫu nhiên một số nguyên e ∈ ] 1, ϕ[ thỏa mãn gcd(e,ϕ) = 1
B3 : Sử dụng thuật giải Bezout tính số nghịch đảo d ∈ ]1, ϕ[ của e ; ed
=1 mod ϕ.
B4 : Cặp (N,e) là khóa công khai, và (N,d) là khóa cá nhân.
; !+`#*:t:WS:
ˆ‰Th!b2
(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).
ˆ3‰:t:/h
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. (dùng định lý RSA)
-11-
Hệ mật RSA và ứng dụng trong bảo mật thông tin
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.
BT:%!!L2!_#!)%*WS
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.
Hệ thống mã hóa RSA đầu tiên của ta ở đây sử dụng hai khóa công khai (N
1
,e
1
),
(N
2
,e
2

), trong đó:
p
1
= 2699, q
1
=795659; N
1
= p
1
*q
1
=2147483641;
ϕ
1
= (p
1
-1)*(q
1
-1);e
1
=3674911; d
1
=e
1
-1
mod ϕ
1
;p
1
,q

1,
ϕ
1
∈ P;
p
2
= 5843, q
2
=367531; N
2
= p
2
*q
2
=2147483633;
ϕ
2
= (p
2
-1)*(q
2
-1);e
2
=3674911; d
1
=e
2
-1
mod ϕ
2

;p
2
,q
2,
ϕ
2
∈ P;
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:
r%!9/h!b20i%*WS
Trong đó (e,N) là cặp khóa công khai

-12-
m: Plain text
C= m modulo N
Khóa (e,N)
c: cipher text
Hệ mật RSA và ứng dụng trong bảo mật thông tin
B]:t:/`#
r%!93*:t:/`##&'%!_WS
Trong đó (d,N) là cặp khóa riêng tư
J6+45de,0f%*/g#!_#!)%*/`#/h0i%*WS
-13-
c: cipher text
m = c modulo N

Khóa (d,N)
m: Plain text

Hệ mật RSA và ứng dụng trong bảo mật thông tin
Mj%*0k%*l2WS
M=#:Š:2#=S+#!$&:#,\S]
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).
-14-
/* 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
Tính xx1=ME(xx,M1,e1) x2= ME(xx1,M1,e1)
xx3= ME(xx2,M1,e1) yy1


=ME(xx3,M2,e2)

yy2=ME(yy1,M2,e2) y3=ME(yy2,M2,e2)
yy=yy3 (thu được kết quả văn bản đã giải mã)

Kết thúc chương trình
chính
Hệ mật RSA và ứng dụng trong bảo mật thông tin
c. 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.
+ CONFIDENTIALITY: Không ai có thể đọc được nội dung data khi
đang giao dịch.
+ INTEGRITY: Bảo đảm được tính toàn vẹn của data, không ai có thể
sửa đổi lại data.
+ AUTHENTICATION: Bảo đảm được tính xác thực của đối tác đăng
ký, không ai có thể giả mạo được.
M3j%*0k%*WS#&$%*%#=&%=#D2%a:%*0i%**:2$#!ƒ!## (((1
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) :
K. 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.
K3. Web server trả về cho web browser site's certificate.
K9. 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).
KB. 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.
KJ. 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.
-15-
Hệ mật RSA và ứng dụng trong bảo mật thông tin
Như 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ụ đó
-16-
Hệ mật RSA và ứng dụng trong bảo mật thông tin
sẽ 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…

3TTTSWS
 :m:#!:_+ !n%/o//:%!!L2
Đâ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.

B1: Chọn 2 số nguyên tố khác nhau vd: p =61, q=53
B2 : Tính toán n=p*q n =3233 đây là số mật mã
B3: Tính toán theo thuật toán Euler’s
phi = (p-1)*(q-1) phi = 60% 52 = 3120
B4: Chọn 1 phần của khóa chung e <phi mà gcd(e,phi)=1 vd e=17
-17-
Hệ mật RSA và ứng dụng trong bảo mật thông tin
B5: 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.
 .:4p# #!q%*!:_/!6G%*#&r%!
-18-

Hệ mật RSA và ứng dụng trong bảo mật thông tin
Trang Alice:
Chương trình tự tạo khóa public key 1 cách ngẫu nhiên với key size 16 bits, 64
bits, 256 bits, 1024 bits bằng cách chọn nút make a new key và chọn các check box
key size tương ứng.
Gõ thông điệp mà Alice muốn gửi cho Bob vào ô Message for Bob, nếu muốn
gõ thông điệp mới thì chọn nút Clear message để gõ mới nội dung. Sau đó chọn
nút Encrypt using Bob’s public key để mã hóa nội dung vừa gõ

W5:!L%%‚#=%0/=((2*=#$K$D>1‚%.,!6G%*#&r%!!‡,#f!+,E%(2%*
#&2%*K$D‹( 2*=%!6(2+
-19-
mã hóa nội dung vừa gõ với
key size 16 bits
Hệ mật RSA và ứng dụng trong bảo mật thông tin
!L%%‚#U=&,#/=((2*=Š&$/S1:=\{:#!K$D &:-2#=a=,]4E*:t:/h
!L%%‚#1:a#$(== &:-2#=a=,4Ed=/ &:-2#=a=,l2K$D
-20-
Nội dung mã hóa nhận được
từ Alice với key size 16 bits
Nội dung giải mã nhận được
từ Alice với key size 16 bits
Hệ mật RSA và ứng dụng trong bảo mật thông tin
6G%*#fb#!E*q:#!c%*4:_ #YK$D!$S1:=
Trang Bob:
Chương trình tự tạo khóa public key 1 cách ngẫu nhiên với key size 16 bits, 64
bits, 256 bits, 1024 bits bằng cách chọn nút make a new key và chọn các check box
key size tương ứng.
Gõ thông điệp mà Bob muốn gửi cho Alice vào ô Message for Alice, nếu muốn
gõ thông điệp mới thì chọn nút Clear message để gõ mới nội dung. Sau đó chọn

nút Encrypt using Alice’s public key để mã hóa nội dung vừa gõ

W5:!L%%‚#=%0/=((2*=#$S1:=>1‚%.,!6G%*#&r%!!‡,#f!+,E%
(2%*#&2%*S1:=‹( 2*=%!6(2+
-21-
mã hóa nội dung vừa gõ với
key size 16 bits
mã hóa nội dung vừa gõ với
key size 16 bits
Hệ mật RSA và ứng dụng trong bảo mật thông tin

!L%%‚#U=&,#/=((2*=Š&$/K$D\{:#!S1:= &:-2#=a=,]4E*:t:/h
!L%%‚#1:a#$(== &:-2#=a=,4Ed=/ &:-2#=a=,l2S1:=
-22-
Nội dung mã hóa nhận được
từ Bob với key size 16 bits
Nội dung giải mã nhận được
từ Bob với key size 16 bits
Hệ mật RSA và ứng dụng trong bảo mật thông tin
!`%d"#s4%!*:
Mã hoá RSA 1024 bit đã bị phá vỡ
Các nhà khoa học thuộc Đại học Michigan vừa công bố phát hiện một kẽ hở
trong hệ thống mã hoá RSA vốn được sử dụng rất phổ biến hiện nay. Họ cũng mô
tả một cách phá vỡ hệ thống, lấy khoá công khai RSA 1024 bit trong vài ngày thay
vì vài năm nếu tấn công theo cách thông thường.
Thay vì tấn công bằng brute force (dò tìm lần lượt) theo cách thông thường, các
nhà khoa học tạo một điện thế lớn để gây lỗi hệ thống, từ đó giúp tìm ra khoá bí
mật. Việc tấn công được thực hiện trên một FPGA.
Điều thú vị là, cách đây không lâu, một bài báo cho đã công bố việc bẻ khoá RSA
768 bit thực hiện trên 80 vi xử lí Opteron. Theo bài báo đó, RSA 768 bit khó hơn

1000 lần so với RSA 512 bit (bị phá vỡ cách đây một thập kỉ), và RSA 1024 bit khó
hơn 1000 lần so với RSA 768 bit. Theo công bố của bài báo trên (tháng 2/2010),
RSA 1024 bit có thể bị phá vỡ bằng sức tính toán tương đương với 1500 năm,
dùng một VXL Opteron 2,2 GHz.
-23-
Hệ mật RSA và ứng dụng trong bảo mật thông tin
Thế mà giờ đây, theo cách tấn công mới, RSA 1024 bit đã bị bẻ gãy trong 100 giờ.
Báo cáo được trình bày tại hội nghị DATE 2010 diễn ra tại Dresden_ Đức.
Chương trình demo khá tốt việc mã hóa và giải mã, tuy nhiên để tránh mã hóa
RSA bị phá vỡ thì nên xây dựng thêm chức năng chữ ký điện tử bằng cách ứng
dụng chữ kí điện tử sử dụng MD5, RSA.
Chữ ký điện tử
!†a[4:_%#q\U:*:#21:*%2#+&=]0f2#&'%aŒ#!+`#(q0k%*/h!b2a!b2c%*a!2:&$%*4b>
t%*67:*q: %*67:%!`%>/H:%*67:b/g#p a!b21.a!b2D@/`#>!2,&:'%*#6\&:-2#=•=,]
a!b2c%*a!2:\+D1:•=,]
Chữ ký điện tử hoạt động khi một người gửi một thông điệp, người đó dùng
khóa riêng của mình để mã hóa thông điệp sang một dạng khó nhận dạng. Người
nhận dùng khóa công khai của người gửi để mã hóa thông điệp. Tuy nhiên, để an
toàn thật sự phải có các bước bổ sung. Do đó, thuật toán băm MD5 và thuật toán
mã hóa RSA có thể được áp dụng để xây dựng ứng dụng chữ ký điện tử.
Thuật toán MD5:
Hàm băm (Hash Function) nhận giá trị vào (Input) là một thông điệp M ở có
chiều dài bất kỳ, để biến (băm) thành một giá trị h ở đầu ra (Output) có chiều dài
cố định, h được gọi là giá trị băm (Hash Value).
Thuật toán MD5 (Message Digest 5), do Ronald Rivest thiết kế năm 1991, là
xây dựng một hàm băm để mã hóa một tín hiệu vào có chiều dài bất kỳ và đưa ra
một tín hiệu (Digest) ở đầu ra có chiều dài cố định 128 bit (tương ứng với 32 chữ
số hệ 16). [2]
Dưới đây là các ví dụ mô tả các kết quả sau khi thực hiện hàm băm MD5.
- MD5("xin chao") = 2201c07c37755e663c07335cfd2f44c6

Chỉ cần một thay đổi nhỏ (chẳng hạn viết hoa chữ x thành X) cũng làm thay
đổi hoàn toàn kết quả trả về :
- MD5("Xin chao") = e05c1d9f05f5b9eb56fe907c36f469d8
Thuật toán cũng cho kết quả đối với chuỗi rỗng :
- MD5(" ") = d41d8cd98f00b204e9800998ecf8427e
-24-
Hệ mật RSA và ứng dụng trong bảo mật thông tin
Quá trình ký và gửi các tệp văn bản
- Từ file cần gửi ban đầu, chương trình sẽ sử dụng hàm băm MD5 để mã hóa
thành chuỗi ký tự dài 128 bit, hash value (gọi là bản tóm lược).
- Chương trình sử dụng thuật toán RSA để mã hóa khóa riêng (private key)
của người gửi và bản tóm lược hash value thành một dạng khác (giá trị băm
ở dạng mật mã) gọi là chữ ký điện tử.
- Kết hợp file ban đầu với chữ ký điện tử thành một thông điệp đã ký và gửi
đi cho người nhận.
G45/c#t}+#&r%!a@ *q:#_ -Ž%Dt%
Quá trình nhận các tệp văn bản
Sau khi người nhận đăng nhập vào hệ thống và thực hiện việc nhận các tệp văn
bản. Hệ thống sẽ tách thông điệp đã ký thành ra file và chữ ký điện tử. Đến giai
đoạn này sẽ có 2 quá trình kiểm tra :
1. Kiểm tra file có đúng người gửi hay không?
- Sử dụng thuật toán RSA để giải mã chữ ký điện tử bằng khóa công khai
(username) của người gửi.
- Nếu giải mã không được thì file nhận được không đúng người gửi.
- Nếu giải mã thành công thì file nhận được đúng người gửi và có được Bản
tóm lược 1.
2. Kiểm tra file có bị thay đổi hay không?
- Từ file được tách ra ta sử dụng hàm băm MD5 mã hóa thành Bản tóm lược
2.
- Kiểm tra Bản tóm lược 1 và Bản tóm lược 2 có giống nhau hay không? Nếu

giống nhau thì file nhận được là vẹn toàn (không bị thay đổi hay tác động),
ngược lại là file đã bị thay đổi.
-25-

×