Toán tử cho kết quả một thặng dư không âm
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG ĐIỆN – ĐIỆN TỬ
□&□
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
Hà N i, 5/2023 ộ
Trang 2MỤC L C Ụ
CƠ SỞ TOÁN HỌC 4
1 S H C CÁC S NGUYÊN: 4 Ố ỌỐ2 S H C MÔ-Ố ỌĐUN: 5
Toá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
Trang 31.Lịch sử hình thành hệ mật DES 25 2.Mô hình h m t DES 25 ệ ậ3 Nguyên lý t o khóa vòng 27 ạ4 Quá trình mã hóa DES 29 5 Quá 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ả
Trang 4CƠ SỞ TOÁN HỌC 1 S H C CÁC S NGUYÊN: Ố ỌỐ
- 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)
Trang 5Toán t modulo ử
Toán tử hai ngôi được nhắc đế ở trên đượn c g i là ọ toán t moduloử và được ký hi u ệ
là mod Đầu vào th hai (ứ 𝑛) được g i là ọ mô-đun (ti ng Anh: ế modulus) Đầu ra 𝑟 được gọi là thặng dư ếng Anh: residue) (ti
Toán t modulo (ử mod ấ) 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
Tập h p các thợ ặng dư ℤ𝒏
Kết qu c a phép toán modulo vả ủ ới mô-đun 𝑛 luôn 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à tập h p các thợ ặng dư nhỏ nh t trong modulo ấ 𝒏, hay được viết là ℤ𝒏
𝒂 𝐦𝐨𝐝 𝒏 = 𝒓
Trang 6Mặ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ư (ℤ𝑛) ng v i m i giá tr c a khác nhau ứ ớ ỗ ị ủ 𝑛
Ví dụ m t s t p h p thộ ố ậ ợ ặng dư:
Đồng dư
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ạ ừℤ ớ ℤ𝑛 ả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 ộ ầ ử ℤ𝑛 ố ầ ử ủ ậℤ có th ánh x t i m t ph n t trong t p ể ạ ớ ộ ầ ử ậ ℤ𝑛 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
toán tử đồng dư ( ) và thêm c m t (mod ) vào bên ph≡ ụ ừ 𝑛 ả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 đó toán t ử đồng dư ánh xạ các phầ ử ừ ận t t t p sang m t ph n t t p Th hai, ℤ ộ ầ ử ở ậ ℤ𝑛 ứtoán t bử ằng tương ứng một tới m t; còn toá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 (ℤ𝑛) 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à toá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à ℤ) 10
Trang 7Các s nguyên trong t p h p ố ậ ợ [0] khi th c hiự ện phép toá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ሽ5 Nói cách khác, t p h p là t p các ậ ợ ℤ𝒏 ậ thặng dư nhỏ nhất trong modulo 𝑛
Biểu đồ tròn
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 ễ ố ậ ℤ𝑛
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) 2 1 0 1 2 (𝑛 − 1)
(𝑛 − 1) (𝑛 − 2)
Trang 8nê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 ổ ề
Phép toán trong ℤ𝒏
Ba phép toá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ℤ𝑛 ết quả của toán tử trong sℤ𝑛 ẽ cần được ánh xạ tới tập ℤ𝑛bằng việc sử ụ d ng toán t mod ử
Thực ra, có hai lo i toán t ạ ử đã được sử d ng ụ ở đây Loại th nhứ ất đó là một trong các toán t hai ngôi (ử +, −,×); và th hai là toá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 𝑛
Tính ch t ấ
Ta đã từng đề cập tới việc hai đầu vào của phép toán hai ngôi trong số học mô-đun có thể n m trong t p ho c Tính chằ ậ ℤ ặ ℤ𝑛 ấ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 ớ ậ ℤ𝑛 ế ớ ừ ậ ℤ) trước khi th c hi n ba phép toán hai ngôi ự ệ
Tính ch t th nhấ ứ ất: (𝑎 + 𝑏) mod 𝑛 = [(𝑎 mod 𝑛) + (𝑏 mod 𝑛)] mod 𝑛
Tính ch t th hai:ấ ứ (𝑎 − 𝑏) mod 𝑛 = [(𝑎 mod 𝑛) − (𝑏 mod 𝑛)] mod 𝑛
Tính ch t th ba: ấ ứ (𝑎 × 𝑏) mod 𝑛 = [ 𝑎 mod 𝑛 × (𝑏 mod 𝑛)] mod 𝑛( )
Trang 9Mặ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ụ ầ 23 mod 3, v.v… Hay ta cần tính 10 mod 7, 102 mod 7, 103 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𝑛 mod 𝑥 = ( mod 𝑥)10 𝑛 Áp d ng tính ch t th ba l n ụ ấ ứ 𝑛 ầ
Nghịch đảo
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 ầ nghịch đảo cộng (liên quan t i phép c ng) ho c ớ ộ ặ nghịch đảo nhân (liên quan đến phép nhân)
Nghịch đảo cộng
Trong tập , hai sℤ𝑛 ố 𝑎 và là ngh𝑏 ịch đảo c ng c a nhau n u ộ ủ ế𝑎 + 𝑏 ≡ 0 (mod 𝑛)
Trang 10Trong ℤ𝑛, 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 ℤ𝑛 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 ủ ℤ10 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 ℤ10 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 toán Euclid m r ng có th tìm nghở ộ ể ịch đảo nhân trong 𝑏 ℤ𝑛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 toá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 , ủ 𝑏
đồng dư với 1 trong modulo 𝒏
Trong s h c mô-ố ọ đun, mỗ ố nguyên đềi su có m t nghộ ịch đảo c ng T ng c a ộ ổ ủ
một s nguyên và nghố ịch đảo c ng cộ ủa nó đồng dư với 0 trong modulo 𝒏.
Trang 11Sử 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ó ậ ℤ𝑛 ẽ
(𝑠 × 𝑛 + 𝑏 × 𝑡) mod 𝑛 = 1 mod 𝑛
[(𝑠 × 𝑛) mod 𝑛] + 𝑏 × 𝑡) mod 𝑛] = 1 mod 𝑛 [(0 + 𝑏 × 𝑡[( ) mod 𝑛]= 1
(𝑏 × 𝑡) mod 𝑛 = 1 → 𝑡 là ph n t nghầ ử ịch đảo nhân c a trong ủ 𝑏 ℤ𝑛
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 toán ả ậVí dụ tìm nghịch đảo nhân c a 11 trong ủ ℤ26:
Trang 12vậy, 11 và 19 là nghịch đảo nhân c a nhau trong ủ ℤ26 Th t v y, ậ ậ (11 ×19) mod =26 209 mod = 1 26
Bảng c ng và nhân ộ
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 ộ ℤ10 Bảng nhân trong ℤ10
Một s tố ập hợp khác cho phép cộng và phép nhân
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 toán (trong thu t toán mã hóa/gi i ế ậ ảmã) là phép c ng, t p có th ộ ậ ℤ𝑛 ể đượ ử ụ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 toán (trong thu t toán mã hóa/gi i mã) là phép nhân, không th là t p ậ ả ℤ𝑛 ể ậ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 ễ ậ ợ ớ ậ ủ ℤ𝑛 ỉ ồcác s nguyên kh ngh ch trong T p hố ả ị ℤ𝑛 ậ ợp này được g i là ọ ℤ𝑛∗ 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 ℤ𝑛∗ có thể t o thành t b ng nhân, ví ạ ừ ảdụ như trong hình 2.16
Trang 13Mỗi ph n t cầ ử ủa ℤ𝑛 đề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 ỗ ầ ử ủ ℤ𝑛∗ 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 ộ ℤ𝑛∗)
Hai t p h p khác ậ ợ
Mật mã thường dùng hai tập khác là và ℤ𝑝 ℤ𝑝∗ 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 ℤ𝑝 ố ớ ậ ℤ𝑛 ừ ệ 𝑛 ộ ố ố ℤ𝑝 ứ ấ ả ốtừ 0 đến p-1 Mỗi phần tử trong ℤ𝑝 đề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 ℤ𝑝∗cũng giống tập ℤ𝑛∗ với là m𝑛 ột số nguyên tố ℤ𝑝∗ chứa tất cả các số nguyên từ 1 đến p-1 Mỗi ph n t trong ầ ử ℤ𝑝∗ đều t n t i c nghồ ạ ả ịch đảo c ng và ộnghịch đảo nhân ℤ𝑝∗ 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
3 ĐỒNG DƯ TUYẾN TÍNH:
Phương trình đồng dư tuyến tính là phương trình có dạng ax ≡ b (mod ) n
trong đó a, b, n là các số nguyên, > 0 và là n x ẩn s ốCách gi i: ả
- Tính gcd(a, n) = d, nếu d 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: ệ
Trang 144.2 M t s phép toán v ma tr n ộ ố ề ậ
Cho ma tr n A,B,C ậ
4.2.1 C ng ma tr n ộ ậC = A + B ó 𝑐𝑖𝑗 = 𝑎 + 𝑏𝑖𝑗𝑖𝑗
4.2.2 Nhân ma tr n ậ
C = A × B ó 𝑐𝑖𝑘 = ∑ 𝑎 ×𝑏𝑖𝑗𝑗𝑘= 𝑎 𝑏𝑖1×1𝑗+𝑎 ×𝑏𝑖2 2𝑗+…+𝑎𝑖𝑚×𝑏𝑚𝑗 (Điều kiện: s cố ột ma tr n A = s hàng ma trậ ố ận B)
4.2.3 Nhân ma tr n v i m t s ậ ớ ộ ốC = tA ó = t × 𝑐𝑖𝑗 𝑎𝑖𝑗 (t R) ∈
4.2.4 Ma tr n ph i s chuy n v ậ ụ đạ ố ể ịCho 𝐴𝑛×𝑛
Gọi 𝐷𝑖𝑗 là định thức con của ma trận A khi b ỏđi i hàng, j cột (det(A) 0) ≠𝐴∗𝑇= [
• Ma tr n nghậ ịch đảo i) Nghịch đảo cộng:
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
ii) Nghịch đảo nhân:
Ma tr n nghậ ịch đảo nhân c a A, kí hi u ủ ệ 𝐴−1: A*𝐴−1=I (I: ma trận đơn vị) Cách tính: 𝐴−1= (det(𝐴))−1*𝐴∗𝑇
Trang 15MỘT S H M T CỐ ỆẬỔ ĐIỂN 1 Additive Cipher:
Mật mã cộng (Additive cipher) còn được g i là m t mã ọ ậ Caesar (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 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
Sau đó, ta thực hiện quá trình mã hóa theo sơ đồ sau:
Ở đây, khóa k là một số nguyên có giá trị thuộc tập Z26 = {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 k
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”
Trang 16Để giải mã, ta thực hiện theo sơ đồ sau:
Trong công thức này, - là ph n t nghk ầ ử ịch đảo c ng c a trong t p ộ ủ k ậ Z26:
(k + (-k)) mod 26 = 0
VD: Giả sử thu được ciphertext như ví dụ ở trên, bi t khóa = 5 Tìm plaintext? ế kk = 5 => - = 21k
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”
2 Multiplicative Cipher:
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
Trang 17Sau đó, ta thực hiện quá trình mã hóa theo sơ đồ sau:
Ở đây, khóa k là một số nguyên có giá trị thuộc tập Z26 = {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 k
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:
Trong công thức này, k -1 là ph n t nghầ ử ịch đảo nhân c a trong t p ủ k ậ Z26
Trang 183 Nguyên lý t o khóa vòng ạ
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 toá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 hoán v ma tr n PC-1 ệ ị ậ(Permuted choice 1)
Trang 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 ạ ớ