ĐẠI HỌC QUỐC GIA HÀ NỘI
HÀ NỘI - 2010
HÀ NỘI - 2010
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 Hồ Sĩ Đàm, TS. Lê Đức Phong.
Những người 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 bộ môn Truyền Thông và Mạng Máy Tính, khoa Công
Nghệ Thông Tin trường Đại Học Công Nghệ-Đại Học Quốc Gia 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.
1.3. Hạ tầng khóa công khai (PKI) 5
1.3.1. PKI là gì 5
1.3.2. Cở sở hạ tầng khóa công khai 6
1.4. Một vài kiến trúc và công nghệ PKI hiện hành 7
1.4.1.Một số ứng dụng 7
1.5. Mục đích của đề tài 8
1.6. Đặt vần đề ? 9
1.7. Các vấ
n đề sẽ giải quyết trong khóa luận 9
Chương 2 : Xây dựng hạ tầng khóa công khai(PKI), vấn đề cấp phát chứng thực số và
ứng dụng trong thương mại điện tử 11
2.1. Hàm băm mật mã học 11
2.1.1. Hàm băm 11
2.1.2. Hàm băm mật mã học 11
2.1.3. Đảm bảo tính toàn vẹn dữ liệu 11
2.1.4. Một số hàm băm thông dụng 12
2.2. Mã hóa thông tin 14
2.3. Chữ ký số 15
2.3.1. Chữ ký số 15
2.3.2. Tạo và kiểm tra chữ ký số
16
2.4. Chứng thực số 22
2.5. Cấu trúc phân tầng của hệ thống PKI 22
2.6. Cấp phát và xác thực chứng thực số 23
2.6.1. Cấp phát chứng thực số 23
2.6.2. Xác thực chứng thực số 25
2.7. Ứng dụng của hạ tầng khóa công khai và cấp phát chứng thực 25
2.7.1. Mã hóa 25
2.7.2. Chống giả mạo 25
2.7.3. Xác thực 26
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 khóa luận 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). Phần đầu của khóa luận (chương 1) 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 2 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
3 đặc tả một hạ tầng khóa công khai đơn giản và Kết Luận.
DANH MỤC TỪ VIẾT TẮT
Hình 2.5 : Thời gian xác nhận chữ ký của RSA và DSA
Hình 2.6 : Mô hình phân cấp
Hình 3.1 : Hàm tạo cặp khóa riêng và khóa công khai
Hình 3.2 : Mô phỏng tạ
o khóa
Hình 3.3 : Tạo chữ ký số
Hình 3.4 : Form nhập thông tin của client
Hình 3.5 : Thông báo trả về khi kết quả gửi thông tin thành công
Hình 3.6 : Xác thực khóa công khai và chữ ký số
Hình 3.7 : cấp phát chứng thực số
Hình 3.8 : Kiểm tra thông tin và cấp phát chứng thực số
Hình 3.9 : Xác thực chứng thực số
Hình 3.10 : Form tìm kiếm, sửa, xóa thông tin chứng thực số
Hình 3.11 : Kiểm tra và thu hồi chứng thực số hết hạn sử dụng
1
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
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.1.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. 3 - 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ố
- 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] 5
1.2.2. Phân tích thuật toán
1.2.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.2.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.
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.3.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.
7
‐ 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
1.4.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 Associate eTrust PKI
Microsoft
OpenCA (Một mô hình PKI mã nguồn mở)
RSA Security
IDX-PKI
Simple CA
1.5. Mục đích của đề tài
‐ Một vài năm trở lại đây PKI là 1 chủ đề nóng đối với các doanh nghiệp lớn. Ở Việt
Nam đây vấn là một đề tài khá mới mẻ. Do vậy tìm hiểu và xây dựng hạ tầng cơ sở
xác thực khóa công khai(PKI) là một cách tiếp cận cho một nền tảng mới. Từ đó nêu
rõ vai trò và ứng dụng của hạ tầng khóa công khai trong thương mại điện tử.
‐ Tìm hi
ểu về các thuật toán(sinh số ngẫu nhiên trong việc tạo khóa, hàm băm, mã
hóa, tạo chữ ký số )
9 1.6. Đặt vần đề ?
- Để xây dựng một cơ sở hạ tầng chúng ta phải giải quyết sơ bộ những vấn đề sau
đây :
Làm sao để cấp phát khóa công khai và khóa bí mật cho từng người.
Vấn đề đăng ký khóa công khai với một CA
Tạo chữ ký số cho từng văn bản ngẫu nhiên.
Bên thứ 3 là bên thẩm định và đánh giá :
Cấp phát và bảo mật Khóa riêng và khóa công khai của CA.
11
Chương 2 : Xây dựng hạ tầng khóa công khai(PKI), vấn đề
cấp phát chứng thực số và ứng dụng trong thương mại điện
tử
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
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.
13
‐ 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
Λ
(
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:
14
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ư:
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]
16
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
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