Thông tin tài liệu
Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/ ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CNTT & TT THÁI NGUYÊN Trƣơng Mạnh Cƣờng LUẬN VĂN THẠC SỸ KHOA HỌC MÁY TÍNH NGHIÊN CỨU CÁC THUẬT TOÁN MÃ HÓA KHÓA CÔNG KHAI VÀ ỨNG DỤNG TRONG CHỮ KÝ ĐIỆN TỬ Chuyên ngành: KHOA HỌC MÁY TÍNH Mã số: 60 48 01 THÁI NGUYÊN - 2014 Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/ ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CNTT & TT THÁI NGUYÊN Trƣơng Mạnh Cƣờng LUẬN VĂN THẠC SỸ KHOA HỌC MÁY TÍNH NGHIÊN CỨU CÁC THUẬT TOÁN MÃ HÓA KHÓA CÔNG KHAI VÀ ỨNG DỤNG TRONG CHỮ KÝ ĐIỆN TỬ GIÁO VIÊN HƢỚNG DẪN PGS.TS BÙI THẾ HỒNG THÁI NGUYÊN - 2014 Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/ MỤC LỤC DANH MỤC CÁC CHỮ TIẾNG ANH VIẾT TẮT 5 DANH MỤC CÁC HÌNH 6 MỞ ĐẦU 7 1. Lý do nghiên cứu đề tài 7 7 8 8 8 CHƢƠNG 1. TỔNG QUAN VỀ CÁC THUẬT TOÁN MÃ HÓA KHÓA CÔNG KHAI 9 1.1 Khái niệm mã hóa khóa công khai 9 1.1.1 Mật mã hóa khóa đối xứng 9 1.1.2 Mật mã hóa khóa công khai 9 1.2 Các thuật toán mật mã hóa khóa công khai 13 1.2.1 Thuật toán RSA 13 1.2.2 Trao đổi và thỏa thuận khóa Diffie-Hellman 17 1.2.3 Hệ mã ElGammal 19 1.3 So sánh ƣu nhƣợc điểm của các thuật toán 21 1.3.1 Ưu điểm 21 1.3.2 Hạn chế 22 CHƢƠNG 2: HÀM BĂM VÀ CHỮ KÝ ĐIỆN TỬ 24 2.1 Hàm băm 24 2.1.1 Tổng quan về hàm băm 24 2.1.2 Một số hàm băm được sử dụng phổ biến 29 2.1.2.1 Họ hàm băm SHA (Secure Hash Algorithm) 29 2.1.2.2 Họ hàm băm MD (Message-Digest algorithm) 32 2.2 Chữ ký điện tử 39 2.2.1 Tổng quan về chữ ký điện tử 39 2.2.2 Định nghĩa chữ ký điện tử 42 Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/ 2.2.3 Một số qui ước trong chữ ký điện tử 43 2.3 Những vấn đề trao đổi cặp khóa đặt ra trong thực tế 44 2.3.1 Sự tương tự với bưu chính 44 2.3.2 Mối quan hệ giữa khóa công khai với thực thể sở hữu khóa . 47 2.3.3 Các vấn đề liên quan tới thời gian thực 47 CHƢƠNG 3: XÂY DỰNG ỨNG DỤNG 52 3.1 Phát triển ứng dụng 52 3.1.1 Sơ đồ hệ thống và chức năng của ứng dụng 52 3.1.1.1 Sơ đồ hệ thống 52 3.1.1.2 Chức năng của ứng dụng 53 3.1.2 Phân tích ứng dụng 54 3.1.2.1 Tạo khóa công khai và bí mật bằng thuật toán RSA 54 3.1.2.2 Băm dữ liệu bằng hàm băm MD5 54 3.1.3.3 Mã hóa giá trị băm bằng khóa bí mật 54 3.1.4.4 Giải mã bằng khóa công khai và kiểm tra tính toàn vẹn của văn bản 54 3.2. Cài đặt ứng dụng 55 3.2.1. Giới thiệu chương trình 55 3.2.2. Một số giao diện chính trong chương trình 55 3.2.2.1 Giao diện chương trình 55 3.2.2.2 Tạo file khóa công khai và bí mật, lưu file khóa 56 3.2.2.3 Lựa chọn văn bản 56 3.2.2.4 Ký văn bản 57 3.2.2.5 Giải mã chữ ký 57 58 GIẢI THÍCH MỘT SỐ THUẬT NGỮ 59 TÀI LIỆU THAM KHẢO 60 Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/ DANH MỤC CÁC CHỮ TIẾNG ANH VIẾT TẮT NIST National Institute of Standards and Technology RSA R. Rivest, A. Shamir, L. Adleman MITM Man-In-The-Middle attack MD Message-Digest algorithm SHA Secure Hash Algorithm MAC Message Authentication Code PKCS Public Key Cryptography Standards Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/ DANH MỤC CÁC HÌNH STT TÊN HÌNH TRANG 1 Hình 1.1: Kênh liên lạc 9 2 Hình 2.1: Hoạt động của một hàm băm tiêu biểu 21 3 Hình 2.2: Mô hình ký gửi thông điệp sử dụng hàm băm 25 4 Hình 2.3: Mô hình xác minh chữ ký, kiểm tra tính toàn vẹn của thông điệp 26 5 Hình 2.4: Mô hình chữ ký điện tử 40 6 Hình 3.1: Sơ đồ hệ thống ứng dụng 53 7 Hình 3.2: Giao diện chương trình 55 8 Hình 3.3: Giao diện tao cặp khóa 56 9 Hình 3.4: Giao diện lựa chọn văn bản cần ký 56 10 Hình 3.5: Giao diện ký văn bản đã lựa chọn bằng khóa bí mật 57 11 Hình 3.6: Giao diện giải mã văn bản đã ký bằng khóa công khai 57 Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/ MỞ ĐẦU 1. Lý do nghiên cứu đề tài Bảo mật thông tin luôn là nhu cầu cần thiết trong các lĩnh vực tình báo, quân sự, ngoại giao, thông tin thương mại. Bảo mật thông tin cũng là một vấn đề đã được nghiên cứu từ xưa đến nay. Bảo mật thông tin là duy trì tính bảo mật, tính toàn vẹn, tính sẵn sàng. Tính bảo mật là đảm bảo thông tin chỉ được tiếp cận bởi những người được cấp quyền trao đổi thông tin. Tính toàn vẹn của thông tin là bảo vệ sự chính xác, hoàn chỉnh của thông tin và thông tin chỉ được thay đổi bởi những người được cấp quyền. Tính sẵn sàng của thông tin là những người được quyền sử dụng có thể truy xuất thông tin khi họ cần. Để đảm bảo được các yêu cầu về thông tin trên thì rất nhiều người trong nước và thế giới đang tập trung nghiên cứu và tìm mọi giải pháp để đảm bảo an toàn, an ninh cho các giao dịch điện tử trên máy tính. Giao dịch điện tử ở Việt Nam hiện nay đã và đang được quan tâm. Những giao dịch điện tử xuất hiện cùng với sự phổ dụng của máy tính và mạng Internet. Đã có những luật, văn bản dưới luật cho lĩnh vực an toàn thông tin trong giao dịch điện tử như: Quốc hội thông qua luật thương mại, luật giao dịch điện tử Thủ tướng Chính phủ đã ban hành Quyết định số 1073/QĐ-TTg ngày 12/7/2010 phê duyệt kế hoạch tổng thể phát triển thương mại điện tử giai đoạn 2010 – 2015 Cùng với xu thế chung của đất nước, cũng là yêu cầu đặt ra với chính công việc của mình, học viên đã chọn đề tài về an toàn thông tin, mà ở đây cụ thể là áp dụng các thuật toán mã hóa khóa công khai, hàm băm, chữ ký điện tử, làm mục tiêu nghiên cứu. Mong muốn những tìm tòi của mình có thể xây dựng được ứng dụng phục vụ cho cơ quan, đơn vị nơi học viên công tác. 2. Nghiên cứu các giải thuật mã hóa khóa công khai. Nghiên cứu về chữ ký điện tử, tìm hiểu về hàm băm và các giải thuật về hàm băm. Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/ Cài đặt thử nghiệm một giải thuật sinh chữ ký điện tử. Một số thuật toán sinh khóa công khai, khóa bí mật; Một số hàm băm thường sử dụng hiện nay; Chữ ký điện tử. 4. Ph Tìm hiểu dựa trên cơ sở lý thuyết, các thuật toán hay về sinh khóa công khai, khóa bí mật đã có từ trước. So sánh để thấy những ưu điểm, những hạn chế của từng thuật toán. Từ cơ sở đó có thể cải tiến, hoặc triển khai ứng dụng cài đặt một giải thuật tối ưu nhất vào thực tiễn. Trong quá trình triển khai ứng dụng nêu lên những hạn chế của đề tài và những khó khăn trong thực hiện đề tài. Đề xuất hướng phát triển của đề tài trong thời gian tới. ăn Ngoài phần mở đầu và kết luận đề tài có cơ cấu gồm 3 chương: Chương 1 : Tổng quan về các thuật toán mã hóa khóa công khai Chương 2: Hàm băm và chữ ký điện tử Chương 3: Xây dựng ứng dụng. Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/ CHƢƠNG 1. TỔNG QUAN VỀ CÁC THUẬT TOÁN MÃ HÓA KHÓA CÔNG KHAI 1.1 Khái niệm mã hóa khóa công khai 1.1.1 Mật mã hóa khóa đối xứng Trong mật mã học, các thuật toán khóa đối xứng (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 Thuật toán đối xứng có thể được chia ra làm hai thể loại, mật mã luồng (stream ciphers) và mật mã khối (block ciphers). Mật mã luồng mã hóa từng bit của thông điệp trong khi mật mã khối gộp một số bit lại và mật mã hóa chúng như một đơn vị. Cỡ khối được dùng thường là các khối 64 bit. Những thuật toán mã hóa khóa đối xứng nổi tiếng là DES và AES. Các thuật toán đối xứng thường không được sử dụng độc lập. Trong thiết kế của các hệ thống mật mã hiện đại, cả hai kiểu mật hóa khóa đối xứng và khóa bất đối xứng thường được sử dụng phối hợp để tận dụng các ưu điểm của chúng. 1.1.2 Mật mã hóa khóa công khai Là một dạng mật mã hóa cho phép người sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước đó. Điều này được thực hiện bằng cách sử dụng một cặp khóa có quan hệ toán học với nhau là khóa công khai và khóa cá nhân (hay khóa bí mật). Thuật ngữ "mật mã hóa khóa bất đối xứng" thường được dùng đồng nghĩa với "mật mã hóa khóa công khai" mặc dù hai khái niệm không hoàn toàn tương đương. Có những thuật toán mật mã khóa bất đối xứng không có Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/ tính chất khóa công khai và bí mật như đề cập ở trên mà cả hai khóa (cho mã hóa và giải mã) đều cần phải giữ bí mật. Trong mật mã hóa khóa công khai, khóa cá nhân phải được giữ bí mật trong khi khóa công khai được phổ biến công khai. Trong 2 khóa, một dùng để mã hóa và khóa còn lại dùng để giải mã. Điều quan trọng đối với hệ thống là không thể tìm ra khóa bí mật nếu chỉ biết khóa công khai. Hệ thống mật mã hóa khóa công khai có thể sử dụng với các mục đích: Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã được. Tạo chữ ký số: cho phép kiểm tra một văn bản có phải đã được tạo với một khóa bí mật nào đó hay không. Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin mật giữa 2 bên. Thông thường, các kỹ thuật mật mã hóa khóa công khai đòi hỏi khối lượng tính toán nhiều hơn các kỹ thuật mã hóa khóa đối xứng nhưng những lợi điểm mà chúng mang lại khiến cho chúng được áp dụng trong nhiều ứng dụng. Có thể hình dung hệ mật này tương tự như sau. A đặt một vật vào một hộp kim loại và rồi khoá nó lại bằng một khoá số do B để lại. Chỉ có B là người duy nhất có thể mở được hộp vì chỉ có người đó mới biết tổ hợp mã của khoá số của mình. Thuật toán mã hóa công khai là thuật toán được thiết kế sao cho khóa mã hóa là khác so với khóa giải mã. Mà khóa giải mã hóa không thể tính toán được từ khóa mã hóa. Khóa mã hóa gọi là khóa công khai (public key), khóa giải mã được gọi là khóa riêng (private key). [...]... thuật toán mật mã nói chung, các thuật toán mã hóa khóa công khai cần phải được sử dụng một cách thận trọng 1.2 Các thuật toán mật mã hóa khóa công khai 1.2.1 Thuật toán RSA Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên vào năm 1977 tại Học viện Công nghệ Massachusetts (MIT) Tên của thuật toán lấy từ 3 chữ cái đầu của tên 3 tác giả 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 khai chỉ có thể đượ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ã. .. http://www.lrc-tnu.edu.vn/ Vấn đề về độ an toàn của thuật toán mật mã hóa khóa công khai Về khía cạnh an toàn, các thuật toán mật mã hóa khóa bất đối xứng cũng không khác nhiều với các thuật toán mã hóa khóa đối xứng Có những thuật toán được dùng rộng rãi, có thuật toán chủ yếu trên lý thuyết; có thuật toán vẫn được xem là an toàn, có thuật toán đã bị phá vỡ Cũng cần lưu ý là những thuật toán được dùng rộng rãi không phải... việc lưu trữ các khóa cũng lớn Với hệ mã ElGammal chúng ta cần gấp đôi bộ nhớ để chứa bản mã so với các hệ mã khác Ngoài ra do việc sử dụng các số nguyên tố nên việc sinh khóa và quản lý khóa cũng khó khăn hơn so với các hệ mã khối Trên thực tế các hệ mã khóa công khai thường được sử dụng kết hợp với các hệ mã khối (mã hóa khóa của hệ mã) hoặc để mã hóa các thông tin có dung lượng nhỏ và là một phần... Oscar Bộ mã hóa Bộ giải mã Khóa mã hóa A Khóa giải mã B Đặc trưng nổi bật của hệ mã hóa công khai là cả khóa công khai (public key) và bản tin mã hóa (ciphertext) đều có thể gửi đi trên một kênh thông tin không an toàn Trong hầu hết lịch sử mật mã học, khóa dùng trong các quá trình mã hóa và giải mã phải được giữ bí mật và cần được trao đổi bằng một phương pháp an toàn khác (không dùng mật mã) như gặp... Diffie-Hellman Thuật toán thỏa thuận khóa Diffie-Hellman là một thuật toán dùng để trao đổi khóa chứ không dùng để mật mã hóa dữ liệu Tuy nhiên DiffieHellman lại có ích trong giai đoạn trao đổi khóa bí mật của các thuật toán mật mã đối xứng Thuật toán thỏa thuận khóa Diffie-Hellman thúc đẩy việc nghiên cứu đề xuất các mã khoá công khai, một trong những vấn đề quan Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/... tin trong thư được nữa) Sau đó B gửi chiếc hộp lại cho A và A 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, chiếc chìa khóa chính là khóa bí mật Tạo khóa Giả sử A và B cần trao đổi thông tin bí mật thông qua một kênh không an toàn (ví dụ như Internet) Với thuật toán RSA, A đầu tiên cần tạo ra cho mình cặp khóa gồm khóa công. .. dàng nhân các số tự nhiên nhưng Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/ phân tích kết quả ra thừa số nguyên tố thì không hề đơn giản Đây chính là nguyên tắc cơ bản của thuật toán mật mã hóa khóa công khai RSA mặc dù tác giả không phải là người phát minh ra mật mã hóa khóa công khai Thuật toán mật mã hóa khóa công khai được thiết kế đầu tiên bởi James H Ellis, Clifford Cocks, và Malcolm... phối khóa công khai Trao đổi khóa Diffie-Hellman là phương pháp có thể áp dụng trên thực tế đầu tiên để phân phối khóa bí mật thông qua một kênh thông tin không an toàn Kỹ thuật thỏa thuận khóa của Merkle có tên là hệ thống câu đố Merkle Thuật toán đầu tiên cũng được Rivest, Shamir và Adleman tìm ra vào năm 1977 tại MIT Công trình này được công bố vào năm 1978 và thuật toán được đặt tên là RSA RSA sử dụng. .. phép toán tính hàm mũ môđun (môđun được tính bằng tích số của 2 số nguyên tố lớn) để mã hóa và giải mã cũng như tạo chữ ký số An toàn của thuật toán được đảm bảo với điều kiện là không tồn tại kỹ thuật hiệu quả để phân tích một số rất lớn thành thừa số nguyên tố Kể từ thập kỷ 1970, đã có rất nhiều thuật toán mã hóa, tạo chữ ký số, thỏa thuận khóa được phát triển Các thuật toán như ElGamal (mật mã) do . khóa công khai 9 1.1.1 Mật mã hóa khóa đối xứng 9 1.1.2 Mật mã hóa khóa công khai 9 1.2 Các thuật toán mật mã hóa khóa công khai 13 1.2.1 Thuật toán RSA 13 1.2.2 Trao đổi và thỏa thuận khóa. CHƢƠNG 1. TỔNG QUAN VỀ CÁC THUẬT TOÁN MÃ HÓA KHÓA CÔNG KHAI 1.1 Khái niệm mã hóa khóa công khai 1.1.1 Mật mã hóa khóa đối xứng Trong mật mã học, các thuật toán khóa đối xứng (symmetric key algorithms). mật. Trong mật mã hóa khóa công khai, khóa cá nhân phải được giữ bí mật trong khi khóa công khai được phổ biến công khai. Trong 2 khóa, một dùng để mã hóa và khóa còn lại dùng để giải mã. Điều
Ngày đăng: 15/06/2014, 21:04
Xem thêm: Nghiên cứu các thuật toán mã hóa khóa công khai và ứng dụng trong chữ ký điện tử, Nghiên cứu các thuật toán mã hóa khóa công khai và ứng dụng trong chữ ký điện tử