Khảo sát ma trận, phân tích độ an toàn, hiệu năng và cải tiến

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 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 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

pdf91 trang | Chia sẻ: lvcdongnoi | Lượt xem: 3231 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu 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 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:

  • pdfKhảo sát ma trận, phân tích độ an toàn, hiệu năng và cải tiến.pdf
Luận văn liên quan