Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)
Trang 1Tôi cam đoan đây là công trình nghiên cứu của riêng tôi
Nghiên cứu về thuật toán trong hệ mật mã khóa công khai RSA, có sử dụng các tài liệu tham khảo qua sách báo và tài liệu tham khảo khác
Các số liệu, kết quả nêu trong luận văn là trung thực và rõ ràng
TÁC GIẢ
Trang 2Công Nghệ Bưu Chính Viễn Thông đã tận tình truyền đạt những kiến thức quý báu,
dìu dắt, giúp đỡ tôi hoàn thành nhiệm vụ của khóa học và luận văn tốt nghiệp
Đặc biệt, tôi xin bày tỏ lòng biết ơn sâu sắc đến PGS TS LÊ HỮU LẬP Thầy đã tận tình truyền đạt những kiến thức khoa học chuyên ngành, đã giúp đỡ tôi trong suốt quá trình học tập và đã hướng dẫn tận tình, cho tôi những ý kiến đóng góp quý báu để hooàn thành tốt luận văn
Xin được gửi lời cảm ơn chân thành đến các bạn cùng lớp Cao học Hệ Thống Thông Tin Khóa 2015 đợt 1 Xin cảm ơn bạn bè, gia đình, đồng nghiệp đã giúp đỡ tạo điều kiện cho tôi hoàn thành khóa học
Xin trân trọng cảm ơn!
Tác giả BÙI VĂN BÌNH
Trang 3LỜI CẢM ƠN 2
BẢNG CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ 6
DANH MỤC CÁC BẢNG BIỂU 7
DANH MỤC CÁC HÌNH VẼ 8
PHẦN I: MỞ ĐẦU 1
1 Lý do chọn đề tài 1
2 Mục đích nghiên cứu 1
3 Phương pháp nghiên cứu 1
4 Nội dung luận văn 2
PHẦN II: NỘI DUNG 3
CHƯƠNG 1: GIỚI THIỆU MẬT MÃ VÀ HỆ MÃ HÓA CÔNG KHAI RSA 3
1.1 Giới thiệu về mật mã và hệ mật mã 3
1.1.1 Khái quát về mật mã và hệ thống mã hóa 3
1.1.2 Phân loại hệ mã hóa 4
1.1.3 Phân tích các ưu nhược điểm của các hệ mật mã 6
1.2 Hệ mã hóa công khai RSA 7
1.2.1 Trình bày các khái niệm liên quan 7
1.2.2 Thuật toán hệ mã hóa công khai 9
1.2.3 Một số cách thức tấn công hệ mật mã RSA 12
1.2.4 Phương pháp phòng tránh tấn công 15
1.2.5 Chi phí và tốc độ thực hiện của thuật toán RSA 16
1.2.6 Ứng dụng của hệ mã RSA 17
Kết luận chương 1 18
CHƯƠNG 2: ỨNG DỤNG THUẬT TOÁN TRONG HỆ MẬT MÃ RSA ĐỂ XÂY DỰNG VÀ XÁC THỰC CHỮ KÝ ĐIỆN TỬ 19
2.1 Các khái niệm 19
2.1.1 Chữ ký điện tử 19
Trang 42.1.5 Thông điệp điện tử 21
2.1.6 Chứng thực điện tử 22
2.1.7 Lịch sử hình thành và phát triển của chữ ký điện tử 23
2.2 Trình bày các thuật toán, các hàm 27
2.2.1 Thuật toán Euclide - Tìm UCLN của hai số nguyên 27
2.2.2 Thuật toán Euclide mở rộng 27
2.2.3 Thuật toán tính a-1 mod n 28
2.2.4 Thuật toán Rabin-Miller 29
2.2.5 Thuật toán tính Xp mod n 30
2.2.6 Định lý Ferma 31
2.2.7 Định lý Euler 31
2.2.8 Hàm Băm 31
2.2.9 Hàm băm MD5 32
2.2.10 Hàm băm SHA1 37
2.3 Lược đồ chữ ký điện tử RSA 40
2.3.1 Định nghĩa lược đồ chữ ký 40
2.3.2 Phân loại các lược đồ chữ ký số 40
2.3.3 Lược đồ chữ ký RSA 44
2.3.4 Một số lược đồ chữ ký khác (DSA, EL Gamal) 46
2.4 Quá trình ký và xác thực chữ ký điện tử 51
2.4.1 Ký văn bản điện tử 51
2.4.2 Xác thực chữ ký điện tử 52
Kết luận chương 2 53
CHƯƠNG 3: XÂY DỰNG VÀ THỬ NGHIỆM ỨNG DỤNG CHỮ KÝ ĐIỆN TỬ 54
3.1 Các yêu cầu của thử nghiệm 54
Trang 53.2 Hệ thống tạo lập chữ ký 55
3.2.1 Môi trường xây dựng 55
3.2.2 Quá trình xây dựng 55
3.3 Cài đặt và thiết lập 56
3.3.1 Chạy thử demo và ghi nhận kết quả đạt được 56
3.3.2 Demo ký – xác thực chữ ký 57
3.3.3 Phân tích ưu nhược điểm của ứng dụng thực tế 59
Kết luận chương 3 60
PHẦN III: KẾT LUẬN 61
MÃ NGUỒN CHƯƠNG TRÌNH THỬ NGHIỆM 62
DANH MỤC TÀI LIỆU THAM KHẢO 67
Trang 6CA Certificate Authority Nhà cung cấp chứng thực số DEA Data Encryption Algorithm Thuật toán mật mã dữ liệu DES Data Encryption Standard Chuẩn mã hóa dữ liệu
IDEA International Data Encryption
Algorithm
Thuật toán mật mã dữ liệu quốc
tế MAC Message Authentication Code Mã xác thực thông điệp
MD5 Message Digest algorithm 5 (MD5
được thiết kế bởi Ronald Rivest
PKI Public Key Infrastructure Cơ sở hạ tầng khoá công khai
SHA Secure Hash Algorithm SHA thiết kế bởi National
Security Agency (NSA)
Trang 7Bảng 1.1 Bản mã ASCII 5
Bảng 1.2: Tóm tắt giải thuật RSA 8
Bảng 1.3 Bảng quy ước mã hóa thông điệp 11
Bảng 2.1: Bảng sau tính toán từng bước 3727 mod 101 31
Bảng 2.2: Giá trị hằng số của mảng T có 64 phần tử 35
Bảng 2.3: Xây dựng các tác vụ 36
Trang 8Hình 1.2: quá trình mã hóa khóa công khai 7
Hình 2.1: Ứng dụng chữ ký số trong quá trình cấp giấy phép lái xe mới 26
Hình 2.2: Hoạt động của một hàm băm 31
Hình 2.3: Tạo message_digest sử dụng MD5 33
Hình 2.4: Xử lý MD5 trên một khối đơn 512 bít 34
Hình 2.5: Tác vụ của MD5[abcd k s i] 35
Hình 2.6: Mô hình tổng quát lược đồ chữ ký có kèm bản rõ 42
Hình 2.7: Lược đồ chữ ký số tự khôi phục bản rõ 43
Hình 2.8: Lược đồ chữ ký số kèm theo bản rõ thu được 44
Hình 2.9: Sơ đồ quá trình ký văn bản điện tử 51
Hình 2.10: Sơ đồ quá trình xác thực chữ ký điện tử 52
Hình 3.1: Giao diện chính của chương trình 56
Hình 3.2: Quá trình giải mã 57
Hình 3.3: Quá trình mã hoá 58
Trang 9PHẦN I: MỞ ĐẦU
1 Lý do chọn đề tài
Bảo mật thông tin và an toàn dữ liệu là vấn đề rất được quan tâm trong thời
kỳ có quá nhiều thông tin như hiện nay Đây là một vấn đề rộng có liên quan đến nhiều lĩnh vực trong đời sống xã hội như: quốc phòng, tài chính ngân hàng, thương mại,… Ngày nay, ở các nước phát triển cũng như các nước đang phát triển, mạng máy tính đang ngày càng đóng vai trò quan trọng, khi đó thì vấn đề bảo mật thông tin trên mạng được đặt lên hàng đầu
Với sự phát triển không ngừng của chính phủ điện tử cùng với trao đổi thông tin, yêu cầu an toàn thông tin ngày càng có vai trò vô cùng quan trọng Để đáp ứng yêu cầu trao đổi và an toàn thông tin thì giải pháp “mã hóa thông tin” được xem là phương án tốt nhất Vì vậy, mỗi tổ chức, quốc gia đều có những cơ chế mã hóa riêng để bảo mật hệ thống thông tin của mình Cơ chế mã hóa thông dụng hiện nay
là hệ mật mã RSA
Trong mật mã vấn đề bảo mật luôn đi đôi với vấn đề xác thực nguồn gốc thông tin, đặc biệt trong hệ thống mật mã khóa công khai, vấn đề xác thực nguồn gốc thông tin là rất quan trọng Chữ ký số (chữ ký điện tử) ra đời với yêu cầu cần có
mã khóa phù hợp là điều tất yếu
Với các lý do đã nêu trên, tôi chọn đề tài “Nghiên cứu hệ mật mã RSA và Ứng dụng trong Chữ ký điện tử” làm nội dung nghiên cứu cho luận văn, nhằm
trang bị những kiến thức cần thiết để xây dựng một hệ thống trao đổi thông tin công
khai nhưng đảm bảo bí mật
2 Mục đích nghiên cứu
Nghiên cứu về thuật toán trong hệ mật mã khóa công khai RSA và các ứng dụng trong thực nghiệm tạo chữ ký điện tử để ký và xác thực chữ ký
3 Phương pháp nghiên cứu
Nghiên cứu các tài liệu về mã hóa, các hệ mật mã của các tác giả trong và ngoài nước, các bài báo, thông tin trên mạng Internet có trình bày chọn lọc
Trang 104 Nội dung luận văn
Luận văn bao gồm những phần:
PHẦN I: MỞ ĐẦU
PHẦN II: NỘI DUNG
Trong phần này có 3 chương như sau:
Chương I: giới thiệu mật mã và hệ mã hóa công khai rsa
Trình bày thuật toán và định lý toán học dùng trong các hệ mã công khai Xác định các tính chất, đặc điểm nội dung cơ bản của hệ mã khóa
Chương II: ứng dụng thuật để xây dựng và xác thực chữ ký điện tử
Giới thiệu trình bày khái niệm chữ kí điện tử, phân loại các lược đồ chữ ký
số, trình bày chi tiết và có các ví dụ minh họa.Giới thiệu Hàm Băm và giải thuật được dùng phổ biến là MD5 và SHA1
Chương III: xây dựng ứng dụng chữ ký điện tử
Phân tích cách thực hiện các quá trình tạo khóa, mã hóa – giải mã và ký – xác nhận chữ ký Viết mã xây dựng chương trình thử nghiệm
PHẦN III: Kết luận
Tóm tắt những kết quả đạt được đồng thời nêu ra những hạn chế của luận văn
và hướng phát triển có thể được theo hướng nghiên cứu của luận văn trong tương lai
Do thời gian làm luận văn còn hạn hẹp và trình độ chuyên môn còn hạn chế nên không tránh khỏi nhiều thiếu sót Vì vậy kính mong các thầy cô, các bạn đồng nghiệp đóng góp ý kiến xây dựng để luận văn được hoàn thiện chặt chẽ hơn và đề tài được đưa vào ứng dụng thực tế chuyên sâu
Trang 11PHẦN II: NỘI DUNG CHƯƠNG 1: GIỚI THIỆU MẬT MÃ VÀ HỆ MÃ HÓA CÔNG
KHAI RSA
1.1 Giới thiệu về mật mã và hệ mật mã
1.1.1 Khái quát về mật mã và hệ thống mã hóa
Mật mã (Cryptogaraphy) là một ngành khoa học nghiên cứu các giải pháp
mã hóa, biến đổi thông tin thành một dạng khác với mục đích che dấu thông tin và ý nghĩa thông tin cần mã hóa Đây là một ngành quan trọng có nhiều ứng dụng trong cuộc sống xã hội Cùng với sự phát triển của khoa học máy tính và Internet, các nghiên cứu và ứng dụng của khoa học mật mã càng ngày trở nên đa dạng hơn, ứng
dụng của khoa học mật mã không chỉ đơn thuần là mã hóa và giải mã thông tin mà
còn bao gồm nhiều vấn đề cần được nghiên cứu: Chứng thực nguồn gốc thông tin
đó là chữ ký điện tử, chứng nhận tính xác thực 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
Một hệ mật mã (Cryptosystem) là một bộ năm (P, C, K, E, D) thỏa mãn các
điều kiện:
- P là một tập hữu hạn các bản rõ (chứa thông tin cần mã hóa)
- C là tập hữu hạn các bản mã (chứa thông tin đã được mã hóa từ bản rõ)
- K là tập hữu hạn các khóa
- E và D lần lược là quá trình mã hóa và giải mã:
Với mỗi khóa kK tồn tại luật mã hóa e k E và luật giải mã d k D tương ứng Luật mã hóa e k : P → C và luật giải mã e k : C → P là hai ánh xạ thỏa mãn
d k (e k (x)) = x , xP
Hệ thống mã hóa khóa bí mật [2][5], là hệ thống mã hóa trong đó quá trình
mã hóa và giải mã đều sử dụng chung một khóa gọi là khóa bí mật (Secret key)
Việc bảo mật thông tin phụ thuộc vào việc bảo mật khóa
Trong hệ thống mã hóa bí mật, thông điệp nguồn (bản tin rõ) được mã hóa
với khóa k được thống nhất giữa người gửi A và người nhận B Người A sẽ sử dụng
Trang 12khóa k và để mã hóa thông điệp M thành thông điệp c (bản mã) và gửi c cho B, người B sẽ sử dụng khóa k để giải mã thông điệp c này, vấn đề an toàn bảo mật thông tin được mã hóa phụ thuộc vào việc giữ bí mật nội dung khóa k
1.1.2 Phân loại hệ mã hóa
- Mã theo chuỗi bit (Stream Cipher)
Trong dạng mã này thông điệp là các bit và khoá được phát sinh bởi bộ phát sinh ngẫu nhiên Chuỗi bit khoá được trộn với bản rõ, thường theo phép XOR để
sinh bản mã Việc giải mã được thực hiện bằng cách tính XOR bản mã với khoá k
- Mã theo chữ
Các hệ mã ban đầu thường dựa trên cơ sở phép biến đổi một chữ cái trong
bản rõ thành một chữ cái trong bản mã Kỹ thuật mã hoá này còn được gọi là mã thay thế Để thực hiện phương pháp này, trước hết cần định nghĩa một bản mã (như bảng ASCII) để số hoá bản rõ, vì các phép toán sẽ làm việc trên các số thay vì các
ký tự Dạng mã này có độ bảo mật không cao vì một ký tự luôn được mã hoá bằng một ký tự khác trong bản mã mà với sự tiến bộ của máy tính hiện nay thì sẽ không khó khăn để giải mã một bản mã được mã hoá bằng phương pháp thay thế như trên
- Mã khối (Block Cipher)
Rõ ràng, hệ mã theo chữ có độ an toàn không cao, vì thế một cách để tăng độ
an toàn là dùng phương pháp mã khối Trong mã khối, bản rõ và bản mã được chia
thành từng khối ký tự trước khi thực hiện việc mã hoá hay giải mã Kỹ thuật mã khối được mô tả như sau [1]:
Hình 1.1 Mô hình hệ mã khoá bí mật
Trang 13• Chia văn bản M thành nhiều khối: M = M1M2 … Mj, mỗi khối Mi
với 1≤ i ≤ j là một khối n ký tự
• Chuyển các ký tự thành các số tương đương và xây dựng bản mã:
Ci = AMi + B (mod n), i = 1, 2, …, j Trong đó (A, B) là khoá, A là một ma trận khả nghịch cấp n với
Mã mũ, do Pohlig và Hellman giới thiệu năm 1976 [2][5], được mô tả như
sau: Chọn p là một số nguyên tố, M là một số tương ứng của bản rõ, với mỗi ký tự trong bản rõ được thay thế bằng mã tương ứng
Trang 141.1.3 Phân tích các ưu nhược điểm của các hệ mật mã
- Ưu điểm
Tốc độ thực hiện nhanh vì các quá trình mã hoá và giải mã sử dụng các phép toán trên dãy bit nhị phân như: OR, AND, XOR, … là những phép toán gần với lệnh máy
- Nhược điểm
Cả người gửi và người nhận đều phải biết khoá nên phát sinh vấn đề an toàn khi truyền khoá Nếu khoá bị đánh cắp thì thông tin được mã hoá bằng khoá đó không còn được an toàn
Hạn chế về khả năng quản lý khoá: Đối với mỗi người để liên lạc được với nhau phải có một khoá riêng, do đó đối với hệ thống lớn có nhiều đối tác giao tiếp với nhau thì mỗi người phải lưu giữ một số lượng khoá bí mật rất lớn dẫn đến vấn
đề khó khăn trong quản lý và bảo mật khoá
Đối với phương pháp mã hoá bằng khoá bí mật có thể không xác nhận được chủ nhân của thông tin, tức nguồn gốc thông tin nhận được Nên phương pháp mã hoá bí mật khó ứng dụng vào lĩnh vực cần xác định được nguồn gốc của thông tin
như lĩnh vực chữ ký điện tử
* Ứng dụng của mã hoá khoá bí mật
Loại mật mã này thường được dùng trong quân sự, ngoại giao, tức là khi cần trao đổi thông tin với nhau khá ít, hơn nữa cùng chung quyền lợi nên sẵn sàng bảo
Trang 15có một hệ mã mới ra đời đó là hệ mật mã khoá công khai (hệ mã bất đối xứng) để khắc phục những nhược điểm của hệ mật mã khoá bí mật
1.2 Hệ mã hóa công khai RSA
1.2.1 Trình bày các khái niệm liên quan
Hệ mã khóa công khai RSA là hệ thống mật mã do các giáo sư Ronald Rivest, Adi Sharmir và Leonard Adleman phát minh năm 1978 tại học viện Công nghệ Massachusetts (MIT)
Thuật toán RSA là thuật toán đầu tiên phù hợp với việc tạo chữ ký điện tử đồng thời với việc mã hóa và giải mã Nó đá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 hệ mật mã khóa công khai RSA đang được sử dụng phổ biến trong thương mại điện tử và đảm bảo an toàn với điều kiện độ dài khóa đủ lớn
Hệ mã RSA được xây dựng trên cơ sở mã khối trong đó khóa mã hóa là
cặp (e, n) gồm số mũ e modulo n Với n là tích số của 2 số nguyên tố rất lớn nào
đó, n = p*q còn (e, φ(n)) = 1, với φ(n) là giá trị hàm Euler của n, trong trường hợp này φ(n) = (p-1)*(q -1)
Như vậy, thuật toán RSA được thiết kế dựa trên độ khó của bài toán phân
tích ra thừa số nguyên tố trên tập số nguyên Zn Cụ thể là số nguyên dương n = p*q với p, q là 2 số nguyên tố Nếu biết n, muốn tìm p, q phải giải bài toán phân tích một số ra thừa số nguyên tố và nếu n, p, q đủ lớn thì đòi hỏi phải thực hiện số lượng
các phép tính vô cùng lớn Trong điều kiện hiện nay thì điều này không khả thi, tuy nhiên trong tương lai với sự phát triển của máy tính thì bài toán phân tích ra thừa số nguyên tố vẫn có thể giải được
Khóa công khai của B khóa bí mật của B
đoạn tin mật mã đoạn tin
Hình 1.2: quá trình mã hóa khóa công khai
Giải thuật
mã hóa
Giải thuật giải mã
User BUser A
Trang 16Bảng 1.2: Tóm tắt giải thuật RSA
Tạo 2 số nguyên tố lớn p và q
Tính n = p*q, 0(n) = (p-1)*(q-1)
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)
+ Mỗi hệ thống cuối trong mạng tạo ra một cặp khóa để dùng cho mã hóa và giải
mã đoạn tin mà nó sẽ nhận
+ Mỗi hệ thống công bố rộng rãi khóa mã hóa bằng cách đặt khóa vào một thanh ghi hay một file công khai Đây là khóa công khai, khóa còn lại được giữ riêng
+ Nếu A muốn gửi một đoạn tin tới B thì A mã hóa đoạn tin bằng khóa công khai của B
+ Khi B nhận đoạn tin mã hóa, nó giải mã bằng khóa bí mật của mình Không một người nào khác có thể giải mã đoạn tin mã này bởi vì chỉ có mình B biết khóa bí mật đó thôi
Trang 171.2.2 Thuật toán hệ mã hóa công khai
1.2.2.1 Thuật toán sinh khóa
Việc tạo ra khóa công khai và khóa bí mật thực hiện theo các bước sau: (1) Sinh ra 2 số nguyên tố lớn p và q ngẫu nhiên (p ≠ q)
(2) Tính n = p*q
φ(n) = (p-1)*(q-1)
(3) Chọn một số tự nhiên e sao cho 1 < e < φ(n) và là số nguyên tố cùng nhau với φ(n)
(4) Tính d sao cho: d*e ≡ 1 (mod φ(n)) với 1< d < φ(n)
(5) Khóa công khai (e, n), khóa bí mật (d, n)
1.2.2.2 Thuật toán mã hóa
Để gửi dữ liệu cần mã hóa thì người gửi thực hiện:
(1) Thu nhận khóa công khai của người nhận (e, n)
(2) Biến đổi thông điệp muốn gửi M thành những số nguyên m < n theo một hàm có thể đảo ngược (từ m có thể xác định được M) được thỏa thuận trước
(3) Tính C = Me
mod n
1.2.2.3 Thuật toán giải mã
Để khôi phục lại nội dung dữ liệu M ban đầu, người nhận thực hiện các bước sau: (1) Tính M = Cd mod n với 0 ≤ m ≤ n
(2) Thực hiện phép biến đổi ngược từ số m thành chuỗi ký tự tương ứng chứa
thông tin M ban đầu
1.2.2.4 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 bản rõ
(chuyển từ M sang m) sao cho không có giá trị nào của M tạo ra bản mã không an
toàn Nếu không có quá trình này, RSA sẽ gặp một số vấn đề như:
- 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
- Khi mã hóa với số mũ nhỏ (chẳng hạn e = 3) và m cũng có giá trị nhỏ, giá trị me cũng nhận giá trị nhỏ (so với n) Như vậy phép mođ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 mođun)
Trang 18- 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ể 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 bản rõ tương ứng
Trên thực tế, thường gặp hai vấn đề đầu khi gửi các bản tin ASCII ngắn với m
là nhóm vài ký tự ASCII Một đoạn tin chỉ có 1 ký tự Nul sẽ được gán giá trị là m = 0
và cho ra bản mã là 0 bất kể giá trị e và n Tương tự, một ký tự ASCII khác, SOH có giá trị 1 sẽ luôn cho bản mã là 1 Với các hệ thống dùng giá trị e nhỏ thì tất cả ký tự ASCII đề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, khi thực hiện hệ mã RSA người ta
thường dùng hình thức chuyển đổi ngẫu nhiên 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 giá trị không an toàn Sau khi chuyển đổi, mỗi bản rõ khi mã hóa sẽ cho 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ã tùy thuộc vào cách chuyển đổi)
Một số tiêu chuẩn, chẳng hạn như PKCS [5], đã đượ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 bản rõ Các phương pháp chuyển đổi cần 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 đầu tiên của PKCS dùng phương pháp chuyển đổi 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õ tương ứng (adaptive chosen ciphertext attack) Các phương pháp chuyển đổi hiện đại sử dụng kỹ thuật như chuyển đổi mã hóa bất đối xứng tối ưu (Optimal Asym metric Eneryption Padding-OAEP) để chống lại tấn cô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- PSS)
Trang 19- Tính d = e-1 mod 11200 = 6597 (Dùng giải thuật Euclide mở rộng)
- Vậy khóa công khai là (e, n) = (3533, 11413);
- Tính d = e-1 mod 2436 = 937 (Dùng giải thuật Euclide mở rộng)
Khóa công khai là (e, n) = (13, 2537)
Khóa bí mật là (d, n) = (937, 2537)
Tiếp theo để mã hóa thông điệp M: “DAI HOC” ta thực hiện như sau:
Bảng 1.3 Bảng quy ước mã hóa thông điệp
Trang 20Simons và Norris đã chỉ ra rằng hệ thống RSA có thể bị tấn công khi sử dụng
tấn công lặp liên tiếp Đó là khi kẻ tấn công biết khóa công khai (e, n) và bản mã C
thì anh ta có thể tính chuỗi các bản mã sau:
C1 = Ce (mod n)
C2 = C1e (mod n)
………
Ci = Ci-1e (mod n)
Nếu có một phần tử Cj trong chuỗi C1, C2, …, Ci, … sao cho Cj = C thì khi
đó anh ta sẽ tìm được M = Cj-1 bởi vì:
Cj = C e j1 (mod n)
C = Me (mod n)
Ví dụ: Giả sử ta thu nhận được bản mã C = Me
mod n = 123 mà A mã hóa
bằng khóa công khai của B là (e, n)= (167, 1793) để gửi cho B
Ta lặp lại quá trình mã hóa:
C = m13 (mod 2537)
m = C937 (mod 2537)
Trang 21Ci = C i e1 mod n = 30167 mod 1793 = 123 = C, kết thúc quá trình lặp
Vì Ci = 30167 mod 1973 = C = M167 mod 1973 = 123 nên M = Ci – 1 = 30
1.2.3.2 Tấn công modulo n dùng chung
Simons và Norris cũng chỉ ra rằng hệ thống RSA có thể bị tấn công khi sử
dụng modulo n dùng chung, thực vậy nếu một thông điệp M được mã hóa bằng hai khóa công khai e1 và e2 từ hai thành viên trong hệ thống thì được:
C mod n = 200-1 mod 2491 = 2354
Vậy M = 958 * 2354 mod 2491 = 777
Trang 22* Nhận xét: Để hệ mã RSA an toàn thì modulo n nên dùng một lần Hiện nay việc sinh ra số nguyên tố lớn không khó, nên việc dùng chung modulo n có lẽ không xảy ra
1.2.3.3 Tấn công khi khóa công khai e nhỏ
Hastad đã đưa ra kiểu tấn khi khóa công khai e nhỏ (e = 3) của hệ mã công
khai RSA như sau :
Giả sử để gửi thông điệp M đến các người dùng P1,P2, , Pk với khóa công
khai là (ei, ni) A mã hóa M bằng khóa công khai (ei, ni) và gửi các bản mã Ci đến người dùng Pi, biết M < ni, với i = 1, 2, , n
Ta có thể nghe trộm kết nối ra ngoài của A và thu thập được k bản mã Ci
Giả sử các khóa công khai ei = 3 thì có thể khôi phục M nếu k ≥ 3
Thực vậy, nếu có được C1, C2, C3 với
C1 = M3 mod n1; C2 = M3 mod n2; C3 = M3 mod n3 và gcd(ni, nj) = 1, i ≠ j áp
dụng định lý số dư Trung Quốc với C1; C2; C3 tìm được C‟ Zn1n2n3 thỏa
Giả sử A dùng khóa công khai của U1(e1, n1) = (3, 5353); U2(e2, n2) = (3, 391);
U3(e3, n3) = (3, 247) mã hóa thông điệp M = 24 thành 3 bản mã C1, C2, C3 và gửi đến cho U1, U2, U3
Ta thu được 3 bản mã C1 = 243 mod 5353 = 3118, C2 = 243 mod 391 = 139 và
Do 5353, 391, 247 là các số nguyên tố cùng nhau nên hệ phương trình trên
có nghiệm duy nhất theo modulo = 5353*391*247 = 516976681
Trang 23Vậy M = 313842 = 24
1.2.4 Phương pháp phòng tránh tấn công
Hệ mật RSA là hệ mật phổ biến nhất hiện nay, nó được triển khai và ứng dụng trong nhiều hệ thống thương mại nhằm cung cấp tính bảo mật cũng như xác thực của dữ liệu Từ khi được công bố, RSA đã được phân tích tính an toàn bởi nhiều nhà khoa học Và đã có một số cuộc tấn công lên hệ mật RSA xong chúng chủ yếu là minh họa cho việc sử dụng RSA không đúng cách Vấn đề thám mã đối với RSA hiện nay đang được các nhà khoa học tập trung vào các kẽ hở của RSA và được chia làm 4 loại: tấn công cơ bản, tấn công số mũ công khai hoặc số mũ bí mật nhỏ và tấn công cài đặt
Độ an toàn của hệ thống RSA dựa trên 2 vấn đề của toán học: bài toán phân tích ra thừa số nguyên tố các số nguyên lớn và bài toán RSA Nếu 2 bài toán trên là khó (không tìm được thuật toán hiệu quả để giải chúng) thì không thể thực hiện được việc phá mã toàn bộ đối với RSA Phá mã một phần phải được ngăn chặn bằng các phương pháp chuyển đổi bản rõ an toàn
Bài toán RSA là bài toán tính căn bậc e môđun n (với n là hợp số): tìm số m sao cho me=c mod n, trong đó (e, n) chính là khóa công khai và c là bản mã Hiện nay phương pháp triển vọng nhất giải bài toán này là phân tích n ra thừa số nguyên
tố Khi thực hiện được điều này, kẻ tấn công sẽ tìm ra số mũ bí mật d từ khóa công khai và có thể giải mã theo đúng quy trình của thuật toán Nếu kẻ tấn công tìm được
2 số nguyên tố p và q sao cho: n = pq thì có thể dễ dàng tìm được giá trị (p-1)(q-1)
Trang 24và qua đó xác định d từ e Chưa có một phương pháp nào được tìm ra trên máy tính
để giải bài toán này trong thời gian đa thức (polynomial-time) Tuy nhiên người ta cũng chưa chứng minh được điều ngược lại
Gần đây người ta có thể đề cập đến khả năng phá hệ mã RSA bằng các máy tính có cấu hình đặc chủng (chuyên dùng cho việc phân tích số) Mặc dù hứa hẹn những tiến bộ vượt bậc nhưng khả quan này vẫn chưa thể trở thành hiện thực trong tương lai gần, nhất là khi chuẩn của hệ mã RSA đang ngày được nghiên cứu để hoàn thiện và nâng cao tính an toàn hơn
1.2.5 Chi phí và tốc độ thực hiện của thuật toán RSA
1.2.5.1 Chi phí thực hiện của thuật toán RSA
Để thực hiện thuật toán RSA phần lớn phải tốn chi phí thực hiện các phép
tính cơ bản như: tạo khóa, mã hoá, giải mã Quá trình mã hoá và giải mã tương đương với chi phí thực hiện các phép tính luỹ thừa modulo n Để đảm bảo cho khoá
bí mật được an toàn thì thường chọn số mũ công khai e nhỏ hơn nhiều so với số mũ
bí mật d, do đó chi phí thời gian để thực hiện mã hoá dữ liệu nhỏ hơn nhiều so với
thời gian giải mã Vì vậy chi phí để thực hiện giải thuật RSA phần lớn là chi phí thực hiện việc giải mã
Để tính chi phí thời gian thực hiện của một thuật toán, ta cần biết chi phí thực hiện cho từng phép tính, cụ thể là:
Trang 25được dùng để mã hoá khối lượng dữ liệu lớn mà thường dùng để mã hoá những dữ liệu nhỏ
1.2.6 Ứng dụng của hệ mã RSA
Thực tiễn cho thấy tốc độ thực hiện của RSA là chậm Tuy nhiên, người ta tìm thấy ở hệ mã RSA những khả năng ứng dụng độc đáo khác, thay vì trực tiếp mã hoá văn bản
1.2.6.1 Tạo vỏ bọc an toàn cho văn bản
Một trong những ứng dụng quan trọng của RSA là được sử dụng kết hợp với
hệ mã đối xứng có tốc độ cao như DES, IDEA, …, khi đó DES sẽ được dùng để mã hoá toàn bộ văn bản (bằng một khoá đối xứng bí mật nào đó), còn RSA dùng để mã
hoá chìa khoá mà DES đã dùng để mã hoá văn bản Khoá này thường có độ dài
không đáng kể cho nên thời gian không còn là vấn đề Do tính an toàn cao, chìa khoá đối xứng (của DES hay IDEA, …) được mã hoá bằng RSA sẽ được gửi một cách an toàn đến cho người nhận để làm công cụ giải mã
Như vậy, các hệ mật mã đối xứng đã góp phần khắc phục tốc độ của RSA, còn RSA khắc phục được khâu yếu nhất của hệ mã đối xứng là chuyển giao khoá giải mã cho người nhận một cách an toàn RSA đã tạo ra một “vỏ bọc số” an toàn cho văn bản thay vì thực hiện trực tiếp mã hoá văn bản
1.2.6.2 Tạo chữ ký số cho văn bản
Thuật toán RSA được dùng để tạo “chữ ký số” cho văn bản, giả sử người A
muốn gửi cho B một văn bản có chữ ký của mình Để làm việc này, A tạo ra một
giá trị băm (hash Value) của văn bản cần ký và tính giá trị mũ d mod n của nó (giống như A thực hiện việc giải mã) Giá trị tìm được cuối cùng chính là chữ ký điện tử của văn bản đang xét Khi B nhận được văn bản cùng với chữ ký điện tử, anh ta tính giá trị mũ e 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ì B biết rằng người tạo ra chữ ký đó là của A và văn bản không bị thay đổi
Trang 26Kết luận chương 1
Qua nội dung trình bày ở trên đã giúp tác giả nắm chắc được cỡ sở của việc
mã hóa, đặc biệt là nguyên tắc của việc mã hóa đó là tính bí mật, tính toàn vẹn, tính xác thực và tính trách nhiệm Hiểu được sự phổ biến của hệ mã hóa công khai, trong
đó hệ mã hóa RSA là một thuật toán nổi bật, đánh dấu sự tiến bộ vượt bậc trong lĩnh vực mã mật mã học kể từ khi nó ra đời Trong chương sau, tác giả sẽ nghiên cứu và trình bày về hệ mã hóa sử dụng khóa công khai RSA
Trang 27CHƯƠNG 2: ỨNG DỤNG THUẬT TOÁN TRONG HỆ MẬT MÃ RSA ĐỂ XÂY DỰNG VÀ XÁC THỰC CHỮ KÝ ĐIỆN TỬ
Chương 2 trình bày khái niệm về chữ ký điện tử và một số khái niệm có liên quan đến chữ ký điện tử, giới thiệu về hàm băm và trình bày hai giải thuật băm được dùng phổ biến là MD5 và SHA1 Trong chương này còn giới thiệu sơ lược về
sự hình thành và phát triển của chữ ký điện tử trên thế giới và ở Việt Nam Nêu định nghĩa lược đồ chữ ký số, phân loại các lược đồ chữ ký số, trình bày chi tiết và nêu các ví dụ minh họa cho các lược đồ chữ ký số như: lược đồ chữ ký ELGamal, lược
đồ chữ ký DSA, lược đồ chữ ký RSA Trong đó lược đồ chữ ký RSA sẽ được cài đặt thành chương trình “Xây dựng và thử nghiệm ứng dụng chữ ký điện tử” trong
chương 3
2.1 Các khái niệm
2.1.1 Chữ ký điện tử
Chữ ký điện tử (electronic signature) là thông tin đi kèm theo dữ liệu (văn bản, hình
ảnh, âm thanh, …) nhằm mục đích xác định người chủ của dữ liệu đó [15][21]
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 lôgic
với thông điệp điện tử, 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 đã ký
Chữ ký điện tử cũng giống như chữ viết tay, tức là chữ ký điện tử được dùng
để xác nhận lời hứa hay cam kết của người nào đó và sau đó không thể chối bỏ
được Chữ ký điện tử không đòi hỏi phải sử dụng giấy mực mà nó gắn đặc điểm
nhận dạng của người ký vào một bản cam kết nào đó Như vậy, chữ ký điện tử sẽ chứng thực định danh người gửi và bảo vệ sự toàn vẹn dữ liệu
Chữ ký điện tử được sử dụng trong các giao dịch điện tử Xuất phát từ thực tế, chữ ký điện tử cũng cần đảm bảo các chức năng: Xác định được người chủ của một dữ liệu nào đó: văn bản, hình ảnh, video, … của dữ liệu đó có bị thay đổi hay không
Trang 28hóa” nếu chữ ký đặt ở cuối bản tin thì việc sao chép “chữ ký số” là dễ dàng và
không thể phân biệt bản gốc với bản sao, vì chữ ký số là các số 0, 1 Vậy, chữ ký số
đặt ở cuối “tài liệu số” không thể chịu trách nhiệm đối với toàn bộ nội dung văn
bản, mà chữ ký số phải được ký trên từng bít của tài liệu đó Nhưng chữ ký số cũng không thể ký trên bất kỳ tài liệu nào với độ dài tùy ý, vì vậy chữ ký số sẽ có độ dài rất lớn Với tài liệu dài người ta ký trên đại diện của nó Đại diện của tài liệu được
tạo ra từ hàm băm (Hash function)
Với chữ ký thông thường, nó là một phần vật lý của tài liệu, nhưng chữ ký số
không gắn theo kiểu vật lý vào thông điệp Đối với chữ ký thông thường, người ta kiểm tra bằng cách so sánh với chữ ký đúng và dĩ nhiên phương pháp này cũng không phải là an toàn vì người ta có thể giả mạo Đối với chữ ký số, người ta có thể kiểm tra chữ ký thông qua thuật toán kiểm tra công khai Như vậy, bất kỳ ai cũng có
thể kiểm tra được chữ ký số và để ngăn chặn sự giả mạo, cần tìm ra một sơ đồ chữ
ký an toàn
2.1.3 Phương tiện điện tử
Là phương tiện hoạt động dựa trên công nghệ điện, điện tử, kỹ thuật số, từ tính, truyền dẫn không dây, quang học, điện tử hoặc công nghệ tương tự
Phương tiện điện tử giúp hỗ trợ cho người dùng thực hiện các công việc được cải thiện cũng như đạt kết quả tốt hơn
Trang 292.1.4 Giao dịch điện tử
Giao dịch điện tử được hiểu một cách đơn giản là hình thức giao dịch mà đối
tượng không gặp gỡ trực tiếp với nhau Các thông tin cần trao đổi giữa các bên được thực hiện thông qua các phương tiện điện tử, chẳng hạn mạng Internet… Những thông điệp đó có giá trị pháp lý giống như những thông điệp trong giao dịch trực tiếp hàng ngày Đây là hình thức giao dịch hiện đại, tất yếu trong điều kiện nền kinh tế tri thức với sự hỗ trợ đắc lực của những thành tựu công nghệ thông tin
Giao dịch điện tử đem lại nhiều lợi ích, giúp cho các bên giao dịch tiết kiệm
được rất nhiều thời gian, tiền bạc cho việc đi lại, tổ chức các cuộc hội thảo, trao đổi, các giao dịch hay các bước giải quyết thủ tục hành chính trực tiếp Mọi hoạt động đàm phán, ký kết hay các thủ tục cần giải quyết có thể được thực hiện trên các phương tiện điện tử một cách nhanh chóng và dễ dàng
Mặc dù giao dịch điện tử có nhiều tiện lợi, hiệu quả, song để hình thức giao dịch này trở nên quen thuộc thì không hề đơn giản Khi đưa giao dịch điện tử vào các lĩnh vực của đời sống xã hội, chúng ta sẽ phải đối mặt với nhiều vấn đề rủi ro, phức tạp, nguy hiểm, chẳng hạn như mức độ không an toàn trong quá trình thực hiện giao dịch do sự tấn công của Hacker, các loại virus, …, các dữ liệu, những thông tin bí mật của các cơ quan, đơn vị có thể bị phá hoại, thay đổi Những quy ước về hóa đơn, chứng từ, chữ ký có thể bị mạo nhận, giả mạo, ….Do vậy, để hình thức giao dịch này trở nên phổ biến, mang lại hiệu quả, đòi hỏi các nhà quản lý, những người chịu trách nhiệm thực hiện các hoạt động giao dịch điện tử phải có kiến thức chuyên môn về tin học, hiểu và khắc phục được những sự cố phát sinh trong quá trình giao dịch
2.1.5 Thông điệp điện tử
Thông điệp dữ liệu là thông tin được tạo ra, được gửi đi, được nhận và được lưu trữ bằng phương tiện điện tử
Thông điệp dữ liệu được thể hiện dưới hình thức trao đổi dữ liệu điện tử, chứng từ điện tử, thư điện tử, điện tín, điện báo, fax và các hình thức tương tự khác Trường hợp pháp luật yêu cầu thông tin phải được thể hiện bằng văn bản thì thông
Trang 30điệp dữ liệu được xem là đáp ứng yêu cầu nếu thông tin chứa trong thông điệp đó
có thể truy cập và sử dụng được để tham chiếu khi cần thiết
Thông điệp dữ liệu có giá trị như văn bản gốc khi đáp ứng được các điều kiện:
- Nội dung của thông điệp dữ liệu được bảo đảm toàn vẹn (nội dung đó chưa
bị thay đổi, trừ những thay đổi về hình thức phát sinh trong quá trình gửi, lưu trữ hoặc hiện thị) kể từ khi được khởi tạo lần đầu tiên dưới dạng một thông điệp dữ liệu hoàn chỉnh
- Nội dung của thông điệp dữ liệu có thể truy cập và sử dụng được dưới dạng hoàn chỉnh khi cần thiết
Thông điệp dữ liệu không bị phủ nhận giá trị đúng làm chứng cứ và nội dung thông điệp dữ liệu được lưu trong chính khuôn dạng mà nó được khởi tạo, gửi, nhận hoặc trong khuôn dạng cho phép hiển thị chính xác nội dung thông điệp đó
2.1.6 Chứng thực điện tử
Chứng thực điện tử là hoạt động chứng thực danh tính của những người tham
gia vào việc gửi và nhận thông tin qua mạng, đồng thời cung cấp cho họ những công cụ, những dịch vụ cần thiết để thực hiện việc bảo mật thông tin, chứng thực nguồn gốc và nội dung thông tin Hạ tầng công nghệ của chứng thực điện tử là cơ
sở hạ tầng khóa công khai (PKI – Public Key Infrastructure) với nền tảng là hệ mật
mã khóa công khai và chữ ký số
Người sử dụng dịch vụ chứng thực điện tử sẽ được các cơ quan cung cấp
dịch vụ chứng thực điện tử (CA – Certification Authority) cung cấp cho chứng chỉ
số và phải được gán một cặp khóa mã (khóa bí mật và khóa công khai) để có thể
tham gia sử dụng chứng thực điện tử trong các ứng dụng mà mình tham gia
Chứng thực điện tử có các chức năng chính sau: Tính xác thực, tính bảo mật, tính toàn vẹn dữ liệu, tính không chối bỏ Chính vì có những tính năng như vậy chứng thực điện tử được sử dụng trong khá nhiều ứng dụng như: Ký vào tài liệu
điện tử, thư điện tử bảo đảm, thương mại điện tử, bảo vệ mạng WLAN (Wireless
Trang 31Lan Area Network), bảo đảm an toàn cho các dịch vụ Web, bảo đảm an toàn cho Web Server
Nhà cung cấp dịch vụ chứng thực chữ ký số sẽ cấp cho cá nhân, tổ chức có
đủ điều kiện an toàn và có nhu cầu sử dụng chữ ký số: một chứng thư số tương đương như chứng minh nhân dân hay giấy xác nhận sự tồn tại của cơ quan, tổ chức
đó trên môi trường mạng Trong chứng thư số có chứa chìa khóa công khai của tổ
chức, cá nhân và được duy trì tin cậy trên cơ sở dữ liệu của nhà cung cấp dịch vụ chứng thực, do vậy người nhận có thể truy cập vào cơ sở dữ liệu đó để xác minh xem đúng là có người đó hay không
CASC-CA là Nhà cung cấp chứng chỉ số đầu tiên tại Việt Nam, với các giải pháp:
+ Chứng chỉ số cá nhân CASC-CA: Giúp mã hóa thông tin, bảo mật e-mail,
sử dụng chữ ký điện tử cá nhân, chứng thực với một web server thông qua giao thức bảo mật SSL (Secure Socket Layer)
+ Chứng chỉ số SSL server VASC-CA: Giúp bảo mật hoạt động trao đổi thông
tin trên website, xác thực người dùng bằng SSL, xác minh chính thống chống giả mạo, cho phép thanh toán bằng thẻ tín dụng, ngăn chặn hacker dò mật khẩu
+ Chứng chỉ số Nhà phát triển phần mềm VASC-CA: Cho phép nhà phát triển
phần mềm ký vào các chương trình applet, scipt, Java, EXE, CAB và DLL, đảm bảo tính hợp pháp của sản phẩm, cho phép người sử dụng nhận diện được nhà cung cấp, phát hiện được sự thay đổi của chương trình (do hỏng, bị crack hay virus phá hoại)
2.1.7 Lịch sử hình thành và phát triển của chữ ký điện tử
Trên thế giới
- Con người đã sử dụng các hợp đồng điện tử từ hơn 100 năm nay với việc
sử dụng mã Morse và điện tín Vào năm 1889, tòa án tối cao bang New Hampshire (Hoa Kỳ) đã phê chuẩn tính hiệu lực của chữ ký điện tử Tuy nhiên,
chỉ với những phát triển của khoa học kỹ thuật gần đây thì chữ ký điện tử mới đi
vào cuộc sống một cách rộng rãi Vào thập kỷ 1980, các công ty và một số cá nhân bắt đầu sử dụng máy fax để truyền đi các tài liệu quan trọng Mặc dù chữ
Trang 32ký trên các tài liệu này vẫn thể hiện trên giấy nhưng quá trình truyền và nhận chúng hoàn toàn dựa trên tín hiệu điện tử
- Tại Mỹ, vào tháng 6/2000, cựu tổng thống Bill Clinton đã phê chuẩn một điều luật công nhận giá trị pháp lý của chữ ký điện tử
- Đầu tháng 8/2001, Liên minh Châu Âu chính thức chấp thuận chữ ký điện tử
- Nhật Bản đã ban hành Luật về chữ ký điện tử và các dịch vụ chứng thực
- Hàn Quốc: Ban hành luật chữ ký điện tử vào năm 1999 và sửa đổi vào năm
2001 Hiện nay Hàn Quốc có 6 CA được cấp giấy phép hoạt động
- Hồng Kông ban hành sắc lệnh về giao dịch điện tử vào năm 2000
- Đài Loan ban hành luật chữ ký số vào năm 2001
- Malaysia ban hành luật chữ ký số vào năm 1997, hiện nay có 3CA được cấp phép hoạt động
- Singapore ban hành luật giao dịch điện tử vào năm 1998 và quy định về giao dịch điện tử cho các CA vào năm 1999
- Thái Lan ban hành luật giao dịch điện tử năm 2001
- Trung Quốc: Từ tháng 4/2003 Trung Quốc đã bắt tay xây dựng luật chữ
ký điện tử Quốc vụ viện Trung Quốc đã chính thức thông qua luật chữ ký điện tử
Văn bản pháp lý được thông qua cho phép các doanh nghiệp Trung Quốc sử dụng
chữ ký số thay thế chữ ký viết tay truyền thống trong các cuộc giao dịch tiến hành
trực tuyến
Hiện nay, chữ ký điện tử có thể bao hàm các cam kết gửi bằng Email, nhập
các số định dạng cá nhân (PIN) vào các máy ATM, ký bằng bút điện tử với thiết bị màn hình cảm ứng tại các quầy tính tiền, chấp nhận các điều khoản người dùng khi cài đặt phần mềm máy tính, ký các hợp đồng điện tử online, …
Tại Việt Nam
Ở Việt Nam, một số đơn vị kho bạc, ngân hàng, thương mại đã ứng dụng thử
nghiệm chữ ký số trong các giao dịch nội bộ Trên thực tế, Việt Nam đang ở trong
giai đoạn xây dựng hành lang pháp lý và mô hình tổ chức triển khai chính thức công cộng
Trang 33Một số địa phương cũng đã thử nghiệm việc ứng dụng chữ ký điện tử vào
trong các hoạt động của mình
+ Mô hình “ký điện tử mã hóa dữ liệu và khóa thông minh USK” do Sở Khoa
học công nghệ Đồng Nai thực hiện đã đoạt giải ba tại hội thi Sáng tạo kỹ thuật toàn
quốc ViFotech 2005 Mô hình “ký điện tử mã hóa dữ liệu và khóa thông minh USK” gồm 2 phần: phần mềm, ứng dụng chương trình EncryptSign, với các chức năng:
Ký, kiểm tra chữ ký, mã hóa và giải mã tất cả các tập tin dù ở bất cứ định dạng nào; phần cứng là khóa thông minh USK có thể tích hợp chức năng bảo mật và chữ ký điện tử
+ Từ ngày 20/9/2006 Sở Bưu chính - Viễn thông thành phố Hồ Chí Minh sử dụng chữ ký số trong giao dịch, trở thành cơ quan Nhà nước đầu tiên tại thành phố
sử dụng chữ ký điện tử đối với các văn bản số
Trong luật giao dịch điện tử của Việt Nam do Quốc hội nước Cộng hòa xã
hội chủ nghĩa Việt Nam, kỳ hợp thứ 8 – Khóa IX thông qua ngày 29 tháng 11 năm
2006 có điều chỉnh chung về chữ ký điện tử Tuy nhiên, trong các loại chữ ký điện
tử thì chữ ký số đang được sử dụng phổ biến trên thế giới cùng với những luật quy
định chi tiết Vì vậy, nghị định 26/2007/NĐ-CP ngày 15 tháng 2 năm 2007 chỉ quy
định chi tiết về chữ ký số và dịch vụ chứng thực chữ ký số
Bộ Tài chính tổ chức Tọa đàm “Sử dụng hệ thống chứng thực chữ ký số công cộng trong các dịch vụ hành chính công điện tử của ngành Tài chính” vào
ngày 17/9/2010 tại khách sạn Hilton Hanoi (số 1 Lê Thánh Tông, Hà Nội)
Trong lĩnh vực Chính phủ điện tử, Chính phủ cũng đã quyết tâm triển khai các dịch vụ hành chính công điện tử sử dụng chữ ký số Dự thảo “Chương trình Quốc gia về ứng dụng công nghệ thông tin trong hoạt động của cơ quan nhà nước năm 2015, tầm nhìn đến năm 2020” đặt ra mục tiêu triển khai diện rộng hệ thống G2B (Government to Business) cung cấp dịch vụ công trực tuyến: Hải quan điện tử, đăng kí kinh doanh
Trang 34Hình 2.1: Ứng dụng chữ ký số trong quá trình cấp giấy phép lái xe mới
Chúng ta mới ban hành “Luật giao dịch điện tử” và mãi 2 năm sau đó mới có quy định cụ thể về việc thành lập các nhà cung cấp dịch vụ CA (trong đó có FPT-
CA được MIC cấp phép tháng 7/2010)
Cơ sở pháp lý trong việc sử dụng chữ ký số và chứng thư số đã được nhà nước quan tâm hoàn thiện thông qua các nghị định 26/2007/NĐ-CP ngày 15/02/2007, 106/2011/NĐ-CP ngày 23/11/2011, 170/2013/NĐ-CP ngày 13/11/2013
và các hướng dẫn cụ thể theo chuyên ngành của các cơ quan chức năng cấp Bộ Như vậy việc quyết định phạm vi, mức độ sử dụng chữ ký số là tuỳ thuộc vào các điều kiện, năng lực, cơ sở hạ tầng của các tổ chức nhằm tận dụng tối đa lợi ích mà chữ ký số mang lại
Dịch vụ E-Signature với những hợp đồng quan trọng hay giao dịch lớn có thể đảm bảo cho người dùng, tạo được lòng tin cho đối tác cũng như tạo được sự hài lòng nơi khách hàng, bởi vì tài liệu được ký kết bảo mật tốt hơn, và quá trình ký kết cũng dễ dàng, hiệu quả hơn
Công nghệ E-Signature vẫn đang phát triển Trong nước ta, mới chỉ có ngành ngân hàng và kế toán là đối tượng chính sử dụng chữ ký điện tử Nhưng trong thời gian tới, rất có thể chữ ký điển tử sẽ phổ biến hơn trong đời sống, vừa trong doanh nghiệp lẫn người dùng cá nhân
Trang 352.2 Trình bày các thuật toán, các hàm
2.2.1 Thuật toán Euclide - Tìm UCLN của hai số nguyên
2.2.2 Thuật toán Euclide mở rộng
Giải thuật Euclide mở rộng kết hợp quá trình tìm gcd(a, b) để tìm cặp số x, y thoả mãn phương trình ax + by = gcd(a, b) [9][10]
Trang 36Ví dụ:
Với a = 100, b = 35, ta có gcd(a, b) = 5
Tìm x, y sao cho ax + by = gcd(a, b)
Các giá trị khởi tạo: i = 0, r-1 = a, r0 = b, x-1 = 1, y-1 = 0, x0 = 0, y0 = 1 Trước tiên ta tính:
Thuật toán này dùng để xác định phần tử nghịch đảo của a theo modulo n là
a-1 modulo n [9][10], được sử dụng trong quá trình tạo khoá và giải mã của hệ mã
khoá công khai
Trang 37cho ax + ny = d, trong đó d = gcd(a, n)
(2) Nếu d > 1 thì a-1 mod n không tồn tại, ngược lại x = a-1 mod n
2.2.4 Thuật toán Rabin-Miller
Cho n ≥ 3 lẻ, thuật toán Rabin-Miler [3][9] xác định n có phải là số nguyên
Trang 38(3) If (b = am mod n = 1) Then Return (n là số nguyên tố)
Vậy n = 221 không phải là số nguyên tố
2.2.5 Thuật toán tính Xp mod n
Cho x Z n , và một số nguyên p, 0 ≤ p < n có thể biểu diễn nhị phân