Ch ng minh.
Trang 1đâ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
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
Trang 2Chú ý 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
Trang 3t f(x) = (g1 + … + g r–1xn - 2 + xr - 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
) x (
* x )
x (
* x
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 xn + 1
Ch ng minh
Trang 4Ch 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) = a0g(x) + a1x * g(x) + … + a k – 1xk – 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), …, xk – 1
u tiên chúng ta bi u di n v(x)
v(x) = b0 + b1x + … + b n – 1xn – 1thì
Trang 54 8 4
4 4
4 7 6
L
M M M M
L L L 4
4 4
4 8 4
4 4
4 7 6
L
M M M M M
L L L
1
0
0 0
0 0
0 1
0 0
0
0 0 0
2 1
1
0
2 0
1 1
0
2 1 0
k
g g
g
g g
g
k n
g
g g
g g
g
g g
g g
G
k n
k n k n
k n k n
k n
k n
n k
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 x7 + 1 Phân tích đa th c này ra th a s chúng ta đ c
x7 + 1 = (1 + x)(1 + x + x3)(1 + x2 + x3) đây chúng ta có hai th a s c a x7
0 1 0 1 1 0 0
0 0 1 0 1 1 0
0 0 0 1 0 1 1
7 4
0 1 0 0 1 1 1
0 0 1 0 1 1 0
0 0 0 1 0 1 1
) 7 4 (
ht G
1 1 1 0 1 0 0
1 1 0 0 0 1 0
0 1 1 0 0 0 1
) 7 4 (
ht G
Trang 6xn–k * u(x) = q(x) * g(x) + a(x)
T đây suy ra
xn–k * u(x) + a(x) = q(x) * g(x)
Vì xn–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(x) = q(x) * g(x) Bây gi chúng ta nhân v(x) v i h(x) và đ c
h
0
1 0 M
Trang 74 8 4
4
4 7 6
L
M M M M
L L L 4
4 4
4 8 4
4 4
4 7 6
L
M M M M M
L L L
1
0
0 0
0 0
0 1
0 0
0
0 0 0
0 2
1
0 1 0 2
1 1
0 2
1
) (
k n
h h
h
h h h k
h
h h
h h
h
h h
h h
H
k k k
k
k k
k k k
n k n
0 1 1 1 0 1 0
0 0 1 1 1 0 1
7 3
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
w × HT
= 0 hay
b0 + b1a + b2a2 + … + b n–2 a n–2 + b n–1 a n–1 = 0 trong đó các bi ∈ GF(2) còn các aj ∈ GF(2m ) Nhân a vào đ ng th c trên chúng ta suy ra
b0a + b1a2 + b2a3 + … + b n–2 a n–1 + b n–1 a n = 0 hay
Trang 8Cu i cùng n u bi u di n f(x) = f0 + f1x + f2x2 + … + f m–1xm–1 + f mxm–1 (v i chú ý f0 = f m =
1) thì do f(a) = 0 nên chúng ta suy ra w = (f0f1… 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ó
0 1 1 1 1 0 1 0 1 1 0 0 1 0 0
0 0 1 1 1 1 0 1 0 1 1 0 0 1 0
1 1 1 0 1 0 1 1 0 0 1 0 0 0 1
15 4
1 0 1 0 0
1 0 0 1 0
1 0 0 0 1
5 4
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: dmin ≥ 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ó
Trang 91 2 ( ) 2 )((
1 2 ( )
1 2 ( 2 1 2
) 1 ( 5 )
2 ( 5 10
5
) 1 ( 3 )
2 ( 3 6
3
1 2
2
1
1 1 1
n t n
t t
t
n n
n n
n n
a a
a a
a a
a a
a a
a a
a a
a a
H
L
M M
M M M
M
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
w × HT
= 0 hay vi t ng c l i
5 3
0 0 0
0 0
0
0 0
0
0 0
0
t a
a a a
B
L
M M M M M
L L L
) 1 )((
1 2 ( )
1 2 ( 3 ) 1 2 ( 2 1 2
) 1 ( 5 15
10 5
) 1 ( 3 9
6 3
1 3
2
n t t
t t
n n n
a a
a a
a a
a a
a a
a a
a a
a a
H B
L
M M
M M M
M
L L L
Th hai đ ch ng minh b mã có kho ng cách Hamming ≥ 2t + 1 chúng ta ch c n
Trang 101 2
0 1
1 1
3 2 1
1 1
2 1 1
2 2
2 2 1
2 1
M M L
M M M M
L L L
r r
r r
r
r r
y
y y y
y y
y
y y
y
y y
a5, …, a 2t–1 T B đ 11.5 chúng ta suy ra g(x) chia h t cho f1(x), f3(x), f5(x), …, f 2t–1(x)
t p(x) là b i s chung nh nh t c a f1(x), f3(x), f5(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) = p0 + p1x + p2x2 + … + p n–1xn–1
Trang 11trong đó 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 x2m−1+1
nên p(x) c ng v y và có b c ≤ n = 2 m
– 1.) Thì do t t c p(a), p(a3), p(a5), …, p(a 2t–1) đ u
b ng 0 nên (p0p1p2 … p n–1)× HT
= 0 nên (p0p1p2 … 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
2 2
2 2 1
2 1
1 1
1
r r r
r
r r
y y
y
y y
y
y y
y A
L
M M M M
L L L
Ch ng minh
Th t v y, det A là m t đa th c đ ng đ u det A = p(y1, y2, , y r) trong đó p(y1, y2, , 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(y1, y2,
, 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(y1, y2, , y r) = ∏
>
−
j i
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à 24 – 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(24
a a a a a a a a a a a a a a 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
Trang 121 0 1 0 0 1 0 1 0 0 1 0 1 0 0
1 1 0 0 0 1 1 0 0 0 1 1 0 0 0
1 0 0 0 1 1 0 0 0 1 1 0 0 0 1
1 1 1 1 0 1 0 1 1 0 0 1 0 0 0
0 1 1 1 1 0 1 0 1 1 0 0 1 0 0
0 0 1 1 1 1 0 1 0 1 1 0 0 1 0
1 1 1 0 1 0 1 1 0 0 1 0 0 0 1
Trang 13BÀ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à
Trang 14đó 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
Trong đó M là t p các thông báo m trên các b ng ch cái ∑, K1 là t p h u h n các
khoá mã hóa k e , K2 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 × K1→ C d: C × K2→ M
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ú ý
Trang 15Hi 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 26n 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 262 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, …
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
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
Trang 16k = A B C A B C A B C A
tr thành
c = M B T Y J U G P Q D
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
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
Trang 17Ý 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
13 3
Thông báo m = FRIEND đ c bi u di n nh là
16 14 26 13
14 27
23 18 15
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