CHƯƠNG I: TỔNG QUAN ĐỀ TÀI 1.1 Tổng quan về an toàn và bảo mật thông tin An toàn thông tin là các hoạt động bảo vệ tài sản thông tin và là một lĩnh vực rộng lớn. Nó bao gồm cả những sản phẩm và những quy trình nhằm ngăn chặn truy cập trái phép, hiệu chỉnh, xóa thông tin,… An toàn thông tin liên quan đến hai khía cạnh đó là an toàn về mặt vật lý và an toàn về mặt kỹ thuật. Bảo mật thông tin là bảo vệ thông tin dữ liệu cá nhân, tổ chức nhằm tránh khỏi sự ” đánh cắp, ăn cắp” bởi những kẻ xấu hoặc tin tặc. An ninh thông tin cũng như sự bảo mật an toàn thông tin nói chung.
Việc bảo mật tốt những dữ liệu và thông tin sẽ tránh những rủi ro không đáng có cho chính cá nhân và doanh nghiệp của bạn.2 Sự cần thiết của An toàn và bảo mật thông tin Hệ thống thông tin là thành phần thiết yếu trong mọi cơ quan, tổ chức và đem lại khả năng xử lý thông tin, là tài sản quan trọng nhưng hệ thống thông tin cũng chứa rất nhiều điểm yếu và rủi do. Do máy tính được phát triển với tốc độ rất nhanh để đáp ứng nhiều yêu cầu của người dùng, các phiên bản được phát hành liên tục với các tính năng mới được thêm vào ngày càng nhiều, điều này làm cho các phần mềm không được kiểm tra kỹ trước khi phát hành và bên trong chúng chứa rất nhiều lỗ hổng có thể dễ dàng bị lợi dụng. Thêm vào đó là việc phát triển của hệ thống mạng, cũng như sự phân tán của hệ thống thông tin, làm cho người dùng truy cập thông tin dễ dàng hơn và tin tặc cũng có nhiều mục tiêu tấn công dễ dàng hơn.3 Mục đích của An toàn và bảo mật thông tin - Mục tiêu cơ bản của an toàn và bảo mật thông tin + Đảm bảo tính bảo mật 7 + Đảm bảo tính toàn vẹn + Đảm bảo tính xác thực + Đảm bảo tính sẵn sàng - Mục đích của an toàn và bảo mật thông tin + Bảo vệ tài nguyên của hệ thống Các hệ thống máy tính lưu giữ rất nhiều thông tin và tài nguyên cần được bảo vệ. Trong một tổ chức, những thông tin và tài nguyên này có thể là dữ liệu kế toán, thông tin nguồn nhân lực, thông tin quản lý, bán hàng, nghiên cứu, sáng chế, phân phối, thông tin về tổ chức và thông tin về các hệ thống nghiên cứu.
Đối với rất nhiều tổ chức, toàn bộ dữ liệu quan trọng của họ thường được lưu trong một cơ sở dữ liệu và được quản lý và sử dụng bởi các chương trình phần mềm. Các tấn công vào hệ thống có thể xuất phát từ những đối thủ của tổ chức hoặc cá nhân do đó, các phương pháp để bảo đảm an toàn cho những thông tin này có thể rất phức tạp và nhạy cảm. Các tấn công có thể xuất phát từ nhiều nguồn khác nhau, cả từ bên trong và bên ngoài tổ chức. Hậu quả mà những tấn công thành công để lại sẽ rất nghiêm trọng.
+ Bảo đảm tính riêng tư Các hệ thống máy tính lưu giữ rất nhiều thông tin cá nhân cần được giữ bí mật. Những thông tin này bao gồm: Số thẻ bảo hiểm xã hội, số thẻ ngân hàng, số thẻ tín dụng, thông tin về gia đình,. Tính riêng tư là yêu cầu rất quan trọng mà các ngân hàng, các công ty tín dụng, các công ty đầu tư và các hãng khác cần phải đảm bảo để gửi đi các tài liệu thông tin chi tiết về cách họ sử dụng và chia sẻ thông tin về khách hàng. Các hãng này có những quy định bắt buộc để bảo đảm những thông tin cá nhân được bí mật và bắt buộc phải thực hiện những quy định đó để bảo đảm tính 8 riêng tư.
Hậu quả nghiêm trọng sẽ xảy ra nếu một kẻ giả mạo truy nhập được những thông tin cá nhân. => Một trong những ứng dụng của an toàn thông tin là chữ ký số. Với đặc điểm là đơn giản cho người sử dụng mà vẫn đảm bảo được tính bảo mật, kỹ thuật sử dụng chữ ký số là một trong những kỹ thuật được sử dụng phổ biến, đa dạng trong hầu hết các lĩnh vực, nhất là Tài chính, Ngân hang, Kế toán…Vì lý do đó, nhóm 3 chúng em đã nghiên cứu về Chữ kí điện tử RSA và những vấn đề có liên quan đồng thời có viết được các chương trình nhằm mục đích demo về những vấn đề trên.4 Chữ kí số Chữ ký điện số là thông tin đi kèm theo dữ liệu (văn bản, âm thanh, hình ảnh, video.) nhằm mục đích xác định người chủ của dữ liệu đó. Chữ ký điện số là chuỗi thông tin cho phép xác định nguồn gốc, xuất xứ, thực thể đã tạo ra 1 thông điệp.
Chữ ký số khóa công khai là mô hình sử dụng các kỹ thuật mật mã để gắn với mỗi người sử dụng một cặp khóa công khai - bí mật, qua đó có thể ký các văn bản điện tử cũng như trao đổi các thông tin mật. Khóa công khai thường được phân phối thông qua chứng thực khóa công khai. 9 Chữ kí số (Digital Signature) là một chuỗi dữ liệu liên kết với một thông điệp (message) và thực thể tạo ra thông điệp. Giải thuật tạo ra chữ ký số (Digital Signature generation algorithm) là một phương pháp sinh chữ ký số.
Giải thuật kiểm tra chữ ký số (Digital Signature verification algorithm) là một phương pháp xác minh tính xác thực của chữ ký số, có nghĩa là nó thực sự được tạo ra bởi 1 bên chỉ định. Một hệ chữ ký số (Figital Signature Scheme) bao gồm giải thuật tạo chữ số và giải thuật kiểm tra chữ kỹ số. - Quá trình tạo chữ ký số (Digital Signature signing process) bao gồm: + Giải thuật tạo chữ ký số. + Phương pháp chuyển dữ liệu thông điệp thành dạng có thể ký được.
- Quá trình kiểm tra chữ ký số (Digital signature verification process) : + Giải thuật kiểm tra chữ ký số. 10 + Phương pháp khôi phục dữ liệu từ thông điệp. Dãy bít này được gọi là thông điệp rút gọn (message disgest) hay giá trị băm (hash value), đại diện cho thông điệp ban đầu. Ví dụ: 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 (Khóa công khai) và giữ lại chìa khóa. Bob 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, chiếc chìa khóa chính là khóa bí mật. ● Quá trình ký (Bên gửi) Tính toán chuỗi đại diện (message digest/ hash value) của thông điệp sử dụng một giải thuật băm (Hashing algorithm) Chuỗi đại diện được ký sử dụng khóa riêng (Priavte key) của người gửi và 1 giải thuật tạo chữ ký (Signature/ Encryption algorithm). Kết quả chữ ký số (Digital signature) của thông điệp hay còn gọi là chuỗi đại diện được mã hóa (Encryted message digest) Thông điệp ban đầu (message) được ghép với chữ ký số (Digital signature) tạo thành thông điệp đã được ký (Signed message) Thông điệp đã được ký (Signed message) được gửi cho người nhận 11 ● Quá trình kiểm tra chữ kí (Bên nhận) Tách chữ ký số và thông điệp gốc khỏi thông điệp đã ký để xử lý riêng; Tính toán chuỗi đại diện MD1 (message digest) của thông điệp gốc sử dụng giải thuật băm (là giải thuật sử dụng trong quá trình ký) Sử dụng khóa công khai (Public key) của người gửi để giải mã chữ ký số - > chuỗi đại diện thông điệp MD2 So sánh MD1 và MD2: + Nếu MD1 = MD2 -> chữ ký kiểm tra thành công. Thông điệp đảm bảo tính toàn vẹn và thực sự xuất phát từ người gửi (do khóa công khai được chứng thực).
+ Nếu MD1 <>MD2 -> chữ ký không hợp lệ. Thông điệp có thể đã bị sửa đổi hoặc không thực sự xuất phát từ người gửi. CHƯƠNG II: KẾT QUẢ NGHIÊN CỨU 2.1 Giới thiệu Tên đề tài nghiên cứu: Tìm hiểu về chữ ký điện tử RSA và viết ứng dụng minh họa. STT Nhiệm vụ, công việc chính Kết quả đạt được 1 Kiến trúc tổng quan chữ ký số và chữ Đã tìm hiểu được kiến trúc ký số sử dụng RSA tổng quan của chữ ký điện tử nói chung cũng như chữ ký điện tử RSA nói riêng 2 Giải thuật RSA và hàm băm mật mã Nắm được giải thuật RSA MD5 trong chữ ký điện tử RSA và hàm băm mật mã MD5 3 Các điểm yếu của chữ ký số RSA Tìm hiều được một vài điểm yếu của chữ ký số RSA 4 Các dạng tấn công của chữ ký số RSA Hiểu hơn được về các phương 12 pháp tấn công đối với chữ ký số RSA 5 Ứng dụng chữ ký và sử dụng giải thuật Ứng dụng được chứ ký số RSA RSA và viết được các chương trình demo Nhằm minh họa phần nội dung kiến thức về chữ kí điện tử RSA, nhóm 3 đã phân công cho từng thành viên xây dựng các chương trình ứng dụng web và ứng dụng desktop trên nền các ngôn ngữ lập trình riêng biệt, cụ thể : + Tàng Trọng Phi - Ngôn ngữ lập trình Python + Hoàng Kỳ Phong - Ngôn ngữ lập trình C# + Nguyễn Xuân Phú - Ngôn ngữ lập trình Java + Nguyễn Vi Phượng - Ngôn ngữ lập trình PHP 2.2 Nội dung thuật toán Giải thuật RSA ● Tạo khóa: Giải thuật RSA có hai khóa: Khóa công khai (Public key – Kpub): được công bố rộng rãi cho mọi người và được dùng để thẩm định chữ ký số.
13 Khóa bí mật (Private key – Kpr ): không được chia sẻ được chia cho mọi người và được dùng để ký chữ ký số. ● Các bước tạo khóa: B1: Đầu vào là hai SNT p và q. B2: Tính N = p * q và Φ(N) = (p-1)*(q-1) B3: Chọn ngẫu nhiên E thỏa mãn: { 1<E<Φ(N), GCD(E, Φ(N) = 1 } B4: Tính D = E-1 mod (Φ(N)) Kết quả: Kpub = {E, N} Kpr = {D, N} Hàm ký : M = sig(C) = CD mod N Hàm kiểm tra: C = ME mod N 14 2.3 Thiết kế, cài đặt chương trình đề mô thuật toán 2.