Trong khi tại Việt Nam, một số giải pháp phần mềm đang được phát triển và triển khai liên quan đến công tác văn bản, lưu trữ tài liệu như dịch vụ số hóa dữ liệu, các phần mềm quản lý văn
Trang 1ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
Trang 2LỜI CAM ĐOAN
Sau quá trình học tập tại Trường Đại học công nghệ thông tin & truyền
thông, với những kiến thức lý thuyết và thực hành đã tích lũy được, với việc vận dụng
các kiến thức vào thực tế, em đã tự nghiên cứu các tài liệu, các công trình nghiên cứu, đồng thời có sự phân tích, tổng hợp, đúc kết và phát triển để hoàn thành luận văn thạc
sĩ của mình
Em xin cam đoan luận văn này là công trình do bản thân em tự tìm hiểu, nghiên
cứu và hoàn thành dưới sự hướng dẫn của thầy giáo TS Vũ Vinh Quang
Thái Nguyên, tháng 9 năm 2014
Học viên
Đặng Thị Như Trang
Trang 3LỜI CẢM ƠN
Trong thời gian hai năm của chương trình đào tạo thạc sĩ, trong đó gần một nửa thời gian dành cho các môn học, thời gian còn lại dành cho việc lựa chọn đề tài, giáo viên hướng dẫn, tập trung vào nghiên cứu, viết, chỉnh sửa và hoàn thiện luận văn Với quỹ thời gian như vậy và với vị trí công việc đang phải đảm nhận, không riêng bản thân em mà hầu hết các học viên cao học muốn hoàn thành tốt luận văn của mình trước hết đều phải có sự sắp xếp thời gian hợp lý, có sự tập trung học tập và nghiên cứu với tinh thần nghiêm túc, nỗ lực hết mình; tiếp đến cần có sự ủng hộ về tinh thần, sự giúp
đỡ về chuyên môn, một trong những điều kiện không thể thiếu quyết định đến việc thành công của luận văn
Để hoàn thành được luận văn này trước tiên em xin gửi lời cảm ơn đến thầy
giáo hướng dẫn TS Vũ Vinh Quang, người đã có những định hướng cho em về nội
dung và hướng phát triển của đề tài, người đã có những đóng góp quý báu cho em về những vấn đề chuyên môn của luận văn, giúp em tháo gỡ kịp thời những vướng mắc trong quá trình làm luận văn
Em cũng xin cảm ơn các thầy cô giáo Trường Đại học Công nghệ thông tin và Truyền thông cũng như bạn bè cùng lớp đã có những ý kiến đóng góp bổ sung cho đề tài luận văn của em Xin cảm ơn gia đình, người thân cũng như đồng nghiệp luôn quan tâm, ủng hộ hỗ trợ về mặt tinh thần trong suốt thời gian từ khi nhận đề tài đến khi hoàn thiện luận văn này
Em xin hứa sẽ cố gắng hơn nữa, tự trau dồi bản thân, tích cực nâng cao năng lực chuyên môn của mình để sau khi hoàn thành luận văn này sẽ có hướng tập trung nghiên cứu sâu hơn, không ngừng hoàn thiện hơn nữa luận văn của mình để có những ứng dụng thực tiễn cao trong thực tế
Thái Nguyên, tháng 9 năm 2014
Học viên
Đặng Thị Như Trang
Trang 4MỤC LỤC
LỜI CAM ĐOAN 2
LỜI CẢM ƠN 3
MỤC LỤC 4
DANH MỤC CÁC CHỮ VIẾT TẮT 6
DANH MỤC BẢNG BIỂU 7
DANH MỤC HÌNH VẼ 8
MỞ ĐẦU 9
Chương 1 TỔNG QUAN VỀ HỆ MÃ 13
1.1 GIỚI THIỆU CHUNG VỀ MÃ HÓA 13
1.1.1 An toàn và bảo mật thông tin 13
1.1.2 Mục tiêu của an toàn bảo mật thông tin 14
1.1.3 Các chiến lược an toàn hệ thống 15
1.1.4 An toàn thông tin bằng mật mã 16
1.1.5 Vai trò của hệ mật mã 17
1.1.6 Các thành phần của một hệ mật mã 17
1.1.7 Tiêu chuẩn đánh giá hệ mật mã 18
1.2 CƠ SỞ TOÁN HỌC 19
1.2.1 Cơ sở toán học 19
1.2.2 Số nguyên tố và phân tích thành thừa số 20
1.2.3 Phép mũ hóa và khai căn modul 23
1.3 MẬT MÃ HỌC VÀ MẬT MÃ KHÓA CÔNG KHAI RSA 24
1.3.1 Mã hóa dữ liệu 24
1.3.2 Ứng dụng của mã hóa 25
1.3.3 Phân loại mã hóa 25
1.3.4 Ưu khuyết điểm của hai phương pháp 28
1.3.5 Hệ mã RSA (R.Rivest, A.Shamir, L.Adleman) 30
1.3.6 Một số vấn đề về khóa của RSA 34
1.3.7 Module trong hệ thống RSA 40
1.3.8 Tốc độ của RSA 42
1.3.9 Vấn đề tìm văn bản bằng RSA 43
1.3.10 Vấn đề sử dụng RSA hiện nay 43
1.4 KẾT LUẬN CHƯƠNG 1 44
Chương 2 CHỮ KÝ ĐIỆN TỬ 45
2.1 ĐẶT VẤN ĐỀ 45
2.1.1 Vấn đề xác thực 45
2.1.2 Vấn đề chữ ký số 46
2.2 HÀM BĂM MẬT MÃ 47
2.2.1 Định nghĩa 47
2.2.2 Phân loại 48
2.2.3 Cấu trúc cơ bản của thuật toán băm 48
Trang 52.2.4 Hàm băm MD5 49
2.2.5 Hàm băm SHA-1 50
2.3 MỘT SỐ KHÁI NIỆM VÀ TÍNH CHẤT CHỮ KÝ ĐIỆN TỬ 50
2.3.1 Khái niệm: 50
2.3.2 Các bước tạo và kiểm tra chữ ký điện tử 51
2.3.3 Vị trí, vai trò của chữ ký số 51
2.3.4 Phân loại chữ ký số 52
2.3.5 Sơ đồ chữ ký số 53
2.3.6 Sơ đồ chữ ký RSA 54
2.3.7 Lược đồ chữ ký số 55
2.3.8 Yêu cầu chữ ký số 56
2.3.9 Đặc điểm của chữ ký số 56
2.3.10 Tấn công chữ ký số 57
2.3.11 So sánh chữ ký thông thường và chữ ký số 58
2.3.12 Độ an toàn của chữ ký RSA 59
2.4 MÔ HÌNH CHỮ KÝ SỐ DỰA TRÊN RSA 60
2.4.1 Quá trình ký và gửi các tệp văn bản 60
2.4.2 Quá trình nhận các tệp văn bản 61
2.5 KẾT LUẬN CHƯƠNG 2 62
Chương 3 MỘT SỐ KẾT QUẢ ỨNG DỤNG CHỮ KÝ ĐIỆN TỬ 63
3.1 MÔ HÌNH BÀI TOÁN THỰC TẾ 63
3.1.1 Một vài nét về tổ chức của cơ quan 63
3.1.2 Vấn đề ứng dụng công nghệ thông tin hiện nay 64
3.1.3 Vấn đề lưu trữ văn bản 66
3.1.4 Vấn đề bảo mật văn bản 68
3.2 ĐỀ XUẤT PHƯƠNG ÁN BẢO MẬT 73
3.2.1 Các module 77
3.2.2 Cấu hình hệ thống 78
3.2.3 Quy trình thực hiện ký văn bản khi gửi có xác thực 79
3.3 MỘT SỐ HƯỚNG DẪN SỬ DỤNG CHƯƠNG TRÌNH CHỮ KÝ SỐ 79
3.3.1 Giao diện chính 79
3.3.2 Giao diện chương trình nhập khóa cho thuật toán RSA 80
3.3.3 Giao diện chương trình thuật toán RSA 80
3.3.4 Giao diện chương trình chữ ký (phần ký kiểm tra chữ ký) 82
3.4 MỘT SỐ ĐÁNH GIÁ KHI THỬ NGHIỆM TẠI CƠ SỞ THỰC TẾ 83
3.5 KẾT LUẬN CHƯƠNG 3 83
KẾT LUẬN 84
TÀI LIỆU THAM KHẢO 85
PHỤ LỤC 86
Phụ lục 1: Tạo cặp khóa bí mật – công khai 86
Phụ lục 2: Tạo chữ ký số 87
Phụ lục 3: Xác thực chữ ký số 91
Trang 6DANH MỤC CÁC CHỮ VIẾT TẮT
RSA R.Rivest A.Shamir L.Adleman
DES Data Encrypt Standar
MAC Media Access Control
Trang 8DANH MỤC HÌNH VẼ
Hình 1.1 Mã hoá với khóa mã và khóa giải giống nhau 10
Hình 1.4 Sơ đồ mã hóa và giải mã bằng khóa riêng 19 Hình 1.5 Sơ đồ mã hóa và giải mã bằng khóa công khai 20
Hình 1.8 Bảo mật tại nơi ra và nơi nhận vào của hai người sử dụng 31 Hình 1.9 Bảo mật tại nơi ra của người gửi và tại nơi nhận trước khi vào hệ
Trang 9MỞ ĐẦU
1 Lý do lựa chọn đề tài
Văn bản là phương tiện lưu giữ và truyền đạt thông tin bằng ngôn ngữ hay ký hiệu nhất định Ở Việt Nam, Theo thống kê của Bộ Công thương, trong năm 2012 cả nước có tới 2,9 triệu tấn giấy đã được tiêu thụ Điều này cho thấy văn bản, tài liệu bằng giấy vẫn tiếp tục là một phương tiện quan trọng trong mọi hoạt động kinh doanh và nghiệp vụ Tuy nhiên, đây cũng là thách thức về vấn đề lưu trữ và quản lý, khai thác,
sử dụng thông tin đối với các cơ quan, doanh nghiệp Việt Nam, nhất là trong thời kỳ bùng nổ công nghệ thông tin
Trong khi tại Việt Nam, một số giải pháp phần mềm đang được phát triển và triển khai liên quan đến công tác văn bản, lưu trữ tài liệu như dịch vụ số hóa dữ liệu, các phần mềm quản lý văn bản, công văn…nhằm giải quyết hiệu quả trong việc số hóa văn bản giấy, giải toả các tủ hồ sơ lưu trữ với hàng chồng văn bản có nguy cơ bị hư hại theo thời gian; thì hiện nay trên thế giới đã được áp dụng rộng rãi tại những nước phát triển như Mỹ, Nhật… Chúng được sử dụng trong nhiều tổ chức Chính Phủ, bao gồm các chi nhánh của Chính Phủ Mỹ, những tập đoàn chính yếu, những thư viện quốc tế
và các trường Đại học Nhiều nước không chỉ triển khai chữ ký số trên mạng máy tính
mà còn áp dụng trên mạng điện thoại di động để thực hiện các giao dịch điện tử
Hầu như các hoạt động, giao dịch đều được sử dụng qua mạng máy tính và văn bản không nằm ngoài sự phát triển chung đó Tuy nhiên, các văn bản khi giao dịch trao đổi trên mạng có nguy cơ bị thay đổi, sao chép hoặc mất mát dữ liệu trong các ứng dụng luôn là vấn đề gây bức xúc được nhiều người quan tâm
Trong bối cảnh hiện tại, mọi hệ thống thông tin điện tử đều phải đương đầu với bài toán đảm bảo an toàn và bảo mật Trong đó, an toàn thông tin bằng mật mã có vai trò rất quan trọng và được ứng dụng rộng khắp Nắm bắt được thông tin nhiều khi mang ý nghĩa quyết định, sống còn đặc biệt trong các lĩnh vực: kinh tế, chính trị, an
Trang 10ninh, quốc phòng…Vì vậy việc bảo mật thông tin đã, đang và sẽ là vấn đề được đặt ra rất cấp bách Để giải quyết vấn đề đó các hệ mật mã đã ra đời Từ các hệ mật mã sơ khai cổ điển như: Hệ mã Dịch Vòng, hệ mã Hill, hệ mã Affine,…, cho đến các hệ mật
mã hiện đại, phức tạp như hệ mã DES Các hệ mật mã công khai như hệ mã RSA, hệ
mã Ba Lô Nhưng đi kèm với sự ra đời và phát triển của các hệ mật mã là các phương pháp phá khóa các hệ mật mã đó Cuộc chiến giữa bảo mật thông tin và xâm phạm thông tin vẫn luôn diễn ra một cách thầm lặng nhưng vô cùng gay gắt
Internet ngoài những mặt mạnh như chúng ta đã biết là cho phép mọi người truy cập, khai thác, chia sẻ thông tin; thì nó cũng là nguyên nhân chính dẫn đến thông tin bị
rò rỉ hoặc bị phá hoại Lúc này việc bảo mật an toàn dữ liệu là vấn đề thời sự Nhằm giải quyết vấn đề xử lý các giao dịch trao đổi văn bản trên mạng chữ ký điện tử đã được ứng dụng rộng rãi Một trong những ứng dụng cực kỳ quan trọng của chữ ký điện
tử là đảm bảo an toàn dữ liệu khi truyền trên mạng
Chính vì vậy, với mong muốn tìm hiểu một trong những phương pháp bảo vệ
an toàn thông tin có tính an toàn cao hiện nay là dùng mật mã khóa công khai RSA và một vài ứng dụng của mật mã khóa công khai: Sử dụng chữ ký số trong việc xác thực,
mã hóa và giải mã các tập tin văn bản Đồng thời được sự đồng ý và hướng dẫn của
thầy giáo, TS Vũ Vinh Quang, tác giả lựa chọn đề tài luận văn tốt nghiệp “Lý thuyết
mã hóa và vấn đề xác minh thông tin” với mong muốn áp dụng các kiến thức đã được
học, xây dựng thử nghiệm mô hình giải quyết bài toán ký và xác thực trong văn bản
quản lý Nhà nước tại Sở Thông tin và Truyền thông Tuyên Quang
2 Mục đích nghiên cứu
Qua việc phân tích, khảo sát và đánh giá thực trạng sử dụng văn bản quản lý Nhà nước tại Việt Nam cũng như trên thế giới, kết hợp với việc nghiên cứu các kỹ thuật, phương pháp, thuật toán mã hóa, mục tiêu chính của luận văn được xác định là: Nghiên cứu về lý thuyết mật mã, mật mã khóa công khai RSA, chữ ký số và ứng dụng thuật toán RSA trong mã hóa dữ liệu Từ đó xây dựng hệ thống cho phép tạo và kiểm
Trang 11tra chữ ký số đối với các tài liệu văn bản quản lý nhà nước để bảo mật nội dung thông tin cũng như xác thực nguồn gốc của thông tin Ứng dụng chữ ký số RSA để giải quyết
bài toán ký và xác thực trong văn bản quản lý Nhà nước tại tỉnh Tuyên Quang
3 Đối tượng và phạm vi nghiên cứu
Hệ mật mã khóa công khai RSA
Mô hình chung về chữ ký số và chữ ký số RSA
Trong phạm vi luận văn, tác giả sử dụng giải pháp của Lược đồ Chữ ký số RSA
để giải quyết các vấn đề đã nêu
4 Phương pháp luận nghiên cứu
Phương pháp nghiên cứu lý thuyết: Tổng hợp tài liệu; Nghiên cứu các tài liệu về văn bản quản lý Nhà nước; Nghiên cứu về hệ mã hóa công khai, hệ mật RSA, chữ ký
số và các loại chữ ký số sử dụng hệ mật RSA; Tìm hiểu các kiến thức liên quan đến
chữ ký số RSA, các kỹ thuật giao thức sử dụng giải quyết bài toán ký và xác thực trong
văn bản quản lý Nhà nước
Phương pháp nghiên cứu thực nghiệm: Sau khi nghiên cứu lý thuyết, phát biểu bài toán, đưa ra giải pháp xử lý; Mô phỏng thử nghiệm chương trình trên phần mềm Visual Studio; Đánh giá các kết quả đạt được
Phương pháp trao đổi khoa học: Thảo luận, xemina, lấy ý kiến chuyên gia, công
bố các kết quả nghiên cứu trên tạp chí khoa học
5 Ý nghĩa khoa học và thực tiễn của luận văn
Trang 12Trình bày lý thuyết chung về chữ ký số, mô hình chữ ký số RSA
Về mặt thực tiễn:
Xây dựng được chương trình ứng dụng dựa vào hệ mật RSA có chức năng bảo mật nội dung cho các tập tin văn bản, tạo và kiểm tra chữ ký số cho các tập tin đó để xác định tính toàn vẹn nội dung và chủ nhân của tập tin khi thực hiện trao đổi qua Internet
6 Nội dung chính của luận văn
Nội dung luận văn bao gồm 3 chương:
Chương 1: Tổng quan về hệ mã Trong chương này cung cấp các kiến thức lý
thuyết cơ bản, những khái niệm về mật mã học; đi sâu về mật mã khóa công khai RSA
Chương 2: Chữ ký số Với những nội dung chính như: Khái niệm và tính chất
chữ ký điện tử; Mô hình chữ ký số dựa trên RSA
Chương 3: Một số kết quả ứng dụng chữ ký điện tử Dựa vào những cơ sở lý
thuyết đã nghiên cứu, trong chương này luận văn sẽ trình bày kết quả của việc triển khai vấn đề bảo mật các tài liệu số trên mạng máy tính tại các cơ quan tỉnh Tuyên quang dựa trên hệ mật mã RSA và chữ ký số Phần cuối chương giới thiệu việc xây
dựng chương trình demo cho bài toán ký và xác thực trong văn bản quản lý Nhà nước
Các kết quả này đã và đang được thử nghiệm tại Sở thông tin truyền thông
Trang 13Chương 1 TỔNG QUAN VỀ HỆ MÃ
1.1 GIỚI THIỆU CHUNG VỀ MÃ HÓA
1.1.1 An toàn và bảo mật thông tin
Thông tin luôn là yếu tố quan trọng trong các hoạt động của đời sống con người Trong thời đại ngày nay, khi nhu cầu trao đổi thông tin dữ liệu ngày càng lớn và đa dạng, các tiến bộ về điện tử - viễn thông và công nghệ thông tin không ngừng được phát triển ứng dụng để nâng cao chất lượng và lưu lượng truyền tin thì các quan niệm ý tưởng và biện pháp bảo vệ thông tin dữ liệu cũng được đổi mới Bảo vệ an toàn thông tin dữ liệu là một chủ đề rộng, có liên quan đến nhiều lĩnh vực và trong thực tế có thể
có rất nhiều phương pháp được thực hiện để bảo vệ an toàn thông tin dữ liệu Các phương pháp bảo vệ an toàn thông tin dữ liệu có thể được quy tụ vào ba nhóm sau:
- Bảo vệ an toàn thông tin bằng các biện pháp hành chính
- Bảo vệ an toàn thông tin bằng các biện pháp kỹ thuật (phần cứng)
- Bảo vệ an toàn thông tin bằng các biện pháp thuật toán (phần mềm)
Ba nhóm trên có thể được ứng dụng riêng rẽ hoặc phối kết hợp Môi trường khó bảo vệ an toàn thông tin nhất và cũng là môi trường đối phương dễ xâm nhập nhất đó
là môi trường mạng và truyền tin Biện pháp hiệu quả nhất và kinh tế nhất hiện nay trên mạng truyền tin và mạng máy tính là biện pháp thuật toán
An toàn thông tin bao gồm các nội dung sau:
- Tính bí mật: tính kín đáo riêng tư của thông tin
- Tính xác thực của thông tin, bao gồm xác thực đối tác (bài toán nhận danh), xác thực thông tin trao đổi
- Tính trách nhiệm: đảm bảo người gửi thông tin không thể thoái thác trách nhiệm về thông tin mà mình đã gửi
Trang 14Để đảm bảo an toàn thông tin dữ liệu trên đường truyền tin và trên mạng máy tính có hiệu quả thì điều trước tiên là phải lường trước hoặc dự đoán trước các khả năng không an toàn, khả năng xâm phạm, các sự cố rủi ro có thể xảy ra đối với thông tin dữ liệu được lưu trữ và trao đổi trên đường truyền tin cũng như trên mạng Xác định càng chính xác các nguy cơ nói trên thì càng quyết định được tốt các giải pháp để giảm thiểu các thiệt hại
Có hai loại hành vi xâm phạm thông tin dữ liệu đó là: vi phạm chủ động và vi phạm thụ động Vi phạm thụ động chỉ nhằm mục đích cuối cùng là nắm bắt được thông tin (đánh cắp thông tin) Việc làm đó có khi không biết được nội dung cụ thể nhưng có thể dò ra được người gửi, người nhận nhờ thông tin điều khiển giao thức chứa trong phần đầu các gói tin Kẻ xâm nhập có thể kiểm tra được số lượng, độ dài và tần số trao đổi Vì vậy vi phạm thụ động không làm sai lệch hoặc hủy hoại nội dung thông tin dữ liệu được trao đổi Vi phạm thụ động thường khó phát hiện nhưng có thể có những biện pháp ngăn chặn hiệu quả Vi phạm chủ động là dạng vi phạm có thể làm thay đổi nội dung, xóa bỏ, làm trễ, sắp xếp lại thứ tự hoặc làm lặp lại gói tin tại thời điểm đó hoặc sau đó một thời gian Vi phạm chủ động có thể thêm vào một số thông tin ngoại lai để làm sai lệch nội dung thông tin trao đổi Vi phạm chủ động dễ phát hiện nhưng để ngăn chặn hiệu quả thì khó khăn hơn nhiều
Một thực tế là không có một biện pháp bảo vệ an toàn thông tin dữ liệu nào là
an toàn tuyệt đối Một hệ thống dù được bảo vệ chắc chắn đến đâu cũng không thể đảm bảo là an toàn tuyệt đối
1.1.2 Mục tiêu của an toàn bảo mật thông tin
Bên cạnh việc làm thế nào để che dấu nội dung thông tin thì mã hoá phải đảm bảo các mục tiêu sau:
Trang 15Tính bí mật (Confjdentialy): Đảm bảo dữ liệu được truyền đi một cách an toàn
và không thể bị lộ thông tin nếu như có ai đó cố tình muốn có được nội dung của dữ liệu gốc ban đầu Chỉ những người được phép mới có khả năng đọc được nội dung thông tin ban đầu
Tính xác thực (Authentication): Giúp cho người nhận dữ liệu xác định được
chắc chắn dữ liệu mà họ nhận là dữ liệu gốc ban đầu Kẻ giả mạo không thể có khả năng để giả dạng một người khác hay nói cách khác không thể mạo danh để gửi dữ liệu Người nhận có khả năng kiểm tra nguồn gốc thông tin mà họ nhận được
Tính toàn vẹn (Integrity): Giúp cho người nhận dữ liệu kiểm tra được rằng dữ
liệu không bị thay đổi trong quá trình truyền đi Kẻ giả mạo không thể có khả năng thay thế dữ liệu ban đầu bằng dữ liệu giả mạo
Tính không thể chối bỏ (Non-repudation): Người gửi hay người nhận không thể
chối bỏ sau khi đã gửi hoặc nhận thông tin
1.1.3 Các chiến lược an toàn hệ thống
- Giới hạn quyền hạn tối thiểu (Last Privilege):
Đây là chiến lược cơ bản nhất theo nguyên tắc này bất kỳ một đối tượng nào cũng chỉ có những quyền hạn nhất định đối với tài nguyên mạng, khi thâm nhập vào mạng đối tượng đó chỉ được sử dụng một số tài nguyên nhất định
- Bảo vệ theo chiều sâu (Defence In Depth):
Nguyên tắc này nhắc nhở chúng ta: Không nên dựa vào một chế độ an toàn nào
dù cho chúng rất mạnh, mà nên tạo nhiều cơ chế an toàn để tương hỗ lẫn nhau
- Nút thắt (Choke Point):
Tạo ra một “cửa khẩu” hẹp, và chỉ cho phép thông tin đi vào hệ thống của mình bằng con đường duy nhất chính là “cửa khẩu” này => phải tổ chức một cơ cấu kiểm soát và điều khiển thông tin đi qua cửa này
Trang 16- Điểm nối yếu nhất (Weakest Link):
Chiến lược này dựa trên nguyên tắc: “Một dây xích chỉ chắc tại mắt duy nhất, một bức tường chỉ cứng tại điểm yếu nhất”
Kẻ phá hoại thường tìm những chỗ yếu nhất của hệ thống để tấn công, do đó ta cần phải gia cố các yếu điểm của hệ thống Thông thường chúng ta chỉ quan tâm đến
kẻ tấn công trên mạng hơn là kẻ tiếp cận hệ thống, do đó an toàn vật lý được coi là yếu điểm nhất trong hệ thống của chúng ta
- Tính toàn cục:
Các hệ thống an toàn đòi hỏi phải có tính toàn cục của các hệ thống cục bộ Nếu
có một kẻ nào đó có thể bẻ gãy một cơ chế an toàn thì chúng có thể thành công bằng cách tấn công hệ thống tự do của ai đó và sau đó tấn công hệ thống từ nội bộ bên trong
- Tính đa dạng bảo vệ:
Cần phải sử dụng nhiều biện pháp bảo vệ khác nhau cho hệ thống khác nhau, nếu không có kẻ tấn công vào được một hệ thống thì chúng cũng dễ dàng tấn công vào các
hệ thống khác
1.1.4 An toàn thông tin bằng mật mã
Mật mã là một ngành khoa học chuyên nghiên cứu các phương pháp truyền tin
bí mật Mật mã bao gồm: Lập mã và phá mã Lập mã bao gồm hai quá trình: mã hóa và giải mã
Để bảo vệ thông tin trên đường truyền người ta thường biến đổi nó từ dạng nhận thức được sang dạng không nhận thức được trước khi truyền đi trên mạng, quá trình này được gọi là mã hoá thông tin (encryption), ở trạm nhận phải thực hiện quá trình ngược lại, tức là biến đổi thông tin từ dạng không nhận thức được (dữ liệu đã được mã hoá) về dạng nhận thức được (dạng gốc), quá trình này được gọi là giải mã Đây là một lớp bảo vệ thông tin rất quan trọng và được sử dụng rộng rãi trong môi trường mạng
Để bảo vệ thông tin bằng mật mã người ta thường tiếp cận theo hai hướng:
- Theo đường truyền (Link_Oriented_Security)
Trang 17- Từ nút đến nút (End_to_End)
Theo cách thứ nhất thông tin được mã hoá để bảo vệ trên đường truyền giữa hai nút mà không quan tâm đến nguồn và đích của thông tin đó Ở đây ta lưu ý rằng thông tin chỉ được bảo vệ trên đường truyền, tức là ở mỗi nút đều có quá trình giải mã sau đó
mã hoá để truyền đi tiếp, do đó các nút cần phải được bảo vệ tốt
Ngược lại theo cách thứ hai thông tin trên mạng được bảo vệ trên toàn đường truyền từ nguồn đến đích Thông tin sẽ được mã hoá ngay sau khi mới tạo ra và chỉ được giải mã khi về đến đích Cách này mắc phải nhược điểm là chỉ có dữ liệu của người dùng thì mới có thể mã hóa được còn dữ liệu điều khiển thì giữ nguyên để có thể
xử lý tại các nút
1.1.5 Vai trò của hệ mật mã
Các hệ mật mã phải thực hiện được các vai trò sau:
- Hệ mật mã phải che dấu được nội dung của văn bản rõ (PlainText) để đảm bảo sao cho chỉ người chủ hợp pháp của thông tin mới có quyền truy cập thông tin (Secrety), hay nói cách khác là chống truy nhập không đúng quyền hạn
- Tạo các yếu tố xác thực thông tin, đảm bảo thông tin lưu hành trong hệ thống đến người nhận hợp pháp là xác thực (Authenticity)
- Tổ chức các sơ đồ chữ ký điện tử, đảm bảo không có hiện tượng giả mạo, mạo danh để gửi thông tin trên mạng
Ưu điểm lớn nhất của bất kỳ hệ mật mã nào đó là có thể đánh giá được độ phức tạp tính toán mà “kẻ địch” phải giải quyết bài toán để có thể lấy được thông tin của dữ liệu đã được mã hoá Tuy nhiên mỗi hệ mật mã có một số ưu và nhược điểm khác nhau, nhưng nhờ đánh giá được độ phức tạp tính toán mà ta có thể áp dụng các thuật toán mã hoá khác nhau cho từng ứng dụng cụ thể tuỳ theo độ yêu cầu về độ an toàn
1.1.6 Các thành phần của một hệ mật mã
Định nghĩa :
Một hệ mật mã là một bộ 5 (P,C,K,E,D) thoả mãn các điều kiện sau:
Trang 18- P: Là một tập hợp hữu hạn các bản rõ, nó được gọi là không gian bản rõ
- C: Là tập hữu hạn các bản mã, nó được gọi là không gian bản mã Mỗi phần tử của C có thể nhận được bằng cách áp dụng phép mã hoá Ek lên một phần tử của P, với
k K
- K: Là tập hữu hạn các khóa hay còn gọi là không gian khóa Đối với mỗi phần tử
k của K được gọi là một khóa Số lượng của không gian khóa phải đủ lớn để “kẻ địch” không có đủ thời gian để thử mọi khóa có thể (phương pháp vét cạn) Đối với mỗi k
K có một quy tắc mã ek: PC và một quy tắc giải mã tương ứng dk D Mỗi ek: P C
và dk: CP là những hàm mà: Dk(ek(x))=x với mọi bản rõ x P
Hình 1.1 Mã hoá với khóa mã và khóa giải giống nhau
1.1.7 Tiêu chuẩn đánh giá hệ mật mã
Để đánh giá một hệ mật mã người ta thường đánh giá thông qua các tiêu chí sau:
* Độ an toàn: Một hệ mật được đưa vào sử dụng điều đầu tiên phải có độ an
toàn cao Ưu điểm của mật mã là có thể đánh giá được độ an toàn thông qua độ an toàn tính toán mà không cần phải cài đặt Một hệ mật được coi là an toàn nếu để phá hệ mật
mã này phải dùng n phép toán Mà để giải quyết n phép toán cần thời gian vô cùng lớn,
không thể chấp nhận được
Một hệ mật mã được gọi là tốt thì nó cần phải đảm bảo các tiêu chuẩn sau:
Trang 19- Chúng phải có phương pháp bảo vệ mà chỉ dựa trên sự bí mật của các khóa, công khai thuật toán
- Khi cho khóa công khai ek và bản rõ P thì chúng ta dễ dàng tính được
ek(P)=C Ngược lại khi cho dk và bản mã C thì dễ dàng tính được dk(M)=P Khi không biết dk thì không có khả năng để tìm được M từ C, nghĩa là khi cho hàm f: X Y thì việc tính y=f(x) với mọi x thuộc X là dễ còn việc tìm x khi biết y lại là vấn đề khó và
nó được gọi là hàm một chiều
- Bản mã C không được có các đặc điểm gây chú ý, nghi ngờ
* Tốc độ mã và giải mã: Khi đánh giá hệ mật mã chúng ta phải chú ý đến tốc độ
mã và giải mã Hệ mật tốt thì thời gian mã và giải mã nhanh
* Phân phối khóa: Một hệ mật mã phụ thuộc vào khóa, khóa này được truyền
công khai hay truyền khóa bí mật Phân phối khóa bí mật thì chi phí sẽ cao hơn so với các hệ mật có khóa công khai Vì vậy đây cũng là một tiêu chí khi lựa chọn hệ mật mã
Trong mật mã học nói chung thì toán học là công cụ không thể thiếu Các thuật toán mã hóa đều dùng công thức toán học làm nền cơ bản Vì vậy phần tiếp theo sẽ trình bày ngắn gọn về số học và hình học đại số có ứng dụng trực tiếp trong mã hóa thông tin, đặc biệt là trong thuật toán mã hóa RSA
1.2 CƠ SỞ TOÁN HỌC
1.2.1 Cơ sở toán học
Mục này được trình bày trong [2]
Số học là một nhánh của toán học, nhưng nó lại trở thành một trong những công
cụ hữu hiệu nhất trong an ninh máy tính Số học giúp người dùng mua sắm trực tuyến bằng cách bảo vệ số thẻ tín dụng Đó là một trong những thành tựu đáng ghi nhận từ năm 1970 đến nay và đã được áp dụng rộng rãi trên thế giới Những giao thức mã hóa đặc biệt là chữ ký số điện tử đều dựa trên kiến thức số học để tạo khóa, mã hóa và giải
mã An toàn của những giao thức này đều liên quan đến vấn đề trong số học: Số nguyên tố và phân tích thành thừa số
Trang 201.2.2 Số nguyên tố và phân tích thành thừa số
1.2.2.1 Phát sinh số nguyên tố
Hai số nguyên tố p và q nên có chiều dài bằng nhau, điều này sẽ làm cho mođun
n khó phân tích hơn là có một trong hai số nguyên tố rất nhỏ Vì vậy, nếu ta chọn dùng module n 512 bít thì mỗi số nguyên tố nên có chiều dài xấp xỉ 256 bít
Trong hầu hết tất cả hệ khóa công khai, kích thước của khóa phù hợp với kích thước những đầu vào cho hàm một chiều, kích thước càng lớn thì sự khác biệt trong việc tính toán hàm theo hướng thuận và hướng nghịch càng lớn
Những hệ mật mã khóa công khai trong thực tế dựa trên những hàm được xem
là một chiều nhưng chúng không được chứng minh có nghĩa là về mặt lý thuyết, một giải thuật sẽ có thể được phục hồi để có thể tính hàm nghịch một cách dễ dàng
Thủ tục kiểm tra số nguyên tố:
int BN_is_prime(const BIGNUM *a, int checks, void (^callback) (int, int, void
*), BN_CTX *ctx_passed, void *cb_arg)
{
return BN_is_prime_fasttest(a, checks, callback, ctx_passed, cb_arg, 0); }
Hàm phát sinh số nguyên tố:
BIGNUM *BN_generatase_prime(BIGNUM *ret, intbits, int safe,
const BIGNUM *add, const BIGNUM *rem, void (*callback)(int, int, void
{if (!probable_prime_dh_safe(md, bits, add, rem, ctx)) goto err;}
else {if (!probable_prime_dh(rnd, bits, add, rem, ctx)) goto err;}
}
Trang 21Phân tích thừa số nguyên tố là vấn đề khó khăn trong nhiều hệ mã khóa công khai, kể cả RSA Nếu việc phân tích thành thừa số nguyên tố thành công sẽ cho phép tìm ra khóa riêng tức là hệ mật mã bị bẻ khóa Vì vậy bất cứ ai có thể phân tích thành thừa số một muđun đều có thể mã hoá thông điệp và giả mạo chữ ký Nhưng đây là một việc hết sức khó khăn
Phân tích thành thừa số những số nguyên lớn mất nhiều thời gian hơn so với những số nguyên nhỏ Điều này lý giải tại sao kích thước muđun RSA xác định tính bảo mật như thế nào; module càng lớn, việc phân tích thành thừa số nguyên tố càng khó
+ Vấn đề của phân tích thừa số:
Việc phân tích thành thừa số trở nên dễ dàng hơn cách đây 15 năm bởi phần
cứng máy tính ngày càng mạnh hơn và những giải thuật phân tích thừa số nguyên tố
ngày càng phát triển
Sự phát triển về phần cứng làm cho RSA càng bảo mật hơn bởi vì nó làm cho người phá khóa phải phân tích thành thừa số những số lớn hơn trong cùng một thời gian so với trước kia và cho phép người sử dụng dùng một khóa có nhiều số có độ dài lớn hơn Quy luật chung này có thể thất bại trong trường hợp dùng những máy có tốc
độ cao của tương lai để tấn công vào những khóa đời cũ nhờ vào sự tiến bộ của phần cứng
Những giải thuật phân tích thành thừa số tốt hơn sẽ giúp cho vấn đề phá khóa tốt hơn so với việc phát triển phần cứng Để giải quyết những khó khăn trong việc phân
Trang 22tích thừa số, nhiều nhà nghiên cứu đã tìm ra những phương pháp phân tích thừa số mới Điều này làm cho việc phân tích thừa số dễ dàng hơn đối với những số có kích thước bất kỳ và không quan tâm đến sự phát triển về phần cứng Tuy nhiên, vấn đề này vẫn còn nhiều khó khăn Khi phần cứng ngày càng phát triển mà độ phức tạp của thuật toán không tăng thì việc bảo mật của RSA càng cao vì khóa có kích thước càng lớn
1.2.2.3 Kiểm tra ước số chung lớn nhất
Hàm kiểm tra số nguyên tố nhanh nhất:
int BN_is_prime_fasttest(const BIGNUM *a, int checks, void (*callback)(int, int, void *), BN_CTX *ctx_passed, void *cb_arg, int do_trial_division)
Trang 231.2.3 Phép mũ hóa và khai căn modul
Như ở trên ta đã khai báo n là kết quả của phép nhân hai số nguyên tố lớn được sinh ngẫu nhiên Cho m và c là những số nguyên nằm trong khoảng (0,n-1) và e là một
số nguyên lẻ trong khoảng (3,n-1) và nguyên tố cùng nhau với p-1 và q-1
Thao tác mã hóa và giải mã trong hệ mã hóa khóa công khai RSA được thực hiện dựa trên 2 hệ quả và 1 ước lượng sau:
Hệ quả 1: Cho n, m và e Việc tính c = m e mod n là dễ dàng Giá trị m e mod n chính thức là kết quả của nâng lũy thừa e của m, chia cho n và lấy phần dư
Điều này có thể là một phép tính toán phức tạp liên quan tới việc nhân (e-1) số
m và kết quả trả về là một số nguyên lớn, trước khi việc thực hiện phép chia cho n Tuy nhiên hai cách tối ưu hóa sau làm cho việc tính toán trở nên dễ dàng:
- Nhân với một trình tự thích hợp của các giá trị trung gian trước đó, thay vì hơn chỉ bằng m, có thể giảm số lượng các phép nhân để không quá hai lần kích thước của e trong hệ nhị phân
- Chia và lấy phần dư sau khi mỗi phép nhân giữ kết quả trung gian có cùng kích thước như n
Hệ quả 2: Cho n, e, c và những thừa số nguyên tố p, q; việc khôi phục lại giá trị
m sao cho c = m e mod n là dễ dàng
Giá trị m có thể khôi phục từ c bởi thao tác mũ hóa modul với một số nguyên lẻ
d nằm trong khoảng (3,n-1) Đặc biệt, với số d này, biểu thức sau thể hiện cho tất cả m:
m = (me)d mod n
Số nguyên d này thì dễ dàng tính với e, p, q cho trước
Hệ quả 3: Cho n, e và c nhưng không biết những thừa số nguyên tố, việc khôi phục lại m là khó khăn
Phương pháp nhanh nhất thì có sẵn trong việc tính toán khai căn modul dưới điều kiện dựa là n và e là phân tích thừa số n và áp dụng hệ quả 5 để quyết định d Thực sự, bất kỳ phương thức nào quyết định d đều bị chuyển về một cách khác của
Trang 24việc phân tích thừa số n Đúng là có thể khi mà tồn tại một phương pháp mà tính toán khai căn modul mà không cần phân tích n hoặc quyết định d Nhưng cho đến nay chưa phương pháp nào có thể làm như vậy nhanh hơn việc phân tích thừa số n
Hinh 1.2 Quy trình mã hóa dữ liệu
- Mã hóa: Quá trình chuyển đổi dữ liệu gốc thành dữ liệu được mã hóa sao cho người khác không thể đọc hiểu được
- Giải mã: Là 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
- Bản mã: Tệp dữ liệu đã được mã hóa
Một hệ thống mã hóa bao gồm các thành phần sau:
PlainText: Bản tin sẽ được mã hóa hay bản tin gốc
CipherText: Bản tin đã được mã hóa hay bản tin mã
Thuật toán mã hóa và giải mã:
Trang 25Encryption: Quá trình chuyển bản tin gốc sang dạng mật mã
Decryption: Quá trình giải bản tin dạng mật mã trở về bản tin gốc
Cách chọn khóa: Giá trị toán học dùng để thực hiện mã hóa
Nhiều phương pháp mã hóa đã được đưa ra dựa trên những giải thuật toán phức tạp, để tạo khó khăn cho những ai đó muốn phá mật mã mà không cần được ai trao chìa khóa Nói tạo khó khăn là vì trên lý thuyết ta không thể nói việc tìm chìa khóa là vô phương Nhưng nếu trở ngại đủ lớn để làm nản lòng kẻ gian thì đã là một mức độ an toàn tốt
Quá trình mã hóa và giải mã có thể được minh họa theo sơ đồ sau:
Bản tin gốc
Bản tin gốc Bản tin mã
Mã hóa cũng là nền tảng của kỹ thuật chữ ký điện tử
1.3.3 Phân loại mã hóa
Có nhiều cách để phân loại hệ mật mã Dựa vào cách truyền khóa có thể phân các hệ mật mã thành hai loại:
Trang 26- Hệ mật đối xứng (hay còn gọi là mật mã khóa bí mật): là những hệ mật dùng chung một khóa cả trong quá trình mã hoá dữ liệu và giải mã dữ liệu Do đó khóa phải được giữ bí mật tuyệt đối
- Hệ mật mã bất đối xứng (hay còn gọi là mật mã khóa công khai): Hay còn gọi
là hệ mật mã công khai, các hệ mật này dùng một khóa để mã hoá sau đó dùng một khóa khác để giải mã, nghĩa là khóa để mã hoá và giải mã là khác nhau Các khóa này tạo nên từng cặp chuyển đổi ngược nhau và không có khóa nào có thể suy được từ khóa kia Khóa dùng để mã hoá có thể công khai nhưng khóa dùng để giải mã phải giữ
bí mật
Ngoài ra nếu dựa vào thời gian đưa ra hệ mật mã ta còn có thể phân làm hai loại: Mật mã cổ điển (là hệ mật mã ra đời trước năm 1970) và mật mã hiện đại (ra đời sau năm 1970) Còn nếu dựa vào cách thức tiến hành mã thì hệ mật mã còn được chia làm hai loại là mã dòng (tiến hành mã từng khối dữ liệu, mỗi khối lại dựa vào các khóa khác nhau, các khóa này được sinh ra từ hàm sinh khóa, được gọi là dòng khóa) và mã khối (tiến hành mã từng khối dữ liệu với khóa như nhau)
1.3.3.1 Mã hóa bằng khóa bí mật
Các hệ thống mã hóa với khóa bí mật còn được gọi là mã hóa bằng khóa riêng,
mã hóa đối xứng sử dụng duy nhất một khóa cho cả quá trình mã hóa lẫn quá trình giải
mã
Có hai loại thuật toán mã hóa bí mật:
- Stream Algorithms/Stream Ciphers: các thuật toán hoạt động trên văn bản bình
thường theo từng bit một
- Block Algorithms/Block Ciphers: các thuật toán hoạt động trên văn bản theo
các khối (32 bit, 64 bit, 128 bit, )
- Một số thuật toán đang được sử dụng rộng rãi hiện nay : DES, Triple-DES, RC5, RC6, Rijndael
Trang 27- Quá trình mã hóa và giải mã bằng cách sử dụng khóa bí mật được minh họa như hình sau:
- - -
- - -
-Quá trình truyền
dữ liệu
Khóa bí mật(chỉ
Có người mã hóa và người giải mã biết)
Quá trình
mã hóa
Quá trình giải mã
Bản tin gốc
Bản tin gốc Bản tin mã
Hình 1.4 Sơ đồ mã hóa và giải mã bằng khóa riêng
1.3.3.2 Mã hóa bằng khóa công khai
Mã hóa bằng khóa công khai còn gọi là mã hóa bất đối xứng hay mã hóa bằng khóa chung Sự khác biệt cơ bản giữa một hệ thống mã hóa bằng khóa bí mật với hệ thống mã hóa bằng khóa công khai là hệ thống mã hóa khóa công khai dùng hai khóa khác nhau để mã hóa và giải mã Do đó, một bộ mã công khai sẽ bao gồm hai khóa: một khóa dành cho người mã hóa thường được công khai, và khóa còn lại dùng cho người giải mã thường được giữ bí mật Như vậy, hệ thống mã hóa với khóa công khai cần có một quá trình sinh ra hai khóa để mã hóa và giải mã thông điệp Các khóa này được xem như là một đôi
Public-key (khóa công khai): được phép công khai mà không phải chịu rủi ro về an toàn Khóa này được dùng để mã hóa thông điệp
Private-key (khóa bí mật): không được để lộ Mỗi thông điệp được mã hóa bằng public-key chỉ có thể giải mã bằng một khóa mật thích hợp
Một số thuật toán mã hóa công khai phổ biến: RSA, Diffie-Hellman Key-Exchange Algorithm (dùng cho việc phân phối và trao đổi khóa)
Trang 28Quá trình mã hóa và giải mã bằng cách sử dụng khóa công khai được minh họa như hình sau:
- - -
- - -
-Quá trình truyền
dữ liệu
Khóa công khai, chỉ dùng để mã hóa (có thể cho mọi người biết) Khóa mật, chỉ dùng để giải mã (cần
được giữ bí mật)
Quá trình
mã hóa
Quá trình giải mã
Bản tin gốc
Bản tin gốc Bản tin mã
Hình 1.5 Sơ đồ mã hóa và giải mã bằng khóa công khai
1.3.4 Ưu khuyết điểm của hai phương pháp
1.3.4.1 Phương pháp mã hóa khóa bí mật
Các ưu khuyết điểm của hệ thống khóa bí mật (khóa đối xứng):
megabytes mỗi giây
+ Khóa dùng cho mã hóa khóa đối
xứng tương đối ngắn
+ Được xem như thành phần cơ bản có
thể triển khai để xây dựng các kỹ thuật
mã hóa khác bao gồm khởi tạo các số
+ Trong quá trình truyền thông giữa hai người, khóa phải được giữ bí mật cho
cả hai phía
+ Trong một hệ thống mạng lớn, số lượng khóa cần được quản lý rất nhiều
Do vậy việc quản lý khóa một cách hiệu quả đòi hỏi sử dụng một bộ phận tin cậy thứ ba (TTP: Trusted Third Party)
+ Khóa bí mật cần được thay đổi thường xuyên
Trang 29ngẫu nhiên, các hàm băm, các kỹ thuật
1.3.4.2 Phương pháp mã hóa khóa công khai
Các ưu khuyết điểm của hệ thống mã hóa khóa công khai:
+ Chỉ có khóa riêng thì cần được giữ bí
mật (tuy nhiên việc xác nhận của các
khóa công khai cần được đảm bảo)
+ Việc quản trị các khóa trên mạng đòi
hỏi sự tồn tại duy nhất một thành phần
tin cậy TTP
+ Cặp khóa riêng và công khai có thể
được sử dụng trong thời gian dài
+ Nhiều mô hình khóa công cộng được
phát triển hình thành nên các kỹ thuật
chữ ký số hiệu quả Khóa được sử dụng
cho hàm kiểu công khai thì nhỏ hơn rất
nhiều so với dùng khóa đối xứng
+ Trong một mạng lớn, số lượng các
khóa cần thiết được quan tâm ít hơn so
với việc dùng khóa đối xứng
+ Tốc độ cho các phương thức mã hóa công khai thì chậm hơn rất nhiều so với các mô hình khóa đối xứng
+ Kích thước khóa lớn hơn rất nhiều so với cơ chế mã hóa khóa đối xứng
+ Không có mô hình khóa công khai nào được chứng minh là an toàn Phần lớn các mô hình mã hóa hiệu quả ngày nay có sự an toàn dựa trên các giả thuyết của một tập nhỏ của các vấn đề
lý thuyết số học
+ Hệ thống mã hóa công khai không có
bề dày lâu đời như hệ thống mã hóa khóa đối xứng, nó chỉ được tìm ra vào giữa khoảng những năm 1970
Trang 301.3.5 Hệ mã RSA (R.Rivest, A.Shamir, L.Adleman)
Trong các hệ mật mã công khai thì hệ RSA là hệ có một ứng dụng cực kỳ quan trọng, trong phần này luận văn sẽ trình bày chi tiết về hệ mật RSA
1.3.5.1 Cơ sở lý thuyết
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ố nguyên tố
Sơ đồ mã hoá RSA là sơ đồ mã hoá khối, đoạn tin được mã hoá từng khối với mỗi khối có giá trị < n với n là số nguyên đủ lớn
Hệ mã RSA là hệ mã dựa vào bài toán logarithm rời rạc và bài toán phân tích một
số nguyên thành tích các thừa số nguyên tố, là hệ mã được sử dụng rộng rãi nhất Nó cung cấp cả sự bí mật và chữ ký điện tử, và tính bảo mật của nó là cơ sở cho độ khó trong vấn đề tìm thừa số nguyên tố Hệ mã dựa trên thuật toán như sau:
Thuật toán
Bước 1: Tạo khóa
Mỗi thực thể tạo một khóa công khai và một khóa riêng tương ứng
Thực thể A cần làm công việc sau:
1 Tạo 2 số nguyên tố lớn p và q bất kỳ có cỡ xấp xỉ nhau
2 Tính n = p×q và ( n )= (p-1)(q-1)
3 Chọn 1 số nguyên e, 1<e< ( n ) sao cho UCLN(e, ( n )) = 1
4 Sử dụng thuật toán Euclid mở rộng để tính d, 1<d< ( n ) sao cho: e×d 1 (mod ( n ))
5 Khóa công khai của A là (n,e), khóa riêng của A là d
Bước 2: Mã hoá (B mã hoá một văn bản gửi cho A)
Trang 311 Nhận đƣợc khóa xác thực công khai của A là (n,e)
2 Trình bày văn bản nhƣ một số nguyên m thuộc [0, n-1]
3 Tính c = me mod n
4 Gửi bản mã c cho A
Bước 3: Giải mã (khôi phục bản rõ m từ bản mã c)
A phải thực hiện công việc sau: Sử dụng khóa riêng d để tính m = cd mod n
Chú ý: Số =BCNN(p-1, q-1) còn đƣợc gọi là số mũ tự nhiên của n có thể đƣợc sử dụng để thay cho ( n )= (p-1)(q-1) trong việc tạo khóa RSA Để ý rằng là một ƣớc số đúng của ( n ) Sử dụng có thể tính toán với giải mã số mũ nhỏ hơn và
kết quả là việc giải mã sẽ nhanh hơn
Trang 32Chú ý: Có nhiều cách để tăng tốc độ mã hoá và giải mã RSA nhưng với một số
cải tiến thì tốc độ mã hoá/giải mã RSA về căn bản vẫn chậm hơn so với các thuật toán
mã hoá đối xứng Trong thực tế, hệ mã RSA được sử dụng phổ biến để truyền khóa đã
được tạo bằng thuật toán đối xứng và mã hoá những mục dữ liệu nhỏ
Cần chú ý rằng số nguyên tố p và q nên được chọn sao cho việc phân tích n = p×q
là không thể tính toán được, p và q nên có cùng cỡ và phải đủ lớn Một chú ý khác là với số nguyên tố p và q thì hiệu p-q không nên quá nhỏ vì nếu p-q nhỏ thì p q và do vậy p n Khi đó có thể dễ dàng phân tích n thành thừa số bằng cách chia thử cho tất
cả các số nguyên lẻ cho tới n
1.3.5.2 Một số tính chất của hệ RSA
[7] Trong các hệ mật mã RSA, một bản tin có thể được mã hoá trong thời gian tuyến tính Đối với các bản tin dài, độ dài của các số được dùng cho các khóa có thể được coi như là hằng Tương tự như vậy, nâng một số lên luỹ thừa được thực hiện trong thời gian hằng, các số không được phép dài hơn một độ dài hằng Thực ra tham
số này che dấu nhiều chi tiết cài đặt có liên quan đến việc tính toán với các con số dài, chi phí của các phép toán thực sự là một yếu tố ngăn cản sự phổ biến ứng dụng của phương pháp này Phần quan trọng nhất của việc tính toán có liên quan đến việc mã hoá bản tin Nhưng chắc chắn là sẽ không có hệ mã hoá nào hết nếu không tính ra được các khóa của chúng là các số lớn Các khóa cho hệ mã hoá RSA có thể được tạo ra mà không phải tính toán quá nhiều
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ố Các bước tính p dựa vào thuật toán Euclid
Như phần trên đã trình bày trong hệ mã hoá công khai thì khóa 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à tuỳ
Trang 33thuộ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 vì cần phải xác định được 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
+ Tính đúng đắn của RSA
Ta có các công thức:
P(M) =Me (mod n)
Và S(C) =Cd (mod n) Định nghĩa các phép biến đổi nghịch đảo Zn thoả các điều kiện trên
M = SA(PA(M)) M=PA(SA(M))
Từ các phương trình:
P(M) =Me (mod n) S(C) = Cd (mod n)
Ngoài ra, Med = M (mod p) nếu M = 0 (mod p)
=> Med = M (mod p) với mọi M
Trang 34Tương tự, ta có: Med = M (mod q) với mọi M
Theo định lý phần dư Trung Quốc, ta có: Med = M (mod n) với mọi M
+ Tính bảo mật
Tính bảo mật của hệ mã hóa mật mã công khai RSA phần lớn dựa vào việc lấy thừa số các số nguyên lớn Kẻ xâm nhập có thể lấy thừa số môdun n trong một khóa công khai thì kẻ xâm nhập đó có thể suy ra khóa bí mật từ khóa công khai này rồi lấy thừa số các số nguyên lớn dễ dàng thì việc bẻ khóa hệ mật mã công khai RSA cũng dễ dàng nhưng nếu lấy thừa số các số nguyên lớn khó khăn thì việc bẻ khóa cũng gặp rất nhiều khó khăn
Cho đến nay, người ta vẫn chưa tìm ra phương pháp nào dễ dàng hơn trong việc
bẻ mật mã khóa công khai RSA hơn là lấy thừa số môdun n Với một số nguyên n, ta muốn lấy thừa số, có nghĩa là phân tích thành một tích các số nguyên tố và với phép thử tính nguyên sẽ cho ta biết n là hợp số nhưng thông thường không cho ta biết các thừa số nguyên tố của n Đối với việc lấy thừa số nguyên tố khó hơn rất nhiều lần so với việc đơn giản xác định n là số nguyên tố hay hợp số Bằng cách chọn ngẫu nhiên và nhân hai số nguyên tố 100 chữ số với nhau ta có thể tạo ra một khóa công khai không thể nào phá được trong một thời gian khả thi với những công nghệ hiện hành
Nhưng để có thế có được tính bảo mật cao bằng hệ mã hoá mật mã công khai RSA ta cần làm việc với các số nguyên tố có chiều dài 100-200 chữ số, vì việc lấy thừa
số các số nguyên nhỏ hơn là không thực tế Do đó ta có thể tìm ra các số nguyên tố lớn một cách hiệu quả để tạo ra khóa có chiều dài cần thiết
1.3.6 Một số vấn đề về khóa của RSA
1.3.6.1 Chiều dài khóa công khai (khóa không đối xứng)
Những giải thuật mã hoá khóa công khai dựa vào việc phân tích thành thừa số những số nguyên rất lớn, kết quả của việc nhân hai số nguyên tố lớn Những giải thuật này không cố gắng thử từng khóa có khả năng mà cố gắng tìm thừa số của một số
Trang 35nguyên lớn, nếu tìm được số nguyên có độ lớn thích hợp thì tính bảo mật càng cao Tùy thuộc thời gian bảo mật hữu hiệu cho khóa mà ta có 3 loại chiều dài khóa cho mỗi năm: một cho cá nhân, một cho công ty kinh doanh và một giành cho chính quyền
Khai báo cấu trúc khóa công khai:
typedef struct public_key {
unsigned short modulus_length;
BIGNUM *e;
BIGNUM *n;
} pub_key;
1.3.6.2 Chiều dài khóa riêng
Những giải thuật mã hoá khóa riêng sử dụng một khóa riêng để mã hoá và giải
mã dữ liệu Bạn phải bảo mật khóa, tránh sự truy cập của người khác bởi vì bất kỳ một người nào khác nếu có khóa này sẽ dùng khóa này để giải mã được dữ liệu của bạn Trong mã hoá đối xứng, khóa riêng cũng là khóa chung bởi vì nó mã hoá và giải mã
Trang 36chỉ cùng một khóa Giải thuật này rất nhanh so với những giải thuật khóa công khai và tiện cho việc đổi mật mã những dòng dữ liệu lớn
Nhìn chung những giải thuật khóa riêng được sử dụng để để mã hoá một khối
dữ liệu tại một thời điểm Những mã khối như DES chẳng hạn, đổi sang mã một khối n
byte đầu vào sang một khối byte mã hoá đầu ra Nếu muốn mã hoá một chuỗi byte, bạn phải thực hiện theo từng khối một Kích thước của khối nhỏ (thường bằng 8, 16, 24), nhưng đối với những giá trị lớn hơn phải được mã hoá mỗi khối một ít
Sự hạn chế của mã hoá khóa riêng là giữa hai người quan hệ phải có sự nhất trí theo một khóa và khóa cũng phải được giữ bí mật với người khác Chính vì vậy mã hoá khóa riêng thường kết hợp với mã hoá khóa chung để truyền thông riêng những giá trị khóa và khóa khởi tạo
Khai báo cấu trúc của khóa bí mật:
typedef struct private_key {
unsigned short modulus_length;
độ quản lý khóa hơn là tấn công vào giải thuật mã hóa của chính chương trình mã hóa
Những ai muốn ký vào một thông điệp hay để nhận một thông điệp được mã hóa phải có một cặp khóa Người ta có thể có nhiều khóa Chẳng hạn, một người có một khóa liên kết với nơi làm việc của người đó và một khóa bí mật cho mục đích sử dụng cá nhân
Trang 37Mỗi người sử dụng nên phát sinh ra một cặp khóa bí mật của riêng mình Nhưng đây là một bảo mật đầy rủi ro vì nó có dính dáng đến việc truyền khóa bí mật trên mạng cũng như sẽ có kết cục không hay nếu như một kẻ tấn công xâm nhập vào vị trí phát sinh khóa Với mỗi điểm trên mạng có khả năng phát sinh khóa cục bộ, vì vậy khóa bí mật không bao giờ được truyền đi và không mở rộng khóa nguồn để đảm bảo tin cậy trung thực Tất nhiên phần mềm phát sinh khóa cục bộ phải đáng tin cậy Những hệ thống nhận diện khóa bảo mật chẳng hạn như Kerberos thường không cho phép phát sinh bộ nhưng thay vào đó sử dụng một máy chủ trung tâm để phát sinh khóa
Một khi phát sinh khóa, người sử dụng phải đăng ký khóa chung của người đó
cho một số nhà quản trị trung tâm, được gọi là tổ chức cung cấp chứng nhận Tại đây,
họ trả về cho người sử dụng một chứng nhận chứng thực khóa chung của người sử dụng Hầu hết những người sử dụng không thu được một chứng nhận cho cùng một khóa tương tự
1.3.6.4 Cách tìm khóa ngẫu nhiên
Bạn cần những số ngẫu nhiên để tìm hai số nguyên tố ngẫu nhiên cho module n Nếu bạn dùng phương pháp dự đoán để phát sinh số nguyên tố, kẻ xâm nhập có thể tấn công bằng cách cố gắng tái tạo lại quá trình phát sinh khóa
Những số ngẫu nhiên thu được từ một tiến trình vật lý nói chung là tốt nhất Người ta có thể dùng một thiết bị phần cứng (điôt, …) được gắn thêm vào mạch của máy tính cho mục đích này Một phương án khác là sử dụng những môi trường vật lý của người sử dụng máy tính (định giờ phím nhấn được đo bằng micrô giây, …) Nhưng bằng bất kỳ phương pháp nào thì những số ngẫu nhiên được phát sinh vẫn chứa những
sự tương quan thống kê
Chú ý: Người ta không cần những số ngẫu nhiên để xác định những khóa chung
và khóa riêng sau khi chọn module n Họ có thể chọn một giá trị tuỳ ý cho khóa công khai
Trang 38Phát sinh khóa ngẫu nhiên:
int RSA_generấte_keys(char *privatekey, char *publiccertificate, int
*privatekey_length, int *publiccertificate_length, int primeBitSize)
Hình 1.6 Kiểm tra khóa
Sơ đồ bảo vệ khóa thông qua hệ thống bảo mật:
Trang 39Hình 1.7 Hình thức kiểm tra khóa bảo mật
1.3.6.5 Phân bố khóa bảo mật
Việc tiến hành bảo vệ thông tin truyền trên mạng đƣợc tổ chức nhiều lần trên nhiều mức khác nhau:
Giữa thiết bị đầu với thiết bị đầu (end - to - end encryption)
Giữa thiết bị đầu với máy chủ (terminal - to - host encryption)
Giữa các máy chủ với nhau (host - to - host encryption)
Hình 1.8 Bảo mật tại nơi ra và nơi nhận vào của hai người sử dụng
End – to – end encryption
Terminal – to – host encryption
Trang 40Hình 1.9 Bảo mật tại nơi ra của người gửi và tại nơi nhận trước khi vào hệ thống của người nhận
Hình 1.10 Kết hợp bảo mật tại các máy chủ
1.3.7 Module trong hệ thống RSA
1.3.7.1 Kích thước của module
Kích thước tốt nhất của một module RSA là dựa trên nhu cầu bảo mật của người
đó Module càng lớn thì tính bảo mật càng cao Trước hết, người ta nên chọn chiều dài một module trong khoảng xem xét của nhu cầu cần bảo mật của người đó, chẳng hạn như giá trị của dữ liệu được bảo vệ và chiều dài cần thiết phải bảo vệ
Một kết quả của phép nghiên cứu tính bảo mật đã thu được bằng việc lấy chiều dài module được đưa ra bởi Rivest, trong phạm vi của module lôgarit riêng biệt của một số nguyên tố được áp dụng rất tốt trong RSA Theo đánh giá của Rivest, một
Khóa được chia sẻ bởi một
terminal và host i
Computer network
E/D
KH
Ks E/D
Khóa được chia sẻ bởi một host i và host j