Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
LỜI CẢM ƠN
Trang 1
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
MỤC LỤC
LỜI CẢM ƠN .............................................................................................................1
DANH MỤC TỪ VIẾT TẮT......................................................................................4
DANH MỤC HÌNH VẼ ..............................................................................................5
TÓM TẮT ĐỒ ÁN......................................................................................................6
PHẦN 1: MỞ ĐẦU .....................................................................................................7
1.
Lý do chọn đề tài: ............................................................................................7
2.
Mục đích: ........................................................................................................7
3.
Phạm vi nghiên cứu:........................................................................................7
PHẦN 2: TỔNG QUAN .............................................................................................8
PHẦN 3: NỘI DUNG ĐỀ TÀI ...................................................................................9
1.
Lịch sử chữ ký điện tử: ...................................................................................9
2.
Chữ ký điện tử: ..............................................................................................11
2.1.
Sơ lược chữ ký điện tử: .........................................................................11
2.2.
Cách thức hoạt động của chữ ký điện tử: .............................................12
2.2.1.
Nguyên tắc mã hóa công khai: .......................................................12
2.2.2.
Ký chữ ký điện tử vào dữ liệu: ......................................................13
2.3.
3.
4.
Chữ ký số: .............................................................................................16
Thuật toán mã hóa công khai RSA: ..............................................................17
3.1.
Mô tả sơ lược: .......................................................................................17
3.2.
Tạo khóa: ..............................................................................................17
3.3.
Độ an toàn của RSA: ............................................................................18
Sơ lược về hàm băm MD5: ...........................................................................19
4.1.
Sơ lược: .................................................................................................19
Trang 2
Đề tài: Tìm hiểu về chữ ký điện tử
5.
Nhóm 11
4.2.
Tóm tắt giải thuật: .................................................................................20
4.3.
Khả năng bị tấn công: ...........................................................................20
Demo đơn giản tạo và gửi chữ ký điện tử: ....................................................21
PHẦN 4: KẾT LUẬN ...............................................................................................31
DANH MỤC TÀI LIỆU THAM KHẢO ..................................................................32
Trang 3
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
DANH MỤC TỪ VIẾT TẮT
-
MD5: Message-Digest algorithm 5.
-
RSA: Tên thuật toán được lấy từ ba chữ cái đầu của ba nhà toán học lần đầu
tiên mô tả thuật toán trên vào năm 1977 Ron Rivest, Adi Shamir và Len
Adleman.
-
CA: Certificate Authority - ủy quyền chứng chỉ.
-
Demo: Demonstration
Trang 4
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
DANH MỤC HÌNH VẼ
Hình 1: Nhận tài liệu có sử dụng chữ ký điện tử ......................................................13
Hình 2: Gửi tài liệu có sử dụng chữ ký điện tử .........................................................13
Hình 3: Tóm tắt sơ đồ tạo, kiểm tra và xác thực chữ ký điện tử ...............................14
Hình 4: Giao diện demo. ...........................................................................................21
Hình 5: File bên B muốn gửi cho bên A. ..................................................................22
Hình 6: Tạo khóa bằng demo ....................................................................................22
Hình 7: Lưu public key .............................................................................................23
Hình 8: Lưu private key ............................................................................................23
Hình 9: Tải file cần mã hóa. ......................................................................................24
Hình 10: Chọn khóa public key do bên B nắm giữ ...................................................25
Hình 11: Bắt đầu mã hóa tài liệu...............................................................................26
Hình 12: Lưu file đã mã hóa .....................................................................................26
Hình 13: Tải file cần giải mã. ...................................................................................27
Hình 14: Tải khóa private key...................................................................................28
Hình 15: Giải mã tài liệu ...........................................................................................28
Hình 16: Kết quả .......................................................................................................29
Hình 17: Lỗi không đúng khóa hoặc dữ liệu bị thay đổi. .........................................30
Trang 5
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
TÓM TẮT ĐỒ ÁN
Qua quá trình tìm hiểu đề tài. Nhóm chúng em đã dẫn đến quyết định nội dung
chính cần làm nổi bật tại đề tài được giao. Tại đây chúng em sẽ làm rõ hai vấn đề
chính đặt ra cho đề tài “Tìm hiểu về chữ ký điện tử” là: Chữ ký điện tử là cái gì và nó
hoạt động như thế nào. Ngoài ra nhóm chúng em còn nêu ra thêm một vấn đề nhỏ
mang tính tham khảo là thuật toán mã hóa công khai RSA và hàm băm MD5.
Đồ án sẽ có bốn phần lớn là Mở đầu, Tổng quan, Nội dung đề tài và Kết luận.
Trong đó phần Nội dung đề tài sẽ chứa tất cả nội dung nhóm chúng em đã tìm hiểu
được về chữ ký điện tử. Phần Nội dung đề tài sẽ được chia làm năm tiểu mục gồm có
Lịch sử chữ ký điện tử, Chữ ký điện tử, Thuật toán mã hóa công khai RSA, Sơ lược
về hàm băm MD5 và Demo đơn giản tạo và gửi chữ ký điện tử. Về phần RSA và
MD5 nhóm chúng em chỉ nêu một cách khái quát. Trọng tâm vẫn là Chữ ký điện tử
và Demo đơn giản tạo và gửi chữ ký điện tử.
Phần chữ ký điện tử: Nêu rõ ràng và chi tiết chữ ký điện tử là gì, cách thức hoạt
động, nguyên tắc mã hóa công khai, quá trình ký chữ ký điện tử vào văn bản. Ngoài
ra còn có hình minh họa trực quan về cách thức hoạt động.
Phần Demo đơn giản tạo và gửi chữ ký điện tử: Tại đây, nhóm chúng em chạy
demo minh họa cách tạo chữ ký điện tử, ký chữ ký điện tử lên văn bản, thực hiện các
công đoạn mã hóa và giải mã, hình ảnh minh họa một cách trực quan, chi tiết, dễ hiểu.
Trang 6
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
PHẦN 1: MỞ ĐẦU
1. Lý do chọn đề tài:
Ngày nay, ứng dụng của công nghệ thông tin vào đời sống là rất phổ biến. Công
nghệ thông tin được ứng dụng ở khắp các lĩnh vực như kinh tế, chính trị, khoa học,
quân sự, giải trí,… Trong đó, yếu tố cực kỳ quan trong khi làm việc là truyền thông.
Để có thể gửi và nhận tài liệu, báo cáo, thư tín hay trao đổi bất kỳ hoạt động gì, chúng
ta đều cần đến truyền thông, cùng với việc gửi và nhận dữ liệu, để biết dữ liệu mà
chúng ta nhận được do ai gửi, và chứng thực được điều đó là vấn đề khá khó khăn.
Đề tài “tìm hiểu về chữ ký điện tử ” mà nhóm chúng em thực hiện sẽ làm rõ điều này.
Nhận thấy được tầm ảnh hưởng và ứng dụng ngày càng lớn về công nghệ thông
tin vào đời sống thực tiễn, trong vài năm trở lại đây, chữ ký điện tử được biết đến ở
Việt Nam. Đối với nước ta, chữ ký điện tử vẫn còn khá mới mẻ, chưa có nhiều tài
liệu công nghệ thông tin nói về lĩnh vực này, cùng với đó là tiềm năng của chữ ký
điện tử có thể được ứng dụng rất phổ biến tại các doanh nghiệp, nhà nước hay cá
nhân, tập thể. Vì vậy nhóm chúng em chọn đề tài này để viết đồ án môn học. Đồ án
nhóm chúng em viết ra vừa là báo cáo nghiên cứu của nhóm, cũng là một tài liệu
công nghệ thông tin hữu ích để mọi người tham khảo.
2. Mục đích:
Tìm hiểu về chữ ký điện tử, sự ra đời, cách hoạt động và bảo mật.
3. Phạm vi nghiên cứu:
Nghiên cứu về chữ ký điện tử, hệ mã hóa để tạo ra chữ ký điện tử, điển hình là hệ
mã hóa RSA, hàm băm.
Trang 7
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
PHẦN 2: TỔNG QUAN
Đối với nước ta, chữ ký điện tử vẫn còn khá mới mẻ, nhưng trên thế giới (các
nước phát triển) thì chữ ký điện tử đã ra đời và đưa vào sử dụng từ lâu. Vậy nên, các
tác giả nước ngoài cũng đã có nhiều bài viết nghiên cứu đầy đủ về chữ ký điện tử,
một số tác giả trong nước, chủ yếu là những sinh viên làm luận án tốt nghiệp cũng đã
có những bài viết nghiên cứu khá kỹ càng về lĩnh vực này. Tuy vậy để tìm được tài
liệu trong nước nói về vấn đề chữ ký điện tử cũng khá khó khăn.
Cũng do chữ ký điện tử chưa phổ biến tại nước ta, nên mọi người chưa hiểu rõ về
nó. Vì vậy bài viết này nhóm chúng em sẽ làm rõ hơn về chữ ký điện tử là gì, chữ ký
điện tử hoạt động như thế nào, bảo mật và xác minh như thế nào và làm sao để tạo ra
chữ ký điện tử.
Trang 8
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
PHẦN 3: NỘI DUNG ĐỀ TÀI
1. Lịch sử chữ ký điện tử:
Nhu cầu về bảo đảm an toàn thông tin đã xuất hiện từ rất sớm, 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ừ. Trải qua thời gian, con người đã biết dung mật
mã để giữ bí mật thông tin khi trao đổi với nhau trong nhiều lĩnh vực, đặc biệt là quân
sự, chính trị, ngoại giao.
Từ đầu thế kỷ 20, những thập niên đầu của thế kỷ. Nền công nghệ thông tin bắt
đầu phát triển, kéo theo đó là việc xử lý mật mã từ thủ công dần dần được công nghệ
hóa. Thay vì soạn thảo các văn bản bằng tay, con người bắt đầu sử dụng ngôn ngữ ảo
để viết. Ngôn ngữ được chuyển thành các tín hiệu nhị phân (các bit), và việc biến đổi
để giải mã trở thành biến đổi trên các bit bằng các hàm số toán học. Và từ đó các
thuật toán tham gia vào quá trình tạo và giải mật mã. Nền công nghệ thông tin ngày
càng phát triển mạnh, nhu cầu trao đổi thông tin nói chung, các thông tin quan trong
cần được bảo mật nói riêng trở thành tất yếu. Vậy nên việc xác nhận và chứng thực
người gửi thông tin là rất quan trọng. Khái niệm chữ ký điện tử ra đời.
Năm 1978, Rivest, Shamir và Adleman tìm ra một hệ mật mã khóa công khai 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 một 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ố. Hệ mã hóa này được gọi
là RSA. RSA ra đời đánh dấu một bước ngoặt lớn về bảo mật và chứng thực thông
tin. Từ đó, mật mã và an toàn thông tin trở thành một lĩnh vực khoa học phát triển
nhanh chóng.
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.
Trang 9
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
Vào thập niên 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ữ ký 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ử.
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…
Trang 10
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
2. Chữ ký điện tử:
2.1. Sơ lược chữ ký điện tử:
Chữ ký là khái niệm chắc hẳn ai cũng biết. Trong đời sống, chúng ta thường xuyên
phải sử dụng chữ ký để xác nhận những văn bản, tài liệu. Trong các doanh nghiệp
hay nhà nước thì có thể dùng thêm con dấu. Tuy được sử dụng rộng rãi nhưng chữ
ký vẫn có một số mặt hạn chế:
-
Mất nhiều thời gian nếu sử dụng cho hang loạt những văn bản, tài liệu cùng
một lúc.
-
Việc xác minh chữ ký khó khăn và tốn nhiều thời gian.
-
Có thể dễ bị làm giả
Chữ ký thông thường có rất nhiều mặt hạn chế, mức độ bảo mật không không cao.
Vì vậy cần có phương pháp để khắc phục những mặt hạn chế nêu trên, giúp nâng cao
tính bảo mật và an toàn. Chữ ký điện tử ra đời trong thời buổi công nghệ thông tin
đang phát triển chóng mặt. Người ta có thể sử dụng chữ ký điện tử để ký vào các văn
bản, tài liệu số hoàn toàn bằng thiết bị điện tử, giúp việc xác minh nhanh chóng hơn
và đặc biệt là tính xác thực cao hơn, an toàn hơn vì rất khó làm giả.
Chữ ký điện tử có các ưu điểm vượt trội so với chữ ký thông thường:
-
Bảo mật: chữ ký điện tử có khả năng bảo mật cao, chìa khóa được bảo mật
với tất cả mọi người trừ những người được phép biết.
-
Toàn vẹn thông tin: các tài liệu, thông tin được ký bằng chữ ký điện tử
được bảo vệ một cách toàn vẹn, không thể thay đổi thông tin khi đã được
ký, nếu thông tin đã bị thay đổi thì thông tin đó lập tức bị loại bỏ.
-
Xác nhận thực thể: chữ ký điện tử sẽ xác nhận thực thể đã ký vào thông tin
một cách chính xác và tin cậy.
Chữ ký điện tử là thông tin đi kèm theo dữ liệu (văn bản, hình ảnh, video...) nhằm
mục đích xác định người chủ của dữ liệu đó. Chữ ký điện tử đi kèm với các thông tin
chủ sở hữu và một số thông tin cần thiết khác sẽ trở thành Chứng chỉ điện tử.
Trang 11
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
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í dụ văn bản, ảnh, video, ... dữ liệu đó có bị thay đổi hay không.
2.2. Cách thức hoạt động của chữ ký điện tử:
Trong thế giới số, có 3 cách để xác thực một người hoặc mức độ tin cậy của một
thông tin trên máy tính. Một là Pass Card (Thẻ thông hành) mà ở nước ta hiện nay
chưa phổ biến. Hai là Password, cách này sử dụng tên truy nhập (User Name) và mật
khẩu (Password) cung cấp cho việc đăng nhập xác thực thông tin. Thứ ba, dùng
Digital Signature (chữ ký điện tử).
2.2.1. Nguyên tắc mã hóa công khai:
Chữ ký điện tử hoạt động trên nguyên tắc mã hóa công khai. Hệ thống này bao
gồm hai khóa là khóa bí mật (Private Key) và khóa công khai (Public Key). Mỗi chủ
thể khi tạo chữ ký điện tử đều có một cặp khóa như vậy. Chủ thể giữ khóa bí mật,
công bố cho mọi người khóa công khai. Nguyên tắc của hệ thống mã hóa này là: nếu
mã hóa bằng khóa bí mật thì chỉ có khóa công khai mới giải mã đúng được và ngược
lại.
Ví dụ: Bản thân chúng ta là người được cấp cho hai khóa điện tử Public Key và
Private Key như đã nêu ở trên. Chúng ta phải giữ gìn Private Key cẩn thận như giữ
chiếc chìa khóa nhà của mình. Khi có một người dùng Public Key để mã hóa một bức
thư rồi gửi cho chúng ta, chúng ta phải dùng Private Key để giải mã thì mới đọc được
bức thư này. Đồng nghiệp hay người thân của chúng ta dù có biết bức thư này cũng
chịu vì không tài nào giải mã được. Dùng Private Key, cùng với một phần mềm phù
hợp, chúng ta có thể ký tên lên một văn bản hay tập tin dữ liệu nào đó. Chữ ký điện
tử này tương tự như một con tem độc nhất vô nhị dán lên văn bản, khó có thể giả mạo
được.
Khi nhận dữ liệu: sử dụng chữ ký điện tử để khách thể đảm bảo đúng chủ thể
nhận và chỉ duy nhất chủ thể có thể xem được tài liệu do cá thể gửi do chỉ có Private
Key của chủ thể mới có thể giải mã được dữ liệu này.
Trang 12
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
Hình 1: Nhận tài liệu có sử dụng chữ ký điện tử
Khi gửi dữ liệu: sử dụng chữ ký điện tử để khách thể có thể xác minh dữ liệu đó
do ai gửi, vì dữ liệu mà Public Key giải mã được chỉ có thể do chủ thể gửi mà thôi.
Hình 2: Gửi tài liệu có sử dụng chữ ký điện tử
2.2.2. Ký chữ ký điện tử vào dữ liệu:
Các bước để thực hiện việc ký chữ ký điện tử vào thông tin để gửi :
-
B1: Băm dữ liệu (dữ liệu được xử lý bởi hàm băm trở thành một bản tóm lược).
Trang 13
Đề tài: Tìm hiểu về chữ ký điện tử
-
B2: Mã hóa (bản tóm lược được mã hóa bởi khóa bí mật).
-
B3: Gắn chữ ký số với thông điệp dữ liệu.
Nhóm 11
Hình 3: Tóm tắt sơ đồ tạo, kiểm tra và xác thực chữ ký điện tử
Một ví dụ để làm rõ cách thức để sử dụng chữ ký điện tử:
Bên A sử dụng chữ ký điện tử với khóa bí mật là Apv, khóa công khai là Apl (Apb
được đưa cho bên B biết).
Bên B sử dụng chữ ký điện tử với khóa bí mật là Bpv, khóa công khai là Bpl (Bpl
được đưa cho bên A biết).
Giả sử bên A có tài liệu cần bên B ký, trước tiên, bên A sẽ thực hiện băm tài liệu
thành một bản tóm lược X (chúng ta không thể đọc được X) sau đó dùng Apv ký lên
X được tài liệu M, tài liệu M được gửi cho bên B. Để bên B xác minh được tài liệu
M do chính bên A gửi, bên B dùng Apl giải mã M và thu được tài liệu bên A gửi.
Tiếp theo đó, bên B cũng thực hiện băm tài liệu thành một bản tóm lược Y, sau đó
Trang 14
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
dùng Bpv ký lên Y để được tài liệu N và gửi N cho bên A. Để bên A xác minh được
tài liệu N do chính bên B gửi, bên A sử dụng Bpl để giải mã tài liệu N và thu được
tài liệu đã được bên B ký.
Một số trường hợp xảy ra với chữ ký điện tử, cũng giống như các trường hợp xảy
ra với chữ ký truyền thống. Ví dụ: Khi tài liệu TL của A bị thay đổi (dù chỉ một ký
tự, một dấu chấm, hay một ký hiệu bất kỳ), khi B xác nhận, anh ta sẽ thấy bản giải mã
khác với tài liệu TL của anh A. B sẽ kết luận rằng tài liệu đó đã bị thay đổi, không
phải là tài liệu anh A đã ký.
Trường hợp khác, nếu A để lộ khóa bí mật, nghĩa là văn bản tài liệu của A có thể
ký bởi người khác có khóa bí mật của A. Khi một ai đó xác nhận tài liệu được cho là
của A ký, chữ ký vẫn là hợp lệ, mặc dù không phải chính A ký. Như vậy, chữ ký của
A sẽ không còn giá trị pháp lý nữa. Do đó, việc giữ khóa bí mật là tuyệt đối quan
trọng trong hệ thống chữ ký điện tử.
Như vừa nêu trên, khi bên A để lộ mã khóa bí mật, thì bất kỳ ai có được mã khóa
bí mật của A cũng có thể ký vào những thông tin mà thông tin đó không phải do A
ký. Vậy làm thế nào để hạn chế việc giả dạng người ký khi khóa bí mật bị lộ (nhằm
hạn chế rủi ro khi chưa kịp thời thay chữ ký điện tử mới).
Có một giải pháp hữu hiệu giúp khắc phục vấn đề này. Đó là thông tin giữa A và
B sẽ được xác nhận bằng một bên trung gian mà A và B tin tưởng. Bên trung gian đó
là nhà cung cấp chứng chỉ số CA. CA có một chứng chỉ số của riêng mình, CA sẽ cấp
chứng chỉ số cho A và B cũng như những đối tượng khác. Chứng chỉ số sẽ giúp xác
minh đối tượng đang thực hiện giao dịch. Chứng chỉ số là hoàn toàn tin cậy.
Đây là giải pháp có thể dùng để khắc phục vấn đề mã khóa bí mật của bên A bị
lộ. Tức là khi gửi tài liệu đã được ký, bên A sẽ gửi cả chứng chỉ CA của mình để bên
B xác minh. Người khác tuy đã có được mã khóa bí mật của A nhưng sẽ không thể
thực hiện giao dịch nếu không có chứng chỉ số CA của bên A. Tuy vậy, việc cất giữ
Trang 15
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
vào bảo vệ khóa bí mật vẫn phải được đặt lên hang đầu để tránh những rủi ro khống
đáng có.
Cơ chế chữ ký điện tử và chứng chỉ số sử dụng các thuật toán mã hóa đảm bảo
không thể giả mạo CA để cấp chứng chỉ không hợp pháp, mọi chứng chỉ giả mạo đều
có thể dễ dàng bị phát hiện.
2.3. Chữ ký số:
Chữ ký số cũng chính là chữ ký điện tử, chữ ký số là tập con của chữ ký điện tử.
Do vậy, chúng ta có thể dùng định nghĩa chữ ký điện tử để định nghĩa chữ ký số.
Chữ ký số là thông tin đi kèm theo dữ liệu (văn bản, hình ảnh, video...) nhằm mục
đích xác định người chủ của dữ liệu đó.
Chữ ký số và chữ ký điện thử thường được dùng thay thế cho nhau tuy không
chính xác tuyệt đối.
Nói chung, chữ ký số là khái niệm dùng mật mã để mã hóa xác định chủ của văn
bản. Còn chữ ký điện tử là một khái niệm chung chỉ tất cả các phương pháp mã hóa
mà không nhất thiết phải là mật mã và mục đích chung vẫn là xác định người chủ của
văn bản.
Trang 16
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
3. Thuật toán mã hóa công khai RSA:
Trong mật mã học, RSA là một thuật toán mật 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.
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
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.
3.1. Mô tả sơ lược:
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 (bí mật) mới có thể giải mã được.
Nhìn vào mô tả khái quát về thuật toán RSA, chúng ta thấy cách thức mã hóa
tương tự như chữ ký điện tử. Vậy nên đây là thuật toán điển hình để tạo ra chữ ký
điện tử.
3.2. 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 (dùng phép kiểm tra nguyên tố cho phép
loại bỏ hầu hết các hợp số).
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à kẻ tấn
công có thể lợi dụng để biết thêm thông tin về việc lựa chọn (cần dùng các bộ tạo số
ngẫu nhiên tốt). 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 (không có kiểu mẫu trong kết quả) 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. Nếu kẻ tấn công đoán
được mộ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.
Trang 17
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
Một điểm nữa cần nhấn mạnh là khóa bí mật d phải đủ lớn. 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. 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ũ.
Chúng ta cần tạo ra một cặp khóa Ký và Xác nhận theo các bước sau:
-
Bước 1: 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.
-
Bước2: Tính số hàm modulo của hệ thống: n= p*q.
-
Bước3: Tính: Giá trị hàm số Ơle: Φ(n)= (p-1)(q-1).
-
Bước4: Chọn một số tự nhiên khóa mã e sao cho (1 <= e <= Φ(n)) và là số
nguyên tố cùng nhau với Φ(n).
-
Bước5: Tính khóa giải mã d sao cho: d*e ≡ 1 (mod Φ(n)). Với 0<=d<= Φ(n)
Khi đó ta phân phát khóa công khai: KU= {e,n}.
Và giữ khóa bí mật: KR= {d,n}.
* Khóa công khai bao gồm:
-
n, môđun.
-
e, số mũ công khai.
* Khóa bí mật bao gồm:
-
n, môđun (xuất hiện cả trong khóa bí mật và khóa công khai).
-
d, số mũ bí mật.
3.3. Độ an toàn của RSA:
Độ 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.
Trang 18
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
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)(q1) và qua đó xác định d từ e. Hiện nay chưa có một phương pháp nào trên máy tính
được tìm ra để giải bài toán này trong thời gian đa thức, nhưng điều đó không có
nghĩa là thuật toán giải bài toán này không có.
Tại thời điểm năm 2005, số lớn nhất có thể được phân tích ra thừa số nguyên tố
có độ dài 663 bít với phương pháp phân tán trong khi khóa của RSA có độ dài từ
1024 tới 2048 bít. Một số chuyên gia cho rằng khóa 1024 bít có thể sớm bị phá vỡ
(cũng có nhiều người phản đối việc này). Với khóa 4096 bít thì hầu như không có
khả năng bị phá vỡ trong tương lai gần. Do đó, người ta thường cho rằng RSA đảm
bảo an toàn với điều kiện n được chọn đủ lớn. Nếu n có độ dài 256 bít hoặc ngắn hơn,
nó có thể bị phân tích trong vài giờ với máy tính cá nhân dùng các phần mềm có sẵn.
Nói chung, chúng ta không thể đảm bảo chắc chắn có một phương pháp mã hóa
nào không có thuật toán để giải, đặc biệt là thời kỳ công nghệ thông tin ngày càng
phát triển như hiện nay. Tuy nhiên trong tương lại gần, RSA đang và sẽ là thuật toán
mã hóa an toàn.
4. Sơ lược về hàm băm MD5:
4.1. Sơ lược:
Hàm băm là giải thuật nhằm sinh ra các giá trị băm tương ứng với mỗi khối dữ
liệu (có thể là một chuỗi kí tự, một đối tượng trong lập trình hướng đối tượng, v.v...)
Băm văn bản là một bước rất quan trọng khi ký chữ ký điện tử lên văn bản. Để có
thể băm văn bản chúng ta cần một hàm băm. Hiện nay, hàm băm phổ biến nhất là
MD5. MD5 (1991) là hàm băm được cải tiến từ MD4 (1990) do Ronald Rivest phát
minh ra. Trước đó ông cũng đã đưa ra sử dụng hàm băm MD2.
Trang 19
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
4.2. Tóm tắt giải thuật:
MD5 chuyển một đoạn thông tin chiều dài thay đổi thành một kết quả chiều dài
không đổi 128 bit. Mẩu tin đầu vào được chia thành từng đoạn 512 bit; mẩu tin sau
đó được độn sao cho chiều dài của nó chia chẵn cho 512. Công việc độn vào như sau:
đầu tiên một bit đơn, 1, được gắn vào cuối mẩu tin. Tiếp theo là một dãy các số 0 sao
cho chiều dài của mẩu tin lên tới 64 bit ít hơn so với bội số của 512. Những bit còn
lại được lấp đầy bằng một số nguyên 64-bit đại diện cho chiều dài của mẩu tin gốc.
Giải thuật MD5 chính hoạt động trên trạng thái 128-bit, được chia thành 4 từ 32bit, với ký hiệu A, B, C và D. Chúng được khởi tạo với những hằng số cố định. Giải
thuật chính sau đó sẽ xử lý các khối tin 512-bit, mỗi khối xác định một trạng thái.
Quá trình xử lý khối tin bao gômg bốn giai đoạn giống nhau, gọi là vòng; mỗi vòng
gồm có 16 tác vụ giống nhau dựa trên hàm phi tuyến F, cộng mô đun, và dịch trái.
4.3. Khả năng bị tấn công:
Vì MD5 chỉ dò qua dữ liệu một lần, nếu hai tiền tố với cùng bảng băm được xây
nên, thì cùng một hậu tố có thể cùng được thêm vào để khiến cho đụng độ dễ xảy ra.
Tức là hai dữ liệu vào X và Y hoàn toàn khác nhau nhưng có thể ra được một kết quả
băm giống nhau. Tuy nhiên xác suất để xảy ra điều này là khá nhỏ.
Vì những kỹ thuật tìm đụng độ hiện nay cho phép các trạng thái băm trước đó
được xác định một cách ngẫu nhiên, có thể tìm thấy xung đột đối với bất kỳ tiền tố
mong muốn nào; có nghĩa là, đối bất kỳ một chuỗi các ký tự X cho trước, hai tập tin
đụng độ có thể được xác định mà đều bắt đầu với X.
Tất cả những gì cần để tạo ra hai tập tin đụng độ là một tập tin mẫu, với một khối
dữ liệu 128 byte được xếp trên giới hạn 64 byte, có thể thay đổi tự do bằng giải thuật
tìm va chạm.
Vừa rồi, một số dự án đã tạo ra "bảng cầu vồng" MD5 có thể dễ dàng tiếp cận trực
tuyến, và có thể được dùng để dịch ngược nhiều bảng băm MD5 thành chuỗi mà có
thể đụng độ với đầu nhập gốc, thường dùng với mục đích bẻ mật khẩu.
Trang 20
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
5. Demo đơn giản tạo và gửi chữ ký điện tử:
Sau đây là một demo đơn giản được lập trình bằng ngôn ngữ C#.
Giao diện của demo như sau:
Hình 4: Giao diện demo.
Giả sử bên B muốn gửi cho bên A một file chứa nội dung “Nhom 11: Tim hieu
ve chu ky dien tu” với tên file là “Gui.txt” và muốn chỉ bên A mới có thể đọc được.
Vậy thì bên A sẽ tạo một chữ ký điện tử mà bên A là người giữ private key, và giao
cho bên B public key.
Trang 21
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
Hình 5: File bên B muốn gửi cho bên A.
Trước hết bên A sẽ tạo ra 2 khóa bằng cách chọn “Xử lý tài liệu” và chọn “Tạo
khóa”.
Hình 6: Tạo khóa bằng demo
Trang 22
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
Tiếp theo là lưu hai khóa được tạo lần lượt là public key và private key.
Hình 7: Lưu public key
Hình 8: Lưu private key
Trang 23
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
Bên A đã tạo được hai khóa, đến đây, bên A chỉ còn nắm giữ private key, còn
public key sẽ giao cho bên B nắm giữ. Bây giờ, bên B sẽ thực hiện mã hóa dữ liệu
cần gửi cho bên A.
Trước tiên, bên B sẽ chọn file cần mã hóa (file gửi đi) bằng cách chọn “Hệ thống”
và chọn “Tải file cần mã hóa”.
Hình 9: Tải file cần mã hóa.
Ở cửa sổ hiện lên, bên B chọn file cần gửi đi là file “Gui.txt”. Tiến đến là chọn
khóa public key mà bên B nắm giữ.
Trang 24
Đề tài: Tìm hiểu về chữ ký điện tử
Nhóm 11
Hình 10: Chọn khóa public key do bên B nắm giữ
Cửa sổ hiện lên, bên B chọn file khóa do B giữ là “public_key”. Đã nạp đủ file và
khóa, bây giờ có thể bắt đầu mã hóa. Chọn “Xử lý tài liệu” tiếp đến chọn “Mã hóa tài
liệu”. Như vậy chúng ta đã mã hóa xong tài liệu.
Trang 25