Các vấn đề chữ ký số thường xuyên được nghiên cứu, để tìm ra những sơ đồ chữ ký số phù hợp với thực tiễn. Trong các chuẩn chữ ký số trên thế giới, chuẩn chữ ký số Hoa Kỳ được ứng dụng rộng rãi trên toàn thế giới. Tính đến thời điểm tháng 62009, NIST đã đưa ra 4 phiên bản chuẩn chữ ký số FIPS PUB 186, FIPS PUB 1861, FIPS PUB 1862, FIPS PUB 1863. Khoa học công nghệ ngày càng phát triển, máy móc thiết bị ngày càng trở nên thông minh hơn, việc phá vỡ các sơ đồ chữ ký trong các phiên bản cũ là có thể, do vậy vấn đề đặt ra là cần có 1 chuẩn mới để đảm bảo an toàn chữ ký số trong tương lai. FIPS PUB 1864 ra đời vào 72013 đáp ứng các yêu cầu mới của thực tiễn
Trang 1Tôi xin cam đoan khóa luận tốt nghiệp “Xây dựng chương trình tạo và
xác thực chữ ký số theo chuẩn DSS” là công trình nghiên cứu của bản thân
tôi; các số liệu sử dụng trong khóa luận là trung thực, chính xác; các tài liệutham khảo có nguồn gốc trích dẫn rõ ràng; kết quả nghiên cứu không sao chép
vi phạm bản quyền của bất kỳ công trình nào
Tôi xin chịu mọi trách nhiệm và hình thức kỷ luật theo quy định cho lờicam đoan của tôi
Hà Nội, tháng 7 năm 2019
Sinh viên
Trang 2
MỞ ĐẦU 1 CHƯƠNG 1 TỔNG QUAN VỀ CHỮ KÝ SỐ 6 1.1 Giới thiệu chung về chữ ký số 6
Trang 33.1.1 Giao diện và các chức năng cơ bản 34
3.1.2 Xây dựng chương trình thiết lập chữ ký 36
3.1.3 Xây dựng chương trình xác thực chữ ký số 40
3.1.4 Kết quả thực nghiệm 41
3.2 Xây dựng chương trình thiết lập và xác thực chữ ký số sử dụng thuật toán RSA 45
3.2.1 Giao diện và các chức năng cơ bản 45
3.2.2 Xây dựng chương trình thiết lập chữ ký số 47
3.2.3 Xây dựng chương trình xác thực chữ ký số 48
3.2.4 Kết quả thử nghiệm 51
Kết luận chương 3 53
KẾT LUẬN 54
Trang 4CA Certification Authority
DSA Digital Signature Algorithm
FIPS Federal Information Processing Standard
NIST National Institute of Standards and TechnologyPKCS Public Key Cryptography Standard
SP Special Publication
SHA Secure Hash Algorithm
Trang 5Hình 1.1 Phân loại giải thuật mã hóa theo số lượng khóa 9
Hình 2.1 Quy trình tạo và xác thực chữ ký số theo chuẩn DSS 15
Hình 2.2 Quy trình khởi tạo ban đầu 16
Hình 2.3 Quy trình tạo chữ ký số 18
Hình 2.4 Quy trình xác thực chữ ký số 19
Hình 2.5 Mô hình sơ đồ chữ ký số DSA 26
Hình 2.6 Lược đồ chữ ký số RSA 30
Hình 3.1 Giao diện tạo khoá lược đồ chữ ký số DSA 34
Hình 3.2 Giao diện ký lược đồ chữ ký số DSA 35
Hình 3.3 Giao diện xác thực chữ ký số lược đồ DSA 35
Hình 3.4 Thông báo tạo khóa thành công 40
Hình 3.5 Thông tin cần ký bằng lược đồ DSA 43
Hình 3.6 Giao diện khi tạo chữ ký thành công 43
Hình 3.7 Giao diện thông báo chữ ký toàn vẹn không bị thay đổi 44
Hình 3.8 Thông tin sau khi bị chỉnh sửa 44
Hình 3.9 Giao diện chữ ký đã bị thay đổi 44
Hình 3.10 Giao diện tạo khóa theo lược đồ chữ ký số RSA 45
Hình 3.11 Giao diện ký theo lược đồ chữ ký số RSA 46
Hình 3.12 Giao diện xác thực theo lược đồ chữ ký số RSA 46
Hình 3.13 Giao diện thông báo chữ ký toàn vẹn không thay đổi 52
Hình 3.14 Giao diện thông báo chữ ký bị thay đổi 52
Trang 6Bảng 1.1 So sánh giữa chữ ký số và chữ ký viết tay 7
Bảng 1.2 So sánh các hàm băm trong chuẩn băm an toàn 12
Bảng 2.1 Sự khác nhau giữa các phiên bản chữ ký số của DSS 14
Bảng 2.2 Thời gian bảo mật 22
Bảng 2.3 Lựa chọn hàm băm cho cặp (L, N) 22
Trang 7MỞ ĐẦU
1 Tính cấp thiết của đề tài
Trong sự phát triển của xã hội loài người, đặc biệt kể từ khi mạng máytính ra đời việc trao đổi thông tin trở nên thuận lợi hơn, nhu cầu trao đổi thôngtin ngày càng lớn và đa dạng Các tiến bộ của khoa học kĩ thuật phát triểnkhông ngừng được ứng dụng để nâng cao chất lượng và lưu lượng truyền tin.Bảo mật thông tin trở nên quan trọng hơn bao giờ hết, con người cần có tưduy mới về bảo mật thông tin Trong các phương pháp bảo mật thông tin, mật
mã học được xem là phương pháp mang lại hiệu quả và kinh tế nhất
Trong những năm gần đây sự phát triển của khoa học máy tính vàInternet càng cho thấy được tầm quan trọng của mật mã thông tin Mật mãthông tin được ứng dụng trong nhiều lĩnh vực của đời sống xã hội như: anninh, quân sự, quốc phòng… cho đến các lĩnh vực thương mại điện tử Ngàynay, ngoài việc ứng dụng mật mã trong mã hóa và giải mã, mật mã được ứngdụng để xác thực nguồn gốc của thông tin, xác thực người sở hữu được mãhóa Chữ ký số ra đời đáp ứng những yêu cầu đó
Các vấn đề chữ ký số thường xuyên được nghiên cứu, để tìm ra những
sơ đồ chữ ký số phù hợp với thực tiễn Trong các chuẩn chữ ký số trên thếgiới, chuẩn chữ ký số Hoa Kỳ được ứng dụng rộng rãi trên toàn thế giới Tínhđến thời điểm tháng 6/2009, NIST đã đưa ra 4 phiên bản chuẩn chữ ký sốFIPS PUB 186, FIPS PUB 186-1, FIPS PUB 186-2, FIPS PUB 186-3 Khoahọc công nghệ ngày càng phát triển, máy móc thiết bị ngày càng trở nênthông minh hơn, việc phá vỡ các sơ đồ chữ ký trong các phiên bản cũ là cóthể, do vậy vấn đề đặt ra là cần có 1 chuẩn mới để đảm bảo an toàn chữ ký sốtrong tương lai FIPS PUB 186-4 ra đời vào 7/2013 đáp ứng các yêu cầu mớicủa thực tiễn [13-15]
Đặc biệt, trong thời điểm hiện tại, Việt Nam đang xây dựng thươngmại điện tử, chính phủ điện tử Việc ứng dụng chữ ký số hiện đem lại nhiều
Trang 8hiệu quả thiết thực, góp phần bảo mật thông tin, đơn giản hóa thủ tục hànhchính, góp phần xây dựng thành công thương mại điện tử, chính phủ điện tửtrong thời gian tới
Xuất phát từ những lý do trên đây em lựa chọn đề tài “Xây dựng chương trình tạo và xác thực chữ ký số theo chuẩn DSS” làm đề tài khóa luận
tốt nghiệp, dưới sự hướng dẫn của Giảng viên – Thạc sĩ Lưu
2 Tình hình nghiên cứu liên quan đến đề tài
Hiện nay có rất nhiều nghiên cứu về chữ ký số, cũng như ứng dụng của
nó nhằm bảo đảm tính bảo mật, tính toàn vẹn và tính chống chối bỏ của cácthông tin giao dịch trên mạng Internet Tại Học viện ANND, cũng đã có một
số nghiên cứu liên quan tới vấn đề chữ ký số như:
- “Nghiên cứu và ứng dụng chữ ký điện tử trong trao đổi thông tin dạng file giữa hai máy trên mạng dựa trên hệ mã khóa công khai RSA”, tác
giả Nguyễn Xuân Thùy (Khóa luận, 2003)
- “Xây dựng chương trình bảo mật dữ liệu số bằng hệ mật mã và chữ
ký điện tử”, của tác giả Đỗ Thị Thu Huyền (Khóa luận, 2010).
Một số nghiên cứu khác có liên quan tới lĩnh vực này như:
- “Nghiên cứu một số kỹ thuật mã hóa, xác thực và ứng dụng trong việc truyền số liệu tại Cục A18”, của tác giả Nguyễn Hồng Đức (Khóa
luận, 2007)
- “Nghiên cứu hạ tầng mã hóa khóa công khai (Public key infrastructure - PKI) triển khai chữ ký số trong giao dịch trực tuyến giữa A18
và PA18”, của tác giả Nguyễn Hoàng Tuấn Anh (Khóa luận, 2008).
- “Nghiên cứu, tìm hiểu cơ sở hạ tầng mật mã khóa công khai và ứng dụng”, tác giả Nguyễn Văn Dũng (Khóa luận, 2009).
- “Nghiên cứu, lập trình ứng dụng thử nghiệm một số thuật toán mã hóa dữ liệu áp dụng cho hộ chiếu điện tử Việt Nam”, tác giả Nguyễn Thanh
Hải (Khóa luận, 2011)
- “Kỹ thuật mã hoá DES trong bảo mật thông tin”, tác giả Phạm Thế
Hùng (Khóa luận, 2014)
Các công trình này đã nghiên cứu một số thuật toán mã hóa cơ bản cóthể áp dụng vào trong việc bảo mật dữ liệu và tạo chữ ký số, đã có một số
Trang 9công trình có ứng dụng vào trong thực tế Tuy nhiên, chưa có công trình nào
đề cập tới việc nghiên cứu một chuẩn chữ ký số được công bố và áp dụng tạicác nước tiên tiến Ngoài ra, việc ứng dụng tại một số công trình mới chỉ tiếpcận được ở mức thử nghiệm với những bộ số nhỏ Chính vì vậy, với mongmuốn làm rõ hơn những vấn đề cơ sở khoa học và ứng dụng của chữ ký sốtheo một chuẩn cụ thể, tác giả mạnh dạn nghiên cứu chuẩn chữ ký số DSS củaHoa Kỳ và viết chương trình ứng dụng theo chuẩn này
3 Mục tiêu và nhiệm vụ nghiên cứu
- Mục tiêu nghiên cứu:
Nghiên cứu về chuẩn chữ ký số DSS của Hoa Kì và các lược đồ chữ ký
số được chỉ ra trong chuẩn DSS Từ đó xây dựng chương trình tạo và xác thựcchữ ký số theo chuẩn DSS
- Nhiệm vụ nghiên cứu: Để đạt được mục tiêu nghiên cứu tác giả, giải
quyết lần lượt các nhiệm vụ sau:
+ Nghiên cứu, hệ thống hóa lý luận có liên quan đến chữ ký số và cơ sởhình thành chữ ký số
+ Nghiên cứu chuẩn chữ ký số DSS của Hoa Kỳ, sơ đồ chữ ký số được
+ Chuẩn chữ ký số DSS của Hoa Kỳ.
- Phạm vi nghiên cứu đề tài:
Đề tài tập trung nghiên cứu các phương pháp mã hóa là cơ sở nền tảng
để xây dựng chữ ký số, chuẩn chữ ký số DSS của Hoa Kỳ, và xây dựngchương trình tạo và xác thực chữ ký số theo chuẩn DSS
5 Phương pháp nghiên cứu
Để đạt được mục tiêu nghiên cứu của đề tài, tác giả sử dụng tổng hợpcác cách tiếp cận và phương pháp nghiên cứu sau:
- Phương pháp nghiên cứu tài liệu:
Trang 10+ Phương pháp phân tích và tổng hợp lý thuyết: tác giả thực hiện phân
tích, tổng hợp các bài báo khoa học có liên quan đến vấn đề nghiên cứu đượcđăng trên các tạp chí, hội nghị uy tín trên thế giới được cộng đồng nghiên cứu
sử dụng như:
Science direct: http://www.sciencedirect.com/
IEEE Xplore Digital Library: http://ieeexplore.ieee.org
The ACM Digital Library: http://dl.acm.org/
Google Scholar: https://scholar.google.com
+ Phương pháp phân loại và hệ thống hóa lý thuyết: Qua quá trình phântích tổng hợp lý thuyết, các thông tin thu thập được tác giả hệ thống và sắpxếp một cách khoa học, sử dụng chúng để nhận định, đánh giá, các phươngpháp đã có, từ đó đề ra phương pháp mới tối ưu hơn cho bài toán đặt ra
- Phương pháp nghiên cứu thực tiễn:
+ Phương pháp chuyên gia: Thu thập khoa học, tranh thủ những ý kiếnđóng góp, định hướng từ những chuyên gia nghiên cứu có kinh nghiệm tronglĩnh vực tối ưu hóa và khoa học máy tính để có góc nhìn và định hướngnghiên cứu phù hợp; tham gia các buổi hội thảo có chủ đề về mật mã thôngtin, mã hóa khóa công khai, chữ ký số
+ Phương pháp thực nghiệm khoa học: Tác giả sử dụng các phươngpháp đã có để áp dụng cho bài toán đặt ra, phương pháp này giúp kiểm tratính chính xác và tính khả thi của những thuật toán được đề xuất trong đề tài,
là cơ sở để đánh giá tính hiệu quả của phương pháp được đề xuất
6 Ý nghĩa khoa học và ý nghĩa thực tiễn của đề tài
Trang 11Trong quá trình lưu trữ, trao đổi thông tin có thể kiểm soát được thôngtin đã bị sửa đổi hay chưa Và chữ ký số là một chủ đề ứng dụng nhiều trongthời đại xây dựng chính phủ điện tử.
7 Cấu trúc đề tài
Ngoài phần mở đầu, kết luận, danh mục tài liệu tham khảo và phụ lục,
đề tài được cấu trúc gồm 3 chương:
Chương 1: Tổng quan về chữ ký số
Chương 2: Chuẩn chữ ký số DSS – Hoa Kỳ
Chương 3: Xây dựng chương trình tạo và xác thực chữ ký số theochuẩn DSS
Trang 121.1.2 Vai trò của chữ ký số
Chữ ký số dùng cho các văn bản số, cho biết toàn bộ văn bản đã được
ký bởi người ký, và người khác có thể xác minh điều này Chữ ký số tương tựnhư chữ ký viết tay thông thường, đảm bảo:
- Tính bảo mật: Chỉ những người có quyền mới có thể đọc đượcnội dung;
- Tính toàn vẹn: Kẻ trung gian làm biến đổi nội dung thông điệp trongquá trình gửi đi, người nhận biết được thông điệp đã bị sửa đổi;
- Tính nhận biết: xác định được danh tính của người gửi thông điệp;
- Tính chống chối bỏ: người gửi thông điệp không thể phủ nhận đượcthông điệp đó là của họ
Tuy nhiên, chữ ký số và chữ ký viết tay thông thường có các điểm khácnhau cơ bản sau:
Bảng TỔNG QUAN VỀ CHỮ KÝ SỐ.1 So sánh giữa chữ ký số và chữ ký viết
tay
1.1.3 Sơ đồ tổng quan
Một thuật toán ký số thường gồm: quy trình tạo chữ ký và xác thực chữ
ký Người ký sử dụng quy trình tạo chữ ký để tạo ra 1 chữ ký trên thông điệp,người xác thực sử dụng quy trình xác thực để xác thực chữ ký số
So sánh với chữ ký mẫu Thông qua một thuật toán
kiểm tra công khaiBản sao tài
liệu
Không đồng nhất với bản gốc Đồng nhất với bản gốc
Trang 13b) Chức năng
Mật mã học hiện đại giúp đảm bảo các chức năng sau đây:
- Tính bí mật: chỉ những người có thẩm quyền mới được truy nhập vàothông tin;
- Tính toàn vẹn: thông tin và dữ liệu chỉ có thể được sửa bởi nhữngngười có thẩm quyền;
- Tính xác thực: người gửi (hoặc người nhận) có thể chứng minh đúng
họ là người gửi (hoặc người nhận);
- Tính chống chối bỏ: người gửi hoặc người nhận không thể chối bỏviệc đã gửi hoặc nhận thông tin
Trang 14c) Sơ đồ tổng quan
Hệ mật mã là bộ gồm 5 thành phần (P, C, K, E, D) trong đó:
- P (Plaintext): bản rõ (dữ liệu gốc);
- C (Ciphertext): bản mã (dữ liệu đã được mã hóa);
- K (Key): khóa là thông tin dùng cho quy trình giải mã và mã hóa;
- E (Encryption): mã hóa là quá trình biến đổi thông tin từ dạng ban đầu
có thể hiểu được thành dạng “không thể hiểu được”;
- D (Decryption): giải mã là quá trình khôi phục lại thông tin ban đầu
sau khi đã được mã hóa
d) Phân loại
Theo SP800-57 [9] bàn về quản lý khóa của NIST phát hành tháng 1năm 2016, chia thuật toán mã hóa thành 3 loại căn cứ vào số lượng khóa được
sử dụng giải thuật: hàm băm, mật mã khóa công khai và mật mã khóa bí mật
- Mật mã khóa bí mật (SKC): Sử dụng một khóa duy nhất cho cả mãhóa và giải mã; còn được gọi là mã hóa đối xứng Chủ yếu được sử dụng
để bảo mật;
- Mật mã khóa công khai (PKC): sử dụng một khóa để mã hóa và mộtkhóa khác để giải mã; còn được gọi là mã hóa bất đối xứng Chủ yếu được sửdụng để xác thực, chống chối bỏ;
- Hàm băm: không yêu cầu khóa cho hoạt động cơ bản, tạo ra một giátrị băm nhỏ từ một thông điệp lớn theo 1 chiều (nghĩa là rất khó để tìm mộtđầu vào khi biết trước đầu ra) Hàm băm chủ yếu được sử dụng để đảm bảotính toàn vẹn của thông tin
Trang 15Hình TỔNG QUAN VỀ CHỮ KÝ SỐ.1 Phân loại giải thuật mã hóa theo số
lượng khóa 1.2.1.2 Mật mã khóa công khai
Mật mã khóa công khai được cho là sự phát triển mới quan trọng nhất
về mật mã trong 300 - 400 năm qua PKC hiện đại lần đầu tiên được mô tảcông khai bởi Standford Martin Hellman và nghiên cứu sinh Whitfield Diffievào năm 1976 Bài báo của họ mô tả một hệ thống mật mã hai khóa, trong đóhai bên có thể tham gia giao tiếp an toàn qua kênh liên lạc không an toàn màkhông phải chia sẻ một chìa khóa bí mật PKC phụ thuộc vào sự tồn tại củahàm một chiều, hoặc hàm toán học dễ tính toán trong khi chiều ngược lại của
nó tương đối khó tính
PKC sử dụng hai khóa có liên quan đến nhau về mặt toán học, mặc dùkhi biết thông tin một khóa thì cũng không dễ dàng để xác định khóa kia Mộtkhóa được sử dụng để mã hóa bản rõ và khóa còn lại được sử dụng để giải mãbản mã Điểm quan trọng ở đây không quan trọng khóa nào được sử dụngtrước mà cả hai khóa được yêu cầu để quá trình hoạt động
Trang 16Các thuật toán mã hóa khóa công khai được sử dụng ngày nay để traođổi khóa hoặc chữ ký số: SHA thông thường là SHA-1 với RSA, thuật toánchữ ký số DSA, mật mã đường cong Eliptic…
1.2.2 Hàm băm
1.2.2.1 Giới thiệu
Hàm băm là một loại mật mã thứ ba bên cạnh mật mã khóa công khai
và mật mã khóa bí mật, cái mà chúng ta gọi là mật mã không khóa Hàm băm
là giải thuật sinh ra các giá trị băm có kích thước cố định tương ứng với khối
dữ liệu đầu vào có kích thước tùy ý Đôi khi mã băm được gọi là bản tóm tắtthông điệp hay vân tay điện tử, đóng vai trò như một khóa để phân biệt cáckhối dữ liệu Khi có một sự thay đổi nhỏ trong chuỗi đầu vào thì giá trị băm
- R: miền giá trị của hàm băm
Hàm băm h(M) không phải là đơn ánh, vì số lượng phần tử D lớn hơn miền giá trị R Như vậy sẽ có tồn tại cặp đầu vào khác nhau mà cho cùng giá trị băm Giả sử, miền xác định của h(M) có chiều dài là t, R có chiều dài cố định là n bit ( t>n ) Nếu h(M) là ngẫu nhiên và giá trị đầu ra có xác suất như
nhau thì có khoảng 2t n- giá trị đầu vào ánh xạ vào mỗi giá trị đầu ra Xác suất
để 2 giá trị đầu vào có chiều dài bằng nhau ánh xạ vào cùng 1 giá trị đầu ra là
2- n Nếu n đủ lớn, thì xác suất này là rất nhỏ Như vậy, khi biết giá trị băm thì rất khó để tìm ra một giá trị đầu vào có cùng giá trị băm đó nếu chọn h(M) thích hợp, n đủ lớn [13]
Một hàm băm tốt phải có các thuộc tính sau:
Trang 17- Tính một chiều: cho trước một đầu ra y, không thể tìm được M’ sao
cho h M( ')= ;y
- Tính chống xung đột yếu: Với mọi giá trị đầu vào M cho trước, không
thể tìm được bất cứ một giá trị M' � nào sao cho M h M( )=h M( ');
- Tính chống xung đột mạnh: Không thể tìm được 2 giá trị đầu vào M, M’ khác nhau sao cho chúng có cùng hàm băm tức là h M( )=h M( ')
1.2.2.2 Chuẩn hàm băm an toàn
Chuẩn hàm băm an toàn SHS-FIPS PUB 180 được NIST đưa ra lần đầuvào 11/5/1993, phiên bản thứ 2 là FIPS PUB 180-2 được đưa ra ngày1/8/2002, phiên bản thứ 3 FIPS PUB 180-3 đưa ra 10/2008 FIPS PUB 180-1chỉ ra giải thuật hàm băm SHA-1; FIPS PUB 180-2 chỉ rõ 4 giải thuật hàmbăm an toàn SHA-1, SHA-256, SHA-384, SHA-512; FIPS PUB 180-3 chỉ ra
5 chuẩn SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 [12]
Các giải thuật đều là hàm băm 1 chiều và xử lý thông điệp để tạo ramột thông điệp thu gọn và đảm bảo được tính toàn vẹn của thông điệp, điềunày rất có ích cho việc tạo và xác thực chữ ký số, cũng như trong việc tạo các
số ngẫu nhiên Mỗi giải thuật đều gồm 2 bước: tiền xử lý và tính toán băm.Bước tiền xử lý gồm các công việc như độn tin, chia khối, thiết lập giá trịkhởi tạo dùng cho tính toán băm Bước tính toán băm tạo ra 1 danh sáchthông điệp từ bản tin độn và sử dụng cơ chế đó với các hàm, hằng và các phéptoán để tạo ra một chuỗi các giá trị băm Giá trị băm cuối cùng được tạo rasau bước tính toán băm sẽ là thông điệp rút gọn
Bảng dưới đây chỉ ra các đặc điểm cơ bản của bốn giải thuật hàm băm
an toàn
Bảng TỔNG QUAN VỀ CHỮ KÝ SỐ.2 So sánh các hàm băm trong chuẩn
băm an toàn
Trang 18Kết luận chương 1
Trong chương 1, khóa luận đã chỉ ra vai trò của chữ ký số như đảm bảotính bảo mật, toàn vẹn, nhận biết và chống chối bỏ; cũng như sơ đồ tổng quancủa một lược đồ chữ ký số Chương một còn trình bày cơ sở hình thành chữ
ký số, về mật mã khóa công khai và hàm băm
Chữ ký số với những tính năng ưu việt, đóng một vai trò quan trọngtrong kế hoạch phát triển thương mại điện tử và Chính Phủ điện tử nói chúng,trong đó có chữ ký số Hoa Kỳ nói riêng Chữ ký số Hoa Kỳ được áp dụngrộng rãi trên toàn thế giới Do đó, trong chương 2 khóa luận trình bày vềchuẩn chữ ký số DSS của Hoa Kỳ
Giải thuật Kích
thước thông điệp (bits)
Kích thước khối (bits)
Kích thước từ (bits)
Kích thước thông điệp thu gọn (bits)
Bit an toàn (bits)
Trang 19CHƯƠNG 2 CHUẨN CHỮ KÝ SỐ DSS - HOA KỲ
2.1 Giới thiệu chung
Nhằm mục đích tăng cường việc sử dụng các dịch vụ thương mại điện
tử của quốc gia cũng như trong các hoạt động giao dịch an toàn trên mạng,NIST đã đưa ra chuẩn chữ ký số DSS vào ngày 19/5/1994 và được chấp nhận
là tiêu chuẩn áp dụng trong các giao dịch an toàn trên mạng từ ngày1/12/1994
Tính tới thời điểm hiện tại, chuẩn chữ ký số có các phiên bản: FIPSPUB 186, FIPS PUB 186-1 công bố ngày 15/12/1998, FIPS PUB 186-2 đưa
ra ngày 27/1/2000, FIPS PUB 186-3 được đưa ra vào tháng 6/2009, phiên bảnmới nhất hiện nay là FIPS PUB 186-4 công bố 7/2013 [13-15]
Sự khác nhau giữa các phiên bản chữ ký số đã có của DSS được biểudiễn dưới đây:
Bảng CHUẨN CHỮ KÝ SỐ DSS - HOA KỲ.3 Sự khác nhau giữa các phiên
bản chữ ký số của DSS
Phiên bản Cặp (L, N) (bits) Nội dung
giải thuật
Chuẩn hàm băm sử dụng
FIPS 180-3
Trang 20Sơ đồ tổng quan việc tạo và xác thực chữ ký số theo chuẩn DSS đượcminh họa như sau:
Hình CHUẨN CHỮ KÝ SỐ DSS - HOA KỲ.2 Quy trình tạo và xác thực chữ
ký số theo chuẩn DSS
Một thuật toán ký số gồm quy trình tạo chữ ký và xác thực chữ ký
Người ký sử dụng quy trình Tạo chữ ký để tạo ra 1 chữ ký số trên thông điệp; người xác thực sử dụng quy trình Xác thực để xác thực chữ ký số Mỗi người
ký sở hữu 1 cặp khóa bao gồm: khóa công khai, khóa bí mật Khóa bí mật sử dụng trong quy trình tạo chữ ký Chủ sở hữu cặp khóa là thực thể duy nhất
được ủy quyền sử dụng khóa riêng để tạo chữ ký số Để ngăn chặn các thực
thể khác tự xưng là chủ sở hữu cặp khóa và sử dụng khóa bí mật để tạo chữ
ký lừa đảo thì khóa bí mật phải được giữ thật cẩn thận Khóa công khai được
sử dụng trong quá trình xác minh chữ ký Khóa công khai không cần phải giữ
bí mật, nhưng tính toàn vẹn của nó phải được duy trì Bất cứ ai cũng có thể
xác minh chính xác thông điệp đã được ký bằng cách sử dụng khóa công khai.
Trong cả quá trình tạo và xác minh chữ ký, thông điệp đã được ký đượcchuyển đổi thành một chuỗi có độ dài cố định bằng hàm băm đã được công
nhận Cả thông điệp gốc và chữ ký số đều được cung cấp cho người xác thực.
Trang 21Người xác thực yêu cầu đảm bảo khóa công khai được sử dụng để xác thực
chữ ký thực sự thuộc sở hữu tuyên bố đã tạo chữ ký điện tử, một ràng buộccủa danh tính chủ sở hữu và khóa công khai của chủ sở hữu sẽ được thực hiện
để cung cấp sự đảm bảo này Người xác thực cũng yêu cầu đảm bảo rằng chủ
sở hữu cặp khóa thực sự sở hữu khóa bí mật được liên kết với khóa công khai
và khóa công khai là khóa chính xác về mặt toán học.
Để có được các đảm bảo này, người xác thực được đảm bảo rằng chữ
ký số có thể được xác thực chính xác bằng khóa công khai, và chữ ký số là
hợp lệ hay không (nghĩa là, chủ sở hữu cặp khóa thực sự đã ký lên thông điệphay không) Xác thực chữ ký số bao gồm cả xác minh (toán học) của chữ ký
số là đúng hay không và thông điệp có toàn vẹn hay không
Quá trình để tạo hoặc xác thực chữ ký số phù hợp với tiêu chuẩn nàyđược đưa ra như sau:
2.1.1 Khởi tạo ban đầu
Hình CHUẨN CHỮ KÝ SỐ DSS - HOA KỲ.3 Quy trình khởi tạo ban
đầu
Trang 22Tất cả các bên tham gia tạo chữ ký số thực hiện quy trình thiết lập banđầu như sau:
- Đối với thuật toán DSA và ECDSA, người ký trước tiên phải có đượccác tham số miền thích hợp, bằng cách tự tạo các tham số miền hoặc bằngcách lấy các tham số miền do thực thể khác tạo ra Có được tập hợp các tham
số miền, người ký sẽ có được sự đảm bảo về tính hợp lệ của các tham số miềnđó; phương pháp được phê duyệt để có được sự đảm bảo này được cung cấptrong tiêu chuẩn SP 800-89 Lưu ý rằng thuật toán RSA không sử dụng tham
số miền
- Mỗi người ký sẽ có được một cặp khóa chữ ký số cho thuật toán chữ
ký số thích hợp, bằng cách tự tạo cặp khóa hoặc bằng cách lấy cặp khóa từmột bên đáng tin cậy Người ký được phép sử dụng cặp khóa và là chủ sở hữucủa cặp khóa đó Lưu ý rằng nếu một bên đáng tin cậy tạo cặp khóa, thì bên
đó cần được tin cậy để không giả danh thành chủ sở hữu
- Sau khi có được cặp khóa, người ký (hiện là chủ sở hữu cặp khóa) sẽ
có được 2 đảm bảo:
+ Đảm bảo về tính hợp lệ của khóa bí mật;
+ Đảm bảo rằng anh ta thực sự sở hữu khóa bí mật có liên quan tớikhóa công khai
Các phương pháp được phê duyệt để có được các đảm bảo này đượccung cấp trong tiêu chuẩn SP 800-89 [8]
Một lược đồ chữ ký số yêu cầu đảm bảo danh tính của người ký Tùythuộc vào môi trường mà chữ ký số được tạo và xác minh, chủ sở hữu cặp
khóa (nghĩa là, người ký) có thể đăng ký khóa công khai và thiết lập bằng chứng nhận dạng với một bên đáng tin cậy Ví dụ: cơ quan chứng thực (Certification Authority - CA) có thể ký thông tin xác thực chứa chủ sở hữu
và khóa công khai của chủ sở hữu để tạo chứng chỉ sau khi được cung cấp
Trang 23bằng chứng về chủ sở hữu danh tính Các hệ thống chứng nhận thông tin xácthực và phân phối chứng chỉ nằm ngoài phạm vi của Tiêu chuẩn này.
2.1.2 Tạo chữ ký số
Hình CHUẨN CHỮ KÝ SỐ DSS - HOA KỲ.4 Quy trình tạo chữ ký số
Trước khi tạo chữ ký số, một bản tóm tắt thông điệp được tạo ra bằngcách sử dụng hàm băm được phê duyệt
Tùy thuộc vào thuật toán ký số sẽ được sử dụng, các thông tin bổ sungcần thiết sẽ được xác định, lựa chọn Ví dụ, một số bí mật ngẫu nhiên trên mỗithông điệp sẽ được lựa chọn sử dụng trong thuật toán DSA và ECDSA
Sử dụng thuật toán ký số đã chọn, khóa riêng, bản tóm tắt thông điệp vàbất kỳ thông tin nào khác theo yêu cầu từng thuật toán chữ ký số, chữ ký số sẽđược tạo theo tiêu chuẩn này Người ký hoàn toàn có thể thực hiện xác thựcchữ ký số bằng quy trình xác thực chữ ký số có sử dụng khóa công khai Hoạtđộng xác thực này đóng vai trò là bước kiểm tra cuối cùng để phát hiện cáclỗi tính toán trong quá trình tạo chữ ký khác mà chưa bị phát hiện; hoạt độngxác thực này là rất cần thiết khi ký một thông điệp có giá trị cao, khi nhiều
Trang 24người dùng dự kiến sẽ xác thực chữ ký hoặc nếu người xác thực sẽ xác thựcchữ ký sau một thời gian nữa.
2.1.3 Xác thực chữ ký số
Hình CHUẨN CHỮ KÝ SỐ DSS - HOA KỲ.5 Quy trình xác thực chữ ký số
Hình 2.4 mô tả quá trình xác thực chữ ký số Lưu ý rằng hình vẽ mô tảquá trình xác thực thành công (nghĩa là, không có lỗi nào được phát hiện)
Để xác thực chữ ký số, người xác thực sẽ lấy khóa công khai của người
ký, (thường) dựa trên danh tính được yêu cầu Nếu DSA hoặc ECDSA đãđược sử dụng để tạo chữ ký số, người xác thực cũng sẽ có được các tham sốmiền Khóa công khai và các tham số miền có thể được lấy trực tiếp từ người
ký, hoặc từ một chứng chỉ được tạo bởi một bên đáng tin cậy (ví dụ: cơ quanchứng thực CA) Bản tóm tắt thông điệp sẽ được tạo trên dữ liệu có chữ kýđược xác thực (nghĩa là không phải chữ ký số nhận được) bằng cách sử dụngcùng hàm băm được sử dụng trong quá trình tạo chữ ký số Sử dụng thuật
Trang 25toán ký số thích hợp, các tham số miền phù hợp, khóa công khai và bản tómtắt thông điệp đã được tính toán, chữ ký số nhận được sẽ được xác thực theoTiêu chuẩn này Nếu quá trình xác thực thất bại, không thể suy luận về việc
dữ liệu hoặc chữ ký số là không chính xác, trừ khi sử dụng khóa công khaiđược chỉ định và định dạng chữ ký được chỉ định mà chữ ký số không thểđược xác thực cho dữ liệu đó, lúc đó mới xác định chắc chắn dữ liệu đã khôngcòn nguyên vẹn
Trước khi chấp nhận chữ ký số được xác thực là hợp lệ, người xác thựcphải đảm bảo:
- Đảm bảo về danh tính đã được xác nhận của người ký tên;
- Đảm bảo tính hợp lệ của các tham số miền (đối với DSA và ECDSA);
- Đảm bảo tính hợp lệ của khóa công khai;
- Đảm bảo rằng người ký thực sự sở hữu khóa bí mật được sử dụng đểtạo chữ ký số tại thời gian mà chữ ký được tạo ra
Các phương pháp để người xác thực có được các đảm bảo này đượccung cấp trong tiêu chuẩn SP 800-89 [8] Lưu ý rằng đảm bảo tính hợp lệ củatham số miền có thể đã đạt được trong quá trình thiết lập ban đầu
Nếu quá trình xác thực thành công, chữ ký số và dữ liệu đã ký sẽ đượccoi là hợp lệ Tuy nhiên, nếu quá trình xác thực không thành công, chữ ký số
sẽ được coi là không hợp lệ Chính sách của một tổ chức sẽ điều chỉnh hànhđộng được thực hiện đối với chữ ký số không hợp lệ
2.2 Thuật toán ký số DSA
2.2.1 Giới thiệu
2.2.1.1 Các tham số DSA
Chữ ký số DSA được tính toán dựa trên các tham số miền: khóa bí mật
x, số bí mật k của mỗi thông điệp, một thông điệp để ký và một hàm băm Việc xác thực chữ ký số sử dụng các tham số miền tương tự: khóa công khai y tương thích với khóa bí mật x đã được sử dụng để tạo chữ ký, thông điệp cần
Trang 26xác thực, hàm băm đã được sử dụng trong tạo chữ ký số Các tham số đượcđịnh nghĩa như sau:
p: số nguyên tố, sao cho 2L-1� � với L là độ dài bit của biến p; p 2L
q: ước số nguyên tố của p1 trong đó với N là độ dài bit
của q;
g: chọn g thỏa mãn g=h(p- 1)/q mod p với1< < - , 1 g p h p 1 ;
x: khóa bí mật, là số nguyên dương tạo ra ngẫu nhiên, thỏa mãn:
0< < - ;x q 1
y: khóa công khai, sao cho y=g xmod p;
k: số bí mật và duy nhất trên mỗi thông điệp, là một số nguyên được tạo
ra ngẫu nhiên thỏa mãn 0 k< < q
2.2.1.2 Lựa chọn kích thước tham số và hàm băm cho DSA
Chuẩn này đưa ra một số lựa chọn cặp L và N (tương ứng là độ dài bit của p và q) như sau:
hơn độ an toàn của cặp (L, N) Khuyến nghị là độ an toàn của cặp (L, N) và độ
an toàn của hàm băm được sử dụng để tạo chữ ký số là như nhau, trừ khi cóthỏa thuận giữa các bên tham gia để sử dụng hàm băm mạnh hơn Khi độ dài
Trang 27đầu ra của hàm băm lớn hơn N, thì N bit ngoài cùng bên trái của khối đầu ra
hàm băm sẽ được sử dụng trong mọi phép tính sử dụng đầu ra hàm băm trongquá trình tạo và xác thực chữ ký số Không nên sử dụng hàm băm có độ an
toàn thấp hơn độ an toàn cặp (L, N) vì điều này làm giảm độ an toàn của quy
trình tạo chữ ký số đến một mức không lớn hơn mức được cung cấp bởi hàmbăm
Mỗi cặp (L, N) được chọn sao cho nó có thể bảo vệ được thông tin
trong toàn bộ quãng thời gian sống của thông tin Theo SP800-57 [9] củaNIST công bố vào tháng 1/2016 chỉ ra cách để lựa chọn kích thước khóa phùhợp với độ bảo mật của thông tin
Bảng CHUẨN CHỮ KÝ SỐ DSS - HOA KỲ.4 Kích thước khóa và thời gian
- Áp dụng: Sử dụng mật mã học để bảo vệ thông tin (ví dụ: mã hóa)
- Xử lý: Sử dụng mật mã học để xử lý thông tin đã được bảo vệ (ví dụ:giải mã)
Các cơ quan khác của Chính phủ liên bang ngoài cơ quan chứng thực
(CA) chỉ nên sử dụng ba cặp (L, N) đầu tiên có giá trị là (1024, 160), (2048,
224), (2048, 256)
Trang 28Bảng CHUẨN CHỮ KÝ SỐ DSS - HOA KỲ.5 Lựa chọn hàm băm cho cặp (L,
N)
Cặp L, N
(Bits)
Bit an toàn (Bits)
Hàm băm
SHA-256SHA-224SHA-384SHA-512
SHA-224SHA-384SHA-512
SHA-384SHA-512
SHA-384SHA-512
2.2.1.3 Các tham số miền của DSA
Giải thuật DSA yêu cầu cặp khóa công khai và bí mật sử dụng cho quátrình tạo và xác thực chữ ký số phải được tạo ra dựa trên một bộ tham số miền
cụ thể Bộ tham số miền có thể phổ biển với một nhóm người hoặc công khai.Người dùng bộ tham số miền bao gồm cả người ký và người xác minh phảiđảm bảo tính hợp lệ của nó trước khi sử dụng Các tham số miền có thể làthông tin công khai nhưng vẫn được quản lý để bảo đảm sự tương thích giữacặp khóa và bộ tham số được duy trì cho tất cả các bên sử dụng cặp khóa đó.Một bộ các tham số miền vẫn có thể cố định trong một khoảng thời gian dài
Bộ tham số miền của DSA là (p, q, g, {domain_parameter_seed, counter})
Trang 29a) Tạo các tham số miền
Các tham số miền được tạo ra bởi người ký hoặc bên thứ ba đáng tincậy như là cơ quan chứng thực CA Tính hợp lệ tham số miền được đảm bảotrước khi tạo khóa, tạo chữ ký số và xác minh chữ ký số
Đầu vào của quy trình tạo tham số miền: giá trị (L, N), đầu ra là các giá trị p và q, cũng như các biến domain_parameter_seed, counter (nếu cần)
b) Quản lý các tham số miền
Mỗi cặp khóa liên kết chính xác với một bộ tham số miền cụ thể Cáctham số miền được bảo vệ khỏi việc bị sửa đổi trái phép cho đến khi khôngcòn cần thiết nữa Các tham số miền giống nhau có thể được sử dụng chonhiều mục đích (ví dụ: các tham số miền giống nhau có thể sử dụng cho cả ký
số và thiết lập khóa) Tuy nhiên việc sử dụng các giá trị khác nhau để tạo g sẽ
giảm rủi ro rằng các cặp khóa được tạo cho một mục đích có thể vô tình được
sử dụng cho mục đích khác
2.2.1.4 Cặp khóa
Mỗi một người ký có một cặp khóa: khóa công khai x và khóa bí mật y
có liên quan với nhau về mặt toán học Khóa bí mật có thể chỉ được sử dụngtrong một khoảng thời gian nhất định (gọi là mật mã khóa bí mật) để tạo chữ
ký, khóa công khai tiếp tục được sử dụng để xác thực chữ ký số được tạo rabởi khóa riêng tương ứng
CHƯƠNG 3 Tạo cặp khóa DSA
Một cặp khóa (x, y) được tạo ra từ một bộ tham số:
Trang 30- Mỗi cặp khóa được tạo ra phải dựa trên một bộ tham số miền;
- Mỗi cặp khóa chỉ được sử dụng để tạo và xác thực chữ ký bằng cáctham số miền liên kết với cặp khóa đó;
- Theo quy định chuẩn này, khóa bí mật chỉ được sử dụng để tạo chữ ký
và được giữ bí mật, khóa công khai được sử dụng để xác minh chữ ký và cóthể được công khai;
- Bên định ký phải đảm bảo có khóa bí mật trước hoặc đồng thời vớiviệc sử dụng nó để tạo chữ ký số;
- Khóa bí mật được bảo vệ tránh việc truy cập, tiết lộ, sửa đổi trái phép;
- Khóa công khai được bảo vệ khỏi việc sửa đổi trái phép (bao gồm cảviệc thay thế);
Ví dụ: chứng chỉ khóa công khai được ký bởi CA có thể cung cấp sựbảo vệ đó
- Người xác thực cần chắc chắn về ràng buộc giữa khóa công khai, cácthành phần miền và chủ sở hữu cặp khóa;
- Người xác minh sẽ có được khóa công khai theo một cách đáng tincậy (ví dụ; từ chứng chỉ được ký bởi CA mà thực thể tin tưởng, hoặc trực tiếp
từ người định ký hoặc được yêu cầu, với điều kiện là thực thể được người xácthực tin tưởng và có thể xác thực được nguồn gốc của thông tin đã ký);
- Người xác thực phải đảm bảo rằng người tuyên bố đã ký lên thôngđiệp là chủ sở hữu thực sự của khóa bí mật được sử dụng để tạo chữ ký;
- Cả người ký và người xác thực chữ ký cần đảm bảo tính hợp lệ củakhóa công khai
3.1.1.1 Số bí mật trên mỗi thông điệp
Một số bí mật k bất kì được tạo ra trên mỗi thông điệp trước khi tạo chữ
ký số, và được sử dụng trong suốt quá trình tạo chữ ký số Số bí mật này sẽ
Trang 31được bảo vệ khỏi việc bị tiết lộ, sửa đổi trái phép k- 1 là phần tử nghịch đảo
của k theo modulo q, 0 k< - 1< và q 1 (= k k- 1 mod )q Phần tử nghịch đảo
này cũng được sử dụng trong quá trình tạo chữ ký
k và k- 1 sẽ được tính toán trước vì tính toán không yêu cầu kiến thức
về thông điệp được ký Khi k và k được tính toán trước, tính bí mật và tính- 1
toàn vẹn của nó sẽ được bảo vệ
Chữ ký của thông điệp M là cặp số (r, s) được tính toán như sau:
- [B1]: Lựa chọn một số ngẫu nhiêu k (0 k< < cho mỗi thông điệp.q)