Nghiên cứu giải pháp xây dựng hệ thống cấp chứng chỉ số dựa trên hạ tầng khóa công kha - Pdf 41

ĐẠI HỌC THÁI NGUYÊN
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

HOÀNG THỊ THÚY

NGHIÊN CỨU GIẢI PHÁP XÂY DỰNG
HỆ THỐNG CẤP CHỨNG CHỈ SỐ DỰA
TRÊN HẠ TẦNG KHÓA CÔNG KHAI
Chuyên ngành: Khoa học máy tính
Mã số: 60 48 01 01

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS. NGUYỄN VĂN TAM

Thái Nguyên 10/2013


i

LỜI CẢM ƠN

Trước hết, 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 cũng như cách để triển khai ứng
dụng trên nó.
Tôi cũng xin tỏ lòng biết ơn sâu sắc tới thầy cô, bạn bè cùng khoá
đã quan tâm, giúp đỡ tôi tiến bộ trong suốt thời gian qua. Tôi xin cảm
ơn trường Đại học Thái Nguyên cũng như trường Đại học Kinh Doanh
và Công nghệ Hà Nội đã 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.

2.4.4. Mô hình Hub và Spoke (Bridge CA)....................................................36
2.4.5. Mô hình Web (Trust Lists)...................................................................37
2.4.6. Mô hình người sử dụng trung tâm (User Centric Model).....................38
3.1. Tổng quan về hệ thống............................................................................41
3.1.1. Mô hình hệ thống..................................................................................41
3.1.2. Một số đặc tính của hệ thống cung cấp chứng chỉ số...........................41
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ố JavaCA......................................................................................46
3.2.1. Certificate Authority - CA....................................................................46
3.2.2. Registration Authority - RA.................................................................47
3.2.3. RAO......................................................................................................48
3.2.4. LDAP và Public Database Server.........................................................48
3.3. Qui trình đăng kí, cấp phát chứng chỉ......................................................49
3.4. Thử nghiệm sản phẩm.............................................................................50
3.4.1. Thử nghiệm phía quản trị.....................................................................50


iii

3.4.2. Thử nghiệm phía người dùng...............................................................50
3.5. Đánh giá chung........................................................................................50
Kết quả nghiên cứu.........................................................................................53


iv

DANH MỤC TỪ VIẾT TẮT
ARLs
CA
CAO

SHA-1
SSL
TLS

Authority Revocation Lists
Certificate Authority
Certificate Authority Operator
Cryptographic Message Syntax
Commercial of the Shelf
Certificate Revocation Lists
Certificate Revocation Request
Certification Service Provider
Directory Access Protocol
Data Encryption Standard
Domain Name System
Digital Signature Standard
Elliptic Curve Cryptography
Secure Hypertext Transaction Standard
Internet Assigned Numbers Authority
Institute of Electrical & Electronic Engineers
Internet Engineering Task Force
International Organization for
Standardization
Internet Telecommumications UnionTelecommunication
Lightweight Directory Access Protocol
Message Digest 5 Hash Algorithm
Online Certificate Status Protocol
Privacy Enhanced Mail
Pretty Good Privacy
Public Key Certificate

........................................................................................................................23
2.2. Hạ tầng khóa công khai – PKI.................................................................25
2.3. Hệ thống cấp chứng chỉ số (Certification Authority – CA).....................30
2.4. Mô hình tin cậy cho PKI..........................................................................31
2.4.1. Mô hình CA đơn...................................................................................31
2.4.2. Mô hình phân cấp.................................................................................33
2.4.3. Mô hình mắt lưới (xác thực chéo)........................................................34
2.4.4. Mô hình Hub và Spoke (Bridge CA)....................................................36
2.4.5. Mô hình Web (Trust Lists)...................................................................37
2.4.6. Mô hình người sử dụng trung tâm (User Centric Model).....................38
3.1. Tổng quan về hệ thống............................................................................41
3.1.1. Mô hình hệ thống..................................................................................41
3.1.2. Một số đặc tính của hệ thống cung cấp chứng chỉ số...........................41
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ố JavaCA......................................................................................46
3.2.1. Certificate Authority - CA....................................................................46
3.2.2. Registration Authority - RA.................................................................47
3.2.3. RAO......................................................................................................48
3.2.4. LDAP và Public Database Server.........................................................48
3.3. Qui trình đăng kí, cấp phát chứng chỉ......................................................49
3.4. Thử nghiệm sản phẩm.............................................................................50
3.4.1. Thử nghiệm phía quản trị.....................................................................50


vi

3.4.2. Thử nghiệm phía người dùng...............................................................50
3.5. Đánh giá chung........................................................................................50
Kết quả nghiên cứu.........................................................................................53


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 gốc để hiểu được thông tin mà A
muốn gửi cho mình. 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ì đó chỉ là bản mã
mật nên không đọc hiểu được. 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 gốc để hiểu được là do hai người đã có một thỏa 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 gốc và B mới khôi phục được bản gốc 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ó
một thuật toán biến bản gốc 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 gốc. 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]


3

1.1. 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 (viết tắt của Data Encryption Standard, hay Tiêu

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à thỏa thuận khoá vẫn
phải được thực hiện. Như vậy phân phối và thỏa 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.2. Hệ mật mã khoá công khai
Để giải quyết vấn đề phân phối và thỏa 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 cụ thể
(là bài toán 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 - c) và khoá giải mã được gọi là khóa riêng
(private key - r). 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 khai 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.


5

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 khai của người nhận

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.
Tạo khóa: Khi đăng kí khóa, hệ thống sẽ sinh ra hai khóa đó là
khóa công khai (Public key - c ) và khóa bí mật (Private key - r).
Bước 1: Chọn p, q là hai số nguyên tố lớn
Bước 2: Cho n = p.q
Bước 3: φ(n) = (p-1)(q-1)
Bước 4: (r, φ)=1 (chọn r thỏa mãn điều kiện này)
Bước 5: Chọn c thỏa mãn điều kiện c.r % φ =1
Sau khi hoàn thành 5 bước trên sẽ tạo ra hai khóa:
Khóa riêng: (r, n)
Khóa công khai: (c, 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 gấp hàng ngàn lần. Do đó, thay bằng việc mã hoá


7

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

mình em

Hình 1.6: Giải mã thông điệp sử dụng khoá bí mật C để giải mã thông điệp
và khoá riêng R để giải mã khoá bí mật C


8

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.3. Hàm băm
Việc sử dụng các hệ mật mã và sơ đồ chữ kí số thường là mã hóa và kí
số trên từng bit của thông tin, thời gian để mã hóa và kí sẽ tỷ lệ thuận với
dung lượng của thông tin. Thêm vào đó có thể xảy ra trường hợp: với nhiều
bức thông điệp đầu vào khác nhau, sử dụng hệ mật mã, sơ đồ kí số giống nhau
(có thể khác nhau) thì cho ra kết quả bản mã, bản kí số giống nhau (ánh xạ N1: nhiều – một), như hình 1.7. Điều này sẽ dẫn đến một số rắc rối về sau cho

điệp có kích thước 160bit, bản kí số sẽ có kích thước 320bit. Trong khi đó
trên thực tế, ta cần phải kí các thông điệp có kích thước lớn hơn nhiều, chẳng
hạn vài chục MegaByte. Hơn nữa, để đáp ứng yêu cầu xác thực sau khi thông
tin đến người nhận, dữ liệu truyền qua mạng không chỉ là bản thông điệp gốc,
mà còn bao gồm cả bản kí số (có dung lượng gấp đôi dung lượng bản thông
điệp gốc). Một cách đơn giản để giải quyết vấn đề trên (với thông điệp có
kích thước lớn) này là chặt thông điệp thành nhiều đoạn 160bit, sau đó kí lên
các đoạn đó độc lập nhau. Nhưng sử dụng biện pháp này sẽ có một số vấn đề
gặp phải trong việc tạo ra các chữ kí số:
- Thứ nhất: với một thông điệp có kích thước a, thì sau khi kí kích
thước của chữ kí sẽ là 2a (trong trường hợp sử dụng DSS).


10

- Thứ hai: với các chữ kí “an toàn” thì tốc độ chậm vì chúng dùng
nhiều phép tính số học phức tạp như số mũ modulo.
- 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

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 đó 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


12

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í sigk∈ S, sigk: P → A và
một thuật toán kiểm thử verk∈ V, verk: P x A → {đúng, sai},
thỏa mãn điều kiện sau đây với mọi x ∈ P, y ∈ A:
verk(x, y) =

đúng, nếu y = sigk(x)
sai, nếu y ≠ sigk(x)

RSA cũng là thuật toán được dùng nhiều cho mục đích kí số. Sơ đồ chữ kí

lưu trữ?
- Làm thế nào để đảm bảo việc gắn kết giữa khoá công khai và định
danh của thực thể yêu cầu có khoá công khai?
- 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ữ?


14

- Điều gì sẽ xảy ra 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:
“PKI là một tập các phần cứng, phần mềm, con người, chính sách và các thủ
tục cần thiết để tạo, quản lý, lưu trữ, phân phối và thu hồi chứng chỉ khoá
công khai dựa trên mật mã khoá công khai”[25].
“PKI là hạ tầng cơ sở có thể hỗ trợ quản lý khoá công khai để hỗ trợ
các dịch vụ xác thực, mã hoá, toàn vẹn hay chống chối bỏ”[9].
“PKI là hạ tầng cơ sở bảo mật có những dịch vụ được triển khai và
chuyển giao sử dụng công nghệ và khái niệm khoá công khai”[4].
Nhìn chung, PKI có thể được định nghĩa như một hạ tầng cơ sở sử
dụng công nghệ thông tin để cung cấp dịch vụ mã hoá khoá công khai và chữ
kí số. Một mục đích quan trọng khác của PKI là để quản lý khoá và chứng chỉ
được sử dụng trong hệ thống.
Chứng chỉ là cấu trúc dữ liệu đặc biệt, gắn kết khoá công khai với chủ
sở hữu của nó. Việc gắn kết này được đảm bảo bằng chữ kí số của nơi được
uỷ quyền cấp chứng chỉ.

người. Để bảo đảm tính duy nhất cao có thể sử dụng thông tin sinh trắc của
người sử dụng như vân tay.
- Khóa công khai ( public key ) của người được cấp
- Chữ kí số của Nhà cung cấp chứng chỉ - CA
Người nào muốn sử dụng chứng chỉ trước hết sẽ kiểm tra chữ kí số trong
chứng chỉ. Nếu đó là chữ kí hợp lệ thì sau đó có thể sử dụng chứng chỉ theo
mục đích mong muốn.
Có nhiều loại chứng chỉ, một trong số đó là:


16

- Chứng chỉ khoá công khai X.509
- Chứng chỉ khoá công khai đơn giản (Simple Public Key Certificates SPKC).
- Chứng chỉ Pretty Good Privacy (PGP)
- Chứng chỉ thuộc tính (Attribute Certificates - AC)
Tất cả các loại chứng chỉ này đều có cấu trúc định dạng riêng. Hiện nay
chứng chỉ khoá công khai X.509 được sử dụng phổ biến trong hầu hết các hệ
thống PKI. Hệ thống chương ttrình cấp chứng chỉ số thử nghiệm cũng sử
dụng định dạng chứng chỉ theo X.509, nên luận văn này tập trung vào xem xét
chi tiết chứng chỉ công khai X.509. Trong luận văn, thuật ngữ chứng chỉ
“certificate” được sử dụng đồng nghĩa với chứng chỉ khoá công khai X.509 v3.
2.1.2. Chứng chỉ khoá công khai X.509
Chứng chỉ X.509 v3 là định dạng chứng chỉ được sử dụng phổ biến và
được hầu hết các nhà cung cấp sản phẩm PKI triển khai.
Chứng chỉ khoá công khai X.509 được Hội viễn thông quốc tế (ITU)
đưa ra lần đầu tiên năm 1988 như là một bộ phận của dịch vụ thư mục X.500.
Chứng chỉ gồm 2 phần. Phần đầu là những trường cơ bản cần thiết
phải có trong chứng chỉ. Phần thứ hai chứa thêm một số trường phụ, những
trường phụ này được gọi là trường mở rộng dùng để xác định và đáp ứng

- Extensions (Optional): chỉ có trong chứng chỉ v.3.
- Certification Authority’s Digital Signature: chữ kí số của CA được
tính từ những thông tin trên chứng chỉ với khoá riêng và thuật toán kí số được
chỉ ra trong trường Signature Algorithm Identifier của chứng chỉ.
Tính toàn vẹn của chứng chỉ được đảm bảo bằng chữ kí số của CA trên
chứng chỉ. Khoá công khai của CA được phân phối đến người sử dụng chứng
chỉ theo một số cơ chế bảo mật trước khi thực hiện các thao tác PKI. Người
sử dụng kiểm tra hiệu lực của chứng chỉ được cấp với chữ kí số của CA và
khoá công khai của CA.
b. Những trường mở rộng của chứng chỉ X.509
Phần mở rộng là những thông tin về các thuộc tính cần thiết được đưa
vào để gắn những thuộc tính này với người sử dụng hay khoá công khai.
Những thông tin trong phần mở rộng thường được dùng để quản lý xác thực
phân cấp, chính sách chứng chỉ, thông tin về chứng chỉ bị thu hồi… Nó cũng
có thể được sử dụng để định nghĩa phần mở rộng riêng chứa những thông tin
đặc trưng cho cộng đồng nhất định. Mỗi trường mở rộng trong chứng chỉ
được thiết kế với cờ “critical” hoặc “uncritical”.
- Authority Key Indentifier: chứa ID khoá công khai của CA, ID này
là duy nhất và được dùng để kiểm tra chữ kí số trên chứng chỉ. Nó cũng được
sử dụng để phân biệt giữa các cặp khoá do một CA sử dụng (trong trường hợp
nếu CA có nhiều hơn một khoá công khai). Trường này được sử dụng cho tất
cả các chứng chỉ tự kí số (CA - certificates).



Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status