4. ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES
I. MOÄT SOÁ PHÖÔNG PHAÙP MAÕ HOÙA
I .1 Giôùi thieäu
Ñònh nghóa 1.1: Moät heä maõ maät (cryptosystem) laø moät boä-naêm (P, C, K, E, D) thoûa maõn
caùc ñieàu kieän sau:
1. P laø khoâng gian baûn roõ. taäp hôïp höõu haïn taát caû caùc maåu tin nguoàn caàn maõ hoùa coù theå
coù
2. C laø khoâng gian baûn maõ. taäp hôïp höõu haïn taát caû caùc maåu tin coù theå coù sau khi maõ
hoùa
3. K laø khoâng gian khoaù. taäp hôïp höõu haïn caùc khoùa coù theå ñöôïc söû duïng
4. Vôùi moãi khoùa k∈K, toàn taïi luaät maõ hoùa ek∈E vaø luaät giaûi maõ dk∈D töông öùng. Luaät
maõ hoùa ek: P → C vaø luaät giaûi maõ ek: C → P laø hai aùnh xaï thoûa maõn
d k ( ek ( x ) ) = x, ∀ x ∈ P
Tính chaát 4. laø tính chaát chính vaø quan troïng cuûa moät heä thoáng maõ hoùa. Tính chaát naøy
baûo ñaûm vieäc maõ hoùa moät maåu tin x∈P baèng luaät maõ hoùa ek∈E coù theå ñöôïc giaûi maõ
chính xaùc baèng luaät dk∈D.
Ñònh nghóa 1.2: Zm ñöôïc ñònh nghóa laø taäp hôïp {0, 1, ..., m-1}, ñöôïc trang bò pheùp coäng
(kyù hieäu +) vaø pheùp nhaân (kyù hieäu laø ×). Pheùp coäng vaø pheùp nhaân trong Zm ñöôïc thöïc
hieän töông töï nhö trong Z, ngoaïi tröø keát quaû tính theo modulo m
Ví duï: Giaû söû ta caàn tính giaù trò 11 × 13 trong Z16. Trong Z, ta coù keát quaû cuûa pheùp nhaân
11×13=143. Do 143≡15 (mod 16) neân 11×13=15 trong Z16.
Moät soá tính chaát cuûa Zm
1. Pheùp coäng ñoùng trong Zm, i.e., ∀ a, b ∈ Zm, a+b ∈ Zm
2. Tính giao hoaùn cuûa pheùp coäng trong Zm, i.e., ∀ a, b ∈ Zm, a+b =b+a
3. Tính keát hôïp cuûa pheùp coäng trong Zm, i.e., ∀ a, b, c ∈ Zm, (a+b)+c =a+(b+c)
4. Zm coù phaàn töû trung hoøa laø 0, i.e., ∀ a ∈ Zm, a+0=0+a=a
5. Moïi phaàn töû a trong Zm ñeàu coù phaàn töû ñoái laø m – a
6. Pheùp nhaân ñoùng trong Zm, i.e., ∀ a, b ∈ Zm, a×b∈ Zm
7. Tính giao hoaùn cuûa pheùp coäng trong Zm, i.e., ∀ a, b ∈ Zm, a×b=b×a
8. Tính keát hôïp cuûa pheùp coäng trong Zm, i.e., ∀ a, b, c ∈ Zm, (a×b)×c =a×(b×c)
9. Zm coù phaàn töû ñôn vò laø 1, i.e., ∀ a ∈ Zm, a×1=1×a=a
10. Tính phaân phoái cuûa pheùp nhaân ñoái vôùi pheùp coäng, i.e., ∀ a, b, c ∈ Zm, (a+b)×c
=(a×c)+(b×c)
11. Zm coù caùc tính chaát 1, 3 – 5 neân taïo thaønh 1 nhoùm. Do Zm coù tính chaát 2 neân taïo thaønh
nhoùm Abel. Zm coù caùc tính chaát (1) – (10) neân taïo thaønh 1 vaønh
I.2 Caùc Heä Maõ Thoâng Duïng:
a. Heä Maõ Ñaày (Shift Cipher )
NGOÂ THÒ TUYEÁT HAØ – T012825
5. ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES
Shift Cipher laø moät trong nhöõng phöông phaùp laâu ñôøi nhaát ñöôïc söû duïng ñeå
maõ hoùa. Thoâng ñieäp ñöôïc maõ hoùa baèng caùch dòch chuyeån (xoay voøng) töøng kyù töï ñi k vò trí
trong baûng chöõ caùi.
Phöông phaùp Shift Cipher
Cho P = C = K = Z26. Vôùi 0 ≤ K ≤ 25, ta ñònh nghóa
eK = x + K mod 26
vaø
dK = y - K mod 26
(x,y ∈ Z26)
trong ñoù 26 laø soá kyù töï trong baûng chöõ caùi La tinh, moät caùch töông töï cuõng coù theå
ñònh nghóa cho moät baûng chöõ caùi baát kyø. Ñoàng thôøi ta deã daøng thaáy raèng maõ ñaåy laø moät heä
maät maõ vì dK(eK(x)) = x vôùi moïi x∈Z26.
b. Heä KEYWORD-CEASAR
Trong heä maõ naøy khoùa laø moät töø naøo ñoù ñöôïc choïn tröôùc, ví duï PLAIN. Töø naøy
xaùc ñònh daõy soá nguyeân trong Z26 (15,11,0,8,13) töông öùng vôùi vò trí caùc chöõ caùi cuûa caùc
chöõ ñöôïc choïn trong baûng chöõ caùi. Baây giôø baûn roõ seõ ñöôïc maõ hoùa baèng caùch duøng caùc
haøm laäp maõ theo thöù töï:
e15, e11, e0, e8, e13, e15, e11, e0, e8, e,...
vôùi eK laø haøm laäp maõ trong heä maõ chuyeån.
c. Heä Maõ Vuoâng (SQUARE)
Trong heä naøy caùc töø khoùa ñöôïc duøng theo moät caùch khaùc haún. Ta duøng baûng chöõ
caùi tieáng Anh (coù theå boû ñi chöõ Q, neáu muoán toång soá caùc chöõ soá laø moät soá chính phöông)
vaø ñoøi hoûi moïi chöõ trong töø khoùa phaûi khaùc nhau. Baây giôø moïi chöõ cuûa baûng chöõ caùi
ñöôïc vieát döôùi daïng moät hình vuoâng, baét ñaàu baèng töø khoùa vaø tieáp theo laø nhöõng chöõ caùi
coøn laïi theo thöù töï cuûa baûng chöõ.
d. Maõ theá vò
Moät heä maõ khaùc khaù noåi tieáng . Heä maõ naøy ñaõ ñöôïc söû duïng haøng traêm naêm nay.
Phöông phaùp :
Cho P = C = Z26. K goàm taát caû caùc hoaùn vò coù theå coù cuûa 26 kyù hieäu
0,...,25. Vôùi moãi hoaùn vò π∈K, ta ñònh nghóa:
eπ(x) = π(x)
vaø ñònh nghóa dπ(y) = π-1(y)
vôùi π -1 laø hoaùn vò ngöôïc cuûa hoaùn vò π.
Trong maõ theá vò ta coù theå laáy P vaø C laø caùc baûng chöõ caùi La tinh. Ta söû duïng Z26
trong maõ ñaåy vì laäp maõ vaø giaûi maõ ñeàu laø caùc pheùp toaùn ñaïi soá.
e. Phöông phaùp Affine
NGOÂ THÒ TUYEÁT HAØ – T012825
6. ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES
Cho P = C = Z26 vaø cho
K = {(a,b) ∈ Z26 × Z26 : gcd(a,26) = 1}
Vôùi K = (a,b) ∈ K, ta xaùc ñònh
eK(x) = ax+b mod 26
vaø
dK = a-1(y-b) mod 26
(x,y ∈ Z26)
Phöông phaùp Affine laïi laø moät tröôøng hôïp ñaëc bieät khaùc cuûa Substitution Cipher.
Ñeå coù theå giaûi maõ chính xaùc thoâng tin ñaõ ñöôïc maõ hoùa baèng haøm ek∈ E thì ek phaûi laø moät
song aùnh. Nhö vaäy, vôùi moãi giaù trò y∈Z26, phöông trình ax+b≡y (mod 26) phaûi coù nghieäm
duy nhaát x∈Z26.
Phöông trình ax+b≡y (mod 26) töông ñöông vôùi ax≡(y–b ) (mod 26). Vaäy, ta chæ caàn
khaûo saùt phöông trình ax≡(y–b ) (mod 26)
Ñònh lyù1.1: Phöông trình ax+b≡y (mod 26) coù nghieäm duy nhaát x∈Z26 vôùi moãi giaù trò b∈Z26
khi vaø chæ khi a vaø 26 nguyeân toá cuøng nhau.
Vaäy, ñieàu kieän a vaø 26 nguyeân toá cuøng nhau baûo ñaûm thoâng tin ñöôïc maõ hoùa baèng haøm ek
coù theå ñöôïc giaûi maõ vaø giaûi maõ moät caùch chính xaùc.
Goïi φ(26) laø soá löôïng phaàn töû thuoäc Z26 vaø nguyeân toá cuøng nhau vôùi 26.
m
Ñònh lyù 1.2: Neáu n = ∏ pi i vôùi pi laø caùc soá nguyeân toá khaùc nhau vaø ei ∈ Z+, 1 ≤ i ≤ m thì
e
i =1
φ (n ) = ∏ ( piei − piei −1 )
m
i =1
Trong phöông phaùp maõ hoùa Affine , ta coù 26 khaû naêng choïn giaù trò b, φ(26) khaû naêng choïn
giaù trò a. Vaäy, khoâng gian khoùa K coù taát caû nφ(26) phaàn töû.
Vaán ñeà ñaët ra cho phöông phaùp maõ hoùa Affine Cipher laø ñeå coù theå giaûi maõ ñöôïc thoâng tin
ñaõ ñöôïc maõ hoùa caàn phaûi tính giaù trò phaàn töû nghòch ñaûo a–1 ∈ Z26.
f. Phöông phaùp Vigenere
phöông phaùp maõ hoùa Vigenere söû duïng moät töø khoùa (keyword) coù ñoä daøi m. Coù theå xem
nhö phöông phaùp maõ hoùa Vigenere Cipher bao goàm m pheùp maõ hoùa Shift Cipher ñöôïc aùp
duïng luaân phieân nhau theo chu kyø.
Khoâng gian khoùa K cuûa phöông phaùp Vigenere coù soá phaàn töû laø 26, lôùn hôn haún phöông
phaùp soá löôïng phaàn töû cuûa khoâng gian khoùa K trong phöông phaùp Shift Cipher. Do ñoù, vieäc
tìm ra maõ khoùa k ñeå giaûi maõ thoâng ñieäp ñaõ ñöôïc maõ hoùa seõ khoù khaên hôn ñoái vôùi phöông
phaùp Shift Cipher.
Phöông phaùp maõ hoùa Vigenere Cipher
Choïn soá nguyeân döông m. Ñònh nghóa P = C = K = (Z26)m
NGOÂ THÒ TUYEÁT HAØ – T012825
7. ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES
K = { (k0, k1, ..., kr-1) ∈ (Z26)r}
Vôùi moãi khoùa k = (k0, k1, ..., kr-1) ∈ K, ñònh nghóa:
ek(x1, x2, ..., xm) = ((x1+k1) mod 26, (x2+k2) mod n, ..., (xm+km) mod 26)
dk(y1, y2, ..., ym) = ((y1–k1) mod n, (y2–k2) mod n, ..., (ym–km) mod 26)
vôùi x, y ∈ (Z26)m
g. Heä maõ Hill
Phöông phaùp Hill Cipher ñöôïc Lester S. Hill coâng boá naêm 1929: Cho soá nguyeân döông
m, ñònh nghóa P = C = (Z26)m. Moãi phaàn töû x∈P laø moät boä m thaønh phaàn, moãi thaønh phaàn
thuoäc Z26. YÙ töôûng chính cuûa phöông phaùp naøy laø söû duïng m toå hôïp tuyeán tính cuûa m thaønh
phaàn trong moãi phaàn töû x∈P ñeå phaùt sinh ra m thaønh phaàn taïo thaønh phaàn töû y∈C.
Phöông phaùp maõ hoùa Hill Cipher
Choïn soá nguyeân döông m. Ñònh nghóa:
P = C = (Z26)m vaø K laø taäp hôïp caùc ma traän m×m khaû nghòch
⎛ k1,1 k1, 2 L k1,m ⎞
⎜ ⎟
⎜ k 2,1 L L k 2,m ⎟
Vôùi moãi khoùa k = ⎜ ∈ K , ñònh nghóa:
M M M ⎟
⎜ ⎟
⎜k k m, 2 L k m ,m ⎟
⎝ m,1 ⎠
⎛ k1,1 k1, 2 L k1,m ⎞
⎜ ⎟
⎜ k 2,1 L L k 2,m ⎟
ek ( x ) = xk = ( x1 , x2 ,..., xm )⎜ vôùi x=(x1, x2, ..., xm) ∈ P
M M M ⎟
⎜ ⎟
⎜k k m, 2 L k m ,m ⎟
⎝ m ,1 ⎠
vaø dk(y) = yk–1 vôùi y∈ C
Moïi pheùp toaùn soá hoïc ñeàu ñöôïc thöïc hieän treân Zn
h. Maõ hoaùn vò
Nhöõng phöông phaùp maõ hoùa neâu treân ñeàu döïa treân yù töôûng chung: thay theá moãi kyù töï
trong thoâng ñieäp nguoàn baèng moät kyù töï khaùc ñeå taïo thaønh thoâng ñieäp ñaõ ñöôïc maõ hoùa. YÙ
töôûng chính cuûa phöông phaùp maõ hoaùn vò laø vaãn giöõ nguyeân caùc kyù töï trong thoâng ñieäp
nguoàn maø chæ thay ñoåi vò trí caùc kyù töï; noùi caùch khaùc thoâng ñieäp nguoàn ñöôïc maõ hoùa baèng
caùch saép xeáp laïi caùc kyù töï trong ñoù.
Phöông phaùp maõ hoùa maõ hoaùn vò
Choïn soá nguyeân döông m. Ñònh nghóa:
P = C = (Z26)m vaø K laø taäp hôïp caùc hoaùn vò cuûa m phaàn töû {1, 2, ..., m}
Vôùi moãi khoùa π ∈ K, ñònh nghóa:
NGOÂ THÒ TUYEÁT HAØ – T012825
8. ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES
eπ ( x1 , x2 ,..., xm ) = (xπ (1) , xπ (2 ) ,...xπ (m ) ) vaø
(
d π ( y1 , y 2 ,..., y m ) = yπ −1 (1) , yπ −1 (2 ) ,... yπ −1 (m ) )
vôùi π–1 hoaùn vò ngöôïc cuûa π
Phöông phaùp maõ hoaùn vò chính laø moät tröôøng hôïp ñaëc bieät cuûa phöông phaùp Hill. Vôùi
moãi hoaùn vò π cuûa taäp hôïp {1, 2, ..., m} , ta xaùc ñònh ma traän kπ = (ki, j ) theo coâng thöùc sau:
⎧1, neáu i = π ( j )
ki, j = ⎨
⎩0, trong tröôøng hôïp ngöôïc laïi
Ma traän kπ laø ma traän maø moãi doøng vaø moãi coät coù ñuùng moät phaàn töû mang giaù trò 1, caùc
phaàn töû coøn laïi trong ma traän ñeàu baèng 0. Ma traän naøy coù theå thu ñöôïc baèng caùch hoaùn vò
caùc haøng hay caùc coät cuûa ma traän ñôn vò Im neân kπ laø ma traän khaû nghòch. Roõ raøng, maõ hoùa
baèng phöông phaùp Hill vôùi ma traän kπ hoaøn toaøn töông ñöông vôùi maõ hoùa baèng phöông phaùp
maõ hoaùn vò vôùi hoaùn vò π.
d. Maõ voøng
Trong caùc heä tröôùc ñeàu cuøng moät caùch thöùc laø caùc phaàn töû keá tieáp nhau cuûa baûn roõ
ñeàu ñöôïc maõ hoùa vôùi cuøng moät khoùa K. Nhö vaäy xaâu maõ y seõ coù daïng sau:
y = y1y2... = eK(x1) eK(x2)...
Caùc heä maõ loaïi naøy thöôøng ñöôïc goïi laø maõ khoái (block cipher).
Coøn ñoái vôùi caùc heä maõ doøng. YÙ töôûng ôû ñaây laø sinh ra moät chuoãi khoùa z = z1z2...,
vaø söû duïng noù ñeå maõ hoùa xaâu baûn roõ x = x1x2...theo qui taéc sau:
y = y1 y 2 ... = e z1 ( x1 )e z2 ( x 2 )...
I.3 Quy trình thaùm maõ:
Cöù moãi phöông phaùp maõ hoaù ta laïi coù moät phöông phaùp thaùm maõ töông öùng nhöng
nguyeân taéc chung ñeå vieäc thaùm maõ ñöôïc thaønh coâng thì yeâu caàu ngöôøi thaùm maõ
phaûi bieát heä maõ naøo ñöôïc duøng hoaù. Ngoaøi ra ta coøn phaûi bieát ñöôïc baûn maõ vaø baûn
roõ öùng.
nhìn chung caùc heä maõ ñoái xöùng laø deã caøi ñaët vôùi toác ñoä thöïc thi nhanh.
Tính an toaøn cuûa noù phuï thuoäc vaøo caùc yeáu toá :
• Khoâng gian khoaù phaûi ñuû lôùn
• vôùi caùc pheùp troän thích hôïp caùc heä maõ ñoái xöùng coù theå taïo ra ñöôïc moät heä
maõ môùi coù tính an toaøn cao.
• baûo maät cho vieäc truyeàn khoùa cuõng caàn ñöôïc xöû lyù moät caùch nghieâm tuùc.
Vaø moät heä maõ hoaù döõ lieäu ra ñôøi (DES). DES ñöôïc xem nhö laø chuaån maõ hoùa döõ
lieäu cho caùc öùng duïng töø ngaøy 15 thaùng 1 naêm 1977 do UÛy ban Quoác gia veà Tieâu chuaån
cuûa Myõ xaùc nhaän vaø cöù 5 naêm moät laàn laïi coù chænh söûa, boå sung.
DES laø moät heä maõ ñöôïc troän bôûi caùc pheùp theá vaø hoaùn vò. vôùi pheùp troän thích hôïp
thì vieäc giaûi maõ noù laïi laø moät baøi toaùn khaù khoù. Ñoàng thôøi vieäc caøi ñaët heä maõ naøy cho
nhöõng öùng duïng thöïc teá laïi khaù thuaän lôïi. Chính nhöõng lyù do ñoù noù ñöôïc öùng duïng roäng
raõi cuûa DES trong suoát hôn 20 naêm qua, khoâng nhöõng taïi Myõ maø coøn laø haàu nhö treân khaép
theá giôùi. Maëc duø theo coâng boá môùi nhaát (naêm 1998) thì moïi heä DES, vôùi nhöõng khaû naêng
NGOÂ THÒ TUYEÁT HAØ – T012825
9. ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES
cuûa maùy tính hieän nay, ñeàu coù theå beû khoùa trong hôn 2 giôø. Tuy nhieân DES cho ñeán nay
vaãn laø moät moâ hình chuaån cho nhöõng öùng duïng baûo maät trong thöïc teá.
II. HEÄ MAÕ CHUAÅN DES (Data Encryption Standard)
II.1 Ñaëc taû DES
Phöông phaùp DES maõ hoùa töø x coù 64 bit vôùi khoùa k coù 56 bit thaønh moät töø coù y 64 bit.
Thuaät toaùn maõ hoùa bao goàm 3 giai ñoaïn:
1. Vôùi töø caàn maõ hoùa x coù ñoä daøi 64 bit, taïo ra töø x0 (cuõng coù ñoä daøi 64 bit) baèng caùch
hoaùn vò caùc bit trong töø x theo moät hoaùn vò cho tröôùc IP (Initial Permutation). Bieåu dieãn
x0 = IP(x) = L0R0, L0 goàm 32 bit beân traùi cuûa x0, R0 goàm 32 bit beân phaûi cuûa x0
L0 R0
x0
Hình.1 Bieåu dieãn daõy 64 bit x thaønh 2 thaønh phaàn L vaø R
2. Xaùc ñònh caùc caëp töø 32 bit Li, Ri vôùi 1≤ i ≤ 16theo quy taéc sau:
Li = Ri-1
Ri = Li-1⊕ f (Ri-1, Ki)
vôùi ⊕ bieåu dieãn pheùp toaùn XOR treân hai daõy bit, K1, K2, ..., K16 laø caùc daõy 48 bit phaùt
sinh töø khoùa K cho tröôùc (Treân thöïc teá, moãi khoùa Ki ñöôïc phaùt sinh baèng caùch hoaùn vò
caùc bit trong khoùa K cho tröôùc).
Li-1 Ri-1
f Ki
⊕
Li Ri
Hình.2 Quy trình phaùt sinh daõy 64 bit LiRi töø daõy 64 bit Li-1Ri-1vaø khoùa Ki
3. AÙp duïng hoaùn vò ngöôïc IP-1 ñoái vôùi daõy bit R16L16, thu ñöôïc töø y goàm 64 bit. Nhö
vaäy, y = IP-1 (R16L16)
NGOÂ THÒ TUYEÁT HAØ – T012825
10. ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES
Haøm f ñöôïc söû duïng ôû böôùc 2 laø
A J
E
E(A)
+
B1 B2 B3 B4 B5 B6 B7 B8
S1 S2 S3 S4 S5 S6 S7 S8
C1 C2 C3 C4 C5 C6 C7 C8
P
f(A,J)
NGOÂ THÒ TUYEÁT HAØ – T012825
11. ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES
Haøm f coù goàm 2 tham soá: Tham soá thöù nhaát A laø moät daõy 32 bit, tham soá thöù hai J laø
moät daõy 48 bit. Keát quaû cuûa haøm f laø moät daõy 32 bit. Caùc böôùc xöû lyù cuûa haøm f(A, J)nhö
sau:
• Tham soá thöù nhaát A (32 bit) ñöôïc môû roäng thaønh daõy 48 bit baèng haøm môû roäng E.
Keát quaû cuûa haøm E(A) laø moät daõy 48 bit ñöôïc phaùt sinh töø A baèng caùch hoaùn vò theo
moät thöù töï nhaát ñònh 32 bit cuûa A, trong ñoù coù 16 bit cuûa A ñöôïc laäp laïi 2 laàn trong
E(A).
• Thöïc hieän pheùp toaùn XOR cho 2 daõy 48 bit E(A) vaø J, ta thu ñöôïc moät daõy 48 bit B.
Bieåu dieãn B thaønh töøng nhoùm 6 bit nhö sau:B = B1B2B3B4B5B6B7B8
• Söû duïng 8 ma traän S1, S2,..., S8, moãi ma traän Si coù kích thöôùc 4×16 vaø moãi doøng cuûa
ma traän nhaän ñuû 16 giaù trò töø 0 ñeán 15. Xeùt daõy goàm 6 bit Bj = b1b2b3b4b5b6,
Sj(Bj) ñöôïc xaùc ñònh baèng giaù trò cuûa phaàn töû taïi doøng r coät c cuûa Sj, trong ñoù, chæ soá
doøng r coù bieåu dieãn nhò phaân laø b1b6, chæ soá coät c coù bieåu dieãn nhò phaân laø b2b3b4b5.
Baèng caùch naøy, ta xaùc ñònh ñöôïc caùc daõy 4 bit Cj = Sj(Bj), 1 ≤ j ≤ 8.
• Taäp hôïp caùc daõy 4 bit Cj laïi. ta coù ñöôïc daõy 32 bit C = C1C2C3C4C5C6C7C8. Daõy 32
bit thu ñöôïc baèng caùch hoaùn vò C theo moät quy luaät P nhaát ñònh chính laø keát quaû cuûa
haøm F(A, J)
caùc haøm ñöôïc söû duïng trong DES.
Hoaùn vò khôûi taïo IP seõ nhö sau:
IP
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
Ñieàu naøy coù nghóa laø bit thöù 58 cuûa x laø bit ñaàu tieân cuûa IP(x); bit thöù 50 cuûa x laø
bit thöù hai cuûa IP(x) v.v.
Hoaùn vò ngöôïc IP-1 seõ laø:
IP-1
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
NGOÂ THÒ TUYEÁT HAØ – T012825
25. ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES
1A624C89520DEC46
II.3.2. Thaùm maõ heä DES 6-voøng
Baây giôø ta seõ moâ taû vieäc môû roäng yù töôûng treân cho vieäc thaùm maõ treân heä DES 6-voøng. YÙ
töoûng ôû ñaây laø löïa choïn moät caùch caån thaän caëp baûn roõ vôùi xaâu x-or ñaëc thuø vaø sau ñoù xaùc
ñònh caùc xaùc suaát cuûa caùc daõy ñaëc thuø cuûa caùc xaâu x-or qua caùc voøng laäp maõ. Baây giôø ta
caàn ñònh nghóa moät khaùi nieäm quan troïng sau.
Ñònh nghóa 3.5: Cho n ≥ 1 laø soá nguyeân. Ñaëc tröng cuûa voøng thöù n laø moät danh saùch caùc
daïng
L0’, R0’, L1’, R1’, p1, ..., Ln’, Rn’, pn
thoûa maõn caùc ñieàu kieän sau:
1. Li’ = Ri-1’ vôùi 1 ≤ i ≤ n
2. Cho 1 ≤ i ≤ n vaø Li-1, Ri-1 vaø L*i-1, R*i-1 laø ñaõ ñöôïc choïn sao cho Li-1 ⊕ L*i-1 = L’i-1 vaø
Ri-1 ⊕ R*i-1 = R’i-1. Giaû söû Li, Ri vaø Li* , Ri* laø tính ñöôïc nhôø vieäc aùp duïng moät voøng
laäp maõ DES. Khi ñoù xaùc suaát ñeå Li ⊕ L*i = Li’ vaø Ri ⊕ R*i = Ri’ chính xaùc baèng pi.
(Chuù yù laø, xaùc suaát naøy ñöôïc tính treân taát caû caùc boä coù theå coù cuûa J = J1...J8) .
Xaùc suaát ñaëc tröng ñöôïc ñònh nghóa baèng tích p = p1 × ...× pn.
Nhaän xeùt: Giaû söû ta choïn L0, R0 vaø L0*, R0* sao cho L0 ⊕ L0* = L0’ vaø R0 ⊕ R0*= R0’ vaø
ta aùp duïng n voøng laäp maõ cuûa DES, nhaän ñöôïc L1. ..., Ln vaø R1, ..., Rn. Khi ñoù ta khoâng theå
ñoøi hoûi xaùc suaát ñeå Li ⊕ Li* = Li’ vaø Ri ⊕ Ri* = Ri’ cho taát caû i ( 1 ≤ i ≤ n) laø p1 × ...× pn.
Bôûi vì caùc boä -48 trong lòch khoùa K1, ..., Kn khoâng phaûi laø ñoäc laäp laãn nhau. (Neáu n boä-48
naøy ñuôïc choïn ñoäc laäp moät caùch ngaãu nhieân, thì ñieàu xaùc nhaän laø ñuùng). Nhöng ta seõ coi
raèng p1 × ... × pn chính xaùc laø xaùc xuaát ñoù.
Ta coøn caàn xaùc nhaän laø, caùc xaùc suaát pi trong ñaëc tröng laø caùc caëp baûn roõ ñöôïc xaùc ñònh
tuøy yù (nhöng coá ñònh) ñöôïc ñaëc taû baèng xaâu x-or, vôùi 48 bit khoùa cho moät voøng laäp maõ
DES laø coù 248 khaû naêng. Do ñoù vieäc thaùm maõ seõ nhaèm vaøo vieäc xaùc ñònh khoùa coá ñònh
(nhöng chöa bieát). Do ñoù caàn coá choïn caùc baûn maõ ngaãu nhieân (nhöng chuùng coù caùc xaâu x-
or ñöôïc ñaëc taû), hy voïng raèng caùc xaùc suaát ñeå caùc xaâu x-or trong n voøng laäp maõ truøng hôïp
vôùi caùc xaâu x-or, ñöôïc ñaëc taû trong ñaëc tröng, töøng ñoâi moät p1, ..., pn töông öùng.
Trong ví duï sau ñaây, ta seõ trình baøy ñaëc tröng voøng 1 ñeå laøm cô sôû cho vieäc thaùm maõ DES
ba voøng trong hình sau (nhö ôû treân, ta seõ söû duïng caùch bieåu dieãn theo heä thaäp luïc phaân).
L’0 = baát kyø R’0 = 0000000016
L’1 = 0000000016 R’1 = L’0 p=1
Ta cuõng seõ moâ taû moät ñaëc tröng voøng 1 khaùc nhö sau
L’0 = 0000000016 R’0 = 6000000016
L’1 = 6000000016 R’1 = 0080820016 p = 14/64
NGOÂ THÒ TUYEÁT HAØ – T012825
26. ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES
Ta haõy xeùt ñaëc tröng sau moät caùch chi tieát hôn. Khi f(R0, K1) vaø f(R0*, K1) ñöôïc tính, böôùc
ñaàu tieân laø môû roäng R0 vaø R0*. Xaâu x-or keát quaû cuûa hai môû roäng laø:
001100...0
Töùc laø xaâu x-or nhaäp cho S1 laø 001100 vaø caùc xaâu x-or cho baûy S-hoäp khaùc ñeàu laø 000000.
Caùc xaâu xuaát x-or cho S2 ñeán S8 ñeàu laø 0000. Xaâu xuaát x-or cho S1 laø 1110 vôùi xaùc suaát
14/64 (do N1(001100, 1110) = 14). Neân ta nhaän ñöôïc:
C’ = 11100000000000000000000000000000
vôùi xaùc suaát 14/64. Aùp duïng P, ta nhaän ñöôïc:
P(C) ⊕ P(C*) = 00000000100000001000001000000000
trong daïng thaäp luïc phaân seõ laø 0080820016. Khi xaâu naøy coäng x-or vôùi L0’, ta nhaän ñöôïc
R1’ vôùi xaùc suaát 14/64. Do ñoù L1’ = R0’.
Vieäc thaùm maõ DES saùu voøng döïa treân ñaëc tröng ba voøng ñöôïc cho trong hình sau.
Trong thaùm maõ 6-voøng, ta baét ñaàu vôùi L0R0. L0*R0*, L6R6 vaø L6*R6*, maø ta phaûi choïn baûn
roõ sao cho L0’= 4008000016 vaø R.0’= 0400000016, ta coù theå bieåu dieãn R0 nhö sau:
L0’ = 4008000016 R0’ = 0400000016
L1’ = 0400000016 R1’ = 0000000016 p = 1/4
L2’ = 0000000016 R2’ = 0400000016 p = 1
L3’ = 0400000016 R3’ = 4008000016 p = 1/4
R6 = L5 ⊕ f(R5, K6)
= R4 ⊕ f(R5, K6)
= L3 ⊕ f(R3, K4) ⊕ f(R5, K6)
R6* cuõng coù theå bieåu dieãn töông töï, ta coù
R0’ = L3’ ⊕ f(R3, K4) ⊕ f(R3*, K4) ⊕ f(R5, K6) ⊕ f(R5*, K6) (4)
(Ñeå yù laø töông töï nhö thaùm maõ 3-voøng)
R6’ laø ñöôïc bieát. Töø ñaëc tröng ta tính L3’ = 0400000016 vaø R3’ = 4008000016 vôùi xaùc suaát
1/16. Neáu nhö vaäy, thì xaâu nhaäp x-or cho S-hoäp trong voøng 4 coù theå tính ñöôïc nhôø haøm
môû roäng phaûi laø:
001000000000000001010000...0
Caùc xaâu x-or cho S2, S5, S6, S7 vaø S8 taát caû ñeàu baèng 000000, vaø vì theá xaâu xuaát x-or laø
0000 cho taát caû naêm S-hoäp ñoù trong voøng 4. Ñieàu naøy coù nghóa laø, ta coù theå tính ñöôïc caùc
xaâu xuaát x-or cho naêm S-hoäp ñoù trong voøng 6 nhôø phöông trình (4). Do ñoù giaû söû ta tính:
C1’C2’C3’C4’C5’C6’C7’C8’ = P-1(R6’ ⊕ 04000000)
moãi Ci laø xaâu bit coù ñoä daøi 4. Khi ñoù vôùi xaùc suaát 1/16, thì seõ daãn ñeán laø C2’, C5’, C6’, C7’
vaø C8’ töông öùng laø caùc xaâu x-or xuaát cuûa S2, S5, S6, S7 vaø S8 trong voøng 6. Caùc xaâu nhaäp
cho caùc S-hoäp ñoù trong voøng 6 coù theå tính ñöôïc laø E2, E5, E6, E7 vaø E8; vaø E2*, E5*, E6*, E7*
vaø E8*, vôùi
E1E2E3E4E5E6E7E8 = E(R5) = E(L6)
vaø
E1*E2*E3*E4*E5*E6*E7*E8* = E(R5*) = E(L6*)
coù theå tính ñöôïc töø caùc baûn roõ nhö sau:
NGOÂ THÒ TUYEÁT HAØ – T012825
27. ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES
Input: L0R0, L0*R0*, L6R6 vaø L6*R6*; vôùi L0’ = 4008000016
vaø R0’ = 0400000016.
1. Tính C’ = P-1(R6’ ⊕ 0400000016)
2. Tính E = E(L6) vaø E* = E(L6*)
3. for j ∈ {2,5,6,7,8} do
tính testj( Ej, Ej*, Cj’)
Ta cuõng seõ xaùc ñònh 30 bit khoùa trong J2, J5, J6, J7 vaø J8 nhö trong thaùm maõ 3-voøng.
Baøi toaùn, ñeå xaâu xuaát x-or giaû ñònh cho voøng 6 laø chính xaùc chæ vôùi xaùc suaát 1/16. Coøn
15/16 phaàn coøn laïi ta seõ thöôøng nhaän ñöôïc nhöõng xaâu voâ duïng ngaãu nhieân hôn laø caùc bit
khoùa.
Ñònh nghóa 3.6: Giaû söû L0 ⊕ L0* = L0’ vaø R0 ⊕ R0*= R0’. Ta noùi raèng, caëp baûn roõ L0R0 vaø
L0* R0* laø ñuùng (right) öùng vôùi ñaëc tröng neáu Li ⊕ Li* = Li’ vaø Ri ⊕ Ri*= Ri’ cho moïi i, 1 ≤ i
≤ n. Caëp traùi vôùi caëp ñöôïc ñònh nghóa goïi laø caëp sai (wrong).
Ta mong raèng, khoaûng 1/16 soá caëp cuûa ta laø ñuùng, coøn caùc caëp coøn laïi laø caëp sai öùng vôùi
ñaëc tröng voøng ba cuûa ta.
Chieán löôïc cuûa ta laø tính Ej. Ej* vaø Cj’nhö ñaõ moâ taû ôû treân vaø sau ñoù xaùc ñònh testj(Ej, Ej*,
Cj’) vôùi j = 2,5,6,7,8. Neáu ta baét ñaàu vôùi moät caëp ñuùng, thì thì caùc bit khoùa chính xaùc cho
moãi Jj seõ naèm trong taäp testj. Neáu caëp laø sai, thì trò Cj’ seõ khoâng ñuùng, vaø ñoù laø nguyeân do
ñeå giaû ñònh raèng, moãi taäp testj thöïc chaát laø ngaãu nhieân.
Ta coù theå nhaän ra caëp ñuùng theo phöông phaùp sau: Neáu ⎮testj⎮= 0, vôùi baát kyø j∈
{2,5,6,7,8}, khi ñoù ta taát yeáu coù ñöôïc caëp ñuùng. Baây giôø cho moät caëp sai, ta coù theå hy
voïng raèng, xaùc suaát ñeå ⎪testj⎪= 0 cho moät j cuï theå laø xaáp xæ 1/5. Ñoù laø lyù do ñeå giaû ñònh laø,
Nj(Ej’, Cj’) = ⎪testj⎪ vaø nhö ñaõ nhaän xeùt töø tröôùc, xaùc suaát ñeå Nj(Ej’, Cj’) = 0 laø xaáp xæ 1/5.
Xaùc suaát ñeå caû naêm testj ñeàu döông laø vaøo khoaûng 0.85 ≈ 0.33, quaû vaäy xaùc suaát ñeå ít nhaát
moät testj baèng 0 laø vaøo khoaûng 0.67. Neân ta coù khoaûng 2/3 soá caëp laø sai, nhôø vaøo moät
nhaän xeùt ñôn giaûn, ñöôïc goïi laø pheùp loïc (filtering operation). Tyû soá cuûa caùc caëp ñuùng treân
caùc caëp coøn laïi sau pheùp loïc laø vaøo khoaûng:
1 16
=1 6
1 16 + 15 16 × 1 3
Ví duï 3.4: Giaû söû ta coù caëp baûn roõ - baûn maõ sau:
Baûn roõ Baûn maõ
86FA1C2B1F51D3BE 1E23ED7F2F553971
C6F21C2B1B51D3BE 296DE2B687AC6340
Chuù yù laø, L0’ = 4008000016 vaø R0’ = 0400000016. Xaâu nhaäp vaø xaâu xuaát cuûa S-hoäp cho
voøng 6 ñöôïc tính nhö sau:
NGOÂ THÒ TUYEÁT HAØ – T012825
28. ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES
j Ej Ej* Cj’
2 111100 010010 1101
5 111101 111100 0001
6 011010 000101 0010
7 101111 010110 1100
8 111110 101100 1101
Khi ñoù caùc taäp testj seõ laø nhö sau:
j testj
2 14, 15,26, 30, 32, 33, 48, 52
5
6 7, 24, 36, 41, 54, 59
7
8 34, 35, 48, 49
Ta thaáy raèng, hai taäp test5 vaø test7 laø roãng , neân caëp naøy laø caëp sai vaø noù bò loaïi boû baèng
pheùp loïc.
Baây giôø giaû söû ta coù caëp sao cho ⎪testj⎪> 0 vôùi j = 2,5,6,7,8 laø nhöõng taäp coøn laïi sau pheùp
loïc.(Bôûi vì ta khoâng bieát ñöôïc laø caëp naøo ñuùng, caëp naøo sai.) Ta noùi raèng, xaâu bit J2J5J6J7J8
ñoä daøi 30 laø ñöôïc ñeà xuaát bôûi caëp neáu Jj ∈ testj vôùi j = 2,5,6,7,8. Soá caùc caëp ñöôïc ñeà xuaát
laø:
∏ test
j∈ 2 , 5, 6 , 7 , 8
j
Ñoù laø bình thöôøng vôùi soá xaâu bit ñöôïc ñeà xuaát laø khaù lôùn. (Chaúng haïn. lôùn hôn
80000)
Giaû söû, ta laäp baûng cho taát caû caùc xaâu ñöôïc ñeà xuaát nhaän ñöôïc töø N caëp, maø khoâng bò loaïi
bôûi pheùp loïc. Vôùi moãi caëp ñuùng, thì xaâu bit ñuùng J2J5J6J7J8 seõ laø xaâu ñöôïc ñeà xuaát. Xaâu bit
ñuùng seõ ñöôïc tính khoaûng 3N/16 laàn. Xaâu bit sai thöôøng xuaát hieän ít hôn, bôûi vì chuùng
xuaát hieän ngaãu nhieân vaø coù khoaûng 230 khaû naêng. (Laø moät soá raát lôùn.)
Ta nhaän ñöôïc moät baûng cöïc lôùn taát caû caùc xaâu ñöôïc ñeà xuaát, neân ta söû duïng moät
thuaät toaùn chæ ñoøi hoûi moät khoâng gian vaø thôøi gian ít nhaát. Ta coù theå maõ hoùa baát kyø moät
taäp testj naøo thaønh moät veùc tô Tj coù ñoä daøi 64, vôùi toïa ñoä thöù i cuûa Tj ñöôïc ñaët baèng 1 (0≤
i≤63), neáu xaâu bit ñoä daøi 6 laø bieåu dieãn cuûa i ôû trong taäp testj; vaø toïa ñoä thöù i ñöôïc ñaët
baèng 0 trong tröôøng hôïp ngöôïc laïi ( ñieàu naøy gioáng nhö maûng caùc boä ñeám maø ta ñaõ söû
duïng trong thaùm maõ DES ba voøng).
Vôùi moãi caëp coøn laïi, ta xaây döïng caùc veùc tô nhö treân vaø goïi chuùng laø Tji,
j=2,5,6,7,8; 1 ≤ i≤ N. Vôùi I ⊆ {1, ..., N} ta noùi raèng I laø chaáp nhaän ñöôïc (allowable) neáu
vôùi moãi j ∈ {2,5,6,7,8} coù ít nhaát moät toïa ñoä baèng ⎪I⎪ trong veùc tô
NGOÂ THÒ TUYEÁT HAØ – T012825
29. ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES
∑T
i∈ I
j
i
Neáu caëp thöù i laø caëp ñuùng cho moãi i∈I, thì taäp I laø chaáp nhaän ñöôïc. Do ñoù ta cho
raèng taäp chaáp nhaän ñöôïc coù kích thöôùc (xaáp xæ) 3N/16, laø taäp ñeà xuaát vaø ta hy voïng laø chæ
goàm caùc bit khoùa ñuùng chöù khoâng coù caùc xaâu khaùc. Ñieàu naøy laøm ñôn giaûn hoùa cho vieäc
xaây döïng taát caû caùc taäp chaáp nhaän ñöôïc I baèng moät thuaät toaùn ñeä qui.
II.3. 3 Caùc thaùm maõ vi sai khaùc
Phöông phaùp thaùm maõ vi sai coøn coù theå aùp duïng ñeå thaùm caùc heä DES nhieàu voøng
hôn. Vôùi heä DES 8-voøng ñoøi hoûi 214 baûn roõ choïn vaø caùc heä 10-, 12-, 14- vaø 16-voøng ñoøi
hoûi coù töông öùng 224, 231, 239 vaø 247 baûn maõ choïn. Neân noùi chung laø khaù phöùc taïp.
Caùc kyõ thuaät thaùm maõ vi sai ñöôïc Biham vaø Shamir phaùt trieån. Caùc phöông phaùp thaùm maõ
DES khaùc ñaõ ñöôïc Matsui söû duïng nhö laø thaùm maõ tuyeán tính.
III. HEÄ MAÕ DES 3 VOØNG
Chöông trình goàm hai phaàn:
• Phaàn Giao Dieân (chöùa trong thö muïc GiaoDien): Coù chöùc naêng xöû lyù
giao dieän.
• Phaàn Xöû Lyù (chöùa trong thö muïc XuLy): coù chöùc naêng hoä trôï caùc
haøm xöû lyù.
III.1 Giao Dieän ( Package GiaoDien).
a. Maøn hình chính (Mainform.vb)
Form laäp maõ vaø giaûi maõ DES(Des.vb)
NGOÂ THÒ TUYEÁT HAØ – T012825
30. ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES
Source code moät soá haøm chính trong form giai maõ Des
Imports System.IO
Public Class des Inherits System.Windows.Forms.Form
khai bao bien
Dim str As String
Dim s(7) As DataTable
Dim ip() As String
'Dim iptru() As String
Dim e() As String
Dim p() As String
Dim pc1() As String
Dim pc2() As String
Dim daykhoa(15) As String
Dim x As String
Dim daynhap(29) As String
NGOÂ THÒ TUYEÁT HAØ – T012825
31. ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES
Dim daybanma(29) As String
khoi tao
Sub khoitao_s0()
Dim i As Integer
s(0) = New DataTable
For i = 0 To 15
Dim col As DataColumn = New DataColumn
s(0).Columns.Add(col)
Next
For i = 0 To 3
Dim row As DataRow = s(0).NewRow
s(0).Rows.Add(row)
Next
s(0).Rows(0).Item(0) = 14
s(0).Rows(0).Item(1) = 4
s(0).Rows(0).Item(2) = 13
s(0).Rows(0).Item(3) = 1
s(0).Rows(0).Item(4) = 2
s(0).Rows(0).Item(5) = 15
s(0).Rows(0).Item(6) = 11
s(0).Rows(0).Item(7) = 8
s(0).Rows(0).Item(8) = 3
s(0).Rows(0).Item(9) = 10
s(0).Rows(0).Item(10) = 6
s(0).Rows(0).Item(11) = 12
s(0).Rows(0).Item(12) = 5
s(0).Rows(0).Item(13) = 9
s(0).Rows(0).Item(14) = 0
NGOÂ THÒ TUYEÁT HAØ – T012825
36. ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES
s(1).Rows(3).Item(1) = 8
s(1).Rows(3).Item(2) = 10
s(1).Rows(3).Item(3) = 1
s(1).Rows(3).Item(4) = 3
s(1).Rows(3).Item(5) = 15
s(1).Rows(3).Item(6) = 4
s(1).Rows(3).Item(7) = 2
s(1).Rows(3).Item(8) = 11
s(1).Rows(3).Item(9) = 6
s(1).Rows(3).Item(10) = 7
s(1).Rows(3).Item(11) = 12
s(1).Rows(3).Item(12) = 0
s(1).Rows(3).Item(13) = 5
s(1).Rows(3).Item(14) = 14
s(1).Rows(3).Item(15) = 9
dgs1.DataSource = s(1)
End Sub
Ham khoi tao s2
Sub khoitao_s2()
Dim i As Integer
s(2) = New DataTable
For i = 0 To 15
Dim col As DataColumn = New DataColumn
s(2).Columns.Add(col)
Next
For i = 0 To 3
Dim row As DataRow = s(2).NewRow
s(2).Rows.Add(row)
NGOÂ THÒ TUYEÁT HAØ – T012825
39. ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES
s(2).Rows(3).Item(7) = 7
s(2).Rows(3).Item(8) = 4
s(2).Rows(3).Item(9) = 15
s(2).Rows(3).Item(10) = 14
s(2).Rows(3).Item(11) = 3
s(2).Rows(3).Item(12) = 11
s(2).Rows(3).Item(13) = 5
s(2).Rows(3).Item(14) = 3
s(2).Rows(3).Item(15) = 12
dgs2.DataSource = s(2)
End Sub
Haøm khôûi taïo s3
Sub khoitao_s3()
Dim i As Integer
s(3) = New DataTable
For i = 0 To 15
Dim col As DataColumn = New DataColumn
s(3).Columns.Add(col)
Next
For i = 0 To 3
Dim row As DataRow = s(3).NewRow
s(3).Rows.Add(row)
Next
s(3).Rows(0).Item(0) = 7
s(3).Rows(0).Item(1) = 13
s(3).Rows(0).Item(2) = 14
s(3).Rows(0).Item(3) = 3
s(3).Rows(0).Item(4) = 0
NGOÂ THÒ TUYEÁT HAØ – T012825
42. ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES
s(3).Rows(3).Item(13) = 7
s(3).Rows(3).Item(14) = 2
s(3).Rows(3).Item(15) = 14
dgs3.DataSource = s(3)
End Sub
Haøm khôûi taïo s4
Sub khoitao_s4()
Dim i As Integer
s(4) = New DataTable
For i = 0 To 15
Dim col As DataColumn = New DataColumn
s(4).Columns.Add(col)
Next
For i = 0 To 3
Dim row As DataRow = s(4).NewRow
s(4).Rows.Add(row)
Next
s(4).Rows(0).Item(0) = 2
s(4).Rows(0).Item(1) = 12
s(4).Rows(0).Item(2) = 4
s(4).Rows(0).Item(3) = 1
s(4).Rows(0).Item(4) = 7
s(4).Rows(0).Item(5) = 10
s(4).Rows(0).Item(6) = 11
s(4).Rows(0).Item(7) = 6
s(4).Rows(0).Item(8) = 8
s(4).Rows(0).Item(9) = 5
s(4).Rows(0).Item(10) = 3
NGOÂ THÒ TUYEÁT HAØ – T012825