Đồ án Tìm hiểu và xây dựng chương trình thực hiện các giải thuật mã hóa trên mạng

Ngày nay, nhu cầu bảo mật thông tin trên mạng là một nhu cầu cấp thiết. Cùng với sự phát triển của Internet, việc xâm nhập bất hợp pháp các thông tin mật, các chương trình và dữ liệu quan trọng, và phá hoại thông qua Internet cũng gia tăng về số lượng, loại hình và kỹ thuật. Do đó, song song với việc phát triển và khai thác các dịch vụ trên Internet, vấn đề đảm bảo an ninh trên mạng là một vẫn đề rất quan trọng. Các nội dung thông tin lưu trữ và lưu truyền trên mạng luôn là đối tượng để tấn công, do người sử dụng luôn truy nhập từ xa, thông tin xác thực người sử dụng như mật khẩu, bí danh luôn phải truyền đi trên mạng. Những kẻ xâm nhập tìm mọi cách giành được những thông tin này và từ xa truy nhập vào hệ thống. Càng truy nhập với tư cách người dùng có quyền điều hành càng cao thì khả năng phá hoại càng lớn. Để tránh những rủi ro có thể xảy ra và đảm bảo việc truyền dữ liệu được an toàn hơn, vừa đảm bảo thông tin luôn kết nối, vừa đảm bảo yếu tố bảo mật của thông tin thì phương pháp tốt nhất là mã hoá thông tin. Báo cáo sau đây trình bày về đề tài: “Tìm hiểu và xây dựng chương trình thực hiện các giải thuật mã hóa trên mạng”. Trong khuôn khổ báo cáo, chúng em thực hiện tìm hiểu về các giải thuật mã hóa được ứng dụng phổ biến trên Internet hiện nay, và xây dựng được một ứng dụng mã hóa minh họa.

doc21 trang | Chia sẻ: ngtr9097 | Lượt xem: 2559 | Lượt tải: 4download
Bạn đang xem trước 20 trang tài liệu Đồ án Tìm hiểu và xây dựng chương trình thực hiện các giải thuật mã hóa trên mạng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN MẠNG VÀ TRUYỀN THÔNG ¾¾¾¾Â¾¾¾¾ ĐỒ ÁN MÔN HỌC LẬP TRÌNH MẠNG ĐỀ TÀI: Tìm hiểu và xây dựng chương trình thực hiện các giải thuật mã hóa trên mạng Sinh viên thực hiện : Phan Vũ Phương 10T2LT Đặng Thị Mỹ Vân 10T2LT Nhóm : 11B Cán bộ hướng dẫn : TS. Nguyễn Tấn Khôi Đà Nẵng, năm 2011 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN MỤC LỤC LỜI MỞ ĐẦU Ngày nay, nhu cầu bảo mật thông tin trên mạng là một nhu cầu cấp thiết. Cùng với sự phát triển của Internet, việc xâm nhập bất hợp pháp các thông tin mật, các chương trình và dữ liệu quan trọng, và phá hoại thông qua Internet cũng gia tăng về số lượng, loại hình và kỹ thuật. Do đó, song song với việc phát triển và khai thác các dịch vụ trên Internet, vấn đề đảm bảo an ninh trên mạng là một vẫn đề rất quan trọng. Các nội dung thông tin lưu trữ và lưu truyền trên mạng luôn là đối tượng để tấn công, do người sử dụng luôn truy nhập từ xa, thông tin xác thực người sử dụng như mật khẩu, bí danh luôn phải truyền đi trên mạng. Những kẻ xâm nhập tìm mọi cách giành được những thông tin này và từ xa truy nhập vào hệ thống. Càng truy nhập với tư cách người dùng có quyền điều hành càng cao thì khả năng phá hoại càng lớn. Để tránh những rủi ro có thể xảy ra và đảm bảo việc truyền dữ liệu được an toàn hơn, vừa đảm bảo thông tin luôn kết nối, vừa đảm bảo yếu tố bảo mật của thông tin thì phương pháp tốt nhất là mã hoá thông tin. Báo cáo sau đây trình bày về đề tài: “Tìm hiểu và xây dựng chương trình thực hiện các giải thuật mã hóa trên mạng”. Trong khuôn khổ báo cáo, chúng em thực hiện tìm hiểu về các giải thuật mã hóa được ứng dụng phổ biến trên Internet hiện nay, và xây dựng được một ứng dụng mã hóa minh họa. TỔNG QUAN VỀ ĐỀ TÀI Bối cảnh và lý do thực hiện đề tài Với sự phát triển của Internet như hiện nay, thông tin trên mạng mang nhiều nguy cơ bị tấn công, xâm nhập bất hợp pháp. Việc bảo mật thông tin trên môi trường Internet là rất cấp thiết. Để vừa đảm bảo thông tin luôn kết nối, vừa đảm bảo yếu tố bảo mật của thông tin thì phương pháp tốt nhất là mã hoá thông tin. Mã hóa giúp đảm bảo thông tin không thể bị truy cập bởi đối tượng thứ ba, loại trừ việc nghe trộm những thông tin “nhạy cảm” khi nó được truyền qua Internet, dữ liệu phải được mã hoá để không thể bị đọc được bởi những người khác ngoài người gửi và người nhận. Chính sự quan trọng của mã hóa, nên chúng em chọn đề tài này để tìm hiểu rõ hơn về các giải thuật mã hóa hiện nay và cơ chế của việc mã hóa thông tin trên mạng. Mục tiêu của đề tài Đề tài nhằm tìm hiểu được các giải thuật mã hóa MD5, 3DES,… Qua đó, xây dựng chương trình ứng dụng lập trình socket cho phép người dùng chọn một phương pháp mã hóa, gửi nội dung đã mã hóa qua môi trường mạng đến máy server, tùy phương pháp mã hóa, máy server tiến hành giải mã và hiển thị lại nội dung đã được mã hóa ở phía client. Phương pháp triển khai đề tài Tìm hiểu các kỹ thuật mã hóa, giải thuật mã hóa MD5, 3DES,… Lập trình socket Client - Server Thiết kế và lập trình ứng dụng, xây dựng chương trình mã hóa trong mô hình client – server Kết cấu của đồ án Đồ án gồm các phần: Cơ sở lý thuyết về các giải thuật mã hóa Thiết kế và xây dựng chương trình mã hóa Kết quả thực hiện CƠ SỞ LÝ THUYẾT Giới thiệu Mã hoá là một tiến trình biến đổi thông tin, sử dụng các thuật toán nhằm mục đích không cho người khác có thể nắm bắt được nếu thiếu một vốn thông số nhất định (key) để dịch ngược. Đi kèm với mã hoá là giải mã. Có rất nhiều loại thuật toán mã hoá cho dữ liệu máy tính, chúng được gọi tên theo thuật toán và có thể so sánh trực tiếp với nhau, ví dụ mã hoá 128-bit, Triple-DES, 2048-bit RSA,… Mã hóa với mục đích làm cho dữ liệu không thể đọc được bởi bất cứ ai, ngoại trừ những ai được cho phép đọc. Mã hóa sử dụng thuật toán và khóa để biến đổi dữ liệu từ hình thức đơn giản rõ ràng (plain hay cleartext), làm biến dữ liệu sang hình tức mật mã vô nghĩa (code hay ciphertext). Chỉ ai có thông tin giải mã thì mới giải mã được và đọc được dữ liệu. Các thuộc tính yêu cầu Mật mã hóa được sử dụng phổ biến để đảm bảo an toàn cho thông tin liên lạc. Các thuộc tính được yêu cầu là: Bí mật: Chỉ có người nhận đã xác thực có thể lấy ra được nội dung của thông tin chứa đựng trong dạng đã mật mã hóa của nó. Nói khác đi, nó không thể cho phép thu lượm được bất kỳ thông tin đáng kể nào về nội dung của thông điệp. Nguyên vẹn: Người nhận cần có khả năng xác định được thông tin có bị thay đổi trong quá trình truyền thông hay không. Xác thực: Người nhận cần có khả năng xác định người gửi và kiểm tra xem người gửi đó có thực sự gửi thông tin đi hay không. Kĩ thuật mã hoá chung Các kĩ thuật mã hoá đều sử dụng các khoá (key) làm tác nhân thực hiện việc khoá mã, thông thường khoá được thể hiện bằng độ dài của khoá tính theo bit, số bits càng lớn thì tính bảo mật của phép mã hoá càng cao. Thông thường, để an toàn thì các khoá thường có độ dài 128bits, phương pháp tấn công vét cạn sẽ phải dò là 2128 trường hợp. Có 3 kĩ thuật mã hoá chính: - Symmetric Encryption (Mã hóa đối xứng): Là phương pháp sử dụng cùng một khóa để bảo mật dữ liệu, khóa này vừa dùng để mã hoá và giải mã dữ liệu luôn. Vì vậy khóa này phải được chuyển một an toàn giữa hai đối tượng giao tiếp, vì ai có được khóa này thì hoàn toàn có thể giài mã được thông tin. Khóa có thể được cấu hình trong software hoặc hardware. Thuật toán mã hóa đối xứng nhìn chung thực hiện nhanh nhưng an toàn chưa cao vì có thể bị lộ khóa. Nên thuật toán này thường dùng cho việc mã hóa dữ liệu. Ngày nay có 3 thuật toán mã hóa đối xứng được sử dụng nhiều: DES, 3DES, AES. - Asymmetric Encryption (Mã hóa bất đối xứng): Là phương pháp sử dụng hai khóa: public key và private key. Trong đó public key được cho tất cả thiết bị khác, còn private key thì giữ bí mật cho riêng mỗi thiết bị. Hai khóa này là một cặp, vì chỉ có private key mới giải mã được thông tin do public key mã hóa. Thuật toán mã hóa bất đối xứng rất an toàn nhưng xử lý chậm, do đó thuật toán này thường dùng cho chứng nhận số và quản lý khóa. Sử dụng 2 thuật toán chính đó là: RSA và Diffiel-Hellman(DH), khi thiết lập một IPsec tunnel mới thì các thiết bị Cisco sử dụng hai thuật toán này. RSA dùng để chứng thực thiết bị ở xa, còn DH dùng để trao đổi khóa để phục vụ cho việc mã hóa. - Mã hóa một chiều (hàm băm): là phương pháp mà chuỗi mã hoá không thể bị dịch ngược lại, mỗi chuỗi đã mã hoá chỉ có thể là ánh xạ của duy nhất một chuỗi chưa mã hoá nhập vào. Các thuật toán mã hoá một chiều được dùng nhiều trong quá trình xác thực, lưu mật khẩu, thông tin thẻ tín dụng… Nền tảng của loại này có thể xếp vào cùng loại với mã hoá đối xứng. Các thuật toán nổi tiếng được sử dụng nhiều nhất là MD-5 (Message-Digest algorithm 5) và các thuật toán SHA (SHA-1, SHA-2). Mọi ứng dụng từ các forum như IPB, VBB cho đến Yahoo! đều ứng dụng trong việc mã hoá mật khẩu của users. Các giải thuật mã hóa: Giải thuật MD5 Giới thiệu giải thuật MD5 MD5 (viết tắt của tiếng Anh Message-Digest algorithm 5, giải thuật phân loại tin nhắn 5) là một hàm băm mật mã được sử dụng phổ biến với giá trị băm dài 128-bit. Là một chuẩn Internet (RFC 1321), MD5 đã được dùng trong nhiều ứng dụng bảo mật, và cũng được dùng phổ biến để kiểm tra tính toàn vẹn của tập tin. Một bảng băm MD5 thường được diễn tả bằng một số hệ thập lục phân 32 ký tự. MD5 được thiết kế bởi Ronald Rivest vào năm 1991 để thay thế cho hàm băm trước đó, MD4. Vào năm 1996, người ta phát hiện ra một lỗ hổng trong MD5; trong khi vẫn chưa biết nó có phải là lỗi nghiêm trọng hay không, những chuyên gia mã hóa bắt đầu đề nghị sử dụng những giải thuật khác, như SHA-1 (khi đó cũng bị xem là không an toàn). Trong năm 2004, nhiều lỗ hổng hơn bị khám phá khiến cho việc sử dụng giải thuật này cho mục đích bảo mật đang bị đặt nghi vấn. MD5 có 2 ứng dụng quan trọng: 1/ MD5 được sử dụng rộng rãi trong thế giới phần mềm để đảm bảo rằng tập tin tải về không bị hỏng. Người sử dụng có thể so sánh giữa thông số kiểm tra phần mềm bằng MD5 được công bố với thông số kiểm tra phần mềm tải về bằng MD5. Hệ điều hành Unix sử dụng MD5 để kiểm tra các gói mà nó phân phối, trong khi hệ điều hành Windows sử dụng phần mềm của hãng thứ ba. 2/ MD5 được dùng để mã hóa mật khẩu. Mục đích của việc mã hóa này là biến đổi một chuổi mật khẩu thành một đoạn mã khác, sao cho từ đoạn mã đó không thể nào lần trở lại mật khẩu. Có nghĩa là việc giải mã là không thể hoặc phải mất một khoãng thời gian vô tận (đủ để làm nản lòng các hacker). Thuật toán mã hóa MD5 MD5 biến đổi một thông điệp có chiều dài bất kì thành một khối có kích thước cố định 128 bits. Thông điệp đưa vào sẽ được cắt thành các khối 512 bits. Thông điệp được đưa vào bộ đệm để chiều dài của nó chia hết cho 512. Bộ đệm hoạt động như sau: - Trước tiên, chèn bit 1 vào cuối thông điệp. - Tiếp đó là hàng loạt bit 0 cho tới khi chiều dài của nó nhỏ hơn bội số của 512 một khoảng 64 bit . - Phần còn lại sẽ được lấp đầy bởi một số nguyên 64 bit biểu diển chiều dài ban đầu của thông điệp. Thuật toán chính của MD5 hoạt động trên một bộ 128 bit. Chia nhỏ nó ra thành 4 từ 32 bit, kí hiệu là A,B,C và D. Các giá trị này là các hằng số cố định. Sau đó thuật toán chính sẽ luân phiên hoạt động trên các khối 512 bit. Mỗi khối sẽ phối hợp với một bộ. Quá trình xử lý một khối thông điệp bao gồm 4 bước tương tự nhau, gọi là vòng (“round”). Mỗi vòng lại gồm 16 quá trình tương tự nhau dựa trên hàm một chiều F, phép cộng module và phép xoay trái,… Các phương pháp crack MD5 MD5 là giải thuật mã hóa một chiều nên việc giải mã chỉ có thể dựa vào việc dò tìm từ cơ sở dữ liệu. Crack MD5 có các phương pháp sau: Dictionary: là một kỹ thuật tấn công bằng cách thử nghiệm những trường hợp mật khẩu có thể người khác đã sử dụng. Hoạt động theo phương thức thử nghiệm với tất cả các key trong danh sách cho sẵn: sử dụng một danh sách (được sắp xếp) các mật khẩu (hoặc hash password) có sẵn rồi thử đăng nhập (hoặc so mẫu với mật khẩu cần crack). Với phương pháp này, dữ liệu thử được chia sẻ rất nhiều, không tốn quá nhiều thời gian và công sức nhưng đôi khi đem lại hiệu quả khả quan. Một số trang sử dụng phương pháp dictionary để crack md5: Brute Force: được sử dụng để crack plaintext hash password luôn thành công, chủ yếu dựa vào sức mạnh tính toán của máy tính: thử mọi trường hợp xảy ra (brute force) bằng cách duyệt qua tất cả các hash password có thể có được tạo nên từ bảng ký tự. Hoạt động theo phương thức: tạo ra tất cả các key có thể có và so sánh với key input. Có rất nhiều công cụ thực hiện crack md5 bằng phương pháp brute force như md5brute, cain&able, BarsWF,… Rainbow table: là một bảng tính toán được sử dụng trong việc đảo chiều các hàm băm mật mã, thường được sử dụng rộng rải trong việc crack các mật mã đã được băm. Thường được sử dụng để khôi phục các mật khẩu bằng các ký tự thô (plaintext) với một độ dài nhất định và có thể chứa thêm một số các ký tự đặc biệt. Đó là một hình thức cân bằng thời gian bộ nhớ, sử dụng CPU ít hơn nhưng chi phí lưu trữ nhiều hơn và ngược lại. Có nhiều công cụ sử dụng rainbow table để crack MD5, nên sử dụng phần mềm rainbowcrack. Giải thuật Triple-DES (3DES) Giới thiệu giải thuật 3DES Triple Data Encryption Standard (3DES): là DES được bổ sung thêm một số tính năng cao cấp, nó thực hiện mã hóa dữ liệu thông qua việc xử lý mỗi block 3 lần và mỗi lần với một khóa khác nhau.Trước hết nó sẽ dùng một khóa để mã hóa plain-text thành ciphertext, sau đó lại tiếp tục dùng một khóa khác nữa để mã hóa ciphertext, và tiếp tục mã hóa ciphertext này với khóa thứ 3, nghĩa là 3DES sử dụng một khóa 168-bit, nên đó an toàn hơn và tất nhiên là việc xử lý sẽ chậm hơn DES. Thuật toán mã hóa 3DES 3DES thực ra là mã hóa cùng 1 thông tin qua 3 lần mã hóa DES với 3 khóa khác nhau. Do đó, chiều dài mã khóa sẽ lớn hơn và an toàn sẽ cao hơn so với DES. Ta có EK(I) và DK(I) là tượng trưng cho wá trình mã hoá vào giải mã I với khoá là K. Mỗi hệ thống mã hoá hay giải mã triple Des là 1 hợp các quá trình giả mã và mã hoá trên Des. Quá trình mã hoá Triple Des, ta mã hoá I thành O: O = EK3(DK2(EK1(I))) hay I → DES EK1 ->DES DK2 ->DES EK3 -> O Thuật toán giải mã Quá trình giải mã Triple Des, ta giải mã O thành I: I = DK1(EK2(DK3(O))) hay I ->DES DK3 ->DES EK2 ->DES DK1 -> O Những tiêu chuẩn kèm theo: +Key: khoá K1, K2, K3 độc lập +Key: khoá K1=K3, K2 đôc lập +Key: khoá K1=K2=K3 Một bản rõ có thể được mã hoá bằng Triple Des có thể được giải mã bằng Des và 1 bản rõ được mã hoá bằng Des có thể được giải mã bằng Triple Des. Triple Des cũng có các chế độ ECB, CBC, CFB ,OFB. Về cơ bản cũng giống Des, chỉ việc thay các hàm mã hoá của Des thành Triple Des. Với khoá K1=K2=K3 thì TECB, TCBC, TCFB và TOFB cũng tương ứng với các chế độ ECB, CBC, CFB và OFB của Des. THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH Mô tả chức năng Chương trình xây dựng giải thuật mã trong mô hình Client – Server. Chương trình này nhằm mục đích minh họa cho hoạt động mã hóa và giải mã, giúp hiểu hơn về cách thức hoạt động của một virus. Phân tích các chức năng Client cho phép người dùng tùy chọn một phương pháp mã hóa, gửi một thông điệp muốn mã hóa. Thông điệp này sẽ được gửi về server, server thực hiện mã hóa. Khi client yêu cầu lấy thông tin, khi này thông tin sẽ được giải mã để truyền lại cho client. Mô hình hệ thống TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ Môi trường triển khai Chương trình được xây dựng bằng ngôn ngữ Java, triển khai trên NetBean. Kết quả các chức năng của chương trình KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Những kết quả đạt được Sau một thời gian tìm hiểu và nghiên cứu tài liệu, đề tài đã thành công trong việc tìm hiểu về các giải thuật mã hóa trên mạng, xây dựng được một chương trình thực hiện việc mã hóa và giải mã giữa client và server. Hiểu được cơ chế hoạt động của các giải thuật mã hóa khác nhau trên mạng, và cơ chế truyền dữ liệu giữa client - server. Những vấn đề tồn tại Đề tài còn chưa giới thiệu hết các giải thuật mã hóa, như DES, RSA, SHA…Chương trình xây dựng chưa thể hiện hết các chức năng của việc mã hóa dữ liệu. Hướng phát triển Nếu có điều kiện phát triển, sẽ nghiên cứu, tìm hiểu thêm về các giải thuật mã hóa RSA, AES, SHA,…và phát triển chương trình với thêm nhiều chức năng lựa chọn các phương pháp mã hóa. Trên đây là phần trình bày của nhóm chúng em về đề tài: “Tìm hiểu và xây dựng chương trình thực hiện các giải thuật mã hóa trên mạng”. Trong quá trình thực hiện đề tài, dù đã rất cố gắng, nhưng do trình độ kiến thức còn nhiều hạn chế, không tránh khỏi những thiếu sót trong bài làm. Chúng em rất mong nhận được sự đóng góp ý kiến của thầy cô để đề tài được hoàn thiện hơn PHỤ LỤC TÀI LIỆU THAM KHẢO …