ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trần Quang Thuận
NGHIÊN CỨU VÀ XÂY DỰNG HẠ TẦNG KHÓA
CÔNG KHAI
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành : Công nghệ thông tin
HÀ NỘI - 2010
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trần Quang Thuận
NGHIÊN CỨU VÀ XÂY DỰNG HẠ TẦNG KHÓA
CÔNG KHAI
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành : Công nghệ thông tin
Cán bộ hướng dẫn: PGS – TS.Hồ Sỹ Đàm
Cán bộ đồng hướng dẫn: TS.Lê Đức Phong
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.
M ỤC L ỤC
Trần Quang Thuận................................................................................................................................1
Trần Quang Thuận................................................................................................................................2
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
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
Đâ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 khóa luận 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 thương mại điện tử. Qua đó trình bày một bản
platform mô phỏng hoạt động của một hạ tầng khóa công khai (PKI) cơ bản.
1
Chương 1 : Giới Thiệu
1.1. Tìm hiểu Mật mã học khoá công khai
1.1.1. Mật mã học khoá công khai
1.1.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.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.
- Mã hoá :
2
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.
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.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.
4
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.3. Hạ tầng khóa công khai (PKI)
1.3.1. PKI là gì
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
6
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.4. Một vài kiến trúc và công nghệ PKI hiện hành
1.4.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):
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.
Khóa của bên thứ 3 bên thẩm định sẽ do cấp hay tổ chức nào giám đinh. Hay
phải có cơ chế nào để chống giả mạo bên chứng thực.
Các Vấn đề liên quan đến chứng thực số cấp phát, xác thực và quản lý tại server
ra sao.
1.7. Các vấn đề sẽ giải quyết trong khóa luận
- Với những yêu cầu về một hệ thống PKI như trên chúng ta phải xây dựng bài toán
như thế nào.Chương trình thiết kế phải bao gồm 3 đối tượng :
• Server :
Cho phép người dùng trong hệ thống đăng ký khóa công khai. Cấp phát 1
chứng thực số (certificat) cho người dùng đó nếu khóa công khai hợp lệ
Quản lý khóa công khai, Thu hồi/cấp phát lại chứng thực số
Cho phép bên thứ 3 kiểm tra tính đúng đắn của 1 chứng thực số bất kỳ
• User :
Hệ thống PKI cấp phát một khóa công khai cho user và khóa bí mật (Khóa
riêng) do PKI client cấp phát và user phải giữ bí mật.
Tạo chữ ký số cho từng văn bản ngẫu nhiên.
8
• 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.
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ử
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
(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
Λ
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.
12
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