Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 103
BÀI 13 MÃ VÒNG
13.1 Gii thiu
13.2 Các tính cht ca mã vòng
13.3 Ma trn sinh và ma trn kim tra ca mã vòng
13.4 Mã BCH
13.1 Gii thiu
nh ngha 13.1
Mt mã tuyn tính C(n, k) đc gi là mã vòng nu w = a
0
a
1
…a
n–2
a
n–1
là mt t mã
thì v = a
n–1
a
0
a
1
…a
n–2
cng là mt t mã.
Nói cách khác mã vòng là mã có tính vòng, có ngha là dch vòng mt t mã thì kt qu
cng là mt t mã.
Chú ý
đây chúng ta thy vic dch vòng đc thc hin t trái sang phi (gi là dch phi),
tuy nhiên vi t mã có chiu dài n bit thì vic dch vòng ngc li t phi sang trái i bit (gi
là dch trái) thì kt qu cng ging vi vic dch phi (n
– i) bit. Vì vy nu chúng ta dch
trái (dch t phi sang trái) mt t mã thì kt qu cng là mt t mã. Tuy nhiên đây khi
nói dch thì chúng ta hiu là dch phi.
a thc mã
Nu w = a
0
a
1
…a
n–2
a
n–1
là mt t mã thì w(x) = a
0
+ a
1
x + … + a
n–2
x
n - 2
+ a
n–1
x
n - 1
là
đa thc mã tng ng vi t mã w.
Vy chúng ta có mt song ánh gia các t mã vi các đa thc mã. Mi đa thc mã là mt đa
thc trên trng GF(2) và có bc ≤ n – 1. Nh sau này chúng ta s thy, chúng ta s da vào
các đa thc mã này đ chng minh các tính cht ca mã vòng.
Ví d 13.1
Bng sau đây trình bày mt mã vòng C(7, 4). Các bn có th kim tra rng mã này là
mt 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 thc 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ý thuyt Thông tin
Ngi son H Vn 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ì tng ca hai t mã là mt t mã nên tng ca hai đa thc mã là mt đa thc mã.
w
(
i
)
,
w
(
i
)
(x)
w
(i)
là t mã do dch t mã w i bit, và w
(i)
(x) là đa thc mã tng ng ca w
(i)
.
Chú ý chúng ta coi w chính là w
(0)
. Bây gi chúng ta s tìm mi liên h gia w
(i)
(x) vi w(x).
Chúng ta da vào ví d trên đ tìm mi 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 thy rng w
(i)
(x) = x
i
* w(x) tuy nhiên nu w
(i)
(x) có x
p
vi p ≥ n thì x
p
đc thay
bng x
p mod n
. Mc khác trên trng 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 mi liên h gia w
(i)
(x) vi w(x).
B đ 13.1
w
(i)
(x) = [x
i
* w(x)] mod (x
n
+ 1)
13.2 Các tính cht ca mã vòng
Trong phn này chúng ta s dn ra mt s tính cht ca mã vòng.
nh lý 13.1
a thc mã khác 0 có bc nh nht là duy nht. Hay nói cách khác không tn ti
hai đa thc mã khác 0, khác nhau và cùng có bc nh nht.
Chng minh
Gi s tn ti hai đa thc mã khác 0, khác nhau và cùng có bc nh nht 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 thc mã g(x) + f(x) có bc nh hn r, mâu thun. Chng minh hoàn tt.
Chúng ta kí hiu đa thc mã có bc nh nht là g(x) và kí hiu 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
ca g(x) phi bng 1.
Chng minh
Gi s g
0
= 0. Suy ra
g(x) = x * (g
1
+ … + g
r–1
x
r - 2
+ x
r - 1
)
Lý thuyt Thông tin
Ngi son H Vn 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) cng là mt đa thc mã. Vì t mã
tng ng vi f(x) là kt qu ca vic dch trái 1 bit hay dch phi (n – 1) bit t mã tng
ng vi g(x). Mà bc ca f(x) bng r – 1 và d nhiên f(x) khác 0. iu này mâu thun vi
đnh ngha ca g(x). T đây suy ra điu phi chng minh.
nh lý 13.3
Mt đa thc
v(x) trên trng GF(2) có bc ≤ n – 1 là đa thc mã nu và ch nu nó
là mt bi s ca g(x). Tc là nó có th vit v(x) = q(x) * g(x).
Chng minh
Trc ht chúng ta chng minh nu v(x) = q(x) * g(x) và bc ca v(x) ≤ n – 1 thì v(x) là
đa thc mã. Thc vy, 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à bc ca q(x) và p + r ≤ n – 1. Mà do x
i
* g(x) vi 0 ≤ i ≤ p là đa thc mã
(tng ng vi t mã do t mã g(x) dch i bit). Nên v(x) là đa thc mã vì bng vi mt t
hp tuyn tính ca các đa thc mã.
Bây gi nu v(x) là đa thc 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 thc d và có bc nh hn b
c ca g(x). Nhng đi vi các đa thc trên
trng GF(2) chúng ta có th suy ra
r(x) = q(x) * g(x) + v(x)
Nên r(x) là mt đa thc mã. Vì vy do đnh ngha ca g(x) chúng ta suy ra r(x) = 0. Chng
minh hoàn tt.
T đnh lý này chúng ta gi tên đa thc g(x) là đa thc sinh, vì t g(x) có th sinh ra tt c
các đa thc mã khác.
nh lý 13.4
a thc sinh ca m
t mã vòng C(n, k) có bc r = n – k.
Chng minh
Gi r là bc ca đa thc sinh g(x). T đnh lý trên chúng ta có mi đa thc mã v(x) là
mt bi s ca g(x)
v(x) = q(x) * g(x)
Vì vy có bao nhiêu t mã thì có by nhiêu đa thc q(x). Trc ht chúng ta thy do bc ca
v(x) ≤ n – 1 nên bc ca q(x) ≤ (n
– 1) – r. Do đó có tng cng 2
n – r
đa thc q(x) (vì q(x) có
n – r h s thuc trng GF(2)) Mt khác s lng t mã là 2
k
. T đây suy ra
n – r = k hay r = n – k
Chng minh hoàn tt.
T đnh lý này chúng ta có th biu din đa thc 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 thc sinh ca mt mã vòng C(n, k) là mt c s ca x
n
+ 1.
Chng minh
T B đ 13.1 chúng ta suy ra
g
(i)
(x) = [x
i
* g(x)] mod (x
n
+ 1)
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 106
hay chúng ta có th vit
x
i
* g(x) = q(x) * (x
n
+ 1) + g
(i)
(x)
Bây gi chn i = k và đ ý bc g(x) = n – k nên chúng ta suy ra q(x) = 1 tc 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à mt đa thc mã nên g
(i)
(x) phi là mt bi ca g(x), tc là chúng ta có th
vit g
(i)
(x) = g(x) * a(x). Th vào trên chúng ta suy ra điu phi chng minh.
x
n
+ 1 = g(x) * (x
k
+ a(x))
nh lý 13.6
Nu g(x) là mt đa thc có bc (n – k) và là c s ca (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 thc sinh ca mt mã vòng C(n, k) nào đó.
Chng minh
Xét k đa thc g(x), x * g(x), …, x
k – 1
* g(x). Các đa thc này đu có bc ≤ n – 1. Gi
v(x) là mt t hp tuyn tính ca k đa thc này vi 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à mt đa thc có bc ≤ n – 1 và là bi s ca g(x). Có tt c 2
k
đa thc v(x) khác nhau
và to nên mt không gian tuyn tính ca các đa thc mã vi g(x), x * g(x), …, x
k – 1
* g(x)
là các đa thc làm c s. Vì vy 2
k
t hp (a
0
a
1
… a
k – 1
) tng ng vi
2k
đa thc này to
nên mt mã tuyn tính C(n, k). Bây gi chúng ta chng minh mã này có tính vòng, tc là
chng minh nu v là mt t mã thì dch v 1 bit chúng ta đc v
(1)
cng là mt t mã. iu
này cng tng đng vi nu v(x) là mt đa thc mã thì v
(1)
(x) cng là mt đa thc mã.
u tiên chúng ta biu din 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)
Da vào biu din ca 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à bi ca g(x) nên v
(1)
(x) cng là bi ca g(x). Vì vy v
(1)
(x) cng là
đa thc mã. Chng minh hoàn tt.
13.3 Ma trn sinh và ma trn kim tra ca mã vòng
Ma trn sinh ca mã vòng
T các đnh lý trên chúng ta suy ra mt t mã là mt t hp tuyn tính ca các t mã
tng ng vi các đa thc mã g(x), x * g(x), …, x
k – 1
* g(x). Và vi chú ý rng các đa thc
g(x), x * g(x), …, x
k – 1
* g(x) đc lp tuyn tính vi nhau. Vì vy ma trn sinh ca mã vòng
C(n, k) s là, trong đó g
0
= g
n – k
= 1.
Lý thuyt Thông tin
Ngi son H Vn 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 mt mã vòng C(7, 4).
Theo các tính cht ca mã vòng chúng ta suy ra đa thc sinh ca mã có bc bng 3 và là mt
c s ca x
7
+ 1. Phân tích đa thc này ra tha 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 tha s ca x
7
+ 1 cùng có bc bng 3, mi tha s s sinh ra mt mã
vòng C(7, 4). Bây gi chúng ta chn chng hn
g(x) = (1 + x + x
3
)
T đây chúng ta suy ra ma trn sinh ca 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 dng h thng
tìm mã vòng dng h thng, chúng ta bin đi t ma trn sinh thành ma trn sinh
dng h thng. đây chúng ta chú ý rng do tính vòng nên t dng h thng loi 1 chúng ta
có th dch vòng k bit đ bin đi sang dng h thng loi 2 và ngc li. Ví d t ma trn
sinh trong Ví d 13.2 chúng ta bin đi nh sau thì
đc ma trn sinh h thng dng 2: h
3
=
h
3
+ h
1
, h
4
= h
4
+ h
1
+ h
2
trong đó h
i
là hàng th i ca ma trn.
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
=
×
1000101
0100111
0010110
0001011
)74(ht
G
Và t đây chúng ta có th có đc ma trn sinh h thng dng 1 bng cách dch vòng k = 4
bit. Kt qu chúng ta có ma trn sinh h thng dng 1 nh sau
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
=
×
1011000
1110100
1100010
0110001
)74(ht
G
Mã hoá thành t mã h thng
Ngoài vic dùng ma trn sinh h thng đ mã hoá mt thông báo thành t mã h thng
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 thng
dng 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 kim tra.
Gi u(x) là đa thc tng ng vi thông báo u. Vì vy bc ca u(x) ≤ k – 1. Chia x
n–k
* u(x)
cho g(x) chúng ta đc
Lý thuyt Thông tin
Ngi son H Vn 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à bi ca g(x) nên nó là đa thc mã. Và đ ý t mã tng ng vi đa
thc mã này có k bit sau là k bit thông báo, đó chính là t mã h thng dng 2 tng ng vi
thông báo u.
Ví d 13.3
Cho mã vòng C(7, 4) có ma trn sinh là g(x) = (1 + x + x
3
). Hãy mã hoá thông báo u =
1010 thành t mã h thng dng 2.
Chúng ta có u(x) = 1 + x
2
. Nhân u(x) vi x
n–k
= x
3
ri 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 thc mã và t mã tng ng w = 0011010 là t mã h thng dng 2 tng ng vi u.
Ma trn kim tra ca mã vòng
tìm ma trn kim tra ca mã vòng chúng ta có th s dng cách đã bit là tìm ma
trn kim tra t ma trn sinh hoc ma trn sinh h thng. Tuy nhiên đi vi mã vòng chúng
ta có mt cách xác đnh ma trn kim tra nhanh chóng hn. Trc ht vì g(x) là mt c s
ca x
n
+ 1 nên chúng ta có th biu din
x
n
+ 1 = g(x) * h(x)
Và chúng ta gi h(x) là đa thc đi ngu ca g(x). ý h(x) có bc k và có th đc biu
din nh sau, trong đó h
0
= h
k
= 1
h(x) = h
0
+ h
1
x + … + h
k
x
k
Gi v(x) = a
0
+ a
1
x + … + a
n – 1
x
n – 1
là đa thc mã tng ng vi t mã v = (a
0
a
1
…a
n – 1
)
Chúng ta có th biu din nh sau trong đó q(x) có bc ≤ k – 1
v(x) = q(x) * g(x)
Bây gi chúng ta nhân v(x) vi 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ó bc ≤ k – 1 nên t đây chúng ta suy ra các h s ca x
k
, x
k + 1
, …, x
n–1
trong v(x)
* h(x) bng 0. T cách tính h s ca x
k
, x
k + 1
, …, x
n–1
trong v(x) * h(x) theo các h s a
i
và
h
j
ca v(x) và h(x) chúng ta suy ra n – k đng thc 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 thc này chúng ta suy ra các tích vect sau bng 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ì vy nu chúng ta đt
Lý thuyt Thông tin
Ngi son H Vn 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à mt ma trn kim tra ca mã vòng.
Ví d 13.4
Cho mã vòng C(7, 4) có ma trn 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 trn kim tra ca b mã nh sau
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
=
×
1110100
0111010
0011101
73
H
Chú ý
Mã vòng là mã cho phép thit k các mch mã hoá, sa sai và gii mã d dàng và hiu
qu nên đc s dng rng rãi trong thc t.
Bây gi chúng ta s trình bày ng dng ca trng GF(2
m
) trong vic xây dng các mã
vòng. Trc ht chúng ta có đnh lý sau.
nh lý 13.7
Cho a là mt phn t khác 0 ca trng GF(2
m
) có chu k là n, đa thc ti thiu
f(x) ca a có bc là m. Thì mã có ma trn sau làm ma trn kim tra là mt mã vòng
C(n, n – m), trong đó mi phn t trong ma trn bên di đc thay th bng vect m
thành phn tng ng ca nó.
H
m×
n
= [1 a a
2
… a
n – 2
a
n–1
]
Hn na mã vòng này có đa thc sinh chính là f(x).
Chng minh
Trc ht chúng ta chng minh rng nu w = (b
0
b
1
b
2
…b
n–2
b
n–1
) là mt t mã thì v = (b
n–
1
b
0
b
1
…b
n–3
b
n–2
) cng là mt t mã, t đó suy ra mã có tính vòng. Tht vy nu 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 thc 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
tc là (b
n–1
b
0
b
1
…b
n–3
b
n–2
) cng là mt t mã.
Th hai vì đa thc ti thiu ca a có bc là m nên m phn t 1, a, a
2
, …, a
m–1
là đc lp
tuyn tính. T đó suy ra m hàng ca H là đc lp tuyn tính. Vì vy mã thc s là mã vòng
C(n, n – m).
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 110
Cui cùng nu biu din f(x) = f
0
+ f
1
x + f
2
x
2
+ … + f
m–1
x
m–1
+ f
m
x
m–1
(vi 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) (gm n thành phn) là mt t mã.
Và không tn ti đa thc mã v(x) nào có bc nh hn m, vì nu ngc li lúc đó chúng ta có
do v × H
T
= 0 suy ra v(a) = 0. iu này mâu thun vi đnh ngha f(x) là đa thc ti thiu
ca a. Chng minh hoàn tt.
Ví d 13.5
Xét trng GF(2
4
) và a có đa thc ti thiu là f(x) = 1 + x + x
4
nh trong Ví d 11.7.
Chú ý a có chu k là 15. Thì ma trn sau là ma trn kim tra ca mã vòng C(15, 11) có đa
thc sinh chính là f(x)
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
=
×
111101011001000
011110101100100
001111010110010
111010110010001
154
H
Nu đa thc ti thiu ca a là f(x) = 1 + x + x
2
+ x
3
+ x
4
thì a có chu k là 5 và các phn t
1, a, , a
4
đc biu din di dng 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 trn sau là ma trn kim tra ca mã vòng (5, 1)
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
=
×
11000
10100
10010
10001
54
H
13.4 Mã BCH nh phân
Mã BCH có tên vit tt ca ba ngi sáng lp ra nó đó là Bose, Chaudhuri và
Hocquenghem. ây là mã vòng có kh nng sa đc nhiu li. Bây gi chúng ta s đa ra
qui trình đ xây dng mã BCH nh phân có kh nng sa đc nhiu li.
i vi các s nguyên dng m và t bt k chúng ta s xây dng mt mã BCH nh phân
có các thông s sau:
dài t mã: n = 2
m
– 1
S bit kim tra: n – k ≤ mt
Khong cách Hamming: d
min
≥ 2t + 1
Trc ht chúng ta chng minh đnh lý sau đây.
nh lý 13.8
Cho a là mt phn t ca trng GF(2
m
) có đa thc ti thiu là mt đa thc cn
bn bc m. Thì mã có ma trn sau làm ma trn kim tra là mt mã vòng có khong
cách Hamming ≥ 2t + 1, trong đó mi phn t trong ma trn bên di đc thay th
bng vect m thành phn tng ng ca nó.
Lý thuyt Thông tin
Ngi son H Vn 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
Hn na đa thc sinh g(x) ca b mã là đa thc bi s chung nh nht ca các đa thc
ti thiu ca các phn t a, a
3
, a
5
, …, a
2t–1
.
Chng minh
T đnh lý chúng ta suy ra a có chu k là n = 2
m
– 1 và vì vy a là mt phn t c s ca
trng GF(2
m
).
Trc ht chúng ta chng minh rng nu w = (b
0
b
1
b
2
…b
n–2
b
n–1
) là mt t mã thì v = (b
n–
1
b
0
b
1
…b
n–3
b
n–2
) cng là mt t mã, t đó suy ra mã có tính vòng. Tht vy nu w là t mã
thì chúng ta có
w × H
T
= 0
hay vit ngc li
H × w
T
= 0
Nhân ma trn B sau vi 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 đ ý nu dch vòng ma trn (B×H) 1 ct theo chiu t trái sang phi đc thì
kt qu là ma trn H. T đây suy ra H×v
T
= 0 vi v là kt qu ca vic dch vòng w 1 bit
(theo chiu t trái sang phi). Hay nói cách khác v × H
T
= 0. T đây suy ra mã có tính vòng.
Th hai đ chng minh b mã có khong cách Hamming ≥ 2t + 1 chúng ta ch cn
chng minh mi tp 2t ct ca ma trn H là đc lp tuyn tính. Tht vy gi s tn ti r ct
có các phn t đi đu là
1
k
a ,
2
k
a , …,
r
k
a là có tng bng 0 trong đó r ≤ 2t. T đây chúng ta
suy ra h sau, gi 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ý thuyt Thông tin
Ngi son H Vn 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
Mi phng trình trong h 1 có dng p(a) = 0 trong đó p(a) là đa thc ca a. t
i
k
a
= y
i
vi i = 1, 2, …, r. T đây chúng ta nhn đ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 trng GF(2
m
) thì
(y
1
+ y
2
+ … + y
r
)
2
= y
1
2
+ y
2
2
+ … + y
r
2
Vì vy 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 ly r phng trình đu và vit di dng ma trn sau, gi 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
Phng trình (4) có dng Ay = 0, trong đó các phn t ca ma trn A và ca vect y là các
phn t ca trng GF(2
m
). Các phn t y
1
, y
2
, …, y
r
là khác phn t 0 vì vy phng trình
Az = 0 là có nghim không tm thng trong trng GF(2
m
). Vì vy det A = 0 (là phn t 0
ca trng GF(2
m
)). Mà theo B đ 13.2 chúng ta có det A =
∏
>
−
ji
ji
yy )(
vi i, j ∈ {1, 2,
…, r}. (Chú ý trong trng GF(2
m
) phép tr ging vi phép cng). Mà do các phn t a
q
vi q = 1, 2, …, n = 2
m
– 1 là phân bit nhau nên (y
i
– y
j
) ≠ 0 ∀ i ≠ j (Chú ý y
i
=
i
k
a ). Vì vy
det A =
∏
>
−
ji
ji
yy )(
≠ 0. Mâu thun. T đây suy ra điu phi chng minh.
Cui cùng gi g(x) = g
0
+ g
1
x + g
2
x
2
+ … + g
n–1
x
n–1
là đa thc sinh ca 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
Nu đt f
1
(x), f
3
(x), f
5
(x), …, f
2t–1
(x) là các đa thc ti thiu ln lt ca các phn t a, a
3
,
a
5
, …, a
2t–1
. T B đ 11.5 chúng ta suy ra g(x) chia ht cho f
1
(x), f
3
(x), f
5
(x), …, f
2t–1
(x).
t p(x) là bi s chung nh nht ca f
1
(x), f
3
(x), f
5
(x), …, f
2t–1
(x). Suy ra g(x) chia ht cho
p(x). Suy ra bc ca g(x) ≥ bc ca p(x). Mt khác nu biu din p(x) bng
p(x) = p
0
+ p
1
x + p
2
x
2
+ … + p
n–1
x
n–1
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 113
trong đó p
n–1
không nht thit bng 1. (Chú ý các đa thc ti thiu đu là c ca
1x
12
+
−
m
nên p(x) cng vy và có bc ≤ n = 2
m
– 1.) Thì do tt c p(a), p(a
3
), p(a
5
), …, p(a
2t–1
) đu
bng 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
thc mã. Vì vy theo đnh ngha ca đa thc sinh chúng ta suy ra g(x) = p(x). Chng minh
hoàn tt.
B đ 13.2
Ma trn A sau có đnh thc bng
∏
>
−
ji
ji
yy )( vi i, j ∈
{1, 2, …, r}. nh thc này
đc gi là đnh thc 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
Chng minh
Tht vy, det A là mt đa thc đng đu det A = p(y
1
, y
2
, , y
r
) trong đó p(y
1
, y
2
, , y
r
)
là mt tng ca các thành phn, mi thành phn bao gm tích ca các y
i
k
vi mi i = 1, 2, ,
r sao cho tng bc ca mi thành phn là bng nhau. D thy bc ca mi thành phn ca p
bng 1 + 2 + … + (r – 1) = r(r – 1)/2. Chú ý nu y
i
= y
j
thì det A = 0. T đây suy ra p(y
1
, y
2
,
, y
r
) chia ht cho (y
i
– y
j
) ∀i ≠ j. Kt hp vi trên chúng ta suy ra
det A = p(y
1
, y
2
, , y
r
) =
∏
>
−
ji
ji
yy )( vi i, j ∈ {1, 2, …, r}.
Chng minh hoàn tt.
Ví d 13.6
Cho m = 4, t = 2 chúng ta s xây dng mt mã vòng có chiu dài t mã là 2
4
– 1 = 15 và
có khong cách Hamming d ≥ 5. Chúng ta s xây dng bng cách da vào trng GF(2
4
).
Cho a là phn t có đa thc ti thiu là đa thc cn bn có bc 4 sau
f
1
(x) = 1 + x + x
4
Trng này chính là trng GF(2
4
) trong Ví d 11.7. a có chu k n = 2
m
– 1 = 15. Chúng ta
có ma trn kim tra ca b mã nh sau.
⎥
⎦
⎤
⎢
⎣
⎡
=
4239363330272421181512963
141212111098765432
1
1
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
H
Thay mi phn t a
i
bng vect (m = 4 thành phn) tng ng chúng ta đc
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 114
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎣
⎡
=
111101111011110
101001010010100
110001100011000
100011000110001
111101011001000
01111
0101100100
001111010110010
111010110010001
H
Và đa thc sinh g(x) là bi s ca hai đa thc ti thiu tng ng vi phn t a và a
3
. Theo
Ví d 11.7 chúng ta có đa thc ti thiu ca 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 trng hp đa thc ti thiu ca a không phi là đa thc cn bn thì chúng ta s
tìm đc mã vòng có chiu dài n ≠ 2
m
+ 1, vi n là chu k ca a. Trng hp này sinh viên
t ly ví d.
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 115
BÀI 14 GII THIU V MT MÃ HOÁ
14.1 Gii thiu
14.2 Mt s phép mt mã đn gin
14.3 B gãy (breaking) mt h mt mã
14.4 Kt hp các phng pháp mt mã hoá
14.5 S không chc chn và s bo mt hoàn ho (perfect secrecy)
14.6 Các hàm mt chiu (one-way function)
14.7 C s toán hc ca mt mã hóa
14.1 Gii thiu
Mã hoá bo mt (hay mt mã hóa) có mt lch s lâu đi. Trc ht nó đã tng đc s
dng t rt lâu trong các cuc chin tranh c đi và sau đó kéo dài cho đn tn bây gi. Tuy
nhiên t khi chic máy tính đu tiên ra đi và kéo theo sau đó là c mt cuc cách mng d
di v thông tin và truyn thông đã làm thay đi cuc sng ca con ngi. Chúng ta không
còn trao đi và x lý thông tin theo nhng cách thc truyn th
ng tn nhiu thi gian và
công sc mà càng ngày càng chuyn nhiu trao đi qua nhng môi trng đin t nhanh
chóng và hiu qu. Chng hn nh các giao dch tài chính, chuyn khon, mua sm, đng ký
kt hôn, đng ký khai sinh, … càng ngày càng đc thc hin qua môi trng mi, môi
trng đin t. Tuy nhiên chúng ta cn nhn mnh rng đi kèm vi s phát trin ca khoa
hc k thut, các thit b
đin t hin đi hoàn toàn có th “bt” đc các thông tin đang
đc truyn đi trên mng, trên internet hay qua đin thoi vô tuyn, hu tuyn, sóng v tinh,
… Vì vy nhu cu bo mt thông tin ngày càng tr nên quan trng và cp thit. Trong các
bài hc sau đây chúng ta ch yu trình bày nhng nét chính ca lnh vc mt mã hóa d
liu. Nu mun nghiên cu chuyên sâu chi tit, bn đc có th tham kho thêm t các tài
li
u tham kho đc nêu hoc t ngun tài nguyên phong phú trên internet. Trc ht trong
bài hc này chúng ta s trình bày các vn đ và các khái nim c bn ca bo mt.
Thông báo, vn bn (message, plaintext)
Thông báo, vn bn là mt chui hu hn kí hiu ly t mt bng ch cái ∑ và
thng đc kí hiu là m.
đây ∑ thng là bng ch cái ting Anh gm 26 kí t, thnh tho
ng có thêm c kí t
khong trng.
Mt mã hóa (encryption), phép mt mã hoá
e
(
m
)
Mt mã hoá là vic bin đi mt thông báo sao cho nó không th hiu ni đi vi
bt k ai ngoi tr ngi nhn đc mong mun. D hiu hn mt mã hóa là vic
“ngy trang” hay “che du” thông báo, vn bn di mt dng khác đ cho nhng
ngi “ngoài cuc” không th xác đnh đc thông báo, vn bn gc. Phép mt mã
hóa thng đc kí hiu là e(m), vi m
là thông báo cn mt mã hóa.
Trong thc t, mt mã hoá đc xem nh là mt hàm, mt ánh x hay mt gii thut vi
mt tp các thông s (ngoài thông s cn có là thông báo cn mã hoá). T đây chúng ta có
khái nim khoá.
Khoá (key), khóa mã hóa, khóa gii mã
Khoá là mt thông s đu vào ca phép mã hoá hoc gii mã (nó không phi là
thông báo cng nh là chui mt mã). Khóa dùng đ mã hóa kí hiu là k
e
và khóa
dùng đ gii mã kí hiu là k
d
. Trong mt s h mt mã hóa 2 khóa này chính là mt lúc
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 116
đó chúng ta gi chung là k, ngc li trong mt s h mt mã hóa 2 khóa này là khác
nhau. Tuy nhiên gia 2 khóa này thng có mt mi liên h vi nhau.
Mt phép mt mã hoá có th có nhiu khoá mã hóa (tng ng có nhiu khóa gii mã).
Các khóa này thng đc sinh ra t mt khóa mã hóa ban đu nào đó đc chn trc.
Chui mt mã (cipher, ciphertext, cryptogram)
Chui mt mã là chui “ngy trang”, tc là chui kt qu tng ng ca chui
thông báo qua phép mt mã hóa và th
ng đc kí hiu là c.
c = e(m, k
e
).
Phép gii mã (decryption)
d
(
c
,
k
d
)
Phép gii mã là quá trình xác đnh thông báo gc t chui mt mã c và khóa gii
mã k
d
và thng đc kí hiu là d(c, k
d
).
d(c, k
d
) = m.
Chúng ta có th xem phép gii mã nh là mt ánh x ngc ca phép mã hóa.
H mt mã (cryptosystem)
Mt cách hình thc, mt h mt mã đc đnh ngha là mt b bn (M, K
1
, K
2
, C).
Trong đó M là tp các thông báo m trên các bng ch cái ∑
, K
1
là tp hu hn các
khoá mã hóa k
e
, K
2
là tp hu hn các khoá gii mã k
d
, C là tp các chui mt mã c
trên bng ch cái Γ
, ngoài ra còn có thêm gi thit rng tn ti các hàm hay gii thut
e và d sao cho
e: M ×
K
1
→
C
d: C ×
K
2
→
M
và đi vi mi cp (m, k
e
) ∈
M × K
1
,
d(e(m, k
e
) , k
d
) = m
Chú ý
Chúng ta thông thng gia k
e
và k
d
có mi liên h vi nhau và thng đc sinh ra
theo tng cp nên trong nhiu trng hp chúng ta có th xem mt h mt mã nh là mt b
ba (M, K, C) trong đó K là tp hp các khóa mã hóa k.
Trong ng cnh ca lý thuyt mt mã hóa đôi lúc chúng ta nói mã hóa thay cho mt mã
hóa và h mã thay cho h mt mã.
H mt mã khóa bí mt (secret key cryptosystem)
H mã khóa bí mt hay còn gi là h mã đi xng (symmetric cryptosystem) là h
mã mà trong đó vi
c mã hóa và gii mã dùng chung mt khóa bí mt.
H mt mã khóa công khai (public key cryptosystem)
H mã khóa công khai hay còn gi là h mã bt đi xng (assymmetric
cryptosystem) là h mã mà trong đó vic mã hóa và gii mã s dng 2 khóa khác nhau,
t khóa này không th tìm ra khóa kia mt cách d dàng. Khóa dùng đ mã hóa
thng đc thông báo công khai và đc gi là khóa công khai (public key), còn khóa
dùng đ gii mã đc gi bí mt và đc gi là khóa bí mt hay khóa riêng t (private
key).
Chú ý
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 117
Hin nay có mt s h mã đi xng dùng 2 khóa khác nhau cho vic mã hóa và gii mã.
C 2 khóa này đu đc gi bí mt vì t khóa này có th xác đnh đc khóa kia không khó
khn. D nhiên nó cng không đc gi là h mã khóa “công khai” đc.
14.2 Mt s phép mt mã đn gin
Phép thay th đn gin
Trong phép này, khoá là mt hoán v π ca bng ch cái ∑ và mi kí hiu ca
thông báo đc thay bng nh ca nó qua hoán v π.
Thng thng, khoá đc biu din nh mt chui 26 kí t, chng hn nu khoá là
UXEOS…, thì nó biu th rng bt k mt s xut hiên ca A trong thông báo thì đc thay
bng U, B đc thay bng X, C đc thay bng E, D đc thay bng O, E đc thay bng
S, … Các khong trng thng đc gi nguyên không b thay th.
Phép thay th
n-gram
Thay vì thay th đi vi các kí t, ngi ta có th thay th cho tng cm 2 kí t (gi là
digram) hoc tng cm 3 kí t (gi là trigram) và tng quát cho tng cm n kí t (gi là n-
gram). Nu bng ch cái ∑ gm 26 kí t ting Anh thì phép thay th n-gram s có khoá là
mt hoán v ca 26
n
n-gram khác nhau (có 26
n
chui khác nhau chiu dài n). Trong trng
hp digram thì hoán v gm 26
2
digram và có th biu din tt nht bng mt dãy 2 chiu 26
× 26 trong đó các hàng biu din kí hiu đu tiên, các ct biu din kí hiu th hai, ni dung
ca các ô biu din chui thay th. Ví d bng 2 chiu sau biu th AA đc thay bng EG,
AB đc thay bng RS, BA đc thay bng BO, BB đc thay bng SC, …
A B
…
A
EG RS
B BO SC
…
Phép hoán v bc
d
i vi mt s nguyên dng d bt k, chia thông báo m thành tng khi có chiu dài
d. Ri ly mt hoán v π ca 1, 2, …, d và áp dng π ti mi khi. Chng hn nu d = 5 và π
= (4 1 3 2 5), thì có ngha là hoán v (1 2 3 4 5) s đc thay bng hoán v mi (2 4 3 1 5).
Ví d nu chúng ta có thông báo
m = JOHN |IS A |GOOD |ACTOR
thì qua phép mt mã này s tr thành chui mt mã sau
c = ONHJ |SA I |ODOG |COTAR
gii mã ngc li ta phi tìm hoán v ngc π
- 1
. Trong trng hp này chúng ta có π
- 1
= (2 4 3 1 5). Tng quát nu π = (i
1
i
2
… i
n
) thì π
- 1
= (j
1
j
2
… j
n
) trong đó
kj
k
i
=
, có ngha
là trong π
- 1
v trí th i
1
cha giá tr 1, v trí th i
2
cha giá tr 2, …
Phng pháp Vigenère và Caesar
Trong phng pháp này, khoá bao gm mt chui ca d kí t. Chúng đc vit lp li
bên di thông báo và đc cng modulo 26, vi chú ý rng bng ch cái đc đánh s t
A = 0 đn Z = 25. Các kí t khong trng s đc gi nguyên không cng.
Chng hn vi d = 3, nu khoá là chui ABC thì thông báo
m =
MARY I S GOOD
vi khoá
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 118
k =
ABCA BC ABCA
tr thành
c =
MBTY J U GPQD
Trong trng hp d = 1, nh vy khoá ch là mt kí t đn, thì đc gi là phng pháp
Caesar vì đc cho là đc s dng ln đu bi Julius Caesar.
Phng pháp Playfair
ây là mt s đ da trên s thay th digram trong đó khoá là mt hình vuông kích
thc 5 × 5 cha mt s sp xp nào đó ca 25 kí t ca bng ch cái (không tính kí t J vì
s xut hin ít ca nó và có th
thay nó bng I). Gi s chúng ta có ma trn 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 thc hin nh sau. Chng hn nu digram cn thay th là AV thì
trong hình ch nht có A, V là hai đnh chéo nhau thay A bng đnh k ca nó theo đng
thng đng chính là O và tng t thay V bng đnh k ca nó theo đng thng đng
chính là K. Tng t nu digram c
n thay th là VN thì chui thay th là HO. Nu các kí t
ca digram nm trên hàng ngang thì chui thay th là các kí t bên phi ca chúng. Chng
hn nu digram là WU thì chui thay th là SP, nu digram là FP thì chui thay th là UW,
nu digram là XR thì chui thay th là LK. Tng t nu các kí t ca digram nm trên
hàng dc thì chui thay th là các kí t bên di ca chúng. Chng hn nu digram là SO
thì chu
i thay th là AN, nu digram là MR thì chui thay th là DI, nu digram là GH thì
chui thay th là UG. Trong trng hp digram là mt cp kí t ging nhau chng hn OO
hoc là mt kí t đc đi kèm mt khong trng chng hn B
thì có nhiu cách x lý, cách
đn gin nht là gi nguyên không bin đi digram này.
Phng pháp khoá t đng (autokey)
Trong phng pháp này, có mt khoá “mi” (priming key), cái mà thng là ng
n và
đc s dng đ khi đu quá trình mt mã hoá. Quá trình mã hoá đc tip tc bng cách
s dng c bn thân thông báo ln chui mt mã (cryptogram) đang chy. Xét ví d sau: Gi
s khoá mi là VENUS và thông báo là SEND SUPPLIES. u tiên s dng thông báo nh
mt khoá đang chy, chúng ta mã hoá bng phép cng mod 26. (Chú ý các khong trng 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
Chui mt mã N I A X K M T C O A Y H
S dng chui mt mã trên nh là mt khoá vi khoá mi nh c chúng ta đc kt 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
Chui mt mã N I A X K H X P I S Q L
Phng pháp bin đi tuyn tính
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 119
Ý tng c bn là chia thông báo thành nhng khi có chiu dài d và gn khi này vi
mt vect x, gm d s nguyên, và ri nhân vect x này vi mt ma trn không suy bin (tc
có đnh thc khác 0) s đc chui mt mã y = Ux. Vic gii mã đc thc hin bng cách
nhân y vi ma trn nghch đo U
- 1
ca U, x = U
- 1
y.
đm bo các phép toán đc thc hin trên mt trng, các tính toán s đc tính
trong modulo ca mt s nguyên t. Chng hn ly bng ch cái ∑ gm 37 kí t nh sau và
đc đánh s ln lt t 0 đn 36: 10 ch s t 0 đn 9, khong trng, và 26 kí t ch cái.
Vi bng ch cái này, nu chn d = 2 và ma trn làm khoá là:
k = U =
⎥
⎦
⎤
⎢
⎣
⎡
1522
133
Thông báo m = FRIEND đc biu din nh là
m = FR | IE | ND = 15, 27 | 18, 14 | 23, 13
Thì
⎥
⎦
⎤
⎢
⎣
⎡
=
⎥
⎦
⎤
⎢
⎣
⎡
×
⎥
⎦
⎤
⎢
⎣
⎡
351432
161426
131427
231815
1522
133
Vy chui mt mã là
c = 26, 32 | 14, 14 | 16, 35 = Q, W | E, E | G, Z = QWEEGZ
14.3 B gãy (breaking) mt h mt mã
B gãy mt h mt mã có ngha là gì? Nó có ngha là vic xác đnh đc vn bn hay
thông báo gc t nhng gì có th bit đc.
Chúng ta cn phân tích nhng kh nng có th b b gãy ca mt h mt mã, có nh vy
mi giúp chúng ta xây dng đc nhng yêu cu, tiêu chun đi vi mt h mt mã an toàn
và cho ra đi nhng h mt mã này và nhng h mt 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 vic xây dng và b gãy các h mt mã đó là
mt quá trình chin đu gia hai bên, mt bên là nhng ngi xây dng còn mt bên là
nhng ngi tìm các yu đim ca cách xây dng đ vt qua. Chính quá trình b gãy đã
giúp cho vic xây dng ngày càng tt hn, tuy nhiên ngc li các k thut b gãy cng
ngày càng phát trin và tinh vi hn. ây có th xem là mt trng hp đin hình c
a quá
trình chin đu và phát trin không ngng ca hai mt ca mt vn đ.
Quay tr li vi vic b gãy, nhng chuyên gia mt mã hay nhng k tn công thng
đc gi thit bit đy đ thông tin v hàm mã hoá e, hàm gii mã d và khóa mã hóa k
e
.
Thêm vào đó, h cng có th có nhiu thông tin h tr nh các thng kê v ngôn ng, kin
thc v ng cnh, vân vân.
H s chn chn có mt chui mt mã nào đó, và tt c nhng gì mà h thiu là khoá
gii mã k
d
t đó h có th s dng d đ gii mã c mt cách chính xác. Và vì vy vic b gãy
có th qui v vic tìm/tính khóa gii mã k
d
t nhng gì h bit. Vic b gãy có th minh
ha nh hình nh bên di.
B phát sinh khoá k
B mã hoá e B gii mã d
Nhng k
tn công
m
k
e
k
d
c = e(m, k)
m
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 120
Hình 14.1 Mô hình ca mt h mt mã
Nhng gi thit trên là hoàn toàn thc t. Tht vy nhng phng pháp mã hóa và gii
mã hu nh không th gi bí mt. i vi nhng phng pháp mã hóa đn gin thì nhng
k tn công đã bit đy đ. Còn đi vi nhng phng pháp mã hóa phc tp thì thng
không phi do mt ngi ngh ra mà là do mt nhóm hoc nhiu ng
i cùng ngh ra. Thm
chí ngay c khi ch do mt ngi ngh ra thì khi áp dng vào các h thng truyn thông vn
có th có nhiu ngi qun lý h thng đó bit. Chính vì vy vic gi bí mt phng pháp
mã hóa là rt khó. Bí mt lúc này ging nh mt “cây kim trong bc”, lâu ngày cng có th
b phát hin. Mà mt khi mt ngi khác đã bit thì nhiu ngi có th bit. Và điu này
cng
đúng đi vi phép gii mã.
Chính vì hiu đc điu này nên mi có s ra đi ca h mã khóa công khai nh đã
đc gii thiu trên. Trong h mã khóa công khai, gii thut mã hóa, gii mã, và c khóa
mã hóa đu đc công khai, ch có duy nht mt cái cn gi bí mt đó là khóa dùng đ gii
mã. iu này cng ging các loi “khóa bi” hay “khóa s vòng” trong thc t. Chúng ta
nh rng, nguyên lý ch to c
a các loi “khóa bi” hay “khóa s vòng” hoàn toàn có th
bit đc, nhng đ m đc khóa chúng ta cn phi có chìa.
Có ba kh nng tn công cái mà chúng ta d đoán đi phng có th s tn công trên h
thng ca chúng ta:
1. Tn công ch da trên chui mt mã (crytogram-only attack): ây là trng hp đi
phng ch bit mt vài mu chui mt mã c.
2. Tn công da trên v
n bn đã bit (known-plaintext attack): Trng hp này thc t
hn trng hp (1). Trong trng hp này nhng ngi tn công đc gi thit là đã
bit mt đ dài đáng k ca vn bn thông báo và chui mt mã tng ng, và t đó c
gng tìm ra khoá (mã hóa cng nh gii mã).
ây là mt s tn công d di khó chng đ hn nhi
u nhng ngày nay đc xem nh
là mt chun an toàn ti thiu phi đt đc. Tht vy vào thi đim hin ti, tiêu chun
thích hp nht đ đánh giá mt h mt mã là kh nng ca nó đ chng đ s tn công
thm chí còn mnh hn nh sau
3. Tn công da trên vn bn đc chn (chosen-plaintext attack): Trong trng hp này,
nh
ng ngi tn công có th đã có đc mt s lng tu ý ca các cp thông báo và
chui mt mã tng ng (m, c).
Không khó đ thy rng không có h thng (hay phng pháp) mt mã nào đã mô t
mc 14.2 trên đây có th chng đ mt cuc tn công da trên vn bn đc chn.
Trng hp liên quan đn kh nng b tn công c
a nó đi vi s tn công da trên vn
bn đã bit là phc tp hn. Chng hn, xét h thng đn gin nht – h thng dùng phng
pháp thay th đn gin – sao cho khoá k là mt hoán v ca 26 ch cái trong đó A →
P, B
→ F, vân vân. Bây gi nu thông báo m đc gi là “silly message” bao gm ch A đc
lp li n ln, thì trong chui mt mã c tng ng, ch P s đc lp li n ln. Không thành
vn đ chúng ta có n ln bao nhiêu, cp thông báo - chui mt mã c th này s không sinh
ra khoá k. Tuy nhiên bng vic da vào các thng kê v xác sut xut hin ca các kí t,
đng thi duyt qua các phng án chn khóa theo th t đc đánh giá là hp lý nht đn
ít hp lý hn c
ng vi s tr giúp tính toán vi tc đ nhanh ca các siêu máy tính, vic tìm
ra khóa s là không quá khó và tn nhiu thi gian. Shannon và nhiu nhà nghiên cu khác
bng nhng nghiên cu v thng kê và entropy ca ting Anh đã phát biu rng
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 121
Vi nhng chui mt mã có chiu dài 30 kí t hoc hn biu din cho nhng chui
thông báo có ngha trong ting Anh thì gn nh chc chn có th tìm ra khóa ca nó
trong các phng pháp mã hóa nói trên.
Tóm li có th nói rng nu đã cho mt chiu dài va đ ca thông báo và chui mt
mã, bt k h thng hay phng pháp mt mã trên đu có th b b gãy (crack), tc là
khóa có th đc tìm th
y. đây chúng ta xem mt ví d đn gin v cách b gãy.
Ví d 14.1
Gi s mt h mt mã đc bit là da trên phng pháp Caesar vi bng ch cái gm
27 kí t đc đánh s nh sau
A = 0, B = 1, …, Z = 25, khong trng = 26
và phép cng thc hin theo mod 27. Chúng ta chp đc chui mt mã c sau
HWXGOQCCZOXGOXBORCST
Chúng ta đ ngh cách tn công sau đ tìm khoá cha bit k
0
. Chn các khoá d tuyn cho k
0
mt cách ngu nhiên và đi ngc chui mt mã, theo tng kí t, cho đn khi nào thông báo
có ý ngha.
Vì vy, nu đu tiên chúng ta chn k
0
= E, chúng ta s đi ngc c và nhn đc
DSTC …
ti ng cnh này chúng ta thy rng E không phi là khoá k
0
. Li chn k
0
= Z, cái này s đi
ngc c thành
JYZ …
cái này bác b Z.
S la chn k tip (theo linh cm ???!!!) ca chúng ta là k
0
= P và nhanh chóng thy
rng chui mt mã đã đc bin đi thành chui vn bn có ngha
THIS BOOK IS IN CODE
Ti ng cnh này chúng ta không đm bo rng không có cp thông báo-khoá khác mà s
sinh ra cùng chui mt mã trên. Tuy nhiên th tc kim tra ca nhng khoá khác cng
tng t nh vy.
14.4 Kt hp các phng pháp mt mã hoá
Mt cách t nhiên đ tng tính bo mt là kt hp nhiu phng pháp mt mã hoá vi
nhau. Hai cách nh vy, đc Shannon đ ngh t nm 1949, vn to nên c s ca nhiu h
mt mã thc t. ó là
1. Cách dùng tng trng s: Nu 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ì tng ca chúng
i
n
i
i
Sp
∑
=1
là h mt mã dùng S
i
vi xác sut p
i
.
Ly ví d trong trng hp n = 2 tc là có 2 h mã hóa S
1
, S
2.
. Thì h thng 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 dng vi xác sut p
1
q
i
còn khóa k
j
’ đc s dng vi xác sut p
2
q
i
’.
2. Cách dùng tích: Áp dng các h thng (hay phng pháp) ni tip nhau, đu ra ca h
thng này, chng hn S
1
, là đu vào ca h thng k tip, chng hn S
2
. D nhiên tp hp
đu ra ca h thng đi trc S
1
phi là tp con ca tp hp đu vào ca h thng đi sau
k tip S
2
. Nu thc hin đc thì chúng ta kí hiu h thng kt hp này là
S = S
1
ο
S
2
.
Gi s S
1
có các khóa k
1
, k
2
, …, k
m
, mi khóa k
i
đc dùng vi xác sut q
i
, S
2
có các
khóa k
1
’, k
2
’, …, k
n
’, mi khóa k
j
’ đc dùng vi xác sut q
j
’, thì S = S
1
ο
S
2
có mn khóa vi
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 122
các xác sut q
i
q
j
’. Chú ý rng S
1
ο S
2
thng có ít hn mn khóa có hiu qu, vì mt vài phép
bin đi ca tích có th trùng nhau.
3. Chúng ta có th kt hp đng thi 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
tng quát không bng vi S
2
ο S
1
.
14.5 S không chc chn và s bo mt hoàn ho (perfect secrecy)
Xét mt h mt mã (M, K, C) và gi thit rng M = {m
1
, m
2
, …, m
n
} là mt tp hu hn
các thông báo. Gi p
i
là xác sut thông báo m
i
đc gi đi, q
j
là xác sut khóa k
j
đc chn
và vic chn khóa đc lp vi thông báo đc gi đi. T hai s phân b xác sut này chúng
ta suy ra s phân b xác sut ca chui mt mã c
∑
=
=
n
i
ji
kpcP
1
)(
trong đó v phi đc tính tng trên tt c các cp 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 vic mt mã hóa tng t nh mt kênh truyn thông đc
trình bày trong BÀI 9, trong đó tp thông báo M là mt ngun ri rc không nh, còn hàm
mã hóa e vi các khóa k là kênh truyn.
Chúng ta có
∑
=
−=
n
i
ii
ppMH
1
log)(
∑
−=
jj
qqKH log)(
∑
=
−=
n
i
cPcPCH
1
)(log)()(
Chúng ta gi H(K | C) là s không chc chn v khóa, H(M | C) là s không chc chn
v thông báo. ôi khi chúng ta kí hiu h mt mã (M, K, C) bng S và ri kí hiu s không
chc chn v khóa, H(K | C), là H(S).
nh lý 14.1
S không chc chn v khóa quan h vi s không chc chn v thông báo bng
H(K | C) = H(M | C) + H(K | M, C)
Chng 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 điu phi chng minh.
H qu 14.1
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 123
S không chc chn v khóa ln hn hoc bng s không chc chn v thông báo.
Vì H(M | C) là đ bt ng trung bình v thông báo m khi nhn đc chui mt mã c nên
chúng ta có th nói rng mt h mt mã (M, K, C) là hoàn ho nu H(M | C) = H(M). Có
ngha là vic nhn đc chui mt mã c không giúp chúng ta bit thêm gì v
thông báo m.
Hay nói cách khác ngun M và C đc lp vi nhau. Tuy nhiên nh chúng ta s thy rt khó
đ đt đc điu này.
nh lý 14.2
Mt h mt mã (M, K, C) là hoàn ho nu và ch nu
P(m | c) = P(m)
vi mi thông báo m ∈
M và chui mt mã c ∈ C.
H qu 14.2
Mt h
mt mã (M, K, C) là hoàn ho nu và ch nu
P(c | m) = P(c)
vi mi thông báo m ∈
M và chui mt mã c ∈ C.
nh lý 14.3
iu kin cn đ mt h mt mã (M, K, C) là hoàn ho là nó có s lng khóa ít
nht là bng s lng thông báo.
Chng minh
Xét tp thông báo M = {m
1
, m
2
, …, m
n
} và mt 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 chui mt mã khác nhau c
i
. Vì h mt mã là hoàn ho nên
da vào h qu trên đây chúng ta có
P(c
i
| m
i
) = P(c
i
)
đng thi
P(c
i
| m
j
) = P(c
i
)
vi mi j ≠ i.
Vì vy phi có mt khóa k’ khác nào đó cái mà ánh x m
j
thành c
i
. iu này đúng cho mi j
(1 ≤ j ≤ n), và tt c các khóa nh vy phi khác nhau. Vì vy phi có ít nht là n khóa.
Ví d 14.2
Mt ví d c đin v h mt mã hoàn ho là “one-time pad”. Nó đc gii thiu ln đu
bi G. S. Vernam vào nm 1926. Nó hot đng nh sau. Gi s bng ch cái Σ là bng ch
cái ti
ng Anh gm 26 kí t (các du chm câu và khong trng đc b qua) và các kí t
này đc biu din theo đúng th t thành các s nguyên t 0 đn 25 Thông báo m gi đi
gm n kí t. mã hóa m, sinh mt chui ngu nhiên n kí t t bng ch cái Σ, mi kí t s
có mt xác sut đc chn là 1/26 và vic chn các kí t là đc lp ln 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 thy rng h thng này có 26
n
khóa có th, vì vy
H(K) = n log 26
Vì các khóa này đu có kh nng đc chn nh nhau nên chúng ta có
P(k | c) = 1/26
n
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 124
vi bt k khóa k nào.
H mt mã này đã đc chng minh là h mt mã hoàn ho. Tuy nhiên có mt vài hn ch
ln trong vic s dng các h mt mã này.
1. Không có mt phng pháp toán hc đ sinh ra các chui ngu nhiên đc lp làm khóa.
Ch có mt s phng pháp toán hc sinh ra các chui “gi ngu nhiên” mà thôi, tuy
nhiên chúng không đm bo đc rng s đt đc mc đ b
o mt ging nh trng
hp ngu nhiên tht s.
2. Chiu dài các khóa đúng bng chiu dài thông báo và phi đc truyn đn bên nhn đ
bên nhn dùng cho vic gii mã. Nh vy khóa này cng có th b bt đc trên đng
truyn và vì vy đn lt nó li cn phi đc mã hóa!!!
Mc dù có nhng hn ch nh vy nhng chúng cng đã đ
c s dng khá nhiu trong
thc t trc đây.
14.6 Các hàm mt chiu (one-way function)
Ý tng dùng các hàm mt chiu đ mã hóa là ct lõi ca các phng pháp mt mã hóa.
Tuy nhiên rt khó đ đa ra mt đnh ngha toán hc chính xác cho nó. Mt cách không
hình thc, mt hàm mt chiu là mt hàm
f: S → T, trong đó S, T là hai tp bt k sao cho
1. Vi bt k x ∈ S, f(x) là d dàng đ tính.
2. ã cho mt y = f(x) v
i mt x nào đó cha đc bit, thì rt “khó” (hoc không kh thi)
đ tìm ra đc x đi vi phn ln các y thuc T. Khó đây đng ngha vi vic phi tn
rt nhiu thi gian và chi phí đ tìm ra x.
Nó rõ ràng rng, đã cho f(x), mt cách tìm x là tìm kim vét cn thông qua tt c nhng giá
tr x có th ca S. Tuy nhiên đ
iu này s không kh thi nu S quá ln, chng hn nu S là tp
tt c nhng chui nh phân 200 bit (có 2
200
chui nh vy).
Ví d 14.3
Cho S là tp tt c các cp s nguyên t (p, q) và
f(p, q) = p × q
D thy rng t p, q chúng ta d dàng tìm ra f(p, q) nhng ngc li trong trng hp p và q
là các s nguyên t khá ln, chng hn có khong 100 ch s, t f(p,
q) chúng ta phi tn
rt “nhiu” thi gian mi có th tìm ra p và q.
Mt ví d khác nh sau. Cho S = {1, 2, , p - 1} vi p là mt s nguyên t khá ln
(chng hn có 200 ch s). Có khá nhiu đa thc 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) nhng điu ngc li thì rt khó.
Bài toán mt khu (password)
Mt trong nhng ng dng đu tiên ca các hàm mt chiu là vào vic gii quyt bài
toán v bo mt các mt khu trong các mô hình chng thc (xác nhn quyn hp l) đin
t (electronic authentication scheme).
Ví d xét mt h thng máy tính truy xut t xa trong đó m
i ngi s dng (user) phi
đng nhp (log on) vào h thng bng cách gi đi mt mt khu (password) bí mt. Rt
nguy him v mt bo mt nu chúng ta lu danh sách nhng ngi s dng và password
ca h trong mt dng không mã hóa trong mt file trên máy, vì nó gn nh không th gi
bí mt ni dung file đc. R. M. Needham đã đ ngh gii pháp sau đây cho bài toán này.
Cho f là mt hàm mt chi
u nào đó trong đó min xác đnh ca nó là tp các password
có th (là nhng chui kí t). Khi mt ngi s dng mi tham gia vào h thng, anh ta s
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 125
chn mt password, gi là p
i
, cho mình. Thay vì máy tính lu tr p
i
, nó s lu tr chui f(p
i
)
cái mà d dàng tính đc t p
i
.
Mt ngi bt k không có quyn hp l là có th xem đc ni dung ca file cái mà
cha danh sách tên ngi s dng tng ng. Có ngha là file này không cn đc gi bí
mt. Khi ngi s dng u
i
đng nhp vào h thng, anh ta ch cn gõ vào tên đng nhp u
i
và mt khu p
i
ca anh ta, máy tính s tính f(p
i
) và so sánh nó vi phn t (u
i
, f(p
i
)) trong
file. S trùng khp cho phép u
i
truy xut vào h thng. Còn nhng ngi không có quyn
hp l mun b gãy h thng bng cách n cp password thì phi tìm p
i
t f(p
i
) tc là tìm
hàm ngc ca f.
14.7 C s toán hc ca mt mã hóa
Kí hiu c s chung ln nht
c s chung ln nht ca các s nguyên n
1
, n
2
, …, n
k
đc kí hiu là gcd(n
1
, n
2
,
…, n
k
).
Hàm-phi Euler φ(
n
)
Vi n là s t nhiên, φ(n) đc đnh ngha là s các s t nhiên nh hn n và
nguyên t cùng nhau vi n.
Ví d φ(4) = 2 (bao gm 1 và 3), φ(5) = 4, φ(6) = 1, φ(7) = 6, φ(8) = 4.
Ta có mt s kt qu sau.
1. Vi p nguyên t thì φ(p) = p - 1,
2. Vi p nguyên t, k là s t nhiên thì φ(p
k
) = p
k
– p
k - 1
= p
k - 1
(p – 1)
3. Vi 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
Nu p là s nguyên t, a là mt s nguyên thì
a
p
≡
a (mod p)
Nu p không là c s ca 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 rng (Euler)
Nu a và m nguyên t cùng nhau thì
a
φ
(m)
≡
1 (mod m)
Trong trng hp m là nguyên t thì φ(m) = m – 1 ta có đnh lý Fermat.
H qu 14.3
Vi a, b, c, m là các s t nhiên, a ≡ b (mod φ(m)), c và m nguyên t cùng nhau (tc
gcd(c, m) = 1) thì
c
a
≡
c
b
(mod m)
Tht vy 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ý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 126
Nu e, d là các s nguyên thõa mãn e.d ≡ 1 (mod φ(m)) thì vi mi s c nguyên t
cùng nhau vi m ta có
)(mod)( mcc
de
≡
H qu này đc suy ra t h qu trên bng cách áp dng a = e.d còn b = 1.
Cn nguyên thy (primitive root)
Cho n và a là các s t nhiên nguyên t cùng nhau và 1 ≤ a ≤ n. Nu ∀ d, 1≤ d <
φ(n) mà
a
d
≠
1 (mod n)
thì a đc gi là cn nguyên thy ca n.
Ví d, 2 là cn nguyên thy ca 5 bi vì trong mod 5
2
1
= 2, 2
2
= 4, 2
3
= 3, 2
4
= 1
Nhn xét
Không phi mi s nguyên đu có cn nguyên thy. 8 là s t nhiên nh nht không có
cn nguyên thy.
nh lý 14.6
S n có cn nguyên thy nu và ch nu n là 1, 2, 4 hoc n có dng p
k
hoc 2p
k
trong
đó p là mt s nguyên t l và k là s t nhiên.
Nu n có cn nguyên thy thì nó có chính xác φ
(φ(n)) cn nguyên thy.
B đ 14.1
Mi s t nhiên mà không phi là s chính phng (bình phng ca mt s t
nhiên khác) là cn nguyên thy ca mt s nguyên t nào đó.
Nhn xét
Nu n là s t nhiên khá ln (có vài trm ch s
), cho đn bây gi cha có mt gii
thut hiu qu (chy trong thi gian “chp nhn đc”) đ tìm cn nguyên thy ca nó.
Hàm logarit ri rc
Cho n là mt s t nhiên bt k có cn nguyên thy là a. Vi x, y là các s t nhiên
trong đó (0 ≤
x < φ(n)) và thõa
y = a
x
(mod n)
thì x đc gi là logarit ri rc ca y vi c s a và tính trong mod n và đc vit
x = log
a
y (mod n)
Nhn xét
Hàm a
x
trên là mt hàm mt chiu. Tc là t x chúng ta d dàng tính đc y, nhng
ngc li t y rt khó đ tính đc x. Hin ti cha có mt gii thut hiu qu nào, chy
trong thi gian “chp nhn đc”, thc hin đc điu này.
ng dng hàm mt chiu đ gii quyt bài toán phân phi khóa
Mt trong nhng bài toán c b
n ca các phng pháp mt mã hóa c đin là làm th
nào đ phân phi khóa mt cách an toàn. Nu thông báo không th đc truyn đi an toàn
thì liu khóa có th đc truyn đi mt cách an toàn ?
Lý thuyt Thông tin
Ngi son H Vn Quân - Khoa CNTT - H Bách Khoa Tp.HCM 127
Nm 1976, Diffie và Hellman đã đ ngh mt cách rt hiu qu đ gii quyt bài toán
này bng cách da trên tính cht mt chiu ca hàm logarit ri rc đã nói trên và sau đó
phng pháp này đã đc hin thc bi Hewlett Packard và tp đoàn Mitre.
Xét mt tp nhng ngi s dng u
i
(1 ≤ i ≤ n) mun truyn thông vi nhau. Cho p là
mt s nguyên t rt ln (p ln hn n nhiu) và có cn nguyên thy là a. Mi ngi s dng
u
i
s sinh ra mt cách đc lp mt s t nhiên x
i
ngu nhiên trong khong {1, 2, , p - 1} và
gi nó bí mt. Tuy nhiên, anh ta s công b khóa công khai ca anh ta là
)(mod pay
i
x
i
=
Khi u
i
và u
j
truyn thông vi nhau thì chúng s s dng khóa gia chúng nh sau
)(mod pak
ji
xx
ij
=
tính đc k
ij
, u
j
s da vào
)(mod pay
i
x
i
=
đã công b công khai ca u
i
và khóa x
j
bí
mt ca nó, ri tính k
ij
bng cách sau
)(mod pyk
j
x
iij
=
Và đi u
i
đ tính đc k
ij
cng s làm tng t nh trên. Bng cách này, d nhn thy rng,
mt ngi khác u
i
và u
j
mun bit đc k
ij
là rt khó.
n đây chúng ta kt lun bài này bng mt phát biu da trên ý kin ca Shannon. Bt
k mt h mt mã nào cng có th b b gãy vn đ là chúng ta s xây dng h mt mã sao
cho vic b gãy là tn nhiu thi gian và chi phí.