Luân văn
Xây dựng hệ thống cung
cấp chứng chỉ số dựa trên
hạ tầng khoá công khai
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 Nguyễn Văn Tam, người thầy
đã cho tôi những định hướng và những ý kiến rất quý báu về công nghệ PKI.
Tôi xin tỏ lòng biết ơn sâu sắc tới thầy cô, bạn bè cùng khoá đã dìu dắt, giúp đỡ
tôi tiến bộ trong suốt những năm học qua. 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 Tin học nghiệp vụ đã hết sức tạo điều kiện cho tôi trong quá trình học và
làm luận văn này.
Được hoàn thành trong thời gian rất hạn hẹp, luận văn này chắc chắn còn nhiều
khiếm khuyết. Tôi xin cảm ơn những thầy cô, bạn bè và người thân đã và sẽ có
những góp ý chân tình cho nội dung của luận văn này, để tôi có thể tiếp tục đi sâu
tìm hiểu và đưa PKI vào ứng dụng trong th
ực tiễn công tác.
Lương Nguyễn Hoàng Hoa
- 1 -
Xây dựng hệ thống cung cấp chứng chỉ số dựa trên hạ tầng khoá công khai
MỤC LỤC
MỤC LỤC 1
Danh mục từ viết tắt 3
Danh mục hình vẽ 5
MỞ ĐẦU 7
CHƯƠNG 1 - TỔNG QUAN VỀ MẬT MÃ 10
1.1 Giới thiệu chung 10
1.2 Khái niệm hệ mật mã 11
1.3 Hệ mật mã khoá đối xứng 11
1.4 Hệ mật mã khoá công khai 12
1.5 Chữ ký số 16
1.6 Hàm băm 20
CHƯƠNG 2 - CHỨNG CHỈ SỐ VÀ HẠ TẦNG MÃ KHOÁ CÔNG KHAI 23
2.1. Chứng chỉ số (digital certificates) 24
2.1.1 Giới thiệu 24
2.1.2 Chứng chỉ khoá công khai X.509 26
2.1.3 Thu hồi chứng chỉ 30
2.1.4 Chính sách của chứng chỉ 31
2.1.5 Công bố và gửi thông báo thu hồi chứng chỉ 32
2.2 Các thành phần của PKI 35
2.2.1 Tổ chức chứng thực (Certification Authority) 36
2.2.2 Trung tâm đăng ký (Registration Authorities) 37
2.2.3 Thực thể cuối ( Người giữ chứng chỉ và Clients) 38
2.2.4 Hệ thống lưu trữ (Repositories) 38
2.3 Chức năng cơ bản của PKI 39
2.3.1 Chứng thực (certification) 39
2.3.2 Thẩm tra (validation) 39
2.3.3 Một số chức năng khác 39
2.4 Mô hình tin cậy cho PKI 43
2.4.1 Mô hình CA đơn 44
2.4.2 Mô hình phân cấp 45
2.4.3 Mô hình mắt lưới (xác thực chéo) 46
2.4.4 Mô hình Hub và Spoke (Bridge CA) 48
2.4.5 Mô hình Web (Trust Lists) 49
2.4.6 Mô hình người sử dụng trung tâm (User Centric Model) 51
- 2 -
Xây dựng hệ thống cung cấp chứng chỉ số dựa trên hạ tầng khoá công khai
CHƯƠNG 3 - XÂY DỰNG HỆ THỐNG CUNG CẤP CHỨNG CHỈ SỐ 53
3.1 Tổng quan về hệ thống 53
3.1.1 Mô hình hệ thống 53
3.1.2 Một số đặc tính của hệ thống cung cấp chứng chỉ số 54
3.2 Chức năng và quá trình khởi tạo các thành phần trong hệ thống cung
cấp chứng chỉ số MyCA 58
3.2.1 Certificate Authority - CA 58
3.2.2 Registration Authority - RA 59
3.2.3 RAO 60
3.2.4 LDAP và Public Database Server 60
3.3 Qui trình đăng ký, cấp phát và huỷ bỏ chứng chỉ 62
3.3.1 Qui trình đăng ký và cấp chứng chỉ 62
3.3.2 Qui trình huỷ bỏ chứng chỉ 64
3.4 Thử nghiệm sản phẩm 65
3.4.1 Thử nghiệm phía quản trị 65
3.4.2 Thử nghiệm phía người dùng 65
3.5 Đánh giá chung 66
KẾT LUẬN 68
TÀI LIỆU THAM KHẢO 70
PHỤ LỤC 72
1. Môi trường phát triển 72
2. Một số chuẩn mật mã khoá công khai (PKCS) 72
3. Một số màn hình giao diện của hệ thống đã xây dựng 74
- 3 -
Xây dựng hệ thống cung cấp chứng chỉ số dựa trên hạ tầng khoá công khai
Danh mục từ viết tắt
ARLs Authority Revocation Lists
CA Certificate Authority
CAO Certificate Authority Operator
CMS Cryptographic Message Syntax
COST Commercial of the Shelf
CRLs Certificate Revocation Lists
CRR Certificate Revocation Request
CSP Certification Service Provider
DAP Directory Access Protocol
DES Data Encryption Standard
DNS Domain Name System
DSS Digital Signature Standard
ECC Elliptic Curve Cryptography
HTTPS Secure Hypertext Transaction Standard
IANA Internet Assigned Numbers Authority
IEEE Institute of Electrical & Electronic Engineers
IETF Internet Engineering Task Force
ISO International Organization for Standardization
ITU-T Internet Telecommumications Union-
Telecommunication
LDAP Lightweight Directory Access Protocol
MD5 Message Digest 5 Hash Algorithm
OCSP Online Certificate Status Protocol
PEM Privacy Enhanced Mail
PGP Pretty Good Privacy
PKC Public Key Certificate
PKCS Public Key Cryptography Standards
- 4 -
Xây dựng hệ thống cung cấp chứng chỉ số dựa trên hạ tầng khoá công khai
PKI Public Key Infrastructure
PKIX Extended Public Key Infrastructure
RA Registration Authorities
RAO Registration Authorities Operator
RFC Request For Comments
RSA Rivest Shamir Adleman
S/MIME Secure Multipurpose Internet Mail Extensions
SHA-1 Secure Hash Standard
SSL Secure Socket Layer
TLS Transport Layer Security
- 5 -
Xây dựng hệ thống cung cấp chứng chỉ số dựa trên hạ tầng khoá công khai
Danh mục hình vẽ
Hình 1.1:
Quá trình mã hoá và giải mã 11
Hình 1.2: Mã hoá thông điệp sử dụng khoá công khai P 13
Hình 1.3: Giải mã thông điệp sử dụng khoá riêng của người nhận 13
Hình 1.4: Sơ đồ hệ mật mã RSA 14
Hình 1.5: Mã hoá thông điệp sử dụng khoá bí mật S để mã thông điệp và khoá
công khai P để mã khoá bí mật S 15
Hình 1.6: Giải mã thông điệp sử dụng khoá bí mật S để giải mã thông điệp và
khoá riêng P để giải mã khoá bí mật S 15
Hình 1.7: Sơ đồ chữ ký RSA 18
Hình 1.8: Sơ đồ mô tả các công đoạn người A làm trước khi gửi thông điệp cho
người B (sử dụng hàm băm rồi ký số) 19
Hình 1.9: Sơ đồ mô tả các công đoạn kiểm tra chữ ký sau khi người B nhận
được thông điệp 20
Hình 1.10: Nhiều thông điệp nguồn cho cùng 1 kết quả đích sau mã hoá/ ký số. 21
Hình 2.1:
Chứng chỉ số 25
Hình 2.2: Khuôn dạng chứng chỉ X.509 26
Hình 2.3: Nội dung chi tiết của chứng chỉ 30
Hình 2.4: Khuôn dạng danh sách chứng chỉ bị thu hồi 33
Hình 2.5: Dịch vụ kiểm tra online 35
Hình 2.6: Các thành phần PKI 36
Hình 2.7: Đường dẫn chứng chỉ chéo 43
Hình 2.8: Mô hình CA đơn 44
Hình 2.9: Mô hình phân cấp 45
Hình 2.10: Mô hình mắt lưới 47
Hình 2.11: Mô hình Hub và Spoke (Bridge CA) 49
Hình 2.12: Danh sách các CA tin cậy trong Microsoft Explorer 50
Hình 3.1:
Mô hình hệ thống cung cấp chứng chỉ số 53
Hình 3.2: Tệp yêu cầu cấp chứng chỉ 55
Hình 3.3: Chứng chỉ lưu khoá công khai của rootCA trong hệ thống MyCA 56
Hình 3.4: Chứng chỉ của người sử dụng 57
Hình 3.5: Mô hình mô phỏng hệ thống MyCA phân cấp hai tầng 59
Hình 3.6: Mô hình quan hệ và trao đổi dữ liệu giữa các thành phần trong hệ thống 61
- 6 -
Xây dựng hệ thống cung cấp chứng chỉ số dựa trên hạ tầng khoá công khai
Hình 3.7: Mô hình đăng ký và cấp chứng chỉ số 62
Hình 3.8: Giấy chứng nhận chứng chỉ số 64
Hình 3.9: Mô hình huỷ bỏ chứng chỉ 64
Hình 3.10: Mô hình kết hợp hệ thống cung cấp chứng chỉ số cùng các giải pháp
đảm bảo an toàn hệ thống mạng nội bộ 67
- 7 -
Xây dựng hệ thống cung cấp chứng chỉ số dựa trên hạ tầng khoá công khai
MỞ ĐẦU
Trong một vài năm lại đây, hạ tầng truyền thông IT càng ngày càng được mở
rộng khi người sử dụng dựa trên nền tảng này để truyền thông và giao dịch với các
đồng nghiệp, các đối tác kinh doanh cũng như việc khách hàng dùng email trên các
mạng công cộng. Hầu hết các thông tin nhạy cảm và quan trọng được lưu trữ và trao
đổi dưới hình thức điện tử trong các cơ quan văn phòng, doanh nghiệp. Sự thay đổi
trong các hoạt độ
ng truyền thông này đồng nghĩa với việc cần phải có biện pháp bảo
vệ đơn vị, tổ chức, doanh nghiệp của mình trước các nguy cơ lừa đảo, can thiệp, tấn
công, phá hoại hoặc vô tình tiết lộ các thông tin đó. Cơ sở hạ tầng mã khoá công
khai (PKI - Public Key Infrastructure) cùng các tiêu chuẩn và công nghệ ứng dụng
của nó có thể được coi là một giải pháp tổng hợp và độc lập có thể sử dụng để giải
quyết vấn đề này.
PKI bản chất là một hệ thống công nghệ vừa mang tính tiêu chuẩn, vừa mang
tính ứng dụng được sử dụng để khởi tạo, lưu trữ và quản lý các chứng chỉ số hay ta
còn gọi là chứng thực điện tử (digital certificate) cũng như các khoá công cộng
(khoá công khai) và cá nhân (khoá riêng). Sáng kiến PKI ra đời năm 1995, khi mà
các chính phủ và các tổ chức công nghiệp xây dựng các tiêu chuẩn chung dựa trên
phương pháp mã hoá để hỗ trợ một hạ tầng bảo mật trên mạng Internet. Tại thời
điểm đó, mục tiêu được đặt ra là xây dựng một bộ tiêu chuẩn bảo mật tổng hợp
cùng các công cụ và lý thuyết cho phép người sử dụng cũng như các tổ chức (doanh
nghiệp hoặc phi lợi nhuận) có thể tạo lập, lưu trữ và trao đổi các thông tin một cách
an toàn trong phạm vi cá nhân và công cộng.
Cho tớ
i nay, những nỗ lực hoàn thiện PKI vẫn đang được đầu tư và thúc đẩy.
Và để hiện thực hoá ý tưởng tuyệt vời này, các tiêu chuẩn cần phải được nghiên cứu
phát triển ở các mức độ khác nhau bao gồm: mã hoá, truyền thông và liên kết, xác
thực, cấp phép và quản lý. Nhiều chuẩn bảo mật trên mạng Internet, chẳng hạn
Secure Sockets Layer/Transport Layer Security (SSL/TLS) và Virtual Private
Network (VPN), chính là kết quả của sáng kiến PKI. Một minh chứng là thuật toán
- 8 -
Xây dựng hệ thống cung cấp chứng chỉ số dựa trên hạ tầng khoá công khai
mã hoá phi đối xứng được xây dựng dựa trên phương pháp mã hoá và giải mã thông
tin sử dụng hai khoá mã: khoá công khai (public key) và khoá riêng (private key).
Trong trường hợp này, một người sử dụng có thể mã hoá tài liệu của mình với khoá
riêng và sau đó giải mã thông tin đó bằng khoá công khai. Nếu một văn bản chứa
các dữ liệu nhạy cảm và cần phải được truyền một cách bảo mật tới duy nhất một cá
nhân, thông thường người gửi mã hoá tài liệu đó b
ằng mã khoá riêng của mình và
người nhận sẽ giải mã sử dụng khoá công khai của người gửi. Khoá công khai này
có thể được gửi kèm theo tài liệu này hoặc có thể được gửi cho người nhận trước đó.
Mặt khác, do có khá nhiều thuật toán phi đối xứng nên các chuẩn công khai
hiện có thường xuyên được nghiên cứu cải tiến để phù hợp với các thuật toán này.
Hiện nay ở Việt Nam, việc nghiên cứu, ứng dụng và triển khai PKI nói chung và
dị
ch vụ cung cấp chứng chỉ số nói riêng là vấn đề còn mang tính thời sự. Bằng việc
sử dụng chứng chỉ và chữ ký số, những ứng dụng cho phép PKI đưa ra nhiều đặc
tính đảm bảo an toàn thông tin cho người sử dụng. Luận văn này được thực hiện với
mục đích tìm hiểu nghiên cứu về PKI, bao gồm các khái niệm tổng quan về mật mã,
chứng chỉ số, các khái niệm cơ sở về PKI, chức năng và các thành phần PKI. Luận
văn cũng tập trung vào việc tìm hiểu các mô hình tin cậy của PKI, ưu và nhược
điểm của các mô hình này; các dịch vụ, giao thức và chuẩn định dạng liên quan đến
việc xây dựng ứng dụng PKI, qua đó vận dụng để xây dựng một hệ thống cung cấp
chứng chỉ số có khả năng ứng dụng cho cơ quan công tác và một số đơn vị khác.
Với giới hạn những vấn đề tìm hiểu và nghiên cứu như trên, luận văn bao
gồm 3 chương:
Chương 1: Tổng quan về mật mã
Giới thiệu các khái niệm về hệ mật mã đối xứng, hệ mật mã phi đối xứng hay
còn được gọi là hệ mật mã khoá công khai; ưu và nhược điểm của các hệ mã này;
khái niệm về chữ ký số và hàm băm, sơ đồ
chữ ký số được sử dụng trong hệ thống
thử nghiệm.
- 9 -
Xây dựng hệ thống cung cấp chứng chỉ số dựa trên hạ tầng khoá công khai
Chương 2: Chứng chỉ số và hạ tầng mã khoá công khai
Trình bày khái niệm chứng chỉ số và một số vấn đề liên quan; khái niệm
PKI, chức năng và các thành phần của PKI; các mô hình tin tưởng của PKI, ưu và
nhược điểm của các mô hình này.
Chương 3: Xây dựng hệ thống cung cấp chứng chỉ số thử nghiệm
Phân tích và xây dựng một hệ thống cung cấp chứng chỉ số theo mô hình,
chức năng và các chuẩ
n đã được trình bày trong chương 1 và chương 2.
- 10 -
Xây dựng hệ thống cung cấp chứng chỉ số dựa trên hạ tầng khoá công khai
CHƯƠNG 1
TỔNG QUAN VỀ MẬT MÃ
1.1 Giới thiệu chung
Mật mã đã được con người sử dụng từ lâu đời. Các hình thức mật mã sơ khai
đã được tìm thấy từ khoảng bốn nghìn năm trước trong nền văn minh Ai Cập cổ đại.
Trải qua hàng nghìn năm lịch sử, mật mã đã được sử dụng rộng rãi ở khắp nơi trên
thế giới từ Đông sang Tây để giữ bí mật cho việc giao lưu thông tin trong nhiều lĩnh
vực hoạt động giữa con người và các quốc gia, đặc biệt trong các lĩnh vực quân sự,
chính trị, ngoại giao. Mật mã trước hết là một loại hoạt động thực tiễn, nội dung
chính của nó là để giữ bí mật thông tin. Ví dụ muốn gửi một văn bản từ một người
gửi A đến một người nhận B, A phải tạo cho văn bản đó một bản mã mật tươ
ng ứng
và thay vì gửi văn bản rõ thì A chỉ gửi cho B bản mã mật, B nhận được bản mã mật
và khôi phục lại văn bản rõ để hiểu được thông tin mà A muốn gửi cho mình. Do
văn bản gửi đi thường được chuyển qua các con đường công khai nên người ngoài
có thể “lấy trộm” được, nhưng vì đó là bản mật mã nên không đọc hiểu được; Còn
A có thể tạo ra bản mã mật và B có thể giải bả
n mã mật thành bản rõ để hiểu được
là do hai người đã có một thoả thuận về một chìa khoá chung, chỉ với khoá chung
này thì A mới tạo được bản mã mật từ bản rõ và B mới khôi phục được bản rõ từ
bản mã mật. Khoá chung đó được gọi là khoá mật mã. Để thực hiện được một phép
mật mã, ta còn cần có một thuật toán biến bản rõ cùng với khoá mật mã thành bản
mã mật và mộ
t thuật toán ngược lại biến bản mật cùng với khoá mật mã thành bản
rõ. Các thuật toán đó được gọi tương ứng là thuật toán lập mã và thuật toán giải mã.
Các thuật toán này thường không nhất thiết phải giữ bí mật, mà cái luôn cần được
giữ bí mật là khoá mật mã. Trong thực tiễn, có những hoạt động ngược lại với hoạt
động bảo mật là khám phá bí mật từ các bản mã “lấy trộm” được, hoạt động này
thường được gọi là mã thám hay phá khoá [2].
- 11 -
Xây dựng hệ thống cung cấp chứng chỉ số dựa trên hạ tầng khoá công khai
1.2 Khái niệm hệ mật mã
Hệ mật mã được định nghĩa là một bộ năm (P, C, K, E, D), trong đó:
1. P là tập hữu hạn các các bản rõ có thể
2. C tập hữu hạn các bản mã có thể
3. K là tập hữu hạn các khoá có thể
4. E là tập các hàm lập mã
5. D là tập các hàm giải mã. Với mỗi k ∈ K, có một hàm lập mã
e
k
∈ E, e
k
: P → C và một hàm giải mã d
k
∈ D, d
k
: C → P sao cho
d
k
(e
k
(x)) = x , ∀ x ∈ P
Hình 1.1: Quá trình mã hoá và giải mã
1.3 Hệ mật mã khoá đối xứng
Các phương pháp mật mã cổ điển đã được biết đến từ khoảng 4000 năm
trước. Một số kỹ thuật đã được những người Ai Cập sử dụng từ nhiều thế kỷ trước.
Những kỹ thuật này chủ yếu sử dụng hai phương pháp chính là: phép thay thế và
phép chuyển dịch. Trong phép thay thế, một chữ cái này được thay thế bởi chữ cái
khác và trong phép chuyển d
ịch, các chữ cái được sắp xếp theo một trật tự khác.
Hệ mã chuẩn DES được xây dựng tại Mỹ trong những năm 70 theo yêu cầu
của Văn phòng quốc gia về chuẩn (NBS) và được sự thẩm định của an ninh quốc
gia là một ví dụ về mật mã cổ điển. DES kết hợp cả hai phương pháp thay thế và
chuyển dịch. DES thực hiện mã hoá trên từng khối bản rõ là một xâu 64 bit, có khoá
là m
ột xâu 56 bit và cho ra bản mã cũng là một xâu 64 bit. Hiện nay, DES và biến
thể của nó (3DES) vẫn được sử dụng thành công trong nhiều ứng dụng.
E D
Ciphertext (Y)
Plaintext (X)
Plaintext (X)
Y = E
K
(X)
Key k
Key k
- 12 -
Xây dựng hệ thống cung cấp chứng chỉ số dựa trên hạ tầng khoá công khai
Trong các hệ mã đối xứng chỉ có một khoá được chia sẻ giữa các bên tham
gia liên lạc. Cứ mỗi lần truyền tin bảo mật, cả người gửi A và người nhận B cùng
thoả thuận trước với nhau một khoá chung K, sau đó người gửi dùng e
K
để lập mã
cho thông báo gửi đi và người nhận dùng d
K
để giải mã bản mật mã nhận được.
Người gửi và người nhận có cùng một khoá chung K, được giữ bí mật dùng cho cả
lập mã và giải mã. Những hệ mật mã cổ điển với cách sử dụng trên được gọi là mật
mã khoá đối xứng hay còn gọi là mật mã khoá bí mật.
Độ an toàn của hệ mật mã đối xứng phụ thuộc vào khoá. Nếu để lộ khoá thì
bất kỳ ngườ
i nào cũng có thể mã hoá và giải mã thông điệp.
* Ưu và nhược điểm của hệ mật mã khoá đối xứng
Ưu điểm nổi bật của các hệ mật mã khoá đối xứng là việc xây dựng một hệ
mật mã có độ bảo mật cao khá dễ dàng về mặt lý thuyết. Nhưng như nếu không kể
đến việc cần có một nguồn sinh khoá ngẫu nhiên thì việc phân phối, lưu trữ bảo mật
và thoả thuận khoá là một vấn đề khó chấp nhận được trong mạng truyền thông
ngày nay. Trong một mạng có n người dùng, nếu cần khoá cho từng cặp thì cần
n(n+1)/2 khoá.
Để khắc phục hiện tượng không thể lưu trữ một khối lượng khoá quá lớn đáp
ứng được nhu cầu mã dịch, người ta xem xét đến việc sử dụng các hệ mật mã khối
với độ dài không l
ớn lắm như DES… hoặc các hệ mật mã dòng mà khoá được sinh
ra từ một nguồn giả ngẫu nhiên bằng thuật toán.
Mặc dù đã thực hiện việc mã hoá và giải mã bằng các hệ mật mã khối hay
bằng thuật toán sinh khoá như đã nêu ở trên thì vấn đề phân phối và thoả thuận khoá
vẫn phải được thực hiện. Như vậy phân phối và thoả thuận khoá là một vấn đề chưa
th
ể được giải quyết trong các hệ mật mã khoá đối xứng.
1.4 Hệ mật mã khoá công khai
Để giải quyết vấn đề phân phối và thoả thuận khoá của mật mã khoá đối
xứng, năm 1976 Diffie và Hellman đã đưa ra khái niệm về hệ mật mã khoá công
khai và một phương pháp trao đổi công khai để tạo ra một khoá bí mật chung mà
tính an toàn được bảo đảm bởi độ khó của một bài toán toán học cụ thể (là bài toán
- 13 -
Xây dựng hệ thống cung cấp chứng chỉ số dựa trên hạ tầng khoá công khai
tính “logarit rời rạc”). Hệ mật mã khoá công khai hay còn được gọi là hệ mật mã
phi đối xứng sử dụng một cặp khoá, khoá mã hoá còn gọi là khoá công khai (public
key) và khoá giải mã được gọi là khoá bí mật hay khóa riêng (private key). Trong
hệ mật này, khoá mã hoá khác với khoá giải mã. Về mặt toán học thì từ khoá công
rất khó tính được khoá riêng. Biết được khoá này không dễ dàng tìm được khoá kia.
Khoá giải mã được giữ bí mật trong khi khoá mã hoá được công bố công khai. Một
người bất kỳ có thể sử dụng khoá công khai để
mã hoá tin tức, nhưng chỉ có người
nào có đúng khoá giải mã mới có khả năng xem được bản rõ.
Người gửi A sẽ mã hoá thông điệp bằng khóa công của người nhận và người
nhận B sẽ giải mã thông điệp với khoá riêng tương ứng của mình.
Quá trình này được mô tả trong hình 1.2 và 1.3.
Hình 1.2: Mã hoá thông điệp sử dụng khoá công khai P
Hình 1.3: Giải mã thông điệp sử dụng khoá riêng của người nhận
Private
Key of
Bob
BOB
Directory of Public Keys
Public
Key P of
Bob
ALICE
- 14 -
Xây dựng hệ thống cung cấp chứng chỉ số dựa trên hạ tầng khoá công khai
Có nhiều hệ thống khoá công khai được triển khai rộng rãi như hệ RSA, hệ
ElGamal sử dụng giao thức trao đổi khoá Diffie-Hellman và nổi lên trong những
năm gần đây là hệ đường cong Elliptic. Trong số các hệ mật mã trên thì hệ RSA là
hệ được cộng đồng chuẩn quốc tế và công nghiệp chấp nhận rộng rãi trong việc
thực thi mật mã khoá công khai.
Hệ mật mã RSA, do Rivest, Shamir và Adleman [12] tìm ra, đã được công
bố lần đầu tiên vào tháng 8 năm 1977 trên tạ
p chí Scientific American. Hệ mật mã
RSA được sử dụng rộng rãi trong thực tiễn đặc biệt cho mục đích bảo mật và xác
thực dữ liệu số. Tính bảo mật và an toàn của chúng được bảo đảm bằng độ phức tạp
của một bài toán số học nổi tiếng là bài toán phân tích số nguyên thành các thừa số
nguyên tố. Hệ mật mã RSA được mô tả như hình 1.4.
Cho n = p*q với p,q là số nguyên tố lớn . Đặ
t P = C = Z
n
Chọn b nguyên tố cùng nhau với φ(n), φ(n) = (p-1)(q-1)
Ta định nghĩa K = {(n, b, a): a*b ≡ 1 mod φ(n)}
trong đó (n,b) là công khai, a là bí mật
Với mỗi K = (n, b, a), mỗi x ∈ P, y ∈ C, định nghĩa:
Hàm mã hoá:
y = e
k
(x) = x
b
mod n
Hàm giải mã:
d
k
(x) = y
a
mod n
Hình 1.4: Sơ đồ hệ mật mã RSA
Việc phát minh ra phương pháp mã công khai tạo ra một cuộc “cách mạng”
trong công nghệ an toàn thông tin điện tử. Nhưng thực tiễn triễn khai cho thấy tốc
độ mã hoá khối dữ liệu lớn bằng các thuật toán mã hoá công khai chậm hơn rất
nhiều so với hệ mã hoá đối xứng. Ví dụ, để đạt được độ an toàn như các hệ mã đối
xứng mạnh cùng thời, RSA đ
òi hỏi thời gian cho việc mã hoá một văn bản lâu hơn
- 15 -
Xây dựng hệ thống cung cấp chứng chỉ số dựa trên hạ tầng khoá công khai
gấp hàng ngàn lần. Do đó, thay bằng việc mã hoá văn bản có kích thước lớn bằng
lược đồ khoá công khai thì văn bản này sẽ được mã hoá bằng một hệ mã đối xứng
có tốc độ cao như DES, IDEA,…sau đó khoá được sử dụng trong hệ mã đối xứng sẽ
được mã hoá sử dụng mật mã khoá công khai. Phương pháp này rất khả thi trong
việc mã và giải mã những văn bản có kích thước lớn như được mô tả trong hình 1.5
và 1.6.
Hình 1.5: Mã hoá thông điệp sử dụng khoá bí mật S để mã thông điệp và
khoá công khai P để mã khoá bí mật S
Hình 1.6: Giải mã thông điệp sử dụng khoá bí mật S để giải mã thông điệp và
khoá riêng P để giải mã khoá bí mật S
Secret
Key S
Public
Key P
of Bob
Directory
of Public
Keys
Symmetric Key S
Private Key
P of Bob
- 16 -
Xây dựng hệ thống cung cấp chứng chỉ số dựa trên hạ tầng khoá công khai
* Ưu và nhược điểm của hệ mật mã khoá công khai
Vấn đề còn tồn đọng của hệ mật mã khoá đối xứng được giải quyết nhờ hệ
mật mã khoá công khai. Chính ưu điểm này đã thu hút nhiều trí tuệ vào việc đề
xuất, đánh giá các hệ mật mã công khai. Nhưng do bản thân các hệ mật mã khoá
công khai đều dựa vào các giả thiết liên quan đến các bài toán khó nên đa số các hệ
mật mã này đề
u có tốc độ mã dịch không nhanh lắm. Chính nhược điểm này làm
cho các hệ mật mã khoá công khai khó được dùng một cách độc lập.
Một vấn đề nữa nảy sinh khi sử dụng các hệ mật mã khóa công khai là việc
xác thực mà trong mô hình hệ mật mã đối xứng không đặt ra. Do các khoá mã công
khai được công bố một cách công khai trên mạng cho nên việc đảm bảo rằng “khoá
được công bố có đúng là của đối tượng cần liên lạc hay không?” là một kẽ hở có th
ể
bị lợi dụng. Vấn đề xác thực này được giải quyết cũng chính bằng các hệ mật mã
khoá công khai. Nhiều thủ tục xác thực đã được nghiên cứu và sử dụng như
Kerberos, X.509… Một ưu điểm nữa của các hệ mật mã khoá công khai là các ứng
dụng của nó trong lĩnh vực chữ ký số, cùng với các kết quả về hàm băm, thủ tục ký
để bảo đả
m tính toàn vẹn của một văn bản được giải quyết.
1.5 Chữ ký số
Mật mã khoá công khai có thể được sử dụng theo nhiều cách khác nhau. Chữ
ký số là một ví dụ minh chứng cho việc đảm bảo xác thực người dùng và toàn vẹn
dữ liệu. Nếu người gửi A mã hoá thông điệp hay tài liệu với khoá riêng của mình thì
bất kỳ ai cũng có thể giải mã thông điệp với khoá công của A. Do đó, người nhận có
thể chắc chắn rằng thông điệp mình nhận chỉ có thể do A mã vì chỉ A mới có khoá
riêng của mình. Quá trình mã hoá thông điệp với khoá riêng của người gửi gọi là
quá trình “ký số”.
Trong thực tế, quá trình ký số thường khó hơn. Thay bằng việc mã bản
thông điệp gốc với khoá riêng của người gửi thì chỉ có bản đại diện thông điệp (bản
băm) có độ dài cố định được mã hoá với khoá riêng của người gửi và bản băm đã
được mã hoá này được gắn vào v
ới thông điệp gốc. Người nhận B sau khi nhận
được thông điệp đầu tiên sẽ giải mã bản băm với khoá công của người gửi, sau đó
- 17 -
Xây dựng hệ thống cung cấp chứng chỉ số dựa trên hạ tầng khoá công khai
băm thông điệp đi kèm bằng thuật toán băm tương ứng với thuật toán băm người
gửi đã sử dụng. B so sánh hai giá trị băm nếu giống nhau thì chắc chắn rằng thông
điệp A gửi cho B còn nguyên vẹn, đồng thời xác thực được người gửi thông tin là ai.
Tính toàn vẹn của thông điệp được đảm bảo vì chỉ thay đổi một bit trong
thông điệp gửi đi thì kết quả hai giá trị băm sẽ khác nhau. Tính xác thực của người
gửi cũng được đảm bảo vì chỉ có người gửi A mới có khoá riêng để mã bản băm.
Chữ ký số cũng chứng minh được tính chống chối bỏ bản gốc vì chỉ có A mới có
khoá riêng dùng để ký số.
Sơ đồ chữ ký được định nghĩa như sau:
Sơ đồ chữ ký là một bộ năm (P, A, K, S, V), trong đó:
1. P là m
ột tập hữu hạn các văn bản có thể
2. A là một tập hữu hạn các chữ ký có thể
3. K là một tập hữu hạn các khoá có thể
4. S là tập các thuật toán ký
5. V là tập các thuật toán kiểm thử
6. Với mỗi k ∈ K, có một thuật toán ký sig
k
∈ S, sig
k
: P → A và một thuật
toán kiểm thử ver
k
∈ V, ver
k
: P
x A → {đúng, sai}, thoả mãn điều kiện
sau đây với mọi x ∈ P, y ∈ A:
ver
k
(x,y) = đúng, nếu y = sig
k
(x)
sai, nếu y ≠ sig
k
(x)
RSA cũng là thuật toán được dùng nhiều cho mục đích ký số. Sơ đồ chữ ký
RSA được mô tả như trong hình 1.7 [3]. Ngoài ra, còn có một số thuật toán công
khai khác được dùng để ký số, ví dụ như chuẩn chữ ký số DSS.
- 18 -
Xõy dng h thng cung cp chng ch s da trờn h tng khoỏ cụng khai
Cho n = p*q vi p,q l s nguyờn t ln . t P = A = Z
n
K = {(n, p, q, a, b)/ n = p*q, a*b 1 mod (n)}
trong ú (n,b) l cụng khai, (a, p, q) l bớ mt
Vi mi K = (n, p, q, a, b), mi x P, ta nh ngha:
y = sig
K
(x) = x
a
mod n, y A
ver
K
(x, y) = ỳng x y
b
mod n
Hỡnh 1.7: S ch ký RSA
Quỏ trỡnh ký v kim tra ch ký c mụ t trong hỡnh 1.8 v hỡnh 1.9
Gi s A mun gi cho B thụng ip x. A thc hin cỏc bc sau:
1. A bm thụng ip x (Hỡnh 1.8 a), thu c bn i din z = h(x) cú kớch
thc c nh 128 bit hoc 160 bit.
2. A ký s trờn bn i din z (Hỡnh 1.8 b), bng khúa bớ mt ca mỡnh, thu
c bn ký s y = sig
K
(z).
3. A gi (x, y) cho B (Hỡnh 1.8 c).
Thông điệp
(bản rõ)
x
(văn bản, âm thanh,
hình ảnh)
Băm thông điệp
(sử dụng thuật toán
MD hoặc SHA)
h(x)
Bản băm
(văn bản đại diện)
z = h(x)
Độ dài tuỳ ý
Độ dài cố định 128
với MD hoặc 160
bit với SHA
Hỡnh 1.8 a: Bm thụng ip.
- 19 -
Xõy dng h thng cung cp chng ch s da trờn h tng khoỏ cụng khai
Bản băm
(văn bản đại diện)
z
Ký số
(sử dụng các sơ đồ
ký số RSA,
Elgamal, DSS)
sig
K
(z)
Bản ký số
y = sig
K
(z)
Khoá bí mật
của ngời gửi
Hỡnh 1.8 b: Ký trờn bn bm.
Ngời gửi (A) Ngời nhận (B)
Thông điệp, Bản ký số
(x, y)
Hỡnh 1.8 c: Truyn d liu thụng tin cn gi.
Hỡnh 1.8: S mụ t cỏc cụng on ngi A lm trc khi gi thụng ip
cho ngi B (s dng hm bm ri ký s)
Khi B nhn c (x, y). B thc hin cỏc bc sau:
1. B kim tra ch ký s xỏc minh xem thụng ip m mỡnh nhn c cú
phi c gi t A hay khụng bng cỏch gii mó ch ký s y, bng khúa
cụng khai c
a A, c z. (Hỡnh 1.9 a)
2. B dựng mt thut toỏn bm tng ng vi thut toỏn bm m A dựng
bm thụng ip x i kốm, nhn c h(x). (Hỡnh 1.9 b)
3. B so sỏnh 2 giỏ tr bm z v h(x), nu ging nhau thỡ chc chn rng thụng
ip x m A mun gi cho B cũn nguyờn vn, bờn cnh ú cng xỏc thc
c ngi gi thụng tin l ai. (Hỡnh 1.9 c)
- 20 -
Xõy dng h thng cung cp chng ch s da trờn h tng khoỏ cụng khai
Bản ký số
y
Xác minh chữ ký
ver
K
(y, z)
y = sig
K
(z)
y sig
K
(z)
True
False
Khoá công khai
của ngời A
Hỡnh 1.9 a: Xỏc minh ch ký.
Thông điệp
(bản rõ)
x
Băm thông điệp
(sử dụng thuật toán MD
hoặc SHA)
h(x)
Bản băm
(văn bản đại diện)
h(x)
Hỡnh 1.9 b: Tin hnh bm thụng ip x i kốm.
So sánh z và h(x)
z = h(x)
T
h
ô
n
g
đ
i
ệ
p
t
o
à
n
v
ẹ
n
z h(x)
T
h
ô
n
g
đ
i
ệ
p
đ
ã
b
ị
t
h
a
y
đ
ổ
i
Hỡnh 1.9 c: Kim tra tớnh ton vn ca thụng ip
Hỡnh 1.9: S mụ t cỏc cụng on kim tra ch ký sau khi ngi B nhn
c thụng ip
1.6 Hm bm
Vic s dng cỏc h mt mó v s ch ký s thng l mó húa v ký s
trờn tng bit ca thụng tin, thi gian mó húa v ký s t l thun vi dung lng
ca thụng tin. Thờm vo ú cú th xy ra trng hp: vi nhiu bc thụng ip u
vo khỏc nhau, s dng h mt mó, s ký s ging nhau (cú th khỏc nhau) thỡ
- 21 -
Xõy dng h thng cung cp chng ch s da trờn h tng khoỏ cụng khai
cho ra kt qu bn mó, bn ký s ging nhau (ỏnh x N-1: nhiu mt), nh
hỡnh 1.10. iu ny s dn n mt s rc ri v sau cho vic xỏc thc thụng tin.
Thông điệp
x
Thông điệp
y
Thông điệp
z
Hệ mật mã
hay
Sơ đồ ký số
Bản mã
hay
Bản ký số
Nguồn
Đích
Hỡnh 1.10: Nhiu thụng ip ngun cho cựng 1 kt qu ớch sau mó hoỏ/ ký s
Cỏc s ký s thng ch c s dng ký cỏc bc thụng ip (thụng
tin) cú kớch thc nh v sau khi ký, bn ký s cú kớch thc gp ụi bn thụng
ip gc vớ d vi s ch ký chun DSS ký trờn cỏc bc thụng ip cú kớch
thc 160 bit, bn ký s s cú kớch thc 320 bit. Trong khi ú trờn thc t, ta c
n
phi ký cỏc thụng ip cú kớch thc ln hn nhiu, chng hn vi chc MegaByte.
Hn na, ỏp ng yờu cu xỏc thc sau khi thụng tin n ngi nhn, d liu
truyn qua mng khụng ch l bn thụng ip gc, m cũn bao gm c bn ký s (cú
dung lng gp ụi dung lng bn thụng ip gc). Mt cỏch n gin gii
quyt v
n trờn (vi thụng ip cú kớch thc ln) ny l cht thụng ip thnh
nhiu on 160 bit, sau ú ký lờn cỏc on ú c lp nhau. Nhng, s dng bin
phỏp ny s cú mt s vn gp phi trong vic to ra cỏc ch ký s:
- Th nht: vi mt thụng ip cú kớch thc a, thỡ sau khi ký kớch thc ca
ch ký s l 2a (trong trng h
p s dng DSS).
- Th hai: vi cỏc ch ký an ton thỡ tc chm vỡ chỳng dựng nhiu
phộp tớnh s hc phc tp nh s m modulo.
- 22 -
Xây dựng hệ thống cung cấp chứng chỉ số dựa trên hạ tầng khoá công khai
- Thứ ba: vấn đề nghiêm trọng hơn đó là kết quả sau khi ký, nội dung của
thông điệp có thể bị xáo trộn các đoạn với nhau, hoặc một số đoạn trong chúng có
thể bị mất mát, trong khi người nhận cần phải xác minh lại thông điệp. Do đó, ta
cần phải bảo đảm tính toàn vẹn của thông điệp.
Giải pháp cho các vấn đề vướng mắc đến chữ ký số là dùng hàm băm để trợ
giúp cho việc ký số.
Hàm băm - hiểu theo một nghĩa đơn giản là hàm cho tương ứng một mảng
dữ liệu lớn với một mảng dữ liệu nhỏ hơn - được sử dụng rộng rãi trong nhiều ứng
dụng khác nhau của tin học, không chỉ thuộc phạm vi mật mã học [1].
Hàm băm được đề cập đến trong phạm vi luậ
n văn là hàm băm một chiều, có
tác dụng trợ giúp cho các sơ đồ ký số nhằm làm giảm dung lượng của dữ liệu cần
thiết để truyền qua mạng. Hàm băm ở đây được hiểu là các thuật toán không sử
dụng khoá để mã hóa (ở đây ta dùng thuật ngữ “băm” thay cho “mã hoá”), 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. Giá trị của hàm
băm là duy nhất và không thể suy ngược lại được nội dung thông điệp từ giá trị băm
này. Hàm băm một chiều h có một số đặc tính quan trọng 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 hay bị xóa để thành thông điệp x’
thì h(x’)
≠ h(x). Cho dù chỉ là một sự thay đổi nhỏ hay chỉ là xóa đi 1 bit dữ liệu của
thông điệp thì giá trị băm cũng vẫn thay đổi. Điều này có nghĩa là: hai thông điệp
hoàn toàn khác nhau thì giá trị hàm băm cũng khác nhau.
- Nội dung của thông điệp gốc không thể bị suy ra từ giá trị hàm băm. Nghĩa
là với thông điệp x thì dễ dàng tính được z = h(x), nhưng lại không thể (thực chất là
khó) suy ng
ược lại được x nếu chỉ biết giá trị hàm băm h(x).
Một số thuật toán băm được biết đến nhiều là hàm băm dòng và hàm băm
chuẩn như: [MD2], [MD4], [MD5], [SHA-1]…
- 23 -
Xây dựng hệ thống cung cấp chứng chỉ số dựa trên hạ tầng khoá công khai
CHƯƠNG 2
CHỨNG CHỈ SỐ VÀ HẠ TẦNG MÃ KHOÁ CÔNG KHAI
Mật mã khoá công khai cho đến nay được xem là giải pháp tốt nhất để đảm
bảo được các yêu cầu về an toàn thông tin mạng: “bảo mật”, “toàn vẹn”, “xác thực”
và “chống chối bỏ”. Mặc dù vẫn còn mới khi so sánh với các phương pháp mã cổ
điển nhưng mật mã khoá công khai đã nhận được sự tin cậy rộng rãi của thế giới
Internet vì những công cụ có khả năng phát triển cho vấn đề quản lý khoá.
Như
đã đề cập ở trên, vấn đề chính của hệ mã khoá đối xứng là vấn đề quản
lý khoá và để giải quyết vấn đề này hệ mã khoá công khai đã được đưa ra như một
giải pháp. Trong hệ thống mật mã khoá công khai, khoá riêng (khoá bí mật) được
người dùng giữ bí mật trong khi khoá công khai với tên của người sở hữu tương
ứng lại được công bố công khai. Đối với hệ thống như thế này, ta cần xác định và
trả lời một số câu hỏi như:
- Ai sẽ tạo ra cặp khoá công khai – bí mật?
- Dữ liệu sẽ được lưu dưới định dạng như thế nào trong hệ thống lưu trữ
(khoá công, định danh của người sở hữu và các thông tin khác)?
- Có cơ chế nào để giữ cho thông tin không bị thay đổi trên hệ thống lưu trữ?
- Làm thế nào để đảm bảo việc gắ
n kết giữa khoá công và định danh của thực
thể yêu cầu có khoá công?
- Làm thế nào để người sử dụng có thể truy cập được đến nơi lưu trữ?
- Làm thế nào người sử dụng nhận biết được có sự thay đổi trong dữ liệu
đang được lưu trên hệ thống lưu trữ?
- Điều gì sẽ xảy với khoá công khai nếu khoá riêng tương ứng bị xâm hại?
- Có mộ
t chính sách nào cho tất cả những vấn đề nêu trên không?
Để trả lời cho những câu hỏi trên có một giải pháp là sử dụng hạ tầng khoá
công khai - PKI.
Cho đến nay có nhiều định nghĩa về PKI, nhưng chưa định nghĩa nào được
công nhận chính thức. Có một số định nghĩa về PKI như sau: