Khả năng ứng dụng trong thực tiễn nếu có: - Ứng dụng trong mã hóa dữ liệu và xác thực về thông tin người dùng các dịch vụ truyền dẫn qua hệ thống mạng theo mô hình Client - Server; kiểm
Trang 1LỜI CAM ĐOAN
Tôi xin cam đoan luận văn "Sử dụng mã MD5 trong phát triển ứng dụng
môi trường Web" là công trình nghiên cứu của riêng tôi và được sự hướng dẫn
khoa học của TS Nguyễn Đăng Minh - Trưởng Khoa Công nghệ Thông tin và Điện tử Viễn thông Trường Đại học Hòa Bình
Các nội dung nghiên cứu, kết quả trong đề tài này là trung thực và chưa công bố dưới bất kỳ hình thức nào trước đây Những hình ảnh, số liệu phục vụ cho việc phân tích, nhận xét, đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi rõ trong phần tài liệu tham khảo
Tôi xin hoàn toàn chịu trách nhiệm về nội dung luận văn của mình Trường Đại học Hòa Bình không liên quan đến những vi phạm tác quyền, bản quyền
do tôi gây ra trong quá trình thực hiện (nếu có)
Hà Nội, ngày tháng 6 năm 2019
TÁC GIẢ LUẬN VĂN
Phạm Hữu Hảo
Trang 2ii
LỜI CẢM ƠN
Trong thời gian nghiên cứu và thực hiện luận văn này, tôi đã nhận được rất nhiều sự quan tâm, giúp đỡ, góp ý của nhiều tập thể, cá nhân trong và ngoài nhà trường
Trước hết tôi xin cảm ơn Trường Đại học Hoà Bình đã tổ chức khoá học
và tạo mọi điều kiện thuận lợi để chúng tôi được học tập, nghiên cứu các môn học trong chương trình đào tạo sau đại học chuyên ngành Công nghệ thông tin; xin được gửi lời cảm ơn sâu sắc tới TS Nguyễn Đăng Minh - Trưởng Khoa Công nghệ thông tin và Điện tử viễn thông, trường Đại học Hòa Bình - đã tận tình giúp đỡ chúng tôi về kiến thức, phương pháp nghiên cứu, góp ý kiến về nội dung trong quá trình hoàn thiện luận văn này
Có được kết quả nghiên cứu này tôi đã nhận được sự quan tâm, tạo điều kiện, đóng góp ý kiến cho nội dung luận văn của các cán bộ quản lý, nhà giáo, viên chức trong Trường Cao đẳng Lào Cai - nơi tôi đang công tác Tôi xin được ghi nhận và cảm ơn những sự giúp đỡ này
Tôi cũng xin bày tỏ lòng biết ơn chân thành tới gia đình, bạn bè, những người thường xuyên hỏi thăm, động viên tôi trong suốt quá trình học tập khóa đào tạo sau đại học và nghiên cứu, hoàn thành luận văn
Một lần nữa, tôi xin trân trọng cảm ơn !
Tác giả luận văn
Trang 3iii
MỤC LỤC
LỜI CAM ĐOAN i
LỜI CẢM ƠN ii
MỤC LỤC iii
DANH MỤC CÁC CHỮ VIẾT TẮT v
DANH MỤC CÁC HÌNH vi
THÔNG TIN VỀ LUẬN VĂN THẠC SĨ vii
MỞ ĐẦU 1
1 Lý do lựa chọn đề tài 1
2 Mục tiêu của luận văn 2
2.1 Mục tiêu chung 2
2.2 Mục tiêu cụ thể 2
3 Giới hạn của luận văn 2
3.1 Đối tượng nghiên cứu 2
3.2 Giới hạn về không gian 2
3.3 Giới hạn về thời gian 2
Chương 1 AN TOÀN VÀ BẢO MẬT THÔNG TIN 1.1 Giới thiệu 3
1.2 Bảo vệ thông tin trong quá trình truyền thông tin trên mạng 3
1.2.1 Các loại hình tấn công 3
1.2.2 Yêu cầu của một hệ truyền thông tin an toàn và bảo mật 6
1.2.3 Vai trò của mật mã trong việc bảo mật thông tin trên mạng 7
1.3 Bảo vệ hệ thống khỏi sự xâm nhập phá hoại từ bên ngoài 7
Chương 2 TỔNG QUAN VỀ MẬT MÃ HÓA 2.1 Khái niệm về mã hóa 10
2.2 Các thuật toán mã hóa 12
2.2.1 Mã hóa đối xứng 12
2.2.2 Mã hoá bất đối xứng 12
2.3 Hệ mã hóa RSA 14
2.3.1 Khái niệm hệ mật mã RSA 14
2.3.2 Độ an toàn của hệ RSA 16
2.3.3 Một số tính chất của hệ RSA 17
2.4 Một số phương pháp tấn công giải thuật RSA 19
Trang 4iv
Chương 3 CHỮ KÝ ĐIỆN TỬ
3.1 Khái niệm về chữ ký điện tử 21
3.2 Thuật toán chữ ký điện tử 23
3.3 Chứng nhận chữ ký điện tử 26
3.4 Chuẩn chữ ký điện tử (Digital Signature Standard) 28
3.5 Giải pháp ứng dụng chữ ký điện tử 30
3.5.1 Quá trình ký và gửi các tệp văn bản 30
3.5.2 Quá trình nhận các tệp văn bản 30
3.6 Vận dụng vào hệ thống 31
Chương 4 HÀM BĂM MẬT MÃ VÀ THUẬT TOÁN HÀM BĂM MD5 4.1 Hàm băm mật mã 32
4.1.1 Giới thiệu về hàm băm mật mã 32
4.1.2 Tính chất của hàm băm mật mã 32
4.1.3 Ứng dụng của hàm băm mật mã 34
4.1.4 Hàm băm mật mã dựa trên khối 35
4.2 Hàm băm MD5 (Message-Digest algorithm 5) 35
4.2.1 Giới thiệu hàm băm MD5 35
4.2.2 Giải thuật MD5 36
4.2.3 Miêu tả chi tiết thuật toán MD5 37
4.2.4 Ứng dụng của hàm băm MD5 42
Chương 5 XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG THUẬT TOÁN MD5 5.1 Mã hóa thông điệp trên trình duyệt web 43
5.1.1 Mô tả 43
5.1.2 Mã nguồn 43
5.1.3 Giao diện và kết quả mã hóa trên trình duyệt 47
5.2 Chương trình kiểm tra tính toàn vẹn tệp tin 47
5.2.1 Mô tả 47
5.2.1 Mã nguồn 48
5.2.3 Giao diện và kết quả thực hiện chương trình 49
5.3 Kết luận chương 5 50
KẾT LUẬN 51
DANH MỤC TÀI LIỆU THAM KHẢO 52
Trang 5DSS Digital Signature Standard
Chuẩn chữ ký số (chuẩn chữ ký điện tử)
Tóm tắt thông điệp
MD5 Message-Digest algorithm 5
Giải thuật tiêu hóa 5 (hàm băm MD5, tóm tắt thông điệp 5)
WTLS Wireless Transport Layer Security
Giao thức an ninh lớp truyền tải vô tuyến
Trang 6vi
DANH MỤC CÁC HÌNH
Hình 1.1: Xem trộm thông điệp 4
Hình 1.2: Sửa thông điệp 4
Hình 1.3: Mạo danh 5
Hình 1.4: Phát lại thông điệp 5
Hình 1.5: Mô hình bảo mật truyền thông tin trên mạng 6
Hình 1.6: Mô hình phòng chống xâm nhập và phá hoại hệ thống 8
Hình 2.1: Mô hình hệ thống mã hóa quy ước 11
Hình 2.2: Nguyên lý của hệ thống mã hoá đối xứng 12
Hình 2.3: Nguyên lý cơ bản của mã hoá khoá công khai và thuật toán RSA 14
Hình 2.4: Sơ đồ các bước thực hiện mã hóa theo thuật toán RSA 16
Hình 3.1: Kiểm tra chữ ký điện tử 24
Hình 3.2: Thủ tục ký và kiểm tra chữ ký 26
Hình 4.1: Sơ đồ thuật toán MD5 37
Hình 4.2: Sơ đồ vòng lặp chính của MD5 38
Hình 4.3: Quá trình trong một vòng xử lý của MD5 41
Hình 5.1: Giao diện mã hóa MD5 trên trình duyệt 47
Hình 5.2: Kết quả tạo mã cho tệp tin 49
Hình 5.3: So sánh mã tệp tin với mã công khai của tệp 49
Hình 5.4: So sánh mã công khai của tệp và mã tệp tin bị sửa đổi 50
Trang 7vii
THÔNG TIN VỀ LUẬN VĂN THẠC SĨ
1 Họ và tên học viên: Phạm Hữu Hảo 2 Giới tính: Nam
3 Ngày, tháng, năm sinh: 20/12/1976
4 Nơi sinh: Quỳnh Phụ - Thái Bình
5 Quyết định công nhận học viên số: 981/QĐ-ĐHHB ngày 27 tháng 12 năm 2017
của Hiệu trưởng Trường Đại học Hòa Bình
6 Các thay đổi trong quá trình đào tạo: (ghi các hình thức thay đổi và thời gian tương
ứng): Không
7 Tên đề tài luận văn: Sử dụng mã MD5 trong phát triển ứng dụng môi trường
Web
8 Chuyên ngành: Công nghệ Thông tin 9 Mã số: 8480201
10 Người hướng dẫn khoa học: Tiến sĩ Nguyễn Đăng Minh - Trưởng Khoa Công
nghệ Thông tin - Điện tử Viễn Thông, Trường Đại học Hòa Bình
11 Tóm tắt các kết quả của luận văn:
- Tìm hiểu thực trạng các loại hình tấn công trong vấn đề truyền và nhận thông
tin và các biện pháp bảo vệ thông tin trong quá trình truyền thông tin trên mạng
- Đi sâu nghiên cứu vấn đề mã hóa và chứng thực trong truyền và nhận thông
tin trên mạng
- Đưa ra giải pháp ứng dụng thuật toán MD5 trong lĩnh vực mã hóa và truyền
thông tin trong môi trường web
12 Khả năng ứng dụng trong thực tiễn (nếu có):
- Ứng dụng trong mã hóa dữ liệu và xác thực về thông tin người dùng các dịch
vụ truyền dẫn qua hệ thống mạng theo mô hình Client - Server; kiểm tra tính toàn vẹn
của tệp tin trong quá trình truyền tải qua mạng máy tính
13 Những hướng nghiên cứu tiếp theo (nếu có):
- Ứng dụng trong xác thực chữ ký điện tử
14 Các công trình đã công bố có liên quan đến luận văn (liệt kê các công trình theo
thứ tự thời gian nếu có):
Trang 8hổ trợ của máy vi tính và mạng Internet (từ việc học tập, giao dịch, đến việc gửi thư) Tất cả thông tin liên quan đến những công việc này đều do máy vi tính quản lý và truyền đi trên hệ thống mạng
Đối với những thông tin bình thường thì không có ai chú ý đến, nhưng đối với những thông tin mang tính chất sống còn đối với một số cá nhân hoặc tổ chức thì vấn đề bảo mật thật sự rất quan trọng, vấn đề khó khăn đặt ra là làm sao giữ được thông tin chính xác, bí mật, an toàn và chuyển đến đúng được địa chỉ cần đến
Nhiều tổ chức, cá nhân đã tìm kiếm và đưa ra nhiều giải pháp bảo mật phương pháp mã hóa khóa công khai được xem là phương pháp có tính an toàn khá cao Việc đảm bảo an toàn thông tin, tránh mọi nguy cơ bị thay đổi, giả mạo, sao chép hoặc mất mát dữ liệu trong các ứng dụng trên mạng hoặc trong quá trình truyền tin qua mạng luôn là vấn đề được nhiều người quan tâm
Do vậy tôi lựa chọn đề tài "Sử dụng mã MD5 trong phát triển ứng dụng
môi trường Web" để nghiên cứu vấn đề mã hóa và chứng thực thông tin qua
mạng
Trong luận văn này, tôi trình bày những vấn đề liên quan về an toàn và bảo mật thông tin, mã hóa thông tin, thuật toán băm MD5, thuật toán mã hóa RSA và chữ ký điện tử Từ đó, ứng dụng thuật toán MD5 và RSA để xây dựng các chương trình mã hóa và kiểm tra MD5 đối với tệp tin; mã hóa và kiểm tra thông tin người dùng trên hệ thống mạng máy tính nói chung và mạng Internet nói riêng Trên cở sở đó, đề ra giải pháp ứng dụng thuật toán băm MD5 trong quá trình gửi và nhận thông tin trong môi trường mạng, và môi trường web
Trang 9- Đi sâu nghiên cứu vấn đề mã hóa và chứng thực trong truyền và nhận thông tin trên mạng
- Đưa ra các giải pháp ứng dụng thuật toán MD5 trong lĩnh vực mã hóa và truyền thông tin môi trường web
3 Giới hạn của luận văn
3.1 Đối tượng nghiên cứu
Thuật toán mã hóa thông tin MD5
3.2 Giới hạn về không gian
Áp dụng thực hiện mã hóa và chứng thực thông tin trong môi trường web
3.3 Giới hạn về thời gian
Luận văn được thực hiện từ tháng 12 năm 2018 đến tháng 6 năm 2019
Trang 10an toàn và bí mật Chẳng hạn là các biện pháp như:
- Đóng dấu và ký niêm phong một bức thư để biết rằng lá thư có được chuyển nguyên vẹn đến người nhận hay không
- Dùng mật mã mã hóa thông điệp để chỉ có người gửi và người nhận hiểu được thông điệp
- Lưu giữ tài liệu mật trong các két sắt có khóa, tại các nơi được bảo vệ nghiêm ngặt, chỉ có những người được cấp quyền mới có thể xem tài liệu 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ên mạ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)
1.2 Bảo vệ thông tin trong quá trình truyền thông tin trên mạng
1.2.1 Các loại hình tấn công
Để xem xét những vấn đề bảo mật liên quan đến truyền thông trên mạng, chúng ta hãy lấy một bối cảnh sau: Có ba nhân vật tên là Alice, Bob và Trudy, trong đó Alice và Bob thực hiện trao đổi thông tin với nhau, còn Trudy là kẻ
Trang 114
xấu, đặt thiết bị can thiệp vào kênh truyền tin giữa Alice và Bob Sau đây là các loại hành động tấn công của Trudy mà ảnh hưởng đến quá trình truyền tin giữa Alice và Bob:
1) Xem trộm thông tin (Release of Message Content):
Trong trường hợp này Trudy chặn các thông điệp Alice gửi cho Bob, và xem được nội dung của thông điệp
Hình 1.1: Xem trộm thông điệp
2) Thay đổi thông điệp (Modification of Message):
Trudy chặn các thông điệp Alice gửi cho Bob và ngăn không cho các thông điệp này đến đích Sau đó Trudy thay đổi nội dung của thông điệp và gửi tiếp cho Bob Bob nghĩ rằng nhận được thông điệp nguyên bản ban đầu của Alice
mà không biết rằng chúng đã bị sửa đổi
Hình 1.2: Sửa thông điệp
Trudy
Bob Alice
Network
Đọc nội dung thông điệp của Alice
Sửa thông điệp của Alice gửi cho Bob
Network
Bob Alice
Trudy
Trang 125
3) Mạo danh (Masquerade):
Trong trường hợp này Trudy giả là Alice gửi thông điệp cho Bob Bob không biết điều này và nghĩ rằng thông điệp là của Alice
Hình 1.3: Mạo danh
4) Phát lại thông điệp (Replay):
Trudy sao chép lại thông điệp Alice gửi cho Bob Sau đó một thời gian Trudy gửi bản sao chép này cho Bob Bob tin rằng thông điệp thứ hai vẫn là từ Alice, nội dung hai thông điệp là giống nhau Thoạt đầu có thể nghĩ rằng việc phát lại này là vô hại, tuy nhiên trong nhiều trường hợp cũng gây ra tác hại không kém so với việc giả mạo thông điệp
Hình 1.4: Phát lại thông điệp
Xét tình huống sau: giả sử Bob là ngân hàng còn Alice là một khách hàng Alice gửi thông điệp đề nghị Bob chuyển cho Trudy 1000$ Alice có áp dụng các biện pháp như chữ ký điện tử với mục đích không cho Trudy mạo danh
Trang 136
cũng như sửa thông điệp Tuy nhiên nếu Trudy sao chép và phát lại thông điệp thì các biện pháp bảo vệ này không có ý nghĩa Bob tin rằng Alice gửi tiếp một thông điệp mới để chuyển thêm cho Trudy 1000$ nữa
1.2.2 Yêu cầu của một hệ truyền thông tin an toàn và bảo mật
Hình 1.5: Mô hình bảo mật truyền thông tin trên mạng
Một hệ truyền tin được gọi là an toàn và bảo mật thì phải có khả năng chống lại được các hình thức tấn công Như vậy hệ truyền tin phải có các đặc tính sau:
1) Tính bảo mật (Confidentiality): Ngăn chặn được vấn đề xem trộm thông
điệp
2) Tính chứng thực (Authentication): Nhằm đảm bảo cho Bob rằng thông
điệp mà Bob nhận được thực sự được gửi đi từ Alice, và không bị thay đổi trong quá trình truyền tin Như vậy tính chứng thực ngăn chặn các hình thức tấn công sửa thông điệp, mạo danh, và phát lại thông điệp
3) Tính không từ chối (Nonrepudiation): Xét tình huống sau:
Giả sử Bob là nhân viên môi giới chứng khoán của Alice Alice gửi thông điệp yêu cầu Bob mua cổ phiếu của công ty Z Ngày hôm sau, giá cổ phiếu công ty này giảm hơn 50% Thấy bị thiệt hại, Alice nói rằng Alice không gửi thông điệp nào cả và quy trách nhiệm cho Bob Bob phải có cơ chế để xác định rằng chính Alice là người gửi mà Alice không thể từ chối trách nhiệm được
Bên gửi
Đối thủ
Kênh thông tin
chuyển đổi liên quan đến
an toàn
thông tin
bí mật
Bên nhận thông tin
bí mật
chuyển đổi liên quan đến
an toàn
Trang 147
Khái niệm chữ ký trên giấy mà con người đang sử dụng ngày nay là một
cơ chế để bảo đảm tính chứng thực và tính không từ chối Và trong lĩnh vực máy tính, người ta cũng thiết lập một cơ chế như vậy, cơ chế này được gọi là chữ ký điện tử
1.2.3 Vai trò của mật mã trong việc bảo mật thông tin trên mạng
Mật mã hay mã hóa dữ liệu (cryptography), là một công cụ 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
1.3 Bảo vệ hệ thống khỏi sự xâm nhập phá hoại từ bên ngoài
Ngày nay, khi mạng Internet đã kết nối các máy tính ở khắp nơi trên thế giới lại với nhau, thì vấn đề bảo vệ máy tính khỏi sự thâm nhập phá hoại từ bên ngoài là một điều cần thiết Thông qua mạng Internet, các hacker có thể truy cập vào các máy tính trong một tổ chức, lấy trộm các dữ liệu quan trọng như mật khẩu, thẻ tín dụng, tài liệu… Hoặc đơn giản chỉ là phá hoại, gây trục trặc
hệ thống mà tổ chức đó phải tốn nhiều chi phí để khôi phục lại tình trạng hoạt động bình thường
Để thực hiện việc bảo vệ này, người ta dùng khái niệm “kiểm soát truy cập” (Access Control) Khái niệm kiểm soát truy cập này có hai yếu tố sau:
- Chứng thực truy cập (Authentication): Xác nhận rằng đối tượng (con người hay chương trình máy tính) được cấp phép truy cập vào hệ thống Ví dụ:
để sử dụng máy tính thì trước tiên đối tượng phải logon vào máy tính bằng username và password Ngoài ra, còn có các phương pháp chứng thực khác như sinh trắc học (dấu vân tay, mống mắt…) hay dùng thẻ (thẻ ATM…)
- Phân quyền (Authorization): Các hành động được phép thực hiện sau khi
đã truy cập vào hệ thống Ví dụ, bạn được cấp username và password để logon
Trang 15tế chúng ta vẫn nghe nói đến các vụ tấn công phá hoại Để thực hiện điều đó,
kẻ phá hoại tìm cách phá bỏ cơ chế Authentication và Authorization bằng các cách thức sau:
- Dùng các đoạn mã phá hoại (Malware): Như virus, worm, trojan, backdoor… những đoạn mã độc này phát tán lan truyền từ máy tính này qua máy tính khác dựa trên sự bất cẩn của người sử dụng, hay dựa trên các lỗi của phần mềm Lợi dụng các quyền được cấp cho người sử dụng (chẳng hạn rất nhiều người login vào máy tính với quyền administrator), các đoạn mã này thực hiện các lệnh phá hoại hoặc dò tìm password của quản trị hệ thống để gửi cho hacker, cài đặt các cổng hậu để hacker bên ngoài xâm nhập
- Thực hiện các hành vi xâm phạm (Intrusion): Việc thiết kế các phần mềm
có nhiểu lỗ hổng, dẫn đến các hacker lợi dụng để thực hiện những lệnh phá hoại Những lệnh này thường là không được phép đối với người bên ngoài, nhưng lỗ hổng của phần mềm dẫn đến được phép Trong những trường hợp đặc biệt, lỗ hổng phần mềm cho phép thực hiện những lệnh phá hoại mà ngay cả người thiết kế chương trình không ngờ tới Hoặc hacker có thể sử dụng các cổng hậu do các backdoor tạo ra để xâm nhập
Hình 1.6: Mô hình phòng chống xâm nhập và phá hoại hệ thống
Kênh truy cập
Chức năng gác cổng
Con người: hacker
Trang 169
Để khắc phục các hành động phá hoại này, người ta dùng các chương trình
có chức năng gác cổng, phòng chống Những chương trình này dò tìm virus hoặc dò tìm các hành vi xâm phạm để ngăn chặn chúng, không cho chúng thực hiện hoặc xâm nhập Đó là các chương trình chống virus, chương trình firewall… Ngoài ra các nhà phát triển phần mềm cần có quy trình xây dựng và kiểm lỗi phần mềm nhằm hạn chế tối đa những lỗ hổng bảo mật có thể có
Trang 1710
Chương 2 TỔNG QUAN VỀ MẬT MÃ HÓA 2.1 Khái niệm về mã hóa
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ụ như mã hoá 128-bit, Triple- DES, 2048-bit RSA
Trong cùng một thuật toán mã hoá, dĩ nhiên một phép mã hoá 2048-bit RSA sẽ mạnh mẽ hơn phép mã hoá 1024-bit RSA Nhưng như vậy không có nghĩa là một phép mã hoá với độ dài dãy bit lớn được xem là an toàn Thử liên tưởng đến ngôi biệt thự của bạn, với chiếc cổng được khoá bằng ổ khoá 4 chân, mỗi chân như vậy có thể nằm trong 10 vị trí, ổ khoá chỉ mở được khi 4 chân được sắp theo mã khoá của chủ nhà, và để vượt qua, 1 tên trộm cần phải dùng tối đa 10.000 phép thử (brute-force attack) Nhưng nếu tăng ổ khoá lên 10 chân,
sẽ tạo nên 10 triệu khe cắm khoá hợp lệ, thì không ai đủ sự thông minh để mở chiếc khoá bằng cách tấn công thuật toán này Họ có thể phá cửa sổ, hay thậm chí là phá chiếc cổng, giả danh chính quyền, thợ nước để đột nhập vào căn nhà của bạn Một ổ khoá tốt không thể chống lại những kiểu tấn công như thế được
Điều đó cho thấy một thuật toán mã hoá cực mạnh sẽ chỉ hữu ít nếu được
sử dụng ở đúng những nơi cần thiết, không phải lúc nào cũng là tối ưu Cái cần bảo vệ ở trên chính là ngôi nhà của bạn chứ không phải là đặt một hàng rào bẫy
và hi vọng kẻ trộm sẽ dính vào cái bẫy đó
Trang 1811
Với sự phát triển mạnh mẽ của mình, hầu hết các kênh thông tin đều lấy Internet làm nền tảng để phát triển Điều tất yếu sẽ nảy sinh là vấn đề an toàn thông tin, một ngày nào đó, bạn bỗng nhận ra rằng, thông tin của bạn đang bị theo dõi
Để 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
Ngày nay việc mã hoá đã trở nên phổ cập, các quốc gia hay là các công ty lớn đều có chính sách phát triển công cụ mã hoá riêng biệt để bảo vệ cho chính thông tin của họ
Trên thế giới hiện có rất nhiều các loại thuật toán, trong khuôn khổ luận văn này, tôi chỉ tìm hiểu về các thuật toán được ứng dụng phổ biển trong Internet
Hình 2.1: Mô hình hệ thống mã hóa quy ước
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à:
1) 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
Trang 1912
2) 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
3) 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
2.2 Các thuật toán mã hóa
2.2.1 Mã hóa đối xứng
Hình 2.2: Nguyên lý của hệ thống mã hoá đối xứng
Nguyên lý cơ bản của hệ thống mã hoá khoá đối xứng được chỉ ra trong Hình 2.2 Có thể thấy rằng bản chất của mã hoá đối xứng là cả phía thu và phía phát đều sử dụng cùng một khoá bí mật (SK), và thuật toán ở cả hai phía cũng đều giống nhau Mã hoá đối xứng như trên dựa vào việc phân phối khoá một cách bảo mật giữa cả hai phía Nhưng thực tế là khoá chung đó lại phân phối tới tất cả mọi người trong mạng, và vấn đề "kênh bảo mật" đã làm đau đầu những nhà quản trị mạng Điều nguy hiểm nhất là bất cứ ai chiếm được khoá trong quá trình phân phối cũng có toàn quyền truy nhập tới dữ liệu do khoá đó bảo vệ Do đó, quá trình phân phối khoá phải trên "kênh bảo mật", bất kể là kênh logic hay kênh vật lý
Trang 2013
đến như là khoá bí mật và khoá công khai và do đó có khái niệm mã hoá khoá công khai Mỗi khoá được sử dụng để mã hoá hay giải mã, nhưng khác với thuật toán đối xứng, giá trị của khoá ở mỗi phía là khác nhau
Trong hệ thống RSA, dữ liệu được mã hoá bằng khoá bí mật (KXu) và chỉ
có thể giải mã được bằng khoá công khai của cặp khoá đó Cặp khoá này được tạo ra cùng nhau và do đó có liên quan trực tiếp với nhau
Mặc dù có quan hệ với nhau nhưng nếu biết hay truy nhập được khoá công khai thì cũng không thể tính toán được giá trị của khoá bí mật Do đó, công khai khóa mã cũng không làm ảnh hưởng tới tính bảo mật của hệ thống, nó cũng chỉ như một địa chỉ thư tín còn khoá bí mật vẫn luôn được giữ kín Bản chất của mã hoá khoá công khai RSA là bất cứ bản tin mật mã nào đều có thể được nhận thực nếu như nó được mã hoá bằng khoá bí mật còn giải mã bằng khóa công khai
Từ đó, phía thu còn xác định được cả nguồn gốc của bản tin Bất cứ người nào giữ khoá công khai đều có thể nghe trộm bản tin mật mã bằng cách tính toán với kho bí mật, không chỉ đảm bảo tính tin cậy của bản tin (trong một nhóm) mà còn được nhận thực, hay còn gọi là không thể từ chối, ví dụ như người gửi không thể từ chối rằng chính họ là tác giả của bản tin đó
Nó hoàn toàn trái ngược với hoạt động của khoá đối xứng, trong đó bản tin mật mã được đảm bảo tính toàn vẹn giữa phía mã hoá và giải mã, nhưng bất
kỳ ai có được khoá chung đều có thể phát bản tin và từ chối rằng chính mình
đã phát nó, còn phía thu thì không thể biết được đâu là tác giả của bản tin đó Thuật toán đối xứng yêu cầu khả năng tính toán lớn hơn và do đó, tốc độ quá trình mã hoá chậm hơn so với mã hoá đối xứng Đó cũng là trở ngại chính trong các hệ thống cho phép tỷ lệ lỗi lớn như trong truyền thông thoại
Do đó, mã hoá khoá công khai không phù hợp với các bản tin có chiều dài thông thường, tuy nhiên khi kết hợp cả hai chế độ với nhau lại có thể đảm bảo
Trang 2114
tính nhận thực, tin cậy và toàn vẹn của bản tin Nói chung, các ứng dụng sử dụng thuật toán bất đối xứng là:
- Sử dụng một giá trị “băm” nhỏ làm chữ ký điện tử
- Mã hoá các khoá bí mật được sử dụng trong thuật toán đối xứng
- Thỏa thuận khóa mã bí mật giữa các phía trong truyền thông
Hình 2.3: Nguyên lý cơ bản của mã hoá khoá công khai và thuật toán RSA
2.3 Hệ mã hóa RSA
2.3.1 Khái niệm hệ mật mã RSA[6]
Khái niệm hệ mật mã RSA đã được ra đời năm 1976 bởi các tác giả R Rivets, A Shamir, và L Adleman Hệ mã hoá này dựa trên cơ sở của hai bài toán:
- Bài toán Logarithm rời rạc (Discrete logarith);
- Bài toán phân tích thành thừa số
Trong hệ mã hoá RSA các bản rõ, các bản mã và các khoá (public key và private key) là thuộc tập số nguyên ZN = {1, , N-l} Trong đó tập ZN với N=pxq là các số nguyên tố khác nhau cùng với phép cộng và phép nhân Modulo
N tạo ra modulo số học N
Khoá mã hoá EKB là cặp số nguyên (N, KB) và khoá giải mã D kb là cặp
số nguyên (N, kB), các số là rất lớn, số N có thể lên tới hàng trăm chữ số Các phương pháp mã hoá và giải mã là rất dễ dàng
Trang 2215
Công việc mã hoá là sự biến đổi bản rõ P (Plaintext) thành bản mã C (Ciphertext) dựa trên cặp khoá công khai KB và bản rõ P theo công thức sau đây:
C = EKB(P) - EB(P) = PKB(mod N) (1) Công việc giải mã là sự biến đổi ngược lại bản mã C thành bản rõ P dựa trên cặp khoá bí mật kB, modulo N theo công thức sau:
Trong đó (N) = LCM(p-l, q-l), LCM (Lest Common Multiple) là bội số chung nhỏ nhất
Nói một cách khác, đầu tiên người nhận B lựa chọn một khoá công khai
KB một cách ngẫu nhiên Khi đó khoá bí mật kB được tính ra bằng công thức (5) Điều này hoàn toàn tính được vì khi B biết được cặp số nguyên tố (p, q) thì
sẽ tính được (N)
Trang 2316
Hình 2.4: Sơ đồ các bước thực hiện mã hóa theo thuật toán RSA
2.3.2 Độ an toàn của hệ RSA
Hầu hết các cuộc tấn công giải mã đều mang mục đích không tốt
Chúng ta xét đến trường hợp khi kẻ địch nào đó biết được modulo N, khoá công khai KB và bản tin mã hoá C, khi đó kẻ địch sẽ tìm ra bản tin gốc (Plaintext) như thế nào Để làm được điều đó kẻ địch thường tấn vào hệ thống mật mã bằng hai phương thức sau đây:
Trang 2417
nguyên tố, vì nếu N là tích của hai số nguyên tố thì thuật toán phân tích thừa số đơn giản cần tối đa N bước, bởi vì có một số nguyên tố nhỏ hơn N
Mặt khác, nếu N là tích của n số nguyên tố, thì thuật toán phân tích thừa
số đơn giản cần tối đa N1/n bước
Một thuật toán phân tích thừa số có thể thành phức tạp hơn, cho phép phân tích một số N ra thành thừa số trong O(p) bước, trong đó p là số chia nhỏ nhất của N, việc chọn hai số nguyên tố làm cho thuật toán tăng hiệu quả
2) Phương thức thứ hai:
Phương thức tấn công thứ hai vào hệ mã hoá RSA là có thể khởi đầu bằng cách giải quyết trường hợp thích hợp của bài toán logarit rời rạc Trường hợp này kẻ địch đã có bản mã C và khoá công khai KB, tức là có cặp (KB, C)
Cả hai phương thức tấn công đều cần một số bước cơ bản, đó là:
O(𝑒𝑥𝑝√𝑙𝑛𝑁𝑙𝑛(𝑙𝑛𝑁)), trong đó N là số modulo
có hệ mã hoá nào hết nếu không tính ra được các khoá của chúng là các số lớn
2) Các khoá cho hệ mã hoá RSA có thể được tạo ra mà không phải tính toán quá nhiều:
Trang 2518
Xét phương pháp kiểm tra số nguyên tố, mỗi số nguyên tố lớn có thể được phát sinh bằng cách:
- Đầu tiên tạo ra một số ngẫu nhiên lớn;
- Sau đó kiểm tra các số kế tiếp cho tới khi tìm được một số nguyên tố Một phương pháp đơn giản thực hiện một phép tính trên một con số ngẫu nhiên, với xác suất 1/2 sẽ chứng minh rằng số được kiểm tra không phải nguyên tố;
- Cuối cùng là tính p dựa vào thuật toán Euclid
Trong hệ mã hoá công khai thì khoá giải mã (private key) kB và các thừa
số p, q là được giữ bí mật và sự thành công của phương pháp là tùy thuộc vào
kẻ địch có khả năng tìm ra được giá trị của kB hay không nếu cho trước N và
KB Rất khó có thể tìm ra được kB từ KB cần biết về p và q, như vậy cần phân tích N ra thành thừa số để tính p và q Nhưng việc phân tích ra thừa số là một việc làm tốn rất nhiều thời gian, với kỹ thuật hiện đại ngày nay thì cần tới hàng triệu năm để phân tích một số có 200 chữ số ra thừa số
Độ an toàn của thuật toán RSA dựa trên cơ sở những khó khăn của việc xác định các thừa số nguyên tố của một số lớn Bảng duới đây cho biết các thời gian dự đoán, giả sử rằng mỗi phép toán thực hiện trong một micro giây
Số các chữ số trong số được phân tích Thời gian phân tích
Trang 2619
2.4 Một số phương pháp tấn công giải thuật RSA
Tính chất an toàn của phương pháp RSA dựa trên cơ sở chi phí cho việc giải mã bất hợp lệ thông tin đã được mã hóa sẽ quá lớn nên xem như không thể thực hiện được
Vì khóa là công cộng nên việc tấn công bẻ khóa phương pháp RSA thường dựa vào khóa công cộng để xác định được khóa riêng tương ứng Điều quan trọng là dựa vào n để tính p, q của n, từ đó tính được d
1) Phương pháp sử dụng (n):
Giả sử người tấn công biết được giá trị (n) Khi đó việc xác định giá trị
p, q được đưa về việc giải hai phương trình sau: n=p*q
2) Sự che dấu thông tin trong hệ thống RSA:
Hệ thống RSA có đặc điểm là thông tin không phải luôn được che dấu Giả sử người gửi có e = 17, n = 35 Nếu muốn gửi bất cứ dữ liệu nào thuộc tập sau: {1, 6, 7, 8, 13, 14, 15, 20, 21, 22, 27, 28, 29, 34} thì kết quả của việc mã hóa lại chính là dữ liệu ban đầu Nghĩa là, M = Me mod n
Còn khi p = 109, q = 97, e = 865 thì hệ thống hoàn toàn không có sự che dấu thông tin, bởi vì: M, M = M865 mod (109*97)
Với mỗi giá trị n, có ít nhất 9 trường hợp kết quả mã hóa chính là dữ liệu
nguồn ban đầu: M = M e mod n hay M = Me mod p và M = Me modq (8) Với mỗi e, có ít nhất ba giải pháp thuộc tập {0, 1, -1} Để xác định chính xác số thông điệp không được che dấu (không bị thay đổi sau khi mã hóa) ta sử dụng định lý sau: Nếu các thông điệp được mã hóa trong hệ thống RSA được
Trang 27p và q có thể được xác định thì xem như tính an toàn của phương pháp RSA không còn được bảo đảm nữa Như vậy, tính an toàn của phương pháp RSA dựa trên cơ sở các máy tính tại thời điểm hiện tại chưa đủ khả năng giải quyết việc phân tích các số nguyên rất lớn ra thừa số nguyên tố Tuy nhiên, với sự phát triển ngày càng nhanh chóng của máy tính cũng như những bước đột phá trong lĩnh vực toán học, phương pháp RSA sẽ gặp phải những khó khăn trong việc bảo mật thông tin Năm 1994, Peter Shor, một nhà khoa học tại phòng thí nghiệm AT&T, đã đưa ra một thuật toán có thể phân tích một cách hiệu quả các số nguyên rất lớn trên máy tính lượng tử Mặc dù máy tính lượng tử hiện chưa thể chế tạo được nhưng rõ ràng phương pháp RSA sẽ gặp phải nhiều thách thức lớn trong tương lai
Trang 2821
Chương 3 CHỮ KÝ ĐIỆN TỬ 3.1 Khái niệm về chữ ký điện tử
Kể từ khi con người phát minh ra chữ viết, các chữ ký thường luôn được
sử dụng hàng ngày, chẳng hạn như ký một biên nhận trên một bức thư nhận tiền từ ngân hàng ký hợp đồng hay một văn bản bất kỳ nào đó Chữ ký viết tay thông thường trên tài liệu thường được dùng để xác định người ký nó
Chữ ký điện tử không được sử dụng nhằm bảo mật thông tin mà nhằm bảo
vệ thông tin không bị người khác cố tình thay đổi để tạo ra thông tin sai lệch Nói cách khác, chữ ký điện tử giúp xác định được người đã tạo ra hay chịu trách nhiệm đối với một thông điệp
Sơ đồ chữ ký điện tử là một phương pháp ký một văn bản hay lưu bức điện dưới dạng điện tử Chẳng hạn một bức điện có chữ ký được lưu hành trên mạng máy tính Chữ ký điện tử từ khi ra đời đã có nhiều ứng dụng rộng rãi trong các giao dịch thương mại, từ việc xác minh chữ ký cho đến các thẻ tín dụng, các sơ đồ định danh và các sơ đồ chia sẻ bí mật
Một số điểm khác biệt giữa chữ ký thông thường và chữ ký điện tử: Đầu tiên là vấn đề ký một tài liệu Với chữ ký thông thường nó là một phần vật lý của tài liệu Tuy nhiên, một chữ ký điện tử không gán theo kiểu vật
lý vào bức điện nên thuật toán được dùng là phải "không nhìn thấy" theo cách nào đó trên bức điện
Thứ hai là vấn đề kiểm tra Chữ ký thông thường được kiểm tra bằng cách
so sánh nó với chữ ký xác thực khác Ví dụ, ai đó ký một tấm sec để mua hàng, người bán sẽ so sánh chữ ký trên mảnh giấy đó với chữ ký nằm mặt sau thẻ tín dụng để kiểm tra Mặt khác, chữ ký số có thể kiểm tra bằng một thuật toán kiểm tra một cách công khai Như vậy, bất kỳ ai cũng có thể kiểm tra được chữ ký điện tử Việc sử dụng một sơ đồ ký an toàn có thể ngăn chặn được khả năng giả mạo
Trang 2922
Sự khác biệt cơ bản giữa chữ ký điện tử và chữ ký thông thường là chỗ: Một bản copy tài liệu có chữ ký được đồng nhất với bản gốc Nói cách khác, tài liệu có chữ ký trên giấy thường có thể khác biệt với bản gốc điều này để ngăn chặn một bức điện được ký khỏi bị dừng lại Ví dụ, nếu B ký một bức điện xác minh cho A rút 100$ từ tài khoản của mình, anh ta chỉ muốn A có khả năng làm điều đó một lần Vì thế, bản thân bức điện phải chứa thông tin để khỏi
bị dừng lại, chẳng hạn như dùng dịch vụ gán nhãn thời gian (Time Stamping Service)
Một sơ đồ chữ ký điện tử thường chứa hai thành phần: Thuật toán ký sig()
và thuật toán xác minh ver() B có thể ký một bức điện X dùng thuật toán ký an toàn (bí mật), kết quả chữ ký y = sig(x) nhận được có thể kiểm tra bằng thuật toán xác minh công khai ver(y) Khi cho trước cặp (x, y), thuật toán xác minh cho giá trị True hay False tùy thuộc vào chữ ký được xác thực như thế nào Vậy thế nào là chữ ký điện tử ? Chúng ta có một số khái niệm như sau:
- Là một định danh điện tử được tạo ra bởi máy tính được các tổ chức sử dụng nhằm đạt được tính hiệu quả và có hiệu lực như chữ ký tay
- Là một cơ chế xác thực hóa cho phép người tạo ra thông điệp đính kèm một mã số vào thông điệp giống như là việc ký một chữ ký lên một văn bản bình thường
Các chữ ký điện tử được sinh ra và sử dụng bởi các hệ chữ ký (sơ đồ) điện
tử, dưới đây là một định nghĩa một hệ chữ ký điện tử:
Một sơ đồ chữ ký điện tử là bộ 5 (P, A, K, S, V) thỏa mãn các điều kiện dưới đây:
1) P là tập hữu hạn các bức điện (thông điệp, bản rõ) có thể
2) A là tập hữu hạn các chữ ký có thể
3) K là tập không gian khoá (tập hữu hạn các khóa có thể)