Tải bản đầy đủ (.pdf) (39 trang)

bài tập nhóm lý thuyết mật mã

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (9.39 MB, 39 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG ĐIỆN – ĐIỆN TỬ </b>

--□&□--

<b> </b>

Giảng viên hướng dẫn: PGS. TS. Đỗ Trọng Tuấn

Nhóm thực hi n: Nhóm 01 ệ

1. Trịnh Đức Chung MSSV: 20203338 2. Trần Tr ng Quy n ọ ề MSSV: 20203759 3. Nguyễn Quốc Tuấn MSSV: 20203778

<i>Hà N i, 5/2023 </i>ộ

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>MỤC L C </b>Ụ

CƠ SỞ TOÁN HỌC ... 4

1. S H C CÁC S NGUYÊN: ... 4 Ố ỌỐ2. S H C MƠ-Ố ỌĐUN: ... 5

Tốn t modulo ... 5 ửTập hợp các thặng dư ℤ𝑛 ... 5

4. MA TR N: ... 13 Ậ4.1. Định nghĩa ... 13

4.2. M t s phép toán v ma tr n ... 14 ộ ốềậMỘT SỐ H M T CỆẬỔ ĐIỂN ... 15

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

1.Lịch sử hình thành hệ mật DES ... 25 2.Mơ hình h m t DES... 25 ệ ậ3. Ngun lý t o khóa vịng ... 27 ạ4. Q trình mã hóa DES ... 29 5. Q trình gi i mã DES ... 31 ảII.AES ... 37 1.Lịch sử hình thành hệ mật AES ... 37 2. Xây d ng thu t toán. ... 37 ựậ3. Các d ng tạấn cơng vào AES và phương pháp phịng chống. 43 III.RC4 ... 45 1.Khái ni m ... 45 ệ2.Cấu tạo hệ m t ... 45 ậ3.Mã hóa và gi i mã ... 46ả

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>CƠ SỞ TOÁN HỌC 1. S H C CÁC S NGUYÊN: </b>Ố ỌỐ

- Z là tập h p các s ợ ố nguyên : Z = { …,-2,-1,0,1,2,…}- Z* là tập h p các s ợ ố nguyên không âm : Z*= {0,1,2,…}

- T p h p Z là ậ ợ đóng kín đố ới v i các phép c ng, trộ ừ và nhân nhưng khơng đóng kín đố ới v i phép chia

- Cho hai s nguyên b t kì a và b, b >1 ố ấa = q*n +r , 0 ≤ r ≤ b

Trong đó: q: thương r: s ố dư- Phép chia h t: ế

Cho bi u thể ức a = q*n +r

+ N u r = 0 => a chia h t cho n, kí hi u n | a ế ế ệ + Nếu r ≠ 0 => a không chia hết cho n, kí hi u n a ệMột số tính ch t: ấ

+ N u a | 1 thì a = ±1 ế + N u a | b và b | a thì a = ±b ế + N u a | b và b | c thì a | c ế

+ N u a | b và a | c thì a | (m*b + n*c) ế- Ước số chung l n nh t: ớ ấ

d = gcd(a,b)

Ta s d ng thuử ụ ật toán Euclide để tìm gcd(a,b)

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>Tốn t modulo </b>ử

Tốn tử hai ngơi được nhắc đế ở trên đượn c g i là ọ <b>toán t modulo</b>ử và được ký hi u ệ

<i>là mod. Đầu vào th hai (</i>ứ 𝑛) được g i là ọ <b>mô-đun (ti ng Anh: </b>ế <i>modulus</i>). Đầu ra 𝑟 được g<i><b>ọi là thặng dư ếng Anh: residue). </b></i>(ti

Toán t modulo (ử <b>mod ấ</b>) l y m t s nguyên ( ) t t p và mô-ộ ố 𝑎 ừ ậ ℤ đun (𝑛) là m t s ộ ốnguyên dương. Toán tử cho kết quả một thặng dư khơng âm (𝑟). Ta nói

Một số ví d : ụa. 27 mod 5 = 2 b. 36 mod = 0 12c. −18 mod 14 10= d. −7 mod 10 = 3

<b>Tập h p các th</b>ợ ặng dư ℤ<small>𝒏</small>

Kết qu c a phép tốn modulo vả ủ ới mơ-đun 𝑛 ln là một s nguyên t ố ừ0 đến 𝑛 − 1. Nói cách khác, k t qu c a ế ả ủ 𝑎 mod 𝑛 luôn luôn là m t s nguyên không âm nhộ ố ỏ hơn 𝑛. Ta có th nói r ng phép toán modulo t o ra m t t p h p, mà trong s h c mô-ể ằ ạ ộ ậ ợ ố ọ đun được gọi là <b>tập h p các th</b>ợ ặng dư nhỏ<b> nh t trong modulo </b>ấ 𝒏, hay được viết là . ℤ<small>𝒏</small>

<b>𝒂 𝐦𝐨𝐝 𝒏 = 𝒓 </b>

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

Mặc dù chỉ có duy nh t m t t p hấ ộ ậ ợp các s nguyên (ố ℤ), nhưng ta có vơ số ậ ợp t p hcác thặng dư (ℤ<sub>𝑛</sub>) ng v i m i giá tr c a khác nhau. ứ ớ ỗ ị ủ 𝑛

Ví dụ m t s t p h p thộ ố ậ ợ ặng dư:

<b>Đồng dư </b>

Trong mật mã, ta thường dùng khái niệm đồng dư (đồng dư thức) thay vì đẳng thức. Ánh x t t i không phạ ừℤ ớ ℤ<sub>𝑛</sub> ải là tương ứng một đối m t (one-to-one), t c là nhi u ộ ứ ềphần t trong có th ánh x tử ℤ ể ạ ới cùng m t ph n t trong . Vô s ph n t c a t p ộ ầ ử ℤ<small>𝑛</small> ố ầ ử ủ ậℤ có th ánh x t i m t ph n t trong t p ể ạ ớ ộ ầ ử ậ ℤ<sub>𝑛</sub>. Ví d , k t qu c a ụ ế ả ủ 2 mod 10 = 2, 12 mod = 2, mod = 2, v.v…. Trong số10 22 10 học mô-đun, số nguyên như 2, 12 và 22 được gọi là đồng dư theo mod 10. Để chỉ ra hai s ố nguyên đồng dư, ta sử ụ d ng

<b>toán tử đồng dư ( ). và thêm c m t (mod ) vào bên ph</b>≡ ụ ừ 𝑛 ải đồng dư thức.

a. Toán t ử đồng dư khá giống toán tử bằng, nhưng cũng có một vài điểm khác biệt. Thứ nh t, toán t b ng ánh x m t ph n t trong t p tấ ử ằ ạ ộ ầ ử ậ ℤ ới chính nó; trong khi đó tốn t ử đồng dư ánh xạ các phầ ử ừ ận t t t p sang m t ph n t t p . Th hai, ℤ ộ ầ ử ở ậ ℤ<small>𝑛</small> ứtoán t bử ằng tương ứng một tới m t; cịn tốn t ộ ử đồng dư thì tương ứng nhi u t i ề ớmột (nhi u ph n tề ầ ử tương ứng với m t ph n t ). ộ ầ ử

b. C ụm t (mod ừ 𝑛) được thêm vào bên ph i c a toán t ả ủ ử đồng dư chỉ là d u hi u c a ấ ệ ủtập đích (ℤ<sub>𝑛</sub>). Ta cần phải thêm cụm từ này để chỉ ra mô-đun nào được dùng trong ánh x . Ký hiạ ệu mod được s d ng ử ụ ở đây không được dùng với nghĩa là tốn t hai ngơi. Nói cách khác, ký hi u mod trong ử ệ 12 mod 10 là m t toán t ; ộ ửcụm t (mod 10) trong ừ 2 ≡12 (mod 10 có nghĩa tập đích là ℤ) <small>10</small>.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

Các s nguyên trong t p h p ố ậ ợ [0] khi th c hiự ện phép tốn modulo cho 5 thì đều cho kết qu là 0. Các sả ố nguyên trong t p ậ [1] thì cho k t qu 1 khi th c hi n phép toán ế ả ự ệmodulo cho 5,v.v…. Trong mỗi tập hợp sẽ có một phần tử được gọi là thặng dư nhỏnhất (không âm). Trong t p [0], ph n t này là 0; trong t p [1], ph n t này là 1; ậ ầ ử ậ ầ ửv.v…. Tập h p t t c các th ng dợ ấ ả ặ ư nhỏ nh t chính là t p ấ ậ ℤ = ሼ0, 1, 2, 3, 4ሽ<small>5</small> . Nói cách khác, t p h p là t p các ậ ợ ℤ<sub>𝒏</sub> ậ <b>thặng dư nhỏ nhất</b> trong modulo . 𝑛

<b>Biểu đồ tròn </b>

Khái niệm đồng dư có thể được hiểu rõ hơn bằng vi c s d ng m t biệ ử ụ ộ ểu đồ tròn. Giống vi c s d ng m t trệ ử ụ ộ ục số để bi u di n các s nguyên trong t p , ta có th s ể ễ ố ậ ℤ ể ửdụng một đường tròn để ể bi u di n các s nguyên trong t p . ễ ố ậ ℤ<sub>𝑛</sub>

Các s nguyên tố ừ 0 đế 𝑛 − 1 cách đều nhau trên đườ n ng tròn. T t c các s nguyên ấ ả ốđồng dư trong modulo 𝑛 nằm cùng một điểm trên đường tròn. Các số nguyên dương và nguyên âm t t p ừ ậ ℤ được biểu diễn trên đường tròn một cách đố ứi x ng. Ta thường sử dụng số học đồng dư trong cuộc sống hàng ngày của chúng ta; ví dụ như chúng ta sử ụng đồ d ng hồ để tính th i gian. H thờ ệ ống đồng h mà ta s d ng th ồ ử ụ ểhiện một đồng dư trong modulo 12. Tuy nhiên, thay vì là 0, ta sử ụ d ng s 12. Cho ố

−(𝑛 − 1) <small> </small> 2 1 0 1 2 <small> </small> (𝑛 − 1)

(𝑛 − 1) (𝑛 − 2)

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

nên, h thệ ống đồng h bồ ắt đầ ừu t 0 (hay 12) cho t i 11. B i vì m t ngày kéo dài 24 ớ ở ộgiờ, cho nên kim giờ sẽ được quay hai vòng, vòng đầu tiên cho bu i sáng và vòng ổthứ hai cho bu i chi u. ổ ề

<b>Phép tốn trong </b>ℤ<small>𝒏</small>

Ba phép tốn hai ngơi (phép c ng, phép trộ ừ và phép nhân) đố ớ ậi v i t p ℤ cũng có thểđịnh nghĩa trong tập . Kℤ<sub>𝑛</sub> ết quả của toán tử trong sℤ<sub>𝑛</sub> ẽ cần được ánh xạ tới tập ℤ<sub>𝑛</sub>bằng việc sử ụ d ng toán t mod. ử

Thực ra, có hai lo i tốn t ạ ử đã được sử d ng ụ ở đây. Loại th nhứ ất đó là một trong các tốn t hai ngơi (ử +, −,×); và th hai là tốn t mod. Ta c n s d ng d u ngoứ ử ầ ử ụ ấ ặc đơn để thể hiện thứ tự ưu tiên của các phép toán. Đầu vào ( và ) có th𝑎 𝑏 ể là các phần tử trong t p hoậ ℤ ặc tậ ℤp . <small>𝑛</small>

<b>Tính ch t </b>ấ

Ta đã từng đề cập tới việc hai đầu vào của phép tốn hai ngơi trong số học mơ-đun có thể n m trong t p ho c . Tính chằ ậ ℤ ặ ℤ<sub>𝑛</sub> ất sau đây cho phép chúng ta ánh xạ hai đầu vào t i t p (n u chúng t i t t p ớ ậ ℤ<small>𝑛</small> ế ớ ừ ậ ℤ) trước khi th c hi n ba phép tốn hai ngơi ự ệ

<b>Tính ch t th nh</b>ấ ứ <b>ất: </b> (𝑎 + 𝑏) mod 𝑛 = [(𝑎 mod 𝑛) + (𝑏 mod 𝑛)] mod 𝑛

<b>Tính ch t th hai:</b>ấ ứ (𝑎 − 𝑏) mod 𝑛 = [(𝑎 mod 𝑛) − (𝑏 mod 𝑛)] mod 𝑛

<b>Tính ch t th ba: </b>ấ ứ (𝑎 × 𝑏) mod 𝑛 = [ 𝑎 mod 𝑛 × (𝑏 mod 𝑛)] mod 𝑛( )

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

Mặc dù quá trình x lý s ử ẽ dài hơn nếu ta sử dụng các tính chất trên, nhưng trong mật mã ta s ph i x lý v i nh ng con s r t l n. Ví d , n u ta nhân hai s nguyên l n ẽ ả ử ớ ữ ố ấ ớ ụ ế ố ớvới m t s nguyên l n khác, ta sộ ố ớ ẽ được môt s nguyên quá lố ớn để lưu trữ trong máy tính. Áp d ng các tính chụ ất trên, trước tiên làm cho hai toán h ng nh ạ ỏ đi, sau đó mới thực hi n phép nhân. ệ

Ví dụ:

1. (1,723,345 + 2,124,945) mod 11 = (8 + 9) mod 11 = 6 2. (1,723,345 − 2,124,945) mod 16 = (8 − 9) mod 11 = 10 3. (1,723,345 × 2,124,945) mod 16 = (8 × 9) mod 11 = 6

Trong s hố ọc, ta thường c n tìm sầ ố dư lũy thừa c a 10 khi chia cho m t s nguyên. ủ ộ ốVí d , ta c n tính 10 mod 3, 10 mod 3, 10ụ ầ <small>23</small> mod 3, v.v… Hay ta cần tính 10 mod 7, 10<small>2</small> mod 7, 10<small>3</small> mod 7, v.v… Tính chất th ba cứ ủa toán t mod ử ở trên s làm công ẽviệc trở nên dễ dàng hơn.

10<small>𝑛</small> mod 𝑥 = ( mod 𝑥)10 <small>𝑛</small> Áp d ng tính ch t th ba l n. ụ ấ ứ 𝑛 ầ

<b>Nghịch đảo </b>

Khi ta làm việc trong số ọc mô-đun, ta thườ h ng c n tìm nghầ ịch đảo của mộ ốt s trong phép tính. Ta thường c n tìm ầ <b>nghịch đảo cộng (liên quan t i phép c ng) ho c </b>ớ ộ <b>ặ nghịch đảo nhân </b>(liên quan đến phép nhân).

Nghịch đảo cộng

Trong tập , hai sℤ<small>𝑛</small> ố 𝑎 và là ngh𝑏 ịch đảo c ng c a nhau n u ộ ủ ế𝑎 + 𝑏 ≡ 0 (mod 𝑛)

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

Trong ℤ<small>𝑛</small>, nghịch đảo c ng c a có thộ ủ 𝑎 ể được tính b ng ằ 𝑏 = 𝑛 − 𝑎. Ví d , ngh ch ụ ịđảo cộng của 4 trong ℤ<sub>𝑛</sub> là 10− 4 = 6.

Lưu ý rằng trong số học mơ-đun, mỗi một số sẽ có một nghịch đảo cộng và phần tử nghịch đảo đó là duy nhất; mỗi số có một và chỉ một nghịch đảo cộng. Tuy nhiên, nghịch đảo c ng cộ ủa một s có th là chính nó. ố ể

Ví dụ:

1. Khơng t n t i nghồ ạ ịch đảo nhân c a 8 trong ủ ℤ<small>10</small> vì gcd(10 ),8 = 2 ≠ 1. Hay nói cách khác, ta khơng thể tìm được bấ ỳ ốt k s nguyên nào từ 0 đến 9 mà khi nhân v i 8 cho k t quớ ế ả đồng dư với 1 trong modulo 10.

2. Trong ℤ<sub>10</sub> có ba cặp nghịch đảo nhân là (1, 1 3,7 , (9,9)), ( ) . Các s ố0, 2, 4, 6, 8 không có nghịch đảo nhân

(1 × 1 mod 10 = 1 ) (3 × 7 mod 10 = 1 ) (9 × 9 mod 10 = 1 )

Thuật tốn Euclid m r ng có th tìm nghở ộ ể ịch đảo nhân trong 𝑏 ℤ<sub>𝑛</sub>khi đã biết và 𝑛 𝑏và t n t i nghồ ạ ịch đảo nhân (kh nghả ịch). Để ch ng tứ ỏ điều đó, ta sẽ thay s nguyên ốđầu tiên b𝑎 ằng . B𝑛 ằng thuật tốn Euclid, ta có thể tìm được và 𝑠 𝑡 trong phương trình 𝑠 × 𝑛 + 𝑏 × 𝑡 = gcd 𝑛, 𝑏( ). Tuy nhiên, n u t n t i nghế ồ ạ ịch đảo nhân c a , ủ 𝑏

<b>đồng dư với 1 trong modulo . </b>𝒏

<b>Trong s h c mô-</b>ố ọ <b>đun, mỗ ố nguyên đềi su có m t ngh</b>ộ ịch đả<b>o c ng. T ng c a </b>ộ ổ ủ

<b>một s nguyên và ngh</b>ố ịch đả<b>o c ng c</b>ộ ủa nó đồng dư vớ<b>i 0 trong modulo 𝒏.</b>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Sử dụng toán t modulo vào c hai v cử ả ế ủa phương trình. Hay nói cách khác, ta ánh xạ c hai v tả ế ới t p . Ta s có ậ ℤ<sub>𝑛</sub> ẽ

(𝑠 × 𝑛 + 𝑏 × 𝑡) mod 𝑛 = 1 mod 𝑛

[(𝑠 × 𝑛) mod 𝑛] + 𝑏 × 𝑡) mod 𝑛] = 1 mod 𝑛 [(0 + 𝑏 × 𝑡[( ) mod 𝑛]= 1

(𝑏 × 𝑡) mod 𝑛 = 1 → 𝑡 là ph n t nghầ ử ịch đảo nhân c a trong ủ 𝑏 ℤ<small>𝑛</small>

Lưu ý, biểu th c ứ [(𝑠 × 𝑛) mod 𝑛] ở dịng th ba b ng 0 vì n u ta chia ứ ằ ế (𝑠 × 𝑛) cho , 𝑛thương tìm được là 𝑠 và số dư là 0.

a. Cách tìm nghịch đảo nhân b. Mơ t thu t tốn ả ậVí dụ tìm nghịch đảo nhân c a 11 trong ủ ℤ<sub>26</sub>:

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

vậy, 11 và 19 là nghịch đảo nhân c a nhau trong ủ ℤ<small>26</small>. Th t v y, ậ ậ (11 ×19) mod =26 209 mod = 1. 26

<b>Bảng c ng và nhân </b>ộ

Trong b ng c ng, m i s ả ộ ỗ ố nguyên đều có m t ph n t nghộ ầ ử ịch đảo c ng. Các c p ph n ộ ặ ầtử nghịch đảo được tìm th y khi k t qu c a phép c ng b ng 0. Chúng ta có các c p ấ ế ả ủ ộ ằ ặ(0, 0), (1, 9), (2, 8), (3, 7), (4, 6), và (5, 5). Trong b ng nhân, ta có ba c p nghả ặ ịch đảo nhân c a nhau là (1, 1), (3, 7), và (9, 9). Các củ ặp này được tìm th y trong b ng khi ấ ảphép nhân cho k t qu b ng 1. C hai bế ả ằ ả ảng đều đố ứng qua đười x ng chéo hướng t ừgóc trên bên trái xuống góc dưới bên phải, điều này th hi n tính giao hoán c a phép ể ệ ủnhân và phép c ng (ộ 𝑎 + 𝑏 = 𝑏 + 𝑎 𝑣à 𝑎 × 𝑏 = 𝑏 × 𝑎). B ng cả ộng cũng cho thấy m i ỗhoàng ho c c t là m t hoán v c a m t hàng ho c c t khác. ặ ộ ộ ị ủ ộ ặ ộ Điều này không đúng trong b ng nhân. ả

Bảng c ng trong ộ ℤ<sub>10</sub> Bảng nhân trong ℤ<sub>10</sub>

<b>Một s tố ập hợp khác cho phép cộng và phép nhân </b>

Trong mật mã ta thường làm vi c v i các ph n t nghệ ớ ầ ử ịch đảo. Nếu người gửi s d ng ử ụmột số nguyên (làm khóa cho mã hóa), người nh n s ph i s d ng ph n t nghậ ẽ ả ử ụ ầ ử ịch đảo c a s ủ ố nguyên đó (làm khóa giải mã). N u phép tốn (trong thu t tốn mã hóa/gi i ế ậ ảmã) là phép c ng, t p có th ộ ậ ℤ<small>𝑛</small> ể đượ ử ục s d ng làm t p h p các khóa kh thi vì m i s ậ ợ ả ỗ ốnguyên trong t p hậ ợp này đều có m t ph n t nghộ ầ ử ịch đảo cộng tương ứng. M t khác, ặnếu phép tốn (trong thu t tốn mã hóa/gi i mã) là phép nhân, không th là t p ậ ả ℤ<sub>𝑛</sub> ể ậkhóa kh thi vì ch m t sả ỉ ộ ố phần t trong t p h p này t n t i ph n t nghử ậ ợ ồ ạ ầ ử ịch đảo nhân. Ta c n m t t p hầ ộ ậ ợp khác để ể bi u di n. T p h p m i là t p con c a , ch bao g m ễ ậ ợ ớ ậ ủ ℤ<sub>𝑛</sub> ỉ ồcác s nguyên kh ngh ch trong . T p hố ả ị ℤ<small>𝑛</small> ậ ợp này được g i là ọ ℤ<small>𝑛∗</small>. Hình 2.17 ch ra ỉmột vài trường hợp c a hai t p hủ ậ ợp. Lưu ý rằng ℤ<sub>𝑛</sub><small>∗</small> có thể t o thành t b ng nhân, ví ạ ừ ảdụ như trong hình 2.16.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

Mỗi ph n t cầ ử ủa ℤ<small>𝑛</small> đều có nghịch đảo cộng, nhưng chỉ ộ ố m t s ph n t mầ ử ới t n t i ồ ạnghịch đảo nhân. M i ph n t c a ỗ ầ ử ủ ℤ<sub>𝑛</sub><small>∗</small> lại đều có nghịch đảo nhân, nhưng chỉ m t vài ộphần t là có nghử ịch đảo c ng (trong ộ ℤ<sub>𝑛</sub><small>∗</small>).

<b>Hai t p h p khác </b>ậ ợ

Mật mã thường dùng hai tập khác là và ℤ<sub>𝑝</sub> ℤ<sub>𝑝</sub><small>∗</small>. Ph n mô-ầ đun trong hai tập là m t s ộ ốnguyên t . S nguyên t là s chố ố ố ố ỉ có hai ước là 1 và chính nó.

Tập gi ng v i t p , tr vi c là m t s nguyên t . ch a t t c các s nguyên ℤ<small>𝑝</small> ố ớ ậ ℤ<small>𝑛</small> ừ ệ 𝑛 ộ ố ố ℤ<small>𝑝</small> ứ ấ ả ốtừ 0 đến p-1. Mỗi phần tử trong ℤ<sub>𝑝</sub> đều có nghịch đảo cộng và mỗi phần tử khác 0 đều có nghịch đảo nhân.

Tương tự, tập ℤ<small>𝑝∗</small>cũng giống tập ℤ<small>𝑛∗</small> với là m𝑛 ột số nguyên tố. ℤ<small>𝑝∗</small> chứa tất cả các số nguyên từ 1 đến p-1. Mỗi ph n t trong ầ ử ℤ<sub>𝑝</sub><small>∗</small> đều t n t i c nghồ ạ ả ịch đảo c ng và ộnghịch đảo nhân. ℤ<small>𝑝∗</small> là một trường hợp rất tốt trong việc chọn một tập hợp có cả nghịch đảo c ng và nghộ ịch đảo nhân.

<b>3. ĐỒNG DƯ TUYẾN TÍNH: </b>

Phương trình đồng dư tuyến tính là phương trình có dạng ax ≡ b (mod ) <i>n</i>

<i>trong đó a, b, n là các số nguyên, > 0 và là n x </i> ẩn s . ốCách gi i: ả

<i>- Tính gcd(a, n) = d, nếu d </i>b thì phương trình vơ nghiệm, nếu d | b thì phương trình có d nghiệm. Các bước tìm nghi m: ệ

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<b>4.2. M t s phép toán v ma tr n </b>ộ ố ề ậ

Cho ma tr n A,B,C ậ

<b>4.2.1. C ng ma tr n </b>ộ ậC = A + B ó 𝑐<small>𝑖𝑗</small> = 𝑎 + 𝑏<small>𝑖𝑗𝑖𝑗</small>

<b>4.2.2. Nhân ma tr n </b>ậ

C = A × B ó 𝑐<small>𝑖𝑘</small> = ∑ 𝑎 ×𝑏<small>𝑖𝑗𝑗𝑘</small>= 𝑎 𝑏<small>𝑖1</small>×<sub>1𝑗</sub>+𝑎 ×𝑏<sub>𝑖2</sub> <small>2𝑗</small>+…+𝑎<small>𝑖𝑚</small>×𝑏<small>𝑚𝑗</small> (Điều kiện: s cố ột ma tr n A = s hàng ma trậ ố ận B)

<b>4.2.3. Nhân ma tr n v i m t s </b>ậ ớ ộ ốC = tA ó = t × 𝑐<sub>𝑖𝑗</sub> 𝑎<sub>𝑖𝑗</sub> (t R) ∈

<b>4.2.4. Ma tr n ph i s chuy n v </b>ậ ụ đạ ố ể ịCho 𝐴<small>𝑛×𝑛</small>

Gọi 𝐷<sub>𝑖𝑗</sub> là định thức con của ma trận A khi b ỏđi i hàng, j cột (det(A) 0) ≠𝐴<small>∗𝑇</small>= [

<b>• Ma tr n ngh</b>ậ ịch đả<b>o i) Nghịch đảo cộng: </b>

Ma tr n B g i là nghậ ọ ịch đảo c ng c a ma tr n A ó A+B=O ộ ủ ậTrong đó O là ma trận không

<b>ii) Nghịch đảo nhân: </b>

Ma tr n nghậ ịch đảo nhân c a A, kí hi u ủ ệ 𝐴<small>−1</small>: A*𝐴<small>−1</small>=I (I: ma trận đơn vị) Cách tính: 𝐴<small>−1</small>= (det(𝐴))<small>−1</small>*𝐴<small>∗𝑇</small>

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b>MỘT S H M T C</b>Ố ỆẬ<b>Ổ ĐIỂN 1. Additive Cipher: </b>

Mật mã cộng (Additive cipher) còn được g i là m t mã ọ ậ <i>Caesar </i>(Caesar cipher), là m t d ng m t mã thay th dùng m t b ng chộ ạ ậ ế ộ ả ữ cái, trong đó mỗi chữ cái được ánh xạ tới m t sộ ố, sau đó được mã hóa thơng qua phép cộng <i>module</i>.

Để th c hi n mự ệ ật mã hóa Caesar, trước tiên ta cần ánh xạ các kí t trong b ng ự ảchữ cái (La tinh) thành các số tương ứng 0..25

Sau đó, ta thực hiện q trình mã hóa theo sơ đồ sau:

Ở<i><b> đây, khóa k là một số nguyên có giá trị thuộc tập Z</b></i><b><small>26</small> = </b>{0,1,2,…,25}VD: Mã hóa bản tin P = “VIETNAM” bằng mật mã cộng với khóa = 5 <i>k</i>

V 21 => Encryption: (21 + 05) mod 26 = 00 A I 08 => Encryption: (08 + 05) mod 26 = 13 N E 04 => Encryption: (04 + 05) mod 26 = 09 J T 19 => Encryption: (19 + 05) mod 26 = 24 Y N 13 => Encryption: (13 + 05) mod 26 = 18 S A 00 => Encryption: (00 + 05) mod 26 = 05 F M 12 => Encryption: (12 + 05) mod 26 = 17 R => C = “ANJYSFR”

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

Để giải mã, ta thực hiện theo sơ đồ sau:

Trong công thức này, - là ph n t ngh<i>k</i> ầ ử ịch đảo c ng c a trong t p ộ <i>ủ k</i> <b>ậ Z<small>26</small></b>:

<i>(k + (-k)) mod 26 = 0 </i>

VD: Giả sử thu được ciphertext như ví dụ ở trên, bi t khóa = 5. Tìm plaintext? ế <i>kk </i>= 5 => - = 21<i>k </i>

A 00 => Decryption: (00 + 21) mod 26 = 21 V N 13 => Decryption: (13 + 21) mod 26 = 08 I J 09 => Decryption: (09 + 21) mod 26 = 04 E Y 24 => Decryption: (24 + 21) mod 26 = 19 T S 18 => Decryption: (18 + 21) mod 26 = 13 N F 05 => Decryption: (05 + 21) mod 26 = 00 A R 17 => Decryption: (17 + 21) mod 26 = 12 M => P = “VIETNAM”

<b>2. Multiplicative Cipher: </b>

Mật mã nhân (Multiplicative cipher) là một d ng m t mã thay th dùng mạ ậ ế ột bảng ch ữ cái, trong đó mỗi ch ữ cái được ánh x t i m t sạ ớ ộ ố, sau đó được mã hóa thơng qua phép nhân module.

Để thực hiện mật mã hóa Caesar, trước tiên ta cần ánh xạ các kí t trong b ng ự ảchữ cái (La tinh) thành các số tương ứng 0..25

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

Sau đó, ta thực hiện quá trình mã hóa theo sơ đồ sau:

Ở<i><b> đây, khóa k là một số nguyên có giá trị thuộc tập Z</b></i><b><small>26</small> = </b>{0,1,2,…,25}VD: Mã hóa bản tin P = “VIETNAM” bằng mật mã nhân với khóa = 5 <i>k</i>

V 21 => Encryption: (21 x 05) mod 26 = 01 B I 08 => Encryption: (08 x 05) mod 26 = 14 O E 04 => Encryption: (04 x 05) mod 26 = 20 U T 19 => Encryption: (19 x 05) mod 26 = 17 R N 13 => Encryption: (13 x 05) mod 26 = 13 N A 00 => Encryption: (00 x 05) mod 26 = 00 A M 12 => Encryption: (12 x 05) mod 26 = 08 I => C = “BOURNAI”

Để giải mã, ta thực hiện theo sơ đồ sau:

<i>Trong công thức này, k</i><small> -1</small> là ph n t nghầ ử ịch đảo nhân c a trong t p <i>ủ k</i> <b>ậ Z<small>26</small></b>

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<b>3. Nguyên lý t o khóa vòng </b>ạ

16 vòng l p c a DES ch y cùng thuặ ủ ạ ật toán như nhau nhưng với 16 khóa con khác nhau. Các khóa con đều được sinh ra từ khóa chính của DES bằng thuật tốn sinh khóa con.

Khóa ban đầu là 1 xâu có dài 64 bit, bit thđộ ứ 8 của m i byte sẽ được lấy ra để ỗkiểm tra phát hi n l i, t o ra chu i 56 bit. Sau khi b các bit ki m tra ta s hoán vệ ỗ ạ ỗ ỏ ể ẽ ị chuỗi 56 bit này. Hai bước trên được thực hi n thơng qua hốn v ma tr n PC-1 ệ ị ậ(Permuted choice 1).

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

Tiếp theo ta k t qu sau khi PC-1 thành 2 phế ả ần : C0 : 28 bit đầu. D0 : 28 bit cu i. ốMỗi ph n s ầ ẽ được xử lý 1 cách độ ậc l p. Ci = LSi(Ci-1) Di = LSi(Ci-1) với 1 ≤ i ≤ 16. LSi là bi u di n phép d ch bit vòng (cyclic shift) sang trái 1 ho c 2 v trí tùy ể ễ ị ặ ịthuộc vào i.

Cuối cùng s d ng hoán vử ụ ị cố định PC-2 (Permuted choice 2) để hoán vị chu i CiDi ỗ56 bit t o thành khóa Ki v i 48 bit. ạ ớ

</div>

×