Năm 1976, hai tác giả Diffie và Hellman đưa ra khái niệm về mã hóa sử dụng khóa công khai và một phương pháp trao đổi công khai để tạo ra một khóa bí mật chung mà tính an toàn được đảm b
Trang 1LỜI CẢM ƠN
Em xin chân thành cảm ơn thầy giáo Th S Trần Hồng Anh – Trung tâm học liệu
_ Đại học Thái Nguyên đã giúp đỡ em hoàn thành bài báo cáo “Xây dựng chương trình ứng dụng chữ ký điện tử ký lên văn bản” này
Là một sinh viên chuyên ngành mạng, em đã nhận được nhiều sự giúp đỡ từ phía các thầy cô trong bộ môn từ việc chọn đề tài cho đến hoàn chỉnh bài báo cáo Em cũng nhận thấy được sự tâm huyết và nhiệt tình của các thầy cô và đặc biệt là của thầy Trần Hồng Anh–giáo viên hướng dẫn của em, giúp em biết được rằng mình cần phải cố gắng nhiều hơn nữa trong học tập và nghiên cứu
Dưới đây là bài báo cáo của em, tuy em đã cố gắng song không thể tránh khỏi những sai sót Vì vậy em rất mong nhận được sự đóng góp của thầy cô và bạn bè cho
đề tài của em hoàn thiện hơn
Em xin trân trọng cảm ơn!
Nguyễn Trọng Khiêm
Trang 2LỜI CAM ĐOAN
Em xin cam đoan:
Những nội dung trong đồ án này là do bản thân em thực hiện dưới sự hướng dẫn trực tiếp của thầy giáo hướng dẫn: ThS Trần Hồng Anh
Mọi tham khảo dùng trong đồ án đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố
Mọi sao chép không hợp lệ hoặc có bất kì thông tin sai lệch nào, em xin chịu hoàn toàn trách nhiệm trước Hội Đồng
Trang 3MỤC LỤC
LỜI CẢM ƠN 1
LỜI CAM ĐOAN 2
MỤC LỤC 3
DANH MỤC HÌNH ẢNH 5
DANH MỤC BẢNG 6
LỜI MỞ ĐẦU 7
CHƯƠNG 1: TỔNG QUAN VỀ MÃ HÓA VÀ BẢO MẬT THÔNG TIN 8
1 Sơ lược về lịch sử mật mã 8
2 Một số vấn đề an toàn và bảo mật thông tin 10
2.1 Tại sao phải an toàn và bảo mật thông tin 10
2.2 Các kĩ thuật được sử dụng 11
2.3 Các phương pháp được sử dụng 11
3 Các bài toán về an toàn và bảo mật thông tin 12
4 Thám mã và tính an toàn của các hệ mã 13
4.1 Vấn đề thám mã 13
4.2 Tính an toàn của một hệ mật mã 13
5 Vấn đề mã hóa dữ liệu 14
5.1 Định nghĩa hệ mã hóa 14
5.2 Hệ mã hoá đối xứng 15
5.3 Hệ mã hoá hoá khoá công khai 19
6 Thuật toán mã hóa khóa công khai RSA 21
6.1Mô tả sơ luợc thuật toán mã hóa RSA: 21
6.2 Lịch sử cuộc cách mạng toán học mã RSA 22
Trang 46.3 RSA, cuộc cách mạng của các nhà toán học 23
6.4 RSA và chính phủ điện tử 24
6.5 Quy trình tạo khóa , mã hóa và giải mã RSA 24
6.7 Một số phương pháp tấn công mã hóa RSA 29
6.8 Các vấn đề đặt ra trong thực tế 29
CHƯƠNG 2: KHÁI NIỆM, SƠ ĐỒ VÀ XÁC THỰC CHỮ KÝ ĐIỆN TỬ SỬ DỤNG THUẬT TOÁN MÃ HÓA RSA 34
1 Khái niệm chữ ký điện tử 34
2 Hàm băm và chữ ký: 35
2.1 Hàm Băm 35
2.2 MD5 38
2 Sơ đồ chữ ký điện tử RSA và xác thực điện tử: 47
2.2 Mô hình chữ ký điện tử sử dụng khóa công khai 49
2.3 Cách thức hoạt động của chữ ký điện tử và chứng chỉ điện tử 49
2.4 Kiểm tra xác nhận trên tài liệu đã ký 51
2.5 Cách làm việc của chữ ký điện tử 51
CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG 57
1 Yêu cầu: 57
2 Phân tích thiết kế hệ thống: 57
2.1 Mô hình USE – CASE: 57
2.2 Biểu đồ trình tự 60
3 Một số hình minh họa chương trình: 67
KẾT LUẬN 75
TÀI LIỆU THAM KHẢO 76
Trang 5DANH MỤC HÌNH ẢNH
Hình 1.1: Gậy mật mã 8
Hình 1.2: Sơ đồ mã hóa 15
Hình 1.3: Mô tả thuật toán mã hóa khóa đối xứng 16
Hình 1.1: Mô tả thuật toán mã hóa và giải mã theo khối 17
Hình 1.2: Mô tả thuật toán mã hóa dòng 18
Hình 1.3: Giải pháp mật mã đối xứng hay sử dụng nhất 18
Hình 1.4: Mô tả thuật toán mã hóa khóa công khai 20
Hình 1.5: Ba nhà khoa học Shamir, Rivest và Adleman 22
Hình 2.1: Thể hiện cơ bản về hàm băm hay thông số MAC 36
Hình 2.2: Tạo bản thông điệp tóm lược sử dụng MD5 39
Hình 2.3: Xử lý MD5 của khối đơn 512 bít (HDMD5) 40
Hình 2.4: Tác vụ của MD5: [abcd k s i] 42
Hình 2.5: Mô hình chữ ký điện tử 49
Hình 2.6: Mô hình tạo chữ ký vào văn bản giữa hai bên gửi nhận 50
Hình 2.7: Quá trình ký trong thông điệp 54
Hình 2.8: Quá trình kiểm tra xác nhận chữ ký trên tài liệu 55
Hình 2.9: Quá trình làm việc của một Chữ ký điện tử 56
Hình 3.1: Mô hình Use_case 57
Hình 3.2: Tiến trình sinh khóa 60
Hình 3.3: Tiến trình tạo chữ ký điện tử 61
Hình 3.4: Tiến trình kiểm tra chữ ký 61
Hình 3.5: Tiến trình mã hóa 62
Hình 3.6: Tiến trình giải mã 63
Trang 6Hình 3.7: Biểu đồ cộng tác tiến trình sinh khóa 63
Hình 3.8: Biểu đồ cộng tác tạo chữ ký điện tử 64
Hình 3.9: Biểu đồ cộng tác kiểm tra chữ ký điện tử 64
Hình 3.10: Biểu đồ cộng tác tiến trình mã hóa 65
Hình 3.11: Biểu đồ cộng tác tiến trình giải mã 66
Hình 3.12: Giao diện chính chương trình 67
Hình 3.13: Form giao diện chương trình ký nhận và xác thực chữ ký điện tử 68
Hình 3.14: Quá trình ký nhận trên văn bản 69
Hình 3.15: Xác nhận lưu tệp tin sau khi ký nhận 70
Hình 3.16: Quá trình xác thực nội dung văn bản 71
Hình 3.17: Hiển thị chữ ký của văn bản 72
Hình 3.18: Hiển thị thông báo sau khi xác thực 73
Hinh 3.19: Mô phỏng thuật toán RSA 74
Hình 3.20: Ví dụ quá trình mã hóa giải mã sử dụng thuật toán RSA 74
DANH MỤC BẢNG Bảng 1: Mô tả độ phức tạp của giải thuật RSA 26
Bảng 2: Mã hóa và giải mã trong RSA 27
Bảng 3: Ví dụ cụ thể RSA 28
Trang 7LỜI MỞ ĐẦU
Trong những năm qua ngành Công nghệ thông tin của Việt Nam có tốc độ phát triển tương đối cao (dự kiến đến giai đoạn 2011-2015 tốc độ phát triển của ngành công nghệ thông tin đạt 12%, doanh thu lên tới 3, 3 tỷ USD vào năm 2015) mang đến nhiều tiện ích cho cá nhân, tổ chức cũng như toàn xã hội Ứng dụng của các sản phẩm từ ngành Công nghệ thông tin hết sức đa dạng: hệ thống các phần mềm hỗ trợ quản lý, công nghệ số, công nghệ 3G, 4G, chữ kí số… Công nghệ thông tin đã góp phần nâng cao chất lượng, hiệu quả, tiết kiệm thời gian, tài chính trong nhiều lĩnh vực như tài chính-ngân hàng, viễn thông, giáo dục, quản lí hành chính nhà nước Với tốc độ phát triển nhanh chóng của ngành Công nghệ thông tin đã tạo ra môi trường mạng ổn định, thuận tiện tuy nhiên tính bảo mật chưa thực sự cao
Đứng trước thực trạng đó con người cần một ứng dụng mới đáp được nhu cầu của con người về tính bảo mật, nâng cao độ tin cậy của dữ liệu Chữ kí điện tử và chữ kí số
ra đời đáp ứng thực trạng trên
Trong báo cáo em xin trình bày một số hiểu biết của bản thân về chữ kí số và chữ
kí điện tử và các ứng dụng của nó trong thực tế
Qua đó, chúng em xin được gửi lời cảm ơn đến thầy Th S Trần Hồng Anh đã tận tình hướng dẫn em thực hiện báo cáo này
Bài báo cáo của em thực hiện dưới góc độ của sinh viên nên còn nhiều hạn chế và thiếu sót Vì vậy, rất mong nhận được sự góp của thầy và các bạn để có thể hoàn thiện bài một cách tốt hơn!
Em xin chân thành cảm ơn!
Sinh viên thực hiện: Nguyễn Trọng Khiêm
Trang 8CHƯƠNG 1: TỔNG QUAN VỀ MÃ HÓA VÀ BẢO MẬT
THÔNG TIN
1 Sơ lược về lịch sử mật mã
Nhu cầu sử dụng mật mã xuất hiện rất sớm, từ khi con người biết trao đổi và truyền đưa thông tin cho nhau, đặc biệt khi các thông tin đó được thể hiện dưới hình thức ngôn ngữ, thư từ Theo như nghiên cứu, các hình thức mật mã sơ khai đã được tìm thấy từ khoảng bốn nghìn năm trước trong nền văn minh Ai Cập cổ đại Trải qua hàng nghìn năm lịch sử, mật mã đã được sử dụng rộng rãi trên khắp thế giới từ Đông sang Tây nhằm đảm bảo an toàn, bí mật cho việc trao đổi và truyền thông tin giữa con người
và giữa các quốc gia, đặc biệt trong các lĩnh vực quân sự, chính trị, ngoại giao
Có rất nhiều dụng cụ (thiết bị) và các kĩ thuật khác nhau đã được sử dụng để mã hóa Một trong những dụng cụ (thiết bị) đã được sử dụng sớm nhất có lẽ là gậy mật mã
“scytale” (tiếng Hy Lạp là: σκυτάλη), dùng để liên lạc thông tin mật giữa những người chỉ huy quân đội
Hình 1.1: Gậy mật mã
“Scytale” gồm một gậy được vót nhọn ở đầu, xung quanh được quấn bởi một mảnh giấy da được ghi thông điệp cần chuyển Khi mở giấy da ra ta thấy những kí tự khó hiểu, tuy nhiên khi ta quấn quanh một gậy mật mã khác theo đúng kích thước thì
ta nhận được bản thông điệp ban đầu
Tiến thêm một bước nữa, họ đã sáng tạo ra mã hóa hoán vị và mã hóa thay thế nguyên thủy bằng cách sử dụng bảng ô vuông dạng bàn cờ (Polybius checkerboard)
Trang 9Bảng này có 5 dòng và 5 cột chứa tất cả chữ cái trong đó Sau đó, mỗi chữ cái biến đổi thành 2 số, số thứ nhất là số hàng mà chữ cái ở hàng đó, và số thứ 2 là cột chứa chữ cái
đó Vì thế, chữ cái A biến thành số 11, tương tự vậy, chữ cái B biến thành số 12, v v…Suốt mấy nghìn năm lịch sử, các thông điệp được truyền đưa và trao đổi với nhau thường là các văn bản, tức là có dạng các kí tự trong một ngôn ngữ nào đó Vì vậy, các thuật toán lập mã thường cũng đơn giản chỉ là các thuật toán xáo trộn, thay đổi các kí
tự được xác định bởi các phép chuyển dịch, thay thế hay hoán vị các kí tự trong bảng kí
tự của ngôn ngữ tương ứng Hoạt động ngược lại của việc bảo mật thông tin là khám phá bí mật từ các bản mã mật “lấy trộm” được, thường gọi hoạt động này là thám mã Thám mã thường tập trung vào việc tìm khóa mật mã nhằm giải mã bản mã mật “lấy trộm” được, do đó còn gọi công việc đó là phá khóa
Trong thế kỉ 20, với những tiến bộ vượt bậc của kĩ thuật tính toán và truyền thông, ngành mật mã đã có những tiến bộ to lớn Vào những thập niên đầu của thế kỉ,
sự phát triển của các kĩ thuật biểu diễn, truyền và xử lý tín hiệu đã có tác động giúp cho các hoạt động lập và giải mã từ thủ công chuyển sang cơ giới hóa rồi điện tử hóa Các văn bản, các bản mật mã trước đây được viết bằng ngôn ngữ thông thường nay được chuyển bằng kĩ thuật số thành các dãy tín hiệu nhị phân, hay các dãy số, việc thực hiện các phép lập mã, giải mã trở thành việc thực hiện các hàm số học Toán học và kĩ thuật tính toán bắt đầu trở thành công cụ cho việc phát triển khoa học về mật mã
Năm 1976, hai tác giả Diffie và Hellman đưa ra khái niệm về mã hóa sử dụng khóa công khai và một phương pháp trao đổi công khai để tạo ra một khóa bí mật chung mà tính an toàn được đảm bởi độ khó của bài toán tính “lôgarit rời rạc”
Năm 1978, Rivest, Shamir và Adleman tìm ra một hệ mật mã khóa công khai (hệ RSA) và một sơ đồ chữ kí điện tử hoàn toàn có thể ứng dụng trong thực tiễn, tính bảo mật và an toàn của chúng được bảo đảm bằng độ phức tạp của bài toán số học nổi tiếng
là bài toán phân tích số nguyên thành các thừa số nguyên tố
Sau phát minh ra hệ mật mã RSA, việc nghiên cứu để phát minh ra các hệ mã hóa khóa công khai khác, và ứng dụng các hệ mật mã khóa công khai vào các bài toán khác
Trang 10nhau của an toàn thông tin đã được tiến hành rộng rãi, lý thuyết mật mã và an toàn thông tin trở thành một lĩnh vực khoa học được phát triển nhanh trong vài ba thập niên cuối của thế kỉ 20 cho tới ngày nay
2 Một số vấn đề an toàn và bảo mật thông tin
2.1 Tại sao phải an toàn và bảo mật thông tin
Ngay từ thời xưa khi muốn giữ bí mật một thông tin nào đó hay một thông báo gửi đi ta đã thấy con người đã dùng nhiều cách khác nhau từ các công cụ thô sơ (gậy mật mã, v v ) đến các thiết bị máy móc phức tạp để bảo đảm thông tin khi trao đổi được an toàn và bí mật, và chỉ có những người có quyền mới có thể biết được nội dung của thông tin đó Như vậy, an toàn thông tin là cách thức thực hiện nhằm ngăn cản những người không có thẩm quyền có thể xem, sửa đổi một thông tin hay một thông báo nào đó
Ngày nay, với sự bùng nổ công nghệ thông tin đặc biệt là sự xuất hiện của mạng Internet và các mạng cục bộ giúp cho việc trao đổi thông tin: thư điện tử, giao dịch trên mạng, v v…trở nên nhanh chóng và dễ dàng Tuy nhiên, nhiều vấn đề mới nảy sinh như: tin tức trên đường truyền (hoặc trong kho dữ liệu) có thể bị đánh cắp, có thể bị sửa đổi sai lệch, và cũng có thể bị giả mạo Do đó, một số thông tin mật như: bí mật kinh doanh, tài chính, ngân hàng, các thông tin về an ninh của quốc gia, v v… có thể
bị lộ hoặc bị giả mạo Điều đó dẫn đến, những thiệt hại về tài chính, chính trị, an ninh,
… làm ảnh hưởng rất lớn đến lợi ích, tình hình của các công ty, các tổ chức hay cả các quốc gia trên thế giới
Đứng trước vấn đề đó, an toàn thông tin đã được đặt ra cấp thiết nhằm cung cấp các thông tin, các phương pháp kĩ thuật, các chiến lược, các công cụ, v v , nhằm bảo
vệ thông tin được an toàn Đồng thời, sáng chế ra các ứng dụng có ý nghĩa trong thực tiễn nhằm phục vụ cho các tổ chức, các công ty, các quốc gia, và hơn hết là phục vụ cho cuộc sống của mỗi con người trong toàn xã hội
Trang 112.2 Các kĩ thuật được sử dụng
Có hai kĩ thuật chính được sử dụng là: an toàn truyền thông và an toàn máy tính:
- An toàn máy tính: Là sự bảo vệ các thông tin bên trong một hệ thống máy
tính
- An toàn truyền thông: Là sự bảo vệ thông tin trong khi thông tin đang được
truyền từ hệ thống này sang hệ thống khác
Có hai phương pháp chính được sử dụng là:
- Tường lửa: là hệ thống phần cứng, phần mềm hay hỗn hợp phần cứng – phần
mềm có tác dụng như một tấm ngăn cách giữa các tài nguyên thông tin của mạng nội
bộ và thế giới bên ngoài Nó có nhiệm vụ là quyết định người nào, dịch vụ nào được truy cập từ bên ngoài vào (hoặc từ bên trong ra bên ngoài) và mọi thông tin trao đổi đều phải thực hiện thông qua nó Tuy nhiên, nó cũng có một số giới hạn như: không thể ngăn chặn thông tin bất hợp pháp không đi qua nó, chỉ có thể ngăn chặn thông tin bất hợp pháp khi biết rõ các thông số địa chỉ, v v…
- Mã hóa: là phương pháp che dấu thông tin dưới dạng đã mã hóa nhằm ngăn
chặn những người không có thẩm quyền sử dụng thông tin một cách bất hợp pháp
2.3 Các phương pháp được sử dụng
Các chiến lược được sử dụng gồm:
- Quyền hạn tối thiểu: Nguyên tắc cơ bản trong an toàn thông tin nói chung là hạn
chế sự ưu tiên Mỗi đối tượng trong hệ thống chỉ được cấp phát một số quyền hạn nhất định đủ dùng cho công việc của mình
- Phòng thủ theo chiều sâu: tức là tạo lập nhiều lớp bảo vệ khác nhau cho hệ
thống
Trang 123 Các bài toán về an toàn và bảo mật thông tin
Có rất nhiều bài toán khác nhau về yêu cầu an toàn thông tin tùy theo tình huống khác nhau, nhưng nhìn chung có một số bài toán mà ta thường gặp trong thực tiễn là những bài toán sau đây:
- Bảo mật: Giữ thông tin được bí mật đối với tất cả mọi người, trừ những người
có quyền được đọc, được biết thông tin đó
- Toàn vẹn thông tin: Đảm bảo thông tin không bị thay đổi hay xuyên tạc bởi
những người không được quyền hoặc bằng phương tiện không được phép
- Xác thực một thực thể: Xác nhận danh tính của một thực thể, chẳng hạn một
người, một máy tính cuối trong mạng, một thẻ tín dụng…
- Xác thực một thông báo: Xác nhận nguồn gốc của một thông báo được gửi đến
- Chữ kí: Một cách để gắn kết một thông tin với một thực thể, thường dùng trong
bài toán nhận xác thực một thông báo cũng như nhiều bài toán xác thực khác
- Ủy quyền: Chuyển cho một thực thể khác quyền được đại diện hoặc được làm
một việc gì đó
- Cấp chứng chỉ: Cấp một sự xác nhận thông tin bởi một thực thể tín nhiệm
- Báo nhận: Xác nhận một thông báo đã được nhận hay một dịch vụ đã được thực
hiện
- Làm chứng: Kiểm thử việc tồn tại một thông tin ở một thực thể khác với người
chủ sở hữu thông tin đó
- Chống chối bỏ: Ngăn ngừa việc chối bỏ trách nhiệm đối với một cam kết đã có
(thí dụ, đã kí vào một văn bản)
- Ẩn danh: Che dấu danh tính của một thực thể tham gia trong một tiến trình nào
đó (thường dùng trong giao dịch tiền điện tử)
- Thu hồi: Rút lại một giấy chứng chỉ hay ủy quyền đã cấp
Trang 134 Thám mã và tính an toàn của các hệ mã
4.1 Vấn đề thám mã
Mật mã được sử dụng trước hết là để đảm bảo tính bí mật cho các thông tin được trao đổi, và do đó bài toán quan trọng nhất của thám mã cũng là bài toán phá bỏ tính bí mật đó, tức là từ bản mật mã thì người thám mã có thể biết được nội dung bị che giấu trong bản mật mã đó, tốt nhất là tìm ra bản rõ gốc của bản mật mã đó Bài toán thường gặp là bản thân sơ đồ hệ thống mật mã, kể cả các phép lập mã và giải mã không nhất thiết bí mật, mà bí mật nằm trong chìa khóa mật mã K, nếu hệ mật mã là phi đối xứng Như vậy, ta có thể xem bài toán thám mã cơ bản là bài toán tìm khóa mật mã K Do đó,
ta có thể phân loại bài toán thám mã thành các bài toán cụ thể như sau:
- Bài toán thám mã chỉ biết bản mã: Đây là bài toán phổ biến nhất, khi người thám mã chỉ biết một bản mật mã Y
- Bài toán thám mã khi biết cả bản rõ: Người thám mã biết một bản mật mã Y cùng với bản rõ tương ứng X
- Bài toán thám mã khi có bản rõ được chọn: Người thám mã có thể chọn một bản
rõ X, và biết bản mật mã tương ứng Y Điều này có thể xảy ra khi người thám mã chiếm được máy lập mã
- Bài toán thám mã khi có bản mã được chọn: Người thám mã có thể chọn một bản mật mã Y, và biết bản rõ tương ứng X Điều này có thể xảy ra khi người thám mã chiếm được máy giải mã
4.2 Tính an toàn của một hệ mật mã
Tính an toàn của một hệ thống mật mã phụ thuộc vào độ khó khăn của bài toán thám mã khi sử dụng hệ mật mã đó Người ta đã đề xuất một số cách hiểu cho khái niệm an toàn của hệ thống mật mã, sau đây ta giới thiệu vài cách hiểu thông dụng nhất:
Trang 14An toàn vô điều kiện: Một hệ mật được gọi là an toàn không điều kiện nếu nó
không thể bị phá, thậm chí với khả năng tính toán không hạn chế, theo C Shannon, hệ
là bí mật hoàn toàn
An toàn được chứng minh: Một hệ thống mật mã được xem là có độ an toàn được
chứng minh nếu ta có thể chứng minh được là bài toán thám mã đối với hệ thống đó là khó tương đương với một bài toán khó đã biết, thí dụ: 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ố, hay bài toán tìm lôgarit rời rạc theo một module nguyên tố, vv…
An toàn tính toán: Một hệ mật là an toàn về mặt tính toán nếu có một thuật toán
tốt nhất để phá nó cần ít nhất N phép toán, với N là số rất lớn Thực tế, không có một
hệ mật mã nào có thể chứng tỏ là an toàn theo nghĩa trên Do đó, người ta gọi một hệ mật là “an toàn tính toán” nếu có một phương pháp tốt nhất phá hệ này nhưng với yêu cầu thời gian lớn đến mức không chấp nhận được
5 Vấn đề mã hóa dữ liệu
Khái niệm mã hóa
Mã hoá là kỹ thuật đã được sử dụng lâu đời để đảm bảo an toàn thông tin Hiện nay có nhiều phương pháp mã hóa khác nhau, mỗi phương pháp có những ưu điểm và nhựơc điểm riêng Tùy theo yêu cầu cụ thể để lựa chọn phương pháp mã hóa
Trang 15Với mỗi: k ( kl, kg) thuộc K (mỗi khóa k bao gồm khóa khóa lập mã và khóa giải mã), có một hàm lập mã e thuộc E và một hàm giải mã d thuộc D sao cho:
Lập mã:
Mỗi x ∈ P -> y = dkl(x) ∈ C ;Giải mã :
Mỗi y ∈ C -> x = dkg(y) ∈ P ;
Hình 1.2: Sơ đồ mã hóa
Hiện nay các hệ mã hoá được phân thành hai loại chính:
- Hệ mã hóa đối xứng (hệ mã hóa cổ điển)
- Hệ mã hóa phi đối xứng (hệ mã hóa công khai)
5.2 Hệ mã hoá đối xứng
Hệ mã hóa đối xứng là hệ mã hóa mà từ khóa giải mã có thể tính được hóa mã hóa và ngược lại Trong một số trường hợp khóa mã hóa và giải mã có thể giống nhau
Hệ mã hóa đối xứng yêu cầu người gửi và người nhận phải thỏa thuận khóa lập
mã, khóa giải mã, và tên của hệ mã hóa trước khi dữ liệu được gửi, khóa được thỏa thuận này phải được giữ bí mật từ cả hai phía Độ an toàn của hệ mã hóa này phụ thuộc
độ an toàn của khóa
Trang 16Hình 1.3: Mô tả thuật toán mã hóa khóa đối xứng
Ưu điểm: tốc độ mã hoá nhanh, đơn giản, dễ dùng
Nhược điểm: độ an toàn thấp cụ thể như trong mã hoá dịch chuyển sử dụng bộ
chữ cái tiếng anh 26 chữ cái thì các giá trị có thể của khoá chỉ là 26, như vậy một người chỉ cần thử với 26 khoá là có thể tìm được bản rõ, điều này là dễ dàng
Ứng dụng: thường được dử dụng trong môi trường mà khoá có thể dễ dàng trao
đổi như trong cùng một văn phòng Mã hoá cổ điển được dùng trong việc mã hoá thông tin khi lưu trữ
Mật mã đối xứng được chia làm hai dạng:
a Mã hóa khối
Mã hóa khối là một giải pháp hoạt dộng chống lại sự hạn chế của dữ liệu tĩnh Dữ liệu được chia ra thành các khối với độ dài cụ thể và mỗi khối được mã hoá một cách khác nhau
Một thuật toán mã hóa khối là một hàm sắp xếp n – bit của khối bản rõ thành bit của khối bản mã, trong đó n gọi là độ dài khối Nó có thể được xem như là một hệ
n-mã hóa thay thế với kích thước kí tự được thay thế là lớn
Trang 17Hình 1.1: Mô tả thuật toán mã hóa và giải mã theo khối
b Mã hóa dòng
Mã hóa là giải pháp hoạt động chống lại dữ liệu luôn luôn sử dụng một phương thức để truyền Sử dụng một vùng đệm, ít nhất bằng một khối, đợi cho toàn bộ thông tin của khối đó được chứa trong vùng đệm sau đó khối đó sẽ được mã hoá rồi truyền cho người nhận Một sự khác nhau cơ bản giữa dữ liệu được truyền và dữ liệu nguyên bản Không như giải pháp sử dụng mật mã đối xứng là mỗi khối được sử dụng một khóa khác nhau trong quá trình truyền thông tin
Thuật toán mã hóa dòng là thuật toán mã hóa từng kí tự một của bản rõ, nó sử dụng phép biến đổi quá trình lập mã biến thiên theo thời gian Ngược lại thì mã hóa khối hướng tới việc thực hiện đồng thời mã hóa một nhóm kí tự của bản rõ, nó sử dụng một phép biến đổi quá trình lập mã đã được xác định trước
Mô tả đơn giản của mã dòng được thể hiện dưới đây:
Trang 18Hình 1.2: Mô tả thuật toán mã hóa dòng
Dưới đây là các giải pháp mật mã đối xứng hay sử dụng nhất:
Tên các thuật toán mã hóa Kích thước
khối mã hóa
Kích thước khóa
International Data Encryption Algorithim
Hình 1.3: Giải pháp mật mã đối xứng hay sử dụng nhất
Những hệ mã hoá đối xứng tiêu biểu: hệ mã hoá dịch chuyển, hệ mã hoá hoán vị toàn cục, hoán vị cục bộ, mã hoá affine… Sau đây là ví dụ về hệ mã hoá dịch chuyển
Ví dụ về hệ mã hoá dịch chuyển:
Có thể nói đây là hệ mã hoá đơn giản nhất dùng các phép toán số học modulo 26 bản mã và bản rõ là tập các ký tự tiếng anh 26 chữ cái Các chữ cái A → Z tương đương với các số thừ 0 → 25
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Trang 19Trong hệ mã hoá dịch chuyển ta có: P = C = K = Z26
Với k ∈ K ta định nghĩa cho x, y ∈ Z26 x là thông tin cần mã hoá, y là bản mã quá trình mã hoá và giải mã như sau:
Mã hoá: y = ek(x) = (x + k) mod 26;
Giải mã: x = dk(y) = (y - k) mod 26;
Với đầu vào:
Quá trình giả mã tiến hành ngượclại x = (y – k )mod 26
Như ta thấy, khoá k chỉ có 26 giá trị nên việc thám mã có thể thực hiện được bằng cách duyệt lần lượt các giá trị của k từ 1 → 26 Mã hoá dịch chuyển có độ an toàn rất thấp
5.3 Hệ mã hoá hoá khoá công khai
Hệ mã hoá phi đối xứng là hệ mã hoá mà: khoá lập mã khác khoá giải mã Từ khoá này “khó” tính được khoá kia trong thời gian chấp nhận được
Hệ mã hoá phi đối xứng còn được gọi là hệ mã hoá khoá công khai vì khoá để mã hoá có thể công khai cho mọi người biết Sử dụng khoá công khai để mã hoá tin tức nhưng chỉ có duy nhất người có khoá bí mật mới giải mã được thông tin Khi thông tin
đã bị mã hoá thì thậm chí cả người mã hoá thông tin đó cũng không thể giải mã lại thông tin Đây chính là tính bất đối xứng của hệ mã hoá khoá công khai
Trang 20Trong hai khoá: khóa lập mã được gọi là khoá công khai (public key), khoá giả
mã được gọi là khoá bí mật (khoá riêng: private key)
Hình 1.4: Mô tả thuật toán mã hóa khóa công khai
Phương thức mật mã bất đối xứng sử dụng: Rivest Shamir Adleman (RSA), Diffie-Hellman-Error-Correcting-Code-(ECC)- El Gamal
Đặc điểm của hệ mã hoá khoá công khai:
Khi biết các điều kiện ban đầu, việc xác định cặp khoá công khai và khoá bí mật phải được thực hiện dễ dàng tức là trong thời gian đa thức
Trong thời gian đa thức, người gửi có thể mã hoá thông tin P bằng khoá công khai và thu được bản mã C
Người nhận cũng phải dễ dàng giải mã được bản mã C để thu được thông tin P Khi biết được khoá công khai, khó có thể tính được khoá bí mật, khó ở đây không phải là không thể tính được mà là bài toán tính khoá bí mật từ khoá công khai là bài toán có độ phức tạp lớn, không khả thi về mặt thời gian
Ưu điểm: Chỉ cần bí mật khoá riêng Thuật toán được viết cho nhiều người sử
dụng, độ an toàn cao hơn mã hoá khoá khoá bí mật
Trang 21Nhược điểm: Sử dụng phức tạp hơn hệ mã hoá cổ điển, tốc độ mã hoá chậm ( tốc
độ mã hoá phụ thuộc vào độ phức tạp của thuật toán mã hoá và giả mã), thuật toán mã hoá có độ phức tạp càng cao, tức là càng an toàn thì tốc độ mã hoá và giải mã nó càng chậm
Ứng dụng: Hệ mã hoá khoá công khai được sử dụng chủ yếu trên các mạng công
khai như internet Đối với hệ mã hoá khoá công khai thì có thể gửi cả khoá công khai
và bản mã trên một đường truyền thông tin không an toàn Một ứng dụng quan trọng khác của hệ mã hoá khoá công khai là sử dụng cặp khoá của hệ mã hoá để tạo chữ ký điện tử, dùng khoá riêng để tạo chữ ký và dùng khoá công khai để kiểm tra chữ ký
6 Thuật toán mã hóa khóa công khai RSA
Trong mật mã học, RSA là một thuật toán mã hóa khóa công khai Đây là thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mã hóa RSA đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã học trong việc sử dụng khóa công cộng RSA đang được sử dụng phổ biến trong thương mại điện tử và được cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn
6.1Mô tả sơ luợc thuật toán mã hóa RSA:
Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) và khóa bí
mật (hay khóa cá nhân) Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa
và giải mã Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân mới có thể giải mã được
Một ví dụ trực quan: Bob muốn gửi cho Alice một thông tin mật mà Bob muốn duy nhất Alice có thể đọc được Để làm được điều này, Alice gửi cho Bob một chiếc hộp có khóa đã mở và giữ lại chìa khóa Bob nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình thường và khóa lại (lúc này ngay cả Bob cũng không thể đọc lại hay sửa thông tin trong thư được nữa) Sau đó Bob gửi chiếc hộp lại cho Alice Alice mở hộp
Trang 22với chìa khóa của mình và đọc thông tin trong thư Trong ví dụ này, chiếc hộp với khóa
mở đóng vai trò khóa công khai, chiếc chìa khóa chính là khóa bí mật
6.2 Lịch sử cuộc cách mạng toán học mã RSA
Khi phương pháp mã khóa công khai chưa ra đời, người ta sử dụng hầu như cùng một “khóa” để mã hóa cũng như giải mã chung cho cả người gửi và người nhận thông tin (hệ mã đối xứng) Với hệ mã này, một trong những khó khăn lớn của ngành an ninh
và mã hóa lúc đó là làm sao gửi an toàn chìa khóa bí mật trên các kênh truyền tin công khai có nhiều người tham gia
Hình 1.5: Ba nhà khoa học Shamir, Rivest và Adleman
Đầu năm 1969, James Ellis, một chuyên gia thám mã lỗi lạc của Cơ Quan Truyền Thông Chính Phủ Anh Quốc (GCHQ) đã nảy ra ý tưởng rằng: Nếu người nhận tin đưa một nhiễu nào đó lên đường truyền công khai mà chỉ riêng anh ta biết cách khử nhiễu, thì mọi thông tin mật gửi đến cho anh ta đều có thể đưa lên kênh truyền tin công khai đó Những người khác, dù bắt được tín hiệu cũng không thể nào giải mã được tin mật
Cuối năm 1969, James Ellis nhận ra ý tưởng trên có thể đạt được bằng 'hàm một chiều' Theo đó, chỉ có thể tìm hàm ngược nếu biết thông tin nào đó, giống như khôi
Trang 23phục tín hiệu khi biết cái nhiễu do mình tạo ra Nhưng ông không thực hiện được điều này, do không biết liệu hàm một chiều có tồn tại hay không
Bốn năm sau Clifford Cocks- một nhân viên mới của GCHQ- được Patterson kể cho nghe ý tưởng của James Ellis và ông đã tìm ra hàm một chiều cần thiết chỉ trong vòng nửa giờ: đó chính là phép nhân! Nhân hai số nguyên tố lớn bao nhiêu cũng được
là điều hết sức dễ dàng, nhưng khi biết tích của chúng, để tìm lại các thừa số thì ta cần phân tích số đã cho ra thừa số nguyên tố Điều này hầu như không thể làm được với các số đủ lớn Thật vậy, để phân tích (n =p*q) ra thừa số nguyên tố, cần chia lần lượt n cho các số nguyên tố nhỏ hơn Theo một định lý nổi tiếng trong số học, có khoảng (n/log n) số nguyên tố bé hơn n Nếu n có khoảng 300 chữ số thì sẽ phải làm khoảng 10150/300 phép chia (Nếu dùng máy tính tốc độ 1 tỷ phép tính/giây, ta sẽ mất chừng
tỷ tỷ tỷ năm để phân tích số n!) Như vậy, hàm số thiết lập sự tương ứng giữa hai số p,
q với tích n=p*q chính là hàm một chiều Giải pháp thật đơn giản và Cocks cũng không
tự cảm nhận được đầy đủ ý nghĩa của kết quả đạt được Kết quả của Cocks được giữ tuyệt mật Nó có sức thuyết phục lớn trong nội bộ GCHQ Nhưng phương tiện tính toán thời đó không cho phép triển khai thuật toán Năm 1978, kết quả của Cocks được Rivest, Shamir và Adleman phát triển tạo nên cuộc cách mạng trong lĩnh vực mật mã, cuộc cách mạng RSA
6.3 RSA, cuộc cách mạng của các nhà toán học
Hệ mã RSA đã đưa đến một cuộc cách mạng thực sự Giờ đây, với hệ mã RSA, không cần phải gửi chìa khóa giải mã cho người nhận thông tin nữa Hệ mã RSA sử dụng 2 khóa Khóa lập mã của tôi được công khai với người ta (để người ta có thể gửi thông tin mã hóa cho tôi), còn khóa giải mã của tôi là khóa riêng tôi giữ, do đó chỉ tôi mới có thể đọc được thông tin mã hóa người đó gửi, còn người khác không thể tìm ra khoá giải mã trong một thời gian chấp nhận được
Từ khi RSA ra đời đến nay, có nhiều hệ mã với các hàm một chiều khác nhau được đưa ra Tuy nhiên, chỉ có RSA và hệ mã gần với nó, là được sử dụng rộng rãi, vì người ta có thể tin hàm được dùng đúng là hàm một chiều
Trang 246.4 RSA và chính phủ điện tử
Trong chính phủ điện tử, có hai điều quan trọng Một là, làm thế nào để bảo đảm các văn bản trao đổi qua mạng không bị thay đổi nội dung (đảm bảo tính toàn vẹn của văn bản) Hai là, làm thế nào để xác minh người gửi văn bản đó (xác nhận chủ thể) RSA cũng như các hệ mã khóa công khai khác đã giải quyết trọn vẹn 2 vấn đề đặt ra Tuy nhiên, tốc độ mã hóa của RSA rất chậm (gấp chừng 1000 lần so với các hệ mã đối xứng), nên với các văn bản lớn, việc mã hoá bằng RSA là không khả thi Do vậy, RSA được ứng dụng để giải quyết các vấn đề trên theo một số phương thức riêng
Thí dụ: xác nhận “giá trị băm” thay vì xác nhận văn bản, dùng kết hợp mã đối xứng, như DES, IDEA ( để mã hoá văn bản) và RSA (để mã hóa chìa khóa )
Ngày nay, các hệ mã khóa công khai và các tiện ích đi kèm đã được thương mại hóa Bạn có thể mua trên thị trường hoặc tải từ Internet về để dùng Tuy nhiên, độ an toàn của các sản phẩm như vậy không cao Như đã phân tích trên đây, vấn đề là phải có những số nguyên tố lớn để lập khóa Không ai cho ta biết rằng, trong hệ mã mà ta mua
về, các số nguyên tố được dùng đã sinh ra như thế nào Chúng ngẫu nhiên đến mức nào, hay là đã có sẵn trong một kho của người làm khóa Và nếu cần, người bán cho ta
có thể tìm ra khóa giải mã của bằng cách duyệt toàn bộ cái kho mà anh ta đã biết rõ Cho đến nay, người ta vẫn tin rằng RSA là không thể phá được Điều này không còn chính xác nữa, vì đã có một số phương pháp tấn công RSA đã được công bố mặc
dù vẫn chưa đưa ra chương trình hoàn chỉnh
6.5 Quy trình tạo khóa , mã hóa và giải mã RSA
Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênh không an toàn (ví dụ như Internet) Với thuật toán RSA, Alice đầu tiên cần tạo ra cho mình cặp khóa gồm khóa công khai và khóa bí mật theo các bước sau:
- Chọn 2 số nguyên tố lớn p và q với p≠q, lựa chọn ngẫu nhiên và độc lập
- Tính: N=p*q
Trang 25Alice gửi khóa công khai cho Bob, và giữ bí mật khóa cá nhân của mình Ở đây, p
và q giữ vai trò rất quan trọng Chúng là các phân tố của n và cho phép tính d khi biết
e Nếu không sử dụng dạng sau của khóa bí mật thì p và q sẽ được xóa ngay sau khi thực hiện xong quá trình tạo khóa
a, Mã hóa:
Giả sử Bob muốn gửi đoạn thông tin M cho Alice Đầu tiên Bob chuyển M thành một số m < n theo một hàm có thể đảo ngược (từ m có thể xác định lại M) được thỏa thuận trước
M mLúc này Bob có m và biết n cũng như e do Alice gửi Bob sẽ tính c là bản mã hóa của m theo công thức:
C=m*e mod NHàm trên có thể tính dễ dàng sử dụng phương pháp tính hàm mũ bằng phương pháp bình phương Cuối cùng Bob gửi C cho Alice
b, Giải mã:
Alice nhận c từ Bob và biết khóa bí mật d Alice có thể tìm được m từ c theo công thức sau:
m = c*d mod N
Trang 26Biết m, Alice tìm lại M theo phương pháp đã thỏa thuận trước Quá trình giải mã hoạt động vì ta có
c*d ≡ (me)d ≡ med (mod N)
Do ed ≡ 1 (mod p-1) và ed ≡ 1 (mod q-1), (theo Định lý Fermat nhỏ) nên:
med ≡ m (mod p) và med ≡ m (mod q)
Do p và q là hai số nguyên tố cùng nhau, áp dụng định lý số dư Trung quốc, ta có:(med ≡ m (mod p*q)
Chọn 1 số ngẫu nhiên 1<e<0(n): gcd(0(n), e) = 1
Tính d: d = e-1 mod 0(n) (giải thuật Extended Euclidean)
Khóa công khai KU = [e, n]
Khóa bí mật KR = [d, n]
0((logn)2)0((log(0(n))2)0((logn)3)
Bảng 1: Mô tả độ phức tạp của giải thuật RSA
Trang 27Mã hóa Đoạn tin : M < n
Mã hóa : C = Me mod n
Giải mã
Đoạn tin mã: C Giải mã : M = Cd mod n
Bảng 2: Mã hóa và giải mã trong RSA
Trang 28q = 53 — Số nguyên tố thứ hai (giữ bí mật hoặc hủy sau khi tạo khóa)
Bảng 3: Ví dụ cụ thể RSA
Khóa công khai là cặp (e, N) Khóa bí mật là d Hàm mã hóa là:
encrypt(m) = m*e mod N = m17 mod 3233 với m là văn bản rõ
Hàm giải mã là:
decrypt(c) = c*d mod N = c2753 mod 3233 với c là văn bản mã
Để mã hóa văn bản có giá trị 123, ta thực hiện phép tính:
6.6 Tính bảo mật của giải thuật RSA
Vì khóa là công khai, nên người giải mã thường dựa vào cặp khóa này để tìm cặp khóa bí mật Điều quan trọng là dựa vào n để tính hai thừa số p, q của n từ đó tính được
d Có nhiều giải thuật như thế, đầu tiên ta xét trường hợp đơn giản nhất là người giải
mã biết được Φ(n) Khi đó tính p, q đưa về việc giải hai phương trình sau:
n = p q
Φ(n) = (p-1)(q-1)
Trang 29Thay q=n/p ta được phương trình bậc hai:
p2 – (n - Φ(n) + 1)p + n = 0 Hai nghiệm của phương trình bậc hai này sẽ là p, q Tuy nhiên vấn đề có được
Φ(n) còn khó hơn tính hai thừa số của n nhiều
6.7 Một số phương pháp tấn công mã hóa RSA
Phương pháp p-1:
- Bẻ khóa khi biết được số mũ d của hàm giải mã
- Bẻ khóa dựa trên các cuộc tấn công lặp lại
- Sự che dấu thông tin trong hệ thống RSA
- Tấn công dựa trên thời gian
- Tấn công lựa chọn thích nghi bản mã
6.8 Các vấn đề đặt ra trong thực tế
Quá trình tạo khóa
Việc tìm ra 2 số nguyên tố đủ lớn p và q thường được thực hiện bằng cách thử xác suất các số ngẫu nhiên có độ lớn phù hợp p và q còn cần được chọn không quá gần nhau để phòng trường hợp phân tích n bằng phương pháp phân tích Fermat Ngoài ra, nếu p-1 hoặc q-1 có thừa số nguyên tố nhỏ thì n cũng có thể dễ dàng bị phân tích và vì thế p và q cũngcần được thử để tránh khả năng này
Bên cạnh đó, cần tránh sử dụng các phương pháp tìm số ngẫu nhiên mà người tấn công có thể lợi dụng để biết thêm thông tin về việc lựa chọn số Yêu cầu ở đây là các
số được lựa chọn cần đồng thời ngẫu nhiên và không dự đoán được Đây là các yêu cầu khác nhau: Một số có thể được lựa chọn ngẫu nhiên nhưng nếu có thể dự đoán được dù chỉ một phần thì an ninh của thuật toán cũng không được đảm bảo Một ví dụ là bảng các số ngẫu nhiên do tập đoàn Rand xuất bản vào những năm 1950 có thể rất thực sự ngẫu nhiên nhưng người tấn công cũng có bảng này Nếu người tấn công đoán được
Trang 30một nửa chữ số của p hay q thì chúng có thể dễ dàng tìm ra nửa còn lại (theo nghiên cứu của Donald Coppersmith vào năm 1997)
Một điểm nữa cần nhấn mạnh là khóa bí mật d phải đủ lớn Năm 1990, Wiener chỉ ra rằng nếu giá trị của p nằm trong khoảng q và 2q và d < n1/4/3 thì có thể tìm ra được d từ n và e
Mặc dù e đã từng có giá trị là 3 nhưng hiện nay các số mũ nhỏ không còn được sử dụng do có thể tạo nên những lỗ hổng (đã đề cập ở phần chuyển đổi văn bản rõ) Giá trị thường dùng hiện nay là 65537 vì được xem là đủ lớn và cũng không quá lớn ảnh hưởng tới việc thực hiện hàm mũ
Kích thước và tốc độ mã hóa khóa trong RSA
- Kích thước khóa trong RSA:
Tùy thuộc vào tính bảo mật cần thiết của mỗi người và thời gian sống của khóa
mà khóa có chiều dài thích hợp:
+ Loại Export : 512 bít
+ Loại Personnal : 768 bít
+ Loại Militery : 2048 bít
- Chu kỳ sống của khóa phụ thuộc:
+ Việc đăng ký và tạo khóa
+ Việc phân bố khóa
+ Việc kích hoạt hoặc không kích hoạt khóa
+ Việc thay thế hoặc cập nhập khóa
+ Việc hủy bỏ khóa
+ Việc kết thúc khóa bao gồm sự phá hoại hoặc sự lưu trữ
Trang 31Nhận xét :
RSA có tốc độ thực hiện chậm hơn đáng kể so với DES và các thuật toán mã hóa đối xứng khác Trên thực tế, Bob sử dụng một thuật toán mã hóa đối xứng nào đó để
mã hóa văn bản cần gửi và chỉ sử dụng RSA để mã hóa khóa để giải mã
Phương thức này cũng tạo ra những vấn đề an ninh mới Một ví dụ là cần phải tạo
ra khóa đối xứng thật sự ngẫu nhiên Nếu không, người tấn công sẽ bỏ qua RSA và tập trung vào việc đoán khóa đối xứng
Phân phối khóa
Cũng giống như các thuật toán mã hóa khác, cách thức phân phối khóa công khai
là một trong những yếu tố quyết định đối với độ an toàn của RSA Quá trình phân phối khóa cần chống lại được tấn công đứng giữa (man-in-the-middle attack)
Giả sử người tấn công có thể gửi cho Bob một khóa bất kỳ và khiến Bob tin rằng
đó là khóa công khai của Alice Đồng thời người tấn công có khả năng đọc được thông tin trao đổi giữa Bob và Alice Khi đó, người tấn công sẽ gửi cho Bob khóa công khai của chính mình Sau đó, người tấn công đọc tất cả văn bản mã hóa do Bob gửi, giải mã với khóa bí mật của mình, giữ 1 bản sao chép đồng thời mã hóa bằng khóa công khai của Alice và gửi cho Alice Về nguyên tắc, cả Bob và Alice đều không phát hiện ra sự can thiệp của người thứ ba Các phương pháp chống lại dạng tấn công này thường dựa trên các chứng thực khóa công khai hoặc các thành phần của hạ tầng khóa công khai
Chuyển đổi văn bản rõ:
Trước khi thực hiện mã hóa, ta phải thực hiện việc chuyển đổi văn bản rõ (chuyển đổi từ M sang m) sao cho không có giá trị nào của M tạo ra văn bản mã không an toàn Nếu không có quá trình này, RSA sẽ gặp phải một số vấn đề sau:
Nếu m = 0 hoặc m = 1 sẽ tạo ra các bản mã có giá trị là 0 và 1 tương ứng
Trang 32Khi mã hóa với số mũ nhỏ (chẳng hạn e = 3) và m cũng có giá trị nhỏ, giá trị m*e cũng nhận giá trị nhỏ (so với n) Như vậy phép môđun không có tác dụng và có thể dễ dàng tìm được m bằng cách khai căn bậc e của c (bỏ qua môđun)
RSA là phương pháp mã hóa xác định (không có thành phần ngẫu nhiên) nên người tấn công có thể thực hiện tấn công lựa chọn bản rõ bằng cách tạo ra một bảng tra giữa bản rõ và bản mã Khi gặp một bản mã, người tấn công sử dụng bảng tra để tìm ra bản rõ tương ứng
Trên thực tế, ta thường gặp 2 vấn đề đầu khi gửi các bản tin ASCI ngắn với m là nhóm vài ký tự ASCI Một đoạn tin chỉ có 1 ký tự NULL sẽ được gán giá trị m = 0 và cho ra bản mã là 0 bất kể giá trị của e và N Tương tự, một ký tự ASCI khác, SOH, có giá trị 1 sẽ luôn cho ra bản mã là 1 Với các hệ thống dùng giá trị e nhỏ thì tất cả ký tự ASCI đều cho kết quả mã hóa không an toàn vì giá trị lớn nhất của m chỉ là 255 và
2553 nhỏ hơn giá trị n chấp nhận được Những bản mã này sẽ dễ dàng bị phá mã
Để tránh gặp phải những vấn đề trên, RSA trên thực tế thường bao gồm một hình thức chuyển đổi ngẫu nhiên hóa m trước khi mã hóa Quá trình chuyển đổi này phải đảm bảo rằng m không rơi vào các giá trị không an toàn Sau khi chuyển đổi, mỗi bản
rõ khi mã hóa sẽ cho ra một trong số khả năng trong tập hợp bản mã Điều này làm giảm tính khả thi của phương pháp tấn công lựa chọn bản rõ (một bản rõ sẽ có thể tương ứng với nhiều bản mã tuỳ thuộc vào cách chuyển đổi)
Một số tiêu chuẩn, chẳng hạn như PKCS, đã được thiết kế để chuyển đổi bản rõ trước khi mã hóa bằng RSA Các phương pháp chuyển đổi này bổ sung thêm bít vào
M Các phương pháp chuyển đổi cần được thiết kế cẩn thận để tránh những dạng tấn công phức tạp tận dụng khả năng biết trước được cấu trúc của bản rõ Phiên bản ban đầu của PKCS dùng một phương pháp đặc ứng (ad-hoc) mà về sau được biết là không
an toàn trước tấn công lựa chọn bản rõ thích ứng (adaptive chosen ciphertext attack) Các phương pháp chuyển đổi hiện đại sử dụng các kỹ thuật như chuyển đổi mã hóa bất đối xứng tối ưu (Optimal Asymmetric Encryption pading - OAEP) để chống lại tấn
Trang 33công dạng này Tiêu chuẩn PKCS còn được bổ sung các tính năng khác để đảm bảo an toàn cho chữ ký RSA (Probabilistic Signature Scheme for RSA - RSA-PSS)
Tạo chữ ký vào văn bản:
Thuật toán RSA còn được dùng để tạo chữ ký điện tử cho văn bản
Giả sử Alice muốn gửi cho Bob một văn bản có chữ ký của mình Để làm việc này, Alice tạo ra một giá trị băm của văn bản cần ký và tính giá trị mũ d mod N của nó Giá trị cuối cùng chính là chữ ký điện tử của văn bản đang xét Khi Bob nhận được văn bản cùng với chữ ký điện tử, anh ta tính giá trị mũ 3 mod n của chữ ký đồng thời với việc tính giá trị băm của văn bản Nếu 2 giá trị này như nhau thì Bob biết rằng người tạo ra chữ ký biết khóa bí mật của Alice và văn bản đã không bị thay đổi sau khi ký Cần chú ý rằng các phương pháp chuyển đổi bản rõ giữ vai trò quan trọng đối với quá trình mã hóa cũng như chữ ký điện tử và không được dùng khóa chung cho đồng thời cho cả hai mục đích trên
Trang 34CHƯƠNG 2: KHÁI NIỆM, SƠ ĐỒ VÀ XÁC THỰC CHỮ KÝ ĐIỆN TỬ SỬ DỤNG THUẬT TOÁN MÃ HÓA RSA
Trong những năm gần đây, sự phát triển của khoa học máy tính và internet càng cho ta thấy rõ hơn tầm quan trọng của mã hóa thông tin Ứng dụng của mã hóa thông tin không chỉ đơn thuần là mã hóa và giải mã thông tin mà nó còn được ứng dụng trong việc chứng thực nguồn gốc nội dung thông tin, xác nhận về người sở hữu mã khóa các quy trình giúp trao đổi thông tin và thực hiện giao dịch điện tử an toàn trên mạng
1 Khái niệm chữ ký điện tử
Khái niệm :
Chữ ký điện tử hay còn gọi là chữ ký số hoặc chứng nhận số Về căn bản khái niệm chữ điện tử cũng giống như chữ viết tay, nó gắn được đặc điểm nhận dạng của người ký vào một bản cam kết nào đó
Chữ ký điện tử được tạo lập dưới dạng từ, chữ, số, ký hiệu, âm thanh hoặc các hình thức khác bằng phương tiện điện tử, gắn liền hoặc kết hợp một cách logic với thông điệp dữ liệu, có khả năng xác nhận người ký thông điệp dữ liệu và xác nhận sự chấp thuận của người đó đối với nội dung thông điệp dữ liệu được ký
Chữ ký điện tử gắn với một bản chứng nhận điện tử, cho phép nhận dạng chủ sở hữu nó trong môi trường điện tử
Chữ ký điện tử chính là một mã khóa cấp riêng cho một cá nhân hay tổ chức, dùng để nhận diện cá nhân hay tổ chức đó
Sơ đồ chữ ký điện tử là một bộ năm: (P, A, K, S, V) trong đó :
P: là tập hữu hạn các văn bản có thể
A: là tập hữu hạn các chữ ký có thể
K: là tập hữu hạn các khoá có thể
Trang 35V: là tập các thuật toán kiểm tra chữ ký
Với mỗi k ∈ K có một thuật toán ký: sigk ∈S, và một thuật toán kiểm tra chữ ký verk ∈V Với x là văn bản cần ký, y là văn bản sau khi ký
)(
x sig y
khi false
x sig y
khi true
k k
2 Hàm băm và chữ ký:
Để kiểm tra tính toàn vẹn của một khối dữ liệu lớn, người ta sử dụng chữ ký số để đại diện cho khối dữ liệu đó bằng cách dùng hàm băm: với đầu vào là một thông điệp bất kỳ, đầu ra là một chuỗi bít có chiều dài xác định trước, chuỗi bít này được gọi là bản thông điệp tóm lược
2.1 Hàm Băm
Hàm băm là một phương thức mật mã nhưng nó không phải là một thuật toán mã hoá Hàm băm chỉ sử dụng một chứng chỉ số duy nhất được biết đến với tên như "hash value – giá trị băm", "hash – băm", Message Authentication Code (MAC), fingerprint – vân tay, hay một đoạn thông điệp Dữ liệu đầu vào của bạn có thể là một tệp tin, một ổ đĩa một quá trình truyền thông tin trên mạng, hay một bức thư điện tử Thông số giá trị băm được sử dụng để phát hiện khi có sự thay đổi của tài nguyên Nói cách khác, hàm băm sử dụng nó để phát hiện ra dữ liệu có toàn vẹn trong quá trình lưu trữ hay trong khi truyền hay không
Ví dụ, thông số giá trị băm được tính toán để so sánh với thông số giá trị băm được tạo ra trước đó một tuần Nếu hai thông số giống nhau thì dữ liệu chưa có sự thay đổi Nếu hai thông số có sự khác nhau, thì dữ liệu đã bị thay đổi Trong hình dưới đây thể hiện cơ bản về hash hay thông số MAC
Trang 36Thông số MAC value được tính toán bởi người gửi (sender) và người nhận (receive) với cùng một thuật toán
Hình 2.1: Thể hiện cơ bản về hàm băm hay thông số MAC
Không như các phương thức mật mã khác, chúng sẽ làm thay đổi dữ liệu thành một dạng mật mã, quá trình băm sử dụng một thông số giá trị băm và không thay đổi
dữ liệu ban đầu Bởi vì các tính năng đặc biệt, băm có thể sử dụng để bảo vệ và kiểm tra tính toàn vẹn của dữ liệu Nó cũng có khả năng sử dụng để kiểm tra khi có một tiến trình sao chép được thực hiện và đảm bảo tính chính xác của dữ liệu khi chúng được sao chép
Ví dụ, khi một ổ cứng được tạo ra một bản sao, một quá trình hash được thực hiện trên ổ đĩa trước khi quá trình nhân đôi được thực hiện Nếu hai thông số hash của ổ cứng mới được tạo ra và thông số hash của ổ đĩa ban đầu thì quá trình nhân đôi dữ liệu
Trang 37được thực hiện chính xác và đảm bảo dữ liệu không có sự thay đổi mất mát trong quá trình nhân bản Việc băm sử dụng để đảm bảo dữ liệu được nguyên bản giúp dữ liệu lưu ở dạng kỹ thuật số sẽ luôn dữ được nguyên bản sau vô số lần sao chép– và điều này không thể thực hiện khi lưu dữ liệu các dạng khác – ví như lưu thông tin âm thanh bằng băng từ sẽ bị biến dạng sau nhiều lần sao chép
Ví dụ, Message Digest 5 (MD5) là một thuật toán băm với 128-bit băm Điều này
có nghĩa không có vấn đề với dữ liệu đầu vào và dữ liệu đầu ra sau quá trình hash bởi
nó luôn luôn thêm vào 128 bits Sức mạnh của quá trình băm là nó được thực hiện một chiều và không thể có phương thức nào có thể thực hiện ngược lại được để chuyển thông số băm thành dữ liệu ban đầu Nếu một vài người có được các thông số hash của
ta, họ không thể lấy được dữ liệu ban đầu Tuy nhiên đó không phải là phương thức mật mã không thể tấn công Quá trình băm có thể bị tấn công bởi các phương thức đảo ngược hay birthday attack Phương thức tấn công bình thường sử dụng đó là sử dụng các công cụ phá mật khẩu Hầu hết các hệ thống lưu trữ mật khẩu trong dữ liệu tài khoản và được băm Hàm băm không thể thực hiện ngược lại, bởi đó là một giải pháp bảo mật một chiều, có nghĩa không có công cụ nào có thể chuyển ngược lại một mật khẩu được hash thành một mật khẩu nguyên bản chưa được băm Tuy nhiên một thuật toán nào cũng có những bất cập riêng, bằng việc sử dụng các phần mềm, kẻ giò tìm mật khẩu chúng có thể phát hiện ra đoạn mã thêm vào dữ liệu ban đầu và chỉ cần xoá đoạn giá trị băm đi là có thể truy cập bình thường Dữ liệu tài khoản thường không được mã hoá, và dữ liệu mật khẩu thường được hash do đó hầu hết các công cụ dò tìm mật khẩu chỉ có thể xoá mật khẩu đã được đặt cho người sử dụng đó mà không thể xem mật khẩu đó
Thuật toán băm thường được sử dụng:
Secure Hash Algorithm (SHA-1) với - 160-bit giá trị băm
Message Digest 5 (MD5) với —128-bit giá trị băm
Message Digest 4 (MD4) với —128-bit giá trị băm
Trang 38Message Digest 2 (MD2) với —128-bit giá trị băm
- Các tính chất cơ bản của hàm băm:
+ Là hàm một chiều, không thể thực hiện phép biến đổi ngược như trong quá trình mã hóa và giải mã, nghĩa là với một bản thông điệp tóm lược cho trước, khó có thể tìm được một thông điệp nào mà có hàm băm bằng bản thông điệp tóm lược này
+ Khó có thể tìm được hai thông điệp mà có cùng một bản thông điệp tóm lược
Các giải thuật băm được sử dụng hiện nay là: MD2, MD4, MD5, SHS Trong đó MD5
là giải thuật băm được sử dụng phổ biến và nó sẽ được trình bày trong phần dưới
2.2 MD5
Giải thuật MD5 được phát triển bởi Ron Rivest ở MIT: nhận đầu vào là một khối
dữ liệu có chiều dài bất kỳ, xử lý nó thành các khối 512 bít, tạo đầu ra là một bản thông điệp tóm lược 128 bít Quá trình bao gồm các bước sau:
* Bước 1: Thông điệp ban đầu được thêm một số bít (bắt đầu là bít 1, kế tiếp là các bít
0, số bít thêm vào từ 1 tới 512 bít) sao cho tổng số bít sau khi thêm vào cộng với 64 (chiềi dài của thông điệp ban đầu) là bội số của 512