Tải bản đầy đủ (.pdf) (6 trang)

TIỂU LUẬN TOÁN-MÃ HÓA CÔNG KHAI HỆ MÃ HÓA RSA

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 (113.47 KB, 6 trang )


1
MÃ HÓA CÔNG KHAI
Hӊ MÃ HÓA RSA

I. Cơ sӣ Toán Hӑc
1. Đӗng dư Modulo:
a, b đӗng dư modulo n nӃu |a-b| là bӝi sӕ cӫa n Tӭc: NӃu chia a cho n; b chia cho
n thì nhұn cùng sӕ dư
Ký hi͏u:
a Ł b ( mod n)
Ví dө: 13 Ł 3 (mod 10) vì (13 ± 3) = 10 là bӝi sӕ cӫa 10
Modulo có mӕi quan hӋ vӟi sӕ dư trong phép chia, phép toán tìm sӕ dư đôi
khi cũng giӕng như phép toán modulo.
Ví dө
: 2 = 14 (mod 12) , 2 Ł 14 (mod 12)
Nhưng: 38 Ł 14 (mod 12) thì đúng nhưng 38 = 14 (mod 12) lҥi không đúng
2. Nghӏch đҧo Modulo:
Sӕ nghӏch đҧo cӫa 10 là 1/10, bӣi vì 10 × 1/10=1. Trong sӕ hӑc modulo thì vҩn đӅ
nghӏch đҧo phӭc tҥp hơn.
4 × x Ł 1 mod 7
Phương trình trên tương đương vӟi tìm x và k sao cho
4x = 7k+1
vӟi điӅu kiӋn là cҧ x và k đӅu là sӕ nguyên.
Vҩn đӅ chung đһt ra tҥi đây là tìm x sao cho
1 = (a × x) mod n
có thӇ viӃt lҥi như sau :
a
-1
Ł x(mod n )
Sӵ thu nhӓ vҩn đӅ Modulo là rҩt khó giҧi quyӃt. Đôi khi nó là mӝt vҩn đӅ, nhưng


đôi khi lҥi không phҧi vұy.
Ví dө : nghӏch đҧo cӫa 5 modulo 14 là 3 bӣi
5 × 3 = 15 Ł 1 (mod 14).

Sӱ dөng thuұt toán Euclic mӣ rӝng đӇ tính nghӏch đҧo Modulo:
Giҧi thuұt sau sӁ tính nghӏch đҧo modulo m cӫa a và chӍ thӵc hiӋn vӟi các sӕ
nguyên m>a>0, biӇu diӉn bҵng giã mã:






2











Ví dө:
Tìm sӕ nghӏch đҧo (nӃu có) cӫa 30 theo môđun 101
Bưӟc i
m
a

r
q
y0
y1
y
0
101
30
11
3
0
1
-3
1
30
11
8
2
1
-3
7
2
11
8
3
1
-3
7
-10
3

8
3
2
2
7
-10
27
4
3
2
1
1
-10
27
-37
5
2
1
0
.
.
.
.










KӃt quҧ tính toán trong bҧng cho ta
37. Lҩy sӕ đӕi cӫa 37 theo mođun 101 đưӧc
64. Vұy 30
-1
mod 101= 64





Procedure Euclid_Extended (a,m)
int, y0=0,y1:=1;

While a>0 do
{
r:= m mod a
if r=0 then Break
q:= m div a
y:= y0-y1*q
m:=a
a:=r
y0:=y1
y1:=y
}
If a>1 Then Return "A không khҥ nghӍch theo
mođun m"
else Return " NghӍch đҥo modulo m cөa a là y"



3
3. Giҧi bài toán c=b
e
mod n vӟi sӕ lӟn:
Trong đó e là sӕ mũ lӟn, n là sӕ chia đӇ lҩy dư
Ví dө:
Tính 4
13
(mod 497)
Cách tính đơn thuҫn: 413=67108864 67108864 mod 497 =445
NӃu b và e lӟn thì b
e
sӁ rҩt lӟn và tính b
e
mod n sӁ mҩt nhiӅu thӡi gian và tӕn bӝ
nhӟ. Có mӝt sӕ cách đӇ giҧi quyӃt vҩn đӅ đó. Trong nӝi dung cӫa tiӇu luұn chúng
tôi sӱ dөng giҧi pháp như sau:
c Ł (a.b)(mod n) => ((a (mod n)).(b (mod n))) (mod n)
Áp dөng công thӭc trên ta có thuұt toán












Ví dө:
Tính 4
13
(mod 497)
c=1 , e¶=0 c Ł (b.c) (mod m)
e¶=1
c=(4*1)mod 497=4 mod 497 = 4
e¶=2
c=(4*4)mod 497=16 mod 497 = 16
e¶=3
c=(4*16)mod 497 = 64 mod 497 = 64
«
«.
«
«.
e¶=12
c=(4*121)mod 497 = 484 mod 497 = 484
e¶=13
c=(4*484)mod 497 = 1936 mod 497 = 445


II. HӋ mã hóa RSA
1. Mã hóa không đӕi xӭng (Mã hóa khóa công khai)
a. Đӏnh nghĩa
Thuұt toán mã hóa công khai là thuұt toán đưӧc thiӃt kӃ sao cho khóa mã hóa là
khác so vӟi khóa giҧi mã. Mà khóa giҧi mã hóa không thӇ tính toán đưӧc tӯ khóa
mã hóa. Khóa mã hóa gӑi là khóa công khai (public key ), khóa giҧi mã đưӧc gӑi là
khóa riêng (private key).






Input: b,e,m
Output: cŁ b
e
(mod m)
1/ Gán c=1, e¶=0
2/ e¶=e¶+1
3/ c Ł (b.c) (mod m)
4/ NӃu e¶<e quay lҥi bưӟc 2. Ngưӧc lҥi, c là kӃt
quҧ cҫn tìm.


4








Hình 6: Mã hóa vӟi khóa mã và giҧi mã khác nhau

Đһc trưng nәi bұt cӫa hӋ mã hóa công kha i là cҧ khóa công khai (public key) và
bҧn tin mã hóa (ciphertext) đӅu có thӇ gӱi đi trên mӝt kênh thông tin không an toàn
2. Các điӅu kiӋn cӫa mӝt hӋ mã hóa công khai :
ViӋc tính toán ra cһp khóa công khai KB và bí mұt kB dӵa trên cơ sӣ các điӅu kiӋn

ban đҫu phҧi đưӧc thӵc hiӋn mӝt cách dӉ dàng, nghĩa là thӵc hiӋn trong thӡi gian
đa thӭc .
Ngưӡi gӱi A có đưӧc khóa công khai cӫa ngưӡi nhұn B và có bҧn tin P cҫn gӱi đi
có thӇ dӉ dàng tҥo ra đưӧc bҧn mã C.
C =E
KB
(P) = E
B
(P)
Công viӋc này cũng trong thӡi gian đa thӭc.
Ngưӡi nhұn B khi nhұn đưӧc bҧn tin mã hóa C vӟi khóa bí mұt kB thì có
thӇ giҧi mã bҧn tin trong thӡi gian đa thӭc
P =D
kB
(C)
3. Thuұt toán mã hóa RSA
a. Khái ni͏m h͏ mã hóa RSA
Khái niӋm hӋ mұt mã RSA đã đưӧc ra đӡi năm 1976 bӣi các tác giҧ
R.RivetsK,A.Shamir , và L.Adleman.
Trong hӋ mã hóa RSA các bҧn rõ, các bҧn mã và các khóa (public key và private
key) là thuӝc tұp sӕ nguyên ZN ={1,«,N-1}. Trong đó tұp Z
N
vӟi N =pxq là các
sӕ nguyên tӕ khác nhau cùng vӟi phép cӝng, phép nhân mođun N tҥo ra mođun sӕ
hӑc N. Khóa mã hóa E
KB
là cһp sӕ nguyên (N, KB) và khóa giҧi mã D
kB
là cһp sӕ
nguyên (N, kB), các sӕ là rҩt lӟn, sӕ N có thӇ lên tӟi hàng trăm chӳ sӕ

Các phương pháp mã hóa và giҧi mã hóa là rҩt dӉ dàng.
Công viӋc mã hóa là sӵ biӃn đәi bҧn rõ P (Plaintext) thành bҧn mã C
(ciphertext) dӵa trên cһp khóa công khai KB và bҧn rõ P theo công thӭc sau đây
C = E
KB
(P) = P
KB
(mod N) (1)
Công viӋc giҧi mã là sӵ biӃn đәi ngưӧc lҥi bҧn mã C thành bҧn rõ P dӵa trên cһp
khóa bí mұt kB , mođun N theo công thӭc sau :
P =D
kB
(C) =C
kB
(mod N) (2)
DӉ thҩy rҵng, bҧn rõ ban đҫu cҫn đưӧc biӃn đәi mӝt cách thích hӧp thành bҧn mã,
sau đó đӇ có thӇ tái tҥo lҥi bҧn rõ ba n đҫu tӯ chính bҧn mã đó:
P =D
kB
(E
KB
(P)) (3)
Thay thӃ (1) vào (2) ta có:
Bҧn rõ
Bҧn mã
Giҧi mã
Bҧn rõ
Khoá mã
Khoá giҧi


5
( P
KB
)
kB
=P (mod N) (4)
Ta thҩy N =pxq vӟi p, q là sӕ nguyên tӕ. Trong toán hӑc đã chӭng minh đưӧc rҵng,
nӃu N là sӕ nguyên tӕ thì công thӭc (4) sӁ có lӡi giҧi khi và chӍ khi:
KB.kB Ł1 (mod
*
N)(5)
Trong đó
*
N =LCM(p-1, q-1 ).
(Lest Common Multiple) là bӝi sӕ chung nhӓ nhҩt .
Nói mӝt cách khác, đҫu tiên ngưӡi nhұn B lӵa chӑn mӝt khóa công khai KB mӝt
cách ngүu nhiên. Khi đó khóa bí mұt kB đưӧc tính ra bҵng công thӭc (5). ĐiӅu này
hoàn toàn tính đưӧc vì khi B biӃt đưӧc cһp sӕ nguyên tӕ (p, q) thì sӁ tính đưӧc
*
N



























Hình 7: Sơ đӗ các bưӟc thӵc hiӋn mã hóa theo thuұt toán RSA





Ví dө:

N=11413=101x113,
*
(N) =100x112 =11200 =2
6
x5
2

x7. KB phҧi chӑn sao cho không
chia hӃt cho 2,5, 7. Chӑn, chҷng hҥn KB =3533 khi đó
kB = KB
-1
mod11200=6597. Và ta có khóa công khai là (N,KB)=(11413,3533) khóa bí
mұt là 6597. Phép lұp mã và giҧi mã là
Chӑn p và q
Tính N = p x q
Tính
*
N
Chӑn khóa K
B
Chӑn khóa k
B
C = P
KB
(mod N)
P = C
kB
(mod N)
K
B
k
B
Bҧn rõ P
Bҧn mã C
Bҧn rõ gӕc

6

E
KB
(P) =P
KB
(mod N) =P
3533
(mod 11413)
D
kB
(C) =C
kB
(mod N) =C
6579
(mod 11413)

III. Cài đһt thuұt toán RSA :
y Chương trình đưӧc viӃt bҵng ngôn ngӳ lұp trình C#, có chӭc năng mô phӓng
lҥi toàn bӝ quá trình mã hóa và giҧi mã cӫa thuұt toán RSA.
y HiӋn tҥi thuұt toán chӍ cài đһt mã hóa các ký tӵ hoa, không dҩu.



Giao diӋn cӫa chương trình

 Quá trình xӱ lý cӫa chương trình như sau:
B1: Nhұp văn bҧn cҫn mã hóa vào ô ³Văn bҧn gӕc´
Ví dͭ
: CO SO TOAN
B2: Chương trình sӁ chuyӇn đәi văn bҧn đó thành chuӛi sӕ bҵng cách dӵa trên sӕ
thӭ tӵ cӫa chӳ cái đó trong bҧng chӳ cái.

CO SO TOAN -> 03152719152720150114
B3: Mã hóa chuӛi sӕ dӵa trên Khóa mã và sӕ N
03152719152720150114 -> 64241131545795607113154579471131517289
B4: Giҧi mã dӵa trên Khóa giҧi
64241131545795607113154579471131517289 -> 03152719152720150114
B5: Đưa ra văn bҧn gӕc dӵa trên chuӛi sӕ đưӧc giҧi mã

×