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

Lí thuyết thông tin BKHCM

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 (523.93 KB, 34 trang )

Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 103
BÀI 13 MÃ VÒNG
13.1 Gii thiu
13.2 Các tính cht ca mã vòng
13.3 Ma trn sinh và ma trn kim tra ca mã vòng
13.4 Mã BCH
13.1 Gii thiu
nh ngha 13.1

Mt mã tuyn tính C(n, k) đc gi là mã vòng nu w = a
0
a
1
…a
n–2
a
n–1
là mt t mã
thì v = a
n–1
a
0
a
1
…a
n–2
cng là mt t mã.
Nói cách khác mã vòng là mã có tính vòng, có ngha là dch vòng mt t mã thì kt qu
cng là mt t mã.
Chú ý


 đây chúng ta thy vic dch vòng đc thc hin t trái sang phi (gi là dch phi),
tuy nhiên vi t mã có chiu dài n bit thì vic dch vòng ngc li t phi sang trái i bit (gi
là dch trái) thì kt qu cng ging vi vic dch phi (n
– i) bit. Vì vy nu chúng ta dch
trái (dch t phi sang trái) mt t mã thì kt qu cng là mt t mã. Tuy nhiên  đây khi
nói dch thì chúng ta hiu là dch phi.
a thc mã
Nu w = a
0
a
1
…a
n–2
a
n–1
là mt t mã thì w(x) = a
0
+ a
1
x + … + a
n–2
x
n - 2
+ a
n–1
x
n - 1

đa thc mã tng ng vi t mã w.
Vy chúng ta có mt song ánh gia các t mã vi các đa thc mã. Mi đa thc mã là mt đa

thc trên trng GF(2) và có bc ≤ n – 1. Nh sau này chúng ta s thy, chúng ta s da vào
các đa thc mã này đ chng minh các tính cht ca mã vòng.
Ví d 13.1
Bng sau đây trình bày mt mã vòng C(7, 4). Các bn có th kim tra rng mã này là
mt mã tuy
n tính và có tính vòng.
Thông báo
u = a
0
… a
k–1

T mã
w = b
0
… b
n–1

a thc mã
w(x) = b
0
+ b
1
x + … + b
n–2
x
n - 2
+ b
n–1
x

n - 1

0000 0000000 0
1000 1101000 1 + x + x
3

0100 0110100 x + x
2
+ x
4

1100 1011100 1 + x
2
+ x
3
+ x
4

0010 0011010 x
2
+ x
3
+ x
5

1010 1110010 1 + x + x
2
+ x
5


0110 0101110 x + x
3
+ x
4
+ x
5

1110 1000110 1 + x
4
+ x
5

0001 0001101 x
3
+ x
4
+ x
6

1001 1100101 1 + x + x
4
+ x
6

0101 0111001 x + x
2
+ x
3
+ x
6


1101 1010001 1 + x
2
+ x
6

0011 0010111 x
2
+ x
4
+ x
5
+ x
6

1011 1111111 1 + x + x
2
+ x
3
+ x
4
+ x
5
+ x
6

Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 104
0111 0100011 x + x
5

+ x
6

1111 1001011 1 + x
3
+ x
5
+ x
6

Chú ý
Vì tng ca hai t mã là mt t mã nên tng ca hai đa thc mã là mt đa thc mã.
w
(
i
)
,
w
(
i
)
(x)
w
(i)
là t mã do dch t mã w i bit, và w
(i)
(x) là đa thc mã tng ng ca w
(i)
.
Chú ý chúng ta coi w chính là w

(0)
. Bây gi chúng ta s tìm mi liên h gia w
(i)
(x) vi w(x).
Chúng ta da vào ví d trên đ tìm mi liên h này.
i
w
(i)
w
(i)
(x)
0 1101000 1 + x + x
3

1 0110100 x + x
2
+ x
4
= x * (1 + x + x
3
) = x * w(x)
2 0011010 x
2
+ x
3
+ x
5
= x
2
(1 + x + x

3
) = x
2
* w(x)
3 0001101 x
3
+ x
4
+ x
6
= x
3
(1 + x + x
3
) = x
3
* w(x)
4 1000110 1 + x
4
+ x
5
= x
4
+ x
5
+ x
7 mod 7

5 0100011 x + x
5

+ x
6
= x
5
+ x
6
+ x
8 mod 7

6 1010001 1 + x
2
+ x
6
= x
6
+ x
7 mod 7
+ x
9 mod 7

Chúng ta thy rng w
(i)
(x) = x
i
* w(x) tuy nhiên nu w
(i)
(x) có x
p
vi p ≥ n thì x
p

đc thay
bng x
p mod n
. Mc khác trên trng GF(2) chúng ta có
x
n + j
= x
j
* (x
n
+ 1) + x
j
hay x
n + j
mod (x
n
+ 1) = x
j

T đây chúng ta có b đ sau v mi liên h gia w
(i)
(x) vi w(x).
B đ 13.1
w
(i)
(x) = [x
i
* w(x)] mod (x
n
+ 1)

13.2 Các tính cht ca mã vòng
Trong phn này chúng ta s dn ra mt s tính cht ca mã vòng.
nh lý 13.1
a thc mã khác 0 có bc nh nht là duy nht. Hay nói cách khác không tn ti
hai đa thc mã khác 0, khác nhau và cùng có bc nh nht.
Chng minh
Gi s tn ti hai đa thc mã khác 0, khác nhau và cùng có bc nh nht là r, 0 < r < n.
g(x) = g
0
+ g
1
x + … + g
r–1
x
r - 1
+ x
r

f(x) = f
0
+ f
1
x + … + f
r–1
x
r - 1
+ x
r

T đây suy ra đa thc mã g(x) + f(x) có bc nh hn r, mâu thun. Chng minh hoàn tt.

Chúng ta kí hiu đa thc mã có bc nh nht là g(x) và kí hiu là
g(x) = g
0
+ g
1
x + … + g
r–1
x
r - 1
+ x
r

nh lý 13.2
H s t do g
0
ca g(x) phi bng 1.
Chng minh
Gi s g
0
= 0. Suy ra
g(x) = x * (g
1
+ … + g
r–1
x
r - 2
+ x
r - 1
)
Lý thuyt Thông tin

Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 105
t f(x) = (g
1
+ … + g
r–1
x
n - 2
+ x
r - 1
). Chúng ta suy ra f(x) cng là mt đa thc mã. Vì t mã
tng ng vi f(x) là kt qu ca vic dch trái 1 bit hay dch phi (n – 1) bit t mã tng
ng vi g(x). Mà bc ca f(x) bng r – 1 và d nhiên f(x) khác 0. iu này mâu thun vi
đnh ngha ca g(x). T đây suy ra điu phi chng minh.
nh lý 13.3
Mt đa thc
v(x) trên trng GF(2) có bc ≤ n – 1 là đa thc mã nu và ch nu nó
là mt bi s ca g(x). Tc là nó có th vit v(x) = q(x) * g(x).
Chng minh
Trc ht chúng ta chng minh nu v(x) = q(x) * g(x) và bc ca v(x) ≤ n – 1 thì v(x) là
đa thc mã. Thc vy, chúng ta có
v(x) = q(x) * g(x) =
()
∑∑
==
=









p
i
i
i
p
i
i
i
gqgq
00
)x(*x)x(*x
trong đó p là bc ca q(x) và p + r ≤ n – 1. Mà do x
i
* g(x) vi 0 ≤ i ≤ p là đa thc mã
(tng ng vi t mã do t mã g(x) dch i bit). Nên v(x) là đa thc mã vì bng vi mt t
hp tuyn tính ca các đa thc mã.
Bây gi nu v(x) là đa thc mã thì chia v(x) cho g(x) chúng ta đc
v(x) = q(x) * g(x) + r(x)
trong đó r(x) là đa thc d và có bc nh hn b
c ca g(x). Nhng đi vi các đa thc trên
trng GF(2) chúng ta có th suy ra
r(x) = q(x) * g(x) + v(x)
Nên r(x) là mt đa thc mã. Vì vy do đnh ngha ca g(x) chúng ta suy ra r(x) = 0. Chng
minh hoàn tt.
T đnh lý này chúng ta gi tên đa thc g(x) là đa thc sinh, vì t g(x) có th sinh ra tt c
các đa thc mã khác.
nh lý 13.4

a thc sinh ca m
t mã vòng C(n, k) có bc r = n – k.
Chng minh
Gi r là bc ca đa thc sinh g(x). T đnh lý trên chúng ta có mi đa thc mã v(x) là
mt bi s ca g(x)
v(x) = q(x) * g(x)
Vì vy có bao nhiêu t mã thì có by nhiêu đa thc q(x). Trc ht chúng ta thy do bc ca
v(x) ≤ n – 1 nên bc ca q(x) ≤ (n
– 1) – r. Do đó có tng cng 2
n – r
đa thc q(x) (vì q(x) có
n – r h s thuc trng GF(2)) Mt khác s lng t mã là 2
k
. T đây suy ra
n – r = k hay r = n – k
Chng minh hoàn tt.
T đnh lý này chúng ta có th biu din đa thc sinh g(x) nh sau
g(x) = g
0
+ g
1
x + … + g
n – k
x
n – k

trong đó g
0
= g
n – k

= 1.
nh lý 13.5
a thc sinh ca mt mã vòng C(n, k) là mt c s ca x
n
+ 1.
Chng minh
T B đ 13.1 chúng ta suy ra
g
(i)
(x) = [x
i
* g(x)] mod (x
n
+ 1)
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 106
hay chúng ta có th vit
x
i
* g(x) = q(x) * (x
n
+ 1) + g
(i)
(x)
Bây gi chn i = k và đ ý bc g(x) = n – k nên chúng ta suy ra q(x) = 1 tc là
x
k
* g(x) = (x
n
+ 1) + g

(i)
(x)
T đây suy ra
x
n
+ 1 = x
k
* g(x) + g
(i)
(x)
Mà do g
(i)
(x) là mt đa thc mã nên g
(i)
(x) phi là mt bi ca g(x), tc là chúng ta có th
vit g
(i)
(x) = g(x) * a(x). Th vào trên chúng ta suy ra điu phi chng minh.
x
n
+ 1 = g(x) * (x
k
+ a(x))
nh lý 13.6
Nu g(x) là mt đa thc có bc (n – k) và là c s ca (x
n
+ 1) thì g(x) sinh ra mã
vòng C(n, k), hay nói cách khác g(x) là đa thc sinh ca mt mã vòng C(n, k) nào đó.
Chng minh
Xét k đa thc g(x), x * g(x), …, x

k – 1
* g(x). Các đa thc này đu có bc ≤ n – 1. Gi
v(x) là mt t hp tuyn tính ca k đa thc này vi các h s a
i
∈ GF(2).
v(x) = a
0
g(x) + a
1
x * g(x) + … + a
k – 1
x
k – 1
* g(x)
v(x) là mt đa thc có bc ≤ n – 1 và là bi s ca g(x). Có tt c 2
k
đa thc v(x) khác nhau
và to nên mt không gian tuyn tính ca các đa thc mã vi g(x), x * g(x), …, x
k – 1
* g(x)
là các đa thc làm c s. Vì vy 2
k
t hp (a
0
a
1
… a
k – 1
) tng ng vi
2k

đa thc này to
nên mt mã tuyn tính C(n, k). Bây gi chúng ta chng minh mã này có tính vòng, tc là
chng minh nu v là mt t mã thì dch v 1 bit chúng ta đc v
(1)
cng là mt t mã. iu
này cng tng đng vi nu v(x) là mt đa thc mã thì v
(1)
(x) cng là mt đa thc mã.
u tiên chúng ta biu din v(x)
v(x) = b
0
+ b
1
x + … + b
n – 1
x
n – 1

thì
v
(1)
(x) = b
n – 1
+ b
0
x + b
1
x
2
+ … + b

n – 2
x
n – 1


Theo B đ 13.1 chúng ta có
v
(1)
(x) = [x * v(x)] mod (x
n
+ 1)
Da vào biu din ca v(x) và v
(1)
(x) chúng ta suy ra
x * v(x) = b
n – 1
(x
n
+ 1) + v
(1)
(x)
Do v(x) và (x
n
+ 1) đu là bi ca g(x) nên v
(1)
(x) cng là bi ca g(x). Vì vy v
(1)
(x) cng là
đa thc mã. Chng minh hoàn tt.
13.3 Ma trn sinh và ma trn kim tra ca mã vòng

Ma trn sinh ca mã vòng
T các đnh lý trên chúng ta suy ra mt t mã là mt t hp tuyn tính ca các t mã
tng ng vi các đa thc mã g(x), x * g(x), …, x
k – 1
* g(x). Và vi chú ý rng các đa thc
g(x), x * g(x), …, x
k – 1
* g(x) đc lp tuyn tính vi nhau. Vì vy ma trn sinh ca mã vòng
C(n, k) s là, trong đó g
0
= g
n – k
= 1.
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 107























−+−
=

−−−

−−
−−

×
44448444476
L
MMMM
L
L
L
44448444476
L
MMMMM
L
L
L
1
0

00
000
1
000
00
0
21
1
0
20
110
210
k
ggg
gg
g
kn
g
gg
ggg
gggg
G
kn
knkn
kn
kn
kn
kn
nk


Ví d 13.2
Tìm mt mã vòng C(7, 4).
Theo các tính cht ca mã vòng chúng ta suy ra đa thc sinh ca mã có bc bng 3 và là mt
c s ca x
7
+ 1. Phân tích đa thc này ra tha s chúng ta đc
x
7
+ 1 = (1 + x)(1 + x + x
3
)(1 + x
2
+ x
3
)
 đây chúng ta có hai tha s ca x
7
+ 1 cùng có bc bng 3, mi tha s s sinh ra mt mã
vòng C(7, 4). Bây gi chúng ta chn chng hn
g(x) = (1 + x + x
3
)
T đây chúng ta suy ra ma trn sinh ca mã vòng này là













=
×
1011000
0101100
0010110
0001011
74
G
B mã này chính là b mã đc trình bày trong Ví d 13.1.
Mã vòng dng h thng
 tìm mã vòng dng h thng, chúng ta bin đi t ma trn sinh thành ma trn sinh
dng h thng.  đây chúng ta chú ý rng do tính vòng nên t dng h thng loi 1 chúng ta
có th dch vòng k bit đ bin đi sang dng h thng loi 2 và ngc li. Ví d t ma trn
sinh trong Ví d 13.2 chúng ta bin đi nh sau thì
đc ma trn sinh h thng dng 2: h
3
=
h
3
+ h
1
, h
4
= h
4

+ h
1
+ h
2
trong đó h
i
là hàng th i ca ma trn.












=
×
1000101
0100111
0010110
0001011
)74(ht
G
Và t đây chúng ta có th có đc ma trn sinh h thng dng 1 bng cách dch vòng k = 4
bit. Kt qu chúng ta có ma trn sinh h thng dng 1 nh sau













=
×
1011000
1110100
1100010
0110001
)74(ht
G
Mã hoá thành t mã h thng
Ngoài vic dùng ma trn sinh h thng đ mã hoá mt thông báo thành t mã h thng
chúng ta có th dùng cách sau đây đ mã hoá thông báo u = a
0
a
1
a
k - 1
thành t mã h thng
dng 2 w = b
0

b
1
b
n–k–1
a
0
a
1
a
k - 1
trong đó n – k bit b
i
là các n – k bit kim tra.
Gi u(x) là đa thc tng ng vi thông báo u. Vì vy bc ca u(x) ≤ k – 1. Chia x
n–k
* u(x)
cho g(x) chúng ta đc
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 108
x
n–k
* u(x) = q(x) * g(x) + a(x)
T đây suy ra
x
n–k
* u(x) + a(x) = q(x) * g(x)
Vì x
n–k
* u(x) + a(x) là bi ca g(x) nên nó là đa thc mã. Và đ ý t mã tng ng vi đa
thc mã này có k bit sau là k bit thông báo, đó chính là t mã h thng dng 2 tng ng vi

thông báo u.
Ví d 13.3
Cho mã vòng C(7, 4) có ma trn sinh là g(x) = (1 + x + x
3
). Hãy mã hoá thông báo u =
1010 thành t mã h thng dng 2.
Chúng ta có u(x) = 1 + x
2
. Nhân u(x) vi x
n–k
= x
3
ri chia cho g(x) chúng ta đc.
x
3
* (1 + x
2
) = x
3
+ x
5
= x
2
* (1 + x + x
3
) + x
2

T đây suy ra
w(x) = x

2
+ x
3
+ x
5

là đa thc mã và t mã tng ng w = 0011010 là t mã h thng dng 2 tng ng vi u.
Ma trn kim tra ca mã vòng
 tìm ma trn kim tra ca mã vòng chúng ta có th s dng cách đã bit là tìm ma
trn kim tra t ma trn sinh hoc ma trn sinh h thng. Tuy nhiên đi vi mã vòng chúng
ta có mt cách xác đnh ma trn kim tra nhanh chóng hn. Trc ht vì g(x) là mt c s

ca x
n
+ 1 nên chúng ta có th biu din
x
n
+ 1 = g(x) * h(x)
Và chúng ta gi h(x) là đa thc đi ngu ca g(x).  ý h(x) có bc k và có th đc biu
din nh sau, trong đó h
0
= h
k
= 1
h(x) = h
0
+ h
1
x + … + h
k

x
k

Gi v(x) = a
0
+ a
1
x + … + a
n – 1
x
n – 1
là đa thc mã tng ng vi t mã v = (a
0
a
1
…a
n – 1
)
Chúng ta có th biu din nh sau trong đó q(x) có bc ≤ k – 1
v(x) = q(x) * g(x)
Bây gi chúng ta nhân v(x) vi h(x) và đc
v(x) * h(x) = q(x) * g(x) * h(x) = q(x) * (x
n
+ 1) = q(x) + x
n
* q(x)
Do q(x) có bc ≤ k – 1 nên t đây chúng ta suy ra các h s ca x
k
, x
k + 1

, …, x
n–1
trong v(x)
* h(x) bng 0. T cách tính h s ca x
k
, x
k + 1
, …, x
n–1
trong v(x) * h(x) theo các h s a
i

h
j
ca v(x) và h(x) chúng ta suy ra n – k đng thc sau

=

=
k
i
iik
ah
0
0


=
+−
=

k
i
iik
ah
0
1
0

M


=
−−+−
=
k
i
kniik
ah
0
1
0

T các đng thc này chúng ta suy ra các tích vect sau bng 0
(a
0
a
1
… a
n – 1
) * (h

k
h
k–1
… h
0
0 … 0)
T
= 0
(a
0
a
1
… a
n – 1
) * (0h
k
h
k–1
… h
0
… 0)
T
= 0
M
(a
0
a
1
… a
n – 1

) * (0 … 0h
k
h
k–1
… h
0
)
T
= 0
Vì vy nu chúng ta đt
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 109























−−+
=
−−

−−
×−
444844476
L
MMMM
L
L
L
44448444476
L
MMMMM
L
L
L
1
0
00
000
1
000
00
0

021
01
0
2
11
021
)(
kn
hhh
hh
h
k
h
hh
hhh
hhhh
H
kkk
k
kk
kkk
nkn

thì chúng ta suy ra v ×
H
T
= 0. T đây suy ra H là mt ma trn kim tra ca mã vòng.
Ví d 13.4
Cho mã vòng C(7, 4) có ma trn sinh là g(x) = (1 + x + x
3

). T đây suy ra
h(x) = (1 + x + x
2
+ x
4
)
Và chúng ta có ma trn kim tra ca b mã nh sau










=
×
1110100
0111010
0011101
73
H

Chú ý
Mã vòng là mã cho phép thit k các mch mã hoá, sa sai và gii mã d dàng và hiu
qu nên đc s dng rng rãi trong thc t.
Bây gi chúng ta s trình bày ng dng ca trng GF(2
m

) trong vic xây dng các mã
vòng. Trc ht chúng ta có đnh lý sau.
nh lý 13.7
Cho a là mt phn t khác 0 ca trng GF(2
m
) có chu k là n, đa thc ti thiu
f(x) ca a có bc là m. Thì mã có ma trn sau làm ma trn kim tra là mt mã vòng
C(n, n – m), trong đó mi phn t trong ma trn bên di đc thay th bng vect m
thành phn tng ng ca nó.
H

n
= [1 a a
2
… a
n – 2
a
n–1
]
Hn na mã vòng này có đa thc sinh chính là f(x).
Chng minh
Trc ht chúng ta chng minh rng nu w = (b
0
b
1
b
2
…b
n–2
b

n–1
) là mt t mã thì v = (b
n–
1
b
0
b
1
…b
n–3
b
n–2
) cng là mt t mã, t đó suy ra mã có tính vòng. Tht vy nu w là t mã
thì chúng ta có
w × H
T
= 0
hay
b
0
+ b
1
a + b
2
a
2
+ … + b
n–2
a
n–2

+ b
n–1
a
n–1
= 0
trong đó các b
i
∈ GF(2) còn các a
j
∈ GF(2
m
). Nhân a vào đng thc trên chúng ta suy ra
b
0
a + b
1
a
2
+ b
2
a
3
+ … + b
n–2
a
n–1
+ b
n–1
a
n

= 0
hay
b
n–1
+ b
0
a + b
1
a
2
+ b
2
a
3
+ … + b
n–2
a
n–1
= 0
tc là (b
n–1
b
0
b
1
…b
n–3
b
n–2
) cng là mt t mã.

Th hai vì đa thc ti thiu ca a có bc là m nên m phn t 1, a, a
2
, …, a
m–1
là đc lp
tuyn tính. T đó suy ra m hàng ca H là đc lp tuyn tính. Vì vy mã thc s là mã vòng
C(n, n – m).
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 110
Cui cùng nu biu din f(x) = f
0
+ f
1
x + f
2
x
2
+ … + f
m–1
x
m–1
+ f
m
x
m–1
(vi chú ý f
0
= f
m
=

1) thì do f(a) = 0 nên chúng ta suy ra w = (f
0
f
1
… f
m
0 … 0) (gm n thành phn) là mt t mã.
Và không tn ti đa thc mã v(x) nào có bc nh hn m, vì nu ngc li lúc đó chúng ta có
do v × H
T
= 0 suy ra v(a) = 0. iu này mâu thun vi đnh ngha f(x) là đa thc ti thiu
ca a. Chng minh hoàn tt.
Ví d 13.5
Xét trng GF(2
4
) và a có đa thc ti thiu là f(x) = 1 + x + x
4
nh trong Ví d 11.7.
Chú ý a có chu k là 15. Thì ma trn sau là ma trn kim tra ca mã vòng C(15, 11) có đa
thc sinh chính là f(x)













=
×
111101011001000
011110101100100
001111010110010
111010110010001
154
H

Nu đa thc ti thiu ca a là f(x) = 1 + x + x
2
+ x
3
+ x
4
thì a có chu k là 5 và các phn t
1, a, , a
4
đc biu din di dng vect nh sau:
1 = (1000)
a = (0100)
a
2
= (0010)
a
3
= (0001)
a

4
= 1 + a + a
2
+ a
3
= (1111)
T đây suy ra ma trn sau là ma trn kim tra ca mã vòng (5, 1)












=
×
11000
10100
10010
10001
54
H
13.4 Mã BCH nh phân
Mã BCH có tên vit tt ca ba ngi sáng lp ra nó đó là Bose, Chaudhuri và
Hocquenghem. ây là mã vòng có kh nng sa đc nhiu li. Bây gi chúng ta s đa ra

qui trình đ xây dng mã BCH nh phân có kh nng sa đc nhiu li.
i vi các s nguyên dng m và t bt k chúng ta s xây dng mt mã BCH nh phân
có các thông s sau:
 dài t mã: n = 2
m
– 1
S bit kim tra: n – k ≤ mt
Khong cách Hamming: d
min
≥ 2t + 1
Trc ht chúng ta chng minh đnh lý sau đây.
nh lý 13.8
Cho a là mt phn t ca trng GF(2
m
) có đa thc ti thiu là mt đa thc cn
bn bc m. Thì mã có ma trn sau làm ma trn kim tra là mt mã vòng có khong
cách Hamming ≥ 2t + 1, trong đó mi phn t trong ma trn bên di đc thay th
bng vect m thành phn tng ng ca nó.
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 111

















=
−−−−−−
−−
−−
−−
)1)((12()2)((12()12(212
)1(5)2(5105
)1(3)2(363
122
1
1
1
1
ntnttt
nn
nn
nn
aaaa
aaaa
aaaa
aaaa
H
L
MMMMMM

L
L
L

Hn na đa thc sinh g(x) ca b mã là đa thc bi s chung nh nht ca các đa thc
ti thiu ca các phn t a, a
3
, a
5
, …, a
2t–1
.
Chng minh
T đnh lý chúng ta suy ra a có chu k là n = 2
m
– 1 và vì vy a là mt phn t c s ca
trng GF(2
m
).
Trc ht chúng ta chng minh rng nu w = (b
0
b
1
b
2
…b
n–2
b
n–1
) là mt t mã thì v = (b

n–
1
b
0
b
1
…b
n–3
b
n–2
) cng là mt t mã, t đó suy ra mã có tính vòng. Tht vy nu w là t mã
thì chúng ta có
w × H
T
= 0
hay vit ngc li
H × w
T
= 0
Nhân ma trn B sau vi H

















=
−12
5
3
000
000
000
000
t
a
a
a
a
B
L
MMMMM
L
L
L

chúng ta đc


















−−−−−



1
1
1
1
)1)((12()12(3)12(212
)1(515105
)1(3963
132
ntttt
n
n
n

aaaa
aaaa
aaaa
aaaa
HB
L
MMMMMM
L
L
L

Chúng ta có
(B×H)×w
T
= B×(H×w
T
) = B×0 = 0
Mà chúng ta đ ý nu dch vòng ma trn (B×H) 1 ct theo chiu t trái sang phi đc thì
kt qu là ma trn H. T đây suy ra H×v
T
= 0 vi v là kt qu ca vic dch vòng w 1 bit
(theo chiu t trái sang phi). Hay nói cách khác v × H
T
= 0. T đây suy ra mã có tính vòng.
Th hai đ chng minh b mã có khong cách Hamming ≥ 2t + 1 chúng ta ch cn
chng minh mi tp 2t ct ca ma trn H là đc lp tuyn tính. Tht vy gi s tn ti r ct
có các phn t đi đu là
1
k
a ,

2
k
a , …,
r
k
a là có tng bng 0 trong đó r ≤ 2t. T đây chúng ta
suy ra h sau, gi là h (1)
1
k
a
+
2
k
a
+ … +
r
k
a
= 0
3
1






k
a +
3

2






k
a + … +
(
)
3
r
k
a
= 0
M
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 112
12
1







t
k

a
+
12
2









t
k
a
+ … +
(
)
12

t
k
r
a = 0
Mi phng trình trong h 1 có dng p(a) = 0 trong đó p(a) là đa thc ca a. t
i
k
a
= y

i

vi i = 1, 2, …, r. T đây chúng ta nhn đc h (2) sau
y
1
+ y
2
+ … + y
r
= 0
y
1
3
+ y
2
3
+ … + y
r
3
= 0
M
y
1
2t - 1
+ y
2
2t - 1
+ … + y
r
2t - 1

= 0
 ý trong trng GF(2
m
) thì
(y
1
+ y
2
+ … + y
r
)
2
= y
1
2
+ y
2
2
+ … + y
r
2

Vì vy chúng ta có h (3) sau
y
1
+ y
2
+ … + y
r
= 0

y
1
2
+ y
2
2
+ … + y
r
2
= 0
y
1
3
+ y
2
3
+ … + y
r
3
= 0
y
1
4
+ y
2
4
+ … + y
r
4
= 0

M
y
1
2t - 1
+ y
2
2t - 1
+ … + y
r
2t - 1
= 0
y
1
2t
+ y
2
2t
+ … + y
r
2t
= 0
Chúng ta ch ly r phng trình đu và vit di dng ma trn sau, gi là (4)

















=
















×

















−−−
0
0
0
0
111
3
2
1
11
2
1
1
22
2
2
1
21

M
M
L
MMMM
L
L
L
r
r
r
rr
r
r
y
y
y
y
yyy
yyy
yyy


Phng trình (4) có dng Ay = 0, trong đó các phn t ca ma trn A và ca vect y là các
phn t ca trng GF(2
m
). Các phn t y
1
, y
2
, …, y

r
là khác phn t 0 vì vy phng trình
Az = 0 là có nghim không tm thng trong trng GF(2
m
). Vì vy det A = 0 (là phn t 0
ca trng GF(2
m
)). Mà theo B đ 13.2 chúng ta có det A =

>

ji
ji
yy )(
vi i, j ∈ {1, 2,
…, r}. (Chú ý trong trng GF(2
m
) phép tr ging vi phép cng). Mà do các phn t a
q

vi q = 1, 2, …, n = 2
m
– 1 là phân bit nhau nên (y
i
– y
j
) ≠ 0 ∀ i ≠ j (Chú ý y
i
=
i

k
a ). Vì vy
det A =

>

ji
ji
yy )(
≠ 0. Mâu thun. T đây suy ra điu phi chng minh.
Cui cùng gi g(x) = g
0
+ g
1
x + g
2
x
2
+ … + g
n–1
x
n–1
là đa thc sinh ca b mã. Do
(g
0
g
1
g
2
… g

n–1
) là t mã và (g
0
g
1
g
2
… g
n–1
)× H
T
= 0, nên suy ra
g(a) = 0
g(a
3
) = 0
g(a
5
) = 0
M
g(a
2t–1
) = 0
Nu đt f
1
(x), f
3
(x), f
5
(x), …, f

2t–1
(x) là các đa thc ti thiu ln lt ca các phn t a, a
3
,
a
5
, …, a
2t–1
. T B đ 11.5 chúng ta suy ra g(x) chia ht cho f
1
(x), f
3
(x), f
5
(x), …, f
2t–1
(x).
t p(x) là bi s chung nh nht ca f
1
(x), f
3
(x), f
5
(x), …, f
2t–1
(x). Suy ra g(x) chia ht cho
p(x). Suy ra bc ca g(x) ≥ bc ca p(x). Mt khác nu biu din p(x) bng
p(x) = p
0
+ p

1
x + p
2
x
2
+ … + p
n–1
x
n–1

Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 113

trong đó p
n–1
không nht thit bng 1. (Chú ý các đa thc ti thiu đu là c ca
1x
12
+

m

nên p(x) cng vy và có bc ≤ n = 2
m
– 1.) Thì do tt c p(a), p(a
3
), p(a
5
), …, p(a
2t–1

) đu
bng 0 nên (p
0
p
1
p
2
… p
n–1
)× H
T
= 0 nên (p
0
p
1
p
2
… p
n–1
) là t mã, t đó suy ra p(x) là đa
thc mã. Vì vy theo đnh ngha ca đa thc sinh chúng ta suy ra g(x) = p(x). Chng minh
hoàn tt.
B đ 13.2
Ma trn A sau có đnh thc bng

>

ji
ji
yy )( vi i, j ∈

{1, 2, …, r}. nh thc này
đc gi là đnh thc Vandermonde.
















=
−−− 11
2
1
1
22
2
2
1
21
111
r

r
rr
r
r
yyy
yyy
yyy
A
L
MMMM
L
L
L

Chng minh
Tht vy, det A là mt đa thc đng đu det A = p(y
1
, y
2
, , y
r
) trong đó p(y
1
, y
2
, , y
r
)
là mt tng ca các thành phn, mi thành phn bao gm tích ca các y
i

k
vi mi i = 1, 2, ,
r sao cho tng bc ca mi thành phn là bng nhau. D thy bc ca mi thành phn ca p
bng 1 + 2 + … + (r – 1) = r(r – 1)/2. Chú ý nu y
i
= y
j
thì det A = 0. T đây suy ra p(y
1
, y
2
,
, y
r
) chia ht cho (y
i
– y
j
) ∀i ≠ j. Kt hp vi trên chúng ta suy ra
det A = p(y
1
, y
2
, , y
r
) =

>

ji

ji
yy )( vi i, j ∈ {1, 2, …, r}.
Chng minh hoàn tt.
Ví d 13.6
Cho m = 4, t = 2 chúng ta s xây dng mt mã vòng có chiu dài t mã là 2
4
– 1 = 15 và
có khong cách Hamming d ≥ 5. Chúng ta s xây dng bng cách da vào trng GF(2
4
).
Cho a là phn t có đa thc ti thiu là đa thc cn bn có bc 4 sau
f
1
(x) = 1 + x + x
4

Trng này chính là trng GF(2
4
) trong Ví d 11.7. a có chu k n = 2
m
– 1 = 15. Chúng ta
có ma trn kim tra ca b mã nh sau.






=
4239363330272421181512963

141212111098765432
1
1
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
H


Thay mi phn t a
i
bng vect (m = 4 thành phn) tng ng chúng ta đc
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 114



























=
111101111011110
101001010010100
110001100011000
100011000110001
111101011001000
01111
0101100100
001111010110010
111010110010001
H

Và đa thc sinh g(x) là bi s ca hai đa thc ti thiu tng ng vi phn t a và a
3
. Theo
Ví d 11.7 chúng ta có đa thc ti thiu ca a
3
là f
3
(x) = 1 + x + x
2

+ x
3
+ x
4
.
T đây suy ra g(x) = f
1
(x) * f
3
(x) = (1 + x + x
4
) * (1 + x + x
2
+ x
3
+ x
4
) = 1 + x
4
+ x
6
+ x
7
+
x
8

Chú ý
Trong trng hp đa thc ti thiu ca a không phi là đa thc cn bn thì chúng ta s
tìm đc mã vòng có chiu dài n ≠ 2

m
+ 1, vi n là chu k ca a. Trng hp này sinh viên
t ly ví d.
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 115
BÀI 14 GII THIU V MT MÃ HOÁ
14.1 Gii thiu
14.2 Mt s phép mt mã đn gin
14.3 B gãy (breaking) mt h mt mã
14.4 Kt hp các phng pháp mt mã hoá
14.5 S không chc chn và s bo mt hoàn ho (perfect secrecy)
14.6 Các hàm mt chiu (one-way function)
14.7 C s toán hc ca mt mã hóa
14.1 Gii thiu
Mã hoá bo mt (hay mt mã hóa) có mt lch s lâu đi. Trc ht nó đã tng đc s
dng t rt lâu trong các cuc chin tranh c đi và sau đó kéo dài cho đn tn bây gi. Tuy
nhiên t khi chic máy tính đu tiên ra đi và kéo theo sau đó là c mt cuc cách mng d
di v thông tin và truyn thông đã làm thay đi cuc sng ca con ngi. Chúng ta không
còn trao đi và x lý thông tin theo nhng cách thc truyn th
ng tn nhiu thi gian và
công sc mà càng ngày càng chuyn nhiu trao đi qua nhng môi trng đin t nhanh
chóng và hiu qu. Chng hn nh các giao dch tài chính, chuyn khon, mua sm, đng ký
kt hôn, đng ký khai sinh, … càng ngày càng đc thc hin qua môi trng mi, môi
trng đin t. Tuy nhiên chúng ta cn nhn mnh rng đi kèm vi s phát trin ca khoa
hc k thut, các thit b
đin t hin đi hoàn toàn có th “bt” đc các thông tin đang
đc truyn đi trên mng, trên internet hay qua đin thoi vô tuyn, hu tuyn, sóng v tinh,
… Vì vy nhu cu bo mt thông tin ngày càng tr nên quan trng và cp thit. Trong các
bài hc sau đây chúng ta ch yu trình bày nhng nét chính ca lnh vc mt mã hóa d
liu. Nu mun nghiên cu chuyên sâu chi tit, bn đc có th tham kho thêm t các tài

li
u tham kho đc nêu hoc t ngun tài nguyên phong phú trên internet. Trc ht trong
bài hc này chúng ta s trình bày các vn đ và các khái nim c bn ca bo mt.
Thông báo, vn bn (message, plaintext)
Thông báo, vn bn là mt chui hu hn kí hiu ly t mt bng ch cái ∑ và
thng đc kí hiu là m.
 đây ∑ thng là bng ch cái ting Anh gm 26 kí t, thnh tho
ng có thêm c kí t
khong trng.
Mt mã hóa (encryption), phép mt mã hoá
e
(
m
)
Mt mã hoá là vic bin đi mt thông báo sao cho nó không th hiu ni đi vi
bt k ai ngoi tr ngi nhn đc mong mun. D hiu hn mt mã hóa là vic
“ngy trang” hay “che du” thông báo, vn bn di mt dng khác đ cho nhng
ngi “ngoài cuc” không th xác đnh đc thông báo, vn bn gc. Phép mt mã
hóa thng đc kí hiu là e(m), vi m
là thông báo cn mt mã hóa.
Trong thc t, mt mã hoá đc xem nh là mt hàm, mt ánh x hay mt gii thut vi
mt tp các thông s (ngoài thông s cn có là thông báo cn mã hoá). T đây chúng ta có
khái nim khoá.
Khoá (key), khóa mã hóa, khóa gii mã
Khoá là mt thông s đu vào ca phép mã hoá hoc gii mã (nó không phi là
thông báo cng nh là chui mt mã). Khóa dùng đ mã hóa kí hiu là k
e
và khóa
dùng đ gii mã kí hiu là k
d

. Trong mt s h mt mã hóa 2 khóa này chính là mt lúc
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 116
đó chúng ta gi chung là k, ngc li trong mt s h mt mã hóa 2 khóa này là khác
nhau. Tuy nhiên gia 2 khóa này thng có mt mi liên h vi nhau.
Mt phép mt mã hoá có th có nhiu khoá mã hóa (tng ng có nhiu khóa gii mã).
Các khóa này thng đc sinh ra t mt khóa mã hóa ban đu nào đó đc chn trc.
Chui mt mã (cipher, ciphertext, cryptogram)
Chui mt mã là chui “ngy trang”, tc là chui kt qu tng ng ca chui
thông báo qua phép mt mã hóa và th
ng đc kí hiu là c.
c = e(m, k
e
).
Phép gii mã (decryption)
d
(
c
,
k
d
)
Phép gii mã là quá trình xác đnh thông báo gc t chui mt mã c và khóa gii
mã k
d
và thng đc kí hiu là d(c, k
d
).
d(c, k
d

) = m.
Chúng ta có th xem phép gii mã nh là mt ánh x ngc ca phép mã hóa.
H mt mã (cryptosystem)
Mt cách hình thc, mt h mt mã đc đnh ngha là mt b bn (M, K
1
, K
2
, C).
Trong đó M là tp các thông báo m trên các bng ch cái ∑
, K
1
là tp hu hn các
khoá mã hóa k
e
, K
2
là tp hu hn các khoá gii mã k
d
, C là tp các chui mt mã c
trên bng ch cái Γ
, ngoài ra còn có thêm gi thit rng tn ti các hàm hay gii thut
e và d sao cho
e: M ×
K
1

C
d: C ×
K
2


M
và đi vi mi cp (m, k
e
) ∈
M × K
1
,
d(e(m, k
e
) , k
d
) = m
Chú ý
Chúng ta thông thng gia k
e
và k
d
có mi liên h vi nhau và thng đc sinh ra
theo tng cp nên trong nhiu trng hp chúng ta có th xem mt h mt mã nh là mt b
ba (M, K, C) trong đó K là tp hp các khóa mã hóa k.
Trong ng cnh ca lý thuyt mt mã hóa đôi lúc chúng ta nói mã hóa thay cho mt mã
hóa và h mã thay cho h mt mã.
H mt mã khóa bí mt (secret key cryptosystem)
H mã khóa bí mt hay còn gi là h mã đi xng (symmetric cryptosystem) là h
mã mà trong đó vi
c mã hóa và gii mã dùng chung mt khóa bí mt.
H mt mã khóa công khai (public key cryptosystem)
H mã khóa công khai hay còn gi là h mã bt đi xng (assymmetric
cryptosystem) là h mã mà trong đó vic mã hóa và gii mã s dng 2 khóa khác nhau,

t khóa này không th tìm ra khóa kia mt cách d dàng. Khóa dùng đ mã hóa
thng đc thông báo công khai và đc gi là khóa công khai (public key), còn khóa
dùng đ gii mã đc gi bí mt và đc gi là khóa bí mt hay khóa riêng t (private
key).
Chú ý
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 117
Hin nay có mt s h mã đi xng dùng 2 khóa khác nhau cho vic mã hóa và gii mã.
C 2 khóa này đu đc gi bí mt vì t khóa này có th xác đnh đc khóa kia không khó
khn. D nhiên nó cng không đc gi là h mã khóa “công khai” đc.
14.2 Mt s phép mt mã đn gin
Phép thay th đn gin
Trong phép này, khoá là mt hoán v π ca bng ch cái ∑ và mi kí hiu ca
thông báo đc thay bng nh ca nó qua hoán v π.
Thng thng, khoá đc biu din nh mt chui 26 kí t, chng hn nu khoá là
UXEOS…, thì nó biu th rng bt k mt s xut hiên ca A trong thông báo thì đc thay
bng U, B đc thay bng X, C đc thay bng E, D đc thay bng O, E đc thay bng
S, … Các khong trng thng đc gi nguyên không b thay th.
Phép thay th
n-gram

Thay vì thay th đi vi các kí t, ngi ta có th thay th cho tng cm 2 kí t (gi là
digram) hoc tng cm 3 kí t (gi là trigram) và tng quát cho tng cm n kí t (gi là n-
gram). Nu bng ch cái ∑ gm 26 kí t ting Anh thì phép thay th n-gram s có khoá là
mt hoán v ca 26
n
n-gram khác nhau (có 26
n
chui khác nhau chiu dài n). Trong trng
hp digram thì hoán v gm 26

2
digram và có th biu din tt nht bng mt dãy 2 chiu 26
× 26 trong đó các hàng biu din kí hiu đu tiên, các ct biu din kí hiu th hai, ni dung
ca các ô biu din chui thay th. Ví d bng 2 chiu sau biu th AA đc thay bng EG,
AB đc thay bng RS, BA đc thay bng BO, BB đc thay bng SC, …

A B

A
EG RS
B BO SC

Phép hoán v bc
d

i vi mt s nguyên dng d bt k, chia thông báo m thành tng khi có chiu dài
d. Ri ly mt hoán v π ca 1, 2, …, d và áp dng π ti mi khi. Chng hn nu d = 5 và π
= (4 1 3 2 5), thì có ngha là hoán v (1 2 3 4 5) s đc thay bng hoán v mi (2 4 3 1 5).
Ví d nu chúng ta có thông báo
m = JOHN |IS A |GOOD |ACTOR
thì qua phép mt mã này s tr thành chui mt mã sau
c = ONHJ |SA I |ODOG |COTAR
 gii mã ngc li ta phi tìm hoán v ngc π
- 1
. Trong trng hp này chúng ta có π
- 1

= (2 4 3 1 5). Tng quát nu π = (i
1
i

2
… i
n
) thì π
- 1
= (j
1
j
2
… j
n
) trong đó
kj
k
i
=
, có ngha
là trong π
- 1
 v trí th i
1
cha giá tr 1,  v trí th i
2
cha giá tr 2, …
Phng pháp Vigenère và Caesar
Trong phng pháp này, khoá bao gm mt chui ca d kí t. Chúng đc vit lp li
bên di thông báo và đc cng modulo 26, vi chú ý rng bng ch cái đc đánh s t
A = 0 đn Z = 25. Các kí t khong trng s đc gi nguyên không cng.
Chng hn vi d = 3, nu khoá là chui ABC thì thông báo
m =

MARY I S GOOD
vi khoá
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 118
k =
ABCA BC ABCA
tr thành
c =
MBTY J U GPQD
Trong trng hp d = 1, nh vy khoá ch là mt kí t đn, thì đc gi là phng pháp
Caesar vì đc cho là đc s dng ln đu bi Julius Caesar.
Phng pháp Playfair
ây là mt s đ da trên s thay th digram trong đó khoá là mt hình vuông kích
thc 5 × 5 cha mt s sp xp nào đó ca 25 kí t ca bng ch cái (không tính kí t J vì
s xut hin ít ca nó và có th
thay nó bng I). Gi s chúng ta có ma trn khoá nh sau
B Y D G Z
W S F U P
L A R K X
C O I V E
Q N M H T
S thay th s đc thc hin nh sau. Chng hn nu digram cn thay th là AV thì
trong hình ch nht có A, V là hai đnh chéo nhau thay A bng đnh k ca nó theo đng
thng đng chính là O và tng t thay V bng đnh k ca nó theo đng thng đng
chính là K. Tng t nu digram c
n thay th là VN thì chui thay th là HO. Nu các kí t
ca digram nm trên hàng ngang thì chui thay th là các kí t bên phi ca chúng. Chng
hn nu digram là WU thì chui thay th là SP, nu digram là FP thì chui thay th là UW,
nu digram là XR thì chui thay th là LK. Tng t nu các kí t ca digram nm trên
hàng dc thì chui thay th là các kí t bên di ca chúng. Chng hn nu digram là SO

thì chu
i thay th là AN, nu digram là MR thì chui thay th là DI, nu digram là GH thì
chui thay th là UG. Trong trng hp digram là mt cp kí t ging nhau chng hn OO
hoc là mt kí t đc đi kèm mt khong trng chng hn B฀
thì có nhiu cách x lý, cách
đn gin nht là gi nguyên không bin đi digram này.
Phng pháp khoá t đng (autokey)
Trong phng pháp này, có mt khoá “mi” (priming key), cái mà thng là ng
n và
đc s dng đ khi đu quá trình mt mã hoá. Quá trình mã hoá đc tip tc bng cách
s dng c bn thân thông báo ln chui mt mã (cryptogram) đang chy. Xét ví d sau: Gi
s khoá mi là VENUS và thông báo là SEND SUPPLIES. u tiên s dng thông báo nh
mt khoá đang chy, chúng ta mã hoá bng phép cng mod 26. (Chú ý các khong trng s
đc b qua)
m: S E N D S U P P L I E S
k:
V E N U S
S E N D S U P
Chui mt mã N I A X K M T C O A Y H
S dng chui mt mã trên nh là mt khoá vi khoá mi nh c chúng ta đc kt qu mã
hoá nh sau.
m: S E N D S U P P L I E S
k:
V E N U S
N I A X K M T
Chui mt mã N I A X K H X P I S Q L
Phng pháp bin đi tuyn tính
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 119
Ý tng c bn là chia thông báo thành nhng khi có chiu dài d và gn khi này vi

mt vect x, gm d s nguyên, và ri nhân vect x này vi mt ma trn không suy bin (tc
có đnh thc khác 0) s đc chui mt mã y = Ux. Vic gii mã đc thc hin bng cách
nhân y vi ma trn nghch đo U
- 1
ca U, x = U
- 1
y.
 đm bo các phép toán đc thc hin trên mt trng, các tính toán s đc tính
trong modulo ca mt s nguyên t. Chng hn ly bng ch cái ∑ gm 37 kí t nh sau và
đc đánh s ln lt t 0 đn 36: 10 ch s t 0 đn 9, khong trng, và 26 kí t ch cái.
Vi bng ch cái này, nu chn d = 2 và ma trn làm khoá là:
k = U =






1522
133

Thông báo m = FRIEND đc biu din nh là
m = FR | IE | ND = 15, 27 | 18, 14 | 23, 13
Thì







=






×






351432
161426
131427
231815
1522
133

Vy chui mt mã là
c = 26, 32 | 14, 14 | 16, 35 = Q, W | E, E | G, Z = QWEEGZ
14.3 B gãy (breaking) mt h mt mã
B gãy mt h mt mã có ngha là gì? Nó có ngha là vic xác đnh đc vn bn hay
thông báo gc t nhng gì có th bit đc.
Chúng ta cn phân tích nhng kh nng có th b b gãy ca mt h mt mã, có nh vy
mi giúp chúng ta xây dng đc nhng yêu cu, tiêu chun đi vi mt h mt mã an toàn
và cho ra đi nhng h mt mã này và nhng h mt mã ngày càng an toàn h
n (cái mà s

đc trình bày trong các bài sau). Nói chung vic xây dng và b gãy các h mt mã đó là
mt quá trình chin đu gia hai bên, mt bên là nhng ngi xây dng còn mt bên là
nhng ngi tìm các yu đim ca cách xây dng đ vt qua. Chính quá trình b gãy đã
giúp cho vic xây dng ngày càng tt hn, tuy nhiên ngc li các k thut b gãy cng
ngày càng phát trin và tinh vi hn. ây có th xem là mt trng hp đin hình c
a quá
trình chin đu và phát trin không ngng ca hai mt ca mt vn đ.
Quay tr li vi vic b gãy, nhng chuyên gia mt mã hay nhng k tn công thng
đc gi thit bit đy đ thông tin v hàm mã hoá e, hàm gii mã d và khóa mã hóa k
e
.
Thêm vào đó, h cng có th có nhiu thông tin h tr nh các thng kê v ngôn ng, kin
thc v ng cnh, vân vân.
H s chn chn có mt chui mt mã nào đó, và tt c nhng gì mà h thiu là khoá
gii mã k
d
t đó h có th s dng d đ gii mã c mt cách chính xác. Và vì vy vic b gãy
có th qui v vic tìm/tính khóa gii mã k
d
t nhng gì h bit. Vic b gãy có th minh
ha nh hình nh bên di.










B phát sinh khoá k
B mã hoá e B gii mã d
Nhng k
tn công
m
k
e
k
d
c = e(m, k)
m
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 120


Hình 14.1 Mô hình ca mt h mt mã
Nhng gi thit trên là hoàn toàn thc t. Tht vy nhng phng pháp mã hóa và gii
mã hu nh không th gi bí mt. i vi nhng phng pháp mã hóa đn gin thì nhng
k tn công đã bit đy đ. Còn đi vi nhng phng pháp mã hóa phc tp thì thng
không phi do mt ngi ngh ra mà là do mt nhóm hoc nhiu ng
i cùng ngh ra. Thm
chí ngay c khi ch do mt ngi ngh ra thì khi áp dng vào các h thng truyn thông vn
có th có nhiu ngi qun lý h thng đó bit. Chính vì vy vic gi bí mt phng pháp
mã hóa là rt khó. Bí mt lúc này ging nh mt “cây kim trong bc”, lâu ngày cng có th
b phát hin. Mà mt khi mt ngi khác đã bit thì nhiu ngi có th bit. Và điu này
cng
đúng đi vi phép gii mã.
Chính vì hiu đc điu này nên mi có s ra đi ca h mã khóa công khai nh đã
đc gii thiu  trên. Trong h mã khóa công khai, gii thut mã hóa, gii mã, và c khóa
mã hóa đu đc công khai, ch có duy nht mt cái cn gi bí mt đó là khóa dùng đ gii

mã. iu này cng ging các loi  “khóa bi” hay “khóa s vòng” trong thc t. Chúng ta
nh rng, nguyên lý ch to c
a các loi  “khóa bi” hay “khóa s vòng” hoàn toàn có th
bit đc, nhng đ m đc  khóa chúng ta cn phi có chìa.
Có ba kh nng tn công cái mà chúng ta d đoán đi phng có th s tn công trên h
thng ca chúng ta:
1. Tn công ch da trên chui mt mã (crytogram-only attack): ây là trng hp đi
phng ch bit mt vài mu chui mt mã c.
2. Tn công da trên v
n bn đã bit (known-plaintext attack): Trng hp này thc t
hn trng hp (1). Trong trng hp này nhng ngi tn công đc gi thit là đã
bit mt đ dài đáng k ca vn bn thông báo và chui mt mã tng ng, và t đó c
gng tìm ra khoá (mã hóa cng nh gii mã).
ây là mt s tn công d di khó chng đ hn nhi
u nhng ngày nay đc xem nh
là mt chun an toàn ti thiu phi đt đc. Tht vy vào thi đim hin ti, tiêu chun
thích hp nht đ đánh giá mt h mt mã là  kh nng ca nó đ chng đ s tn công
thm chí còn mnh hn nh sau
3. Tn công da trên vn bn đc chn (chosen-plaintext attack): Trong trng hp này,
nh
ng ngi tn công có th đã có đc mt s lng tu ý ca các cp thông báo và
chui mt mã tng ng (m, c).
Không khó đ thy rng không có h thng (hay phng pháp) mt mã nào đã mô t 
mc 14.2 trên đây có th chng đ mt cuc tn công da trên vn bn đc chn.
Trng hp liên quan đn kh nng b tn công c
a nó đi vi s tn công da trên vn
bn đã bit là phc tp hn. Chng hn, xét h thng đn gin nht – h thng dùng phng
pháp thay th đn gin – sao cho khoá k là mt hoán v ca 26 ch cái trong đó A →
P, B
→ F, vân vân. Bây gi nu thông báo m đc gi là “silly message” bao gm ch A đc

lp li n ln, thì trong chui mt mã c tng ng, ch P s đc lp li n ln. Không thành
vn đ chúng ta có n ln bao nhiêu, cp thông báo - chui mt mã c th này s không sinh
ra khoá k. Tuy nhiên bng vic da vào các thng kê v xác sut xut hin ca các kí t,
đng thi duyt qua các phng án chn khóa theo th t đc đánh giá là hp lý nht đn
ít hp lý hn c
ng vi s tr giúp tính toán vi tc đ nhanh ca các siêu máy tính, vic tìm
ra khóa s là không quá khó và tn nhiu thi gian. Shannon và nhiu nhà nghiên cu khác
bng nhng nghiên cu v thng kê và entropy ca ting Anh đã phát biu rng
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 121
Vi nhng chui mt mã có chiu dài 30 kí t hoc hn biu din cho nhng chui
thông báo có ngha trong ting Anh thì gn nh chc chn có th tìm ra khóa ca nó
trong các phng pháp mã hóa nói trên.
Tóm li có th nói rng nu đã cho mt chiu dài va đ ca thông báo và chui mt
mã, bt k h thng hay phng pháp mt mã  trên đu có th b b gãy (crack), tc là
khóa có th đc tìm th
y.  đây chúng ta xem mt ví d đn gin v cách b gãy.
Ví d 14.1
Gi s mt h mt mã đc bit là da trên phng pháp Caesar vi bng ch cái gm
27 kí t đc đánh s nh sau
A = 0, B = 1, …, Z = 25, khong trng = 26
và phép cng thc hin theo mod 27. Chúng ta chp đc chui mt mã c sau
HWXGOQCCZOXGOXBORCST
Chúng ta đ ngh cách tn công sau đ tìm khoá cha bit k
0
. Chn các khoá d tuyn cho k
0

mt cách ngu nhiên và đi ngc chui mt mã, theo tng kí t, cho đn khi nào thông báo
có ý ngha.

Vì vy, nu đu tiên chúng ta chn k
0
= E, chúng ta s đi ngc c và nhn đc
DSTC …
ti ng cnh này chúng ta thy rng E không phi là khoá k
0
. Li chn k
0
= Z, cái này s đi
ngc c thành
JYZ …
cái này bác b Z.
S la chn k tip (theo linh cm ???!!!) ca chúng ta là k
0
= P và nhanh chóng thy
rng chui mt mã đã đc bin đi thành chui vn bn có ngha
THIS BOOK IS IN CODE
Ti ng cnh này chúng ta không đm bo rng không có cp thông báo-khoá khác mà s
sinh ra cùng chui mt mã trên. Tuy nhiên th tc kim tra ca nhng khoá khác cng
tng t nh vy.
14.4 Kt hp các phng pháp mt mã hoá
Mt cách t nhiên đ tng tính bo mt là kt hp nhiu phng pháp mt mã hoá vi
nhau. Hai cách nh vy, đc Shannon đ ngh t nm 1949, vn to nên c s ca nhiu h
mt mã thc t. ó là
1. Cách dùng tng trng s: Nu S
1
, S
2
, …, S
n

là các h mã hoá có cùng không gian
thông báo và 0 < p
i
< 1 và 1
1
=

=
n
i
i
p thì tng ca chúng
i
n
i
i
Sp

=1
là h mt mã dùng S
i

vi xác sut p
i
.
Ly ví d trong trng hp n = 2 tc là có 2 h mã hóa S
1
, S
2.
. Thì h thng p

1
S
1
+ p
2
S
2

có m + n khóa k
1
, k
2
, …, k
m
, k
1
’, k
2
’, …, k
n
’ trong đó khóa k
i
đc s dng vi xác sut p
1
q
i

còn khóa k
j
’ đc s dng vi xác sut p

2
q
i
’.
2. Cách dùng tích: Áp dng các h thng (hay phng pháp) ni tip nhau, đu ra ca h
thng này, chng hn S
1
, là đu vào ca h thng k tip, chng hn S
2
. D nhiên tp hp
đu ra ca h thng đi trc S
1
phi là tp con ca tp hp đu vào ca h thng đi sau
k tip S
2
. Nu thc hin đc thì chúng ta kí hiu h thng kt hp này là
S = S
1
ο
S
2
.
Gi s S
1
có các khóa k
1
, k
2
, …, k
m

, mi khóa k
i
đc dùng vi xác sut q
i
, S
2
có các
khóa k
1
’, k
2
’, …, k
n
’, mi khóa k
j
’ đc dùng vi xác sut q
j
’, thì S = S
1
ο
S
2
có mn khóa vi
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 122
các xác sut q
i
q
j
’. Chú ý rng S

1
ο S
2
thng có ít hn mn khóa có hiu qu, vì mt vài phép
bin đi ca tích có th trùng nhau.
3. Chúng ta có th kt hp đng thi c hai cách trên.
S
3
ο
(p
1
S
1
+ p
2
S
2
) = p
1
S
3
ο S
1
+ p
2
S
3
ο S
2


(p
1
S
1
+ p
2
S
2
) ο
S
3
= p
1
S
1
ο S
3
+ p
2
S
2
ο S
3

S
1
ο
(S
2
ο S

3
) = (S
1
ο S
2
) ο S
3

Chú ý S
1
ο
S
2
tng quát không bng vi S
2
ο S
1
.
14.5 S không chc chn và s bo mt hoàn ho (perfect secrecy)
Xét mt h mt mã (M, K, C) và gi thit rng M = {m
1
, m
2
, …, m
n
} là mt tp hu hn
các thông báo. Gi p
i
là xác sut thông báo m
i

đc gi đi, q
j
là xác sut khóa k
j
đc chn
và vic chn khóa đc lp vi thông báo đc gi đi. T hai s phân b xác sut này chúng
ta suy ra s phân b xác sut ca chui mt mã c

=
=
n
i
ji
kpcP
1
)(

trong đó v phi đc tính tng trên tt c các cp thông báo - khóa (m
i
, k
j
) sao cho e(m
i
, k
j
)
= c.
n đây chúng ta có th coi vic mt mã hóa tng t nh mt kênh truyn thông đc
trình bày trong BÀI 9, trong đó tp thông báo M là mt ngun ri rc không nh, còn hàm
mã hóa e vi các khóa k là kênh truyn.

Chúng ta có

=
−=
n
i
ii
ppMH
1
log)(

−=
jj
qqKH log)(

=
−=
n
i
cPcPCH
1
)(log)()(

Chúng ta gi H(K | C) là s không chc chn v khóa, H(M | C) là s không chc chn
v thông báo. ôi khi chúng ta kí hiu h mt mã (M, K, C) bng S và ri kí hiu s không
chc chn v khóa, H(K | C), là H(S).
nh lý 14.1
S không chc chn v khóa quan h vi s không chc chn v thông báo bng
H(K | C) = H(M | C) + H(K | M, C)
Chng minh

H(M | C) = H(M, C) - H(C)
= H(M, K, C) - H(K | M, C) - H(C)
H(K | C) = H(K, C) - H(C)
= H(M, K, C) - H(M | K, C) - H(C)
Nh
ng
H(M | K, C) = 0
Nên
H(K | C) = H(M, K, C) - H(C)
T đây suy ra điu phi chng minh.
H qu 14.1
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 123
S không chc chn v khóa ln hn hoc bng s không chc chn v thông báo.
Vì H(M | C) là đ bt ng trung bình v thông báo m khi nhn đc chui mt mã c nên
chúng ta có th nói rng mt h mt mã (M, K, C) là hoàn ho nu H(M | C) = H(M). Có
ngha là vic nhn đc chui mt mã c không giúp chúng ta bit thêm gì v
thông báo m.
Hay nói cách khác ngun M và C đc lp vi nhau. Tuy nhiên nh chúng ta s thy rt khó
đ đt đc điu này.
nh lý 14.2
Mt h mt mã (M, K, C) là hoàn ho nu và ch nu
P(m | c) = P(m)
vi mi thông báo m ∈
M và chui mt mã c ∈ C.
H qu 14.2
Mt h
mt mã (M, K, C) là hoàn ho nu và ch nu
P(c | m) = P(c)
vi mi thông báo m ∈

M và chui mt mã c ∈ C.
nh lý 14.3
iu kin cn đ mt h mt mã (M, K, C) là hoàn ho là nó có s lng khóa ít
nht là bng s lng thông báo.
Chng minh
Xét tp thông báo M = {m
1
, m
2
, …, m
n
} và mt khóa k c đnh. Khóa này s ánh x các
thông báo m
i
khác nhau thành các chui mt mã khác nhau c
i
. Vì h mt mã là hoàn ho nên
da vào h qu trên đây chúng ta có
P(c
i
| m
i
) = P(c
i
)
đng thi
P(c
i
| m
j

) = P(c
i
)
vi mi j ≠ i.
Vì vy phi có mt khóa k’ khác nào đó cái mà ánh x m
j
thành c
i
. iu này đúng cho mi j
(1 ≤ j ≤ n), và tt c các khóa nh vy phi khác nhau. Vì vy phi có ít nht là n khóa.
Ví d 14.2
Mt ví d c đin v h mt mã hoàn ho là “one-time pad”. Nó đc gii thiu ln đu
bi G. S. Vernam vào nm 1926. Nó hot đng nh sau. Gi s bng ch cái Σ là bng ch
cái ti
ng Anh gm 26 kí t (các du chm câu và khong trng đc b qua) và các kí t
này đc biu din theo đúng th t thành các s nguyên t 0 đn 25 Thông báo m gi đi
gm n kí t.  mã hóa m, sinh mt chui ngu nhiên n kí t t bng ch cái Σ, mi kí t s
có mt xác sut đc chn là 1/26 và vic chn các kí t là đc lp ln nhau. Dãy ng
u
nhiên này (z
1
, z
2
, , z
n
) s làm khóa cho phép mã hóa sau.
C = e(m, k) = (y
1
, y
2

, , y
n
)
trong đó
y
i
= x
i
+ z
i
(mod 26)
D dàng thy rng h thng này có 26
n
khóa có th, vì vy
H(K) = n log 26
Vì các khóa này đu có kh nng đc chn nh nhau nên chúng ta có
P(k | c) = 1/26
n

Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 124
vi bt k khóa k nào.
H mt mã này đã đc chng minh là h mt mã hoàn ho. Tuy nhiên có mt vài hn ch
ln trong vic s dng các h mt mã này.
1. Không có mt phng pháp toán hc đ sinh ra các chui ngu nhiên đc lp làm khóa.
Ch có mt s phng pháp toán hc sinh ra các chui “gi ngu nhiên” mà thôi, tuy
nhiên chúng không đm bo đc rng s đt đc mc đ b
o mt ging nh trng
hp ngu nhiên tht s.
2. Chiu dài các khóa đúng bng chiu dài thông báo và phi đc truyn đn bên nhn đ

bên nhn dùng cho vic gii mã. Nh vy khóa này cng có th b bt đc trên đng
truyn và vì vy đn lt nó li cn phi đc mã hóa!!!
Mc dù có nhng hn ch nh vy nhng chúng cng đã đ
c s dng khá nhiu trong
thc t trc đây.
14.6 Các hàm mt chiu (one-way function)
Ý tng dùng các hàm mt chiu đ mã hóa là ct lõi ca các phng pháp mt mã hóa.
Tuy nhiên rt khó đ đa ra mt đnh ngha toán hc chính xác cho nó. Mt cách không
hình thc, mt hàm mt chiu là mt hàm
f: S → T, trong đó S, T là hai tp bt k sao cho
1. Vi bt k x ∈ S, f(x) là d dàng đ tính.
2. ã cho mt y = f(x) v
i mt x nào đó cha đc bit, thì rt “khó” (hoc không kh thi)
đ tìm ra đc x đi vi phn ln các y thuc T. Khó  đây đng ngha vi vic phi tn
rt nhiu thi gian và chi phí đ tìm ra x.
Nó rõ ràng rng, đã cho f(x), mt cách tìm x là tìm kim vét cn thông qua tt c nhng giá
tr x có th ca S. Tuy nhiên đ
iu này s không kh thi nu S quá ln, chng hn nu S là tp
tt c nhng chui nh phân 200 bit (có 2
200
chui nh vy).
Ví d 14.3
Cho S là tp tt c các cp s nguyên t (p, q) và
f(p, q) = p × q
D thy rng t p, q chúng ta d dàng tìm ra f(p, q) nhng ngc li trong trng hp p và q
là các s nguyên t khá ln, chng hn có khong 100 ch s, t f(p,
q) chúng ta phi tn
rt “nhiu” thi gian mi có th tìm ra p và q.
Mt ví d khác nh sau. Cho S = {1, 2, , p - 1} vi p là mt s nguyên t khá ln
(chng hn có 200 ch s). Có khá nhiu đa thc f(x) (là song ánh) trên S

f(x) = a
0
+ a
1
x + a
2
x
2
+ + a
n
x
n
(mod p)
sao cho t x chúng ta d dàng tính đc f(x) nhng điu ngc li thì rt khó.
Bài toán mt khu (password)
Mt trong nhng ng dng đu tiên ca các hàm mt chiu là vào vic gii quyt bài
toán v bo mt các mt khu trong các mô hình chng thc (xác nhn quyn hp l) đin
t (electronic authentication scheme).
Ví d xét mt h thng máy tính truy xut t xa trong đó m
i ngi s dng (user) phi
đng nhp (log on) vào h thng bng cách gi đi mt mt khu (password) bí mt. Rt
nguy him v mt bo mt nu chúng ta lu danh sách nhng ngi s dng và password
ca h trong mt dng không mã hóa trong mt file trên máy, vì nó gn nh không th gi
bí mt ni dung file đc. R. M. Needham đã đ ngh gii pháp sau đây cho bài toán này.
Cho f là mt hàm mt chi
u nào đó trong đó min xác đnh ca nó là tp các password
có th (là nhng chui kí t). Khi mt ngi s dng mi tham gia vào h thng, anh ta s
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 125
chn mt password, gi là p

i
, cho mình. Thay vì máy tính lu tr p
i
, nó s lu tr chui f(p
i
)
cái mà d dàng tính đc t p
i
.
Mt ngi bt k không có quyn hp l là có th xem đc ni dung ca file cái mà
cha danh sách tên ngi s dng tng ng. Có ngha là file này không cn đc gi bí
mt. Khi ngi s dng u
i
đng nhp vào h thng, anh ta ch cn gõ vào tên đng nhp u
i

và mt khu p
i
ca anh ta, máy tính s tính f(p
i
) và so sánh nó vi phn t (u
i
, f(p
i
))  trong
file. S trùng khp cho phép u
i
truy xut vào h thng. Còn nhng ngi không có quyn
hp l mun b gãy h thng bng cách n cp password thì phi tìm p
i

t f(p
i
) tc là tìm
hàm ngc ca f.
14.7 C s toán hc ca mt mã hóa
Kí hiu c s chung ln nht
c s chung ln nht ca các s nguyên n
1
, n
2
, …, n
k
đc kí hiu là gcd(n
1
, n
2
,
…, n
k
).
Hàm-phi Euler φ(
n
)
Vi n là s t nhiên, φ(n) đc đnh ngha là s các s t nhiên nh hn n và
nguyên t cùng nhau vi n.
Ví d φ(4) = 2 (bao gm 1 và 3), φ(5) = 4, φ(6) = 1, φ(7) = 6, φ(8) = 4.
Ta có mt s kt qu sau.
1. Vi p nguyên t thì φ(p) = p - 1,
2. Vi p nguyên t, k là s t nhiên thì φ(p
k

) = p
k
– p
k - 1
= p
k - 1
(p – 1)
3. Vi m, n là các s t nhiên nguyên t cùng nhau thì φ(mn) = φ(m) φ(n)
nh lý 14.4 nh lý Fermat
Nu p là s nguyên t, a là mt s nguyên thì
a
p

a (mod p)
Nu p không là c s ca a thì
a
p – 1

1 (mod p)
Ví d 14.4
4
5
≡ 4 (mod 5), 4
7
≡ 4 (mod 7), 4
7 - 1
≡ 1 (mod 7), 10
5 - 1
≡ 0 (mod 5)
nh lý 14.5 nh lý Fermat m rng (Euler)

Nu a và m nguyên t cùng nhau thì
a
φ
(m)

1 (mod m)
Trong trng hp m là nguyên t thì φ(m) = m – 1 ta có đnh lý Fermat.
H qu 14.3
Vi a, b, c, m là các s t nhiên, a ≡ b (mod φ(m)), c và m nguyên t cùng nhau (tc
gcd(c, m) = 1) thì
c
a

c
b
(mod m)
Tht vy a ≡ b (mod φ(m)) nên a = kφ(m) + b suy ra
c
a
≡ c
kφ(m) + b
≡ c
kφ(m)
× c
b
≡ 1 × c
b
≡ c
b
(mod m)

H qu 14.4
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 126
Nu e, d là các s nguyên thõa mãn e.d ≡ 1 (mod φ(m)) thì vi mi s c nguyên t
cùng nhau vi m ta có
)(mod)( mcc
de

H qu này đc suy ra t h qu trên bng cách áp dng a = e.d còn b = 1.
Cn nguyên thy (primitive root)
Cho n và a là các s t nhiên nguyên t cùng nhau và 1 ≤ a ≤ n. Nu ∀ d, 1≤ d <
φ(n) mà
a
d

1 (mod n)
thì a đc gi là cn nguyên thy ca n.
Ví d, 2 là cn nguyên thy ca 5 bi vì trong mod 5
2
1
= 2, 2
2
= 4, 2
3
= 3, 2
4
= 1
Nhn xét
Không phi mi s nguyên đu có cn nguyên thy. 8 là s t nhiên nh nht không có
cn nguyên thy.

nh lý 14.6
S n có cn nguyên thy nu và ch nu n là 1, 2, 4 hoc n có dng p
k
hoc 2p
k
trong
đó p là mt s nguyên t l và k là s t nhiên.
Nu n có cn nguyên thy thì nó có chính xác φ
(φ(n)) cn nguyên thy.
B đ 14.1
Mi s t nhiên mà không phi là s chính phng (bình phng ca mt s t
nhiên khác) là cn nguyên thy ca mt s nguyên t nào đó.
Nhn xét
Nu n là s t nhiên khá ln (có vài trm ch s
), cho đn bây gi cha có mt gii
thut hiu qu (chy trong thi gian “chp nhn đc”) đ tìm cn nguyên thy ca nó.
Hàm logarit ri rc
Cho n là mt s t nhiên bt k có cn nguyên thy là a. Vi x, y là các s t nhiên
trong đó (0 ≤
x < φ(n)) và thõa
y = a
x
(mod n)
thì x đc gi là logarit ri rc ca y vi c s a và tính trong mod n và đc vit
x = log
a
y (mod n)
Nhn xét
Hàm a
x

 trên là mt hàm mt chiu. Tc là t x chúng ta d dàng tính đc y, nhng
ngc li t y rt khó đ tính đc x. Hin ti cha có mt gii thut hiu qu nào, chy
trong thi gian “chp nhn đc”, thc hin đc điu này.
ng dng hàm mt chiu đ gii quyt bài toán phân phi khóa
Mt trong nhng bài toán c b
n ca các phng pháp mt mã hóa c đin là làm th
nào đ phân phi khóa mt cách an toàn. Nu thông báo không th đc truyn đi an toàn
thì liu khóa có th đc truyn đi mt cách an toàn ?
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 127
Nm 1976, Diffie và Hellman đã đ ngh mt cách rt hiu qu đ gii quyt bài toán
này bng cách da trên tính cht mt chiu ca hàm logarit ri rc đã nói trên và sau đó
phng pháp này đã đc hin thc bi Hewlett Packard và tp đoàn Mitre.
Xét mt tp nhng ngi s dng u
i
(1 ≤ i ≤ n) mun truyn thông vi nhau. Cho p là
mt s nguyên t rt ln (p ln hn n nhiu) và có cn nguyên thy là a. Mi ngi s dng
u
i
s sinh ra mt cách đc lp mt s t nhiên x
i
ngu nhiên trong khong {1, 2, , p - 1} và
gi nó bí mt. Tuy nhiên, anh ta s công b khóa công khai ca anh ta là
)(mod pay
i
x
i
=
Khi u
i

và u
j
truyn thông vi nhau thì chúng s s dng khóa gia chúng nh sau
)(mod pak
ji
xx
ij
=
 tính đc k
ij
, u
j
s da vào
)(mod pay
i
x
i
=
đã công b công khai ca u
i
và khóa x
j

mt ca nó, ri tính k
ij
bng cách sau
)(mod pyk
j
x
iij

=

Và đi u
i
đ tính đc k
ij
cng s làm tng t nh trên. Bng cách này, d nhn thy rng,
mt ngi khác u
i
và u
j
mun bit đc k
ij
là rt khó.
n đây chúng ta kt lun bài này bng mt phát biu da trên ý kin ca Shannon. Bt
k mt h mt mã nào cng có th b b gãy vn đ là chúng ta s xây dng h mt mã sao
cho vic b gãy là tn nhiu thi gian và chi phí.

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×