Tài liệu Luận văn Khảo sát mã ma trận, phân tích độ an toàn, hiệu năng và cải tiến: 1
ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
BÙI QUANG THÀNH
KHẢO SÁT MÃ MA TRẬN,
PHÂN TÍCH ĐỘ AN TOÀN, HIỆU NĂNG VÀ CẢI TIẾN
Chuyên ngành: ĐẢM BẢO TOÁN HỌC CHO MÁY TÍNH
VÀ HỆ THỐNG TÍNH TOÁN
Mã số: 60 46 35
LUẬN VĂN THẠC SĨ: TOÁN HỌC
NGƯỜI HƯỚNG DẪN KHOA HỌC :
TS. NGUYỄN ĐÌNH THÚC
Thành Phố Hồ Chí Minh – Năm 2009
2
LỜI CÁM ƠN
Lời đầu tiên. tôi xin gởi lời cám ơn đến tất cả các thầy cô ở Khoa Toán -
Tin Học đã tận tụy truyền đạt các kiến thức cho chúng tôi trong suốt thời gian
học tại trường.
Tôi xin gởi lời cám ơn sâu sắc đến TS. Nguyễn Đình Thúc; thầy đã tận
tình hướng dẫn chúng tôi trong thời gian học cũng như trong suốt thời gian tôi
làm bài luận văn với thầy; thầy đã tận tình hướng dẫn, giúp đỡ và động viên để
tôi hoàn thành luận văn.
Tôi cũng cám ơn đến tất cả các anh chị học viên cao ...
91 trang |
Chia sẻ: hunglv | Lượt xem: 1071 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Luận văn Khảo sát mã ma trận, phân tích độ an toàn, hiệu năng và cải tiến, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
1
ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
BÙI QUANG THÀNH
KHẢO SÁT MÃ MA TRẬN,
PHÂN TÍCH ĐỘ AN TOÀN, HIỆU NĂNG VÀ CẢI TIẾN
Chuyên ngành: ĐẢM BẢO TOÁN HỌC CHO MÁY TÍNH
VÀ HỆ THỐNG TÍNH TOÁN
Mã số: 60 46 35
LUẬN VĂN THẠC SĨ: TOÁN HỌC
NGƯỜI HƯỚNG DẪN KHOA HỌC :
TS. NGUYỄN ĐÌNH THÚC
Thành Phố Hồ Chí Minh – Năm 2009
2
LỜI CÁM ƠN
Lời đầu tiên. tôi xin gởi lời cám ơn đến tất cả các thầy cô ở Khoa Toán -
Tin Học đã tận tụy truyền đạt các kiến thức cho chúng tôi trong suốt thời gian
học tại trường.
Tôi xin gởi lời cám ơn sâu sắc đến TS. Nguyễn Đình Thúc; thầy đã tận
tình hướng dẫn chúng tôi trong thời gian học cũng như trong suốt thời gian tôi
làm bài luận văn với thầy; thầy đã tận tình hướng dẫn, giúp đỡ và động viên để
tôi hoàn thành luận văn.
Tôi cũng cám ơn đến tất cả các anh chị học viên cao học các khóa đã giúp
đỡ tôi trong suốt khóa học cũng như trong thời gian làm luận văn.
Tôi xin gởi lời cám ơn đến toàn thể cán bộ viên chức Khoa Dược Đại học
Y Dược TPHCM, nơi tôi đang công tác. Cơ quan đã tạo mọi điều kiện thuận lợi
để tôi hoàn thành luận văn và khóa học.
Cuối cùng tôi xin gởi lời cám ơn đến tất cả những người thân của tôi, gồm
ba, mẹ và em tôi. Gia đình đã là nguồn động viên về mặt tinh thần cũng như là
vật chất để tôi hoàn thành khóa học.
Tôi mong nhận được sự góp ý, chỉ dẫn của quý thầy cô và các bạn để luận
văn được hoàn thiện hơn.
Thành phố Hồ Chí Minh, tháng 09 năm 2009
Học viên cao học
Bùi Quang Thành
3
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 ( = nm p )............ 26
5.3. Xét không gian khóa trên miền m] ,
0
i
z
n
i
i
m p
=
=∏ , ip 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 ; 2p p >] ...................... 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
6
TÓM TẮT
Tìm hiểu mã đối xứng; mã Hill dùng khóa là ma trận khả nghịch.
Tìm hiểu không gian khóa của mã Hill và chỉ ra là ta nên chọn khóa trên
p] , với p nguyên tố thì không gian khóa là tốt nhất.
Khảo sát các trường hợp khóa yếu của mã Hill để loại bỏ khi xây dựng
thuật toán sinh khóa an toàn.
Xây dựng thuật toán sinh khóa là an toàn nghĩa là đã loại những trường
hợp khóa yếu đã nêu ở trên.
Áp dụng sinh khóa theo pincodes và cải tiến thuật toán khi sinh khóa theo
pincodes.
Chương 1: Các khái niệm cơ bản
Tóm tắt:
Nêu các khái niệm về mã hóa, mã đối xứng.
Nêu các kiến thức lý thuyết số, các tính chất trên trường hữu hạn p]
Nêu định nghĩa modulo ma trận.
Chương 2: Hệ mã Hill/mã ma trận – Khảo sát không gian khóa của
Tóm tắt:
Tìm hiểu thuật toán xây dựng mã Hill.
Khảo sát không gian khóa của mã Hill, tìm hiểu khóa yếu.
Xác định không gian khóa tốt nhất.
Xác định các trường hợp khóa yếu để loại bỏ khi xây dựng thuật toán tìm
khóa an toàn cho mã Hill.
7
Chương 3: Xây dựng thuật giải sinh khóa cho mã Hill
Tóm tắt:
Định lý sinh khóa trên p] và xác định cơ sở xây dựng thuật toán sinh khóa
Xác định thuật giải sinh khóa an toàn
Khảo sát không gian khóa vừa sinh từ thuật giải (không gian khóa đủ
lớn?).
Chương 4: Các vấn đề liên quan đến mã Hill
Tóm tắt:
Sinh khóa dựa trên pincodes . Người A và người B dùng chung pincodes
để sinh ra khóa và áp dụng thuật toán mã Hill để trao đổi.
Nêu các vấn đề yếu của mã Hill.
Cải tiến thuật toán mã Hill.
Đối với chuỗi thông điệp có kích thước nhỏ hơn d×d – 1
Người A và người B trao có chung pincodes; khi sinh khóa, người A tạo ngẫu
nhiên chuỗi u; người A dùng pincodes kết hợp với chuỗi u tạo thành pincodes
mới và sinh khóa K dựa trên pincodes mới; áp dụng thuật toán mã Hill để mã
hóa thông điệp. Sau đó gửi cho B phần thông điệp đã mã hóa và chuỗi u. Người
B có pincodes và chuỗi u; kết hợp pincodes với chuỗi u để tính khóa K và K-1
sau đó áp dụng thuật toán Hill tính thông điệp.
Đối với chuỗi thông điệp có kích thước lớn hơn d×d – 1
Người A sẽ chia thông điệp thành k nhóm mỗi nhóm có kích thước d×d –
1(nhóm k có thể có kích thước nhỏ hơn d×d – 1). Người A lần lượt mã hóa từng
nhóm và gởi sang người B tương tự như trên(thông điệp có kích thước nhỏ hơn
d×d – 1) và người B giải mã và ghép từng nhóm lại thành thông điệp gốc.Tính
toán nhanh ma trận khả nghịch khi xây dựng bằng thuật toán trong chương 3.
8
CÁC KÝ HIỆU
≡ Modulo
M≡ Modulo ma trận
⎢ ⎥⎣ ⎦ Phần nguyên của một số
⎡ ⎤⎢ ⎥ Phần nguyên trên của một số
gcd(a,b) Ước số chung lớn nhất của a và b
In Ma trận đơn vị n × n
Zr×s Ma trận 0 có kích thước r × s
P Ma trận hoán vị (hoán vị các hàng trong ma trận đơn vị)
L Ma trận tam giác dưới
U Ma trận tam giác trên
GL (n,F) Không gian ma trận khả nghịch cấp n trên trường F
p] Trường p] với p là số nguyên tố
( ),M d F Không gian ma trận vuông trên trường F
9
Chương 1:
CÁC KHÁI NIỆM CƠ BẢN
1. Tổng quan
Ngày nay do thông tin ngày càng phát triển, việc bảo vệ thông tin khi
gởi và nhận càng trở nên quan trọng. Bên cạnh tính toàn vẹn thông tin và xác
thực các đối tác trong liên lạc và xác thực nội dung thông tin trong liên lạc, thì
việc xuất hiện nhiều công cụ cũng như nhiều thuật toán để giải quyết vấn đề
bảo mật thông tin cũng phong phú. Việc tìm hiểu và phát triển thuật toán Hill
cũng nhằm vào mục đích đó. Việc tìm hiểu về không gian khóa : phân phối, kích
thước khóa; và việc phát sinh một khóa sao cho tốt là vấn đề quan trọng và góp
phần làm hoàn thiện thuật toán mã hóa Hill.
2. Mật mã học (cryptography)
2.1 Mật mã học
Mật mã học - Cryptography (hay crypto)- là ngành khoa học ứng dụng
toán học vào việc biến đổi thông tin sang một dạng khác với mục đích che dấu
nội dung, ý nghĩa thông tin gốc. Đây là một ngành quan trọng và có nhiều ứng
dụng trong đời sống xã hội. Ngày nay, các ứng dụng mã hóa và bảo mật thông
tin đang được sử dụng ngày càng phổ biến hơn trong các lĩnh vực khác nhau trên
thế giới, từ các lĩnh vực an ninh, quân sự, quốc phòng…, cho đến các lĩnh vực dân
sự như thương mại điện tử, ngân hàng…[1]
10
Mật mã học nghiên cứu về việc giấu thông tin. Cụ thể hơn, mật mã
học là ngành học nghiên cứu về những cách chuyển đổi thông tin từ dạng "có
thể hiểu được sang dạng "không thể hiểu được" và ngược lại. Mật mã học giúp
đảm bảo những tính chất sau:
Tính bí mật (confidentiality): thông tin chỉ được tiết lộ cho
những ai được phép.
Tính toàn vẹn (integrity): thông tin không thể bị thay đổi mà
không bị phát hiện.
Tính xác thực (authentication): người gửi (hoặc người nhận) có
thể chứng minh đúng họ.
Tính không chối bỏ (non-repudiation): người gửi hoặc nhận sau
này không thể chối bỏ việc đã gửi hoặc nhận thông tin.
Encrypt (encipher): mã hóa – quá trình biến đổi thông tin từ
dạng ban đầu - có thể hiểu được sang dạng không thể hiểu được, với mục đích
giữ bí mật thông tin đó.
Decrypt (decipher): giải mã – quá trình ngược lại với mã hóa,
khôi phục lại thông tin ban đầu từ thông tin đã được mã hóa.
Plaintext (cleartext): dữ liệu gốc (chưa được mã hóa).
Ciphertext: dữ liệu đã được mã hóa.
2.2. Hệ thống mã hóa (Cryptosystem)
Định nghĩa 1: [Theo 1]
Hệ thống mã hóa (cryptosystem) là một bộ năm (P, C, K, E, D) thỏa
mãn các điều kiện sau:
1. Tập nguồn P là tập hữu hạn tất cả các mẩu tin nguồn cần mã hóa có
thể có.
11
2. Tập đích C là tập hữu hạn tất cả các mẩu tin có thể có sau khi mã
hóa.
3. Tập khóa K là tập hữu hạn các khóa có thể được sử dụng.
4. E và D lần lượt là tập luật mã hóa và giải mã. Với mỗi khóa k ∈ K
, tồn tại luật mã hóa ke E∈ và luật giải mã kd D∈ tương ứng. Luật mã hóa:
:ke P C→ và luật giải mã : :kd C P→ là hai ánh xạ thỏa mãn
( )( ) ,k kd e x x x P= ∀ ∈
2.3. Mã hóa đối xứng
Mã hóa đối xứng là quá trình mã hóa và giải mã một thông điệp sử
dụng cùng một mã khóa gọi là khóa bí mật (secret key) hay khóa đối xứng
(symmetric key). Do đó, vấn đề bảo mật thông tin đã mã hóa hoàn toàn phụ
thuộc vào việc giữ bí mật nội dung của khóa đã được sử dụng.[1]
3. Kiến thức lý thuyết số
3.1. Modulo
3.1.1. Định nghĩa:
(mod )a b m≡ có nghĩa là a – b là bội số của m
Hay a – b = k. m
3.1.2. Một số tính chất:
(mod )a a m≡
Nếu (mod )a b m≡ thì (mod )b a m≡
Nếu (mod )a b m≡ và (mod )b c m≡ thì (mod )a c m≡
Nếu (mod )a c m≡ và (mod )b d m≡ thì (mod )a b c d m+ ≡ +
Nếu (mod )a c m≡ và (mod )b d m≡ thì (mod )a b c d m× ≡ ×
12
3.1.3. Định lý Fermat nhỏ [Theo 4]
Với p là số nguyên tố dương, với mọi số nguyên a không là bội của
p thì ta luôn có ( )1 1 modpa p− ≡ .
Vì p là số nguyên tố và a không là bội của p ; thì tương đương
( ) ( )11 mod 1 mod−≡ ⇔ ≡pa p a p
3.2. ]m
3.2.1. Định nghĩa:
]m được định nghĩa là tập hợp { }0;1; ; 1m −… , được trang bị phép
cộng (ký hiệu +) và phép nhân (ký hiệu là ×). Phép cộng và phép nhân trong
m] được thực hiện tương tự như trong ] , ngoại trừ kết quả tính theo modulo m.
3.2.2. Phép toán trên m]
Phép + :
, ma b∈] , ma b+ ∈] , mod a b m+
Phép × :
, ma b∈] , ma b× ∈] , mod a b m×
3.2.3. Các tính chất của m]
1. Cho mọi , ma b∈] thì ma b+ ∈]
2. Cho mọi , , ma b c∈] , ( ) ( )a b c a b c+ + = + +
3. Cho mọi , , ma b c∈] , a b b a+ = +
4. Với mọi ma∈] , 0 0a a a+ = + =
5. Với mọi ma∈] , tồn tại duy nhất x sao cho 0a x x a+ = + =
6. Cho mọi , ma b∈] thì ma b× ∈]
7. Cho mọi , , ma b c∈] , ( ) ( )a b c a b c× × = × ×
13
8. Cho mọi , ma b∈] , . .a b b a=
9. Với mọi ma∈] , .1 1.a a a= =
10. Cho mọi , , ma b c∈] , ( )a b c a b a c× + = × + ×
11. Trong m] thì 1 0≠
12. Nếu m] mà thỏa tính chất này thì m] sẽ là một trường. Với
mọi ma∈] , tồn tại duy nhất x sao cho 1a x x a× = × =
3.2.4. Định lý m] là trường khi m là số nguyên tố:
m] là trường khi và chỉ khi m là số nguyên tố.
Chứng minh :
Với mọi ma∈] , do m là số nguyên tố nên ( )gcd , 1a m = (gcd(a,m) :
ước chung lớn nhất của a và m)
Do đó tồn tại , mu v∈] sao cho :
1a u m v× + × =
Lấy modulo m hai vế ta được :
1a u u a× = × =
Thỏa tính chất 12 nên m] là trường khi và chỉ khi m là số nguyên tố.
Mở rộng :
Trên trường p] với p là số nguyên tố
Với ( )1, 0, 1 modppa a a p−∀ ∈ ≠ ≡]
4. Modulo ma trận [Theo 6]
4.1. Định nghĩa
Cho ma trận A, B ∈ ( )rxsM ] ; ta định nghĩa (mod )
M
A B m≡ nghĩa là
các phần tử (mod )ij ija b m≡
14
Ví dụ: m = 7
2 3
4 5
⎛ ⎞= ⎜ ⎟⎝ ⎠A
9 10
25 12
⎛ ⎞= ⎜ ⎟⎝ ⎠B
Thì (mod 7)≡MA B
4.2. Tính chất
1. Nếu (mod )
M
A B m≡ và (mod )MC D m≡ thì (mod )MA C B D m± ≡ ±
2. Nếu (mod )
M
A B m≡ và (mod )MC D m≡ thì (mod )MA C B D m× ≡ ×
3. Nếu (mod )
M
A B m≡ và (mod )mα β≡ thì (mod )MA B mα β× ≡ ×
4. Nếu A, B là những ma trận vuông thì (mod )
M
A B m≡ thì
det det (mod )A B m≡
Chứng minh
(1) ta có : A C± nghĩa là ( )ij ija c± ; B D± nghĩa là ( )ij ijb d±
Mà ta có (mod ) (mod )
M
ij ijA B m a b m≡ ⇔ ≡
(mod ) (mod )
M
ij ijC D m c d m≡ ⇔ ≡
Theo tính chất ta co:ù (mod )ij ij ij ija c b d m± ≡ ±
Theo định nghĩa thì (mod )
M
A C B D m± ≡ ±
(2);(3) áp dụng tính chất modulo chứng minh tương tự (1)
(4) ( )mod mMA B≡ nghĩa là mod = mod ij ija m b m
Ta có: ( ) 1 21 2det s
d
s
S
A sign a a aσ σ σ
σ
σ
∈
= ∑ …
15
( )
( )( )
( )( )( ) ( )( )
1 2
1 2
1 2
1 2
1 2
1 2
det mod mod
= mod mod
= mod mod mod mod mod
s
d
s
d
s
d
s
S
s
S
s
S
A m sign a a a m
sign a a a m m
sign a m a m a m m m
σ σ σ
σ
σ σ σ
σ
σ σ σ
σ
σ
σ
σ
∈
∈
∈
⎛ ⎞= ⎜ ⎟⎜ ⎟⎝ ⎠
⎛ ⎞⎜ ⎟⎜ ⎟⎝ ⎠
⎛ ⎞⎜ ⎟⎜ ⎟⎝ ⎠
∑
∑
∑
…
…
…
( )( )( ) ( )( )
( )( )
( )
1 2
1 2
1 2
1 2
1 2
1 2
= mod mod mod mod mod
= mod mod
= mod
s
d
s
d
s
d
s
S
s
S
s
S
sign b m b m b m m m
sign b b b m m
sign b b b m
σ σ σ
σ
σ σ σ
σ
σ σ σ
σ
σ
σ
σ
∈
∈
∈
⎛ ⎞⎜ ⎟⎜ ⎟⎝ ⎠
⎛ ⎞⎜ ⎟⎜ ⎟⎝ ⎠
⎛ ⎞⎜ ⎟⎜ ⎟⎝ ⎠
∑
∑
∑
…
…
…
= det mod B m
16
Chương 2:
MÃ MA TRẬN/MÃ HILL–KHẢO SÁT KHÔNG GIAN KHÓA
Plaintext: thông điệp cho trước.
Key: khóa bí mật gồm các biến đổi có ý nghĩa đặc biệt.
Inverse key: phép biến đổi toán theo thứ tự ngược để tìm lại plaintext gốc.
Ciphertext: dùng key biến đổi plaintext và một số ký tự khác thành những ký tự
mới
1. Mã thay thế (Substitution ciphers)
1.1. Định nghĩa [10]
Mã thay thế đơn giản là việc sắp xếp lại những ký tự của của plaintext
đã cho. Với mã thay thế những ký tự thay thế trong plaintext được thay bằng ký
tự khác.
1.2. Ví dụ:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
F T G S M O N A Y P V Q C D Z R W L E X H B K I U J
Bảng mã thay thế với quy tắc như trong bảng
Ta cần mã thông điệp: “BUI QUANG THANH”
Ciphertext sẽ là : “THY WHFDN XAFDA”
Khi nhận được ciphertext và dùng bảng mã thay thế để giải mã trở lại tìm
ra thông điệp.
17
Tuy nhiên, ở mã thay thế có vấn đề là phép thay thế luôn cố định do đó
nếu có đủ các chữ cái và bằng phương pháp thống kê thì người ta có thể đoán
được bảng mã thay thế và tìm ra khóa, tức là tìm ra bảng quy tắc thay thế như
trên.
2. Mã ma trận (Matrix cipher)
Để giải quyết vấn đề của mã thay thế thì chúng ta sẽ dùng mã ma trận.
Thông điệp của chúng ta sẽ được chuyển thành dạng ma trận. Với mã ma trận
thì thông điệp sẽ được biểu diễn dưới dạng ma trận và khóa ở đây sẽ là ma trận
vuông khả nghịch. Và việc mã hóa thông điệp được thực hiện như sau:
C = K × M (2.1)
Và việc giải mã ta thực hiện
M = 1K − × C (2.2)
Ma trận khóa K có kích thước d×d khả nghịch trên m] thì ma trận M
(plaintext) sẽ có kích thước là d×m; và ma trận C (cipher) sẽ có kích thước d×m.
Với hai ma trận vuông bậc d, K≠ K1 trong ( ), mM d ] ; thì không tồn tại
1 1
1K K
− −= trong ( ), mM d ]
Chứng minh không tồn tại K1 sao cho K≠ K1 trong ( ), mM d ] và 1 11K K− −= trong
( ), mM d ] .
Do K≠ K1 trong ( ), mM d ] ⇔ K≠ K1 trong ( ),M d \ ⇔ 1 11K K− −≠ trong ( ),M d \
Nếu 1 11K K
− −≠ trong ( ),M d \ mà
18
( ) ( )
( )
( )
1 1 1 1
1 1
1
1
1
1 1 1
1
mod m mod m
mod m
mod m
M M
M
d
M
d
M
K K K K K K
I K K
I K K K K
K K
− − − −
−
−
≡ ⇔ × ≡ ×
⇔ ≡ ×
⇔ × ≡ × ×
⇔ ≡ ( ) mod m
Suy ra vô lý vì K≠ K1 trong ( ), mM d ]
3. Mã Hill (Hill cipher) [Theo 10]
3.1. Bảng chữ cái (Alphabet)
Bảng chữ cái của tiếng Anh gồm cĩ 26 ký tự viết hoa. Khi chúng ta mã
hĩa hay giải mã, chúng ta sẽ đại diện bằng những con số từ 0…25. Và các chữ cái
được thể hiện như bảng sau:
A B C D E F G H I J K L M
0 1 2 3 4 5 6 7 8 9 10 11 12
N O P Q R S T U V W X Y Z
13 14 15 16 17 18 19 20 21 22 23 24 25
Khi sử dụng Hill cipher thì chiều dài của Alphabet có thể là số nguyên
bất kỳ m >1.
Trong bảng chữ cái bắt đầu bằng số 0, và đôi khi để phá mã Hill khó
hơn thì những chữ cái ánh xạ thành những số bất kỳ trong khoảng từ 0 đến 25;
chứ không nhất thiết phải theo thứ tự như bảng trên.
19
3.2. Hill – 2 cipher
Ở đây là ví dụ về Hill – 2 cipher, ma trận khóa của ta là ma trận vuông
2 chiều khả nghịch. Thông điệp ta cần mã hóa phải sử dụng bảng Alphabet ở
trên.
Tuy nhiên thông điệp của ta cần mã hóa không nhất thiết phải chẵn
theo chiều ma trận 2 × m; ta thêm vào ba ký tự đặc biệt . ; ? ; ∪ (khoảng trắng)
tương ứng là 26; 27; 28; nếu thông điệp không đủ chẵn theo 2× m thì ta thêm các
khoảng trắng vào cuối thông điệp để đủ 2 × m. Lúc này ta sẽ có 29 ký tự và xét
trên trường 29] lúc này bảng mới là:
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
Ví dụ : ma trận khóa K là :
2 3
4 5
K ⎛ ⎞= ⎜ ⎟⎝ ⎠
Ta cần mã thông điệp: “BE” sẽ được biểu diễn dưới dạng ma trận như
sau:
1
4
M ⎛ ⎞= ⎜ ⎟⎝ ⎠
Để mã hóa “BE” ta tính tích ma trận khóa và ma trận thông điệp
C K M= ×
2 3 1 14
4 5 4 24
⎛ ⎞ ⎛ ⎞ ⎛ ⎞= × = × =⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠C K M
20
Cuối cùng thì ta xem trong bảng Alphabet thì 14 tương ứng với O và 24
tương ứng với Y. Vậy sau khi mã hóa ta được là “ OY ”. Ta có tương ứng việc B
được mã hóa thành O và E được mã hóa thành Y.
Nhưng ta xét ví dụ khác mã hóa “BC”. Ta làm tương tự như trên “BC”
sẽ được biểu diễn dưới dạng ma trận như sau: /
1
2
M ⎛ ⎞= ⎜ ⎟⎝ ⎠
Để mã hóa “BC” ta tính tích ma trận khóa và ma trận thông điệp
/ /C K M= ×
' / 2 3 1 8
4 5 2 14
C K M ⎛ ⎞⎛ ⎞ ⎛ ⎞= × = =⎜ ⎟⎜ ⎟ ⎜ ⎟⎝ ⎠⎝ ⎠ ⎝ ⎠
Cuối cùng thì ta xem trong bảng Alphabet thì 8 tương ứng với I và 14
tương ứng với O. Vậy sau khi mã hóa “BC” ta được là “ IO ”. Ta có tương ứng
việc B được mã hóa thành O và M được mã hóa thành Y.
Bây giờ ta xét mã hóa thông điệp “QUANG∪THANH”. Thông điệp
này sẽ viết dưới dạng ma trận như sau; ta sẽ chia các chữ cái thành các nhóm
như sau tương ứng với kích thước 2x2 của khóa:
(QU);(AN);(G ∪)(TH);(AN) do chỉ còn lại H không đủ phần tử để tạo
nhóm ta thêm ký tự ∪ vào sau thông điệp . Như vậy: nhóm (H ∪)
Ma trận M được viết là
16 0 6 19 0 7
20 13 28 7 13 28
M ⎛ ⎞= ⎜ ⎟⎝ ⎠
Để mã hóa thì ta tính tích K M×
2 3 16 0 6 19 0 7 92 39 96 59 39 98
4 5 20 13 28 7 13 28 164 65 164 111 65 168
C K M ⎛ ⎞ ⎛ ⎞ ⎛ ⎞= × = × =⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠
Ở đây có một số tính ra có giá trị lớn hơn 29, khi muốn tìm tương ứng
các chữ cái thì ta thực hiện phép chia lấy phần dư (modulo) cho 29(29 ở đây là
chiều dài của bảng Alphabet.). Như vậy:
21
92 39 96 59 39 98 5 10 9 1 10 11
mod 29
164 65 164 111 65 168 19 7 19 24 7 23
C ⎛ ⎞ ⎛ ⎞= =⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠
Để tìm ciphertext thì ta viết ma trận ta vừa tính được như sau:
(5 19 10 7 9 19 1 24 10 7 11 23)
Như vậy mã hóa thông điệp “QUANG∪THANH∪” thì ta thu dược
cipher text là “FTKHJTBYKHLX”
Việc giả mã thì ta tính ma trận khả nghịch của K theo mod 29.
1−= ×M K C
3.3. Thuật toán: Mã hóa với Hill cipher
Chúng ta giả sử chiều dài của Alphabet là m > 1. Hill – d cipher, khóa
sẽ là ma trận vuông K bậc d với các phần tử trong m] . Thuật toán mã hóa Hill
dùng để mã hóa plaintext cho trước được thực hiện qua các bước sau :
Mã hóa
1. Người gởi tách plaintext ra thành k nhóm mỗi nhóm là một
vectơ có d ký tự(tương ứng với bậc của khóa) và việc tách này được thực hiện từ
trái qua phải. Nếu nhóm cuối không đủ d ký tự thì ta sẽ điền thêm ký tự cuối của
plaintext cho đến khi nhóm cuối có đủ d ký tự hoặc ta điền vào các ký tự đặc
biệt như khoảng trắng. Chuyển các vectơ này thành vectơ cột.
2. Thay thế các ký tự tương ứng thành các chữ số từ 0 đến m – 1
theo bảng Alphabet mà ta đã định nghĩa.
3. Viết k vectơ cột thành ma trận; có số dòng là d và thực hiện
phép nhân ma trận khóa K với ma trận M vừa tạo theo modulo m.
C = K × M (modulo m) (2.3)
4. Sau khi được tích của hai ma trận thì ta sẽ thu được ma trận C.
Từ ma trận C ta sẽ viết lại thành k nhóm, mỗi nhóm gồm có d phần tử(số phần tử
22
của một cột ma trận). Sau đó ta sẽ tương ứng các số trong nhóm thành các ký tự
và kết quả là ta sẽ tìm được ciphertext.
Giải mã:
1. Khi nhận được ciphertext thì người nhận cũng sẽ tách ciphertext
thành k nhóm với mỗi nhóm có d ký tự.
2. Thay thế các ký tự tương ứng thành các chữ số từ 0 đến m – 1
theo bảng Alphabet mà ta định nghĩa.
3. Viết k nhóm thành ma trận có số dòng là d và thực hiện phép
nhân với K-1 và tích này tính theo modulo m.
M= K-1 × C(modulo m) (2.4)
4. Sau khi có M thì ta viết lại thành k nhóm, mỗi nhóm có d phần
tử(một cột của ma trận). Sau đó ta sẽ tương ứng các số trong nhóm thành các ký
tự và kết quả là ta sẽ tìm được plaintext; có thể lược bỏ một số ký tự thêm vào
như khoảng trắng.
Ví dụ :
Với Alphabet (của tiếng Anh ) gồm 26 ký tự ta sẽ thêm ba ký tự đặt
biệt vào gồm có “. , ? , ∪(khoảng trắng) ”
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
Ta cần mã hóa thông điệp WANT ∪HELP.
Plaintext là: WANT ∪HELP.
23
17 5 20
23 9 3
11 2 12
K
⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠
1. Ta viết plain text của ta thành từng nhóm có chiều dài là 3. Trong
trường hợp chiều dài của nhóm cuối không đủ 3 thì ta thêm ký tự khoảng trắng
vào sao cho nhóm có chiều dài là 3.
WAN T∪H ELP . ∪∪
2. Ta thay thế các ký tự thành số theo quy tắc của bảng trên
22 0 13 19 28 7 4 11 15 26 28 28
Ta viết plaintext dưới dạng ma trận
22 19 4 26
0 28 11 28
13 7 15 28
M
⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠
3. Ta tính ciphertext và bắt đầu gởi đi
( )
17 5 20 22 19 4 26 25 13 11 1
23 9 3 0 28 11 28 23 14 4 6 mod 29
11 2 12 13 7 15 28 21 1 14 11
C K M
⎛ ⎞ ⎛ ⎞ ⎛ ⎞⎜ ⎟ ⎜ ⎟ ⎜ ⎟= × = × =⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠
4. Ta viết lại dưới dạng vectơ dòng
25 23 21 13 14 1 11 4 14 1 6 11
Dựa vào bảng chữ cái ánh xạ thành số ta được
ZXVNOBLEOBGL
Như vậy plaintext sau khi được mã hóa thu được như sau
ZXVNOBLEOBGL
Để giải mã thì ta thực hiện như sau; ta lấy 1K C− ×
24
Ta có : 1
16 27 27
25 10 9
15 5 27
K −
⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠
1
16 27 27 25 13 11 11 22 19 4 26
25 10 9 23 14 4 6 0 28 11 28
15 5 27 21 1 14 11 13 7 15 28
M K C−
⎛ ⎞ ⎛ ⎞ ⎛ ⎞⎜ ⎟ ⎜ ⎟ ⎜ ⎟= × = × =⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠
Ta tính được ma trận M và tìm được plaintext đã gởi.
4. Không gian khóa
4.1. Định nghĩa không gian khóa
Tập hợp tất cả các ma trận vuông cấp d khả nghịch trên m] với m là
giá trị xác định trước.
Ta ký hiệu là GL(d, m] )
Không gian khóa là tập hợp số ma trận vuông khả nghịch trên m] trừ
đi số ma trận khả nghịch nhưng là khóa yếu (ký hiệu là W). Ta ký hiệu tổng số
ma trận trong không gian khóa là: S(d,m)
( )S , ( , )d m GL d m W= −
4.2. Khái niệm khóa yếu
Xét trên m]
• Một khóa K gọi là khóa yếu nếu K2 = Id ; ta gọi là ma trận đối hợp
(Involutary matrix)
• d dK × là khóa yếu nếu tồn tại véctơ v (d×1) sao cho K v v× =
Ta xét các trường hợp khóa yếu:
(i) Nếu K là ma trận đối hợp thì khi ta mã hóa plaintext thì thu được
ciphertext, sau đó mã hóa ciphertext thì thu được plaintext.
C = K × M
25
C/ = K × C = K × K × M = M
Ví dụ:
Ta xét trên 7] :
Khóa
2 2
2 5
K ⎛ ⎞= ⎜ ⎟⎝ ⎠ ; Ta sẽ mã hóa thông điệp
1 2 3
4 5 6
M ⎛ ⎞= ⎜ ⎟⎝ ⎠
Áp dụng Hill cipher
2 2 1 2 3 3 0 4
2 5 4 5 6 1 1 1
C K M ⎛ ⎞⎛ ⎞ ⎛ ⎞= × = =⎜ ⎟⎜ ⎟ ⎜ ⎟⎝ ⎠⎝ ⎠ ⎝ ⎠
Khi ta thu được C thì ta sẽ dùng C để mã hóa lần nữa ta sẽ thu được M
/ 2 2 3 0 4 1 2 3
2 5 1 1 1 4 5 6
C K C M⎛ ⎞ ⎛ ⎞ ⎛ ⎞= × = × = =⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠
(ii) Nếu ma trận K là khóa yếu như trong trường hợp hai ( K v v× = )ta
sẽ có trường hợp:
( )1 dM v v= … sao cho i iK v v× = thì C = K × M = M thì lúc này ta thu
được C (ciphertext) cũng chính là M(Message).
Ví dụ:
Ta xét trên 7] :
Khóa
3 1
3 6
K ⎛ ⎞= ⎜ ⎟⎝ ⎠ ; K là khóa yếu vì tồn tại 5
a
v
a
⎛ ⎞= ⎜ ⎟⎝ ⎠ với 7a∈] thì
K v v× =
Nếu ta mã hóa
1 2 3
5 3 1
M ⎛ ⎞= ⎜ ⎟⎝ ⎠ thì
3 1 1 2 3 1 2 3
3 6 5 3 1 5 3 1
C K M M⎛ ⎞ ⎛ ⎞ ⎛ ⎞= × = × = =⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠
5. Khảo sát không gian khóa
Ta xét khóa K là ma trận vuông có kích thước d×d trên trường m]
Gọi ( , )mGL d ] là tập hợp các ma trận vuông d×d khả nghịch trên m]
26
Đặt ( , )mGL d ] là số ma trận khả nghịch bậc d trên m]
5.1. Xét không gian khóa trên trường p] (p nguyên tố)
Gọi ( , )pGL d ] là tập hợp các ma trận vuông dxd khả nghịch trên p] với
p là số nguyên tố.
Định lý 1: [7, phần 2.1]
( )1
0
( , )
d
d i
p
i
GL d p p
−
=
= −∏] (2.5)
Chứng minh:
Dòng đầu tiên thì ta có 1dp − cách chọn (ta có d phần tử, mỗi phần tử
có p cách chọn; trừ đi 1 là trừ đi trường hợp tất cả các phần tử bằng 0)
Ta chọn được hàng 1; hàng thứ hai có dp p− cách chọn sao cho khi
thêm hàng thứ hai vào thì hàng 1 và hàng 2 vẫn còn độc lập tuyến tính.
Giả sử ta có i hàng độc lập tuyến tính thì số cách chọn khi thêm hàng
i+1 vào là d ip p−
Tương tự khi ta thêm hàng thứ d vào thì có 1d dp p −− cách chọn do đã có
d – 1 hàng độc lập tuyến tính
( )11
0
( , ) ( 1)( ) ( )
d
d d d d d i
p
i
GL d p p p p p p p
−−
=
= − − − = −∏] …
5.2. Xét không gian khóa với đặc số nguyên tố p ( nm p= )
Bổ đề 1: [7, phần 2.2]
Cho ma trận A vuông d×d; Đặt A = B + p × C với ( )ijB b= - phần dư
của phép chia ( )ija và p; ( )ijC c= - phần thương của phép chia ( )ija và p
Với ma trận B vuông d×d với các phần tử là các số dư trong phép
chia trên và ma trận C vuông d×d với các phần tử là thương trong phép chia trên.
27
A khả nghịch mod np khi và chỉ khi B khả nghịch mod p
Chứng minh
Ta có:
Các phần tử của B là { }0;1; ; 1p−…
Các phần tử của C là { }0;1; ; 1np −…
Ta có: (mod ) det det (mod )
M
A B p A B p≡ ⇒ ≡ do đó gcd(detA,p) =
gcd(detB,p)
A khả nghịch mod np thì gcd(detA, np ) = 1 ⇒ gcd(detA,p)=1 vậy gcd
(detB,p)=1. B khả nghịch mod p
B khả nghịch mod p thì gcd (detB, p)=1 ⇒ gcd(detA,p)=1 thì gcd(detA,
np ) = 1. A khả nghịch mod np
Định lý 2: (Theo [7])
( )2 1( 1)
0
( , )n
d
n d d i
p
i
GL d p p p
−−
=
= −∏] (2.6)
Chứng minh
Áp dụng: A = B + pC
Số ma trận B là ( )1
0
d
d i
i
p p
−
=
−∏ và số ma trận C là 2( 1)n dp −
Suy ra được ( )2 1( 1)
0
( , )n
d
n d d i
p
i
GL d p p p
−
−
=
= −∏]
28
5.3. Xét không gian khóa trên m] ,
0
i
z
n
i
i
m p
=
=∏ , ip là nguyên tố
Định nghĩa:
1: ( ) ( )
( ) ( ) với ( ) mod
ni
i
i
z
dxd m i dxd p
n
i i i
M M
A A A A p
φ
φ φ φ
=→⊕
= ⊕ =
] ]
(2.7)
(φ là phép thặng dư Trung Hoa; ( ) ( )11mod , , mod , , mod i znn ni zA A p A p A pφ → … … )
Bổ đề 2: [7, phần 2.3]
φ là đẳng cấu vành.
Chứng minh
φ là đẳng cấu vành; ta chứng minh φ bảo toàn phép toán + và .
Cho A, B là hai ma trận vuông d×d
Ta có: ( ) ( )11mod , , mod , , mod i znn ni zA A p A p A pφ = … …
( ) ( )11mod , , mod , , mod i znn ni zB B p B p B pφ = … …
( ) ( ) ( )
( )
( )
1
1
1
1
1
1
mod , , mod , , mod
mod , , mod , , mod
= mod , , mod , , mod
=
i z
i z
i z
nn n
i z
nn n
i z
nn n
i z
A B A p A p A p
B p B p B p
A B p A B p A B p
φ φ+ = +
+ + +
… …
… …
… …
( )A Bφ +
( ) ( ) ( )
( )
( )
( )
1
1
1
1
1
1
. mod , , mod , , mod .
mod , , mod , , mod
= . mod , , . mod , , . mod
= .
i z
i z
i z
nn n
i z
nn n
i z
nn n
i z
A B A p A p A p
B p B p B p
A B p A B p A B p
A B
φ φ
φ
= … …
… …
… …
29
Bổ đề 3:
Nếu ma trận A khả nghịch mod m nếu và chỉ nếu ( )Aφ khả nghịch
Chứng minh:
Nếu A khả nghịch mod m thì ( ) ( )1 1( ) ( )A A AA Iφ φ φ φ− −= = . Do φ là
đẳng cấu vành nên ( )Aφ khả nghịch
Nếu ( )Aφ khả nghịch thì tồn tại B sao cho ( ) ( ) ( ) ( )A B AB Iφ φ φ φ= =
Vậy ta có A×B = I do đó A khả nghịch.
Định lý 3: [7, 2.3.3]
Số lượng ma trận vuông d×d trên ]m là (với 1 21 2 knn n km p p p= … )
( ) ( )2 11
0
( , ) i
k d
n d d j
m i i i
i j
GL d p p p
−−
=
⎛ ⎞= −⎜ ⎟⎝ ⎠∏ ∏] (2.8)
Chứng minh:
Gọi A là ma trận vuơng khả nghịch trên m] ; thì ( )Aφ khả nghịch.
Do φ là một đẳng cấu vành nên số lượng ma trận vuơng khả nghịch trên
m] sẽ bằng với số lượng các vectơ của φ . Ta cĩ:
( ) ( )11 mod , , mod , , mod zi nnn i zA A p A p A pφ → … …
Áp dụng định lý 2 thì từng thành phần mod iniA p có
( )2 1( 1)
0
i
d
n d d j
i i
j
p p p
−−
=
−∏
Vậy số vectơ của φ là: ( ) ( )2 11
0
i
k d
n d d j
i i i
i j
p p p
−−
=
⎛ ⎞−⎜ ⎟⎝ ⎠∏ ∏
Ta có: ( ) ( )2 11
0
( , ) i
k d
n d d j
m i i i
i j
GL d p p p
−−
=
⎛ ⎞= −⎜ ⎟⎝ ⎠∏ ∏]
30
5.4. Không gian tốt nhất của Alphabet
Định nghĩa
Đặt tỷ số giữa tổng các ma trận vuông cấp d > 0 khả nghịch với tổng
các ma trận vuông trên ]m , với m ≥ 2 là:
( , )
( , )
( )
m
d d m
GL d
f d m
M ×
= ]] (2.9)
Ý nghĩa của f(d,m) sẽ cho ta con số đánh giá để chọn ra kích thước
khóa và không gian Alphbet.
Nếu ( ) ( )/ /, ,f d m f d m> thì ta nên chọn d, m tương ứng với d là kích
thước khóa và m là lượng trong Alphabet.
Bổ đề 4:[7, bổ đề 4.3]
Nếu d là số nguyên dương và p là số nguyên tố thì
( )
2
1
0
1 1
0 0 1
( , )
( , )
( )
1 = 1 1
d
d i
p i
d
d d p
d i id d d
d d j
i i j
p pGL d
f d p
M p
p p p
p p p
−
=
×
− −
= = =
−
= =
⎛ ⎞ ⎛ ⎞ ⎛ ⎞− = − = −⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠⎝ ⎠ ⎝ ⎠
∏
∏ ∏ ∏
]
]
(2.10)
Định lý 4:[7, định lý 4.4]
Nếu d là số nguyên dương và m là số nguyên dương bất kỳ,
0
i
k
n
i
i
m p
=
=∏ thì :
( )
1 1
1, 1
k d
j
i j i
f d m
p= =
⎛ ⎞= −⎜ ⎟⎜ ⎟⎝ ⎠∏∏ (2.11)
31
( )
( )
( )
2
2
2 2
2
2 2
2
1
( 1)
1 0
1
1 0
1
1
0
1
( , )
( , )
( )
=
=
i
i
i
i
i
i
k d
n d d l
i i i
i lm
k
n dd d m
i
i
k d
n d d d l
i i i i
i l
k
n d
i
i
d
n d d d l
k i i i i
l
n d
i i
p p p
GL d
f d m
M p
p p p p
p
p p p p
p
−−
= =
×
−−
= =
=
−−
=
=
⎛ ⎞−⎜ ⎟⎝ ⎠= =
⎛ ⎞−⎜ ⎟⎝ ⎠
⎛ ⎞−⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠
∏ ∏
∏
∏ ∏
∏
∏∏
]
]
( )
2
1
0
1 1 1
1 = 1
d
d l
k k di i
l
jd
i i j ii
p p
pp
−
=
= = =
⎛ ⎞−⎜ ⎟ ⎛ ⎞⎜ ⎟ = −⎜ ⎟⎜ ⎟⎜ ⎟ ⎝ ⎠⎜ ⎟⎝ ⎠
∏∏ ∏∏
(2.12)
Nhận xét :
Từ (2.12) ta thấy f(d,m) không phụ thuộc vào số mũ của thừa số
nguyên tố trong phân tích thừa số nguyên tố của m (tức không phụ thuộc vào in )
Định lý 5:[7, định lý 4.6]
Cho d là nguyên dương và p là số nguyên tố thì
lim ( , ) 1
p
f d p→∞ = (2.13)
Chứng minh:
Áp dụng bổ đề 4:
1
1lim ( , ) lim 1 lim1 1→∞ →∞ →∞=
⎛ ⎞= − = =⎜ ⎟⎝ ⎠∏
d
jp p pj
f d p
p
32
Ta xét Hàm Zeta Riemann như sau:
1
1 1 1 1( )
1 2 3s s s sk
s
k
ζ ∞
=
= = + + +∑ …
(2.14)
Với ( )1ζ = ∞ (2.15)
Công thức tích Euler: (2.16)
1
1 1( ) 11
s
k p prime
s
s
k
p
ζ ∞
= −
= =
−
∑ ∏
1 1 1 1 1
1 1 2 1 3 1 5 1s s s s sp prime p p− − − − −
=− − − − −∏ " "
( )
1
1 1 11
1s sp pp p sζ
−∞ ∞
−
⎛ ⎞⎛ ⎞− = =⎜ ⎟⎜ ⎟ −⎝ ⎠ ⎝ ⎠∏ ∏
Áp dụng hàm Zeta Riemann và công thức Euler ta sẽ chứng minh
lim ( , ) 0
k
f d m
→∞
=
Định lý 6:[7, định lý 4.7]
Cho d là số nguyên dương và m là số nguyên dương với 11 k
nn
km p p= …
thì lim ( , ) 0
k
f d m
→∞
=
Chứng minh:
Từ định lý 4; (2.12) và ta xét 11= … knn km p p ; với k là số các số nguyên
tố trong phân tích thừa số nguyên tố của m; ta có:
1 1
1 1
1lim ( , ) lim 1
1 = lim 1
k d
jk k
i j i
d k
jk
j i i
f d m
p
p
→∞ →∞ = =
→∞ = =
⎛ ⎞= −⎜ ⎟⎜ ⎟⎝ ⎠
⎛ ⎞−⎜ ⎟⎜ ⎟⎝ ⎠
∏∏
∏∏
(2.17)
33
Ta có:
1
1 1lim 1
( )
k
jk i ip jζ→∞ =
⎛ ⎞− =⎜ ⎟⎝ ⎠∏ (từ công thức tích Euler)
Do đó:
1 1 1 1
1 2
1 1lim ( , ) lim 1 lim 1
1 1 1 =
( ) (1) ( )
d k d k
j jk k k
j i j ii i
d d
j j
f d m
p p
j jζ ζ ζ
→∞ →∞ →∞= = = =
= =
⎛ ⎞ ⎛ ⎞= − = −⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠
=
∏∏ ∏ ∏
∏ ∏
(2.18)
Theo (2.18) ta có (1)ζ = ∞ do đó
1 1
1lim 1 0
d k
jk
j i ip→∞ = =
⎛ ⎞− =⎜ ⎟⎜ ⎟⎝ ⎠∏∏
Vậy lim ( , ) 0
k
f d m
→∞
= nghĩa là k càng lớn thì số ma trận khả nghịch gần
bằng 0.
Ta xét các trường hợp sau:
Xét f(10,n) với n là các giá trị trong khoảng 2 đến 29.
Hình 2.1
34
Trong hình 2.1; với dấu . thì ta biểu diễn n là số nguyên tố trong khoảng
từ 2 đến 29 và dấu + là các trường hợp còn lại trong khoảng từ 2 đến 29.
Quan sát hình 2.1, ta thấy các trường hợp số nguyên tố thì f(10,p)luôn lớn
hơn các trường hợp còn lại.
Xét f(10,n) với n là các giá trị trong khoảng 29 đến 100
Hình 2.2
Với dấu . cho trường hợp f(10,29) và f(10,n) với n là các hợp số trong
khoảng từ 30 đến 100.
Quan sát hình 2.2 ta thấy f(10,n) và f(10,29) ta thấy f(10,29) luôn nằm trên
f(10,n).
Vậy khi chọn không gian cho Alphabet thì ta không cần chọn m quá lớn;
và ta nên chọn là số nguyên tố.
35
Kết luận:
- Không gian bảng chữ cái không cần phải lớn.
- Bảng chữ cái nên có số lượng là một số nguyên tố.
- Ta chỉ khảo sát và sinh khóa trên trường p] với p là số nguyên tố.
6. Xét các trường hợp khóa yếu
6.1. Ma trận đối hợp (Involutory matrix)
6.1.1. Xây dựng ma trận đối hợp
6.1.1.1. Ma trận đối hợp trên trường ; 2p p >]
Gọi H là ma trận đối hợp n × n trên trường p] , nghĩa là 2 nH I= nên H có
thể là:
1. nI
2. nI−
3. r r s
s r s
I Z
J
Z I
×
×
⎛ ⎞= ⎜ ⎟−⎝ ⎠
Với ,0r s n s n+ = < <
Định lý 7: (Theo [9])
Điều kiện cần và đủ để ma trận vuông H với kích thước n × n, trên
trường ; 2>] p p với 0 < s < n, thì 2 2nH I Q P= − × là ma trận đối hợp với 2Q là
ma trận n × s và 2P là ma trận s × n sao cho 2 2 2 sP Q I× = × (với s < n và hạng của
2P bằng s thì luơn tồn tại 2Q sao cho 2 2 2 sP Q I× = × ).Tương tự cho 1 1 nH Q P I= × −
với 1Q là ma trận n × r và 1P là ma trận r × n sao cho 1 1 2 rP Q I× = × và r + s = n
(với r < n và hạng của 1P bằng r thì luôn tồn tại 1 1 2 rP Q I× = × )
36
Chứng minh
Điều kiện cần.
Ta đặt 1H Q J Q−= × × ; với Q là ma trận khả nghịch bất kỳ trên p]
Ta đặt ( )/ /1 2Q Q Q= ; với /2Q là ma trận có kích thước n s×
Và đặt 11
2
P
Q
P
− ⎛ ⎞= ⎜ ⎟⎝ ⎠
; với 2P là ma trận có kích thước s n×
( ) 11 / / / /1 2 1 1 2 2
2
n
P
Q Q Q Q Q P Q P I
P
− ⎛ ⎞× = × = × + × =⎜ ⎟⎝ ⎠
(2.19)
( ) / /11 / / 1 1 1 21 2 / /
2 2 1 2 2
r r s
s r s
I ZP P Q P Q
Q Q Q Q
Z IP P Q P Q
×−
×
⎛ ⎞× × ⎛ ⎞⎛ ⎞× = × = =⎜ ⎟ ⎜ ⎟⎜ ⎟ × ×⎝ ⎠ ⎝ ⎠⎝ ⎠
(2.20)
( )
( )
11 / /
1 2
2
1/ / / /
1 2 1 1 2 2
2
=
r r s
s r s
I Z P
H Q J Q Q Q
Z I P
P
Q Q Q P Q P
P
×−
×
⎛ ⎞ ⎛ ⎞= × × = × ×⎜ ⎟ ⎜ ⎟− ⎝ ⎠⎝ ⎠
⎛ ⎞− × = × − ×⎜ ⎟⎝ ⎠
2.21)
Từ (2.19),(2.21) ta có: /2 22nH I Q P= − × ×
Đặt /2 22Q Q= ×
Ta có: 2 2nH I Q P= − ×
Từ (2.20) ta có: /2 2 2 22 2 sP Q P Q I× = × × = ×
Trường hợp 1 1 nH Q P I= × − ta xét tương tự
Điều kiện đủ:
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 22 sQ I P× × × = nI
Ví dụ:
Ta xây dựng ma trận đối hợp trên 7] :
37
n=3; s=2
2
1 2 3
1 3 5
P ⎛ ⎞= ⎜ ⎟⎝ ⎠ ; 2Q được xây dựng bằng cách giải hệđ
2 1
2 2
2
0
0
2
P X
P X
⎧ ⎛ ⎞=⎪ ⎜ ⎟⎪ ⎝ ⎠⎨ ⎛ ⎞⎪ = ⎜ ⎟⎪ ⎝ ⎠⎩
với ( )2 1 2Q X X=
Lần lượt giải các hệ ta được 1
6
5 5
a
X a
a
+⎛ ⎞⎜ ⎟= +⎜ ⎟⎜ ⎟⎝ ⎠
với 7a∈]
2
3
2 5
b
X b
b
+⎛ ⎞⎜ ⎟= +⎜ ⎟⎜ ⎟⎝ ⎠
với 7b∈]
Với 1; 1a b= = thì 2
0 4
3 0
1 1
Q
⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠
Ma trận đối hợp
1 0 0 0 4 1 0 0 4 5 6 4 2 1
1 2 3
0 1 0 3 0 0 1 0 3 6 2 4 2 5
1 3 5
0 0 1 1 1 0 0 1 2 5 1 5 2 0
H
⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞⎛ ⎞⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟= − = − =⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠
6.1.1.2. Ma trận đối hợp trên trường 2] [Theo 9]
Gọi H là ma trận đối hợp n × n trên trường F, có đặc số 2, nghĩa là 2 nH I=
nên H có thể là:
1. nI
2. 2
2 2
r r s
t
s r s
I Z
J
Z K
×
×
⎛ ⎞= ⎜ ⎟⎝ ⎠
2sK là tổng trực tiếp của s ma trận
1 1
0 1
⎛ ⎞⎜ ⎟⎝ ⎠
và 12 ;0
2
r s n s n+ = < ≤
38
Định nghĩa tổng trực tiếp như sau:
0
0
A
A B
B
⎛ ⎞⊕ = ⎜ ⎟⎝ ⎠
Định lý 8: (Theo [9])
Nếu F là trường có đặc số 2, thì điều kiện cần và đủ để ma trận vuông
nxn H là ma trận đối hợp với 10
2
s n< ≤ , 2 2nH I Q P= + × sao cho 2Q là ma trận
n×s có hạng là s và ma trận 2P là ma trận s×n và có hạng là s sao cho
2 2 ,0s sP Q× = (do s < n nên luôn tồn tại 2Q sao cho 2 2 ,0s sP Q× = )
Chứng minh
Điều kiện đủ:
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
Điều kiện cần:
Ta đặt 11H Q J Q
−= × × ; với Q là ma trận khả nghịch bất kỳ trên p]
Ta đặt ( )/ /1 2Q Q Q= ; với /2Q là ma trận có kích thước 2n s×
Và đặt
/
1 1
/
2
P
Q
P
− ⎛ ⎞= ⎜ ⎟⎝ ⎠
; với /2P là ma trận có kích thước 2s n×
Ta có:
( ) /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) và (2.24), ta có:
( )
= − × + × ×
+ × − ×
/ / / /
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
Đặt ( )−= − = …2 2 2 .1 .3 .2 10, ,0, ,0, ,0,s s s sL K I i i u
Với 0 là vectơ cột 0 và . ji là vectơ cột thứ j trong ma trận đơn vị.
( )−× = …/2 2 .1 .3 .2 10, ,0, ,0, ,0,s sQ L q q q với . jq là cột thứ j trong ma trậ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 là dòng thứ j trong ma trận
/
2P .
Như vậy ta chỉ sử dụng cột lẻ trong /2Q và dòng chẵn trong
/
2P . Ta đặt
( )× − × = ×/ /2 2 2 2 2 2s sQ K I P Q P
Từ (2.23) ta có: 2 2 ,s sP Q Z× = vì dòng chẵn trong là vectơ 0
Ví dụ:
Xây dựng ma trận đối hợp trên 2] :
n=3; s=2
2
1 0 1
1 0 1
P ⎛ ⎞= ⎜ ⎟⎝ ⎠ ; 2
Q được xây dựng bằng cách giải hệđ
40
2 1
2 2
0
0
0
0
P X
P X
⎧ ⎛ ⎞=⎪ ⎜ ⎟⎪ ⎝ ⎠⎨ ⎛ ⎞⎪ = ⎜ ⎟⎪ ⎝ ⎠⎩
với ( )2 1 2Q X X=
Lần lượt giải các hệ 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 trận đố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 lý 9:
Cho hai ma trận A,B có kích thước lần lượt là r × s và s × r với các
phần tử được chọn tùy ý trên vành giao hoán có đơn vị thì ma trận M có kích
thước là n×n sao cho n= r+s thì M được xây dựng nhưng sau thì M là ma trận đối
hợp:
2
s
r
BA I B
M
A ABA I AB
−⎛ ⎞= ⎜ ⎟− −⎝ ⎠
(2.25)
Định lý 10: (Về ma trận đối hợp)
1. A là ma trận đối hợp nếu và chỉ nếu 1A A−=
2. Nếu A là ma trận đối hợp thì ( )1
2
B I A= + là ma trận lũy đẳng.
41
3. Định thức của ma trận đối hợp A trên trường p] là 1 hoặc p –1
Chứng minh:
1. (⇒ ) A là ma trận đối hợp nên A.A = I . gọi A’ là ma trận nghịch
đảo của A thì ta có
A.A’=A’.A=I. do đó A=A’= 1A−
(⇐) Ta có 1A A−=
A. 1A− =I (định nghĩa)
Suy ra A.A=I . Vậy A là ma trận đố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+ + = + = + =
Bổ đề 5 (vành ma trận) :
Cho n là số nguyên lớn hơn hoặc bằng 1. Thì tập hợp các ma trận n×n
có các phần tử trên trường p] với hai phép toán cộng và nhân ma trận tạo thành
một vành.
Bổ đề 6:
A là ma trận đối hợp trên trường p] thì một số ma trận dễ thấy là các
dạ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 và 0 < s < n
42
4. ,21
2 , 2
r r s
s r s
I Z
J
Z K
⎛ ⎞= ⎜ ⎟⎝ ⎠ với r+2s = n và 0 < s ≤
1
2
n và K2s là tổng trực
tiếp của s ma trận
1 1
0 1
⎛ ⎞⎜ ⎟⎝ ⎠
Nhận xét:
Ma trận đối hợp trên trường ] p hoặc ]2 là ma trận tam giác trên với
1; p – 1 trên đường chéo chính và 1 hoặc 0 trong tất cả các phần tử phía trên
đường chéo chính.
Định thức của ma trận đối hợp A là bằng 1 hoặc p – 1
6.1.2. Đếm số ma trận đối hợp [Theo 6]
Đếm số ma trận đối hợp (involutory) bậc d×d trên p]
Đặt ( )
0
t
t i
t
i
g p p
=
= −∏ là số ma trận khả nghịch bậc t trên trường p]
Trường hợp p > 2
Đặt ( )0 ,N d t là số ma trận X cấp d × d thỏa 2 0X I− =
Nếu X là ma trận có det(xI – X) có đa thức đặc trưng mà có t
nghiệm là 1 và d – t nghiệ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≤ ≤
Đặt ( )0 ,S d t là số ma trậ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 trận X trong ( )0 ,S d t là
khác nhau)
43
Q là ma trận khả nghịch bậc m trên p] sao cho 1−× ×Q J Q ; thì
( )1 mod −× × ≡MQ J Q J p . Nếu 1−× × =Q J Q J thì Q J J Q× = × . Đặt ( )0 ,C d t là
số ma trận Q sao cho thỏa Q và J giao hoán. Ta có: ( ) ( )0 0, ,dg C d t S d t=
Do Q J J Q× = × nê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 đó số ma trận đối hợp trên p] là: ( )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]
Đặt X là ma trận cấp d×d; X là ma trận thỏa mãn: 2 0X I− = trên
2] . Tương tự trường hợp trên thì (mod )
M
tX J p≡ với tJ được định nghĩa trong
6.1.1 phần b.
Đặt ( ),eS d t là tổng số ma trận X sao cho (mod )M tX J p≡ với
0 2t d≤ ≤
Ta có: ( ) ( )
0
, ,
=
= ∑de e
t
N d t S d t ; 0 2≤ ≤t d (do ma trận X trong
( ),eS d t là khác nhau)
Đặt ( ),eC d t là số lượng ma trận khả nghịch Q bậc d trên 2] thỏa mãn
t tJ Q Q J× = × .
Ta có: ( ) ( ), ,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 xét trường hợp f(d,29) với d trong khoảng 2 đến 30
Hình 2.3
Quan sát hình 2.3 ta thấy với khoảng d thay đổi từ 2 đến 30 thì các f(d,29)
có xu hướng bằng nhau.
Từ (2.26) và (2.5). Ta đặt g(t) tỷ số giữa tổng ma trận đối hợp trong (2.26) và
tổng số ma trận khả nghịch trong (2.5);ta xét trê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
−
=
= − =∏
Ý nghĩa của g(t) càng nhỏ thì càng tốt vì lúc đó sẽ có tỷ lệ khóa yếu là ít nhất.
Ta xét trường hợp d trong khoảng từ 2 đến 5
Hình 2.4
Quan sát hình 2.4 ta thấy với d=2 lớn thì g(t)= 0.0012, còn d từ 3 trở lên thì g(t)
càng tiến về 0.
Như vậy khi sinh khóa thì kích thước khóa càng lớn thì tỷ lệ khóa yếu
càng ít.
6.2. K là khóa yếu với K×v = v hoặc v×K = v:
Ta xét khóa là ma trận vuông d×d khả nghịch trên p]
6.2.1. Xác định khóa yếu bằng định thức
Với cách mã hóa: K×v = v thì K được gọi là khóa yế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ì hệ (2.29) có nghiệm duy nhất là nghiệm tầm thường
0
0
⎛ ⎞⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠
#
det(K – I) = 0 thì hệ (2.29) có vô số nghiệm hoặc vô nghiệm, nhưng do hệ
luôn có nghiệm tầm thường nên khi det(K – I) = 0 thì hệ (2.29) vô số nghiệm.
Nhưng do trên ] p có hữu hạn phần tử hệ (2.29) cũng có hữu hạn nghiệm.
Ví dụ:
Trên 11]
2 3
2 7
K ⎛ ⎞= ⎜ ⎟⎝ ⎠ , có det K ≠ 0 nhưng det(K – I) = 0
Véc tơ dạ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 hạn phần tử nên v cũng thuộc tập nghiệm hữu hạn
Nếu thông điệp M mà ta cần mã hóa sau khi chuyển thành dạng ma trận
có các cột là các nghiệm trong tập trên thì K×M=M
Với
2 9 7
3 8 5
M ⎛ ⎞= ⎜ ⎟⎝ ⎠
Thì khi mã hóa:
47
2 3 2 9 7 2 9 7
2 7 3 8 5 3 8 5
⎛ ⎞ ⎛ ⎞ ⎛ ⎞= × = × =⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠C K M
Cipher text sẽ bằng plaintext; như vậy khi mã hóa khóa yếu như trên thì
người ta sẽ biết được plaintext.
Với cách mã hóa: v×K = v thì K được gọi là khóa yế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ì hệ (2.30) có nghiệm duy nhất là nghiệm tầm thường.
det(KT – I) = 0 thì hệ (2.30) có vô số nghiệm hoặc vô nghiệm, nhưng do
hệ luôn có nghiệm tầm thường nên khi det(KT – I) = 0 thì hệ (2.30) có vô
số nghiệm.
Nhưng do trên ] p có hữu hạn phần tử hệ (2.30) cũng có hữu hạn nghiệm.
Ta có nhận xét:
1/ Trên trường ] p với m là số nguyên dương thì một khóa K gọi là
yếu khi và chỉ khi det ( K – I ) = 0 với cách mã K×v = v.
2/ Trên trường ] p với m là số nguyên dương thì một khóa K gọi là
yếu khi và chỉ khi det ( KT – I ) = 0 với cách mã v×K = v
6.2.2. Xác định khóa yếu bằng trị riêng
Định nghĩa:
Cho A là ma trận vuông d×d và c ∈ p]
Đặt { }/n T TcE X AX cX= ∈ =\
c được gọi là trị riêng và cE được gọi là không gian riêng ứng với trị riêng
48
Với mỗi { }\ 0cEα ∈ thì α là vec tơ riêng ứng với trị riêng c
Ta đặt ( ) ( )detA nP x cI A= − gọi là đa thức đặc trưng của A
Mệnh đề (Mối liên hệ giữa trị riêng và đa thức đặc trưng)
Nếu c là trị riêng trên p] của A thì ( )AP c =0 trên p]
Suy ra nếu muốn tìm trị riêng thì ta tìm tất cả các nghiệm của ( )AP x trên
p]
Tính chất của trị riêng và vectơ riêng:
1. Nếu c = 0 thì ma trận A không khả nghịch
2. Nếu A là ma trận tam giác trên và ma trận tam giác dưới, ma trận
đường chéo thì trị riêng là nhưng phần tử trên đường chéo chính.
3. A và AT có cùng trị riêng.
4. Transition matrix thì luôn có trị riêng là 1
Trasition matrix có tính chất là tất cả các hàng có tổng là 1
Ví dụ:
Xét ma trận có trị riêng là 1 trên 7]
1 2 5
4 4 0
3 2 3
A
⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠
Ta tính trị riê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 có trị riêng là 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 có nhận xét:
Nếu trị riêng ma trận vuông A có trị riêng là 1 thì tồn tại những vectơ
riêng X sao cho × =T TK X X . Muốn tìm được XT thì ta phải giả hệ phương trình
tuyến tính.
Một khóa là ma trận khả nghịch nhưng không yếu thì ma trận có các giá
trị riêng phải khác 1. Ở đây ta có thể xét một trường hợp là loại những ma trận
Trasition matrix có tính chất là tất cả các hàng có tổng là 1.
Ta xét định thức thì: det(K – I) ≠ 0 và det(KT – I) ≠ 0
50
7. Tóm tắt
Mã ma trận bậc d khi ta mã hóa cần khóa là ma trận vuông khả
nghịch trên m] , m bất kỳ. Ở đây không gian các chữ cái(Alphabet) là m nên là
số nguyên tố và số chiều d của ma trận khóa nên lớn để hạn chế khóa yếu.
Trường hợp các khóa yếu thì ta có ma trận đối hợp (involutory matrix)
đối với trường hợp này thì khi ta xây dựng ma trận K = L × U thì ta chỉ cần xây
dựng ma trận K sao detK ≠ 1 và p – 1
Trường hợp K×v = v thì ta xây dựng ma trận K có det(K – I) ≠ 0.
51
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]
(1)
11
1
1
0 0
0
0
+
⎛ ⎞⎜ ⎟⎜ ⎟⎜ ⎟= ⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠
…
# %
#
%
# # %
… … …
tt
tt
d dt dd
l
l
L
l
l l l
khả 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
khả nghịch ⇔ ( )
1
0 mod p
=
≠∏d ii
i
u (3.2)
(3) K L U= × khả nghịch khi và chỉ khi L,U khả nghịch (3.3)
(4) K khả nghịch ⇒ P×K cũng khả nghịch với P là ma trận hoán vị
Với P là ma trận hoán vị được định nghĩa như sau:
( )
1 2 nk k k
P e e e= … với
ik
e là các hàng trong ma trận đơn vị.
( )ijP p= với 1 nếu 0 ngược lạ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ì không tồn tại ma trận L1; U1 sao cho L≠L1(L1 là ma trận tam giác trên với
đường chéo chính gồm các phần tử 1) và U≠U1 thì L×U=L1×U1
(6) Với ma trận K khả nghịch trên p] thì luôn tồn tại ma trận P, L,U (với
ma trận L là ma trận tam giác trên sao cho các đường chéo chính là 1)khả nghịch
trên p] sao cho K= P×L×U (theo [5, trang 153])
Chứng minh
Chứng minh (5)
Không tồn tại ma trận L1, U1 (với L1 là ma trận tam giác dưới có đường
chéo chính là 1)sao cho L1≠L và U1≠U mà K = L1 × U1
Chứng minh:
Ta xét trên p] ; với 1 1K L U= × . Ta giả sử ta có 2 2K L U= ×
Lúc này ta có 1 1 2 2L U L U× = × . Do K khả nghịch nên 1 2,U U khả nghịch.
Ta có:
1 11 1 2 2 2 1 2 1L U L U L L U U
− −× = × ⇔ × = × (3.6)
Do 2L là ma trận tam giác dưới nên
1
2L
− cũng là ma trận tam giác dưới. Suy ra
1
2 1L L
− × là ma trận tam giác dưới.
Tương tự thì 1U là ma trận tam giác trên nên
1
1U
− là ma trận tam giác trên. Suy
ra 12 1U U
−× là ma trận tam giác trên.
Từ (3.6) thì vế trái là ma trận tam giác dưới và vế phải là ma trận tam giác trên
53
1 12 1 2 1L L U U
− −× = × = D (3.7)
Với D là ma trận đường chéo.
Do 12 1;L L
− có các lii là 1 nên D là ma trận đơn vị.
Từ (3.7) ta có: 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 là ma trận vuông cấp d khả nghịch trên p] ; thì K cũng khả nghịch
trên\ . Theo [5, trang 153] thì tồn tại ma trận ( ), , ,P L U M d∈ \ sao cho
K P L U= × × . Do K khả nghịch trên p] , nên P L U× × cũng khả nghịch trên
p] ; suy ra L, U khả nghịch trên p] .
Vậy với K khả nghịch trên p] thì tồn tại ma trận L, U khả nghịch trên p] sao
cho K P L U= × ×
2. Xác định cơ sở hình thành thuật giải
Ta sinh ra hai ma trận L và U trê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
Khó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 trận U phải khả nghịch: 11
1
0
d
i
u
=
≠∏
Để ma trận khóa K không là khóa yếu thì ma trận khóa K phải thỏa là:
K không là ma trận đối hợp (Involutory matrix) nghĩa là 11
1
1 và 1
d
i
u p
=
≠ −∏
Đối với trường hợp khóa yếu K v v× = thì ta xét det(K – I) phải khác 0.
Với mục (5) trong phần 1 của chương này thì với một bộ (L,U) sẽ có một
khóa K nên khi ta xác định tổng số khóa K có thể sinh ra bằng thuật giải thì
bằng số lượng ma trận L nhân với số lượng ma trận U.
Với mục (6) của phần 1 của chương này thì ta có nhận xét là với K khả
nghịch thì ta luôn có K = P × L ×U nên không gian khóa mà ta sinh bằng bộ L×U
thì đảm bảo không gian sinh ra gần bằng không gian ma trận vuông khả nghịch.
3. Thuật giải:
Ta phải xác định trước p] với p là số nguyên tố; là không gian bảng các
chữ cái.
Bước 1:
Ta sẽ phát sinh ma trận tam giác trên U sao cho U phải thỏa một số tính
chất sau:
U phải khả nghịch nghĩa là:
1
0
d
ii
i
u
=
≠∏
det(K) ≠ 1 và p – 1 nghĩa là: det(U) ≠ 1 và p – 1 ⇔
1
1 và 1
d
ii
i
u p
=
≠ −∏
56
Bước 2 :
Ta sẽ phát sinh ma trận tam giác dưới L sao cho các phần tử trên đường
chéo chính bằng 1.
Bước 3 :
Ta tính khóa K L U= ×
Bước 4:
Tính det(K – I).
Nếu det(K – I) = 0 thì ta quay lại bước 2 tính lại ma trận L.
Nếu det(K – I) ≠ 0 thì ta tiếp bước 5.
Bước 5:
Ta sẽ hoán vị khóa K để khóa K trở nên an toàn hơn
mớiK P K= ×
Với P là ma trận hoán vị.
4. Ví dụ:
Ta xét trên trường 29] ; ta sẽ sinh khóa có bậc là 4
Bước 1:
Ta sinh ma trận tam giác dưới L bất kỳ sao cho các đường chéo chính
bằng 1.
1 0 0 0
2 1 0 0
6 4 1 0
5 3 0 1
⎛ ⎞⎜ ⎟⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠
L
Bước 2:
Ta phát sinh ma trận tam giác trên U bất kỳ khả nghịch và thỏ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 khó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:
Kiểm tra K có là khóa yếu không?
Tính : det (K – I) =18 ≠ 0
Nên K là khóa mà ta chấp nhận được (không yếu)
Chấp nhận là khóa và chuyển sang bước 5.
Bước 5:
Ta có thể hoán vị ma trận khóa vừa phát sinh
Ví dụ:
0 1 0 0
0 0 0 1
1 0 0 0
0 0 1 0
P
⎛ ⎞⎜ ⎟⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠
Như vậy khóa mới là:
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. Khảo sát không gian khóa vừa sinh theo thuật giải
Ta xét trên p] với p là số nguyên tố
Ta sinh khóa K là ma trận vuông khả nghịch d×d
Số ma trận khả nghịch trên p] là : ( )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
−−
= =
= − = −∏ ∏ và 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ư vậy số ma trận khóa là số ma trận khả nghịch trên p] trừ đi số ma
trận khóa yếu.
Ma trận tam giác dưới L và ma trận tam giác trên U bậc d có
( )1
2
d d +
có
thể khác 0.
Theo thuật giải trên thì số ma trận tam giác dưới L là
( )1
2
d d
d
p
+ −
(3.13)
Theo thuật giải trên thì số ma trận U, khi ta xây dựng thì trên đường chéo
chính có d – 1 phần tử chọn sao cho khác 0. Phần tử udd sẽ phụ thuộc các phần tử
trước sao cho tích các đường chéo chính khác 1. Vậy ta có ( ) 11 dp −− cách chọn
phần tử trên đường chéo chính. Các phần tử còn lại chọn bất kỳ nên ta có:
59
( )1
2
d d
d
p
+ −
cách chọn.
Vậy số ma trận tam giác trên U là: ( ) ( )11 21 d d ddp p + −−− (3.14)
Vậy số lượng ma trận khóa K = L × U có thể là:
( ) ( ) ( ) ( ) 21 11 12 21 1d d d dd dd d d dp p p p p+ +− −− − −− = − (3.15)
60
Chương 4:
CÁC VẤN ĐỀ LIÊN QUAN ĐẾN MÃ HILL
Mô tả:
Người A và người B trao đổi thông tin cho nhau; sử dụng mã hóa
đối xứng và cụ thể là mã ma trận. A và B sẽ có khóa bí mật là ma trận; và áp
dụng thuật toán mã hóa theo ma trận để mã hóa thông điệp M và chuyển cho B.
B sẽ sử dụng khóa bí mật để giải mã và tính toán được M.
1. Sinh khóa theo pincodes
Hình 4.1
Người gửi A sẽ có một pin codes và dùng pin codes để sinh ra khóa bí
mật là ma trận K. Người A sẽ dùng khóa K để mã hóa thông điệp C = K × M.
Người nhận B cũng có pincodes và cũng dùng pincodes để sinh ra khóa là ma
trận K. Và dùng khóa K để tính M = K-1 × C.
Thuật toán: sinh hóa từ pincodes và mã hóa bằng mã ma trận
Cho trước pincodes S có chiều dài xác định trước.
Thông điệp
M
Người gửi
A
Sinh Khóa K
Sinh khĩa K
Theo pin codes
Người nhận
B
Mã hĩa Thông điệp M
C= K × M
Sinh khĩa K
Theo pin codes
Thông điệp
M = K‐1× C
61
Thuật toán sinh khóa K là tích của ma trận tam giác dưới L và ma
trận tam giác trên U có kích thước là d × d
Gọi f là hàm băm (hash).
Bảng chữ cá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
Thuật toán:
Ta sẽ áp dụng bảng chữ cái để chuyển từ chữ sang số; trong trường hợp là
số thì chính là giá trị của số đó; chỉ có trường hợp số 0 ta chuyển thành số 10.
Như vậy chỉ có trường hợp duy nhất là A hay a thì chuyển thành 0.
Sinh khóa K
Bước 1:
Dùng hàm băm f để tính giá trị t:=f(S):
Ma trận U có
( )1
2
d d +
phần tử cần tính toán
Ta tính:
( ) ( )1 1: ( )
2 2* ( )
+ +⎡ ⎤ ⎡ ⎤= =⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥
d d d d
length t a
length t
Nếu 1a > ; thì
Lần 1 ta sẽ tính t:=f(S)
Lần 2 Ta tính: S:= S+t và tính t:= t + f(S)
Và tương tự như như vậy lập lại a lần.
Bước 2:
Tính ma trận L:
62
Ta sẽ gán các phần tử đường chéo chính: 11 22 33, , , , ddl l l l… các giá
trị là 1.
for i from 1 to d do
L[i][i]:=1;
end do;
Duyệt chuỗi t sau khi chuyển sang số và gán cho các giá 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 trận U:
Gán các phần tử trên đường chéo chính khác 0 và chọn udd sao cho
1
0
1; 1
d
ii dd
i
u u p
−
=
⎛ ⎞ ≠ −⎜ ⎟⎝ ⎠∏
Duyệt chuỗi t ngược từ cuối chuỗi sang đầu chuỗi.
Gán các phần tử u11;….;ud-1d-1 sao cho các uii đó khá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;
Gán các phần tử bất kỳ trong t (duyệt ngược chuỗ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 khóa K:
K:= L × U;
Tính det(K – I);
Nếu det(K – I ) = 0 thì lập lại bước 1 với pincodes S:= S +f(S);
Ngược lại chuyển sang bước 5.
Bước 5:
Chuyển thông điệp thành dạng ma trận
Chuyển các ký tự trong thông điệp M thành dạng số.
64
Tính ( ):β = −length M d ;
Nếu 0β = thì thông điệp sẽ là ma trận dạng d×1
Nếu 0β > thì thêm ( ) ( )⎡ ⎤ −⎢ ⎥⎢ ⎥
length Md length M
d
khoảng trắng vào cuối M;
lúc này ma trận thông điệp dạng ( )⎡ ⎤× ⎢ ⎥⎢ ⎥
length Md
d
.
Nếu 0β < thì thêm β khoảng trắng vào cuối M; thông điệp là ma trận
dạng d×1.
Tạo thông điệp thành ma trận và chuyển sang số.
Bước 6:
Tiến hành mã hóa M và gửi cho B:
C = K × M;
Bước 7:
Gởi C (Ciphertext) cho người B;
Tại người B có pincodes và sinh ma trận khóa K tương tự các bước
1,2,3,4. Tính nhanh ma trận K-1 (phần 4 Chương 4).
Giải mã và tính thông điệp M
M = K-1 × C;
Tính toán ngược lại thông điệ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
Chuyển ngược từ số sang chữ cái dưa vào bảng Alphabet.
Người B đã có được thông điệp của người A
2. Cách tấn công mã Hill gốc
Hình 4.2
Trường hợp 1:
Ta mã hóa: ta có khóa K là ma trận vuông khả nghịch bậc d; và M là ma
trận thông điệp; M có số chiều là d×m nếu thông điệp M không đủ d×m thì ta
thêm các khoảng trắng cho đủ d×m. Nhưng trong trường hợp thông điệp M có số
m = d thì M là ma trận vuông. Như vậy nếu như ta mã hóa thông điệp M = Id
C = K × M = K × Id = K
Như vậy khi mã hóa như trên thì ta sẽ tính được khóa K và như vậy khóa
K không còn an toàn nữa.
Trường hợp 2:
Ta có ma trận khóa K có kích thước d×d
Ta có d vectơ 1, dp p… (d × 1); các plaintext cần mã hóa thì ta thu được d
vectơ các ciphertext 1, dc c… (d × 1).
Như vậy ta có: ( ) ( )1 1d dp p K c c× =… … .
Thông điệp
M
Người gửi
A
Sinh Khĩa K
Sinh khĩa K
Theo pin codes
Người nhận
B
Mã hĩa Thông điệp M
C= K × M
Sinh khĩa K
Theo pin codes
Thông điệp
M = K‐1× C
Cipher text
66
Như vậy khóa K được tính dễ dàng: ( ) ( )11 1d dK p p c c−= ×… …
3. Cải tiến thuật giải (sinh khóa từ pincodes và chuỗi ngẫu nhiên)
Đối với thông điệp có kích thước nhỏ hơn d×(d – 1)
Hình 4.3
Người gửi A và người nhận B có chung pincodes. Thuật toán được cải tiến
bằng cách thêm chuỗi ngẫu nhiên u.
Tại người gửi A:
Bước 1: Sinh chuỗi u ngẫu nhiên; kết hợp pincodes đã có với u
thành pincodes mới .
Bước 2: Từ pincodes mới sinh ra ma trận khóa K như trong phần 1
chương 4.
Bước 3: Tính C = K × M
Bước 4: Gửi cho người B : C và u.
Tại người nhận B:
Bước 1: Tính pincodes mới = pincodes + u
Bước 2: Từ pincodes mới tính ma trận khóa K như trong phần 1
chương 4.
Bước 3: Giải mã tìm thông điệp M:
Sinh chuỗi t bất kỳ;
Kết hợp pincodes
với t bất kỳ
Pin codes mới =
pincodes + u
Thông điệp
M
Người gửi
A
Sinh Khóa K theo
Pin codes mới
Người nhận
B
Mã hĩa Thông điệp M
C= K × M
Chuỗi ngẫu nhiên u
Thông điệp
M = K‐1× C
Nhận được chuỗi u.
Tính Pin codes mới
= pincodes + u
67
M = K-1 × C
Cải tiến thuật toán ở đây là khóa K dùng để mã hóa luôn thay đổi trong mỗi lần
mã hóa. Dù ai đó có tính toán được khóa trong một lần mã hóa và giữa để giải
mã thông điệp khi bắt được cipher thì không được vì lần mã hóa tiếp theo khóa
K cũng đã thay đổi vì chuỗi u được sinh ra là ngẫu nhiên. Như vậy thì giải quyết
được trường hợp 2 trong phần 2 (tấn công mã Hill gốc) do d lần mã hóa các
vectơ 1, dp p… với d khóa K khác nhau. Nếu M là ma trận đơn vị thì chỉ biết
được khóa K và chuỗi ngẫu nhiên u của lần mã hóa đó mà những lần mã hóa
khác thì K và u đã thay đổi; như vậy giải quyết trường hợp 1 trong phần 2 (tấn
công mã Hill gốc)
Đối với thông điệp có kích thước lớn hơn d×(d – 1)
Hình 4.4
Tại người A:
Chia thông điệp thành k khối mỗi khối có kích thước d×(d – 1); riêng khối
k có thể có kích thước nhỏ hơn d×(d – 1).
Thông điệp
M
Sinh chuỗi t bất kỳ;
Kết hợp pincodes
với ui bất kỳ
Pin codes mới thứ
i= pincodes + ui
Người gửi
A
Sinh Khóa Ki theo
Pin codes mới
Người nhận
B
Mã hĩa Thông điệp M
Ci= Ki × Mi
Chuỗi ngẫu nhiên ui
Thông điệp
Mi = Ki
‐1× Ci
Nhận được chuỗi
ui.
Tính Pin codes
mới thứ i =
pincodes + ui
M=ΣMi
Thông điệp M được chia
thành k khối;k – 1 khối có
kích thước d×(d – 1); khối k
có thể có kích thước nhỏ hơn
d×(d – 1)
68
Người A tiến hành mã hóa từng khối tương tự như trong trường hợp mã
hóa thông điệp có kích thước nhỏ hơn d×(d – 1) và gửi cho người B.
Tại người B:
Người B nhận từng khối và tiến hành giải mã từng khối tương tự như
trường hợp ở trên. Sau đó ghép các khối lại sẽ có thông điệp ban đầu.
Do ta mã hóa từng khối có kích thước nhỏ hơn d×(d – 1) nên sẽ tránh được
trường hợp chọn trước văn bản để mã(choosen plaintext).
4. Tính nhanh ma trận khả nghịch của khóa: 1 1 1K U L− − −= ×
Theo thuật toán ta sinh ma trận K L U= × K khả nghịch; L là ma
trận tam giác dưới khả nghịch và U là ma trận tam giác trên khả nghịch. Ma trận
K,L,U là ma trận vuông cấp d × d trên p] .
Ta đặt ( )1 .1 .nK k k− = … thì ki là nghiệm của hệ phương trình
Thì các .ik (vectơ cột) là nghiệm của hệ . .i iK k I× = với .iI là vectơ
cột với vị trí thứ i là 1 còn lại là 0.
Mà . . . .i i i iK k I L U k I× = ⇔ × × =
Ta đặt: . .i i i iU k Y L Y I× = ⇒ × =
Nghĩa là ta giải hệ phương trình sau:
.
i i
i i
L Y I
U k Y
× =⎧⎨ × =⎩
Ta gọi:
1i
i
di
Y
Y
Y
⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠
# và ta sẽ giải hệ 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 xét hệ 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ư vậy ta có thể tính nhanh ma trận nghịch đảo của K từ L × U.
Với ( )1 .iK k− = với .ik là vectơ cộ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
KẾT LUẬN VÀ KIẾN NGHỊ
Luận văn đã tập trung khảo sát về mã Ma trận; và khảo sát không gian
khóa và đưa ra được tỷ số f(d,m) để đánh giá chọn không gian khóa và không
gian Alphabet sao cho tốt nhất. Theo luận văn thì không gian Alphabet tốt nhất
thì m(kích thước không gian Alphabet) nên là số nguyên tố.
Luận văn cũng đã đưa ra thuật giải sinh khóa, với khóa K = L×U an toàn
với L là ma trận tam giác dưới với các phần từ trên đường chéo chính bằng 1 và
U là ma trận tam giác trên khả nghịch.
Luận văn cũng đưa cải tiến cho mã Ma trận là thêm chuỗi ngẫu nhiên u
khi mã hóa để khóa K thay đổi trong những lần mã hóa khác nhau. Và đề xuất
khi mã hóa thông điệp thì nên chọn thông điệp có kích thước nhỏ hơn d×(d – 1);
với d là kích thước khóa.
Tuy nhiên trong luận văn cũng còn nhiều thiếu sót và trong thuật toán
sinh khóa K = L×U thì không loại bỏ trực tiếp khóa yếu (K×v=v) mà chỉ loại bỏ
được (K là ma trận đối hợp.).
Kiến nghị tìm điều kiện L, U sao cho khi tính L×U thì loại bỏ trường hợp
khóa yếu là det(L×U – I)≠0
72
TÀI LIỆU THAM KHẢO
Key word
Hill cipher, Matrix Modular, General Matrix.
Tiếng Việt:
[1] Dương Anh Đức, Trần Minh Triết (2005), Mã hóa và ứng dụng, Nhà
xuất bản Đại học Quốc Gia TPHCM, Thành Phố Hồ Chí Minh.
[2] Bùi Xuân Hải, Trần Nam Dũng, Trịnh Thanh Đèo, Thái Minh Đường,
Trần Ngọc Hội (2001), Đại số tuyến tính, Nhà xuất bản Đại học Quốc Gia
TPHCM, Thành Phố Hồ Chí Minh.
[3] Hà Huy Khoái (2003), Mã hóa thông tin cơ sở toán học và ứng dụng, Bộ
sách toán cao cấp – Viện Toán Học, Hà Nội
[4] Nguyễn Đình Thúc, Bùi Doãn Khanh (2006), Mã hóa – Mật mã, Nhà
Xuất Bản Lao Động Xã Hội, Thành Phố Hồ Chí Minh.
Tiế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
PHỤ LỤC DEMO THUẬT TOÁN CHƯƠNG 4 BẰNG MAPLE
// Khai báo thư viện
with(StringTools);
with(inttrans);
with(Maplets);
with(linalg);
with(LinearAlgebra);
//Viết hàm chuyển đổi từ chữ sang số (trường hợp là số thì giữ nguyên; số 0
chuyển thành số 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;
// Viết hàm chuyển từ số thành chữ(trong ví dụ này chỉ mã hóa chữ không mã
hóa số)
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 chuỗi ngẫu nhiên có chiều dài d
sinhchuoingaunhien := proc (d)
return Random(d, 'upper')
end proc;
// Số lần lặp hàm băm pinccodes đủ để tạo ma trậ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;
// Hàm băm pincodes với số lần được tính ở trê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;
//Tạo ma trận tam giá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
//Tạo ma trận tam giác trê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 Khó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 tiến hành mã hóa và 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 giải mã và tìm được thông điệ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");
//Cải tiến thuật toán với thêm một chuỗi ngẫu nhiên u và kết hợp với pincodes
tạo thành pincodes mới và dùng pincodes mới sinh khóa, khi gởi ma trận đã mã
hóa thì dấu chuỗi ngẫu nhiên u vào cột cuối và hàng cuối của ma trậ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 tiến hành mã hó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 tiến hành giải mã
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