KHẢO SÁT MA TRẬN, PHÂN TÍCH ĐỘ AN TOÀN, HIỆU NĂNG VÀ CẢI TIẾN
BÙI QUANG THÀNH
Trang nhan đề
Lời cảm ơn
Mục lục
Tóm tắt
Các kí hiệu
Chương_1: Các khái niệm cơ bản
Chương_2: Mã ma trận/ mã HILL- khảo sát không gian khóa
Chương_3: Xây dựng thuật giải sinh khóa cho mã HILL
Chương_4: Các vấn đề liên quan đến mã HILL
Kết luận và kiến nghị
Tài liệu tham khảo
Phụ lục
MỤC LỤC
Trang
Trang phụ bìa . 1
Lời cảm ơn 2
Mục lục . 3
Tóm tắt . 6
Các ký hiệu 8
Chương 1: Các khái niệm cơ bản
1. Tổng quan 9
2. Mật mã học (Cryptography) 9
2.1. Mật mã học . 9
2.2. Hệ thống mã hóa (Cryptosystem) . 10
2.3. Mã hóa đối xứng 11
3. Kiến thức lý thuyết số . 11
3.1. Modulo 11
3.1.1. Định nghĩa 11
3.1.2. Một số tính chất . 11
3.1.3. Định lý Fermat nhỏ . 12
3.2. m . 12
3.2.1. Định nghĩa . 12
3.2.2. Phép toán trên m 12
3.2.3. Các tính chất của m 12
4
3.2.4. Định lý m là trường khi m là số nguyên tố. . 13
4. Modulo ma trận 13
4.1. Định nghĩa . 13
4.2. Tính chất . 14
Chương 2: Mã ma trận/Mã hill – Khảo sát không gian khóa
1. Mã thay thế (Substitution ciphers) 16
1.1. Định nghĩa 16
1.2. Ví dụ . 16
2. Mã ma trận (Matrix cipher) . 17
3. Mã Hill (Hill cipher) 18
3.1. Bảng chữ cái (Alphabet) . 18
3.2. Hill – 2 cipher . 19
3.3. Thuật toán: Mã hóa với Hill cipher . 21
4. Không gian khóa . 24
4.1. Định nghĩa không gian khóa . 24
4.2. Khái niệm khóa yếu 24
5. Khảo sát không gian khóa . 25
Ta xét khóa K là ma trận vuông có kích thước d×d trên trường m
5.1. Xét không gian khóa trên trường p (p nguyên tố) . 25
5.2. Xét không gian khóa là với đặc số nguyên tố p (m = pn ) 26
5.3. Xét không gian khóa trên miền m ,
0
i
z
n
i
i
m p
=
= Π , i p nguyên tố 28
5.4. Không gian tốt nhất của Alphabet 30
6. Xét các trường hợp khóa yếu . 35
6.1. Ma trận đối hợp (Involutory matrix) 35
5
6.1.1. Xây dựng ma trận đối hợp . 35
6.1.1.1. Ma trận đối hợp trên trường p ; p > 2 35
6.1.1.2. Ma trận đối hợp trên trường 2 37
6.1.2. Đếm số ma trận đối hợp 42
6.2. K là khóa yếu với Kv = v hoặc vK = v . 45
6.2.1. Xác định khóa yếu bằng định thức 45
6.2.2. Xác định khóa yếu bằng trị riêng . 47
7. Tóm tắt 50
Chương 3: Xây dựng thuật giải sinh khóa cho mã Hill
1. Định lý sinh khóa trên p . 51
2. Xác định cơ sở hình thành thuật giải . 53
3. Thuật giải 55
4. Ví dụ 56
5. Khảo sát không gian khóa vừa sinh theo thuật giải . 58
Chương 4: Các vấn đề liên quan đến mã Hill
1. Sinh khóa theo pincodes . 60
2. Cách tấn công mã Hill gốc 65
3. Cải tiến thuật giải (sinh khóa từ pincodes và chuỗi ngẫu nhiên) . 66
4. Tính nhanh ma trận khả nghịch của khóa: K-1 = U-1L-1 . 68
Kết luận và kiến nghị . 71
Tài liệu tham khảo . 72
Phụ lục Code demo thuật toán chương 4 74
91 trang |
Chia sẻ: maiphuongtl | Lượt xem: 2155 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Luận văn Khảo sát ma trận, phân tích độ an toàn, hiệu năng và cải tiến, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
r s n s n+ = < ≤
38
Ñònh nghóa toång tröïc tieáp nhö sau:
0
0
A
A B
B
⎛ ⎞⊕ = ⎜ ⎟⎝ ⎠
Ñònh lyù 8: (Theo [9])
Neáu F laø tröôøng coù ñaëc soá 2, thì ñieàu kieän caàn vaø ñuû ñeå ma traän vuoâng
nxn H laø ma traän ñoái hôïp vôùi 10
2
s n< ≤ , 2 2nH I Q P= + × sao cho 2Q laø ma traän
n×s coù haïng laø s vaø ma traän 2P laø ma traän s×n vaø coù haïng laø s sao cho
2 2 ,0s sP Q× = (do s < n neân luoân toàn taïi 2Q sao cho 2 2 ,0s sP Q× = )
Chöùng minh
Ñieàu kieän ñuû:
H×H = ( 2 2nI Q P+ × )×( 2 2nI Q P+ × )= nI + 2 2Q P× + 2 2Q P× + 2 2Q P× × 2 2Q P× =
= nI +2 2 2Q P× × + 2 2Q P× × 2 2Q P× = nI + 2Q ,0s s× × 2P = nI
Ñieàu kieän caàn:
Ta ñaët 11H Q J Q
−= × × ; vôùi Q laø ma traän khaû nghòch baát kyø treân p]
Ta ñaët ( )/ /1 2Q Q Q= ; vôùi /2Q laø ma traän coù kích thöôùc 2n s×
Vaø ñaët
/
1 1
/
2
P
Q
P
− ⎛ ⎞= ⎜ ⎟⎝ ⎠
; vôùi /2P laø ma traän coù kích thöôùc 2s n×
Ta coù:
( ) /1 / / / / / /11 2 1 1 2 2/
2
n
P
Q Q Q Q Q P Q P I
P
− ⎛ ⎞× = × = × + × =⎜ ⎟⎝ ⎠
(2.22)
( )/ / / / / 21 / /1 1 1 1 21 2/ / / / /
2 22 2 1 2 2
r r s
n
s r s
I ZP P Q P Q
Q Q Q Q I
Z IP P Q P Q
×−
×
⎛ ⎞ ⎛ ⎞× × ⎛ ⎞× = × = = =⎜ ⎟ ⎜ ⎟ ⎜ ⎟× × ⎝ ⎠⎝ ⎠ ⎝ ⎠
(2.23)
39
( )
( )
/
21 / / 1
1 1 2 /
2 2 2
/
/ / 1
1 2 2 /
2
/ / / /
1 1 2 2 2
r r s
s r s
s
s
I Z P
H Q J Q Q Q
Z K P
P
Q Q K
P
Q P Q K P
×−
×
⎛ ⎞⎛ ⎞= × × = × ×⎜ ⎟⎜ ⎟⎝ ⎠ ⎝ ⎠
⎛ ⎞= × ×⎜ ⎟⎝ ⎠
= × + × ×
(2.24)
Töø (2.22) vaø (2.24), ta coù:
( )
= − × + × ×
+ × − ×
/ / / /
2 2 2 2 2
/ /
2 2 2 2 =
n s
n s s
H I Q P Q K P
I Q K I P
Ñaët ( )−= − = …2 2 2 .1 .3 .2 10, ,0, ,0, ,0,s s s sL K I i i u
Vôùi 0 laø vectô coät 0 vaø . ji laø vectô coät thöù j trong ma traän ñôn vò.
( )−× = …/2 2 .1 .3 .2 10, ,0, ,0, ,0,s sQ L q q q vôùi . jq laø coät thöù j trong ma traän
/
2Q
( )/ / /2 2 2 .1 .3 .2 1 2 .1 2. .3 4. .2 1 2 .0, ,0, ,0, ,0,s s s sQ K P q q q P q p q p q p− −× × = × = × + × + + ×… …
Vôùi .jp laø doøng thöù j trong ma traän
/
2P .
Nhö vaäy ta chæ söû duïng coät leû trong /2Q vaø doøng chaün trong
/
2P . Ta ñaët
( )× − × = ×/ /2 2 2 2 2 2s sQ K I P Q P
Töø (2.23) ta coù: 2 2 ,s sP Q Z× = vì doøng chaün trong laø vectô 0
Ví duï:
Xaây döïng ma traän ñoái hôïp treân 2] :
n=3; s=2
2
1 0 1
1 0 1
P ⎛ ⎞= ⎜ ⎟⎝ ⎠ ; 2
Q ñöôïc xaây döïng baèng caùch giaûi heäđ
40
2 1
2 2
0
0
0
0
P X
P X
⎧ ⎛ ⎞=⎪ ⎜ ⎟⎪ ⎝ ⎠⎨ ⎛ ⎞⎪ = ⎜ ⎟⎪ ⎝ ⎠⎩
vôùi ( )2 1 2Q X X=
Laàn löôït giaûi caùc heä ta ñöôïc 1
b
X a
b
⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠
vôùi 8a∈]
2
d
X c
d
⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠
vôùi 8,c d ∈]
Vôùi 1; 0, 1; 1a b c d= = = = thì 2
0 1
1 1
0 1
Q
⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠
Ma traän ñoái hôïp
1 0 0 0 1 1 0 0 1 0 1 0 0 1
1 0 1
0 1 0 1 1 0 1 0 0 0 0 0 1 0
1 0 1
0 0 1 0 1 0 0 1 1 0 1 1 0 0
H
⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞⎛ ⎞⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟= + = + =⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠
Ñònh lyù 9:
Cho hai ma traän A,B coù kích thöôùc laàn löôït laø r × s vaø s × r vôùi caùc
phaàn töû ñöôïc choïn tuøy yù treân vaønh giao hoaùn coù ñôn vò thì ma traän M coù kích
thöôùc laø n×n sao cho n= r+s thì M ñöôïc xaây döïng nhöng sau thì M laø ma traän ñoái
hôïp:
2
s
r
BA I B
M
A ABA I AB
−⎛ ⎞= ⎜ ⎟− −⎝ ⎠
(2.25)
Ñònh lyù 10: (Veà ma traän ñoái hôïp)
1. A laø ma traän ñoái hôïp neáu vaø chæ neáu 1A A−=
2. Neáu A laø ma traän ñoái hôïp thì ( )1
2
B I A= + laø ma traän luõy ñaúng.
41
3. Ñònh thöùc cuûa ma traän ñoái hôïp A treân tröôøng p] laø 1 hoaëc p –1
Chöùng minh:
1. (⇒ ) A laø ma traän ñoái hôïp neân A.A = I . goïi A’ laø ma traän nghòch
ñaûo cuûa A thì ta coù
A.A’=A’.A=I. do ñoù A=A’= 1A−
(⇐) Ta coù 1A A−=
A. 1A− =I (ñònh nghóa)
Suy ra A.A=I . Vaäy A laø ma traän ñoái hôïp
2. B.B=( ( )1
2
I A+ )( ( )1
2
I A+ )= ( )21
4
I A+
( ) ( ) ( )21 1 12 24 4 2I A A I A I A B+ + = + = + =
Boå ñeà 5 (vaønh ma traän) :
Cho n laø soá nguyeân lôùn hôn hoaëc baèng 1. Thì taäp hôïp caùc ma traän n×n
coù caùc phaàn töû treân tröôøng p] vôùi hai pheùp toaùn coäng vaø nhaân ma traän taïo thaønh
moät vaønh.
Boå ñeà 6:
A laø ma traän ñoái hôïp treân tröôøng p] thì moät soá ma traän deã thaáy laø caùc
daïng sau :
1. In
2. (p–1)In
3.
,
,
r r s
s r s
I Z
J
Z I
⎛ ⎞= ⎜ ⎟−⎝ ⎠ vôùi r+s = n vaø 0 < s < n
42
4. ,21
2 , 2
r r s
s r s
I Z
J
Z K
⎛ ⎞= ⎜ ⎟⎝ ⎠ vôùi r+2s = n vaø 0 < s ≤
1
2
n vaø K2s laø toång tröïc
tieáp cuûa s ma traän
1 1
0 1
⎛ ⎞⎜ ⎟⎝ ⎠
Nhaän xeùt:
Ma traän ñoái hôïp treân tröôøng ] p hoaëc ]2 laø ma traän tam giaùc treân vôùi
1; p – 1 treân ñöôøng cheùo chính vaø 1 hoaëc 0 trong taát caû caùc phaàn töû phía treân
ñöôøng cheùo chính.
Ñònh thöùc cuûa ma traän ñoái hôïp A laø baèng 1 hoaëc p – 1
6.1.2. Ñeám soá ma traän ñoái hôïp [Theo 6]
Ñeám soá ma traän ñoái hôïp (involutory) baäc d×d treân p]
Ñaët ( )
0
t
t i
t
i
g p p
=
= −∏ laø soá ma traän khaû nghòch baäc t treân tröôøng p]
Tröôøng hôïp p > 2
Ñaët ( )0 ,N d t laø soá ma traän X caáp d × d thoûa 2 0X I− =
Neáu X laø ma traän coù det(xI – X) coù ña thöùc ñaëc tröng maø coù t
nghieäm laø 1 vaø d – t nghieäm p–1 thì (mod )
M
X J p≡ vôùi J ñöôïc ñònh nghóa trong
6.1.1.1 vôùi 0 t d≤ ≤
Ñaët ( )0 ,S d t laø soá ma traän X sao cho (mod )MX J p≡
Thì ( ) ( )0 0
0
, ,
=
= ∑d
t
N d t S d t ; 0 t d≤ ≤ (do ma traän X trong ( )0 ,S d t laø
khaùc nhau)
43
Q laø ma traän khaû nghòch baäc m treân p] sao cho 1−× ×Q J Q ; thì
( )1 mod −× × ≡MQ J Q J p . Neáu 1−× × =Q J Q J thì Q J J Q× = × . Ñaët ( )0 ,C d t laø
soá ma traän Q sao cho thoûa Q vaø J giao hoaùn. Ta coù: ( ) ( )0 0, ,dg C d t S d t=
Do Q J J Q× = × neân ( )0 , t d tC d t g g −=
Suy ra: ( ) ( )0 0, ,d dt d t
g g
S d t
g gC d t −
= =
Do ñoù soá ma traän ñoái hôïp treân p] laø: ( )0
0 0
1,
= =− −
= =∑ ∑d dd d
t tt d t t d t
gN d t g
g g g g
(2.26)
Vôùi ( )1 0
0
; 1
t
t i
t
i
g p p g
−
=
= − =∏ .
Tröôøng hôïp p = 2 [Theo 6]
Ñaët X laø ma traän caáp d×d; X laø ma traän thoûa maõn: 2 0X I− = treân
2] . Töông töï tröôøng hôïp treân thì (mod )
M
tX J p≡ vôùi tJ ñöôïc ñònh nghóa trong
6.1.1 phaàn b.
Ñaët ( ),eS d t laø toång soá ma traän X sao cho (mod )M tX J p≡ vôùi
0 2t d≤ ≤
Ta coù: ( ) ( )
0
, ,
=
= ∑de e
t
N d t S d t ; 0 2≤ ≤t d (do ma traän X trong
( ),eS d t laø khaùc nhau)
Ñaët ( ),eC d t laø soá löôïng ma traän khaû nghòch Q baäc d treân 2] thoûa maõn
t tJ Q Q J× = × .
Ta coù: ( ) ( ), ,d e eg S d t C d t=
Theo [10] ( ) ( )2 3 2, 2t m te t d tC d t g g− −=
44
Suy ra: ( ) (2 3 )2
0 2
2,
⎢ ⎥⎢ ⎥ − −⎣ ⎦
= −
= ∑
d
t d t
e d
t t d t
N d t g
g g (2.27)
Vôùi ( )1 0
0
; 1
t
t i
t
i
g p p g
−
=
= − =∏
Ta xeùt tröôøng hôïp f(d,29) vôùi d trong khoaûng 2 ñeán 30
Hình 2.3
Quan saùt hình 2.3 ta thaáy vôùi khoaûng d thay ñoåi töø 2 ñeán 30 thì caùc f(d,29)
coù xu höôùng baèng nhau.
Töø (2.26) vaø (2.5). Ta ñaët g(t) tyû soá giöõa toång ma traän ñoái hôïp trong (2.26) vaø
toång soá ma traän khaû nghòch trong (2.5);ta xeùt treân ] p :
0
0
1( )
d
d
d
t t d t
td t d t
g
g g
g t
g g g
= −
= −
= =
∑ ∑ (2.28)
45
Vôùi ( )1 0
0
; 1
t
t i
t
i
g p p g
−
=
= − =∏
YÙ nghóa cuûa g(t) caøng nhoû thì caøng toát vì luùc ñoù seõ coù tyû leä khoùa yeáu laø ít nhaát.
Ta xeùt tröôøng hôïp d trong khoaûng töø 2 ñeán 5
Hình 2.4
Quan saùt hình 2.4 ta thaáy vôùi d=2 lôùn thì g(t)= 0.0012, coøn d töø 3 trôû leân thì g(t)
caøng tieán veà 0.
Nhö vaäy khi sinh khoùa thì kích thöôùc khoùa caøng lôùn thì tyû leä khoùa yeáu
caøng ít.
6.2. K laø khoùa yeáu vôùi K×v = v hoaëc v×K = v:
Ta xeùt khoùa laø ma traän vuoâng d×d khaû nghòch treân p]
6.2.1. Xaùc ñònh khoùa yeáu baèng ñònh thöùc
Vôùi caùch maõ hoùa: K×v = v thì K ñöôïc goïi laø khoùa yeáu.
46
( )
( )
11 1 1 1
1
11 1 1
1 1
1 0
1 0
⎛ ⎞ ⎛ ⎞ ⎛ ⎞⎜ ⎟ ⎜ ⎟ ⎜ ⎟× = ⇔⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠
− + + =⎧⎪⎨⎪ + + − =⎩
…
# % # # #
…
…
…
…
d
d dd d d
d d
d dd d
k k m m
k k m m
k m k m
k m k m
(2.29)
det(K – I) ≠ 0 thì heä (2.29) coù nghieäm duy nhaát laø nghieäm taàm thöôøng
0
0
⎛ ⎞⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠
#
det(K – I) = 0 thì heä (2.29) coù voâ soá nghieäm hoaëc voâ nghieäm, nhöng do heä
luoân coù nghieäm taàm thöôøng neân khi det(K – I) = 0 thì heä (2.29) voâ soá nghieäm.
Nhöng do treân ] p coù höõu haïn phaàn töû heä (2.29) cuõng coù höõu haïn nghieäm.
Ví duï:
Treân 11]
2 3
2 7
K ⎛ ⎞= ⎜ ⎟⎝ ⎠ , coù det K ≠ 0 nhöng det(K – I) = 0
Veùc tô daïng 1
17
m
v
m
⎛ ⎞= ⎜ ⎟⎝ ⎠
vôùi 1 11m ∈] thì Kv = v
Thì
0 1 2 3 4 5 6 7 8 9 10
, , , , , , , , , ,
0 7 3 10 6 2 9 5 1 8 4
v
⎧ ⎫⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞∈⎨ ⎬⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠⎩ ⎭
Do 11] höõu haïn phaàn töû neân v cuõng thuoäc taäp nghieäm höõu haïn
Neáu thoâng ñieäp M maø ta caàn maõ hoùa sau khi chuyeån thaønh daïng ma traän
coù caùc coät laø caùc nghieäm trong taäp treân thì K×M=M
Vôùi
2 9 7
3 8 5
M ⎛ ⎞= ⎜ ⎟⎝ ⎠
Thì khi maõ hoùa:
47
2 3 2 9 7 2 9 7
2 7 3 8 5 3 8 5
⎛ ⎞ ⎛ ⎞ ⎛ ⎞= × = × =⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠C K M
Cipher text seõ baèng plaintext; nhö vaäy khi maõ hoùa khoùa yeáu nhö treân thì
ngöôøi ta seõ bieát ñöôïc plaintext.
Vôùi caùch maõ hoùa: v×K = v thì K ñöôïc goïi laø khoùa yeáu
( ) ( )
( )
( )
11 1
1 1
1
11 1 1
1 1
1 0
1 0
⎛ ⎞⎜ ⎟× = ⇔⎜ ⎟⎜ ⎟⎝ ⎠
− + + =⎧⎪⎨⎪ + + − =⎩
…
… # % # …
…
…
…
…
d
d d
d dd
d d
d dd d
k k
m m m m
k k
k m k m
k m k m
(2.30)
det(KT – I) ≠ 0 thì heä (2.30) coù nghieäm duy nhaát laø nghieäm taàm thöôøng.
det(KT – I) = 0 thì heä (2.30) coù voâ soá nghieäm hoaëc voâ nghieäm, nhöng do
heä luoân coù nghieäm taàm thöôøng neân khi det(KT – I) = 0 thì heä (2.30) coù voâ
soá nghieäm.
Nhöng do treân ] p coù höõu haïn phaàn töû heä (2.30) cuõng coù höõu haïn nghieäm.
Ta coù nhaän xeùt:
1/ Treân tröôøng ] p vôùi m laø soá nguyeân döông thì moät khoùa K goïi laø
yeáu khi vaø chæ khi det ( K – I ) = 0 vôùi caùch maõ K×v = v.
2/ Treân tröôøng ] p vôùi m laø soá nguyeân döông thì moät khoùa K goïi laø
yeáu khi vaø chæ khi det ( KT – I ) = 0 vôùi caùch maõ v×K = v
6.2.2. Xaùc ñònh khoùa yeáu baèng trò rieâng
Ñònh nghóa:
Cho A laø ma traän vuoâng d×d vaø c ∈ p]
Ñaët { }/n T TcE X AX cX= ∈ =\
c ñöôïc goïi laø trò rieâng vaø cE ñöôïc goïi laø khoâng gian rieâng öùng vôùi trò rieâng
48
Vôùi moãi { }\ 0cEα ∈ thì α laø vec tô rieâng öùng vôùi trò rieâng c
Ta ñaët ( ) ( )detA nP x cI A= − goïi laø ña thöùc ñaëc tröng cuûa A
Meänh ñeà (Moái lieân heä giöõa trò rieâng vaø ña thöùc ñaëc tröng)
Neáu c laø trò rieâng treân p] cuûa A thì ( )AP c =0 treân p]
Suy ra neáu muoán tìm trò rieâng thì ta tìm taát caû caùc nghieäm cuûa ( )AP x treân
p]
Tính chaát cuûa trò rieâng vaø vectô rieâng:
1. Neáu c = 0 thì ma traän A khoâng khaû nghòch
2. Neáu A laø ma traän tam giaùc treân vaø ma traän tam giaùc döôùi, ma traän
ñöôøng cheùo thì trò rieâng laø nhöng phaàn töû treân ñöôøng cheùo chính.
3. A vaø AT coù cuøng trò rieâng.
4. Transition matrix thì luoân coù trò rieâng laø 1
Trasition matrix coù tính chaát laø taát caû caùc haøng coù toång laø 1
Ví duï:
Xeùt ma traän coù trò rieâng laø 1 treân 7]
1 2 5
4 4 0
3 2 3
A
⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠
Ta tính trò rieâng cho K
( )
1 2 5
det 4 4 0
3 2 3
− − −
− = − −
− − −
x
xI K x
x
=
49
( )
( )( )( ) ( ) ( )( )
( ) ( ) ( )( )( )3 2 2
4 0 4 0 4 4
= 1 2 5
2 3 3 3 3 2
= 1 4 3 8 3 5 8 3 4
= 4 4 1 4 1 1 2 2
− − − −− + −− − − − − −
− − − − − − + −
− − + = − − − = − − +
x x
x
x x
x x x x x
x x x x x x x x x
A coù trò rieâng laø 1
Tìm v sao cho K×v = v ⇔ (K – I)×v = 0
á phé biê dô so câ trê dò
0 2 5 0 1 1 5 0
4 3 0 0 0 2 5 0
3 2 2 0 0 0 0 0
c c p n i p n ng
⎛ ⎞ ⎛ ⎞⎜ ⎟ ⎜ ⎟⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯→⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠
Suy ra
b
v b
b
⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠
Nếu
2 3
2 3
2 3
M
⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠
1 2 5 2 3 2 3
4 4 0 2 3 2 3
3 2 3 2 3 2 3
⎛ ⎞ ⎛ ⎞ ⎛ ⎞⎜ ⎟ ⎜ ⎟ ⎜ ⎟× = × =⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠
K M
Ta coù nhaän xeùt:
Neáu trò rieâng ma traän vuoâng A coù trò rieâng laø 1 thì toàn taïi nhöõng vectô
rieâng X sao cho × =T TK X X . Muoán tìm ñöôïc XT thì ta phaûi giaû heä phöông trình
tuyeán tính.
Moät khoùa laø ma traän khaû nghòch nhöng khoâng yeáu thì ma traän coù caùc giaù
trò rieâng phaûi khaùc 1. ÔÛ ñaây ta coù theå xeùt moät tröôøng hôïp laø loaïi nhöõng ma traän
Trasition matrix coù tính chaát laø taát caû caùc haøng coù toång laø 1.
Ta xeùt ñònh thöùc thì: det(K – I) ≠ 0 vaø det(KT – I) ≠ 0
50
7. Toùm taét
Maõ ma traän baäc d khi ta maõ hoùa caàn khoùa laø ma traän vuoâng khaû
nghòch treân m] , m baát kyø. ÔÛ ñaây khoâng gian caùc chöõ caùi(Alphabet) laø m neân laø
soá nguyeân toá vaø soá chieàu d cuûa ma traän khoùa neân lôùn ñeå haïn cheá khoùa yeáu.
Tröôøng hôïp caùc khoùa yeáu thì ta coù ma traän ñoái hôïp (involutory matrix)
ñoái vôùi tröôøng hôïp naøy thì khi ta xaây döïng ma traän K = L × U thì ta chæ caàn xaây
döïng ma traän K sao detK ≠ 1 vaø p – 1
Tröôøng hôïp K×v = v thì ta xaây döïng ma traän K coù det(K – I) ≠ 0.
51
Chöông 3
XAÂY DÖÏNG THUAÄT GIAÛI SINH KHOÙA CHO MAÕ HILL
1. Ñònh lyù sinh khoùa treân p]
(1)
11
1
1
0 0
0
0
+
⎛ ⎞⎜ ⎟⎜ ⎟⎜ ⎟= ⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠
…
# %
#
%
# # %
… … …
tt
tt
d dt dd
l
l
L
l
l l l
khaû nghòch ⇔ ( )
1
0 mod p
=
≠∏d ii
i
l (3.1)
(2)
11 1
1
0
0 0
+
⎛ ⎞⎜ ⎟⎜ ⎟⎜ ⎟= ⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠
… …
%
# …
%
%
…
d
tt tt td
dd
u u
u u u
U
u
khaû nghòch ⇔ ( )
1
0 mod p
=
≠∏d ii
i
u (3.2)
(3) K L U= × khaû nghòch khi vaø chæ khi L,U khaû nghòch (3.3)
(4) K khaû nghòch ⇒ P×K cuõng khaû nghòch vôùi P laø ma traän hoaùn vò
Vôùi P laø ma traän hoaùn vò ñöôïc ñònh nghóa nhö sau:
( )
1 2 nk k k
P e e e= … vôùi
ik
e laø caùc haøng trong ma traän ñôn vò.
( )ijP p= vôùi 1 neáu 0 ngöôïc laïiiij j kp ⎧ =⎪= ⎨⎪⎩ (3.4)
52
(5)
11 1
1
1
1
1 0 0
0 0
1
0
1 0 0
+
+
⎛ ⎞ ⎛ ⎞⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟= × = ×⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠
… … …
# % %
# # …
% %
# # % %
… … … …
d
tt tt td
tt
d dt dd
u u
u u u
K L U
l
l l u
(3.5)
thì khoâng toàn taïi ma traän L1; U1 sao cho L≠L1(L1 laø ma traän tam giaùc treân vôùi
ñöôøng cheùo chính goàm caùc phaàn töû 1) vaø U≠U1 thì L×U=L1×U1
(6) Vôùi ma traän K khaû nghòch treân p] thì luoân toàn taïi ma traän P, L,U (vôùi
ma traän L laø ma traän tam giaùc treân sao cho caùc ñöôøng cheùo chính laø 1)khaû nghòch
treân p] sao cho K= P×L×U (theo [5, trang 153])
Chöùng minh
Chöùng minh (5)
Khoâng toàn taïi ma traän L1, U1 (vôùi L1 laø ma traän tam giaùc döôùi coù ñöôøng
cheùo chính laø 1)sao cho L1≠L vaø U1≠U maø K = L1 × U1
Chöùng minh:
Ta xeùt treân p] ; vôùi 1 1K L U= × . Ta giaû söû ta coù 2 2K L U= ×
Luùc naøy ta coù 1 1 2 2L U L U× = × . Do K khaû nghòch neân 1 2,U U khaû nghòch.
Ta coù:
1 11 1 2 2 2 1 2 1L U L U L L U U
− −× = × ⇔ × = × (3.6)
Do 2L laø ma traän tam giaùc döôùi neân
1
2L
− cuõng laø ma traän tam giaùc döôùi. Suy ra
1
2 1L L
− × laø ma traän tam giaùc döôùi.
Töông töï thì 1U laø ma traän tam giaùc treân neân
1
1U
− laø ma traän tam giaùc treân. Suy
ra 12 1U U
−× laø ma traän tam giaùc treân.
Töø (3.6) thì veá traùi laø ma traän tam giaùc döôùi vaø veá phaûi laø ma traän tam giaùc treân
53
1 12 1 2 1L L U U
− −× = × = D (3.7)
Vôùi D laø ma traän ñöôøng cheùo.
Do 12 1;L L
− coù caùc lii laø 1 neân D laø ma traän ñôn vò.
Töø (3.7) ta coù: 1 12 1 2 1 dL L U U I
− −× = × = (3.8)
Töø (3.8) thì 2 1 2 1;= =L L U U
Chöùng minh (6)
Vôùi K laø ma traän vuoâng caáp d khaû nghòch treân p] ; thì K cuõng khaû nghòch
treân\ . Theo [5, trang 153] thì toàn taïi ma traän ( ), , ,P L U M d∈ \ sao cho
K P L U= × × . Do K khaû nghòch treân p] , neân P L U× × cuõng khaû nghòch treân
p] ; suy ra L, U khaû nghòch treân p] .
Vaäy vôùi K khaû nghòch treân p] thì toàn taïi ma traän L, U khaû nghòch treân p] sao
cho K P L U= × ×
2. Xaùc ñònh cơ sở hình thaønh thuaät giaûi
Ta sinh ra hai ma traän L vaø U treân p]
Vôùi
1
1
1 0 0
1
0
1
+
⎛ ⎞⎜ ⎟⎜ ⎟⎜ ⎟= ⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠
…
# % #
%
# # %
… … …
tt
d dt
L
l
l l
54
11 1
1
0
0 0
+
⎛ ⎞⎜ ⎟⎜ ⎟⎜ ⎟= ⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠
… …
%
# …
%
%
…
d
tt tt td
dd
u u
u u u
U
u
Khoùa K ñöôïc tính nhö sau:
11 1
1
1
1
11
1
1 0 0
0
1
0
1 0 0
+
+
⎛ ⎞ ⎛ ⎞⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟= × = ×⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠
⎛ ⎞⎜ ⎟⎜ ⎟⎜ ⎟= ⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠
… … …
# % # %
# …
% %
# # % %
… … … …
… …
# % #
…
# %
# % #
… …
d
tt tt td
tt
d dt dd
tt tj
jt
d dd
u u
u u u
K L U
l
l l u
k
k k
k
k k (3.9)
Vôùi
( )
( )
( )
1 1 2 2
1 1 2 2
1 1 2 2
⎧ + + + ⎪⎩
…
…
…
i j i j ij
ij i j i j ii
i j i j ij jj
l u l u u i j
k l u l u u i j
l u l u l u i j
(3.10)
Ta tính:
11
1
1
1
1
tt tj
jt
d dd
k
k k
A K I
k
k k
−⎛ ⎞⎜ ⎟⎜ ⎟⎜ ⎟−= − = ⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟−⎝ ⎠
… …
# % #
…
# %
# % #
… …
(3.11)
55
Vôùi
( )
( )
( )
1 1 2 2
1 1 2 2
1 1 2 2
1
⎧ + + + ⎪⎩
…
…
…
i j i j ij
ij i j i j ii
i j i j ij jj
l u l u u i j
a l u l u u i j
l u l u l u i j (3.12)
Ma traän U phaûi khaû nghòch: 11
1
0
d
i
u
=
≠∏
Ñeå ma traän khoùa K khoâng laø khoùa yeáu thì ma traän khoùa K phaûi thoûa laø:
K khoâng laø ma traän ñoái hôïp (Involutory matrix) nghóa laø 11
1
1 vaø 1
d
i
u p
=
≠ −∏
Ñoái vôùi tröôøng hôïp khoùa yeáu K v v× = thì ta xeùt det(K – I) phaûi khaùc 0.
Vôùi muïc (5) trong phaàn 1 cuûa chöông naøy thì vôùi moät boä (L,U) seõ coù moät
khoùa K neân khi ta xaùc ñònh toång soá khoùa K coù theå sinh ra baèng thuaät giaûi thì
baèng soá löôïng ma traän L nhaân vôùi soá löôïng ma traän U.
Vôùi muïc (6) cuûa phaàn 1 cuûa chöông naøy thì ta coù nhaän xeùt laø vôùi K khaû
nghòch thì ta luoân coù K = P × L ×U neân khoâng gian khoùa maø ta sinh baèng boä L×U
thì ñaûm baûo khoâng gian sinh ra gaàn baèng khoâng gian ma traän vuoâng khaû nghòch.
3. Thuaät giaûi:
Ta phaûi xaùc ñònh tröôùc p] vôùi p laø soá nguyeân toá; laø khoâng gian baûng caùc
chöõ caùi.
Böôùc 1:
Ta seõ phaùt sinh ma traän tam giaùc treân U sao cho U phaûi thoûa moät soá tính
chaát sau:
U phaûi khaû nghòch nghóa laø:
1
0
d
ii
i
u
=
≠∏
det(K) ≠ 1 vaø p – 1 nghóa laø: det(U) ≠ 1 vaø p – 1 ⇔
1
1 vaø 1
d
ii
i
u p
=
≠ −∏
56
Böôùc 2 :
Ta seõ phaùt sinh ma traän tam giaùc döôùi L sao cho caùc phaàn töû treân ñöôøng
cheùo chính baèng 1.
Böôùc 3 :
Ta tính khoùa K L U= ×
Böôùc 4:
Tính det(K – I).
Neáu det(K – I) = 0 thì ta quay laïi böôùc 2 tính laïi ma traän L.
Neáu det(K – I) ≠ 0 thì ta tieáp böôùc 5.
Böôùc 5:
Ta seõ hoaùn vò khoùa K ñeå khoùa K trôû neân an toaøn hôn
môùiK P K= ×
Vôùi P laø ma traän hoaùn vò.
4. Ví duï:
Ta xeùt treân tröôøng 29] ; ta seõ sinh khoùa coù baäc laø 4
Böôùc 1:
Ta sinh ma traän tam giaùc döôùi L baát kyø sao cho caùc ñöôøng cheùo chính
baèng 1.
1 0 0 0
2 1 0 0
6 4 1 0
5 3 0 1
⎛ ⎞⎜ ⎟⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠
L
Böôùc 2:
Ta phaùt sinh ma traän tam giaùc treân U baát kyø khaû nghòch vaø thoûa:
4
1
0;1;28ii
i
u
=
≠∏
57
5 2 1 2
0 3 2 5
0 0 1 1
0 0 0 1
U
⎛ ⎞⎜ ⎟⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠
Böôùc 3:
Tính khoùa K
1 0 0 0 5 2 1 2 5 2 1 2
2 1 0 0 0 3 2 5 10 7 4 9
6 4 1 0 0 0 1 1 1 24 15 4
5 3 0 1 0 0 0 1 25 19 11 26
⎛ ⎞ ⎛ ⎞ ⎛ ⎞⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟= × = × =⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠
K L U
Böôùc 4:
Kieåm tra K coù laø khoùa yeáu khoâng?
Tính : det (K – I) =18 ≠ 0
Neân K laø khoùa maø ta chaáp nhaän ñöôïc (khoâng yeáu)
Chaáp nhaän laø khoùa vaø chuyeån sang böôùc 5.
Böôùc 5:
Ta coù theå hoaùn vò ma traän khoùa vöøa phaùt sinh
Ví duï:
0 1 0 0
0 0 0 1
1 0 0 0
0 0 1 0
P
⎛ ⎞⎜ ⎟⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠
Nhö vaäy khoùa môùi laø:
môùi
0 1 0 0 5 2 1 2 10 7 4 9
0 0 0 1 10 7 4 9 25 19 11 26
1 0 0 0 1 24 15 4 5 2 1 2
0 0 1 0 25 19 11 26 1 24 15 4
K P K
⎛ ⎞ ⎛ ⎞ ⎛ ⎞⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟= × = × =⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠
58
5. Khaûo saùt khoâng gian khoùa vöøa sinh theo thuaät giaûi
Ta xeùt treân p] vôùi p laø soá nguyeân toá
Ta sinh khoùa K laø ma traän vuoâng khaû nghòch d×d
Soá ma traän khaû nghòch treân p] laø : ( )1
0
p
d i
i
p p
−
=
−∏
Số ma trận involutory:
Tröôøng hôïp p > 2
0
d
d
t t d t
g
g g= −
⎛ ⎞⎜ ⎟⎝ ⎠∑
Vôùi ( ) ( )2 1
1 0
1
t t
t i t i
t
i i
g p p p p
−−
= =
= − = −∏ ∏ vaø 0 1g =
Tröôøng hôïp p = 2
(2 3 )2
0 2
2
d
t d t
d
t t d t
g
g g
⎢ ⎥⎢ ⎥ − −⎣ ⎦
= −
∑
Nhö vaäy soá ma traän khoùa laø soá ma traän khaû nghòch treân p] tröø ñi soá ma
traän khoùa yeáu.
Ma traän tam giaùc döôùi L vaø ma traän tam giaùc treân U baäc d coù
( )1
2
d d +
coù
theå khaùc 0.
Theo thuaät giaûi treân thì soá ma traän tam giaùc döôùi L laø
( )1
2
d d
d
p
+ −
(3.13)
Theo thuaät giaûi treân thì soá ma traän U, khi ta xaây döïng thì treân ñöôøng cheùo
chính coù d – 1 phaàn töû choïn sao cho khaùc 0. Phaàn töû udd seõ phuï thuoäc caùc phaàn töû
tröôùc sao cho tích caùc ñöôøng cheùo chính khaùc 1. Vaäy ta coù ( ) 11 dp −− caùch choïn
phaàn töû treân ñöôøng cheùo chính. Caùc phaàn töû coøn laïi choïn baát kyø neân ta coù:
59
( )1
2
d d
d
p
+ −
caùch choïn.
Vaäy soá ma traän tam giaùc treân U laø: ( ) ( )11 21 d d ddp p + −−− (3.14)
Vaäy soá löôïng ma traän khoùa K = L × U coù theå laø:
( ) ( ) ( ) ( ) 21 11 12 21 1d d d dd dd d d dp p p p p+ +− −− − −− = − (3.15)
60
Chöông 4:
CAÙC VAÁN ÑEÀ LIEÂN QUAN ÑEÁN MAÕ HILL
Moâ taû:
Ngöôøi A vaø ngöôøi B trao ñoåi thoâng tin cho nhau; söû duïng maõ hoùa
ñoái xöùng vaø cuï theå laø maõ ma traän. A vaø B seõ coù khoùa bí maät laø ma traän; vaø aùp
duïng thuaät toaùn maõ hoùa theo ma traän ñeå maõ hoùa thoâng ñieäp M vaø chuyeån cho B.
B seõ söû duïng khoùa bí maät ñeå giaûi maõ vaø tính toaùn ñöôïc M.
1. Sinh khoùa theo pincodes
Hình 4.1
Ngöôøi göûi A seõ coù moät pin codes vaø duøng pin codes ñeå sinh ra khoùa bí
maät laø ma traän K. Ngöôøi A seõ duøng khoùa K ñeå maõ hoùa thoâng ñieäp C = K × M.
Ngöôøi nhaän B cuõng coù pincodes vaø cuõng duøng pincodes ñeå sinh ra khoùa laø ma
traän K. Vaø duøng khoùa K ñeå tính M = K-1 × C.
Thuaät toaùn: sinh hoùa töø pincodes vaø maõ hoùa baèng maõ ma traän
Cho tröôùc pincodes S coù chieàu daøi xaùc ñònh tröôùc.
Thoâng ñieäp
M
Ngöôøi göûi
A
Sinh Khoùa K
Sinh khóa K
Theo pin codes
Ngöôøi nhaän
B
Mã hóa Thoâng ñieäp M
C= K × M
Sinh khóa K
Theo pin codes
Thoâng ñieäp
M = K‐1× C
61
Thuaät toaùn sinh khoùa K laø tích cuûa ma traän tam giaùc döôùi L vaø ma
traän tam giaùc treân U coù kích thöôùc laø d × d
Goïi f laø haøm băm (hash).
Baûng chöõ caùi (Alphabet)
A B C D E F G H I J K L M N O
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
P Q R S T U V W X Y Z . ? ∪
15 16 17 18 19 20 21 22 23 24 25 26 27 28
Thuaät toaùn:
Ta seõ aùp duïng baûng chöõ caùi ñeå chuyeån töø chöõ sang soá; trong tröôøng hôïp laø
soá thì chính laø giaù trò cuûa soá ñoù; chæ coù tröôøng hôïp soá 0 ta chuyeån thaønh soá 10.
Nhö vaäy chæ coù tröôøng hôïp duy nhaát laø A hay a thì chuyeån thaønh 0.
Sinh khoùa K
Böôùc 1:
Duøng haøm baêm f ñeå tính giaù trò t:=f(S):
Ma traän U coù
( )1
2
d d +
phaàn töû caàn tính toaùn
Ta tính:
( ) ( )1 1: ( )
2 2* ( )
+ +⎡ ⎤ ⎡ ⎤= =⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥
d d d d
length t a
length t
Neáu 1a > ; thì
Laàn 1 ta seõ tính t:=f(S)
Laàn 2 Ta tính: S:= S+t vaø tính t:= t + f(S)
Vaø töông töï nhö nhö vaäy laäp laïi a laàn.
Böôùc 2:
Tính ma traän L:
62
Ta seõ gaùn caùc phaàn töû ñöôøng cheùo chính: 11 22 33, , , , ddl l l l… caùc giaù
trò laø 1.
for i from 1 to d do
L[i][i]:=1;
end do;
Duyeät chuoãi t sau khi chuyeån sang soá vaø gaùn cho caùc giaù trò cho lij
vôùi i > j
k:=0;
for i from 2 to d do
for j from 1 to i do
L[i][j]:=t[k];
k:=k+1;
end do;
end do;
Böôùc 3:
Tính ma traän U:
Gaùn caùc phaàn töû treân ñöôøng cheùo chính khaùc 0 vaø choïn udd sao cho
1
0
1; 1
d
ii dd
i
u u p
−
=
⎛ ⎞ ≠ −⎜ ⎟⎝ ⎠∏
Duyeät chuoãi t ngöôïc töø cuoái chuoãi sang ñaàu chuoãi.
Gaùn caùc phaàn töû u11;….;ud-1d-1 sao cho caùc uii ñoù khaùc 0.
k:==length(t);
S:=1;
for i:= 1 from d – 1 do
63
U[i][i]:=t[k];
k:=k-1;
if U[i][i]=0 then U[i][i]:= U[i][i]+1;
end if;
S:=S*U[i][i] mod p;
end do;
U[d][d]:=t[k];
k:=k – 1;
if(S*U[d][d]=1) or (S* U[d][d]=p – 1) then U[d][d]:= U[d][d]+1;
end if;
Gaùn caùc phaàn töû baát kyø trong t (duyeät ngöôïc chuoãi t)cho uij
for j from 1 to d – 1 do
for i from j+1 to d do
U[i][j]:=t[k];
k:=k – 1;
end do;
end do;
Böôùc 4:
Tính khoùa K:
K:= L × U;
Tính det(K – I);
Neáu det(K – I ) = 0 thì laäp laïi böôùc 1 vôùi pincodes S:= S +f(S);
Ngöôïc laïi chuyeån sang böôùc 5.
Böôùc 5:
Chuyeån thoâng ñieäp thaønh daïng ma traän
Chuyeån caùc kyù töï trong thoâng ñieäp M thaønh daïng soá.
64
Tính ( ):β = −length M d ;
Neáu 0β = thì thoâng ñieäp seõ laø ma traän daïng d×1
Neáu 0β > thì theâm ( ) ( )⎡ ⎤ −⎢ ⎥⎢ ⎥
length Md length M
d
khoaûng traéng vaøo cuoái M;
luùc naøy ma traän thoâng ñieäp daïng ( )⎡ ⎤× ⎢ ⎥⎢ ⎥
length Md
d
.
Neáu 0β < thì theâm β khoaûng traéng vaøo cuoái M; thoâng ñieäp laø ma traän
daïng d×1.
Taïo thoâng ñieäp thaønh ma traän vaø chuyeån sang soá.
Böôùc 6:
Tieán haønh maõ hoùa M vaø göûi cho B:
C = K × M;
Böôùc 7:
Gôûi C (Ciphertext) cho ngöôøi B;
Taïi ngöôøi B coù pincodes vaø sinh ma traän khoùa K töông töï caùc böôùc
1,2,3,4. Tính nhanh ma traän K-1 (phaàn 4 Chöông 4).
Giaûi maõ vaø tính thoâng ñieäp M
M = K-1 × C;
Tính toaùn ngöôïc laïi thoâng ñieäp M:
k:=1;
for i from 1 to d
for j from 1 to d
m[k]:= M[i][j];
k:=k+1;
od;
od;
65
Chuyeån ngöôïc töø soá sang chöõ caùi döa vaøo baûng Alphabet.
Ngöôøi B ñaõ coù ñöôïc thoâng ñieäp cuûa ngöôøi A
2. Caùch taán coâng maõ Hill goác
Hình 4.2
Tröôøng hôïp 1:
Ta maõ hoùa: ta coù khoùa K laø ma traän vuoâng khaû nghòch baäc d; vaø M laø ma
traän thoâng ñieäp; M coù soá chieàu laø d×m neáu thoâng ñieäp M khoâng ñuû d×m thì ta
theâm caùc khoaûng traéng cho ñuû d×m. Nhöng trong tröôøng hôïp thoâng ñieäp M coù soá
m = d thì M laø ma traän vuoâng. Nhö vaäy neáu nhö ta maõ hoùa thoâng ñieäp M = Id
C = K × M = K × Id = K
Nhö vaäy khi maõ hoùa nhö treân thì ta seõ tính ñöôïc khoùa K vaø nhö vaäy khoùa
K khoâng coøn an toaøn nöõa.
Tröôøng hôïp 2:
Ta coù ma traän khoùa K coù kích thöôùc d×d
Ta coù d vectô 1, dp p… (d × 1); caùc plaintext caàn maõ hoùa thì ta thu ñöôïc d
vectô caùc ciphertext 1, dc c… (d × 1).
Nhö vaäy ta coù: ( ) ( )1 1d dp p K c c× =… … .
Thoâng ñieäp
M
Ngöôøi göûi
A
Sinh Khóa K
Sinh khóa K
Theo pin codes
Ngöôøi nhaän
B
Mã hóa Thoâng ñieäp M
C= K × M
Sinh khóa K
Theo pin codes
Thoâng ñieäp
M = K‐1× C
Cipher text
66
Nhö vaäy khoùa K ñöôïc tính deã daøng: ( ) ( )11 1d dK p p c c−= ×… …
3. Caûi tieán thuaät giaûi (sinh khoùa töø pincodes vaø chuoãi ngaãu nhieân)
Ñoái vôùi thoâng ñieäp coù kích thöôùc nhoû hôn d×(d – 1)
Hình 4.3
Ngöôøi göûi A vaø ngöôøi nhaän B coù chung pincodes. Thuaät toaùn ñöôïc caûi tieán
baèng caùch theâm chuoãi ngaãu nhieân u.
Taïi ngöôøi göûi A:
Böôùc 1: Sinh chuoãi u ngaãu nhieân; keát hôïp pincodes ñaõ coù vôùi u
thaønh pincodes môùi .
Böôùc 2: Töø pincodes môùi sinh ra ma traän khoùa K nhö trong phaàn 1
chöông 4.
Böôùc 3: Tính C = K × M
Böôùc 4: Göûi cho ngöôøi B : C vaø u.
Taïi ngöôøi nhaän B:
Böôùc 1: Tính pincodes môùi = pincodes + u
Böôùc 2: Töø pincodes môùi tính ma traän khoùa K nhö trong phaàn 1
chöông 4.
Böôùc 3: Giaûi maõ tìm thoâng ñieäp M:
Sinh chuoãi t baát kyø;
Keát hôïp pincodes
vôùi t baát kyø
Pin codes môùi =
pincodes + u
Thoâng ñieäp
M
Ngöôøi göûi
A
Sinh Khoùa K theo
Pin codes môùi
Ngöôøi nhaän
B
Mã hóa Thoâng ñieäp M
C= K × M
Chuoãi ngaãu nhieân u
Thoâng ñieäp
M = K‐1× C
Nhaän ñöôïc chuoãi u.
Tính Pin codes môùi
= pincodes + u
67
M = K-1 × C
Caûi tieán thuaät toaùn ôû ñaây laø khoùa K duøng ñeå maõ hoùa luoân thay ñoåi trong moãi laàn
maõ hoùa. Duø ai ñoù coù tính toaùn ñöôïc khoùa trong moät laàn maõ hoùa vaø giöõa ñeå giaûi
maõ thoâng ñieäp khi baét ñöôïc cipher thì khoâng ñöôïc vì laàn maõ hoùa tieáp theo khoùa
K cuõng ñaõ thay ñoåi vì chuoãi u ñöôïc sinh ra laø ngaãu nhieân. Nhö vaäy thì giaûi quyeát
ñöôïc tröôøng hôïp 2 trong phaàn 2 (taán coâng maõ Hill goác) do d laàn maõ hoùa caùc
vectô 1, dp p… vôùi d khoùa K khaùc nhau. Neáu M laø ma traän ñôn vò thì chæ bieát
ñöôïc khoùa K vaø chuoãi ngaãu nhieân u cuûa laàn maõ hoùa ñoù maø nhöõng laàn maõ hoùa
khaùc thì K vaø u ñaõ thay ñoåi; nhö vaäy giaûi quyeát tröôøng hôïp 1 trong phaàn 2 (taán
coâng maõ Hill goác)
Ñoái vôùi thoâng ñieäp coù kích thöôùc lôùn hôn d×(d – 1)
Hình 4.4
Taïi ngöôøi A:
Chia thoâng ñieäp thaønh k khoái moãi khoái coù kích thöôùc d×(d – 1); rieâng khoái
k coù theå coù kích thöôùc nhoû hôn d×(d – 1).
Thoâng ñieäp
M
Sinh chuoãi t baát kyø;
Keát hôïp pincodes
vôùi ui baát kyø
Pin codes môùi thứ
i= pincodes + ui
Ngöôøi göûi
A
Sinh Khoùa Ki theo
Pin codes môùi
Ngöôøi nhaän
B
Mã hóa Thoâng ñieäp M
Ci= Ki × Mi
Chuoãi ngaãu nhieân ui
Thoâng ñieäp
Mi = Ki
‐1× Ci
Nhaän ñöôïc chuoãi
ui.
Tính Pin codes
môùi thứ i =
pincodes + ui
M=ΣMi
Thoâng ñieäp M ñöôïc chia
thaønh k khoái;k – 1 khoái coù
kích thöôùc d×(d – 1); khoái k
coù theå coù kích thöôùc nhoû hôn
d×(d – 1)
68
Ngöôøi A tieán haønh maõ hoùa töøng khoái töông töï nhö trong tröôøng hôïp maõ
hoùa thoâng ñieäp coù kích thöôùc nhoû hôn d×(d – 1) vaø göûi cho ngöôøi B.
Taïi ngöôøi B:
Ngöôøi B nhaän töøng khoái vaø tieán haønh giaûi maõ töøng khoái töông töï nhö
tröôøng hôïp ôû treân. Sau ñoù gheùp caùc khoái laïi seõ coù thoâng ñieäp ban ñaàu.
Do ta maõ hoùa töøng khoái coù kích thöôùc nhoû hôn d×(d – 1) neân seõ traùnh ñöôïc
tröôøng hôïp choïn tröôùc vaên baûn ñeå maõ(choosen plaintext).
4. Tính nhanh ma traän khaû nghòch cuûa khoùa: 1 1 1K U L− − −= ×
Theo thuaät toaùn ta sinh ma traän K L U= × K khaû nghòch; L laø ma
traän tam giaùc döôùi khaû nghòch vaø U laø ma traän tam giaùc treân khaû nghòch. Ma traän
K,L,U laø ma traän vuoâng caáp d × d treân p] .
Ta ñaët ( )1 .1 .nK k k− = … thì ki laø nghieäm cuûa heä phöông trình
Thì caùc .ik (vectô coät) laø nghieäm cuûa heä . .i iK k I× = vôùi .iI laø vectô
coät vôùi vò trí thöù i laø 1 coøn laïi laø 0.
Maø . . . .i i i iK k I L U k I× = ⇔ × × =
Ta ñaët: . .i i i iU k Y L Y I× = ⇒ × =
Nghóa laø ta giaûi heä phöông trình sau:
.
i i
i i
L Y I
U k Y
× =⎧⎨ × =⎩
Ta goïi:
1i
i
di
Y
Y
Y
⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠
# vaø ta seõ giaûi heä phöông trình:
69
1
1
1
1 0 0 0
1 0 0 1
0
1 0
⎛ ⎞ ⎛ ⎞ ⎛ ⎞⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟× = ⇔ × =⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎝ ⎠⎝ ⎠ ⎝ ⎠
…
# % # # #
… …
% #
#
…
i
i ii
i i
d di
Y
l Y
L Y I
l Y
1
1
2
21 1 2
1 1 2 2
1 1
11 1 12 2 1 1
2 2
21 1 22 2 2 1 2 1 1 2
1 1 2 2
0
0 0
0
1
1
0
0
0
+ +
+ + + +
+ +
+ + + + + + +
==⎧ =⎪ + =⎪⎪ =⎪ + + + =⎪ = −⇔ ⇔⎨ + + + =⎪ = −⎪ + + + + =⎪⎪⎪ + + + =⎩
##
…
…
…
#
…
i
i
i
i i
ii
i i i i ii
i i i i
i i i i i i ii i i
i i i i
i i i i i i ii i i i i i
d i d i di
Y
Y Y
l Y Y
Y
l Y l Y Y Y l
l Y l Y l Y Y Y l l
l Y l Y l Y l Y Y
l Y l Y Y
1 2
1
+ +
−
=
⎧⎪⎪⎪⎪⎪⎪⎨⎪ −⎪⎪⎪ ⎛ ⎞⎪ = −⎜ ⎟⎪ ⎝ ⎠⎩ ∑
#
i i i i
d
di dj ji
j i
l
Y l Y
Ta xeùt heä phöông trình:
11 12 1 1
22
1
0
0 0
1.
0
0 0
−
=
⎛ ⎞⎛ ⎞ ⎛ ⎞ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟× = ⇔ × =⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎛ ⎞⎜ ⎟⎜ ⎟ ⎜ ⎟ −⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎜ ⎟⎝ ⎠⎝ ⎠∑
… ## #
# … % # … #
#% #
…
d i
i i
ii ii
d
dd di dj ji
j i
u u u k
u
U k Y
u k
u k l Y
70
( )
1
2 1
1 1 ( 1) 1
( 1)( 1) 1 1
1
1
1
1 1
1 1 1
11
d
di di dj ji
j idd dd
d d
d i d i d d di dj ji dj ji d d
j i j id d dd d d
d
ii ij ji
j i ii
d
i i ij ji
j i
k Y l Y
u u
k Y u k l Y l Y u
u u u
k u k
u
k u k
−
=
− −
− − − −
= =− − − −
−
= +
−
=
⎛ ⎞= = −⎜ ⎟⎝ ⎠
⎡ ⎤⎛ ⎞⎛ ⎞ ⎛ ⎞⎡ ⎤= − = − − −⎢ ⎥⎜ ⎟⎜ ⎟ ⎜ ⎟⎜ ⎟⎣ ⎦ ⎢ ⎥⎝ ⎠ ⎝ ⎠⎝ ⎠⎣ ⎦
⎡ ⎤⇔ = −⎢ ⎥⎣ ⎦
= −
∑
∑ ∑
∑
∑
#
1
1
2 1
1
1
i i
d
i ij ji
j i
u
k u k
u
−
=
⎧⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪ ⎛ ⎞⎪ ⎜ ⎟⎪ ⎝ ⎠⎪⎪⎪ ⎛ ⎞⎪ = −⎜ ⎟⎪ ⎝ ⎠⎩
∑
#
Nhö vaäy ta coù theå tính nhanh ma traän nghòch ñaûo cuûa K töø L × U.
Vôùi ( )1 .iK k− = vôùi .ik laø vectô coät
2 1
1
1
11
. 1
1 2 1
1
1 1
1
1
11
1 1
d
ij ji
j i
di
ij ji
j i i i
di i
ij jii ii j i ii
d i d d
di dj ji dj ji d d
j i j i dd d d
dj
u k
u
k
u k
u
k
u kk k u
k
k l Y l Y u
u u
l Y
=
= −
−−
= +
− − −
−= = − −
⎛ ⎞−⎜ ⎟⎝ ⎠
⎛ ⎞ ⎛ ⎞⎜ ⎟ −⎜ ⎟⎜ ⎟ ⎝ ⎠⎜ ⎟ ⎡ ⎤⎜ ⎟ −= = ⎢ ⎥⎜ ⎟ ⎣ ⎦⎜ ⎟⎜ ⎟⎜ ⎟ ⎡ ⎤⎛ ⎞⎛ ⎞ ⎛ ⎞⎜ ⎟ − − −⎢ ⎥⎜ ⎟⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠⎢ ⎥⎝ ⎠⎣ ⎦
−
∑
∑
∑
∑ ∑
#
#
# #
1 1d
ji
j i ddu
−
=
⎛ ⎞⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎛ ⎞⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠⎝ ⎠∑
71
KEÁT LUAÄN VAØ KIEÁN NGHÒ
Luaän vaên ñaõ taäp trung khaûo saùt veà maõ Ma traän; vaø khaûo saùt khoâng gian
khoùa vaø ñöa ra ñöôïc tyû soá f(d,m) ñeå ñaùnh giaù choïn khoâng gian khoùa vaø khoâng
gian Alphabet sao cho toát nhaát. Theo luaän vaên thì khoâng gian Alphabet toát nhaát
thì m(kích thöôùc khoâng gian Alphabet) neân laø soá nguyeân toá.
Luaän vaên cuõng ñaõ ñöa ra thuaät giaûi sinh khoùa, vôùi khoùa K = L×U an toaøn
vôùi L laø ma traän tam giaùc döôùi vôùi caùc phaàn töø treân ñöôøng cheùo chính baèng 1 vaø
U laø ma traän tam giaùc treân khaû nghòch.
Luaän vaên cuõng ñöa caûi tieán cho maõ Ma traän laø theâm chuoãi ngaãu nhieân u
khi maõ hoùa ñeå khoùa K thay ñoåi trong nhöõng laàn maõ hoùa khaùc nhau. Vaø ñeà xuaát
khi maõ hoùa thoâng ñieäp thì neân choïn thoâng ñieäp coù kích thöôùc nhoû hôn d×(d – 1);
vôùi d laø kích thöôùc khoùa.
Tuy nhieân trong luaän vaên cuõng coøn nhieàu thieáu soùt vaø trong thuaät toaùn
sinh khoùa K = L×U thì khoâng loaïi boû tröïc tieáp khoùa yeáu (K×v=v) maø chæ loaïi boû
ñöôïc (K laø ma traän ñoái hôïp.).
Kieán nghò tìm ñieàu kieän L, U sao cho khi tính L×U thì loaïi boû tröôøng hôïp
khoùa yeáu laø det(L×U – I)≠0
72
TAØI LIEÄU THAM KHAÛO
Key word
Hill cipher, Matrix Modular, General Matrix.
Tieáng Vieät:
[1] Döông Anh Ñöùc, Traàn Minh Trieát (2005), Maõ hoùa vaø öùng duïng, Nhaø
xuaát baûn Đại học Quốc Gia TPHCM, Thaønh Phoá Hoà Chí Minh.
[2] Buøi Xuaân Haûi, Traàn Nam Duõng, Trònh Thanh Ñeøo, Thaùi Minh Ñöôøng,
Traàn Ngoïc Hoäi (2001), Ñaïi soá tuyeán tính, Nhaø xuaát baûn Ñaïi hoïc Quoác Gia
TPHCM, Thaønh Phoá Hoà Chí Minh.
[3] Haø Huy Khoaùi (2003), Maõ hoùa thoâng tin cô sôû toaùn hoïc vaø öùng duïng, Boä
saùch toaùn cao caáp – Vieän Toaùn Hoïc, Haø Noäi
[4] Nguyeãn Ñình Thuùc, Buøi Doaõn Khanh (2006), Maõ hoùa – Maät maõ, Nhaø
Xuaát Baûn Lao Ñoäng Xaõ Hoäi, Thaønh Phoá Hoà Chí Minh.
Tieáng Anh:
[5] Carl D Meyer (2000), “Matrix Analysis & Applied Linear Algebra”.
[6] Hodges, J. (1958), “The Matrix Equation X2 – I = 0 over a Finite
Field”, American Math. Monthly, 65, pp. 518 – 520.
73
[7] Jeffrey Overbey, William Traves, and Jerzy Wojdylo (2005), “On the
Keyspace of the Hill Cipher”, Cryptologia, 29(1), pp. 59 – 72.
[8] Levine, J., and R.R. Korfhage (1964), “Automorphisms of Abelian
Groups Induced by Involutory Matrices, General Modulus”, Duke Math J, 31,
pp.631 - 654.
[9] Levine, J., and H.M. Nahikian (1962), “On the Construction of
Involutory Matrices”, American. Math. Monthly, 69,pp. 267 – 272 .
[10] Murray Eisenberg (1999), “Hill Cipher and Modular Linear Algebra”,
Mimeographed notes, University of Massachusetts, 19 pages .
[11] Tran Ngoc Bao, Nguyen Dinh Thuc (2008), “Modular Matrix Cipher
and Its application in Authentication Protocol”, The IEEE 9th ACIS International
Conference on Software Engineering, Artifical Intelligence, Networking and
Parallel/ Distributed Computing, pp 318 – 323.
74
PHUÏ LUÏC DEMO THUAÄT TOAÙN CHÖÔNG 4 BAÈNG MAPLE
// Khai baùo thö vieän
with(StringTools);
with(inttrans);
with(Maplets);
with(linalg);
with(LinearAlgebra);
//Vieát haøm chuyeån ñoåi töø chöõ sang soá (tröôøng hôïp laø soá thì giöõ nguyeân; soá 0
chuyeån thaønh soá 10)
chuyensangso := proc (s)
if s = "a" or s = "A" then return 0 end if;
if s = "b" or s = "B" then return 1 end if;
if s = "c" or s = "C" then return 2 end if;
if s = "d" or s = "D" then return 3 end if;
if s = "e" or s = "E" then return 4 end if;
if s = "f" or s = "F" then return 5 end if;
if s = "g" or s = "G" then return 6 end if;
if s = "h" or s = "H" then return 7 end if;
if s = "i" or s = "I" then return 8 end if;
if s = "j" or s = "J" then return 9 end if;
if s = "k" or s = "K" then return 10 end if;
if s = "l" or s = "L" then return 11 end if;
if s = "m" or s = "M" then return 12 end if;
75
if s = "n" or s = "N" then return 13 end if;
if s = "o" or s = "O" then return 14 end if;
if s = "p" or s = "P" then return 15 end if;
if s = "q" or s = "Q" then return 16 end if;
if s = "r" or s = "R" then return 17 end if;
if s = "s" or s = "S" then return 18 end if;
if s = "t" or s = "T" then return 19 end if;
if s = "u" or s = "U" then return 20 end if;
if s = "v" or s = "V" then return 21 end if;
if s = "w" or s = "W" then return 22 end if;
if s = "x" or s = "X" then return 23 end if;
if s = "y" or s = "Y" then return 24 end if;
if s = "z" or s = "Z" then return 25 end if;
if s = "." then return 26 end if;
if s = "?" then return 27 end if;
if s = " " then return 28 end if;
if s = "1" then return 1 end if;
if s = "2" then return 2 end if;
if s = "3" then return 3 end if;
if s = "4" then return 4 end if;
if s = "5" then return 5 end if;
if s = "6" then return 6 end if;
if s = "7" then return 7 end if;
if s = "8" then return 8 end if;
if s = "9" then return 9 end if;
if s = "0" then return 10 end if;
76
end proc;
// Vieát haøm chuyeån töø soá thaønh chöõ(trong ví duï naøy chæ maõ hoùa chöõ khoâng maõ
hoùa soá)
chuyensangchu := proc (t)
if t = 0 then return "A" end if;
if t = 1 then return "B" end if;
if t = 2 then return "C" end if;
if t = 3 then return "D" end if;
if t = 4 then return "E" end if;
if t = 5 then return "F" end if;
if t = 6 then return "G" end if;
if t = 7 then return "H" end if;
if t = 8 then return "I" end if;
if t = 9 then return "J" end if;
if t = 10 then return "K" end if;
if t = 11 then return "L" end if;
if t = 12 then return "M" end if;
if t = 13 then return "N" end if;
if t = 14 then return "O" end if;
if t = 15 then return "P" end if;
if t = 16 then return "Q" end if;
if t = 17 then return "R" end if;
if t = 18 then return "S" end if;
if t = 19 then return "T" end if;
if t = 20 then return "U" end if;
77
if t = 21 then return "V" end if;
if t = 22 then return "W" end if;
if t = 23 then return "X" end if;
if t = 24 then return "Y" end if;
if t = 25 then return "Z" end if;
if t = 26 then return "." end if;
if t = 27 then return "?" end if;
if t = 28 then return " " end if ;
end proc;
//Sinh chuoãi ngaãu nhieân coù chieàu daøi d
sinhchuoingaunhien := proc (d)
return Random(d, 'upper')
end proc;
// Soá laàn laëp haøm baêm pinccodes ñuû ñeå taïo ma traän d × d
solanlapdesinhchuoitupincodes := proc (d)
local temp;
temp := iquo(d*(d+1), 64);
if temp < 1 then return 1 else temp+1;
end if;
end proc;
// Haøm baêm pincodes vôùi soá laàn ñöôïc tính ôû treân
hambampincodestaomatran := proc (d, pincodes)
local t, i, S;
if solanlapdesinhchuoitupincodes(d) = 1 then return Hash(pincodes)
else
t := Hash(pincodes);
78
for i to solanlapdesinhchuoitupincodes(d) do
S := cat(S, t);
t := cat(t, Hash(S))
end do;
return t;
end if;
end proc;
//Taïo ma traän tam giaùc döôùi L
taomatrantamgiacduoi := proc (d, S, p)
local i, j, k, T;
T := Matrix(d);
for j to d do
T[j, j] := 1;
end do;
k := 1;
for i from 2 to d do
for j to i-1 do
k := k+1; T[i, j] := chuyensangso(S[k]);
end do;
end do;
return T mod p;
end proc;
L := taomatrantamgiacduoi(10, hambampincodestaomatran(10,
"thanhDMZUEVXNZNRUOZYPUSJE"), 31);
79
//Taïo ma traän tam giaùc treân U
taomatrantamgiactren := proc (d, S, p)
local i, j, k, U, V, T;
U := Matrix(d);
k := length(S);
T := 1;
for i to d-1 do
U[i, i] := chuyensangso(S[k]);
k := k-1;
if U[i, i] = 0 then U[i, i] := U[i, i]+1
end if;
T := T*U[i, i]
end do;
U[d, d] := chuyensangso(S[k]); k := k-1;
while T*U[d, d] = 1 or T*U[d, d] = p-1 do U[d, d] := U[d, d]+1
end do;
for i to d-1 do
for j from i+1 to d do U[i, j] := chuyensangso(S[k]); k := k-1
80
end do
end do;
return U mod p
end proc;
U := taomatrantamgiactren(10, hambampincodestaomatran(10, "thanhE"), 29);
//Sinh Khoùa K
Sinhkhoa := proc (d, pincodes, p)
local L, U, K;
L := taomatrantamgiacduoi(d, hambampincodestaomatran(d, pincodes), p);
U := taomatrantamgiactren(d, hambampincodestaomatran(d, pincodes), p);
K := `mod`(MatrixMatrixMultiply(L, U), p);
while det(K-Indentity(d)) = 0 do
pincodes := cat(pincodes, "1");
L := taomatrantamgiacduoi(d, hambampincodestaomatran(d, pincodes), p);
U := taomatrantamgiactren(d, hambampincodestaomatran(d, pincodes), p);
K := `mod`(MatrixMatrixMultiply(L, U), p);
81
end do;
return K
end proc;
K := Sinhkhoa(10, "thanh", 29);print();
//Ngöôøi A tieán haønh maõ hoùa vaø gôûi cho B
nguoiAgui := proc (Message, d, pincodes)
local kq, a, i, M, j, K, p, l, b, X, Messagenew;
a := iquo(length(Message), d);
b:=0;
c:=length(Message) – d;
if c<0 then b:=abs(c);
else b:=(a+1).d – length(Message);
end if;
X := Random(b, " ");
Messagenew := cat(Message, X);
a := iquo(length(Messagenew), d);
M := Matrix(d, a);
82
l := 1; p := 29;
for i to d do
for j to a do
M[i, j] := chuyensangso(Messagenew[l]);
l := l+1;
end do;
end do;
K := Sinhkhoa(d, pincodes, p);
kq := MatrixMatrixMultiply(K, M) mod p;
return kq;
end proc;
X := nguoiAgui("Lop Cao hoc dam bao toan hoc cho may tinh va he thong tinh
toan", 10, "thanh");
//Ngöôøi B giaûi maõ vaø tìm ñöôïc thoâng ñieäp
nguoiBgiaima := proc (Cipher, d, pincodes)
local i, j, p, kq, temp, c, k, K;
p := 29;
K := Sinhkhoa(d, pincodes, p);
temp := MatrixMatrixMultiply(MatrixInverse(K), Cipher) mod p;
83
c := coldim(temp);
kq := " ";
k := 0;
for i to d do
for j to c do
kq := Insert(kq, k, chuyensangchu(temp[i, j]));
k := k+1;
end do;
end do;
return kq;
end proc;
D1 := nguoiBgiaima(X, 10, "thanh");
//Caûi tieán thuaät toaùn vôùi theâm moät chuoãi ngaãu nhieân u vaø keát hôïp vôùi pincodes
taïo thaønh pincodes môùi vaø duøng pincodes môùi sinh khoùa, khi gôûi ma traän ñaõ maõ
hoùa thì daáu chuoãi ngaãu nhieân u vaøo coät cuoái vaø haøng cuoái cuûa ma traän
nguoiAguicaitien := proc (Message, d, pincodes)
local kq, a, i, M, j, K, p, l, b, X, Messagenew, u, kqcaitien, pincodesmoi;
a := iquo(length(Message), d);
b:=0;
c:=length(Message) – d;
if c<0 then b:=abs(c);
else b:=(a+1).d – length(Message);
end if;
X := Random(b, " ");
84
Messagenew := cat(Message, X);
a := iquo(length(Messagenew), d);
M := Matrix(d, a); l := 1; p := 29;
for i to d do
for j to a do
M[i, j] := chuyensangso(Messagenew[l]); l := l+1;
end do;
end do;
u := sinhchuoingaunhien(d+a+1);
pincodesmoi := cat(pincodes, u);
K := Sinhkhoa(d, pincodesmoi, p);
kq := MatrixMatrixMultiply(K, M) mod p;
kqcaitien := Matrix(d+1, a+1);
for i to d do
for j to a do
kqcaitien[i, j] := kq[i, j];
end do;
end do;
for i to d do
kqcaitien[i, a+1] := chuyensangso(u[i]);
end do;
kqcaitien[d+1, a+1] := chuyensangso(u[d+1]);
for i to a do
kqcaitien[d+1, i] := chuyensangso(u[1+i+d]);
end do;
return kqcaitien;
85
end proc;
Xcaitien1 := nguoiAguicaitien("Lop Cao hoc dam bao toan hoc cho may tinh va
he thong tinh toan", 9, "thanh");
//Ngöôøi B tieán haønh maõ hoùa
Xcaitien2 := nguoiAguicaitien("Lop Cao hoc dam bao toan hoc cho may tinh va
he thong tinh toan", 9, "thanh");
86
>
87
//Ngöôøi B tieán haønh giaûi maõ
nguoiBgiaima := proc (Cipher, d, pincodes)
local i, j, p, kq, temp, c, k, K, u, demu, rC, cC, pincodesmoi, Ciphermoi;
p := 29;
rC := rowdim(Cipher);
cC := coldim(Cipher);
demu := 0;
u := " ";
for i to rC do
u := Insert(u, demu, chuyensangchu(Cipher[i, cC]));
demu := demu+1
end do;
for i to cC-1 do
u := Insert(u, demu, chuyensangchu(Cipher[rC, i]));
demu := demu+1
end do;
demu := length(u);
u := Delete(u, demu .. demu);
pincodesmoi := cat(pincodes, u);
K := Sinhkhoa(d, pincodesmoi, p);
Ciphermoi := Matrix(rC-1, cC-1);
for i to rC-1 do
for j to cC-1 do
88
Ciphermoi[i, j] := Cipher[i, j];
end do;
end do;
temp := MatrixMatrixMultiply(MatrixInverse(K), Ciphermoi) mod p;
c := coldim(temp);
kq := " ";
k := 0;
for i from 1 to d do
for j from 1 to c do
kq := Insert(kq, k, chuyensangchu(temp[i, j]));
k := k+1;
end do;
end do;
return kq;
end proc;
nguoiBgiaima(Xcaitien2, 9, "thanh");
nguoiBgiaima(Xcaitien1, 9, "thanh");
Xcaitien3 := nguoiAguicaitien("Waiter Why is this key in my soup? What do
you think of it? Sir I am very happy replied the waiter I have looked for it
everywhere from yesterday. Thank you very much Thank you very much It is
lucky that you did not swallow up it.", 9, "thanh");
print(); # input placeholder
89
nguoiBgiaima(Xcaitien3, 9, "thanh");print(); # input placeholder
timetinh3 := time()-starttime3;print(); # input placeholder
starttime4 := time();print(); # input placeholder
Xcaitien4 := nguoiAguicaitien("The association said up to fourty percent of
garment export orders for the remaining months of the year are from Japan.
Under the Economic Partnership Agreement Vietnam has textile and garment
products shipped to Japan will enjoy tax exemptions starting next month. Nguyen
Hong Trang general director of lingerie producer Son Kim said the agreement
will absolutely bring more orders to local exporters. Trang said her company
plans to build a new factory next year to meet the rising demand from Japan.
Pham Xuan Hong general director of Saigon three Garment Company said the
agreement would benefit Japanese importers who would then offer to pay
Vietnamese producers more. Saigon three Garment the largest Vietnamese jeans
exporter to Japan said it has even received many orders for the first half of next
year. But exporters also said it would be hard to boost shipments to Japan sharply
even with the free trade agreement because they have to meet many strict
requirements. Hong said his company used to offer a wide range of products.
Now it only focuses on making jeans and khaki trousers for the Japanese market
as it is the only way to ensure standard and output he said. Son Kim has Trang
said exports to Japan are unlikely to advance suddenly since the market has set
many strict standard barriers that many Vietnamese companies may find hard to
90
overcome.Japan is one of Vietnam is biggest export markets but Vietnamese
products still hold a small share there accounting for only one percent of total
Japan is imports according to the Ministry of Industry. About nine percent of
Vietnamese export products to Japan would be exempted from tariffs within ten
years under the Vietnam Japan Economic Partnership Agreement which the
Japanese House of Councilors approved on June twenty four The association
said up to fourty percent of garment export orders for the remaining months of
the year are from Japan. Under the Economic Partnership Agreement Vietnam
has textile and garment products shipped to Japan will enjoy tax exemptions
starting next month. Nguyen Hong Trang general director of lingerie producer
Son Kim said the agreement will absolutely bring more orders to local exporters.
Trang said her company plans to build a new factory next year to meet the rising
demand from Japan. Pham Xuan Hong general director of Saigon three Garment
Company said the agreement would benefit Japanese importers who would then
offer to pay Vietnamese producers more. Saigon three Garment the largest
Vietnamese jeans exporter to Japan said it has even received many orders for
the first half of next year. But exporters also said it would be hard to boost
shipments to Japan sharply even with the free trade agreement because they
have to meet many strict requirements. Hong said his company used to offer a
wide range of products. Now it only focuses on making jeans and khaki trousers
for the Japanese market as it is the only way to ensure standard and output he
said. Son Kim has Trang said exports to Japan are unlikely to advance suddenly
since the market has set many strict standard barriers that many Vietnamese
companies may find hard to overcome.Japan is one of Vietnam is biggest export
markets but Vietnamese products still hold a small share there accounting for
only one percent of total Japan is imports according to the Ministry of Industry.
About nine percent of Vietnamese export products to Japan would be exempted
from tariffs within ten years under the Vietnam Japan Economic Partnership
Agreement which the Japanese House of Councilors approved on June twenty
four", 9, "thanh");print(); # input placeholder
91
nguoiBgiaima(Xcaitien4, 9, "thanh");print(); # input placeholder
timetinh4 := time()-starttime4;
Các file đính kèm theo tài liệu này:
- luanvanhoanchinh.pdf