Nghiên cứu xây dựng chữ ký số và ứng dụng trong hóa đơn điện tử tại Công ty LDVC Quốc tế Hải VânNghiên cứu xây dựng chữ ký số và ứng dụng trong hóa đơn điện tử tại Công ty LDVC Quốc tế Hải VânNghiên cứu xây dựng chữ ký số và ứng dụng trong hóa đơn điện tử tại Công ty LDVC Quốc tế Hải VânNghiên cứu xây dựng chữ ký số và ứng dụng trong hóa đơn điện tử tại Công ty LDVC Quốc tế Hải VânNghiên cứu xây dựng chữ ký số và ứng dụng trong hóa đơn điện tử tại Công ty LDVC Quốc tế Hải VânNghiên cứu xây dựng chữ ký số và ứng dụng trong hóa đơn điện tử tại Công ty LDVC Quốc tế Hải Vân
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Trang 2HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Trang 3i
LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu của riêng tôi dưới sự hướng dẫn của TS Nguyễn Trung Kiên, kết quả đạt được trong luận văn là sản phẩm của riêng cá nhân, không sao chép lại của người khác Trong toàn bộ nội dung của luận văn, những điều được trình bày hoặc là của cá nhân hoặc là được tổng hợp từ nhiều nguồn tài liệu Tất cả các tài liệu tham khảo đều có xuất sứ rõ ràng và được trích dẫn hợp pháp Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công bố trong bất kỳ công trình nào khác
Hà Nội, ngày tháng năm 2016
Người cam đoan
Bùi Thu Hà
Trang 4Tôi xin chân thành cảm ơn các Thầy, Cô giáo trong Học viện Công nghệ Bưu chính Viễn thông đã luôn nhiệt tình giúp đỡ và tạo điều kiện tốt nhất cho tôi trong suốt quá trình học tập tại Học viện
Tôi xin gửi lời cảm ơn sâu sắc nhất tới gia đình, đồng nghiệp và bạn bè những người luôn bên cạnh, động viên, chia sẻ với tôi để hoàn thành khóa học này
Tôi xin chân thành cảm ơn !
Tác giả
Bùi Thu Hà
Trang 5iii
MỤC LỤC
LỜI CAM ĐOAN i
LỜI CẢM ƠN ii
DANH SÁCH CÁC HÌNH VẼ vi
PHẦN MỞ ĐẦU 1
CHƯƠNG 1: TỔNG QUAN VỀ CHỮ KÝ SỐ 4
1.1.Lịch sử hình thành và phát triển chữ ký số 4
1.2 Giới thiệu chung về chữ ký số 5
1.2.1 Chữ ký số 5
1.2.2 Khái niệm chung về chữ ký số 6
1.2.3.Thực trạng về chữ ký số hiện nay 8
1.3 Một số lược đồ chữ ký số 9
1.3.1 Lược đồ chữ ký RSA 9
1.3.2 Lược đồ chữ ký ElGamal 11
1.3.3.Lược đồ chữ ký DSS 12
1.3.4 Lược đồ chữ ký số Elliptic (ECDSA) 13
1.4.Một vài đánh giá của chữ ký số hiện nay 13
1.4.1.Về tính ưu điểm của chữ ký số 13
1.4.2.Về tính nhược điểm của chữ ký số 14
1.4.3 So sánh giữa Elliptic và RSA 15
1.4 Vai trò của chữ ký số trong ứng dụng hiện nay 18
1.5 Kết luận chương 1 19
CHƯƠNG 2 : HỆ MẬT MÃ VÀ CHỮ KÝ SỐ RSA 20
2.1 Cơ sở mật mã trong toán học 20
2.1.1.Sinh số nguyên tố và phân tích thừa số nguyên tố 20
2.1.2.Phép mũ hóa và khai căn module 21
2.2 Các hàm băm (Hash Function) 22
2.2.1.Giới thiệu về hàm băm 22
2.2.2.Một số giải thuật trong hàm băm 24
2.2.3.Tạo chữ ký số với hàm băm 30
2.3 Cơ sở hạ tầng khóa công khai PKI 31
2.3.1 Mô hình PKI 31
2.3.2 Các thành phần PKI 31
Trang 6iv
2.3.3 Ứng dụng của PKI trong ký số và bảo mật dữ liệu 32
2.3.3.1 Mã hóa 32
2.3.3.2.Chống giả mạo 32
2.3.3.3.Xác thực 33
2.3.3.4.Chống chối cãi nguồn gốc 33
2.3.3.5.Chữ ký điện tử 34
2.3.3.6.Bảo mật website 34
2.3.3.7.Code Signing 34
2.3.3.8.Chứng thực điện tử 35
2.4.Tổng quan chữ ký số RSA 36
2.4.1 Lịch sử chữ ký số RSA 36
2.4.2 Hoạt động của hệ mật mã RSA 36
2.4.3 Kiến trúc hệ mật mã RSA 38
2.4.4 Qui trình mã hoá và giải mã của RSA 40
2.4.5.Bảo mật RSA 42
2.5 Kết luận chương 2 43
CHƯƠNG 3 : XÂY DỰNG CHỮ KÝ SỐ TẠI CÔNG TY LDVC QT HẢI VÂN 44 3.1 Đặt vấn đề bài toán 44
3.2.1 Hiện trạng in biên lai/hóa đơn thu phí 44
3.2.2 Một số nguy cơ có thể mắc phải 44
3.2 Yêu cầu bài toán 45
3.3 Phân tích thiết kế hệ thống 46
3.3.1.Sơ đồ Usecase tổng quát 46
3.3.2.Biểu đồ tuần tự 48
3.4 Một số yêu cầu về phần cứng và phần mềm 50
3.5 Xây dựng một số hàm tạo khoá ứng dụng trong chữ ký số 51
3.6 Mô tả quy trình sử dụng phần mềm 53
3.7 Thực nghiệm chương trình chữ ký số 55
3.8 Kết quả và đánh giá 58
3.9 Kết luận chương 3 58
KẾT LUẬN 59
DANH MỤC CÁC TÀI LIỆU THAM KHẢO 60
Trang 7v
DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT
Viết tắt Tiếng Anh Tiếng Việt ATM Automated Teller Machine Máy giao dịch tự động
CA Certificate Authority Chứng thực số
DSA Digital Signature Algorithm Giải thuật chữ ký số
DSS Digital Signature Standard Chuẩn chữ ký số
ECDSA Elliptic Curve Digital Signature
Algorithm
Chữ ký số trên đường cong Elliptic
MAC Message Authentication Code Xác thực bản thông điệp
MD5 Message Digest Algorithm 5 Giải thuật mã hóa
PKI Public Key Infrastructure Hạ tầng khóa công khai
RSA Rivest, Shamir & Adleman
SHA Secure Hash Algorithm Giải thuật hàm băm
Trang 8vi
DANH SÁCH CÁC HÌNH VẼ
Hình 1.1:Dạng mật mã Morse đã dùng 4
Hình 1.2 Mô tả quy trình chữ ký số 6
Hình 1.3: Ví dụ về sơ đồ chữ ký RSA 11
Hình 1.4 – So sánh mức độ bảo mật giữa ECC với RSA/DSA 17
Hình 2.1: Minh họa làm việc của một hàm băm 23
Hình 2.2: Nhồi dữ liệu trong MD5 25
Hình 2.3: Thêm vào độ dài trong MD5 25
Hình 2.4: Quy trình xử lý khối dữ liệu 512 bit trong MD5 26
Hình 2.5: Quy trình xử lý khối dữ liệu 512 bit trong SHA-1 29
Hình 2.6 : Lược đồ tạo chữ ký số với hàm băm 30
Hình 2.7 Các thành phần PKI 32
Hình 2.8 Quá trình gửi và nhận của Bob và Alice 37
Hình 2.9 Mô tả các bước tạo khóa RSA 38
Hình 2.10 Quá trình xác nhận khóa RSA 39
Hình 2.11 Sơ đồ giải thuật hệ mật mã RSA 40
Bảng 2.12: Thử nghiệm độ bảo mật của RSA 43
Hình 3.1 Sơ đồ Usecase mức tổng quát 46
Hình 3.2 Sơ đồ Usecase phân rã chức năng tạo khóa 46
Hình 3.3 Sơ đồ Usecase phân rã chức năng tạo chữ ký và ký 47
Hình 3.4 Sơ đồ Usecase phân rã chức năng chứng thực và in 47
Hình 3.5 Biểu đồ tuần tự chức năng Đăng nhập 48
Hình 3.6 Biểu đồ tuần tự chức năng Tạo khóa 49
Hình 3.7 Biểu đồ tuần tự chức năng Tạo chữ ký 50
Hình 3.8: Giao diện đăng nhập 55
Hình 3.9: Giao chính của phần mềm chữ ký số 56
Hình 3.10 Giao diện tạo khóa 56
Hình 3.11 Giao diện ký biên lai 57
Hình 3.12 Giao diện Xác nhận chữ ký và in biên lai 57
Hình 3.13: Biên lai sau khi ký và in 58
Trang 91
PHẦN MỞ ĐẦU
Mật mã học là một trong những vấn đề quan trọng trong lĩnh vực bảo mật và
an toàn thông tin Trên thế giới, mật mã học đã được ra đời từ thời La Mã cổ đại và ngày càng được nghiên cứu, phát triển đạt được những thành tựu to lớn Trong mật
mã học, vấn đề bảo mật luôn đi đôi với vấn đề xác thực thông tin, đặc biệt trong hệ thống mã hóa công khai vấn đề xác thực là rất quan trọng Để giải quyết vấn đề trên, người ta đưa ra một cách giải quyết hiệu quả đó là chữ ký số Chữ kí số hiện nay được sử dụng rất phổ biến và là nhu cầu cần thiết trong việc gửi nhận các tài liệu trên mạng
Trong đề tài này em nghiên cứu về chữ kí số và chủ yếu tập trung vào nghiên cứu chữ ký số bằng thuật toán RSA cũng nhưgiải pháp ứng dụng trong hóa đơn điện
tử tại Công Ty Liên Doanh Vận Chuyển Quốc Tế Hải Vân
Tổng quan về vấn đề nghiên cứu
Con người đã sử dụng các hợp đồng dưới dạ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ữ 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 rất nhiều nước trên thế giới đã có triển khai ứng dụng chữ ký số điện
tử trong giao dịch điện tử như MỸ, ANH, ĐỨC,…Tại VIỆT NAM, giao dịch điện
tử được áp dụng trong các lĩnh vực thuế, hải quan, thương mại điện tử, , một số doanh nghiệp đã triển khai và được cấp giấy phép như : VNPT, Viettel, Bkis, Nacencomm và FPT
Chữ ký số có thể sử dụng trong các giao dịch thư điện tử, các e-mail, để mua bán hàng trực tuyến, đầu tư chứng khoán trực tuyến, chuyển tiền ngân hàng, thanh
Trang 102
toán trực tuyến mà không sợ bị đánh cắp tiền như với các tài khoản Visa, Master Ngoài ra, chữ ký số cũng có thể dùng để kê khai, nộp thuế trực tuyến, khai báo hải quan và thông quan trực tuyến mà không phải mất thời gian đi in các tờ khai, đóng dấu đỏ của công ty rồi đến cơ quan thuế xếp hàng để nộp tờ khai này Chữ ký số giúp cho các đối tác có thể ký hợp đồng làm ăn hoàn toàn trực tuyến không cần ngồi trực tiếp với nhau, chỉ cần ký vào file hợp đồng và gửi qua e-mail
Hiện tại em đang nghiên cứu và xây dựng chương trình chữ ký số điện tử ứng dựng trong hóa đơn điện tử tại doanh nghiệp mình đang công tác
Mục đích nghiên cứu
Nghiên cứu tìm hiểu về chữ ký số bằng thuật toán RSA vàgiải pháp ứng dụng hóa đơn điện tử tại Công Ty Liên Doanh Vận Chuyển Quốc Tế Hải Vân
Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu:Tạo Chữ ký số bằng thuật toán RSA và ứng dụng
trong hóa đơn điện tử
Phạm vi nghiên cứu:Triển khai chữ ký số tại Công Ty Liên Doanh Vận
Chuyển Quốc Tế Hải Vân
Phương pháp nghiên cứu
- Tìm hiểu các tài liệu tham khảo
- Nghiên cứu một số dạng chữ ký số (tập trung nghiên cứu chữ ký số RSA)
- Mô phỏng chương trình chữ ký số bằng thuật toán RSA
Từ mục tiêu nghiên cứu đặt ra, ngoài phần mở đầu, kết luận và danh mục tài liệu tham khảo, nội dung của luận văn được trình bày trong ba chương với các nội dung sau:
Chương 1: Tổng quan về chữ ký số
Nội dung của chương 1 này, luận văn tập trung tìm hiểu về tổng quan chữ ký
số, qua đó đi tìm hiểu và so sánh một số lược đồ chữ ký số hiện nay, cũng như ứng dụng của chữ ký số trong thực tế
Chương 2: Hệ mật mã và chữ ký số RSA
Trang 113
Nội dung của chương 2 này, luận văn tập trung vào phân tích cơ sở toán học trong mật mã học, các hàm băm cũng như giải thuật hàm băm trong chữ ký số và ứng dụng hạ tầng khóa công khai trong chữ ký số, qua đó làm rõ về lược đồ RSA trong xây dựng chữ ký số hiện nay
Chương 3: Xây dựng chữ ký số tại công ty LDVC quốc tế Hải Vân
Nội dung của chương 3 này, luận văn tập trung vào xây dựng ứng dụng chữ
ký số bằng thuật toán RSA tại công ty cổ phần LDVC QT Hải Vân như: phân tích, thiết kế hệ thống, xây dựng chương trình chữ ký số và thử nghiệm đánh giá cũng như hướng phát triển của phần mềm
Trang 124
CHƯƠNG 1: TỔNG QUAN VỀ CHỮ KÝ SỐ
Nội dung của chương 1 này, luận văn tập trung tìm hiểu về tổng quan chữ ký
số, qua đó đi tìm hiểu và so sánh một số lược đồ chữ ký số hiện nay, cũng như ứng dụng của chữ ký số trong thực tế
1.1.Lịch sử hình thành và phát triển chữ ký số
Con người đã sử dụng các hợp đồng với chữ ký dưới dạ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 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ý số mới đi vào cuộc sống
Hình 1.1:Dạng mật mã Morse đã dùng
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ữ 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ử
và được coi là chữ ký điện tử [5] Hiện nay, theo quan niệm thông dụng trong giao dịch quốc tế, 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 (của Vietcombank chẳng hạn) để rút tiền, chấp nhận các điều khoản người dùng (EULA) khi cài đặt phần mềm máy tính (như phần mềm Office của Microsoft chẳng hạn), ký các hợp đồng điện tử online
Trang 13- Chữ ký là bằng chứng thể hiện người ký có chủ định khi ký văn bản - Chữ
ký thể hiện “chủ quyền”, nó làm cho người nhận văn bản biết rằng ai đích thị là người đã ký văn bản
- Chữ ký không thể “tái sử dụng”, tức là nó là một phần của văn bản mà không thể sao chép sang các văn bản khác - Văn bản đã ký không thể thay đổi được
- Chữ ký không thể giả mạo và cũng là thứ không thể chối bỏ ( người đã ký văn bản không thể phủ định việc mình đã ký văn bản và người khác không thể tạo
ra chữ ký đó )
Trong cuộc sống đời thường, việc tạo một mô hình “lý tưởng”như trên là không dễ vì việc ký trên văn bản giấy có thể giả mạo chữ ký, nhưng với khả năng kiểm định sát sao thì việc làm thay đổi không phải dễ Tuy nhiên trong thế giới máy tính thì vấn đề ký như trong thực tế sẽ gặp phải nhiều khó khăn : các dòng thông tin trên máy tính có thể thay đổi dễ dàng, hình ảnh của chữ ký tay của một người cũng
dễ dàng cho “sang – truyền” từ một văn bản này sang một văn bản khác, và việc thay đổi nội dung một văn bản điện tử (sau khi ký) cũng chẳng để lại dấu vết gì về phương diện “tẩy, xóa”…
Vậy để có những đặc tính như trên “ký trong thế giới điện tử ”cần có công nghệ mã hóa Sơ đồ chữ ký số là phương pháp ký một thông báo được lưu dưới dạng điện tử Giao thức cơ bản của chữ ký số dựa trên ý tưởng của Diffie và Hellman :
Trang 146
- Người gửi (chủ nhân của văn bản) ký văn bản bằng cách mã hóa nó với khóa
bí mật của mình
- Người gửi chuyển văn bản đã ký cho người nhận
- Người nhận văn bản kiểm tra chữ ký bằng việc sử dụng chìa khóa công khai của người gửi để giải mã văn bản
1.2.2 Khái niệm chung về chữ ký số
Chữ ký số là một tập con của chữ ký điện tử, một thể chứng thực được mã hóa bởi khóa bí mật của người gửi [1] 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 chủ thể của dữ liệu đó
Là mô hình sử dụng các kỹ thuật mật mã để gắn với mỗi người sử dụng một cặp khóa công khai - bí mật và quađó có thể ký các văn bản điện tử cũng như trao đổi các thông tin mật Khóa công khai thường được phân phối thông qua chứng thực khóa công khai [6] Quá trình sử dụng chữký số bao gồm 2 quá trình: tạo chữ ký và kiểm tra chữ ký theo mô hình sau:
Hình 1.2 Mô tả quy trình chữ ký số
Trang 157
Các thuật toán chữ ký số cho phép xác định nguồn gốc, bảo đảm tính toàn vẹn của dữ liệu được truyền đi, đồng thời cũng đảm bảo tính không thể phủ nhận của thực thể đã ký thông tin sau [4, 6]:
- Thuật toán sinh chữ ký số (Digital Signature Generation Algorithm) là một phương pháp tạo chữ ký số
- Thuật toán kiểm tra chữ ký số (Digital Signature Verification Algorithm) là phương pháp để kiểm tra rằng một chữ ký số là đáng tin cậy
- Lược đồ chữ ký số (Digital Signature Scheme) bao gồm thuật toán sinh chữ
ký và thuật toán kiểm tra chữ ký
- Quy trình sinh chữ ký số (Digital Signature Signing Process) bao gồm một thuật toán sinh chữ ký số đi cùng với một phương pháp khuôn dạng dữ liệu cho thông điệp để có thể ký được
- Tiến trình kiểm tra chữ ký số (Digital Signature Verification Process) bao gồm một thuật toán kiểm tra ký, đi cùng với một phương pháp khôi phục dữ liệu từ thông điệp
- Khóa bí mật là một khóa trong cặp khóa thuộc hệ thống mã hóa không đối xứng và được dùng để tạo chữ ký số
- Khóa công khai là một khóa trong cặp khóa thuộc hệ thống mã hóa không đối xứng và được sử dụng để kiểm tra chữ ký số đã được tạo từ khóa bí mật tương ứng trong cặp khóa
- Ký số chính là việc ta đưa khóa bí mật vào một chương trình phần mềm để
tự động tạo và gắn chữ ký số vào thông điệp dữ liệu
- Người gửi là thuê bao dùng đúng khóa bí mật của mình để ký số vào một thông điệp dữ liệu dưới tên của mình và gửi đi
- Người nhận là thuê bao nhận được thông điệp dữ liệu được ký số bởi người gửi để kiểm tra chữ ký số trong thông điệp dữ liệu nhận được và tiến hành các hoạt động, giao dịch có liên quan
Trang 168
1.2.3.Thực trạng về chữ ký số hiện nay
Trên thế giới, hầu như tất cả nướccũng đều đã ứng dụng chữ ký số, đặc biệt
là trong các công việc hành chính Nhà nước Biểu hiện rõ ràng nhất cho sự chấp nhận chữ ký số phổ biến chính là sự ra đời của các bộ luật
Tại Trung quốc:Luật chữ ký điện tử của Trung quốc - Mục tiêu hướng tới thống nhất việc thực hiện, khẳng định tính pháp lý và bảo vệ quyền lợi hợp pháp của các bên liên quan tới việc thực hiện chữ ký điện tử
Tại Brazil: Medida provisória 2.200-2 - Luật Brazil thừa nhận tính pháp lý của văn bản số nếu được chứng nhận bởi ICP-Brasil (PKI chính thức của Brazil) hoặc một PKI khác nếu các bên đồng ý
Với các nước nằm trong Liên hiệp châu Âu: EU đã thiết lập khung pháp lý cho chữ ký điện tử:
- Hướng dẫn số 1999/93/EC của Quốc hội châu Âu ngày 13 tháng 12 năm
1999 về khung pháp lý của chữ ký điện tử
- Quyết định 2003/511/EC sử dụng 3 thỏa thuận tại hội thảo CEN làm tiêu chuẩn kỹ thuật
- Các luật ban hành: Một số quốc gia đã thực hiện quyết định 1999/93/EC
Ở Anh, Scotland và Wales: Luật thông tin điện tử, 2000, nước Đức ban hành Luật chữ ký, 2001 và Hoa Kỳ: Uniform Electronic Transactions Act (UETA); Electronic Signatures in Global and National Commerce Act (E-SIGN), at 15 U.S.C.7001 et seq
Tình hình tại Việt Nam hiện nay thì một số đơn vị doanh nghiệp và ngân hàng chú ý tới các hình thức thanh toán điện tử qua Internet và sử dụng chữ ký số như một biện pháp an toàn, tiện lợi, giảm chi phí và giảm thủ tục
Ta cũng có thể thấy đi đầu cho việc áp dụng chữ ký số chính là các doanh nghiệp Nhà nước và các đơn vị hành chính sự nghiệp
Trang 179
Trước kia, việc thu thuế, bất kể là thuế thu nhập cá nhân, thuế hải quan, thuế doanh nghiệp hay loại thuế nào khác, ta đều cần chuẩn bị đầy đủ các loại hồ sơ, đi xin xác nhận, rồi chờ xếp hàng tại cơ quan thuế, mà không phải lúc nào cũng được giải quyết ngay Đây là một việc vừa tốn thời gian vừa tốn sức lực và vô cùng kém hiệu quả Tuy nhiên, nhờ có chữ ký số, ta không cần phải đến tận cơ quan thuế để thực hiện thủ tục, chỉ cần có máy tính nối mạng, kèm với chữ ký số đã được hợp thức hóa là đủ
Theo khảo sát, hiện tại đã có trên 90% doanh nghiệp sử dụng chữ ký số Tính đến đầu năm 2015 có khoảng 156000 doanh nghiệp sử dụng chữ ký số cho các giao dịch của mình Còn theo quy mô doanh nghiệp thì:
- Doanh nghiệp lớn có 97%
- Doanh nghiệp vừa và nhỏ có 92%
Tổng cục Hải quan tính đến đầu tháng 11 năm 2015 cả nước có 980 doanh nghiệp và 36 ngân hàng ứng dụng chữ ký số
Ở Việt Nam đã có các đơn vị như VNPT, Viettel, FPT… được bộ thông tin và truyền thông cấp phép là nhà cung cấp dịch vụ chứng thực chữ ký số công cộng theo Luật Giao dịch điện tử - có hiệu lực từ ngày 1 tháng 3 năm 2006 Các đơn vị này sẽ chịu trách nhiệm cung cấp các chữ ký số duy nhất cho từng khách hàng duy nhất, đảm bảo không trùng nhau và phải hợp pháp với mức giá công khai, đồng thời được hai bên chấp nhận, ghi rõ trong hợp đồng được pháp luật bảo hộ
1.3 Một số lược đồ chữ ký số
1.3.1 Lược đồ chữ ký RSA
Dựa vào ưu điểm của hệ mã RSA, nếu thiết lập được sơ đồ chữ ký dựa trên bài toán phân tích ra thừa số nguyên tố thì độ an toàn của chữ ký sẽ rất cao Việc thiết lập sơ đồ xác thực chữ ký RSA rất đơn giản, ta chỉ cần đảo ngược hàm mã hóa và giải mã Sau đây là sơ đồ chữ ký RSA, bao gồm bộ 5 sau [4, 5]:
S=(P, A, K, S, V)
Trang 1810
Trong đó: P = A = Za, với n = p.q là tích của hai số nguyên tố lớn p, q
K là tập các cặp khóa K = (Kꞌ, Kꞌꞌ), với Kꞌ=a và Kꞌꞌ=(n,b), a và b là hai số thuộc Z*
n thỏa mãn a.b=1(modφ(n))
Các hàm sigKꞌ và verKꞌꞌ được xác định như sau:
sig Kꞌ (x) = x a modn ver Kꞌꞌ (x,y)= đúng x≡y b (modn)
Dễ chứng minh được rằng sơ đồ được định nghĩa như vậy là hợp thức, tức là với mọi x ∈ P và mọi chữ ký y∈A:
ver Kꞌꞌ (x,y) = đúng y = sig Kꞌ (x)
Hai vấn đề xác nhận và bảo mật theo sơ đồ RSA là có bề ngoài giống nhau, nhưng nội dung thì hoàn toàn khác nhau: Khi A gửi thông báo x cho B, để B có căn
cứ xác nhận đó đúng thực là thông báo do A gửi, A phải gửi kèm theo chữ ký sigKꞌ(x), tức là A gửi cho B (x, sigKꞌ(x)), trong các thông tin gửi đi đó, thông báo x hoàn toàn không được giữ bí mật Cũng tương tự như vậy, nếu dùng sơ đồ mật mã RSA, khi một chủ thể A nhận được một bản mật mã eKꞌ(x) từ B thì A chỉ biết rằng thông báo x được bảo mật, chứ không có gì để xác nhận x là của B
Để hệ truyền tin vừa có tính bảo mật vừa có tính xác nhận thì phải sử dụng đồng thời cả hai hệ mật mã và xác nhận (bằng chữ ký)
Giả sử 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ư khi A thực hiện giải mã) Giá trị 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ý biết khóa bí mật của
A và văn bản đã không bị thay đổi sau khi ký
Trang 19S=(P, A, K, S, V)
Trong đó: P=Z*
A = Z* x Zp-1 , với p là một số nguyên tố sao cho bài toán tính rời rạc
trong Z*p là rất khó
Tập hợp K gồm các cặp khóa K=(Kꞌ, Kꞌꞌ), với Kꞌ=a là một số thuộc Z* ,
Kꞌꞌ=(p,α,β), α là một phần tử nguyên thủy của Z* và β=αamodp Kꞌ là khóa bí mật
dùng để ký và Kꞌꞌ là khóa công khai dùng để kiểm thử chữ ký
Các thuật toán ký và kiểm thử chữ ký được xác định như sau:
- Với mỗi thông báo x, để tạo chữ ký trên x ta chọn thêm một số ngẫu nhiên k∈ Z*p-1 rồi tính:
sig Kꞌ (x,k) = (γ,δ) với γ = α kmodp và δ = (x – aγ) k-1mod(p-1)
- Thuật toán kiểm thử được định nghĩa bởi:
Trang 20DSS dựa vào lược đồ chữ ký ElGamal với một vài sửa đổi Lược đồ chuẩn chữ
ký số DSS được mô tả như sau [4, 5]:
- Chọn p là một số nguyên tố lớn có độ dài biểu diễn ≥ 512 bit để cho bài toán tính logarit rời rạc trong Zp là khó, q là một ước số nguyên tố của p-1, có độ
dài cỡ 160 bit Gọi α∈Z*p là một căn bậc q của 1 theo modp
- Đặt P = Z*p A = Z*qxZ*q .Chọn a∈Z*q và tính β≡αamodp
- Xác định khóa K=(Kꞌ,Kꞌꞌ), trong đó khóa Kꞌ=a và khóa Kꞌꞌ=(p,q,α,β)
- Thuật toán ký và thuật toán kiểm thử được định nghĩa như sau: Với x∈P=Z*p
ta chọn thêm một số ngẫu nhiên k(0 k q -1), và định nghĩa chữ ký: sigKꞌ (x,k)
Trang 21• Alice chọn điểm cơ sở G trên E trên GF(q) có bậc r
• Alice chọn số nguyên dương a và tính Q = aG
• Alice công bố thông tin công khai sau đây: GF(q), E, r, G, Q
1.4.Một vài đánh giá của chữ ký số hiện nay
1.4.1.Về tính ưu điểm của chữ ký số
Khả năng xác định nguồn gốc
Trang 2214
- Các hệ thống mật mã hóa khóa công khai cho phép mật mã hóa văn bản với khóa bí mật mà chỉ có người chủ của khóa biết
- Để sử dụng chữ ký số thì văn bản cần phải được mã hóa bằng hàm băm sau
đó dùng khóa bí mật của người chủ khóa để mã hóa, khi đó ta được chữ ký
số
- Khi cần kiểm tra, bên nhận giải mã (với khóa công khai) để lấy lại chuỗi gốc (được sinh ra qua hàm băm) và kiểm tra với hàm băm của văn bản nhận được
- Nếu hai giá trị này khớp nhau thì bên nhận có thể tin tưởng rằng văn bản xuất phát từ người sở hữu khóa bí mật Nhưng chúng ta cũng không thể đảm bảo chắc chắn là văn bản không bị giả mạo vì hệ thống vẫn có thể bị phá vỡ
Tính toàn vẹn
- Cả hai bên tham gia vào quá trình thông tin đều có thể tin tưởng là văn bản không thể bị sửa đổi trong quá trình truyền vì nếu như văn bản bị thay đổi thì hàm băm cũng sẽ bị thay đổi và như thế thì ngay lập tức chúng ta sẽ phát hiện
- Quá trình mã hóa sẽ ẩn nội dung của gói tin đối với bên thứ 3 nhưng không ngăn cản được việc thay đổi nội dung của nó
Tính không thể phủ nhận
Trong khi giao dịch, một bên có thể từ chối nhận một văn bản do mình gửi Vì vậy, để ngăn ngừa khả năng này thì bên nhân có thể yêu cầu bên gửi phải gửi kèm theo cả chữ ký số với văn bản Khi có tranh chấp, bên nhận sẽ dùng chữ ký này như một chứng cứ để bên thứ ba giải quyết
1.4.2.Về tính nhược điểm của chữ ký số
Do sử dụng khóa công khai nên tốc độ mã hóa chậm hơn với các mô hình mã hóa đối xứng
Kích thước khóa lớn hơn rất nhiều so với mã hóa đối xứng
Trang 2315
Không có mô hình mã hóa công khai nào được chứng minh là an toàn Phần lớn các mô hình mã hóa hiện nay có sự an toàn dựa trên các giả thuyết của một tập nhỏ các vấn đề lý thuyết số học
Vấn đề bản gốc, bản chính: Nếu đối với tài liệu giấy, chữ ký được ký 1 lần và chỉ có 1 bản duy nhất (bản gốc) Bản gốc được ký bằng chữ ký sẽ không thể cùng lúc ở hai chỗ khác nhau Nếu bản gốc mất đi sẽ không có thêm một bản gốc khác Nhưng với văn bản điện tử đã được ký bằng chữ ký số thì người ta có thể copy lại
và bản copy không có gì khác biệt so với bản chính duy nhất được ký
Sự có thời hạn của chữ ký số
1.4.3 So sánh giữa Elliptic và RSA
Mã hóa khóa công cộng dựa trên hai vấn đề lớn của toán học là bài toán logarit rời rạc và bài toán phân tích số Phương pháp RSA dựa trên bài toán phân tích số (IFP – Integer Factoring Problem) Bài toán này đã được đưa ra từ cuối thập niên 70 Độ phức tạp tính toán của IFP là cận-hàm mũ (dùng thuật toán Index Calculus) Phương pháp ECC dựa trên bài toán logarit rời rạc trên nhóm các điểm đường cong elliptic trong trường hữu hạn (ECDLP – Elliptic Curve Discrete Problem) Bài toàn được đưa ra năm 1985 với độ phức tạp tính toán là hàm mũ, nghĩa là khó hơn so với IFP ECDLP cho tới nay vẫn chưa có thuật toán nào được xem là hiệu quả kiểu cận-hàm mũ để giải bài toán này
Do không có thuật toán cận-hàm mũ để giải bài toán ECDLP nên với cùng một mức an toàn (security level) thì hệ mật ECC yêu cầu độ dài khóa ngắn hơn rất nhiều so với hệ mật RSA Chẳng hạn để cho mức an toàn tương đương với RSA 1024-bít thì hệ mật ECC chỉ yêu cầu độ dài khóa tương ứng là 160 bít Kích thước khóa của ECC nhỏ hơn so với RSA nên thời gian sinh khóa, mã hóa/giải mã của hệ thống bảo mật dựa trên ECC nhanh hơn hệ thống RSA
Để thực hiện việc so sánh sử dụng RSA và ECC trong quá trình bắt tay của SSL, người ta sử sụng hai bộ mã khác nhau:
Trang 24Bảng 1.1 - So sánh sử dụng RSA và ECC trong quá trình bắt tay của SSL
Kích thước khóa Tỉ lệ kích thước
khóa RSA : ECC
Trang 2517
Hình 1.4 – So sánh mức độ bảo mật giữa ECC với RSA/DSA
Do có kích thước khóa nhỏ và khả năng phát sinh khóa rất nhanh nên ECC rất được quan tâm để áp dụng cho các ứng dụng trên môi trường giới hạn về thông lượng truyền dữ liệu, giới hạn về khả năng tính toán, khả năng lưu trữ ECC thích hợp với các thiết bị di động kỹ thuật số như handheld, PDA, điện thoại di động và thẻ thông minh (smart card)
Việc sử dụng ECC mang lại những hiệu quả sau: tăng tốc độ, yêu cầu khả năng tính toán thấp hơn, tiết kiệm dải thông đường truyền, tăng hiệu quả lưu trữ, giảm độ dài các chứng nhận… Các ưu điểm trên của hệ mật ECC có thể phát huy hiệu quả trong các ứng dụng mà đường truyền, khả năng tính toán, tốc độ và lưu trữ
bị hạn chế Và các ứng dụng đó được thể hiện rất hiệu quả trong thương mại điện
tử, web servers…
Hiện nay hầu hết các công ty lớn về viễn thông và bảo mật trên thế giới đều quan tâm phát triển Cả phòng thí nghiệm chính của RSA (RSA Security Laboratory) cũng đã nghiên cứu và đưa ECC vào sản phẩm của mình
Trang 2618
Tuy nhiên, ECC vẫn có một số hạn chế nhất định Hạn chế thứ nhất đó là độ khó về toán học của hệ mật ECC, ngoài ra việc chọn sử dụng các tham số đường cong và điểm cơ sở chung như thế nào để thật sự đạt được độ bảo mật và an toàn cao là tương đối phức tạp
ECC cung cấp khả năng ứng dụng rất lớn trong lĩnh vực mã hóa khóa công cộng trên các thiết bị di động và smart card Tương lai ECC sẽ được nghiên cứu đưa vào thực tiễn phổ biến hơn để thay thế RSA
1.4 Vai trò của chữ ký số trong ứng dụng hiện nay
Ngày nay với xu hướng hội nhập, toàn cầu hóa đã và đang ảnh hưởng đến sự phát triển của thế giới Việc trao đổi thông tin từ đó cũng yêu cầu nhanh gọn, chính xác và an toàn hơn Tuy nhiên việc trao đổi thông tin, chứng thực thông tin theo phong cách truyền thống làm giảm tốc độ và sự chính xác của thông tin Những công việc ấy còn mang tính chất thủ công nên gây ra sự chậm trễ và thiếu chính xác trong trao đổi thông tin
Chính khó khăn này đã làm nảy sinh sự phát triển mạnh mẽ của công nghệ thông tin và công nghệ mã hóa Hiện nay, ở các nước trên thế giới công nghệ thông tin đang đóng vai trò thiết yếu trong mọi lĩnh vực hoạt động của toàn xã hội và nhu cầu bảo mật thông tin ngày càng được đặt lên hàng đầu Có thể nhắc đến việc mã hóa bảo mật thông tin số của các doanh nghiệp, dùng chữ ký số để xác thực email trao đổi thông tin, ngân hàng điện tử, kiểm soát truy cập vào các sàn thương mại điện tử và xử lý các đơn hàng, mua sắm trực tuyến… mà vai trò chủ yếu là chữ ký
Trang 27Chữ ký số được sử dụng để cung cấp chứng thực chủ sở hữu, tính toàn vẹn dữ liệu và chống chối bỏ nguồn gốc trong rất nhiều các lĩnh vực
Chữ ký số không chỉ được thực hiện cho các giao dịch điện tử trên mạng Internet mà còn được sử dụng cho các hệ thống mạng viễn thông di động Giúp cho việc giao dịch được nhanh chóng, đơn giản hóa mua sắm trực tuyến, giúp người dùng truy cập mọi nơi mọi lúc
Chữ ký số ra đời có lợi ích to lớn về chiến lược và kinh tế: đối với các doanh nghiệp, chữ ký số làm doanh nghiệp tiết kiệm được rất nhiều thời gian và chi phí hành chính; việc ký kết có thể diễn ra ở bất kỳ đâu, trong bất cứ thời gian nào; việc vận chuyển tài liệu giữa các bên diễn ra thuận lợi và nhanh chóng
1.5 Kết luận chương 1
Trong chương này, luận văn đã tìm hiểu về lịch sử hình thành phát triển chữ
ký số, phân tích một số lược đồ chữ ký số hiện nay và so sánh giữa chúng như: lược
đồ chữ ký số RSA, Elgamal, DSS, Elliptic (ECDSA) Từ đó làm nền tảng đưa ra những nhận xét ưu điểm và nhược điểm của chữ ký số cũng như vai trò ứng dụng của chữ ký số hiện nay
Trang 2820
CHƯƠNG 2 : HỆ MẬT MÃ VÀ CHỮ KÝ SỐ RSA
Nội dung của chương 2 này, luận văn tập trung vào phân tích cơ sở toán học trong mật mã học, các hàm băm cũng như giải thuật hàm băm trong chữ ký số và ứng dụng hạ tầng khóa công khai trong chữ ký số, qua đó làm rõ về lược đồ RSA trong xây dựng chữ ký số hiện nay
2.1 Cơ sở mật mã trong toán học
Toán học mà cụ thể là số học luôn có quan hệ mật thiết với công nghệ thông tin nói chung và ngành an ninh máy tính nói riêng Số học giúp bảo vệ những dữ liệu nhạy cảm có khả năng bị đánh cắp Những giao thức mã hóa mà đặc biệt là chữ
ký số điện tử đều dựa trên lý thuyết số học để xây dựng khóa, mã hóa và giải mã
An toàn của những giao thức này đều liên quan đến giải thuật công khai và phân
tích thừa số nguyên tố
2.1.1.Sinh số nguyên tố và phân tích thừa số nguyên tố
Hai hệ quả và một ước lượng trong thuyết số học là tiền đề cho hệ thống khóa công khai RSA
Hệ quả 1:Sinh số nguyên tố thì dễ: Việc tìm ra một số nguyên tố ngẫu nhiên
với kích cỡ cho trước là dễ dàng
Nó là kết quả của hai điểm khác : Số nguyên tố với kích thước bất kỳ rất phổ biến và việc kiểm tra số nguyên tố không khó
Để sinh số nguyên tố ngẫu nhiên, đơn giản nhất là sinh ra một số nguyên ngẫu nhiên với độ lớn đã cho và kiểm tra tính nguyên tố cho đến khi một số nguyên tố được tìm thấy Dựa vào điều kiện số nguyên tố, một số kỳ vọng được kiểm tra dựa vào thứ tự của lnx( thuật toán tự nhiên của x) khi mà x là một số điển hình với độ lớn mong muốn
Việc kiểm tra một số là số nguyên tố là không dễ Trong thực tế, dường như việc kiểm tra tính nguyên tố sẽ yêu cầu một số khác ngoài chính số đó và số 1 là ước của
số nguyên cần kiểm tra Hầu hết các hệ mã hóa khóa công khai ngày nay đề phụ thuộc vào việc sinh số nguyên tố
Trang 2921
Hệ quả 2: Phép tính nhân là dễ : Với p và q cho trước, việc tính kết quả của
phép nhân n = pxq là dễ dàng
Hệ quả 3:Phân tích thừa số là khó : Với một số nguyên n là kết quả của phép
nhân số nguyên tố lớn, việc tìm lại các số nguyên tố thừa số p, q là rất khó
Bất chấp hàng trăm năm nghiên cứu trong vấn đề này, việc phân tích ra thừa số của một số nguyên lớn vẫn mất một thời gian dài Phương pháp nhanh nhất gần đây
đã nhanh hơn rất nhiều so với những cách đơn giản là tìm tất cả các thừa số ở cùng một thời điểm Tuy nhiên, chí phí rất đắt Cho ví dụ, việc phân tích ra thừa số nguyên tố của một số 1024 bit mất một năm với một máy giá 10 triệu USD Với một số 2048 bit thì thời gian để hoàn thành còn gấp vài tỉ lần
2.1.2.Phép mũ hóa và khai căn module
Như ở trên ta đã khai báo n là kết quả của phép nhân hai số nguyên tố lớn được sinh ngẫu nhiên Cho m và c là những số nguyên nằm trong khoảng (0,n-1) và e là một số nguyên lẻ trong khoảng (3,n-1) và nguyên tố cùng nhau với p-1 và q-1 Thao tác mã hóa và giải mã trong hệ mã hóa khóa công khai RSA được thực hiện dựa trên 2 hệ quả và 1 ước lượng sau :
Hệ quả 4:Phép tính mũ hóa module là dễ : Cho n,m và e Việc tính c = memod n là dễ dàng
Giá trị me mod n chính thức là kết quả của nâng lũy thừa e của m, chia cho n
và lấy phần dư Điều này có thể là một phép tính toán phức tạp liên quan tới việc nhân (e-1) số m và kết quả trả về là một số nguyên lớn, trước khi việc thực hiện phép chia cho n Tuy nhiên hai cách tối ưu hóa sau làm cho việc tính toán trở nên dễ dàng :
- Nhân với một trình tự thích hợp của các giá trị trung gian trước đó, thay
vì hơn chỉ bằng m, có thể giảm số lượng các phép nhân để không quá hai lần kích thước của e trong hệ nhị phân
- Chia và lấy phần dư sau khi mỗi phép nhân giữ kết quả trung gian có cùng kích thước như n
Trang 3022
Hệ quả 5 :Phép khai căn module – nghịch đảo của phép lũy thừa module
Cho n,e,c và những thừa số nguyên tố p, q việc khôi phục lại giái trị m sao cho c =
me mod n là dễ dàng
Giá trị m có thể khôi phục từ c do thao tác mũ hóa module với một số nguyên lẻ
d nằm trong khoảng (3,n-1) Đặc biệt, với số d này, biểu thức sau thể hiện cho tất cả m: m = (me)d mod n
Số nguyên d này thì dễ dàng tính với e, p, q cho trước
Hệ quả 6:Phép khai căn module lại khó ở một hoàn cảnh khác
Cho n,e nhưng không biết những thừa số nguyên tố, việc khôi phục lại m là khó khăn
Phương pháp nhanh nhất thì có sẵn trong việc tính toán khai căn module dưới điều kiện dựa là n và e là phân tích thừa số n và áp dụng hệ quả 5 để quyết định d Thực sự, bất kỳ phương thức nào quyết định d đều bị chuyển về một cách khác của việc phân tích thừa số n Đúng là có thể khi mà tồn tại một phương pháp mà tính toán khai căn module mà không cần phân tích n hoặc quyết định d Nhưng cho đến nay chưa phương pháp nào có thể làm như vậy nhanh hơn việc phân tích thừa số n
Nhận xét: Số học, đặc biệt là số nguyên lớn và các phép tính đồng dư là những
công cụ quan trọng trong mật mã học đặc biệt là trong việc tính toán mật mã học khóa công khai, điển hình là RSA
2.2 Các hàm băm (Hash Function)
2.2.1.Giới thiệu về hàm băm
a).Định nghĩa
Một hàm băm là một hàm tính toán hiệu quả thực hiện ánh xạ các chuỗi nhị phân với độ dài tùy ý vào các chuỗi nhị phân có độ dài cố định, được gọi là các giá trị băm (hash – values)
Hàm băm là các thuật toán không sử dụng khóa để mã hóa, nó có nhiệm vụ băm thông điệp được đưa vào theo một thuật toán h một chiều nào đó, rồi đưa ra một bản băm – văn bản đại diện – có kích thước cố định Do đó người nhận không
Trang 31có mã băm bằng với mã băm đã cho
Hàm băm kháng xung đột (Collision resistant hash funtions): Là hàm băm mang tính chất không thể tính toán để tìm ra hai chuỗi bit có cùng giá trị băm
c) Đặc tính
Hàm băm là hàm một chiều với những đặc tính sau :
- Với thông điệp đầu vào x thu được bản băm z = h(x) là duy nhất
- Nếu dữ liệu trong thông điệp x thay đổi để thành thông điệp x’ thì h(x’) ≠ h(x)
- Nội dung của thông điệp gốc không thể bị suy ra từ giá trị băm
d).Tính chất
Tính chất 1: Hàm băm h là không va chạm yếu
Hàm băm h được gọi là không va chạm yếu nếu cho trước bức điện x, khó thể tính toán để tìm ra bức điện x’ ≠ x mà h(x’) = h(x)
Tính chất 2: Hàm băm h là không va chạm mạnh
Trang 32Tính chất 4: Tạo ra giá trị băm y = h(x) có độ dài cố định
Tính chất 5: h(x) dễ dàng tính được với bất kỳ x nào
Tính chất 6: Có thể áp dụng với thông báo đầu vào có độ dài bất kỳ
2.2.2.Một số giải thuật trong hàm băm
a).Giải thuật MD5
Giải thuật được phát triển bởi Ron Rivest tại đại học MIT.Nó đưa vào các khối đầu vào 512 bit và sinh ra các giá trị băm 128 bit.MD5 được sử dụng rất rộng rãi trong các chương trình an ninh mạng và cũng thường được dùng để kiểm tra tính nguyên vẹn của tập tin MD5 được thiết kế để thay thế cho hàm băm trước đó MD4 Giải thuật này có hai ứng dụng quan trọng:
- Giải thuật được sử dụng rộng rãi trong các phần mềm để đảm bảo rằng tập tin tải về sẽ không bị hỏng Người dùng có thể so sánh giữa thông số kiểm tra phần mềm bằng MD5 được công bố với thông số kiểm tra phần mềm tải
về bằng MD5
- Nó được dùng để mã hóa mật khẩu Mục đích của việc làm này là biến đổi một chuỗi mật khẩu thành một đoạn mã khác, sao cho từ đoạn mã đó không thể nào lần trở lại mật khẩu được
MD5 biến đổi một thông điệp có chiều dài bất kì thành một khối có kích thước
cố định là 128 bits MD5 gồm 5 bước thao tác trên khối 512 bit:
Bước 1: Thêm vào các bit đệm (Padding bits)
+ Thông điệp được mở rộng bằng việc thêm các “bit đệm”sao cho dữ liệu có
độ dài l ≡ 448 mod 512 hayl = n * 512 + 448 (n,l nguyên)
Trang 33Hình 2.2: Nhồi dữ liệu trong MD5
Bước 2: Thêm vào độ dài (Length)
+ Độ dài của khối dữ liệu trước khi mở rộng được biểu diễn dưới dạng nhị phân 64-bit và được thêm vào cuối chuỗi nhị phân kết quả của bước 1
+ Nếu độ dài của khối dữ liệu ban đầu > 264, chỉ 64 bit thấp được sử dụng, nghĩa là giá trị được thêm vào bằng K mod 264
+ Kết quả có được từ 2 bước đầu là một khối dữ liệu có độ dài là bội số của
512 Khối dữ liệu được biểu diễn:
+ Bằng một dãy L khối 512-bit Y0, Y1,…, YL-1
+ Bằng một dãy N từ (word) 32-bit M0, M1, MN-1
Vậy N = L x 16 (32 x 16= 512)
Hình 2.3: Thêm vào độ dài trong MD5
Bước 3: Khởi tạo bộ đệm MD (MD buffer)
+ Một bộ đệm 128-bit được dùng lưu trữ các giá trị băm trung gian và kết quả Bộ đệm được biểu diễn bằng 4 thanh ghi 32- bit với các giá trị khởi tạo
ở dạng little-endian (byte có trọng số nhỏ nhất) như sau:
A = 67 45 23 01 B = EF CD AB 89
C = 98 BA DC FE D = 10 32 54 76
Trang 3426
+ Các giá trị này tương đương với các từ 32-bit sau:
A = 01 23 45 67 B = 89 AB CD EF
C = FE DC BA 98 D = 76 54 32 10
Bước 4: Xử lý các khối dữ liệu 512 bit
+ Trọng tâm của giải thuật này là hàm nén (compression function) gồm 4
“vòng” xử lý Các vòng này có cấu trúc giống nhau nhưng sử dụng các hàm luận lý khác nhau gồm F, G, H và I
Hình 2.4: Quy trình xử lý khối dữ liệu 512 bit trong MD5
+ Mảng 64 phần tử được tính theo công thức: T[i] = 232x abs(sin(i))