Tiểu luận môn toán học cho khoa học máy tính MÃ HÓA TRONG TIN HỌC LÝ THUYẾT VÀ ỨNG DỤNG

23 707 0
Tiểu luận môn toán học cho khoa học máy tính MÃ HÓA TRONG TIN HỌC  LÝ THUYẾT VÀ ỨNG DỤNG

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN  CAO HỌC KHÓA 8 BÀI THU HOẠCH MÔN HỌC TOÁN CHO KHOA HỌC MÁY TÍNH ĐỀ TÀI MÃ HÓA TRONG TIN HỌC - LÝ THUYẾT VÀ ỨNG DỤNG Giảng viên hướng dẫn: PGS.TSĐỗ Văn Nhơn Học viên thực hiện: CH1301031 - Nguyễn Thành Phương TP. Hồ Chí Minh, tháng 12 năm 2013 MỤC LỤC GVHD: PGS.TS Đỗ Văn Nhơn HV: Nguyễn Thành Phương Trang 3 CHƯƠNG 1: TỔNG QUAN 1.1 Đặt vấn đề Với sự phát triển mạnh mẽ của công nghệ thông tin, đặt biệt là sự phát triển của mạng Internet, ngày càng có nhiều thông tin được lưu giữ trên máy vi tính và gửi đi trênmạng Internet. Và do đó xuất hiện nhu cầu về an toàn và bảo mật thông tin trên máy tính. Có thể phân loại mô hình an toàn bảo mật thông tin trên máy tính theo hai hướng chính như sau: 1) Bảo vệ thông tin trong quá trình truyền thông tin trên mạng (Network Security) 2) Bảo vệ hệ thống máy tính, và mạng máy tính, khỏi sự xâm nhập phá hoại từ bên ngoài (System Security). Mã hóa dữ liệu (cryptography), là một phần cơ bản thiết yếu của bảo mật thông tin. Mật mã đáp ứng được các nhu cầu về tính bảo mật (confidentiality), tính chứng thực (authentication) và tính không từ chối (non-repudiation) của một hệ truyền tin. Báo cáo này sẽ tập trung tìm hiểu các khái niệm lý thuyết về mã hóa đối xứng và mã hóa bất đối xứng, chúng đóng vai trò quan trọng trong mật mã hiện đại. 1.2 Mục tiêu đề tài - Tìm hiểu lý thuyết về mã hóa đối xứng và mã hóa bất đối xứng - Viết một chương trình đơn giản minh họa hai kĩ thuật mã hóa trên GVHD: PGS.TS Đỗ Văn Nhơn HV: Nguyễn Thành Phương Trang 4 CHƯƠNG 2: LÝ THUYẾT MÃ HÓA 2.1 Tổng quan về mã hóa Trong mật mã học, một ngành toán học ứng dụng cho công nghệ thông tin, mã hóa là phương pháp để biến thông tin (phim ảnh, văn bản, hình ảnh ) từ định dạng bình thường sang dạng thông tin không thể hiểu được nếu không có phương tiện giải mã. Giải mã là phương pháp để đưa từ dạng thông tin đã được mã hóa về dạng thông tin ban đầu, quá trình ngược của mã hóa. Một hệ thống mã hóa bao gồm các thành phần: • thông tin trước khi mã hóa, kí hiệu là P • thông tin sau khi mã hóa, kí hiệu là C • chìa khóa, kí hiệu là K • phương pháp mã hóa/giải mã, kí hiệu là E/D. Quá trình mã hóa được tiến hành bằng cách áp dụng hàm toán học E lên thông tin P, vốn được biểu diễn dưới dạng số, để trở thành thông tin đã mã hóa C. Quá trình giải mã được tiến hành ngược lại: áp dụng hàm D lên thông tin C để được thông tin đã giải mã P. 2.1.1 Lịch sử mật mã học Mật mã học là một ngành khoa học có một lịch sử khoảng 4000 năm. Các cổ vật của ngành khảo cổ học thu được đã cho thấy điều này. Những người Ai cập cổ đại đã sử dụng các chữ tượng hình như là một dạng mã hóa đơn giản nhất trên các bia mộ của họ. Các tài liệu viết tay khác cũng cho thấy các phương pháp mã hóa đơn giản đầu tiên mà loài người đã sử dụng là của người Ba Tư cổ và người Do Thái cổ. Tuy vậy có thể chia lịch sử mật mã học thành hai thời kỳ như sau: Thời kỳ tiền khoa học: Từ trước công nguyên cho tới năm 1949. Trong giai đoạn này mật mã học được coi là một nghệ thuật nhiều hơn là một môn khoa học mặc dù đã được ứng dụng trong thực tế. Lịch sử của mật mã học được đánh dấu vào năm 1949 khi Claude Shannon đưa ra lý thuyết thông tin. Sau thời kỳ này một loạt các nghiên cứu quan trọng của nghành mật mã học đã được thực hiện chẳng hạn như các nghiên cứu về mã khối, sự ra đời của các hệ mã mật khóa công khai và chữ ký điện tử. Qua nhiều thế kỷ phát triển của mật mã học chủ yếu được phục vụ cho các mục đích quân sự (gián điệp, ngoại giao, chiến tranh…). Một ví dụ điển hình là 2000 năm trước đây hoàng đế La mã Julius Caesar đã từng sử dụng một thuật toán thay thế đơn giản mà ngày nay được mang tên ông trong cuộc chiến tranh Gallic. Blaise De Vegenere cũng là tác giả của hệ mã mang tên ông, hệ mã này đã từng được xem là an toàn tuyệt đối và được sử dụng trong một thời gian dài, tuy nhiên Charles Babbages đã thực hiện thám mã thành công vào năm 1854 nhưng điều này được giữ bí mật. Một thuật GVHD: PGS.TS Đỗ Văn Nhơn HV: Nguyễn Thành Phương Trang 5 toán thám mã được phát hiện độc lập bởi một nhà khoa học người Phổ (thuộc nước Đức ngày nay) có tên là Friedrich Kasiski. Tuy vậy do việc thiếu các thiết bị cải tiến nên các biến thể của thuật toán mã hóa này vẫn còn được sử dụng trong những năm đầu của thế kỷ 20 mà tiêu biểu nhất là việc thám mã thành công máy điện tín Zimmermann của quân Đức (một trong các sự kiện tiêu biểu của mật mã học) trong thế chiến thứ nhất và kết quả là sự tham gia của Mỹ vào cuộc chiến. Với sự xuất hiện của các hệ thống máy tính cá nhân và mạng máy tính các thông tin văn bản ngày càng được lưu trữ và xử lý nhiều hơn trên các máy tính do đó nảy sinh yêu cầu về an toàn bảo mật đối với các thông tin được lưu trữ, xử lý và truyền giữa các máy tính. Vào đầu những năm 1970 là sự phát triển của các thuật toán mã hóa khối đầu tiên: Lucipher và DES. DES sau đó đã có một sự phát triển ứng dụng rực rỡ cho tới đầu những năm 90. Vào cuối những năm 1970 chứng kiến sự phát triển của các thuật toán mã hóa khóa công khai sau khi Whitfield Diffie và Martin Hellman công bố bài báo “New Directions in Cryptography” làm nền tảng cho sự ra đời của các hệ mã khóa công khai và các hệ chữ ký điện tử. Do nhược điểm của các hệ mã mật khóa công khai là chậm nên các hệ mã khối vẫn tiếp tục được phát triển với các hệ mã khối mới ra đời để thay thế cho DES vào cuối thế kỷ 20 như IDEA, AES hoặc 3DES (một cải tiến của DES). Gần đây nhất là các sự kiện liên quan tới các hàm băm MD5 (một hàm băm thuộc họ MD do Ron Rivest phát triển) và SHA1. Một nhóm các nhà khoa học người Trung Quốc (Xiaoyun Wang, Yiqun Lisa Yin, Hongbo Yu) đã phát triển các phương pháp cho phép phát hiện ra các đụng độ của các hàm băm được sử dụng rộng rãi nhất trong số các hàm băm này. Đây là một sự kiện lớn đối với ngành mật mã học do sự ứng dụng rộng rãi và có thể xem là còn quan trọng hơn bản thân các hệ mã mật của các hàm băm. Do sự kiện này các hãng viết phần mềm lớn (như Microsoft) và các nhà mật mã học đã khuyến cáo các lập trình viên sử dụng các hàm băm mạnh hơn (như SHA-256, SHA-512) trong các ứng dụng. Bruce Schneier (một trong những nhà mật mã học hàng đầu, tác giả của hệ mã Blowfish) đã từng nói rằng các hình thức tấn công đối với hệ mã mật riêng và tấn công đối với các hệ thống máy tính nói chung sẽ ngày càng trở nên hoàn thiện hơn “Attacks always get better; they never get worse.” và lịch sử phát triển của mật mã học chính là lịch sử phát triển của các hình thức tấn công đối với các hệ mã mật đang được sử dụng. 2.1.2 Phân loại các thuật toán mật mã học Có nhiều cách khác nhau để chúng ta có thể phân loại các thuật toán mật mã học sẽ được học trong chương trình. Ở đây chúng ta sẽ phân loại các thuật toán mật mã học dựa vào hai loại tiêu chí. Tiêu chí thứ nhất là dựa vào các dịch vụ an toàn bảo mật mà các thuật toán cung cấp, dựa vào số lượng khóa sử dụng (0, 1, 2) chúng ta có các thuật toán mã hóa sau: 1. Các thuật toán mã hóa khóa bí mật tương ứng với các hệ mã mật khóa bí mật hay khóa đối xứng SKC (Symmetric Key Cryptosytems), do vai trò của người nhận và người gửi GVHD: PGS.TS Đỗ Văn Nhơn HV: Nguyễn Thành Phương Trang 6 là như nhau, cả hai đều có thể mã hóa và giải mã thông điệp, như Caesar, DES, AES … Khóa sử dụng cho các thuật toán này là 1 khóa cho cả việc mã hóa và giải mã. 2. Các thuật toán mã hóa khóa công khai tương ứng với các hệ mã khóa công khai PKC (Public Key Cryptosystems). Đôi khi các hệ mã này còn được gọi là các hệ mã khóa bất đối xứng (Asymmetric Key Cryptosytems). Khóa sử dụng cho các thuật toán này là 2 khóa, một cho việc mã hóa và một cho việc giải mã, khóa mã hóa được công khai hóa. 3. Các thuật toán tạo chữ ký điện tử (Digital Signature Algorithms). Các thuật toán tạo chữ ký điện tử tạo thành các hệ chữ ký điện tử. Thông thường mỗi hệ chữ ký điện tử có cùng cơ sở lý thuyết với một hệ mã mật khóa công khai nhưng với cách áp dụng khác nhau. Trong chương trình học chúng ta sẽ học một số hệ chữ ký điện tử phổ biến là RSA, ElGammma… 4. Các hàm băm (Hash functions). Các hàm băm là các thuật toán mã hóa không khóa hoặc có khóa và thường được sử dụng trong các hệ chữ ký điện tử hoặc các hệ mã khóa công khai. Tiêu chí thứ hai phân loại các thuật toán mã hóa dựa trên cách thức xử lý input của thuật toán (tức là bản rõ), dựa trên tiêu chí này chúng ta có hai loại thuật toán mã hóa sau: 1. Các thuật toán mã hóa khối (chẳng hạn như DES, AES …) xử lý bản rõ dưới các đơn vị cơ bản là các khối có kích thước giống nhau. 2. Các thuật toán mã hóa dòng (RC4 …) coi bản rõ là một luồng bit, byte liên tục. Trong các phần tiếp theo, báo cáo sẽ đi sâu vào hai loại là mã hóa đối xứng và mã hóa bất đối xứng. 2.2 Mã hóa đối xứng 2.2.1 Tổng quan Trong mật mã học, các thuật toán khóa đối xứng (tiếng Anh: symmetric-key algorithms) là một lớp các thuật toán mật mã hóa trong đó các khóa dùng cho việc mật mã hóa và giải mã có quan hệ rõ ràng với nhau (có thể dễ dàng tìm được một khóa nếu biết khóa kia). Khóa dùng để mã hóa có liên hệ một cách rõ ràng với khóa dùng để giải mã có nghĩa chúng có thể hoàn toàn giống nhau, hoặc chỉ khác nhau nhờ một biến đổi đơn giản giữa hai khóa. Trên thực tế, các khóa này đại diện cho một bí mật được phân hưởng bởi hai bên hoặc nhiều hơn và được sử dụng để giữ gìn sự bí mật trong kênh truyền thông tin. 2.2.2 Mã DES (Data Encryption Standard) Mã DES là một ví dụ điển hình của mã hóa đối xứng, nó có các tính chất sau: • Là mã thuộc hệ mã Feistel gồm 16 vòng, ngoài ra DES có thêm một hoán • vị khởi tạo trước khi vào vòng 1 và một hoán vị khởi tạo sau vòng 16 • Kích thước của khối là 64 bít: ví dụ bản tin „meetmeafterthetogaparty‟ • biểu diễn theo mã ASCII thì mã DES sẽ mã hóa làm 3 lần, mỗi lần 8 chữ • cái (64 bít): meetmeaf - tertheto - gaparty. • Kích thước khóa là 56 bít • Mỗi vòng của DES dùng khóa con có kích thước 48 bít được trích ra từ khóa chính. GVHD: PGS.TS Đỗ Văn Nhơn HV: Nguyễn Thành Phương Trang 7 Hình dưới đây minh họa các vòng của mã DES Sơ đồ mã DES trên gồm ba phần, phần thứ nhất là các hoán vị khởi tạo và hoán vị kết thúc. Phần thứ hai là các vòng Feistel, phần thứ ba là thuật toán sinh khóa con. 2.2.3 Hoán vị khởi tạo và hoán vị kết thúc Ta đánh số các bít của khối 64 bít theo thứ tự từ trái sang phải là 0, 1, …, 62, 63: b0b1b2…b62b63 Hoán vị khởi tạo sẽ hoán đổi các bít theo quy tắc sau : GVHD: PGS.TS Đỗ Văn Nhơn HV: Nguyễn Thành Phương Trang 8 Hoán vị kết thúc hoán đổi các bít theo quy tắc sau: Hoán vị kết thúc chính là hoán vị nghịch đảo của hoán vị khởi tạo. Đối với knownplaintext hay chosen-plaintext attack, hoán vị khởi tạo và hoán vị kết thúc không có ý nghĩa bảo mật, sự tồn tại của hai hoán vị trên được nhận định là do yếu tố lịch sử. 2.2.4 Các vòng của DES Hình sau minh họa một vòng Feistel của DES: GVHD: PGS.TS Đỗ Văn Nhơn HV: Nguyễn Thành Phương Trang 9 Trong DES, hàm F của Feistel là: F(Ri-1, Ki) = P-box(S-boxes(Expand( Ri-1) Ki)) Trong đó hàm Expand vừa mở rộng vừa hoán vị Ri-1 từ 32 bít lên 48 bít. Hàm S Boxes nén 48 bít lại còn 32 bít. Hàm P-box là một hoán vị 32 bít. Mô tả của các hàm trên là như sau: • Expand: đánh số các bít của Ri-1 theo thứ tự từ trái sang phải là 0, 1, 2, …, 31. Hàm Expand thực hiện vừa hoán vị vừa mở rộng 32 bít thành 48 bít theo quy tắc: • S-boxes: Hàm S-boxes của DES biến đổi một số 48 bít thành một số 32 bít. Tuy nhiên, nếu chỉ lập một bảng tra cứu như ở TinyDES thì bảng này phải có 2^16 GVHD: PGS.TS Đỗ Văn Nhơn HV: Nguyễn Thành Phương Trang 10 dòng và 2^32 cột, dẫn đến số phần tử của bảng rất lớn. Để giảm kích thước của bảng tra cứu, người ta chia hàm S-boxes thành 8 hàm S-box con, mỗi hàm biến đổi số 6 bít thành số 4 bít Hàm S-box đầu tiên, hộp S có nội dung như sau: Chi tiết các hộp còn lại được trình bày trong Phụ lục 1. Có thể thấy, mỗi hàm S-box con là một phép thay thế Substitution. Các hàm S-box con không khả nghịch, do đó hàm S-boxes cũng không khả nghịch. Sự phức tạp này của S-boxes là yếu tố chính làm cho DES có độ an toàn cao. • P-box: hàm P-box cũng thực hiện hoán vị 32 bít đầu vào theo quy tắc: 2.2.5 Thuật toán sinh khóa con của DES Khóa K 64 bít ban đầu được rút trích và hoán vị thành một khóa 56 bít (tức chỉ sử dụng 56 bít) theo quy tắc: GVHD: PGS.TS Đỗ Văn Nhơn HV: Nguyễn Thành Phương [...]... thức ứng dụng hàm một chiều khác nhau Bài thu hoạch này chỉ tập trung vào tìm hiểu phương pháp RSA 2.3.1 Tống quan RSA Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) và khóa bí mật (hay khóa cá nhân) Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa Những thông tin được mã hóa bằng khóa công... mọi thuật toán mã hóa là chỉ cần một thay đổi nhỏ trong bản rõ hay trong khóa sẽ dẫn đến thay đổi lớn trong bản mã Cụ thể, chỉ cần thay đổi một bít trong bản rõ hay khóa thì dẫn đến sự thay đổi của nhiều bít bản mã Tính chất này được gọi là hiệu ứng lan truyền Nhờ có tính chất này mà người phá mã không thể giới hạn miền tìm kiếm của bản rõ hay của khóa (dù phá mã theo known-plaintext hay chosen-plaintext)... Giải mã (Decryption): Quá trình ngược lại của mã hóa, biến đổi dữ liệu đã được mã hóa thành dạng gốc ban đầu (kí hiệu D); - Thông điệp (Message), bản gốc (Plaintext): Tệp dữ liệu chưa mã hóa (kí hiệu M) - Bản mã (Ciphertext): Tệp dữ liệu đã được mã hóa (kí hiệu C) Theo quy ước, khi mã hóa thì C = E(M) và khi giải mã thì M = D(C) = D(E(M)) • Thuật giải phát sinh khóa cho RSA: B1 : Tính N = pq và ϕ =... đã tìm ra một phương pháp mã hóa khác mà có thể giải quyết được hai vấn đề trên, đó là mã hóa khóa công khai (public key cryptography) hay còn gọi là mã hóa bất đối xứng (asymetric cryptography) Đây có thể xem là một bước đột phá quan trọng nhất trong lĩnh vực mã hóa Có nhiều phương pháp mã hóa thuộc loại mã hóa khóa công khai Đó là các phương pháp Knapsack, RSA, Elgaman, và phương pháp đường cong... minh họa cho hai thuật toán mã hóa là DES và RSA Chương trình được viết dưới dạng command line, tập trung hiện thực các thuật toán DES và RSA các thông số đầu vào giả lập một cách đơn giản 3.2 Mã hóa đối xứng DES Các hàm mô tả thuật toán trong file pyDes.py Chương trình demo trong file des_demo.py 3.3 Mã hóa bất đối xứng RSA Các hàm mô tả thuật toán và chương trình chính trong file rsa_demo.py 3.4 Chạy... thỏa mãn gcd(e,ϕ) = 1 B3 : Sử dụng thuật giải Bezout tính số nghịch đảo d ∈ ]1, ϕ[ của e ; ed =1 mod ϕ B4 : Cặp (N,e) là khóa công khai, và (N,d) là khóa cá nhân Thuật giải RSA: - [1] Mã hóa (1) Từ khóa công khai (n, e) và thông điệp dưới dạng một sốnguyên m ∈ [0, n), m được gọi là bản rõ (plaintext) (2) Tính c = me mod n, c được gọi là bản mã (ciphertext) [2] Giải mã Tìm lại bản rõ m từ bản mã c, sử dụng. .. nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình thường và khóa lại (như loại khoá thông thường chỉ cần sập chốt lại, sau khi sập chốt khóa ngay cả Bob cũng không thể mở lại được-không đọc lại hay sửa thông tin trong thư được nữa) Sau đó Bob gửi chiếc hộp lại cho Alice Alice mở hộp với chìa khóa của mình và đọc thông tin trong thư Trong ví dụ này, chiếc hộp với khóa mở đóng vai trò khóa công khai,... được giải mã bằng khóa bí mật tương ứng Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau: Bob muốn gửi cho Alice một thông tin mật mà Bob muốn duy nhất Alice có thể đọc được Để làm được điều này, Alice gửi cho Bob một chiếc hộp có khóa đã mở sẵn và giữ lại chìa khóa Bob nhận... mã c, sử dụng khóa cá nhân d để tính M = cd mod n (dùng định lý RSA) 2.3.4 Ví dụ RSA p = 2357, q = 2551 n = pq = 6012707, ϕ = (p-1)(q-1) = 6007800 Với e = 3674911 ∈ (1, ϕ), thuật giải Bezout cho ta d = e-1 mod ϕ = 422191 Vì thế khóa công khai là cặp (n = 6012707, e = 3674911) và khóa cá nhân là d = 422191 Để mã hóa bản tin m = 5234673 ta tính c = me mod n = 3650502 Để giải mã c, ta tính cd mod n =... giải chỉ trong vòng 8 tháng Bảng sau liệt kê kích thước N của các RSA đã phá mã được cho đến hiện nay Dĩ nhiên là việc phá mã trên chỉ được thực hiện trong phòng thí nghiệm Tuy nhiên người ta cho rằng kích thước của N phải khoảng 1024 bít (309 chữ số) thì mới bảo đảm an toàn thật sự • Đo thời gian: Đây là một phương pháp phá mã không dựa vào mặt toán học củthuật toán RSA, mà dựa vào một “hiệu ứng lề” . ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN  CAO HỌC KHÓA 8 BÀI THU HOẠCH MÔN HỌC TOÁN CHO KHOA HỌC MÁY TÍNH ĐỀ TÀI MÃ HÓA TRONG TIN HỌC - LÝ THUYẾT VÀ ỨNG DỤNG Giảng. tục. Trong các phần tiếp theo, báo cáo sẽ đi sâu vào hai loại là mã hóa đối xứng và mã hóa bất đối xứng. 2.2 Mã hóa đối xứng 2.2.1 Tổng quan Trong mật mã học, các thuật toán khóa đối xứng (tiếng. thuật mã hóa trên GVHD: PGS.TS Đỗ Văn Nhơn HV: Nguyễn Thành Phương Trang 4 CHƯƠNG 2: LÝ THUYẾT MÃ HÓA 2.1 Tổng quan về mã hóa Trong mật mã học, một ngành toán học ứng dụng cho công nghệ thông tin,

Ngày đăng: 23/05/2015, 10:16

Từ khóa liên quan

Mục lục

  • 1.1 Đặt vấn đề

  • 1.2 Mục tiêu đề tài

  • 2.1 Tổng quan về mã hóa

    • 2.1.1 Lịch sử mật mã học

    • 2.1.2 Phân loại các thuật toán mật mã học

    • 2.2 Mã hóa đối xứng

      • 2.2.1 Tổng quan

      • 2.2.2 Mã DES (Data Encryption Standard)

      • 2.2.3 Hoán vị khởi tạo và hoán vị kết thúc

      • 2.2.4 Các vòng của DES

      • 2.2.5 Thuật toán sinh khóa con của DES

      • 2.2.6 Hiệu ứng lan truyền

      • 2.2.7 Độ an toàn của DES

      • 2.3 Mã hóa bất đối xứng

        • 2.3.1 Tống quan RSA

        • 2.3.2 Lý thuyết số

        • 1. Phép chia modulo:

        • 2. Ước số

        • 3. Số nguyên tố

        • 4. Số nguyên tố cùng nhau

          • 2.3.3 Phép lũy thừa module và RSA

          • 1. Phép lũy thừa modula

          • 5. Định lý Revert Sammer Ademan (RSA)

          • 6. RSA

            • 2.3.4 Ví dụ RSA

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan