Các giải thuật mật mã đối xứng là các giải thuật sử dụng cùng một khóa bí mật cho tác vụ mã hóa và tác vụ giải mã
Lời Nói Đầu Thế giới của chúng ta luôn sôi sục trong muôn vàn biến động được tạo ra bởi con người. Và trong thế kỷ 20 này, máy tính là một trong những sản phẩm vĩ đại nhất. Cùng với thời gian, người ta không muốn sử dụng một máy tính đơn lẻ nữa mà sẽ kết nối các máy này lại thành một mạng máy tính nhằm tăng khả năng làm việc, hiểu biết, trao đổi, cập nhật các thông tin … Mạng Internet là xu hướng phát triển của thế giới ngày nay. Hiện nay, Internet đã trở nên rất phổ biến trên tồn thế giới. Thông qua mạng Internet mọi người có thể trao đổi thông tin với nhau một cách nhanh chóng thuận tiện. Những công ty phát triển và kinh doanh trên môi trường Intranet/Internet họ phải đối diện với khó khăn lớn là làm thế nào để bảo vệ những dữ liệu quan trọng, ngăn chặn những hình thức tấn công, truy xuất dữ liệu bất hợp pháp từ bên trong (Intranet), lẫn cả bên ngồi (Internet). Khi một người muốn trao đổi thông tin với một người hay một tổ chức nào đó thông qua mạng máy tính thì yêu cầu quan trọng là làm sao để đảm bảo thông tin không bị sai lệch hoặc bị lộ do sự xâm nhập của kẻ thứ ba. Trước các yêu cầu cần thiết đó, một số giải thuật mã hóa đã dược xây dựng nhằm đảm bảo tính an tồn dữ liệu tại nơi lưu trữ cũng như khi dữ liệu được truyền trên mạng, như các giải thuật mã hóa đối xứng (DES), giải thuật mã hóa công khai, . Việc tìm hiểu và xây dựng chương trình các giải thuật này cũng không nằm ngồi mục đích của bản luận văn này. Luận văn có nhiệm vụ tìm hiểu lý thuyết về mật mã hố thông tin, xây dựng server tạo khóa cho user trong vấn đề bảo mật dữ liệu. Do thời gian và khả năng có hạn, trong khi phạm vi đề tài lại rộng, những người thực hiện chỉ có thể tìm hiểu được một số giải thuật chính như : DES, ECB, CBC, RSA, MD5 và qua đó đưa ra mô hình server tạo khóa cho các user, cụ thể là làm thế nào để quản lý và phân phối khóa một cách an tồn, hiệu quả. Chắc chắn rằng tập thuyết minh này sẽ không tránh khỏi những thiếu sót, người thực hiện mong nhận được sự góp ý, chỉ dẫn thêm của các Thầy Cô, bạn bè để bản thuyết minh được hồn thiện hơn. Chúng tôi xin chân thành cảm ơn Thầy hướng dẫn, các Thầy Cô trong khoa đã tạo điều kiện thuận lợi để bản thuyết minh này có thể hồn thành đúng thời hạn. Chương 1: Các hệ mật mã 1. Hệ mật mã đối xứng: 1.1. Giới thiệu: Các giải thuật mật mã đối xứng là các giải thuật sử dụng cùng một khóa bí mật cho tác vụ mã hóa và tác vụ giải mã. Ví du ïnhư các giải thuật thay thế và hốn vị, giải thuật DES,…. Ở đây ta chỉ tìm hiểu giải thuật DES (Data Encryption Standard) là giải thuật mật mã đối xứng được sử dụng phổ biến nhất. 1.2. Giải thuật DES (Data Encryption Standard) : Vào năm 1977, "National Bureau of standard" đã đưa ra chuẩn DES để sử dụng cho các ứng dụng ở Mỹ. DES mã hóa các khối data 64 bits với khóa 56 bits. Giải thuật dùng để mã hóa lẫn giải mã được mô tả tóm tắt như hình 1. Trước tiên 64 bit input T được hốn vị bởi phép hốn vị hốn vị khởi động IP, với To = IP(T). Sau khi qua 16 vòng lặp (mỗi vòng sử dụng một khóa 48 bit được tạo ra từ khóa input 56 bits) với tác động của hàm F, nó được hốn vị bằng phép hốn vị đảo IP -1 để tạo ra 64 bit output cuối cùng. IP và IP -1 được cho trong các bảng (bảng 1a và bảng 1b). Các bảng này được đọc từ trái sang phải, từ trên xuống dưới theo dạng: T = t 1 t 2 … t 64 T 0 = t 58 t 50 …….t 7 Đầu tiên khối T được tách thành hai khối trái và phải (mỗi khối 32 bits): T = L 0 R 0 với L 0 = t 1 … t 32 , R 0 = t 33 … t 64 . Ở vòng lặp thứ i (0 < i < 16) : L i = R i-1 , R i = L i-1 ⊕ F(R i-1 , K i ) trong đó ⊕ là phép cộng exclusive_or và K i là khóa 48 bits. Ở vòng lặp cuối cùng các nhánh trái và phải không đổi chỗ cho nhau vì vậy input của IP -1 là R 16 L 16 . Hàm F và S_boxes: (hình 3) Trước tiên R i-1 được mở rộng thành khối 48 bits E(R i-1 ) với E là bảng lựa chọn bit được cho trong bảng 2. Sau đó thực hiện phép XOR E(R i-1 ) với K i và kết quả được tách thành 8 khối 6 bit từ B 1 tới B 8 : E(R i-1 ) ⊕ K i = B 1 B 2 .B 8 Mỗi khối B j sau đó được đưa vào một hàm S j (S - box) : S j (B j ) trả về một khối 4 bit (bảng 4). Các khối này được nối lại và khối kết quả 32 bit được hốn vị bằng phép P (bảng 3). F(R i-1 , K i ) = P(S 1 (B 1 ) …. S 8 (B 8 )) Hoạt động của S-box: số nguyên tương ứng với b 1 b 6 sẽ chọn Row trong bảng, còn số nguyên tương ứng với b 3 b 4 b 5 b 6 sẽ chọn Column. Giá trị của S j (B j ) được chọn sẽ là một số nguyên 4 bit ở vị trí Row và Column đó. Tính khóa: (hình 2) DES tạo ra 16 khóa, mỗi khóa chiều dài 48 bit từ một khóa input 56 bit, dùng cho 16 vòng lặp. Lưu đồ tính tốn khóa được cho trong hình 2: Khóa input là một khối 64 bit, với 8bit parity tại các vị trí 8, 16,.…, 64. Permutation PC-1 sẽ loại bỏ các bit parity và sẽ hốn vị 56 bit còn lại theo bảng 5. Kết quả, PC-1(K) sau đó được chia thành hai phần C 0 và D 0 mỗi phần 28 bit. Khóa K i dùng trong vòng thứ i được tạo ra từ C i-1 và D i-1 theo quy tắc như sau: trong các vòng 1, 2, 9 và 16, C i-1 và D i-1 được quay vòng một bít qua trái, trong các vòng còn lại thì được quay vòng hai bít qua trái. Qua phép quay vòng này C i-1 và D i-1 sẽ được biến đổi thành C i và D i . Hốn vị C i và D i theo bảng 6. Sau khi hốn vị C i bỏ qua các bít 9, 18, 22, 25 tạo thành nữa trái của K i (24 bít), còn D i bỏ đi các bít 35, 38, 43, 54 tạo ra nữa phải của K i (24 bít). Ghép nữa trái và nữa phải tạo ra khóa K i 48 bít. Giải mã: Quá trình giải mã được thực hiện theo cùng giải thuật này theo thứ tự ngược lại như sau: IP -1 là đảo của IP và ở vòng lặp thứ i sử dụng khóa K 17-i (K 16 ở vòng lặp đầu tiên, K 1 ở vòng lặp cuối cùng) và: R i-1 = L i L i-1 = R i ⊕ F(L i , K i ) Input Khởi tạo hoán vò L 1 =Ro Ro + F + F + F Đảo khởi tạo hóan vò Output Lo R 1 = Lo + F(R 1 ,K 1 ) L 15 = R 14 R 2 = L 1 + F(R 1 ,K 2 )L 2 = R 1 R 15 = L 14 + F(R 14 ,K 15 ) + F R 16 = L 15 + F(R 15 ,K 16 ) L 16 = R 15 1,2,3, . 64 1 ,2,3, . 64 1 ,2,3, . 32 K 1 K 2 Kn K 16 Hình 1: Encryption computation 1,2,3, . 32 Chọn hóan vò 1 Left Shift Left Shift Left ShiftLeft Shift Left Shift Left Shift Chọn hóan vò 2 Chọn hoán vò 2 Chọn hoán vò 2 1,2,3, . 64 1,2,3, . 28 1,2,3, . 28 K 1 Kn K 16 Hình 2: Key Schedule Calculation Key Key Key C 1 D 1 Cn Dn C 16 D 16 S 1 S 2 S 3 S 6 S 5 S 7 S 4 S 8 P 32 bits + E 48 bits K ( 48 bits ) R (32 bits) Hình 3 : Calculation of f(R,K) 6 4 Bảng 1a: Bảng hốn vị đầu tiên IP Bảng 1b: Bảng hốn vị cuối cùng IP -1 Bảng 2: Bảng chọn bít E Bảng 3: Bảng hốn vị P Bảng 5: Bảng hốn vị khóa PC-1 Bảng 6: Bảng hốn vị khóa PC-2 Column Row 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Box 0 1 2 14 0 4 4 15 1 13 7 14 1 4 8 2 14 13 15 2 6 11 13 2 8 1 11 3 10 15 10 6 12 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25 32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4 14 17 11 24 1 5 3 8 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 15 15 3 0 13 10 13 13 1 7 13 10 3 2 14 4 11 12 10 9 4 4 13 1 6 13 1 7 2 12 1 13 14 8 0 7 6 10 13 8 6 15 12 11 2 8 1 15 14 3 11 0 4 11 2 15 11 1 8 8 4 7 10 9 0 4 13 14 11 9 0 4 2 1 12 10 4 15 2 2 11 11 13 8 13 4 14 2 14 7 11 1 14 9 9 0 3 5 0 6 1 12 11 7 15 2 5 12 14 7 13 8 4 8 1 7 4 6 15 10 3 6 3 8 6 0 6 12 10 7 4 10 1 9 7 2 9 15 4 12 1 6 10 9 4 9 11 2 4 15 3 4 15 9 6 15 11 1 10 7 13 14 2 12 8 5 0 9 3 4 15 3 12 10 1 3 8 13 4 15 6 3 8 9 0 7 13 11 13 7 2 6 9 12 15 8 1 7 10 11 7 14 8 7 4 14 1 2 5 10 0 7 10 3 13 8 6 1 8 13 8 5 3 10 13 10 14 7 1 4 2 13 5 9 12 5 11 1 2 11 4 1 4 15 9 8 5 15 6 0 6 7 11 3 14 10 9 10 12 0 15 11 7 0 8 6 13 8 1 15 2 7 1 4 5 0 9 15 13 1 0 14 12 3 15 5 9 5 6 12 Bảng 4: Bảng chọn (S-boxex) 1.2.1. DES In Electronic CodeBook Mode (ECB) : Ở mode này, các khối data dưới dạng rỏ (clear text) được đưa vào input của DES. Các khối kết quả dưới dạng mật mã (ciphertext) có thể được sử dụng cho các ứng dụng khác. Quá trình biến đổi diễn ra như sau: (hình 4) Clear text Input block DES Output block Ciphertext. ECB encryption ECB decription Clear text (D 1 , D 2 , . D 64 ) Cipher text (C 1 , C 2 , … C 64 ) Hình 4: Electronic Codebook Mode (ECB) 1.2.2. DES In Cipher Block Chaining Mode (CBC) : Khối data cần mã hóa được chia thành các khối B 1 , B 2 , … B n với kích thước mỗi khối là 64 bits. Vectơ khởi tạo IV (64 bits) được chọn. Sơ đồ mật mã đưọc cho trong hình 5: + Quá trình mã hóa: (1) IV ⊕ B 1 C 1 (2) C 1 ⊕ B 2 C 2 . . (n) C n-1 ⊕ B n C n + Quá trình giải mã: C 1 IV ⊕ B 1 , (IV ⊕ B 1 ) ⊕ IV = B 1 C 2 C 1 ⊕ B 2 , (C 1 ⊕ B 2 ) ⊕ C 1 = B 2 . . C n C n-1 ⊕ B n , (C n-1 ⊕ B n ) ⊕ C n-1 = B n Input block (I 1 , I 2 , … I 64 ) DES encrypt Output block (O 1 , O 2 , … O 64 ) Cipher text (C 1 , C 2 , … C 64 ) Clear text (D 1 , D 2 , . D 64 ) Input block (I 1 , I 2 , … I 64 ) DES decrypt Output block (O 1 , O 2 , … O 64 ) Mã hóa Giải mã IV B 1 B 2 B n Time = 1 Time = 2 . Time = n + + + Hình 5: Cipher Block Chaining (CBC) mode 2. Hệ mật mã bất đối xứng 2.1. Giới thiệu: - Sự phát triển của mật mã khóa công khai là rất lớn và có lẽ chính nó tạo ra cuộc cách mạng trong tồn bộ lịch sử của mật mã khóa. - Những giải thuật khóa công khai đều dựa trên những hàm tốn học hơn là những phép thay thế và hốn vị trong mật mã khóa cổ điển. Quan trọng hơn mật mã khóa công khai có tính chất bất đối xứng, bao gồm việc sử dụng 2 khóa riêng biệt tương phản với mã hóa qui ước có tính đối xứng mà chỉ sự dụng 1 khóa. Việc sử dụng 2 khóa có tầm quan trọng sâu sắc trong lĩnh vực cần tính bí mật, phân bố khóa và sự chứng thực. - Một số quan niệm sai liên quan đến mã hóa khóa công khai : + Mã hóa khóa công khai thì bảo mật đối với nhà phân tích mật mã hơn là mã hóa qui ước. Thật ra, tính bảo mật của bất kỳ sơ đồ mã hóa nào đều phụ thuộc vào chiều dài của khóa và việc tính tốn để giải quyết việc bẻ khóa. + Mã hóa khóa công khai có mục tiêu chung, kỹ thuật được thực hiện bằng mã hóa qui ước lỗi thời. Ngược lại, bời vì việc tính tốn được đặt hàng đầu trong sơ đồ mã hóa khóa I I I DES encry DES encry DES encry C 1 C 2 C n I I I DES decry DES decry DES decry IV + + + B 1 B 2 B n . Mã hóa Giải mã [...]... ngược như trong quá trình mã hóa và giải mã, nghĩa là với một message_digest cho trước, khó có thể tìm được một message nào mà có hàm băm bằng message_digest này + Khó có thể tìm được hai message mà có cùng một message_digest - Các giải thuật băm được sử dụng hiện nay là: MD2, MD4, MD5, SHS Trong đó MD5 là giải thuật băm được sử dụng phổ biến và nó sẽ được trình bày trong phần dưới - Giải thuật MD5 được. .. của phương trình bậc hai này sẽ là p, q Tuy nhiên vấn đề có được Φ(n) còn khó hơn tính hai thừa số của n nhiều 2.5.2.1 Phương pháp p-1: Chúng ta biết rằng nếu n . nữa c c gi i thu t này c nh ng đ c i m quan trọng sau: + Đó là vi c t nh t n m t c ch không khả thi để x c đ nh khóa gi i m trong khi ch bi t gi i thu t. v i khóa 970 b t. Ngư i ta mong đ i rằng t c độ RSA s đ t 1Mbps vào cu i n m1 999. So s nh v i gi i thu t DES và c c gi i thu t m kh i kh c thì RSA ch m