Tải bản đầy đủ (.pdf) (76 trang)

hạ tầng khóa công khai (PKI) triển khai và ứng dụng trong các giao dịch điện tử

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.79 MB, 76 trang )

LÝ LỊCH KHOA HỌC


I. LÝ LỊCH SƠ LƯỢC
Họ và tên: NGUYỄN QUANG THẮNG Giới tính: NAM
Ngày, tháng, năm sinh: 17/11/10978 Nơi sinh: HÀ NỘI
Quê quán:CỔ NHUẾ - TỪ LIÊM – HÀ NỘI Dân tộc: KINH
Học vị cao nhất: ðẠI HỌC Năm, nước nhận học vị: 2007,VIỆT NAM
Chức danh khoa học cao nhất: Năm bổ nhiệm:
Chức vụ (hiện tại hoặc trước khi nghỉ hưu):
ðơn vị công tác (hiện tại hoặc trước khi nghỉ hưu):
Chỗ ở riêng hoặc ñịa chỉ liên lạc:Nhà 52, ngõ 15, phố Phương Mai, quận ðống ða, HN.
ðiện thoại liên hệ: NR (04)38525399, Dð: 0945369369
E-mail:

II. QUÁ TRÌNH ðÀO TẠO
1. ðại học:
Hệ ñào tạo: ðẠI HỌC
Nơi ñào tạo: TRƯỜNG ðẠI HỌC QUỐC GIA HÀ NỘI
Ngành học: KHOA ðIỆN TỬ VIỄN THÔNG
Nước ñào tạo: VIỆT NAM Năm tốt nghiệp: 2001 Loại: Trung Bình-Khá

Thời gian ñào tạo Nơi ñào tạo Tốt nghiệp hệ, loại,
năm cấp bằng
Năm 1997 ñến năm 2001
TRƯỜNG ðẠI HỌC QUỐC GIA HÀ NỘI
Ngành học: ðIỆN TỬ VIỄN THÔNG
Hệ: ðại học
Loại: Trung bình- Khá
Năm: 2001



2. Sau ñại học
- Bằng Thạc sĩ chuyên ngành: Năm cấp bằng:
Nơi ñào tạo:
- Bằng Tiến sĩ/ Phó tiến sĩ chuyên ngành: Năm cấp bằng:
Nơi ñào tạo:
- Tên chuyên ñề luận án bậc cao nhất:
3. Ngoại ngữ:
1. ANH VĂN Mức ñộ sử dụng: B



III. QUÁ TRÌNH CÔNG TÁC CHUYÊN MÔN

Thời gian Nơi công tác Công việc ñảm nhiệm
Từ 5/2001 ñến 9/2001 Hệ trung cấp – Trung tâm
thực hành ñiên tử tin học –
ðH Mở Hà Nội
Phụ trách phòng máy tính
9-2001 ñến 4-2002 Công ty TNHH Sun Việt Kỹ sư hệ thống – Văn phòng miền
Bắc
4-2002 ñến 2-2003 Công ty MiTec – Bộ khoa
học công nghệ
Cán bộ dự án
2-2003 ñến 9-2009 TT Thống kê Tin học Hàng
Không – TCT Hàng không
Việt Nam
Tổ trưởng tổ quản trị mạng WAN
và tổng ñài
9-2009 ñến 7-2011 Trung tâm công nghệ thông

tin – Ngân hàng Xăng dầu
PGBANK
Trưởng bộ phận Bảo mật và Quản
trị hệ thống
7-2011 ñến nay Công ty PLANEX Trưởng dự án – Quản trị hệ thống
công nghệ thông tin
IV. QUÁ TRÌNH NGHIÊN CỨU KHOA HỌC
1. Các ñề tài nghiên cứu khoa học ñã tham gia:
TT Tên ñề tài nghiên cứu/
Lĩnh vực ứng dụng
Năm
hoàn
thành
ðề tài cấp
(NN, Bộ,
ngành,
trường)
Trách nhiệm tham gia
trong ñề tài

2. Các công trình khoa học ñã công bố: (tên công trình, năm công bố, nơi công bố )
Hà nội, ngày 30 tháng 09 năm 2011
Xác nhận của cơ quan Người khai kí tên
(Ghi rõ chức danh, học vị)





NGUYỄN QUANG THẮNG














LỜI CẢM ƠN

Tôi xin gửi lời cảm ơn chân thành nhất tới PGS.TS Phạm Minh Việt. Xin cảm ơn
thầy ñã cho tôi những ñịnh hướng và những ý kiến rất quý báu ñể tôi hoàn thành ñược
khóa luận tốt nghiệp này.
Tôi xin tỏ lòng biết ơn sâu sắc tới các thầy cô, bạn bè ñã dìu dắt, giúp ñỡ tôi tiến
bộ trong suốt quá trình làm khóa luận tốt nghiệp. Xin cảm ơn gia ñình và bè bạn,
những người luôn khuyến khích và giúp ñỡ tôi trong mọi hoàn cảnh khó khăn.
Tôi xin cảm ơn các thày cô - Khoa Kỹ thuật ñiện tử - ðại Học Mở Hà Nội ñã hết
sức tạo ñiều kiện cho tôi trong quá trình học, làm và hoàn thành khóa luận này.
































MỤC LỤC
LỜI CẢM ƠN 3
TÓM TẮT ðỀ TÀI 7
DANH MỤC TỪ VIẾT TẮT 7
DANH MỤC HÌNH VẼ VÀ BẢNG 9
LỜI MỞ ðẦU 9

CHƯƠNG I : TỔNG QUAN HẠ TẦNG KHÓA CÔNG KHAI (PUBLISH KEY
INFRASTRUCTURE - PKI) 10
1.1. Giới thiệu chung về hạ tầng khóa công khai 10
1.1.1. Khái niệm 11
1.1.2. Lịch sử hình thành 11
1.1.3. Mục tiêu và các chức năng chính 12
1.1.4. Mô hình tiêu biểu 12
1.2. Tìm hiểu mật mã học khoá công khai 12
1.2.1. Mật mã học khoá công khai 12
1.2.1.1. Mật mã học khóa công khai (Phi ñối xứng) là gì 12
1.2.1.2. Mục ñích của hệ thống mã hoá công khai : 13
1.2.2. Ứng dụng 14
1.3. Thuật toán và ñộ phức tạp thuật toán 14
1.3.1. Thuật toán 14
1.3.2. Phân tích thuật toán 15
1.3.2.1. Tính hiệu quả của thuật toán 15
1.4. Hạ tầng khóa công khai (PKI) 15
1.4.1. PKI là gì 15
1.4.2. Cở sở hạ tầng khóa công khai 16
1.5. Một vài kiến trúc và công nghệ PKI hiện hành 17
1.5.1 Một số ứng dụng 17
1.5.2. Một số hệ thống PKI 18
CHƯƠNG II : HẠ TẦNG KHÓA CÔNG KHAI (PKI) và VẤN ðỀ CẤP PHÁT
CHỨNG THỰC SỐ 20
2.1. Hàm băm mật mã học 20
2.1.1. Hàm băm 20
2.1.2. Hàm băm mật mã học 20
2.1.3. ðảm bảo tính toàn vẹn dữ liệu 20
2.1.4. Một số hàm băm thông dụng 20
2.1.4.1.Thuật toán hàm băm MD5 20

2.1.4.2.Chuẩn băm an toàn SHS 22
2.2. Mã hóa thông tin 23
2.3. Chữ ký số 23
2.3.1. Chữ ký số 23
2.3.2. Tạo và kiểm tra chữ ký số 24
2.3.2.1.Các thuật toán chữ ký số thông dụng 24
2.3.2.2.Thuật toán chữ ký số RSA 24
2.3.2.3.Thuật toán chữ ký số DSA 24
2.4. Chứng thực số 28
2.4.1 Giới thiệu 29
2.4.2 Chứng chỉ khoá công khai X.509 30
2.4.3 Thu hồi chứng chỉ 33
2.4.4 Chính sách của chứng chỉ 34
2.4.5 Công bố và gửi thông báo thu hồi chứng chỉ 34
2.5. Cấu trúc hệ thống PKI 36
2.5.1. Tổng quan về PKI 36
2.5.2. Các thành phần của PKI 37
2.5.2.1.Tổ chức chứng thực (Certification Authority) 37
2.5.2.2 Trung tâm ñăng ký (Registration Authorities) 38
2.5.2.3 Thực thể cuối ( Người giữ chứng chỉ và Clients) 38
2.5.2.4 Hệ thống lưu trữ (Repositories) 38
2.5.3 Chức năng cơ bản của PKI 39
2.5.3.1 Chứng thực (certification) 39
2.5.3.2 Thẩm tra (validation) 39
2.5.3.3 Một số chức năng khác 39
2.6. Ứng dụng của hạ tầng khóa công khai và cấp phát chứng thực 42
2.6.1. Mã hóa 42
2.6.2. Chống giả mạo 42
2.6.3. Xác thực 43
2.6.4. Chống chối bỏ nguồn gốc 43

2.6.5. Chữ ký ñiện tử 43
2.6.6. Bảo mật website 44
2.6.7. ðảm bảo phần mềm 44
2.7. Mô hình tin cậy cho PKI 44
2.7.1. Mô hình CA ñơn 44
2.7.2. Mô hình phân cấp 45
2.7.3. Mô hình mắt lưới (xác thực chéo) 46
2.7.4. Mô hình Hub và Spoke (Bridge CA) 47
2.7.5. Mô hình Web (Trust Lists) 48
2.7.6. Mô hình người sử dụng trung tâm (User Centric Model) 50
CHƯƠNG III: TRIỂN KHAI VÀ ỨNG DỤNG CHỨNG CHỈ SỐ TRONG MỘT SỐ
GIAO DỊCH ðIỆN TỬ 50
2.1. Cài ñặt dịch vụ và Quản lý Certificate Authority (CA) 51
3.1.1. Cài ñặt CA trên Windows Server 2003 51
3.1.2. Quản lý dịch vụ trên CA 54
3.1.2.1.Sử dụng Certificates Snap-in: 54
3.1.2.2.Yêu cầu cấp phát thông qua Web (Web Enrollment) 54
3.1.2.3.Thu hồi chứng chỉ số 55
3.2. Triển khai một số dịch vụ mạng sử dụng CA 56
3.2.1. Dịch vụ Web sử dụng SSL 56
3.2.2. Dịch vụ IPSec 63
3.2.3. Dịch vụ VPN 68
KẾT LUẬN 74
CÁC TÀI LIỆU THAM KHẢO 75
TÓM TẮT ðỀ TÀI

ðề tài “Hạ tầng khóa công khai (PKI), triển khai và ứng dụng trong các giao dịch
ñiện tử”.
Hạ tầng khóa công khai là một bộ khung cơ bản ñể xây dựng mô hình an ninh, bảo
mật trong thương mại ñiện tử. Tìm hiểu vai trò của chứng thực số trong hạ tầng khóa công

khai và vai trò của chứng thực số trong các giao dịch trực tuyến.

Người sử dụng, ngoài
hình thức bảo mật thông thường như mật khẩu, cũng phải dùng một chứng thực số cá nhân
ñể khẳng ñịnh danh tính của mình, xác nhận các hoạt ñộng giao dịch của mình với dịch vụ
ngân hàng, thương mại ñiện tử, dao dịch chứng khoán Chứng thực số sẽ giúp nhà quản lý
ñảm bảo rằng khách hàng không thể chối cãi các giao dịch của mình, khi họ ñã dùng
chứng thực số. Từ ñó ñặt ra các vấn ñề quản lý (cấp phát,xác thực) thu hồi và cấp phát lại
chứng thực số.
Trong ñề tài tôi sẽ trình bày về các vấn ñề chính xoay quanh vấn ñề hạ tầng khóa
công khai (PKI).
Chương I sẽ giới thiệu vấn ñề và cách tiếp cận giải quyết vấn ñề sẽ trình bày khái
quát về một vài khái niệm cơ bản về mật mã học khóa công khai, hạ tầng khóa công khai,
các khái niệm cơ bản về thuật toán và lý thuyết ñộ phức tạp, một vài công cụ nền tảng của
mật mã học khóa công khai (mã hóa thông tin, hàm băm, chữ ký số).
Chương II của khóa luận sẽ làm rõ hơn các khái niệm, các vấn ñề cơ bản bên trong
một hạ tầng khóa công khai (chứng thực số, các dịch vụ ñăng ký, cấp phát, xác thực, thu
hồi, … khóa công khai); ứng dụng của hạ tầng khóa công khai trong giao dịch ñiện tử ngày
nay, và một vài hệ thống hạ tầng khóa công khai trong thực tế.
Chương III ñặc tả quá trình triển khai và ứng dụng hạ tầng khóa công khai ñơn giản
trong một số giao dịch ñiện tử.
Phần cuối cùng là các kết luận và ñịnh hướng phát triển ñề tài.










DANH MỤC TỪ VIẾT TẮT


PKI Public Key Infrastructure
CA Certificate Authority
RSA Rivest Shamir Adleman
DSA Digital Signature Algorithm
MD5 Message Digest 5
RA Registration Authority
SHA Secure Hash Algorithm
SHS Secure Hash Standard
H Hash function
RFC Request For Comments





DANH MỤC HÌNH VẼ VÀ BẢNG

Hình 1.1: Cấp phát khóa riêng khóa công khai
Hình 1.2: Mã hóa thông tin
Hình 1.3: Tạo và xác thực chữ ký số
Hình 1.4 : Mô hình xây dựng PKI cơ bản
Bảng 1.5 : mô hình xử dụng xác thực
Hình 2.1 : ðặc ñiểm của các thuật toán băm SHA
Bảng 2.2: So sánh thời gian tạo khóa, tạo chữ ký và xác nhận chữ ký của RSA với
DSA
Hình 2.3 : Thời gian xác nhận chữ ký của RSA và DSA

Hình 2.4 : Thời gian tạo chữ ký của RSA và DSA
Hình 2.5 : Thời gian xác nhận chữ ký của RSA và DSA
Hình 2.6 : Chứng chỉ số
Hình 2.7: Khuôn dạng chứng chỉ X.509
Hình 2.8: Nội dung chi tiết của chứng chỉ
Hình 2.9: Khuôn dạng danh sách chứng chỉ bị thu hồi
Hình 2.10: Dịch vụ kiểm tra online
Hình 2.11: Các thành phần PKI
Hình 2.12: ðường dẫn chứng chỉ chéo
Hình 2.13: Mô hình CA ñơn
Hình 2.14: Mô hình phân cấp
Hình 2.15: Mô hình mắt lưới
Hình 2.16: Mô hình Hub và Spoke (Bridge CA)
Hình 2.17: Danh sách các CA tin cậy trong Microsoft






LỜI MỞ ðẦU

Trong kỷ nguyên của công nghệ thông tin, tính phổ biến rộng rãi của Internet một
mặt ñem lại nhiều ứng dụng tiện lợi, thú vị và dần thay thế các hoạt ñộng truyền thống
trong thế giớ thực; mặt khác nó ñặt ra các vấn ñề về sự an toàn, tính tin cậy của những giao
dịch trên Internet. Cơ sở hạ tầng khóa công khai (PKI) có thể ñáp ứng, giải quyết những
vấn ñề cơ bản nhất cho những yêu cầu trên. Dựa trên các dịch vụ cơ bản về chứng thực số
và chữ ký số, một PKI chính là bộ khung của các chính sách, dịch vụ và phần mềm mã
hóa, ñáp ứng nhu cầu bảo mật của người sử dụng.
Không chỉ nằm trong lĩnh vực thương mại ñiện tử, chứng thực số hiện còn ñược sử

dụng như một dạng chứng minh thư cá nhân. Tại các nước công nghệ phát triển, chứng
thực số CA ñược tích hợp vào các chip nhớ nằm trong thẻ căn cước, thẻ tín dụng ñể tăng
cường khả năng bảo mật, chống giả mạo, cho phép chủ thẻ xác thực danh tính của mình
trên nhiều hệ thống khác nhau, chẳng hạn như xe bus, thẻ rút tiền ATM, kiểm soát hải
quan, ra vào chung cư .v.v.
Với các ñặc ñiểm nổi bật như không thể giả mạo, chứng thực nguồn gốc xuất xứ, các
quốc gia phát triển ñều ñã sử dụng chứng thực số như một bằng chứng pháp lý từ rất sớm.
ðây là yếu tố rất quan trọng ñể có thể phát triển thương mại ñiện tử, vì không ai dám mạo
hiểm với tiền của mình, khi họ chưa chắc chắn ñược rằng các hoạt ñộng ñó có ñược ñảm
bảo, và có ñược pháp luật công nhận hay không
.
Trong bản ñề tài tốt nghiệp này, tác giả xin trình bày tổng quát về cơ sở hạ tầng khóa
công khai và ứng dụng của nó trong một số giao dịch ñiện tử. Qua ñó trình bày một số
phương pháp triển khai và ứng dụng của một hạ tầng khóa công khai (PKI) trong hoạt
ñộng giao dịch ñiện tử.













CHƯƠNG I :
TỔNG QUAN HẠ TẦNG KHÓA CÔNG KHAI

(PUBLISH KEY INFRASTRUCTURE - PKI)

1.1. Giới thiệu chung về hạ tầng khóa công khai
1.1.1. Khái niệm

Trong mật mã học, hạ tầng khóa công khai (tiếng Anh: Public key infrastructure,
viết tắt PKI) là một cơ chế ñể cho một bên thứ 3 (thường là nhà cung cấp chứng thực số)
cung cấp và xác thực ñịnh danh các bên tham gia vào quá trình trao ñổi thông tin. Cơ chế
này cũng cho phép gán cho mỗi người sử dụng trong hệ thống một cặp khóa công
khai/khóa bí mật. Các quá trình này thường ñược thực hiện bởi một phần mềm ñặt tại trung
tâm và các phần mềm phối hợp khác tại các ñịa ñiểm của người dùng. Khóa công khai
thường ñược phân phối trong chứng thực khóa công khai.
Khái niệm hạ tầng khóa công khai (PKI) thường ñược dùng ñể chỉ toàn bộ hệ
thống bao gồm nhà cung cấp chứng thực số (CA) cùng các cơ chế liên quan ñồng thời với
toàn bộ việc sử dụng các thuật toán mật mã hóa khóa công khai trong trao ñổi thông tin.
Tuy nhiên phần sau ñược bao gồm không hoàn toàn chính xác bởi vì các cơ chế trong PKI
không nhất thiết sử dụng các thuật toán mã hóa khóa công khai.
1.1.2. Lịch sử hình thành
Việc Diffie, Hellman, Rivest, Shamir, và Adleman công bố công trình nghiên cứu
về trao ñổi khóa an toàn và thuật toán mật mã hóa khóa công khai vào năm 1976 ñã làm
thay ñổi hoàn toàn cách thức trao ñổi thông tin mật. Cùng với sự phát triển của các hệ
thống truyền thông ñiện tử tốc ñộ cao (Internet và các hệ thống trước nó), nhu cầu về trao
ñổi thông tin bí mật trở nên cấp thiết. Thêm vào ñó một yêu cầu nữa phát sinh là việc xác
ñịnh ñịnh dạng của những người tham gia vào quá trình thông tin. Vì vậy ý tưởng về việc
gắn ñịnh dạng người dùng với chứng thực ñược bảo vệ bằng các kỹ thuật mật mã ñã ñược
phát triển một cách mạnh mẽ.
Nhiều giao thức sử dụng các kỹ thuật mật mã mới ñã ñược phát triển và phân tích.
Cùng với sự ra ñời và phổ biến của World Wide Web, những nhu cầu về thông tin an toàn
và nhận thực người sử dụng càng trở nên cấp thiết. Chỉ tính riêng các nhu cầu ứng dụng
cho thương mại (như giao dịch ñiện tử hay truy cập những cơ sở dữ liệu bằng trình duyệt

web) cũng ñã ñủ hấp dẫn các nhà phát triển lĩnh vực này. Taher ElGamal và các cộng sự
tại Netscape ñã phát triển giao thức SSL (https trong ñịa chỉ web) trong ñó bao gồm thiết
lập khóa, nhận thực máy chủ Sau ñó, các thiết chế PKI ñược tạo ra ñể phục vụ nhu cầu
truyền thông an toàn.
Các nhà doanh nghiệp kỳ vọng vào một thị trường hứa hẹn mới ñã thành lập những
công ty hoặc dự án mới về PKI và bắt ñầu vận ñộng các chính phủ ñể hình thành nên
khung pháp lý về lĩnh vực này. Một dự án của American Bar Association ñã xuất bản một
nghiên cứu tổng quát về những vấn ñề pháp lý có thể nảy sinh khi vận hành PKI (xem
thêm: các hướng dẫn chữ ký số ABA). Không lâu sau ñó, một vài tiểu bang của Hoa kỳ mà
ñi ñầu là Utah (năm 1995) ñã thông qua những dự luật và quy ñịnh ñầu tiên. Các nhóm bảo
vệ quyền lợi người tiêu dùng thì ñặt ra các vấn ñề về bảo vệ quyền riêng tư và các trách
nhiệm pháp lý.
Tuy nhiên, các luật và quy ñịnh ñã ñược thông qua lại không thống nhất trên thế
giới. Thêm vào ñó là những khó khăn về kỹ thuật và vận hành khiến cho việc thực hiện
PKI khó khăn hơn rất nhiều so với kỳ vọng ban ñầu.
Tại thời ñiểm ñầu thế kỷ 21, người ta nhận ra rằng các kỹ thuật mật mã cũng như
các quy trình/giao thức rất khó ñược thực hiện chính xác và các tiêu chuẩn hiện tại chưa
ñáp ứng ñược các yêu cầu ñề ra.
Thị trường PKI thực sự ñã tồn tại và phát triển nhưng không phải với quy mô ñã
ñược kỳ vọng từ những năm giữa của thập kỷ 1990. PKI chưa giải quyết ñược một số vấn
ñề mà nó ñược kỳ vọng. Những PKI thành công nhất tới nay là các phiên bản do các chính
phủ thực hiện.
1.1.3. Mục tiêu và các chức năng chính
PKI cho phép những người tham gia xác thực lẫn nhau và sử dụng thông tin từ các
chứng thực khóa công khai ñể mật mã hóa và giải mã thông tin trong quá trình trao ñổi.
Thông thường, PKI bao gồm phần mềm máy khách (client), phần mềm máy chủ (server),
phần cứng (như thẻ thông minh) và các quy trình hoạt ñộng liên quan. Người sử dụng cũng
có thể ký các văn bản ñiện tử với khóa bí mật của mình và mọi người ñều có thể kiểm tra
với khóa công khai của người ñó. PKI cho phép các giao dịch ñiện tử ñược diễn ra ñảm
bảo tính bí mật, toàn vẹn và xác thực lẫn nhau mà không cần phải trao ñổi các thông tin

mật từ trước.

1.1.4. Mô hình tiêu biểu
Hầu hết các hệ thống PKI quy mô doanh nghiệp ñều dựa trên các chuỗi chứng thực
ñể xác thực các thực thể. Chứng thực của người dùng sẽ ñược một nhà cung cấp chứng
thực số cấp, ñến lượt nhà cung cấp này lại có chứng thực ñược một nhà cung cấp khác ở
cấp cao hơn tạo ra Hệ thống sẽ bao gồm nhiều máy tính thuộc nhiều tổ chức khác nhau
với các gói phần mềm tương thích từ nhiều nguồn khác nhau. Vì vậy, các tiêu chuẩn là yếu
tố rất quan trọng ñối với hoạt ñộng của các PKI. Hầu hết các tiêu chuẩn về PKI hiện tại
ñược soạn thảo bởi nhóm làm việc PKIX của IETF.
Các hệ thống PKI doanh nghiệp thường ñược tổ chức theo mô hình danh bạ trong ñó
khóa công khai của mỗi người dùng ñược lưu trữ (bên trong các chứng thực số) kèm với
các thông tin cá nhân (số ñiện thoại, email, ñịa chỉ, nơi làm việc ). Hiện nay, công nghệ
danh bạ tiên tiến nhất là LDAP và ñịnh dạng chứng thực phổ biến nhất (X.509) cũng ñược
phát triển từ mô hình tiền nhiệm của LDAP (X.500).
1.2. Tìm hiểu mật mã học khoá công khai
1.2.1. Mật mã học khoá công khai
1.2.1.1.
Mật mã học khóa công khai (Phi ñối xứng) là gì

- Là một chuyên ngành của mật mã học cho phép người sử dụng trao ñổi các
thông tin mật mà không cần phải trao ñổi các khóa chung bí mật trước ñó.
ðiều này ñược thực hiện bằng cách sử dụng một cặp khóa có quan hệ toán học
với nhau là khóa công khai và khóa cá nhân (hay khóa bí mật).
- Trong mật mã học khóa công khai, khóa cá nhân phải ñược giữ bí mật trong
khi khóa công khai ñược phổ biến công khai. Trong 2 khóa, một dùng ñể mã
hóa và khóa còn lại dùng ñể giải mã. ðiều quan trọng ñối với hệ thống là
không thể tìm ra khóa bí mật nếu chỉ biết khóa công khai.[1]
1.2.1.2. Mục ñích của hệ thống mã hoá công khai :
- Cấp phát khoá riêng và khoá công khai :


Hình 1.1: Cấp phát khóa riêng khóa công khai

 Việc cấp phát khoá công khai và khoá bí mật thông qua thuật toán
RSA (phổ biến). Thuật toán RSA tạo ra cặp khoá bằng các phương
thức toán học từ 2 số nguyên tố bất kỳ ñủ lớn.
- Mã hoá :

Hình 1.2: Mã hóa thông tin

 Bob mã hóa thông tin gửi cho Alice bằng khóa công khai của Alice.
Alice nhận ñược tin nhắn từ Bob kiểm tra tin nhắn và giải mã bằng
khóa bí mật của Alice.
- Tạo và xác thực chữ ký số :

Hình 1.3: Tạo và xác thực chữ ký số
S = H(m)^d mod n (Tạo chữ kí số)
 Cho phép kiểm tra một văn bản có phải ñã ñược tạo với một khóa bí
mật nào ñó hay không.
 Tạo chữ kí số bằng khóa bí mật của Alice.
 Và ký vào tin nhắn Alive gửi cho Bob
 Bob kiểm tra chữ ký số bằng khóa công khai của Alice:
S^e mod n =H(m) với H(m) là giá trị sau khi băm tin nhắn Alice
gửi cho Bob. Chữ ký số ñúng ñắn ñồng nghĩa với việc các thông tin
Alice gửi bob là ñúng ñắn.
1.2.2. Ứng dụng
- Ứng dụng rõ ràng nhất của mật mã hóa khóa công khai là trong lĩnh vực bảo
mật, an toàn thông tin: Một văn bản ñược mã hóa bằng khóa công khai của một
người sử dụng thì chỉ có thể giải mã với khóa bí mật của người ñó.Các thuật toán tạo
chữ ký số khóa công khai cho phép ñịnh danh một tin nhắn hay 1 tài liệu.

- Một người sử dụng có thể mã hóa văn bản với khóa bí mật của mình. Nếu một
người khác có thể giải mã với khóa công khai của người gửi thì có thể tin rằng văn
bản thực sự xuất phát từ người gắn với khóa công khai ñó (ðây là nguyên lý sinh &
xác thực chữ ký số, người gửi sử dụng khóa bí mật của mình ñể sinh ra 1 chữ ký số
cho 1 tin nhắn, tài liệu. Bên nhận có thể xác thực tính ñúng ñắn của chữ ký số ñó nhờ
vào khóa công khai của người gửi).
- Các ñặc ñiểm trên còn có ích cho nhiều ứng dụng khác như: tiền ñiện tử, thỏa
thuận khóa



1.3. Thuật toán và ñộ phức tạp thuật toán
1.3.1. Thuật toán
Thuật toán ñược hiểu là sự ñặc tả chính xác của một dãy các bước có thể
ñược thực hiện một cách máy móc ñể giải quyết một vấn ñề. Cần nhấn mạnh rằng,
mỗi thuật toán có một dữ liệu vào (Input) và dữ liệu ra (Output); khi thực hiện thuật
toán (thực hiện các bước ñã mô tả) , thuật toán cần cho ra các kiểu dữ liệu ra tương
ứng với các dữ liệu vào.[2]
1.3.2. Phân tích thuật toán
1.3.2.1. Tính hiệu quả của thuật toán
- Khi giải một vấn ñề, chúng ta cần chọn trong số các thuật toán, một thuật toán
mà chúng ta cho là “tốt” nhất. Cơ sở ñánh chọn lựa thuật toán :
 Thuật toán ñơn giản, dễ hiểu, dễ cài ñặt(dễ viết chương trình)
 Thuật toán sử dụng tiết kiệm nhất các nguồn tài nguyên của máy tính và
ñặc biệt chạy nhanh nhất có thể ñược.
- Tính hiệu quả của thuật toán bao gồm 2 nhân tố cơ bản :
• Dung lượng không gian nhớ cần thiết ñể lưu giữ các dữ liệu vào, các kết
quả tính toán trung gian và các kết quả của thuật toán
• Thời gian cần thiết ñể thực hiện thuật toán(hay thời gian chạy)


[3]
1.3.2.2. ðánh giá thời gian thực hiện thuật toán
- Thời gian chạy chương trình phụ thuộc vào các nhân tố chính sau:
 Các dữ liệu vào
 Chương trình dịch ñể chuyển chương trình nguồn thành mã máy.
 Tốc ñộ thực hiện của các phép toán của máy tính ñược sử dụng ñể chạy
chương trình.
- Giả sử T(n) là thời gian thực hiện thuật toán và f(n) là hàm xác ñịnh
dương.T(n)=O(f(n)) nếu ∃ các hằng số dương c và n0 sao cho T(n)

c.g(n) với
mọi n>= n
0
.
1.4. Hạ tầng khóa công khai (PKI)

1.4.1. PKI là gì

- ðể hiểu rõ về việc xây dựng cơ PKI và vần ñề cấp phát chứng thực số có vai
trò và ứng dụng như thế nào trong thương mại ñiên tử. Chúng ta sẽ ñi phân
tích từng khía cạnh xung quanh PKI.
- Trước tiên chúng hiểu thế nào là PKI và tính cấp thiết của PKI hiện nay :
• PKI : viết tắt của Public Key Infrastructure tức là hạ tầng cơ sở khóa
công khai.

Là một cơ chế ñể cho một bên thứ 3 (thường là nhà cung cấp
chứng thực số) cung cấp và xác thực ñịnh danh các bên tham gia vào quá
trình trao ñổi thông tin.

Cơ chế này cũng cho phép gán cho mỗi người sử

dụng trong hệ thống một cặp khóa công khai/khóa bí mật.
• Trong kỷ nguyên bùng nổ của công nghệ thông tin, mọi giao dịch từ xa
có thể thông qua internet. Tuy nhiên, mặt khác khó mà bảo ñảm rằng
những giao dịch trên Internet luôn an toàn. Cơ sở hạ tầng khóa công khai
(PKI) ñã ñáp ứng những yêu cầu cấp thiết ñó. Dựa trên cách sử dụng của
chìa khóa mật mã công cộng và chữ ký ñiện tử, một PKI chính là bộ
khung của các chính sách, dịch vụ và phần mềm mã hóa, ñáp ứng nhu cầu
bảo mật của người sử dụng.









1.4.2. Cở sở hạ tầng khóa công khai



Hình 1.4 : Mô hình xây dựng PKI cơ bản
- PKI cung cấp một cặp chìa khóa, trong ñó có một chìa là chìa khóa công khai
(Public key) ñể có thể sử dụng dịch vụ, chìa còn lại là chìa khóa bí mật (Private
key) mà người sử dụng phải giữ bí mật. Hai chìa khóa này có liên quan mật thiết
ñến nhau, sao cho một thông ñiệp ñược mã hóa bởi một chìa khóa mật mã công
khai thì chỉ giải mã ñược bởi một chìa khóa bí mật tương ứng.
- Ví dụ về mô hình xử dụng xác thực :
Giả sử có 2 người dùng Bob và Alice muốn chuyển thư ñiện tử cho nhau ñể ñảm
bảo tính xác thực và bảo mật họ dùng 1 phần mềm PKI






Hành ñộng Trạng thái của hệ thống PKI
Bob muốn chuyển một thư ñiện tử ñến
cho Alice, với yêu cầu rằng giao dịch
phải chứng minh ñược chính anh ñã gởi
nó ñi và nội dung bức thư không bị thay
ñổi.
Phần mềm PKI dùng chìa khóa cá nhân
của Bob tạo ra một chữ ký ñiện tử cho
bức thư
Bob muốn chắc chắn rằng không ai ngoài
Alice ñọc ñược bức thư này
Phần mềm PKI của Bob dùng chìa khóa
công cộng của Alice ñể mã hóa thông
ñiệp của Bob.
Alice muốn ñọc thư do Bob gởi Phần mềm PKI dùng chìa khóa cá nhân
của Alice ñể ñể giải mã thông ñiệp.
Alice muốn kiểm chứng rằng chính Bob
ñã gởi ñi thông ñiệp ñó và nội dung
thông ñiệp không bị chỉnh sửa.
Phần mềm PKI của Alice dùng chìa khóa
công cộng của Bob ñể kiểm chứng chữ
ký ñiện tử của anh ta.
Bảng 1.5 : Mô hình sử dụng xác thực

1.5.

Một vài kiến trúc và công nghệ PKI hiện hành
1.5.1 Một số ứng dụng
- Mục tiêu chính của PKI là cung cấp khóa công khai và xác ñịnh mối liên hệ
giữa khóa và ñịnh dạng người dùng. Nhờ vậy người dùng có thể sử dụng trong
một số ứng dụng như:


 Mã hoá Email hoặc xác thực người gửi Email (OpenPGP hay S/MIME).


 Mã hóa hoặc nhận thực văn bản (Các tiêu chuẩn Chữ ký XML* hoặc mã hoá
XML* khi văn bản ñược thể hiện dưới dạng XML).


 Xác thực người dùng ứng dụng (ðăng nhập bằng thẻ thông minh - smartcard,
nhận thực người dùng trong SSL).


 Các giao thức truyền thông an toàn dùng kỹ thuật Bootstrapping (IKE, SSL):
trao ñổi khóa bằng khóa bất ñối xứng, còn mã hóa bằng khóa ñối xứng.


1.5.2. Một số hệ thống PKI
- Dưới ñây là danh sách một số hệ thống PKI, trong ñó một số nhà cung cấp
chứng thực số hàng ñầu (ví dụ VeriSign) không ñược liệt kê vì các phần mềm của
họ không ñược công bố công khai :

••

Hệ thống quản lý chứng thực Red Hat


••

Computer Associates eTrust PKI

••

Entrust

••

Microsoft

••

US Government External Certificate Authority (ECA)

••

Nexus

••

OpenCA (Một mô hình PKI mã nguồn mở)

••

RSA Security

••


phpki

••

GenCerti

••

ejbca

••

newpki

••

Papyrus CA Software

••

pyCA

••

IDX-PKI

••

EuropePKI (not available)


••

TinyCA

••

ElyCA

••

SimpleCA

••

SeguriData

••

Safelayer Secure Communications


CHƯƠNG II : HẠ TẦNG KHÓA CÔNG KHAI (PKI) và
VẤN ðỀ CẤP PHÁT CHỨNG THỰC SỐ

2.1. Hàm băm mật mã học
2.1.1. Hàm băm
- Hàm băm (tiếng Anh: hash function) là hà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 ñoạn tin nhắn ). Giá trị băm
ñóng vai trò gần như một khóa ñể phân biệt các khối dữ liệu, tuy nhiên, người ta

chấp nhận hiện tượng trùng khóa hay còn gọi là ñụng ñộ và cố gắng cải thiện giải
thuật ñể giảm thiểu sự ñụng ñộ ñó. Hàm băm thường ñược dùng trong bảng băm
nhằm giảm chi phí tính toán khi tìm một khối dữ liệu trong một tập hợp (nhờ việc
so sánh các giá trị băm nhanh hơn việc so sánh những khối dữ liệu có kích thước
lớn).
2.1.2. Hàm băm mật mã học
-
Trong ngành mật mã học, một hàm băm mật mã học (tiếng Anh: Cryptographic
hash function) là một hàm băm với một số tính chất bảo mật nhất ñịnh ñể phù hợp
việc sử dụng trong nhiều ứng dụng bảo mật thông tin ña dạng, chẳng hạn như
chứng thực (authentication) và kiểm tra tính nguyên vẹn của thông ñiệp (message
integrity). Một hàm băm nhận ñầu vào là một xâu ký tự dài (hay thông ñiệp) có ñộ
dài tùy ý và tạo ra kết quả là một xâu ký tự có ñộ dài cố ñịnh, ñôi khi ñược gọi là
tóm tắt thông ñiệp (message digest) hoặc chữ ký số (digital fingerprint).[4]
2.1.3. ðảm bảo tính toàn vẹn dữ liệu
-
Hàm băm mật mã học là hàm bam và có tính chất là hàm 1 chiều. Từ khối dữ liệu
hay giá trị băm ñầu vào chỉ có thể ñưa ra 1 giá trị băm duy nhất. Như chúng ta ñã
biết ñối với tính chất của hàm 1 chiều. Một người nào ñó dù bắt ñược giá trị băm
họ cũng không thể suy ngược lại giá trị, ñoạn tin nhắn băm khởi ñiểm.
-
Hàm băm thường ñược dùng trong bảng băm nhằm giảm chi phí tính toán khi tìm
một khối dữ liệu trong một tập hợp. Giá trị băm ñóng vai trò gần như một khóa ñể
phân biệt các khối dữ liệu
-
Giá trị ñầu vào(tin nhắn, dữ liệu ) bị thay ñổi tương ứng giá trị băm cũng bị thay
ñổi. Do vậy nếu 1 kẻ tấn công phá hoại, chỉnh sửa dữ liệu thì server có thể biết
ngay lập tức.
2.1.4. Một số hàm băm thông dụng
2.1.4.1. Thuật toán hàm băm MD5

a. Thuật toán hàm băm MD5
- MD5 (Message-Digest algorithm 5) là một hàm băm mật mã ñược sử dụng
phổ biến, ñược thiết kể bởi Giáo sư Ronald L. Rivest tại trường MIT vào năm
1991 ñể thay thế cho hàm băm trước ñó là MD4 (1990). Là một chuẩn Internet
(RFC 1321), MD5 ñã ñược dùng trong nhiều ứng dụng bảo mật và cũng ñược
dùng phổ biến ñể kiểm tra tính toàn vẹn của tập tin. Cũng như các hàm băm
khác như MD4 và SHS (Secure Hash Standard), MD5 là phương pháp có ưu
ñiểm tốc ñộ xử lý rất nhanh, thích hợp với các thông ñiệp dài và cho ra giá trị
băm dài 128 bit.
- Trong MD5, thông ñiệp ban ñệu X sệ ñệệc mệ rệng thành dãy
bit X có ñệ dài là bệi cệa 512. Dãy bit X gệm các thành phện
ñệệc sệp thệ tệ nhệ sau: Dãy bit X ban ñầu, một bit 1, dãy d bit 0
(d ñệệc tính sao cho dãy X cuệi cùng là bệi cệa 512), dãy 64
bit l biểu diễn chiều dài của thông ñiệp. ðơn vị xử lý trong MD5 là các từ 32-
bit, nên dãy bit X ở trên sẽ ñược biểu diễn thành dãy các từ X[i] 32-bit sau:
X=X[0] X[1] X[2] …X[N−1] , với N là bội của 16.[5]
b. Phương pháp MD5 có những ưu ñiểm sau so với phương pháp MD4
-
Thay vì có 3 chu kỳ biến ñổi như trong MD4, MD5 bổ sung thêm chu kỳ thứ 4
ñể tăng mức ñộ an toàn.
-
Trong mỗi thao tác của từng chu kỳ, MD5 sử dụng hằng số ti phân biệt, trong
khi MD4 sử dụng hằng số chung cho mọi thao tác trong cùng chu kỳ biến ñổi.
-
Hàm G ở chu kỳ 2 của MD4: G(X,Y,Z) = ((X
Λ
Z)

(X
Λ

Y)

(Y
Z
Λ
)) ñược
thay thế bằng G(X,Y,Z) = (X
Λ
Z)

(Y
Λ
(
Z
¬
)) ñể giảm tính ñối xứng.
-
Mỗi bước biến ñổi trong từng chu kỳ chịu ảnh hưởng kết quả của bước biến
ñổi trước, vì vậy làm tăng nhanh tốc ñộ của hiệu ứng lan truyền (avalanche).
-
Các hệ số dịch chuyển xoay vòng trong mỗi chu kỳ ñược tối ưu hóa nhằm tăng
tốc ñộ hiệu ứng lan truyền. Ngoài ra, mỗi chu kỳ sử dụng 4 hệ số dịch chuyển
khác nhau.
-
Lý do MD5 ñược thiết kế thay thế cho MD4 là vì các phân tích chỉ ra rằng
phương pháp MD4 có vẻ không an toàn. Den Boer và Bosselaers ñã chỉ ra các
ñiểm yếu trong MD4 trong một bài báo ñược ñăng vào năm 1991và một tấn
công xung ñột ñầu tiên ñược tìm thấy bởi Han Dobbertin vào năm 1996 .
-
Tuy nhiên, các nỗ lực tấn công, phân tích của các nhà nghiên cứu cho thấy

MD5 cũng không còn an toàn và cần ñược thay thế bằng một thuật toán băm
khác như các công bố của Den Boer và Bosselaers năm 1993; của Hans
Dobbertin năm 1996; của nhóm tác giả Xiaoyun Wang, Dengguo Feng, Xuejia
Lai, và Hongbo ngày 19/8/2004; của Arjen Lenstra, Xiaoyun Wang, và Benne
de Weger ngày 1/3/2005; và của Vlastimil Klima, …
2.1.4.2. Chuẩn băm an toàn SHS
-
SHS (Secure Hash Standard) là chuẩn gồm tập hợp các thuật toán băm mật mã
an toàn (Secure Hash Algorithm – SHA) như SHA-1, SHA-224, SHA-256,
SHA-384, SHA-512 do NIST
2
và NSA
3
xây dựng.
-
Phương pháp SHA-1 (cũng như SHA-0) ñược xây dựng trên cùng cơ sở với
phương pháp MD4 và MD5. Tuy nhiên, phương pháp SHA-1 sử dụng trên hệ
thống Big-endian
5
thay vì Little-endian
6
như phương pháp MD4 và MD5.
Ngoài ra, hàm băm SHA-1 tạo ra thông ñiệp rút gọn kết quả có ñộ dài 160 bit
nên thường ñược sử dụng
-
Phương pháp SHA-1 giống với MD5 (cải tiến từ MD4) nhưng thông ñiệp tóm
tắt ñược tạo ra có ñộ dài 160 bit. Dưới ñây là một số ñiểm so sánh giữa MD5
và SHA-1:
 Giống như MD5, SHA-1 cũng thêm chu kỳ thứ 4 ñể tăng mức ñộ an toàn
cho thuật toán. Tuy nhiên, chu kỳ 4 của SHA-1 sử dụng lại hàm f của chu

kỳ thứ 2.
 Trong SHA-1, 20 bước biến ñổi trong cùng một chu kỳ sử dụng cùng một
hàng số K[t] . Trong khi ñó, mỗi bước biến ñổi trong cùng một chu kỳ
của MD5 sử dụng các hằng số khác nhau.
 So với MD4, hàm G trong MD5 ñược thay thế thành hàm mới ñể làm
giảm tính ñối xứng. Trong khi SHA-1, hàm G trong SHA-1 vẫn giữ lại
hàm G của MD4.
 Cả MD5 và SHA-1, mỗi bước biến ñổi trong từng chu kỳ chịu ảnh hưởng
kết quả của biến ñổi trước, vì vậy làm tăng nhanh tốc ñộ của hiệu ứng lan
truyền.

Hình 2.1: ðặc ñiểm của các thuật toán băm SHA

2.2. Mã hóa thông tin
-
Có rất nhiều thông tin mà chúng ta không muốn người khác biết khi gửi ñi như: thông
tin về Credit-Card, thông tin về kinh doanh của công ty, thông tin về tài khoản cá
nhân, thông tin về cá nhân như số chứng minh thư, số thẻ
-
Các thông tin bí mật ñược cung cấp cho các máy tính quan mạng Internet bằng nhiều
phương thức khác nhau ví dụ : Một cách bảo mật ñơn giản nhưng minh bạch
nhất là lưu các thông tin bí mật trên các bộ nhớ có thể xoá ñược (Removable Storage)
như ñĩa mềm. Tuy nhiên dạng bảo mật phổ biến nhất vẫn là dựa vào quá trình mã hoá
dữ liệu (Encryption).
-
Các hệ thống mã hoá trong máy tính phổ biến nhất thuộc một trong hai loại sau:
 Mã hoá với khoá ñối xứng (Symmetric-key Encryption) : Trong phương pháp
mã hoá với khoá ñối xứng, mỗi máy tính có một khoá bí mật (dạng mã) dùng ñể
mã hoá các gói thông tin trước khi chúng ñược gửi qua mạng tới các máy tính
khác. Phương pháp mã hoá với khoá ñối xứng ñòi hỏi người sử dụng phải xác

ñịnh ñược những máy tính nào ñang liên lạc trao ñổi thông tin với nhau ñể cài
ñặt khoá này trên mỗi máy.
 Mã hoá với khoá công khai (Public-key Encryption).[6]
2.3.
Chữ ký số
2.3.1. Chữ ký số

-
Chữ ký số (Digital Signature) chỉ là tập con của chữ ký ñiện tử. Chữ ký số là
chữ ký ñiện tử dựa trên kỹ thuật mã hóa với khóa công khai, trong ñó, mỗi người
có một cặp khóa (một khóa bí mật và một khóa công khai). Khóa bí mật không
bao giờ ñược công bố, trong khi ñó, khóa công khai ñược tự do sử dụng. ðể trao
ñổi thông ñiệp bí mật, người gửi sử dụng khóa công khai của người nhận ñể mã
hóa thông ñiệp gửi, sau ñó, người nhận sẽ sử dụng khóa bí mật tương ứng của
mình ñể giải mã thông ñiệp.
-
Chữ ký ñiện tử là thông tin ñược mã hoá bằng Khoá riêng của người gửi, ñược gửi
kèm theo văn bản nhằm ñảm bảo cho người nhận ñịnh danh, xác thực ñúng nguồn
gốc và tính toàn vẹn của tài liệu nhận ñược. Chữ ký ñiện tử thể hiện văn bản gửi
ñi là ñã ñược ký bởi chính người sở hữu một Khoá riêng tương ứng với một
Chứng chỉ ñiện tử nào ñó.”
-
Chữ ký số khóa công khai (hay hạ tầng khóa công khai) 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. 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ý.

[7]
2.3.2. Tạo và kiểm tra chữ ký số

2.3.2.1. Các thuật toán chữ ký số thông dụng
-
Chữ ký số giúp xác ñịnh ñược người tạo ra hay chịu trách nhiệm ñối với một
thông ñiệp ñược ký. Một phương pháp chữ ký số phải bao gồm ít nhất 3 thuật
toán chính, ñó là thuật toán dùng ñể tạo khóa, thuật toán dùng ñể tạo ra chữ
ký số và thuật toán tương ứng ñể xác nhận chữ ký số.

2.3.2.2. Thuật toán chữ ký số RSA
- Phương pháp chữ ký số RSA ñược xây dựng dựa trên thuật toán mã hóa khóa
công khai RSA. ðể tạo một cặp khóa, RSA thực hiện các bước sau:
 Chọn 2 số nguyên tố lớn ngẫu nhiên p, q. Nhằm có sự an toàn tối ña nên
chọn p và q có ñộ dài bằng nhau.
 Tính n=pq và φ=(p−1)(q−1).
 Chọn ngẫu nhiên một số nguyên e (1<e<φ) sao cho gcd(e, φ)=1 với gcd
là ước số chung lớn nhất.
 Tính: d=e−1 mod φ.
- Kết quả là ta có ñược cặp khóa: khóa công khai (n,e) và khóa bí mật (n,d).
Hai người sẽ sử dụng chung một hàm băm ℋ an toàn trước hiện tượng xung
ñột. ðể ký một thông ñiệp m, người ký thực hiện các bước sau:
 Dùng hàm băm ℋ ñể băm thông ñiệp m: h=ℋ
ℋℋ
ℋ(m).

 Tạo chữ ký số sử dụng khóa bí mật (n,d) ñể tính:
s=h
d
mod n.
- Chữ ký của m là s và ñược gửi kèm với thông ñiệp m ñến người nhận. ðể xác
nhận chữ ký, người nhận thực hiện các bước sau:
 Sử dụng khóa công khai (n,e) của người ký ñể giải mã chữ ký:

h=s
e
mod n.
 Sử dụng cùng hàm băm ℋ với người ký ñể băm thông ñiệp m:
h′=H(m).
 Chấp nhận chữ ký nếu h′=h. Ngược lại từ chối chữ ký.
2.3.2.3. Thuật toán chữ ký số DSA
- Thuật toán chữ ký số DSA (Digital Signature Algorithm) ñược ñề nghị bởi
NIST vào tháng 8/1991 ñể sử dụng trong chuẩn chữ ký số DSS (Digital
Signature Standard), ñược chỉ ra trong FIPS 186, ñược chấp nhận năm 1993.
Một sửa ñổi nhỏ ñược ñưa ra ngày năm 1996 trong FIPS 186-1, chuẩn ñược
mở rộng hơn năm 2000, ñược xem như xem như FIPS 186-2. Việc tạo khóa
gồm hai bước. Bước thứ nhất là lựa chọn các tham số cho thuật toán ñược chia
sẻ giữa các người sử dụng khác nhau trong cùng hệ thống:
 Chọn một hàm băm mã hóa ℋ. Trong DSS chuẩn ℋ luôn là SHA-1,
nhưng các hàm băm tốt hơn trong nhóm SHA cũng ñang ñược sử dụng.
ðôi khi ñầu ra của một thuật toán băm mới hơn bị rút ngắn kích thước
so với các thuật toán băm mới cũ ñể tương tích với cặp khóa hiện có.
 Chọn kích thước khóa L. ðây là thước ño chính quyết ñịnh sức mạnh
mã hóa của khóa. DSS chuẩn ràng buộc L là bội số của 64 và
512≤L≤1024. Sau ñó, FIPS 186-2 xác ñịnh L luôn là 1024. Không lâu
sau, NIST 800-57 ñề nghị ñộ dài khóa là 2048 (hoặc 3072) ñể thời gian
an toàn ñến năm 2010 (hoặc 2030), sử dụng tương ứng với các giá trị
băm và q dài hơn. Bản thảo FIPS 186-3 cũng tính ñến các hàm băm sau
này và các khóa dài hơn.
 Chọn một số nguyên tố q cùng số bit với ñầu ra của ℋ.
 Chọn một số nguyên tố p ñộ dài L bit sao cho p–1 là bội của q. Tức là
p=qz–1 với số nguyên z nào ñó.
 Chọn g = h
qp /)1( −

mod p với h bất kỳ (1<h<p–1), và chọn lại nếu kết quả
là 1. Hầu hết cách chọn h ñều nhận ñược g có thể sử dụng, thông
thường chọn h=2.
- Các tham số thuật toán (p,q,g) có thể chia sẻ giữa những người khác nhau
trong hệ thống. Bước thứ hai tính các khóa bí mật và khóa công khai của từng
người :
 Chọn x ngẫu nhiên sao cho 0<x<q.
 Tính y=g
x
mod p.
 Khóa công khai là (p,q,g,y), khóa bí mật là x.
- Phiên bản FIPS 186-3 sắp tới sử dụng SHA-224/256/384/512 là các hàm băm,
kích thước của q là 224 (hoặc 256 bit), và L bằng 2048 (hoặc 3072).
- ðể ký một thông ñiệp m, người ký thực hiện các bước sau:
 Phát sinh một số ngẫu nhiêu k (0<k<q) cho mỗi thông ñiệp.
 Tính r=(g
k
mod p) mod q.
 Tính s = k
1−
(ℋ(m) + xr)) mod q.
 Tính toán lại chữ ký trong trường hợp không chắc chắn r=0 hoặc s=0.
 Chữ ký là (r,s).
- ðể xác nhận chữ ký, người nhận thực hiện các bước sau:
 Loại bỏ chữ ký nếu 0<r<q hoặc 0<s<q không thỏa mãn.
 Tính w=s
1−
mod q.
 Tính u
1

=(ℋ(m)×w) mod q.
 Tính u
2
=(r×w) mod q.
 Tính v=( (g
1
u
×y
2
u
)mod p) mod q

×