ĐẠI HỌC THÁI NGUYÊN 1

TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN

THÔNG

\

PHAN THỊ KIM QUẾ

LỜI CẢM ƠN

Em xin gửi lời cảm ơn tới Khoa CNTT- ĐHTN, nơi các thầy cô đã tận tình

giúp đỡ truyền đạt các kiến thức cho em trong suốt quá trình học tập. Em xin cảm

ơn Ban chủ nhiệm khoa và các cán bộ đã tạo điều kiện tốt nhất cho em học tập và

hoàn thành đề tài tốt nghiệp của mình.

PHÁT TRIỂN MỘT HẠ TẦNG KHÓA CÔNG KHAI CƠ BẢN DỰA TRÊN BỘ CÔNG Em xin gửi lời cảm ơn chân thành nhất đến T.S Lương Thế Dũng đã tận tình

CỤ CRYPTOSYS giúp đỡ, chỉ bảo cũng như tạo điều kiện để em có thể hoàn thành thực hiện đề tài

này.

Bên cạnh đó em cũng nhận được nhiều sự giúp đỡ, lời động viên từ các anh,

Tuy nhiên, do thời gian hạn hẹp, mặc dù đã hết sức mình, nhưng chắc luận

các chị, bạn bè,… Em xin hết lòng ghi ơn.

văn khó tránh khỏi thiếu sót. Em rất mong nhận được sự thông cảm và chỉ bảo tình

của quý thầy cô và các bạn.

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

Em xin chân thành cảm ơn!

Thái Nguyên, tháng 10 năm 2015

Học viên

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Thái Nguyên - 2015 Phan Thị Kim Quế

2

LỜI CAM ĐOAN

Em xin cam đoan, toàn bộ nội dung liên quan tới đề tài được trình bày trong

luận văn là bản thân em tự tìm hiểu và tìm tòi dưới sự hướng dẫn khoa học của thầy

T.S Lương Thế Dũng.

Các tài liệu, số liệu tham khảo được trích dẫn đầy đủ nguồn gốc. Em xin chịu

trách nhiệm trước pháp luật lời cam đoan của mình.

Học viên thực hiện

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Phan Thị Kim Quế

3

MỤC LỤC

LỜI CẢM ƠN

LỜI CAM ĐOAN

MỤC LỤC ................................................................................................................. 3

DANH MỤC CÁC TỪ VIẾT TẮT .......................................................................... 6

DANH MỤC HÌNH VẼ ............................................................................................ 7

1.1.Giới thiệu chung ....................................................................................... 11

1.2.Mật mã khóa đối xứng và mật mã khóa bất đối xứng.............................. 12

 Mật mã khóa đối xứng ......................................................................... 12

 Mật mã khóa bất đối xứng ................................................................... 14

1.3.Chữ kí số .................................................................................................. 16

Chương 1.TỔNG QUAN VỀ PKI .......................................................................... 11

1.3.1. Khái niệm ............................................................................................ 16

1.4.Hạ tầng khóa công khai PKI .................................................................... 18

1.4.1.Định nghĩa PKI .............................................................................. 18

1.4.2.Các thành phần chính của PKI ...................................................... 18

1.3.2. Tạo chữ kí số ....................................................................................... 17

 Toàn vẹn .................................................................................................... 22

1.4.3.Các dịch vụ của PKI...................................................................... 22

1.4.4.Kiến trúc PKI hiện hành ............................................................... 23

1.5.Kết chương ............................................................................................... 25

 Bảo mật ...................................................................................................... 22

2.1.Giới thiệu Cryptosys PKI ......................................................................... 26

Chương 2. TÌM HIỂU KIẾN TRÚC VÀTHUẬT TOÁN TRONG CRYPTOSYS ........ 26

2.1.1. Các hàm được sửa đổi trong các phiên bản ........................................ 26

2.2.Các thuật toán hỗ trợ trong Cryptosys PKI .............................................. 29

2.1.2. Quy ước trong tài liệu này .................................................................. 29

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

2.2.1. Thuật toán ký số và mã hóa công khai ............................................... 29

4

2.2.2. Thuật toán mật mã khối đối xứng cho mã hóa nội dung .................... 30

2.2.3. Thuật toán mã hóa khối cho việc đóng gói khóa ................................ 30

2.2.4. Thuật toán băm Message digest .......................................................... 30

2.2.5. Thuật toán băm khóa HMAC ............................................................. 30

2.2.6. Các thuật toán mã hóa dựa trên mật khẩu ........................................... 31

2.2.7. Định dạng khóa RSA .......................................................................... 31

2.2.8. Các kiểu nội dung CMS ...................................................................... 32

2.2.9. Chứng chỉ X509. ................................................................................. 32

2.2.10.Các thuật toán không được hỗ trợ trong Cryptosys PKI ................... 32

2.3.Chứng thư số ........................................................................................... 33

2.2.11.Các định dạng lưu trữ khóa ............................................................... 32

2.3.1. Chứng thư khóa công khai .................................................................. 33

2.4.Cài đặt và sử dụng thư viện CryptoSysPKI ............................................. 38

2.3.2. Khuôn dạng chứng thư X.509 ............................................................. 35

2.4.1. Cài đặt ................................................................................................. 38

2.4.2. Sử dụng với C và C++ ........................................................................ 39

2.4.3. Sử dụng với .NET: C# và VB.NET .................................................... 39

2.4.4. Phát hành an toàn ................................................................................ 40

2.4.5. An toàn khóa ....................................................................................... 41

2.4.6. Các tùy chọn an toàn cho khóa bí mật được mã hóa .......................... 42

2.4.7. Sinh số ngẫu nhiên ( Random Number Generator) ............................ 43

2.4.8. Xác định những định danh riêng biệt ................................................. 44

2.4.9. Tham số mở rộng X509 ...................................................................... 45

2.4.10.Danh sách một số hàm trong CryptoSysPKI .................................... 46

1.Hàm CMS ................................................................................................ 46

2.Các hàm khóa công khai RSA ............................................................... 46

3.Hàm RSA gốc .......................................................................................... 47

4.Hàm chứng chỉ X509 .............................................................................. 47

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

5.Hàm PFX ................................................................................................. 48

5

6.Các hàm mật mã khối ............................................................................. 48

7.Các hàm băm Message Digest ............................................................... 48

8.Các hàm HMAC ...................................................................................... 49

9.Các hàm chuyển đổi mã hóa .................................................................. 49

10.Các hàm chuyển đổi tập tin nhị phân và PEM .................................. 49

2.5.Các hoạt động chính trong hệ thống PKI ................................................. 49

11.Các hàm sinh số ngẫu nhiên ................................................................ 49

2.5.1. Giai đoạn khởi tạo chứng chỉ .............................................................. 50

2.5.2. Giai đoạn sau phát hành ...................................................................... 52

2.5.3. Giai đoạn hủy bỏ chứng thư................................................................ 53

2.5.4. Các hoạt động phục hồi ...................................................................... 54

3.1. Mục tiêu phát biểu bài toán ..................................................................... 55

3.2. Sơ đồ hoạt động của chương trình .......................................................... 55

3.3. Một số chức năng chính và lựa chọn môi trường công cụ ...................... 56

3.4. Ứng dụng chứng thư số sử dụng hệ thống PKI để bảo mật .................... 60

CHƢƠNG 3.XÂY DỰNG CHƢƠNG TRÌNH THỬ NGHIỆM ....................... 55

3.4.1. Ứng dụng truyền tin an toàn ............................................................... 60

3.4.2.Ứng dụng xác thực người dùng và kiểm tra tính toàn vẹn ................. 61

3.5. Đánh giá kết quả thử nghiệm ........................................................................... 61

KẾT LUẬN ............................................................................................................. 63

Tiếng Việt: ............................................................................................................. 65

Tiếng Anh: ............................................................................................................. 65

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

PHỤ LỤC. Chương trình mô phỏng hệ thống PKI .............................................. ..66

6

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

CA Certificate Authority

CRLs Certificate Revocation Lists

DES Data Encryption Standard

DNS Domain Name System

DSA Directory System Agent

DSS Directory Service Server

IEEE Institute of Electrical & Electronic Engineers

LDAP Lightweight Directory Access Protocol

MAC Message Authentication Code

MD5 Message Digest 5 Hash Algorithm

OCSP Online Certificate Status Protocol

PGP Pretty Good Privacy

PKC Public Key Certificate

PKCS Public Key Cryptography Standards

PKI Public Key Infrastructure

RA Registration Authorities

RAO Registration Authorities Operator

RFC Request For Comments

RSA Rivest Shamir Adleman

S/MIME Secure Multipurpose Internet Mail Extensión

SHA-1 Secure Hash Standard

SSL Secure Socket Layer

TTP Trusted Third Party

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

TLS Transport Layer Security

7

DANH MỤC HÌNH VẼ

Hình 1.1. Mô hình mã hóa và giải mã sử dụng mật mã ......... Error! Bookmark not

defined.

Hình 1.2. Mô hình đơn giản của hệ thống mã hóa đối xứng .................................. 12

Hình 1.3. Mô hình đơn giản của mật mã khóa bất đối xứng ................................... 15

Hình 1.4. Mô hình tạo chữ kí số .............................................................................. 17

Hình 1.5. Mô hình trao đổi thông tin sử dụng chữ ký số ........................................ 18

Hình 1.6. Ví dụ về việc áp dụng chữ ký số trong thực tế ....................................... 18

Hình 1.7.Các thành phần của chứng chỉ ................................................................. 19

Hình 1.8.Quá trình yêu cầu đăng ký chứng thư số .................................................. 19

Hình 1.9. Mô hình kiến trúc hệ thống PKI .............................................................. 21

Hình 1.10.Mô hình hệ thống CA một cấp ............................................................... 24

Hình 1.11.Mô hình hệ thống CA phân cấp ............................................................. 25

Hình 1.12.Mô hình hệ thống CA ngang cấp ........................................................... 25

Hình 2.1.Chứng thư khóa công khai đơn giản ........................................................ 34

Hình 2.2.Khuôn dạng chứng thư số phiên bản 1 và 2 dạng X.509 ......................... 36

Hình 2.3. Phần mở rộng của khuôn dạng chứng thư số trong phiên bản 3 dạng X.509 ...... 37

Hình 2.4.Thư viện Cryptosys PKI........................................................................... 39

Hình 2.5. Tóm tắt quá trình hoạt động cơ bản trong hệ thống PKI ........................ 51

Hình 2.6. Giai đoạn khởi tạo ................................................................................... 52

Hình 2.7. Giai đoạn hủy bỏ chứng chỉ .................................................................... 53

Hình 3.1. Sơ đồ hoạt động của chương trình .......................................................... 55

Hình 3.2. Giao diện chính của chương trình ........................................................... 56

Hình 3.3. Giao diện chức năng cấp phát chứng chỉ ................................................ 58

Hình 3.4. Giao diện yêu cầu tạo chứng chỉ ............................................................. 59

Hình 3.5. Giao diện danh sách chứng thư được cấp ............................................... 59

Hình 3.6. Giao diện kiểm tra chứng thư số ............................................................. 59

Hình 3.7. Chứng chỉ số do CA cấp ......................................................................... 60

Hình 3.8. Giao diện cập nhật chứng thư số hết hạn ................................................ 60

Hình 3.9. Giao diện kiểm tra chứng thư bị thu hồi ................................................. 61

Hình 3.10. Giao diện chương trình ứng dụng truyền tin bảo mật ........................... 61

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Hình 3.11. Sơ đồ hoạt động của ứng dụng xác thực, kiểm tra tính toàn vẹn ......... 61

8

MỞ ĐẦU

1. Lý do chọn đề tài

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ới 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 v.v..

Từ tính cấp thiết của các vấn đề trong thực tế, em xin mạnh dạn trình bày tổng

quát về cơ sở hạ tầng khóa công khai. Đề tài đi vào hướng “ Phát triển một hạ tầng

khóa công khai cơ bản dựa trên bộ công cụ Cryptosys”.

2. Mục đích và nhiệm vụ

* Mục đích

Đề tài này tập trung vào hướng phát triển một hạ tầng khóa công khai cơ bản

dựa trên bộ công cụ Cryptosys PKI (PKI- Public Key Infrastructure).

Các kết quả của đề tài sẽ được ứng dụng trong xây dựng thử nghiệm mô hình

triển khai hạ tầng mật mã khóa công khai PKI.

* Nhiệm vụ

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Nghiên cứu các quá trình thực hiện mã hóa và giải mã công khai

9

Tìm hiểu các thuật toán

Thực hiện đưa ra các giải pháp

Ứng dụng trong hệ mã cụ thể PKI

So sánh với kết quả thực thi của hệ mã khi chưa áp dụng

3. Phƣơng pháp nghiên cứu

Nghiên cứu dựa trên việc tìm hiểu các giải thuật xử lý dựa trên bộ công cụ

Cryptosys PKI.

Thu thập các tài liệu đã xuất bản, các bài báo trên các tạp trí khoa học và các

tài liệu trên mạng Internet có liên quan đến vấn đề đang nghiên cứu.

Tìm hiểu, vận dụng và kế thừa các thuật toán và qui trình mã đã công bố kết quả.

4. Đối tƣợng và phạm vi nghiên cứu

 Đối tƣợng nghiên cứu

Đi vào nghiên cứu kỹ thuật, công nghệ, triển khai hạ tầng mật mã khóa công

khai (PKI- Public Key Infrastructure) áp dụng an toàn một số giao dịch qua cổng

thông tin điện tử, từ đó phân tích và nêu ra các giải pháp phù hợp. Từ các kết quả

thu được, đề tài đưa ra cách xây dựng thử nghiệm mô hình triển khai hạ tầng mật

mã khóa công khai PKI.

 Phạm vi nghiên cứu

Đề tài thực hiện triển khai hạ tầng mật mã khóa công khai (PKI- Public Key

Infrastructure) áp dụng an toàn một số giao dịch qua cổng thông tin điện tử.

Đề tài giới hạn trong phạm vi nghiên cứu để đưa ra giải pháp, việc triển khai

ứng dụng thực tiễn cần có thêm các điều kiện về thời gian và quy mô.

5. Ý nghĩa khoa học của đề tài

Nghiên cứu tổng hợp cơ sở lý thuyết, phương pháp luận, các công cụ cho

việc phát triển hệ thống cơ sở hạ tầng khóa công khai phục vụ cho việc cấp phát

chứng chỉ số. Góp phần giải quyết bài toán xác thực các thực thể tham gia vào trao

đổi thông tin liên lạc qua cổng giao dịch điện tử.

Các phương pháp mật mã gồm: Phương pháp mã hoá khóa bí mật và phương

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

pháp mã hóa khóa công khai. Phương pháp mã hóa khóa công khai thì tập trung vào

10

mã khóa công khai (PKI) cơ bản dựa trên nền bộ thư viện Cryptosys PKI. Với

Phương pháp mã bí mật chỉ trình bày sơ bộ mang tính so sánh.

6. Bố cục của luận văn

Luận văn được trình bày trong chương, có phần mở đầu, phần kết luận, phần

tài liệu tham khảo. Các nội dung cơ bản của luận văn được trình bày theo cấu trúc

như sau:

Mở đầu

1. Lý do chọn đề tài

2. Mục đích và nhiệm vụ

3. Phương pháp nghiên cứu

4. Đối tượng và phạm vi nghiên cứu

5. Ý nghĩa khoa học của đề tài.

Chƣơng 1: Tổng quan về PKI

Chƣơng 2: Kiến trúc và các thuật toán trong Cryptosys PKI

Chƣơng 3: Xây dựng chƣơng trình thử nghiệm

Kết luận

Đánh giá và nêu ưu nhược điểm của đề tài. Trình bày các kết quả thu được

sau khi thực hiện đề tài.

Hướng phát triển tiếp theo của đề tài.

6. Đóng góp của luận văn

Luận văn hệ thống các cơ sở lý thuyết cơ bản về hệ mật mã khóa công

khai. Xây dựng chương trình thử nghiệm mô hình PKI cơ bản dựa trên nền bộ công

cụ lập trình Cryptosys PKI (PKI- Public Key Infrastructure).

Mô hình này hoàn toàn có thể phát triển tạo ra cơ sở hạ tầng khóa công khai

đáp ứng trong thực tế.

Giúp người sử dụng hiểu rõ hơn về khả năng ứng dụng mật mã trong các bài

toán bảo mật thông tin.

Ngoài ra giúp người sử dụng hiểu rõ hơn hệ thống PKI, từ đó có thể vận

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

hành tốt các hệ thống PKI trong thực tế.

11

Chƣơng 1. TỔNG QUAN VỀ PKI

1.1. Giới thiệu chung

Mật mã được sử dụng để bảo vệ tính bí mật của thông tin khi thông tin được

truyền trên các kênh truyền công cộng như kênh bưu chính, mạng truyền thông tin

máy tính, điện thoại, mạng Internet,…

Mật mã đã được con người sử dụng từ lâu đời[1]. 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ụ một văn bản được gửi từ người A đến người nhận B mà không muốn

bất kì một ai khác B đọc được văn bản đó. A mã hóa văn bản đó thành bản mã

tương ứng thay vì gửi văn bản thì A chỉ gửi bản mã cho B, B nhận được bản mã và

giải mã lại văn bản để 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ể

“ đánh cắp” được, nhưng vì đó là bản mã nên không thể đọc hiểu được.

Hình 1.1. Mô hình mã hóa và giải mã sử dụng mật mã.

A có thể tạo ra bản mã và B có thể giải mã thành văn bản rõ để hiểu được là

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

do hai người đã có một thoả thuận về một chìa khoá chung, chỉ với khoá chung này

12

thì A mới tạo được bản mã từ bản rõ và B mới khôi phục được bản rõ từ bản mã.

Khoá chung đó được gọi là khoá mã.

Để thực hiện được một phép mã, ta còn cần có một thuật toán biến bản rõ

cùng với khoá mã thành bản mã và một thuật toán ngược lại biến bản mã cùng với

khoá 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ã. 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á.

1.2. Mật mã khóa đối xứng và mật mã khóa bất đối xứng

 Mật mã khóa đối xứng

Mật mã khóa đối xứng còn có tên gọi khác như Private Key Cryptography –

mã hóa hóa bí mật. Mã hóa đối xứng sẽ sử dụng một khóa chung cho cả hai quá

trình mã hóa và giải mã.[1]

Trước khi truyền dữ liệu hai bên gửi và nhận phải thỏa thuận về khóa dùng

chung cho quá trình mã hóa và giải mã. Khóa sẽ được phân phối bằng cách an toàn

nào đó như đĩa mềm, dùng bên thứ 3 tin cậy, hoặc bằng phương pháp mã hóa công

khai,… Hai bên phải giữ bí mật về khóa dùng chung này. Sau đó, bên gửi sẽ mã hóa

bản rõ bằng cách sử dụng khóa bí mật đã được thỏa thuận giữa 2 bên và gửi thông

điệp được mã hóa sang cho bên nhận. Bên nhận sau khi nhận được thông điệp này

sẽ dùng khóa bí mật để giải mã và sẽ nhận được bản rõ.

Hình 1.2. Mô hình đơn giản của hệ thống mã hóa đối xứng

Mã hóa đối xứng có thể phân làm 2 loại sau:

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

 Block Cipher ( mã khối): Tác động trên bản rõ theo từng khối bits, từng nhóm

13

bits này còn được gọi là khối (Block). Từng khối dữ liệu trong văn bản ban đầu

được thay thế bằng một khối dữ liệu khác có cùng độ dài. Ví dụ như thuật toán DES

với khối dữ liệu có độ dài là 64 bits, 3DES (Triple DES), AES với khối dữ liệu có

độ dài là 128 bits và khóa có độ dài là 128, 192 hoặc 256 bits

 Stream Cipher (mã dòng): Tác động lên bản rõ theo từng bits một.

Dữ liệu của văn bản được mã hóa từng bits một. Các thuật toán mã dòng này

có tốc độ nhanh hơn các thuật toán mã khối và nó thường được áp dụng khi lượng

dữ liệu cần mã hóa chưa biết trước. Phương pháp này tạo ra lỗi ít hơn so với

phương pháp mã khối và nếu có xảy ra lỗi cũng chỉ ảnh hưởng trên 1 bit. Các thuật

toán được dùng như là RC5, SEAL,…

Thuật toán mã hóa đối xứng cũng có thể được dùng để xác thực tính toàn vẹn

và nguồn gốc dữ liệu. A sử dụng khóa của mình để sinh ra ciphertext (bản mã) cho

toàn bộ plaintext (bản rõ). Sau đó gửi bản plaintext và 1 phần của ciphertext cho B.

Một phần của ciphertext đó được gọi là đoạn mã xác thực thông điệp (MAC). B sử

dụng bản sao khóa của mình để sinh ra ciphertext, lấy một phần tương tự của

ciphertext và so sánh nó với MAC nhận được. Nếu chúng giống nhau thì B biết

được rằng A đã gửi thông điệp đó cho anh. Tuy nhiên, phương pháp này không

cung cấp khả năng chống chối bỏ. A có thể phủ nhận việc gửi thông điệp đó, bởi vì

chính B cũng có thể sinh ra thông điệp như vậy.

A và B cần chia sẻ một khóa đối xứng trước khi A mã hóa hay tạo ra một

MAC cho một thông điệp. Cần thành lập một nơi để chia sẻ khóa gọi là hệ thống

quản lý khóa (key management), nhưng đây vẫn là một vấn đề rất khó. Hệ thống

quản lý khóa có thể được thực hiện với mật mã khóa đối xứng, nhưng đó là một vấn

đề nan giải. Để sử dụng mật mã đối xứng, A và B cần chia sẻ một cách bí mật.

Nơi đầu tiên chia sẻ khóa phải được thành lập thông qua kỹ thuật “out-of-

band” (một kênh giao tiếp riêng). Nó có thể chấp nhận được nếu A chỉ liên lạc với

B. Nếu A liên lạc với một cộng đồng lớn hơn, thì việc thành lập từng mối quan hệ

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

trở nên phức tạp và khó để đạt được các dịch vụ bảo mật.

14

Tuy nhiên, vấn đề này có thể trở thành dễ sử dụng thông qua sự giới thiệu

của một bên thứ ba tin cậy (Trusted Third Party). Nếu A và người mà A muốn liên

lạc đều tin vào TTP, họ có thể lấy một khóa mới cho ý định đó từ TTP. Mỗi bên

phải thành lập một out-of-band bí mật với TTP như một điểm khởi đầu. Tuy nhiên,

A sẽ không cần lặp lại quá trình đó cho mỗi người mới mà A muốn liên lạc.

Ưu, nhược điểm của mật mã khóa đối xứng:

+ Ưu điểm:

 Có thể được thiết kế để đạt tốc độ cao. Các thiết bị phần cứng hỗ trợ có thể đạt

tốc độ hàng trăm megabytes mỗi giây trong khi việc thực thi bằng phần mềm chỉ đạt

được khoảng vài megabytes mỗi giây.

 Khóa bí mật dùng cho việc mã hóa và giải mã tương đối ngắn.

 Được xem như thành phần cơ bản có thể triển khai để xây dựng các kỹ thuật mã hóa

khác bao gồm khởi tạo các số ngẫu nhiên, các hàm băm, các kỹ thuật tính toán.

 Có thể được kết hợp để tạo ra các thuật toán mã hóa mạnh hơn.

+ Nhược điểm:

 Trong quá trình truyền thông giữa hai người, khóa phải được giữ bí mật cho cả hai phía.

 Trong một hệ thống mạng lớn, số lượng khóa cần được quản lý

rất nhiều. Ví dụ để đảm bảo giao thông liên lạc an toàn cho tất cả mọi người trong

một nhóm gồm n người, tổng số lượng khóa cần phải có là . Do vậy việc

quản lý khóa một cách hiệu quả đòi hỏi sử dụng một bộ phận tin cậy thứ ba (TTP

:Trusted Third Party).

 Khóa bí mật cần được thay đổi thường xuyên.

 Mật mã khóa bất đối xứng

Mật mã khóa bất đối xứng hay còn được gọi là mật mã công khai (Public

Key Cryptography). Trong thuật toán này sẽ có hai khóa được sử dụng, một được

dùng để mã hóa và một được dùng để giải mã. Khóa dùng để mã hóa được gọi là

khóa công khai (Public key), còn khóa dùng để giải mã được gọi là khóa bí mật

(private key). Một người dùng bất kỳ có thể dùng khóa công khai để mã hóa dữ liệu

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

nhưng chỉ có người có khóa giải mã tương ứng mới có thể đọc được dữ liệu đó mà thôi.

15

Hình 1.3. Mô hình đơn giản của mật mã khóa bất đối xứng

Mã hóa khóa công khai ra đời nhằm giải quyết vấn đề phân phối khóa của

các phương pháp mã hóa đối xứng. Quá trình này được thực hiện như sau:

 Bên gửi sẽ yêu cầu lấy khóa công khai của bên nhận đến bên nhận hoặc có thể

gửi yêu cầu này đến trung tâm phân phối khóa.

 Sau đó hai bên sẽ thống nhất thuật toán dùng để mã hóa dữ liệu, bên gửi sẽ sử

dụng khóa công khai của người nhận cùng với thuật toán đã thống nhất để mã hóa

dữ liệu gửi đi.

 Khi nhận được thông tin mã hóa bên nhận sẽ dùng khóa bí mật tương ứng để

giải mã thông điệp nhận được.

Với phương pháp mã hóa này thì khóa bí mật không phải phân phối thủ công hoặc

qua mạng, mà người dùng chỉ cần bảo vệ khóa bí mật do vậy sẽ an toàn hơn. Nhưng tốc độ

thực hiện của mã hóa bất đối xứng chậm hơn nhiều so với mã hóa đối xứng.

Một số thuật toán mã hóa bất đối xứng điển hình là, Elgamal, Diffie –

hellman, RSA ...

Ưu, nhược điểm của mật mã khóa bất đối xứng:

 Ưu điểm:

 Chỉ có khóa riêng thì cần được giữ bí mật (tuy nhiên việc xác nhận của các

khóa công khai cần được đảm bảo).

 Việc quản trị các khóa trên mạng đòi hỏi sự tồn tại duy nhất một thành phần

tin cậy TTP.

 Cặp khóa riêng và công khai có thể được sử dụng trong thời gian dài.

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

 Nhiều mô hình khóa công khai được phát triển hình thành nên các kỹ thuật

16

chữ ký số hiệu quả. Khóa được sử dụng cho hàm kiểu công khai thì nhỏ hơn rất

nhiều so với dùng khóa đối xứng

 Trong một mạng lớn, số lượng các khóa cần thiết được quan tâm ít hơn so với

việc dùng khóa đối xứng.

 Nhược điểm:

 Tốc độ cho các phương thức mã hóa công khai thì chậm hơn rất nhiều so với

các mô hình khóa đối xứng.

 Kích thước khóa lớn hơn rất nhiều so với cơ chế mã hóa khóa đối xứng.

 Không có mô hình khóa công khai nào được chứng minh là an toàn. Phần lớn

các mô hình mã hóa hiệu quả ngày nay có sự an toàn dựa trên các giả thuyết của

một tập nhỏ của các vấn đề lý thuyết số học.

 Hệ thống mã hóa công khai không có bề dày lâu đời như hệ thống mã hóa

khóa đối xứng, nó chỉ được tìm ra vào giữa khoảng những năm 1970.

1.3. Chữ kí số

1.3.1. Khái niệm

Theo nghị định 26/2007/NĐ-CP “chữ kí số” là một dạng chữ kí điện tử được

tạo ra bằng sự biến đổi một thông điệp dữ liệu sử dụng hệ thống mật mã không đối

xứng theo đó người có được thông điệp dữ liệu ban đầu và khóa công khai của

người ký có thể xác định được chính xác.[2]

Việc biến đổi nêu trên được tạo ra bằng đúng khóa bí mật tương ứng với

khóa công khai trong cùng một cặp khóa;

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Sự toàn vẹn nội dung của thông điệp dữ liệu kể từ khi thực hiện việc biến đổi nêu trên.

17

1.3.2. Tạo chữ kí số

Mật mã khóa 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ã hóa thông điệp hay tài liệu với khóa riêng của mình thì

bất kì ai cũng có thể giải mã thông điệp với khóa công khai 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ỉ có A

mới có khóa riêng của mình. Quá trình mã hóa thông điệp với khóa riêng của người

gửi gọi là quá trình “ký số”.[8]

Hình 1.4. Mô hình tạo chữ kí số Chữ kí số được sử dụng để xác thực người gửi và kiểm tra tính toàn vẹn của dữ liệu.

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Hình 1.5. Mô hình trao đổi thông tin sử dụng chữ ký số

18

Hình 1.6. Ví dụ về việc áp dụng chữ ký số trong thực tế

Ví dụ người A gửi thông điệp cho người B. 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 khóa công khai của người gửi. Nếu giải

mã được thì xác định đúng là do A gửi. Còn giải mã không được thì không phải do

A 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.

1.4. Hạ tầng khóa công khai PKI

1.4.1. Định nghĩa PKI

Có nhiều định nghĩa khác nhau về PKI (Public Key Infratructure): PKI là cơ sở

của một hạ tầng an ninh rộng khắp, các dịch vụ cơ bản của nó được cài đặt và được thực

hiện bằng cách sử dụng các khái niệm và kỹ thuật của mật mã khóa công khai.[4]

PKI là một tập hợp các phần cứng, phần mềm, con người, các 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 các chứng thư

khóa công khai dựa trên mật mã khóa công khai.[2]

Chứng thư số (Certificate): Là đại lượng điện tử đại diện cho người dùng,

máy tính, dịch vụ hoặc thiết bị trong mạng. Nó liên kết định danh của chủ sở hữu nó

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

với một cặp khóa và thường có những thông tin cơ bản sau:

19

Hình 1.7. Các thành phần của chứng chỉ

 Version: phiên bản

 Serial Number: Số Serial của chứng chỉ

 CA Signature Alg: Thuật toán ký số của CA

 Issuer Name: Tên người phát hành

 Validity Period: Thời gian hết hạn

 Subject Name: Tên chủ thể

 Subject Public Key: Khóa công khai của chủ thể 1.4.2. Các thành phần chính của hệ thống PKI

Certificate Authority (CA) là một tổ chức được tin tưởng trong việc cấp phát

chứng thư số và công nhận các nội dung thông tin lưu giữ trong chứng thư số. CA

được coi là trái tim của hệ thống PKI, là tổ chức quản lý của PKI.

Registration Authority (RA) là cơ quan chịu trách nhiệm xác nhận về tính

trung thực của yêu cầu sử dụng chứng thư số. RA không có trách nhiệm sinh và ký

chứng thư. RA sau khi nhận yêu cầu sẽ chuyển sang CA để thực hiện.Kết quả của

CA sẽ được chuyển tới yêu cầu thông qua RA.

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Hình 1.8. Quá trình yêu cầu đăng ký chứng thư số

20

RA được thiết kế để chia sẻ bớt công việc mà CA thường phải đảm trách và

không thể thực hiện bất kỳ một dịch vụ nào mà tổ chức CA của nó không thực hiện

được. Quan trọng nhất là RA được ủy quyền và có quyền thực hiện các công việc

mà CA cho phép vì lợi ích của CA. Một RA chỉ nên phục vụ cho một CA, trong khi

đó một CA có thể được hỗ trợ bởi nhiều RA. Thông qua việc chia sẻ bớt nhiệm vụ

cho các RA, một CA sẽ có thể đáp ứng nhanh các yêu cầu của thực thể cuối. Mục

đích chính của một RA là xác minh danh tính của thực thể cuối và quyết định xem

thực thể này có được cấp chứng nhận khóa công khai hay không. RA phải tuân theo

các chính sách và các thủ tục được định nghĩa trong CP và CPS.

Chức năng đặc trưng của RA là thẩm tra yêu cầu cấp chứng nhận của thực

thể cuối bằng cách kiểm tra tên, ngày hiệu lực, các ràng buộc thích hợp, khóa công

khai, sự gia hạn chứng nhận và các thông tin liên quan. RA còn có thể có trách

nhiệm về việc thực hiện các kiểm tra chi tiết thực thể cuối đơn giản như việc chắc

chắn rằng tên của thực thể cuối là duy nhất trong phạm vi của PKI

Local Registration Authority (LRA) là đại diện của RA tại địa phương, thực

hiện các chức năng của RA tại khu vực quản lý của mình. Các chức năng của một

LRA đó là :

 Xác nhận các thông tin về người đăng ký

 Chấp thuận các yêu cầu đăng ký sử dụng

 Gửi yêu cầu cấp mới tới CA

 Gửi yêu cầu gia hạn tới CA

 Gửi yêu cầu hủy bỏ chứng thư tới CA

 Hỗ trợ tại chỗ cho người sử dụng

Chứng thư số là phần quan trọng để đảm bảo an toàn cho khóa công khai

tránh được các lỗ hổng an toàn như giả mạo hay sửa đổi.

Kho chứng thư: Kho lưu trữ chứng thư (CR) là nơi để chứa các thông tin và

trạng thái của các chứng thư số được phát hành bởi CA và cũng có thể chứa cả

danh sách thu hồi chứng thư số (CRL). Kho chứa còn lưu trữ các chứng thực chéo

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

của CA này được phát hành bởi CA khác, chứng nhận chéo của CA khác phát hành

21

bởi CA này. Kho chứa còn có nhiệm vụ chứa những biểu mẫu điện tử và các công

cụ cho phép tải về, công bố CP và CPS, cập nhật thông tin, hỏi và đáp (Q & A), …

Kho lưu trữ chứng thư số phải là một hệ thống tín nhiệm và an toàn.

Dịch vụ thư mục để tra cứu chứng thư: Là một dạng cấu trúc cây thư mục

dùng để lưu trữ các chứng thư số của toàn bộ người dùng trong hệ thống phục vụ tra

cứu, tìm kiếm chứng thư.

Danh sách hủy bỏ (Certificate Revocation List – CRL) danh sách hủy bỏ

CRL phục vụ việc kiểm tra tình trạng các chứng thư số bị hủy bỏ.

Thực thể cuối trong PKI có thể là con người, thiết bị, hay thậm chí là một

chương trình phần mềm nhưng thường là người sử dụng hệ thống. Thực thể cuối sẽ

thực hiện chức năng những mật mã như mã hóa, giải mã và kí số.

Dưới đây là một mô hình kiến trúc hệ thống PKI :

Hình 1.9. Mô hình kiến trúc hệ thống PKI

Trung tâm chứng thực CA đứng ra chịu trách nhiệm và đảm bảo sự tin cậy vào khóa

công khai cũng như danh tính của chủ sở hữu. Chứng thư số được ký bởi một trung tâm

chứng thực CA bằng khóa bí mật của CA. Chứng thư số do CA phát hành là để xác thực

danh tính của những người sử dụng và khóa công khai đi kèm, CA có trách nhiệm phát hành

quản lý, cung cấp các dịch vụ cần thiết trên những chứng thư này.

Các chức năng mở rộng của hệ thống PKI:

 Hệ thống kiểm tra tình trạng chứng thư online (OCSP – Online Certificat

Status Protocol).

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

 Hệ thống chứng thực nhãn thời gian (Time Stamp Authority)

22

 Toàn vẹn

- Đảm bảo dữ liệu không bị thay đổi, nếu có thay đổi thì bị phát hiện

- Để đảm bảo tính toàn vẹn, một hệ thống phải có khả năng phát hiện những thay

đổi dữ liệu trái phép.

- Mục đích giúp cho người nhận dữ liệu xác minh được rằng dữ liệu không bị thay đổi

- Các kĩ thuật mật mã được sử dụng

- Thường có sự thỏa thuận về các thuật toán và khóa tích hợp giữa hai bên

- Dịch vụ PKI về toàn vẹn dữ liệu thỏa mãn lợi ích cho cả hai bên:

+ Qua đó thực hiện được thỏa thuận thuật toán và khóa

+ Hoàn toàn trong suốt với người dùng

 Bảo mật

- Đảm bảo tính bí mật của dữ liệu: Không ai đọc được nội dung ngoại trừ

những người dùng định trước.

- Các dữ liệu nhạy cảm đều cần được bảo mật

- Tính năng bảo mật thường được yêu cầu khi:

+ Dữ liệu được lưu trên những phương tiện dễ bị đọc bởi người dùng không

được quyền (đĩa mềm, USB,…)

+ Dữ liệu được lưu trên thiết bị dễ bị rơi vào tay người khác

+ Được truyền trên mạng không bảo vệ được

- Để đảm bảo tính bí mật, các thuật toán thích hợp và khóa sẽ được thỏa thuận

- Dịch vụ PKI về tính bảo mật giúp cho quá trình này trở nên trong suốt với

các thực thể có liên quan

1.4.3.Các dịch vụ của PKI

- Đảm bảo cho người dùng rằng một thực thể nào đó đúng là đối tượng mà

họ đang cần kiểm định

- Có hai ngữ cảnh ứng dụng chính đó là:

 Xác minh thực thể :

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

 Hoạt động này tách khỏi các hoạt động khác của thực thể

23

 Xác minh thực thể sinh ra một kết quả, sử dụng kết quả này cho các hoạt

động khác.

 Xác minh nguồn gốc dữ liệu:

 Xác minh dữ liệu được gắn kết với một thực thể nào đó

 Hỗ trợ chống chối bỏ nguồn gốc dữ liệu

 Xác minh thực thể bao gồm: Cục bộ và ở xa, nó có thể là xác minh một hay

nhiều nhân tố.

 Xác minh thực thể trong môi trường cục bộ- tức là, xác minh tới thiết bị

vật lý của cá nhân thực thể mà không truyền tới các thiết bị khác trong mạng.

 Xác thực thực thể tới một thiết bị, thực thể hay môi trường ở xa.

1.4.4.Kiến trúc của PKI hiện hành

Có một CA sẽ đem lại lợi ích là: Bất kỳ người sử dụng nào biết được khóa

công khai của CA có thể lấy được khóa công khai của những người sử dụng khác đã

được CA xác thực. Như vậy để lấy được khóa công khai của những người sử dụng

một cách tin cậy thì cần phải biết được khóa công khai của CA. Vấn đề nảy sinh là

làm cách nào để cung cấp cho những người sử dụng khóa công khai của CA theo

một phương thức an toàn? Đề giải quyết vấn đề này trung tâm chứng thực CA đã

đưa ra các mô hình hệ thống sau:

 Hệ thống CA một cấp

Khóa công khai của CA được truyền an toàn tới những thực thể tham gia

trong hệ thống PKI. Điều này được thực hiện bằng cách sử dụng một chứng thư

được ký bởi CA đó, trường hợp này gọi là chứng thư tự ký (self-signed certificate).

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Hình 1.10. Mô hình hệ thống CA một cấp

24

 Hệ thống CA phân cấp

Trong hệ thống CA nhiều cấp, CA gốc (root CA) xác thực những CA cấp

dưới và có mỗi CA cấp dưới có thể phát hành các chứng thư trên các CA trực thuộc.

Hình 1.11. Mô hình hệ thống CA phân cấp

Ưu điểm:

- Có tính mềm dẻo:

 Hệ thống có thể tăng về số lượng mà vẫn ổn định

 Để thêm 1 CA vào hệ PKI, CA gốc chỉ việc thiết lập một quan hệ tin tưởng

với CA đó hoặc một trong các CA không phải là CA gốc hiện thời trong hệ thống

cấp phát cho CA mới.

- Dễ triển khai:

 Vì là một chiều nên PKI phân cấp khá dễ dàng trong việc triển khai: Đường

dẫn cho thực thể CA gốc hoặc CA cấp phát có thể được xác định nhanh và dễ dàng

 Đường dẫn cấp phát chứng thư ngắn

 Đường dẫn dài nhất là chứng chỉ CA cho từng CA cộng với chứng chỉ cho từng

thực thể cuối. Cách thức tìm ra một nhánh xác thực là theo một hướng nhất định, không có

hiện tượng vòng lặp.

Nhược điểm :

- Có 1 điểm tin tưởng đơn là CA gốc điều khiển toàn bộ kiến trúc PKI - Phân cấp. Do đó, nếu CA gốc mà bị phá vỡ thì cả hệ thống PKI phân cấp đó sẽ

không còn giá trị tin tưởng

- Trong một phạm vi rộng, một CA duy nhất không thể đảm nhận được tất cả quá

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

trình xác thực

25

- Các quan hệ kinh doanh thương mại không phải bao giờ cũng có dạng phân cấp  Hệ thống CA ngang cấp hay còn gọi là mô hình chứng thực chéo

Thay vì cấu trúc CA phân cấp, hai CA có thể xác thực lẫn nhau. Trong trường hợp

này bất kì ai có khóa công khai của một trong hai CA này có thể dựa vào đó mà xác thực

chứng thư số được phát hành bởi CA còn lại. Trường hợp này được gọi là hệ thống CA

ngang cấp.

Hình 1.12. Mô hình hệ thống CA ngang cấp

1.5. Kết chƣơng

Tóm lại, trong chương này, em trình bày một số lý thuyết tổng quan nhất về

một hệ thống cơ sở hạ tầng khoá công khai – PKI với 2 hệ mã khóa đối xứng và hệ

mã khóa bất đối xứng. Đồng thời cũng nêu được định nghĩa PKI và các thành phần

chính của PKI để có nền tảng xây dựng một hệ thống PKI cụ thể. Qua đó giúp

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

người sử dụng hiểu rõ hơn về việc vận hành hệ thống PKI trong thực tế.

26

CHƢƠNG 2. TÌM HIỂU KIẾN TRÚC VÀ THUẬT TOÁN TRONG

CRYPTOSYS PKI

2.1. Giới thiệu Cryptosys PKI

CryptoSys PKI [7] là một bộ thư viện dạng giao diện lập trình ứng dụng cho

hệ thống Windows cho phép người dùng tạo ra và đọc các thông điệp an toàn mật

mã được mã hóa hoặc được ký sử dụng mật mã khóa công khai RSA. Nó cung cấp độ mật mạnh sử dụng công nghệ không cấp bằng sáng chế.

PKI được định nghĩa trong PKIX-MAP là sự thiết lậ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à hủy bỏ chứng chỉ khóa công khai dựa trên mật mã khóa công khai.

Bộ công cụ CryptoSysPKI cung cấp cho người lập trình và người phát triển

với hầu hết các thuật toán hữu ích bạn cần để tạo ra các phần mềm cho một hệ

thống PKI thực sự. CryptoSys PKI là một công cụ sắc nét. Nó giúp bạn quản lý

phần cứng, con người, chính sách, các thủ tục và các phần mềm bảo mật tổng thể

mà bạn yêu cầu.

Để bắt đầu, các bạn có thể sử dụng các ngôn ngữ lập trình:

 Classic Visual Basic và VBA

 C và C++

 .NET như C# và VB.NET

2.1.1. Các hàm được sửa đổi trong các phiên bản

Ở đề tài này em chỉ đề cập đến các hàm sửa đổi trong phiên bản 3.0 trở lên.

a) Các hàm sửa đổi trong phiên bản 3.0  Giới thiệu máy sinh số ngẫu nhiên mới và an toàn hơn (RNG) dựa trên phương thức NIST SP800-90 [SP80090] và Ferguson và Schneier của "Fortuna" từ Practical

Crytography [FERG03]

 Kết hợp thêm bảo mật bằng cách mã hóa chuỗi khóa RSA "nội bộ" để ngăn chặn các vi phạm an toàn bởi việc tiết lộ những chi tiết phụ. Thêm hàm RSA_KeyHashCode để cho phép so sánh các chuỗi khóa nội bộ.

 Thêm thuật toán message digest SHA-384 và SHA-512 thành hàm HASH (băm)

b) Các hàm đƣợc sửa đổi trong phiên bản 3.2

 Thêm các hàm mật mã khối chung mới với AES và Triple DES. SHA-224 để chọn lựa hàm băm cho message digest và thêm hàHASH_HexFromHex và

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

HMAC_HexFromHex. "shaXXXWithRSAEncryption"với SHA

27

 Xác minh đối tượng dữ liệu được ký CMS sử dụng thuật toán băm SHA-

224/256/384/512

 Thêm các tính năng để tạo và đọc đối tượng dữ liệu được đóng phong bì CMS sử dụng thuật toán mã hóa nội dung AES-128/192/256

 Thêm các tính năng để tạo và đọc các đối tượng dữ liệu được đóng phòng bì CMS sử dụng thuật toán mã hóa khóa (RSA-KEM) (“RSA đơn”)

 Thêm hàm đóng gói khóa mật mã khối CIPHER_KeyWrap và CIPHER_KeyUnwrap sử dụng AES-wrap và 3DES wrap.

 Thêm các tùy chọn để lưu và đọc khóa bí mật được mã hóa với độ an toàn được cải thiện sử dụng AES-128/192/256 và SHA-224/256/384/512 khi sử dụng hàm

RSA_SaveEncPrivateKey và RSA_ReadEncPrivateKey.

 Thêm tính năng để cho phép các dữ liệu chứng chỉ X.509 và dữ liệu khóa công khai và khóa bí mật RSA thành các hàm các X.509 và RSA bằng cách sử dụng một

chuỗi PEM-mã hóa thay vì một tập tin.

c) Một số hàm và chức năng đƣợc sửa đổi trong phiên bản 3.3  Biên dịch sử dụng VS2008 cho cả Win32 và X64

 Thêm các hàm PEM_FileFromBinFile và PEM_FileToBinFile để giúp bạn có thể chuyển đổi giữa định dạng file nhị phân ASN.1 DER/BER và định dạng PEM.

 Kết hợp thuật toán tính toán BigDigits nhanh làm cho việc tính toán các modul mũ RSA được nhanh hơn

 Cải thiện việc thực thi hàm WIPE_File – nhanh hơn gấp 3 lần cho các file lớn.

 Cải thiện hàm RSA_FromXMLString để cho phép hạn chế việc nhập khóa bí mật RSA từ dữ liệu XML, chỉ bao gồm các trường , , .

Kết quả là chuỗi khóa “internal” có thể được sử dụng để ký dữ liệu gốc, nhưng

không thể bị lưu trữ trong file khóa bí mật. Điều này hữu ích cho việc tái sản xuất các vector kiểm thử một cách chắc chắn.

d) Một số hàm và chức năng đƣợc sửa đổi trong phiên bản 3.4  Tất cả các thư viện DLL có thể thực thi giờ đây được ký số với mã xác nhận chứng chỉ.

 Thêm chức năng để tìm platform (nền) của DLL, như platform của Win32 hoặc X64, phương thức General.lsWin64 và phương thức General.Plastform.

 Gỡ bỏ được các chức năng RSA-KEM

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

 Cập nhật hướng dẫn với phương thức List of .NET và Cross-reference giữa Hàm và Phương thức .NET

28

e) Phiên bản 3.5

 Thêm các X509_makeCRL chức năng để thực hiện một danh sách thu hồi

giấy chứng nhận X.509 cơ bản.

 Thêm các X509_CheckCertInCRL chức năng để kiểm tra xem một chứng chỉ X.509 xác

định đã được thu hồi trong một danh sách thu hồi giấy chứng nhận X.509 (CRL)

 Thêm các OCSP_MakeRequest chức năng để tạo ra một chứng chỉ, Online

Certification Status Protocol (OCSP) yêu cầu trực tuyến như là một chuỗi base64

 TThêm các X509_ValidatePath chức năng để xác nhận một đường dẫn chứng

chỉ, hoặc là ở dạng một danh sách các tên tập tin chứng nhận X.509 hoặc trong một

PKCS7 "certs chỉ" tập tin chuỗi chứng chỉ (.p7b hoặc .p7c).

 Cập nhật các X509_MakeCert chức năng cho phép tạo ra các chứng chỉ X.509

mới sử dụng PKCS # 10 Certificate Signing Request (CSR).

 Cập nhật các X509_VerifyCert chức năng cũng để xác minh X.509 Certificate

Revocation List (CRL) và PKCS # 10 Certificate Signing Request (CSR) tài liệu.

 Thêm tùy chọn hơn cho X509_QueryCert chức năng.

f) Phiên bản 3.10 Sau khi trải qua rất nhiều lần sửa đổi để hoàn thiện thì hiện nay phiên bản mới

nhất vào 27 tháng 3 năm 2015 đó là 3.10 phiên bản này có thêm các chức năng sau:

 Thêm chức năng RSA_ReadAnyPrivateKey và RSA_ReadAnyPublickey

để đọc khóa công khai và khóa bí mật dưới bất kì định dạng nào được hỗ trợ trong

chuỗi khóa nội bộ.

 Thêm chức năng chữ ký mới SIG_SignData và SIG_SignFile để tạo chữ ký

RSA trong một bước. Đầu ra là một chuỗi các base64 mã hóa thích hợp cho một

nút trong tài liệu XML-DSIG.

 Thêm chức năng xác minh chữ ký mới SIG_VerifyData và SIG_VerifyFile để

xác minh chữ ký RSA ở dạng base64 mã hóa

 Thêm chức năng mới RSA_KeyValue để trích xuất một giá trị khóa RSA

base64 mã hóa từ một chuỗi chìa khóa nội bộ. Đầu ra là một chuỗi base64 mã hóa

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

thích hợp cho một nút trong một tài liệu XML-DSIG.

29

 Thêm tính năng để thiết lập các lĩnh vực phụ như dNSName, URI và

PAddresscho tên chủ đề thay thế trong giấy chứng nhận X.509 mới và ký kết các

yêu cầu chứng thực bằng cách sử dụng X509_MakeCert , X509_MakeCertSelf và

X509_CertRequest chức năng. Xem X.509 Extensions Parameter.

 Loại bỏ các phương pháp sau đây NET với tham số boolean inputIsBase64 lỗi thời:

Cms.QueryEnvData Method (String, String, Boolean) Cms.QuerySigData Method (String, String, Boolean) Cms.GetSigDataDigest Method (String, String, Boolean) Cms.ReadSigDataToFile Method (String, String, Boolean) Cms.ReadSigDataToString Method (String, Boolean) Cms.VerifySigData Method (String, String, String, Boolean)      

Code trong C# như sau: // Mã hóa trong chế độ CBC sử dụng chuỗi cơ số 16

2.1.2. Quy ước trong tài liệu này

keyhex = "737C791F25EAD0E04629254352F7DC6291E5CB26917ADA32"; ivhex = "B36B6BFB6231084E"; plain = "5468697320736F6D652073616D706520636F6E74656E742E0808080808080808" ; cipher = "d76fd1178fbd02f84231f5c1d2a2f74a4159482964f675248254223daf9af8e4"; s = Tdea.Encrypt(plain, keyhex, Mode.CBC, ivhex); Console.WriteLine("CT={0}",s); Console.WriteLine("OK={0}",cipher); Debug.Assert(String.Compare(s, cipher, true)==0, "Tdea.Encrypt{Hex,CBC} failed"); Đầu ra từ các ví dụ trên là Result-OK Tất cả các chức năng được gọi trực tiếp trong bộ công cụ CryptoSys PKI bắt

đầu với 3 hoặc 4 chữ cái viết hoa, tiếp theo là một gạch dưới “_’’ ví dụ :

nRet = RSA_ReadPublicKey(rsaReadPublicKey, nKeyLen, strKeyFile, 0) 2.2. Các thuật toán hỗ trợ trong Cryptosys PKI

2.2.1. Thuật toán ký số và mã hóa công khai

 Mã hóa khóa công khai RSA (“rsaEncryption”)

Thuật toán ký số từ PKCS#1, cụ thể là:

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

  "sha1WithRSAEncryption" (mặc định)

30

 "md5WithRSAEncryption"  "md2WithRSAEncryption"  "sha224WithRSAEncryption"  "sha256WithRSAEncryption"  "sha384WithRSAEncryption"  "sha512WithRSAEncryption"

 Các thuật toán chữ ký ANSI X9.57 "dsaWithSha1" và khoá công khai DSA "DSAPublicKey" để xác nhận chứng chỉ X.509 và chỉ những đối tượng dữ liệu

được ký CMS (tuy nhiên các tham số DSS được thừa kế không được hỗ trợ).

2.2.2. Thuật toán mật mã khối đối xứng cho mã hóa nội dung

"des-EDE3-CBC" (mặc định)

"aes128-CBC"

"aes192-CBC"

"aes256-CBC

2.2.3. Thuật toán mã hóa khối cho việc đóng gói khóa

"aes128-Wrap" (default) 

"aes192-Wrap" 

"aes256-Wrap" 

"cms3DESWrap" 

2.2.4. Thuật toán băm Message digest

"sha1" or "sha-1" (mặc định) 

"md5" 

"md2" 

"sha224" 

"sha256" 

"sha384" 

"sha512 Việc giữ MD2 ở đây để có thể tái sản xuất các mẫu từ các giấy tờ từ phòng thí nghiệm RSA 1993 [PKCS-EX] và bởi vì chúng ta vẫn còn tìm thấy chứng chỉ X.509 cũ

sử dụng nó. Bạn được đề nghị sử dụng ít nhất SHA-1 trong các ứng dụng mới. 2.2.5. Thuật toán băm khóa HMAC

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Để tạo ra mã xác thực thông điệp HMAC với các hàm HMAC

31

"hmacWithSHA1" 

"hmacWithSHA224" 

"hmacWithSHA256" 

"hmacWithSHA384" 

"hmacWithSHA512" 

"hmacWithMD5" 

2.2.6. Các thuật toán mã hóa dựa trên mật khẩu

Các thuật toán này từ PKCS # 5 và PKCS # 12 có thể được sử dụng để tạo ra

các tệp tin khóa bí mật được mã hóa PKCS#8 bởi các hàm

RSA_SaveEncPrivateKey và RSA_MakeKeys:

"pbeWithSHAAnd3-KeyTripleDES-CBC" (default) 

"pbeWithMD5AndDES-CBC" 

"pbeWithMD2AndDES-CBC" 

"pbeWithSHA1AndDES-CBC" 

"pkcs5PBES2" với: 

 "des-EDE3-CBC"  "aes128-CBC"  "aes192-CBC"  "aes256-CBC"

Thêm nữa, các thuật toán này có thể được đọc bởi hàm

RSA_ReadEncPrivateKey:

"pkcs5PBES2" with "desCBC" 

"pkcs5PBES2" with "rc2CBC" 

"pbeWithSHAAnd128BitRC2-CBC" 

"pbeWithSHAAnd40BitRC2-CBC" 

"pbeWithMD5AndRC2-CBC" 

"pbeWithMD2AndRC2-CBC" 

"pbeWithSHA1AndRC2-CBC" 

2.2.7. Định dạng khóa RSA

Các định dạng được hỗ trợ cho các khóa RSA như PKCS#1 và PKCS#8

 "RSAPublicKey (mặc định cho khóa công khai)

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

 "PrivateKeyInfo" với "rsaEncryption"

32

 "EncryptedPrivateKeyInfo" với "rsaEncryption" (mặc định cho các khóa bí mật)

 Định dạng XML cho XKMS 2.0 cũng được hỗ trợ.

2.2.8. Các kiểu nội dung CMS

 Kiểu nội dung EnvelopedData (CMS phiên bản 0) với EncryptedContentInfo

 Kiểu nội dung SignedData (CMS phiên bản 1) với các thuộc tính ký tùy chọn như:

 Các đối tượng CMS của kiểu SignedData thích hợp cho việc sử

dụng trong các thông điệp S/MIME “application/ pkcs7-mime”

 Các đối tượng dữ liệu được ký CMS “chữ ký được tách rời”

thích hợp cho việc sử dụng trong các thông điệp S/MIME "multipart/signed".

 Các thông điệp “cert-only” của SignedData giảm dần, chuỗi

chứng chỉ a.k.a. PKCS#7

Chỉ các đối tượng CMS với một kiểu nội dung bên trong id-data được hỗ trợ.

RecipientIdentifier phải trở thành issuerAndSerialNumber.

2.2.9. Chứng chỉ X509.

 Bạn có thể tạo chứng chỉ CA tự ký và sử dụng chứng chỉ này để tạo các

chuỗi bên trong các chứng chỉ được ký.

 Một file yêu cầu ký chứng chỉ (CSR) có thể được tạo để gửi tới CA mà bạn lựa chọn.

 Hầu hết các tùy chọn thường được sử dụng cho chứng chỉ X509 phân biệt

các định danh được cung cấp.

 TDanh sách hủy bỏ chứng chỉ (CRLs) không được hỗ trợ.

2.2.10. Các thuật toán không được hỗ trợ trong Cryptosys PKI

 Diffie-Helman keys ("DHPublicKey")

 Key Exchange Algorithm ("id-keyExchangeAlgorithm")

Các thuật toán từ [PKIXALG] hiện chưa được hỗ trợ, bao gồm:

Các khóa Elliptic Curve và chữ ký số (ECDSA), chúng bao gồm khá nhiều

thành phần lộn xộn, khó có thể hỗ trợ được chúng.

2.2.11. Các định dạng lưu trữ khóa

 Khóa RSA được tạo ra và có thể sẽ được tìm thấy trong các tập tin mã hóa

nhị phân BER được mã hóa với:

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

 RSAPublicKey theo PKCS#1 cho khóa công khai  EncryptedPrivateKeyInfo theo PKCS#8 cho khóa bí mật.

33

 Định dạng “PEM” base64 và “OpenSSL” cho các khóa công khai và định

dạng PrivateKeyInfo không được mã hóa cho khóa bí mật cũng được hỗ trợ

 Các hành động mặc định để lưu các khóa riêng được mã hóa bằng mật khẩu. Lưu dưới dạng PrivateKeyInfo không được mã hóa có nguy cơ rủi ro cho chính bạn

 Các khóa công khai có thể được tìm thấy trong chứng chỉ X509.

 Các khóa bí mật thì có thể được tìm thấy từ tệp tin PFX (PKCS#12), tuy

nhiên chỉ khi nó được tạo bởi các thuật toán mà CryptoSysPKI hỗ trợ.

 Các hàm đó phải được tìm thấy để có thể sử dụng khóa thường xuyên cho việc yêu cầu khóa được đọc trong những chuỗi nội bộ đầu tiên. Chúng tôi đã chọn để lưu trữ chúng trong nội bộ như là một chuỗi ký tự Base64. Sử dụng kiểu chuỗi

(string) Visual Basic hoặc kiểu ký tự (char) zero-terminated trong C làm cho đơn

giản hơn để giao tiếp với dữ liệu nhị phân.

 Xử lý các chuỗi khóa nội bộ như “blobs” của dữ liệu. Theo phiên bản 3.0,

chúng được mã hóa với một khóa phiên

 Hãy cẩn thận với chuỗi khóa bí mật nội bộ - sử dụng WIPE_Data để xóa

chúng khi không cần thiết.

 Sử dụng hàm RSA_ToXMLString và RSA_FromXMLString để chuyển đổi qua lại giữa các định dạng XML và chuỗi bên trong của bộ công cụ. Hãy rất cẩn

thận với dữ liệu khóa bí mật XML không được mã hóa.

2.3. Chứng thƣ số

Chứng thư số là một dạng chứng thư điện tử do tổ chức cung cấp dịch vụ

chứng thực chữ ký số cấp. Nó là một tài liệu có chứa một công bố được chứng thực.

Trong lĩnh vực điện tử, chứng thư là một tài liệu chứa một tập hợp các thông tin có

chữ ký số của một người có thẩm quyền và người này được cộng đồng những người

sử dụng chứng thư công nhận và tin cậy.

2.3.1. Chứng thư khóa công khai

Khi người khởi tạo (người gửi) thông báo muốn sử dụng mã hóa công khai

để mã hóa một thông báo gửi cho người nhận, họ cần một bản sao khóa công khai

của người nhận. Khi 1 người bất kỳ muốn kiểm tra chữ ký số do người khác sinh ra,

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

người kiểm tra cần một bản sao khóa công khai của người ký. Người mã hóa thông

34

báo và người kiểm tra chữ ký số là những người sử dụng khóa công khai hay gọi

ngắn gọn là người dùng.

Khi khóa công khai được gửi đến cho một người dùng thì không cần thiết

phải giữ bí mật khóa công khai này. Tuy nhiên, người sử dụng khóa công khai phải

đảm bảo chắc chắn rằng khóa công khai được sử dụng đúng là của người nhận

thông báo chủ định hoặc người ký. Nếu một đối tượng có thể dùng một khóa công

khai khác thay thế cho khóa công khai hợp lệ, các nội dung của thông báo mã hóa

có thể bị lộ, đối tượng này có thể biết được nội dung của các thông báo và có thể

làm giả chữ ký số. Hay nói cách khác, các biện pháp bảo vệ sẽ bị lộ nếu như một

đối tượng có thể thay thế các khóa công khai không được chứng thực.

Hệ thống chứng thư khóa công khai làm việc như sau: CA phát hành chứng

thư cho những người nắm giữ cặp khóa công khai và khóa bí mật. Mỗi chứng thư

gồm có một khóa công khai và thông tin nhận dạng duy nhất của chủ thể của chứng

thư. Chủ thể của chứng thư có thể là một người, thiết bị, hoặc một thực thể khác có

nắm giữ khóa bí mật tương ứng, xem hình sau [8] :

Hình 2.1. Chứng thư khóa công khai đơn giản

Khi chủ thể của chứng thư là một người hoặc một kiểu thực thể hợp pháp nào

đó, thì chủ thể thường được gọi là một thuê bao của CA. Các chứng thư được CA

ký bằng khóa bí mật của CA.

Một khi các chứng thư này được thiết lập, nhiệm vụ của người sử dụng rất

đơn giản. Giả thiết rằng, một người sử dụng đã có khoá công khai của CA một cách

an toàn (ví dụ, thông qua phân phối khoá công khai thủ công) và anh ta tin cậy CA

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

phát hành các chứng thư hợp lệ. Nếu người dùng cần khoá công khai của một trong

35

các thuê bao của CA này, anh ta có thể thu được khoá công khai của thuê bao đó

bằng cách lấy từ bản sao chứng thư của thuê bao. Chứng thư của thuê bao có thể

được kiểm tra bằng cách kiểm tra chữ ký của CA có trên chứng thư. Người sử dụng

các chứng thư theo cách này được gọi là thành viên đáng tin cậy.

Kiểu hệ thống này tương đối đơn giản và kinh tế khi thiết lập trên diện rộng và

theo hình thức tự động, bởi vì một trong các đặc tính quan trọng của các chứng thư là:

Các chứng thư có thể được phát hành mà không cần phải bảo vệ thông qua các dịch vụ

an toàn truyền thông truyền thống để đảm báo bí mật, xác thực và tính toàn vẹn.

Khoá công khai không cần giữ bí mật, như vậy các chứng thư không phải là

bí mật. Hơn nữa, ở đây không đòi hỏi các yêu cầu về tính xác thực và toàn vẹn, do

các chứng thư tự bảo vệ (chữ ký số của CA có trong chứng thư đảm bảo tính xác

thực và toàn vẹn). Nếu một đối tượng truy nhập trái phép định làm giả một chứng

thư được phát hành cho một người sử dụng khoá công khai, anh ta sẽ bị người này

phát hiện vì có thể kiểm tra được chữ ký số CA. Chính vì vậy, các chứng thư khoá

công khai được phát hành theo các cách không an toàn, ví dụ như thông qua các máy

chủ, các hệ thống thư mục hoặc các giao thức truyền thông không an toàn.

Lợi ích cơ bản của một hệ thống chứng thư khoá công khai là một người sử

dụng có thể có được một số lượng lớn các khoá công khai của các thành viên khác

một cách tin cậy, xuất phát từ thông tin khoá công khai của một thành viên, đó

chính là khoá công khai của CA.

2.3.2. Khuôn dạng chứng thư X.509

Khuôn dạng chứng thư khóa công khai được chấp nhận rộng rãi nhất định

nghĩa trong chuẩn X.509 của ISO/IF/ITU.

a) Khuôn dạng chứng thƣ cơ bản Khuôn dạng chứng thư X.509 gồm có 3 phiên bản 1,2,3 được trình bày như sau:

 Phiên bản (Version): Chỉ ra dạng phiên bản

 Số hiệu (serial number): Số hiệu nhận dạng duy nhất của chứng thư này. Nó

được CA phát hành gán cho.

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

 Tên thuật toán ký (Signature): Tên thuật toán ký được CA sử dụng để ký chứng thư

36

 Người phát hành (Issuer): Tên theo chuẩn X.509 của CA phát hành

 Thời gian hợp lệ (Validity): Ngày/giờ có hiệu lực và hết hạn của một chứng thư

 Chủ thể ( Subject): Tên X.509 của đối tượng nắm giữ khóa bí mật (tương ứng

với khóa công khai được chứng thực)

 Thông tin về khóa công khai của chủ thể (Subject Public key Information): gồm khóa

công khai của chủ thể cùng với một tên thuật toán sử dụng khóa công khai này.

 Định danh duy nhất của người phát hành ( Issuer unique identifier): Là một chuỗi

bít tùy chọn, được sử dụng để chỉ rõ ràng là của CA phát hành, trong trường hợp cùng

một tên được gán cho các thực thể khác nhau trong cùng một thời gian.

 Định danh duy nhất của chủ thể (Subject unique identifier): Là một chuỗi bit

tùy chọn, được sử dụng để chỉ ra rõ ràng của chủ thể, trong trường hợp cùng một

tên được gán cho các thực thể khác nhau trong cùng thời gian.

Hình 2.2. Khuôn dạng chứng thư số phiên bản 1 và 2 dạng X.509

b) Khuôn dạng chứng thƣ X.509 mở rộng ( phiên bản 3) Càng ngày các khuôn dạng chứng thư trong phiên bản 1,2 không đáp ứng

được tất cả các yêu cầu. Dưới đây là các lý do bổ sung thêm thông tin :

 Giả thiết chủ thể của một chứng thư số bất kì có các chứng thư khác nhau với các

khóa công khai khác nhau (các khóa này được sử dụng cho các mục đích khác nhau)

và giả thiết rằng các cặp khóa cần được cập nhật định kỳ, do vậy cần phải có cách để

phân biệt các chứng thư khác nhau của đối tượng này một cách dễ dàng.

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Chứng thư trong phiên bản 3 sau:

37

Hình 2.3. Phần mở rộng của khuôn dạng chứng thư số trong phiên bản 3 dạng

X.509

Mỗi trường mở rộng có một kiểu (cần được đăng ký). Giống với cách đăng ký

một thuật toán, kiểu của trường mở rộng được đăng ký bằng cách gán cho nó một tên

đối tượng. Về nguyên tắc, các kiểu của trường mở rộng được một người nào đó xác

định. Trong thực tế, để làm được điều này, các kiểu của trường mở rộng thông thường

phải được biết rộng rãi qua các thiết lập khác nhau, chính vì vậy các kiểu quan trọng

của trường mở rộng phải được chuẩn hoá. Tuy nhiên, các cộng đồng quan tâm có thể

xác định các kiểu của trường mở rộng để đáp ứng các nhu cầu riêng của họ.

Trong phiên bản 3, mỗi trường mở rộng chứa một giá trị tên đối tượng (gồm

kiểu trường, một chỉ báo thiết yếu và một giá trị). Kiểu của mục dữ liệu trong

trường con (ví dụ như chuỗi văn bản, ngày tháng hoặc cấu trúc dữ liệu phức tạp)

ngữ nghĩa liên quan đến giá trị này do kiểu của trường mở rộng chi phối. Điều này

có thể xảy ra như là kết quả của việc định nghĩa các chứng thư nhằm hỗ trợ cho các

nhu cầu của nhiều ứng dụng, hoặc là kết quả của việc đưa ra các trường mở rộng

mới thông qua việc di trú kỹ thuật.

Chỉ báo thiết yếu là một cờ, cờ này sẽ xuất hiện khi trường mở rộng là thiết

yếu hoặc không thiết yếu. Nếu cờ chỉ báo là “không thiết yếu” thì một hệ thống

sử dụng chứng thư được phép bỏ qua trường mở rộng nếu nó không chấp nhận kiểu

của trường. Nếu cờ chỉ báo là “thiết yếu” thì một hệ thống sẽ không an toàn nếu sử

dụng bất kỳ phần nào của chứng thư, trừ khi hệ thống nàychấp nhận kiểu của trường

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

mở rộng và thiết lập chức năng liên quan.

38

Khái niệm “thiết yếu” thường xuyên bị hiểu sai. Một trường mở rộng có thể

quan trọng với người sử dụng chứng thư nhưng không nhất thiết phải chỉ báo thiết

yếu. Một hệ thống sử dụng chứng thư có thể yêu cầu các trường mở rộng nào đó

xuất hiện trong một chứng thư hoặc thông tin nào đó phải có trong các trường của

chứng thư trước khi chứng thư được chấp nhận. Một yêu cầu như vậy không liên

quan đến tính thiết yếu, hệ thống sử dụng chứng thư có thể yêu cầu sự xuất hiện

của các trường mở rộng không thiết yếu chẳng khác gì với yêu cầu sự xuất hiện

của các trường mở rộng thiết yếu nào đó.Các trường mở rộng không thiết yếu giúp

cho việc sử dụng các chứng thư thông qua các ứng dụng khác nhau trở nên dễ dàng

hơn và giúp cho sự di trú trở nên đơn giản hơn thông qua việc bổ sung dần dần các

kiểu mới cho trường mở rộng. Các trường mở rộng thiết yếu dẫn đến các vấn đề về

khả năng liên hoạt động và cần phải tránh, trừ khi giải quyết các mối quan tâm về

an toàn. Thông thường khi sử dụng, đa số các trường mở rộng được chỉ báo không

thiết yếu.

c) Các trƣờng mở rộng chuẩn của chứng thƣ Một tập hợp các trường mở rộng chuẩn (dành cho chứng thư phiên bản 3 của

X.509) được một số tổ chức phát triển như sau:[8]

1. Thông tin về khóa và chính sách

2. Các thuộc tính của chủ thể và người phát hành

3. Các ràng buộc đối với đường dẫn chứng thực

4. Các trường mở rộng liên quan đến danh sách các chứng thư bị thu hồi (CRL)

Các trường mở rộng nhóm (1) chuyển thêm các thông tin về các khoá của

chủ thể và người phát hành.

2.4. Cài đặt và sử dụng thƣ viện CryptoSysPKI

2.4.1. Cài đặt

Để cài đặt trên một hệ thống thử nghiệm hoặc hệ thống phát triển, sử dụng

chương trình setup.exe được cung cấp và phân phối. Lõi này sẽ cài đặt Win32 DLL

trong hệ thống cửa sổ chính của bạn và tạo ra các bản sao của tất cả các file cần

thiết khác, bao gồm cả hướng dẫn, trong thư mục C: \ Program Files \

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

CryptoSysPKI.

39

Hình 2.4. Thư viện Cryptosys PKI

Để phân phối một phiên bản giấy phép cho người dùng cuối cùng, xin vui lòng

đọc các hướng dẫn trong file distrib.txt. Không được sử dụng chương trình

setup.exe để phân phối cho người dùng cuối.

Sử dụng chương trình setup.exe để cài đặt. Để gỡ bỏ cài đặt, sử dụng Start>

Settings> Control Panel> Add / Remove Programs> CryptoSys PKI Toolkit để loại bỏ các ứng dụng và tất cả các tập tin liên quan.

Thực thi lõi DLL: Các tập tin thực thi cốt lõi là diCrPKI.dll mà là một DLL

(thư viện động) Win32. Tập tin này phải tồn tại trong đường dẫn tìm kiếm trên hệ

thống thư viện của người dùng cho tất cả các giao diện ngôn ngữ lập trình. Các

diCrPKI.dll thực thi không được đăng ký với regsvr32. Các giao diện VB6/VBA và

C / C + + truy cập vào lõi thực thi trực tiếp.

Trình đóng gói DLL: Một sự thực thi trình đóng gói được cung cấp để ngôn

ngữ lập trình .NET có thể truy cập các lõi thực thi. Điều này đòi hỏi cốt lõi Win32

DLL tồn tại trong đường dẫn tìm kiếm thư viện. Các trình đóng gói DLL giống

nhau có thể được sử dụng với tất cả các phiên bản.

dirCrSysPKINet.dll là một lớp thư viện lớp .NET gồm nhiều lớp

2.4.2. Sử dụng với C và C++

Để sử dụng với một chương trình C hoặc C++, bao gồm các tập tin diCrPKI.h với mã nguồn và liên kết của bạn với các thư viện diCrPKI.lib. Chỉ những yêu cầu non-ANSI C cái mà trình biên dịch của bạn hỗ trợ quy ước gọi the_stdcall để gọi hàm Win32 API từ một DLL Win32. Các mẫu chương trình C PKI_Examples.c được cung cấp và phân phối thực hiện một loạt các bài kiểm thử bằng cách sử dụng các vector kiểm tra. Có những ví dụ được lấy cho từng hàm. 2.4.3. Sử dụng với .NET: C# và VB.NET

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

1. Co py thư viện dotnet diCrSysPKINet vào một thư mục thuận tiện C:\Program Files\CryptoSysPKI\DotNet)

40

2. Trong ứng dụng của bạn, thêm một tham chiếu tới thư viện

=> Project > Add Reference

tab.NET, chọn Browse để tìm và chọn file thư viện

=> Trong diCrSysPKINet.dll

=> Chọn OK và wizard sẽ thêm tham chiếu của lớp thư viện vào project của bạn.

3. Với C#, thêm dòng “using CrytoSysPKI;”, Với VB.NET thêm “Imports

CryptoSysPKI” vào chương trình của bạn.

2.4.4. Phát hành an toàn

1. Các hàm và phương thức trong CryptoSys PKI cung cấp mật mã nguyên thủy

dự định được sử dụng như là một phần của một ứng dụng có liên quan đến an toàn. Đó là do bạn lập trình để đảm bảo rằng khóa, mật khẩu và các dữ liệu cá nhân

khác được giữ bí mật, và để đảm bảo các chính sách bảo mật thích hợp và các thủ

tục được thực hiện bởi người dùng cuối.

2. CryptoSys PKI là một thư viện liên kết động (DLL) 32-bit cung cấp dịch vụ hóa để ứng dụng chạy trên hệ điều hành Microsoft Windows. Trên Windows, nó

được thiết kế để hoạt động và hỗ trợ đa luồng. Trong các điều khoản FIPS 140-2,

CryptoSys PKI là một module độc lập đa chip, bao gồm các file diCrPKI.dll. Nó

được thiết kế để đáp ứng bảo mật mức 1 của FIPS 140-2. Ranh giới mật mã cho

CryptoSys PKI được định nghĩa như sự đính kèm của máy tính mà trên đó các

module được cài đặt mật mã. Là một sản phẩm phần mềm tinh khiết, CryptoSys

PKI không cung cấp bảo mật vật lý cho chính nó. Các máy tính chính nó phải được

bảo mật vật lý tương ứng.

3. Các hàm mà cho thấy rằng chúng tạo ra các tập tin sẽ ghi đè lên bất kỳ tập tin

hiện có cùng tên mà không có cảnh báo.

4. Không có tập tin nào khác, tạm thời hoặc vĩnh viễn, được tạo ra bởi bộ công

cụ này.

5. Không có hàm giao dịch nào trong bộ công cụ DLL. Các bộ công cụ sẽ không bao giờ thử cố gắng để "quay về" (dial home) hay thực hiện bất kỳ nỗ lực nào để tạo ra một khe thông tin liên lạc.

6. Phiên bản phát triển của bộ công cụ làm cho không thể cố gắng để đọc

hoặc viết bất cứ thứ gì tới cơ quan đăng ký của Windows theo các hoạt động bình

thường. Tuy nhiên, các thiết lập đăng ký tùy chọn có thể được thực hiện và, nếu có,

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

sẽ được đọc và thực hiện trên module, nếu một lỗi nghiêm trọng xảy ra.

41

7. Phiên bản dùng thử tạo ra và cập nhật các mục đăng ký trong HKCU \

Software \ DI Management và đọc các mục được tạo ra bởi những tiện ích thiết lập

trong HKLM \ Software \ DI Management. Đừng cố gắng thay đổi những mục này.

8. Phiên bản phát triển được phân phối đến người dùng cuối không yêu

cầu bất kỳ mục đăng ký nào trên máy tính của người dùng.

9. Ngoại trừ cho các hàm X509_CertIsValidNow, không có hàm nào khác

kiểm tra được việc thực hiện thời hạn hiệu lực của chứng chỉ X.509 trong bộ công cụ này.

10. Xin hãy đọc phần “An toàn khóa” dưới đây:

2.4.5. An toàn khóa

Các mẫu trong bộ công cụ này cho phép bạn làm nhiều hoạt động mức thấp với các khóa RSA. Thiết kế ban đầu chỉ cho phép khóa bí mật được lưu như một tập

tin trong định dạng mã hóa. Để đáp ứng nhiều yêu cầu từ người dùng, đã có thêm

nhiều chức năng cho phép bạn nhập và lưu khóa bí mật trong một nhiều định dạng

khác nhau mà không được mã hóa, bao gồm XML và OpenSSL tương thích với các

định dạng PEM.

Sử dụng các hàm này trong các bài test của bạn bằng mọi phương tiện, nhưng

nếu bạn đang sử dụng bộ công cụ này để làm cho một ứng dụng được sử dụng bởi

người dùng cuối ít kinh nghiệm, hãy làm theo các hướng dẫn sau đây:

 Không cho người dùng của bạn có khả năng lưu một khóa bí mật không

được mã hóa. Chỉ cần nói không.

 Đừng bao giờ lưu sự chế tạo khóa bí mật vào đĩa ở dạng không được mã hóa. Điều đó cũng bao gồm các định dạng “nội bộ” (internal). Hãy nhớ rằng không

bao giờ, ngay cả khi thử nghiệm.

 Sử dụng hàm WIPE_Data để xóa chuỗi khóa bí mật nội bộ ngay sau khi

bạn đã hoàn tất việc sử dụng nó.

 Với mật khẩu cũng sử dụng như trên

 Nếu bạn có thể lưu dữ liệu bí mật như là một file trung gian, sử dụng

WIPE_File để xóa nó ngay lập tức sau đó.

 Không bao giờ in ra chuỗi đại diện “internal” tương ứng của việc chế tạo

một khóa bí mật.

 Không bao giờ mã cứng khóa bí mật và mật khẩu.

 Thực thi một chính sách để người dùng buộc phải sử dụng mật khẩu mạnh

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

cho các khóa riêng.

42

Và xây dựng một hàm để phát hiện khi nào người sử dụng bị mắc kẹt như

lưu ý Post-It trên màn hình của họ với các mật khẩu khóa riêng trên đó.

2.4.6. Các tùy chọn an toàn cho khóa bí mật được mã hóa

Khóa bí mật được lưu trữ mặc định trong định dạng PKCS-8, được bảo vệ

bằng password. Thuật toán mặc định là “pbeWithSHAAnd3-KeyTripleDES-CBC”

từ PKCS-5

Xếp hạng gần đúng cho các giải thuật mã hóa ngày càng tăng tính bảo mật:

1. "pbeWithMD2AndDES-CBC" 2. "pbeWithMD5AndDES-CBC" 3. "pbeWithSHA1AndDES-CBC" 4. ...big gap!... 5. "pbeWithSHAAnd3-KeyTripleDES-CBC" (mặc định) 6. "pkcs5PBES2" + "des-EDE3-CBC" 7. "pkcs5PBES2" + "AES128-CBC" 8. "pkcs5PBES2" + "AES192-CBC" 9. "pkcs5PBES2" + "AES256-CBC"

Thuật toán ít an toàn pbeWithxxxAndDES-CBC sử dụng DES chỉ cung cấp

trong trường hợp bạn cần sự tương thích với hệ thống cũ hơn. Không nên sử dụng

chúng nếu bạn thực sự không cần.

Giải thuật PBES2 sử dụng hàm điều chế khóa PBKDF2 PKCS-5 với

hmacWithSHA1 như là một hàm mặc định psuedo-random (PRF). Để sử dụng hàm

message digest mạnh hơn từ các họ SHA-2 trong PRF, thêm một trong những lựa

chọn sau:

1. PKI_HASH_SHA224 cho hmacWithSHA224 2. PKI_HASH_SHA256 cho hmacWithSHA256 3. PKI_HASH_SHA384 cho hmacWithSHA384 4. PKI_HASH_SHA512 cho hmacWithSHA512

Hãy nhớ rằng an toàn của tất cả các giải thuật được giới hạn bởi độ mạnh của mật khẩu được sử dụng. Ngoài ra, các hệ thống khác có thể không nhất thiết hỗ trợ

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

tất cả các lựa chọn cung cấp ở đây.

43

2.4.7. Sinh số ngẫu nhiên ( Random Number Generator)

a) Sử dụng một tập tin mầm ( seed file) Sử dụng chức năng RNG_Initialize để xác định một tập tin khởi đầu với

một số lượng tối thiểu của entropy để khởi tạo các PRNG. Tập tin này được cập

nhật tự động khi được sử dụng. Ta có thể gọi tùy chọn RNG_UpdateSeedFile theo

thời gian trong ứng dụng của ta, và sử dụng RNG_MakeSeedFile để tạo ra tập tin

mầm mới. Sự an toàn của phương thức này cũng tốt như các an toàn mà ta có trên

các tập tin mầm. Nếu kẻ tấn công điều khiển các tập tin mầm, nó không có nghĩa là

họ điều khiển được dữ liệu đầu ra ngẫu nhiên, nó chỉ có nghĩa là sử dụng một tập tin

mầm không được tăng cường tính an toàn mạnh của PRNG này.

b). Yêu cầu ngƣời dùng nhập vào tổ hợp phím ngẫu nhiên Sử dụng hàm RNG_BytesWithPrompt khi tạo dữ liệu ngẫu nhiên để buộc

người sử dụng tạo entropy bằng cách sử dụng tổ hợp phím ngẫu nhiên và di chuyển

chuột. RNG_MakeSeedFile còn sử dụng như một dấu nhắc. Điều này cho ta biết

rằng việc di chuyển chuột và tổ hợp phím trên bàn phím của người dùng là an toàn.

c). Thêm entropy của riêng ta Nếu ta có mã nguồn entropy độc lập của riêng ta, thêm "additional input" vào

tiến trình RNG như một "mầm" khi sử dụng hàm RNG_Bytes. Ta có thể thêm đầu

vào với 128 bit, khi đó đầu ra từ RNG sẽ có ít nhất 128 bit an toàn mạnh.

Người dùng cung cấp entropy (nó giống như một mầm) được bổ sung thêm

“additional input” vào tiến trình sinh. Nó không ảnh hưởng đến nhóm tích lũy và

không thể được sử dụng bởi những kẻ tấn công để điều khiển đầu ra.

Làm thế nào để kẻ tấn công biết ít về user-supplied entropy. Sử dụng thời gian

hiện thời là không thể. Nếu ta có thể cung cấp 32 byte (các byte phải được chọn

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

ngẫu nhiên từ 0 đến 255) dữ liệu trong đó kẻ tấn công không biết gì và sau này không thể phát hiện ra, sau đó ta thêm 128 bit an toàn mạnh. Dưới đây là một ví dụ trong C# về cách ta có thể sử dụng để tạo ra entropy user-supplied RNG khi tạo ra một cặp khóa RSA mới. (Mật khẩu phải được nhập một cách riêng biệt, không mã cứng như thế này!) int r; byte[ ] seed; int nbits = 512; string publicKeyFile = @"C:\Test\mykeypub.bin"; string privateKeyFile = @"C:\Test\mykeypri.bin";

44

Rsa.PublicExponent.Exp_EQ_65537, 1000, sbPassword.ToString(), Rsa.PbeOptions.Default, false, seed);

StringBuilder sbPassword = new StringBuilder("password"); // 1. sinh một vài entropy user-derived sử dụng bàn phím seed = Rng.BytesWithPrompt(64,"",Rng.Strength.Default); Debug.Assert(seed.Length > 0, "Failed to create a seed"); // 2. tạo file chứa cặp khóa RSA mới, thêm mầm này vào trong tiến trinh r = Rsa.MakeKeys(publicKeyFile, privateKeyFile, nbits, Console.WriteLine("Rsa.MakeKeys returns {0} (expected 0)", r); 2.4.8. Xác định những định danh riêng biệt

Để xác định một định danh riêng biệt cho một chứng chỉ X.509 hoặc yêu cầu

chứng chỉ. Ta sử dụng một chuỗi các loại thuộc tính type=value, các cặp cách nhau

bằng dấu chấm phẩy (";"). Định dạng chung là:

Type=value( ; type=value)

 CN commonName (tên thông dụng)  O organizationName (tên tổ chức)

 OU organizationalUnit (đơn vị tổ chức)

 C countryName (tên nước)

 ST or S stateOrProvinceName (tên bang)

 L localityName (tên khu vực)

 E emailAddress (deprecated) (địa chỉ thư điện tử)

 SN surname [Added in v3.3...] (tên họ)

 G givenName (tên được đặt)

 T title (tiêu đề)  DC domainComponent (thành phần miền)

Các loại được hỗ trợ là:

Các ví dụ về sự xác định định danh riêng biệt:

"C=US;O=Example Organisation;CN=Test User 1" "CN=MyUser ; O=My Org ; OU=Unit ; C=AU ; L=My Town ; S=NSW ; E=myuser@my.org"

Giá trị thuộc tính có thể chứa bất kỳ ký tự hợp lệ nào ngoại trừ dấu chấm phẩy

";" (ký tự ASCII 0x3B, Unicode U+003 B) và dấu bằng "=" (ký tự ASCII 0x3D,

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Unicode U+003 D).

45

Mã hóa mặc định: Các mã hóa mặc định là IA5String cho các thuộc tính

emailAddress và PrintableString cho tất cả các thuộc tính khác. Nếu chuỗi đầu vào

bao gồm các ký tự không hợp lệ cho các mã hóa, thì sau đó T61String (TeletexString) sẽ được sử dụng. Chứng chỉ được tạo ra với T61String có thể không

được chấp nhận là hợp lệ bởi một số cấu hình. Để mã hóa UTF-8, xác định cờ

PKI_X509_UTF8.

2.4.9. Tham số mở rộng X509

Tham số strExtensions có thể được dùng để đặt các chi tiết cao cấp hơn trong chứng chỉ được tạo mới thực hiện bằng cách sử dụng hàm X509_MakeCert và X509_MakeCertSelf. Nó là một tham số tùy chọn. Nếu không trống, nó phải có một địa chỉ email RFC822 hoặc thêm một phần mở rộng subjectAltName đơn một hoặc

nhiều thuộc tính type=value cách nhau bằng dấu chấm phẩy (;). Thuộc tính hợp lệ

của các cặp giá trị là:

rfc822Name=string; để thiết lập địa chỉ e-mail trong phần mở rộng

 subjectAltName, ví dụ: rfc822Name=myname@testorg.com.

serialNumber=hex-digits; để ghi đè lên số serial thiết lập bởi nCertNum với

 một số nguyên lớn hơn và không giới hạn, trong dạng cơ số 16, ví dụ

serialNumber=12deadbeefcafe0123. Nếu chữ số đầu tiên là lớn hơn 7, nó sẽ đặt

trước bởi một số “0” để đảm bảo số nguyên này được lưu giữ như là một giá trị rõ ràng.

subjectKeyIdentifier=hex-digits; Để thiết lập phần mở rộng subjectAltName

 với một octet nhị phân được xác định trong dạng cơ số 16, ví dụ

subjectKeyIdentifier=fedcba9876543210.

notAfter=iso-time-string; Để ghi đè lên thời hạn hiệu lực thiết lập bởi

 YearsValid với ngày và giờ cụ thể theo chuẩn ISO, ví dụ: notAfter = 2020/12/31 hoặc notAfter = 2.020-12-31T14: 03:59. Nếu không đặt thời gian, nó sẽ cho giá trị mặc định là 23:59:59.

 notBefore=iso-time-string; Để ghi đè lên thời gian bắt đầu mặc định một phút trước một ngày giờ cụ thể theo chuẩn ISO, ví dụ: notBefore = 2008/12/31. Nếu không có thời gian nó sẽ mặc định là 00:00:01.

Một số ví dụ về chuỗi đầu vào hợp lệ cho tham số strExtensions:

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

"AliceRSA@example.com" "rfc822name=AliceRSA@example.com"

46

"serialNumber=46346BC7800056;subjectKeyIdentifier=77D2B4D1B74C8A8AA3 CE" "rfc822Name=me@here.com;notAfter=2020-12-31T12:00:59" "rfc822Name=AliceRSA@example.com;notBefore=1999-09- 19T01:08:47;notAfter=2039-12-31"

2.4.10. Danh sách một số hàm trong CryptoSysPKI

1. Hàm CMS

 CMS_MakeEnvData - Tạo một đối tượng dữ liệu được đóng phong bì mã hóa bởi CMS cho một hoặc nhiều người nhận bằng cách sử dụng chứng chỉ X.509 của họ.

 CMS_MakeSigData - Tạo một đối tượng dữ liệu được ký CMS sử dụng

khóa riêng của người gửi.

 CMS_MakeSigDataFromString - sử dụng dữ liệu trực tiếp từ một

chuỗi thay vì một tập tin.

 CMS_MakeSigDataFromSigValue - sử dụng một giá trị chữ ký được

tính toán trước.

 CMS_MakeDetachedSig - Tạo một đối tượng dữ liệu ký CMS "detached signature" (chữ ký độc lập) từ message digest của nội dung.

 CMS_ReadSigData - Đọc nội dung từ một file đối tượng dữ liệu ký

CMS tập tin.

 CMS_ReadSigDataToString - ghi nội dung dữ liệu vào một chuỗi thay

vì một tập tin.

 CMS_GetSigDataDigest - Xuất message digest từ một tập tin đối tượng

dữ liệu ký CMS và xác minh chữ ký.

 CMS_VerifySigData – kiểm tra các chữ ký và nội dung của một tập tin

đối tượng dữ liệu ký CMS.

 CMS_QuerySigData - Các câu hỏi cho một tập tin đối tượng dữ liệu ký

CMS về các thông tin được lựa chọn.

2. Các hàm khóa công khai RSA

 RSA_MakeKeys - Tạo ra một cặp khóa RSA và lưu như một tập tin

quan trọng nào và tập tin EncryptedPrivateKeyInfo PKCS-8.

 RSA_ReadEncPrivateKey - Đọc chuỗi khóa bí mật từ một tập tin

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

EncryptedPrivateKeyInfo PKCS-8.

47

 RSA_ReadPrivateKeyInfo - Đọc chuỗi khóa riêng từ một tập tin

PrivateKeyInfo (không được mã hóa).

 RSA_SaveEncPrivateKey - Lưu một chuỗi khóa bí mật vào một tập tin

EncryptedPrivateKeyInfo PKCS-8.

 RSA_SavePrivateKeyInfo - Lưu một chuỗi khóa bí mật vào một tập tin

PrivateKeyInfo PKCS-8.

 RSA_GetPrivateKeyFromPFX - Xuất một khoá riêng từ

PKCSShroudedKeybag PKCS-12.

 RSA_ReadPublicKey - Đọc chuỗi khóa công khai từ một tập tin

RSAPublicKey PKCS-1.

 RSA_SavePublicKey - Lưu một khoá công khai trong một tập tin

RSAPublicKey PKCS-1.

 RSA_GetPublicKeyFromCert – Xuất một khóa công khai từ một giấy

chứng nhận X.509.

 RSA_KeyBits - Trả về độ dài của khoá, theo bit cho chuỗi khóa công

khai hoặc bí mật.

 RSA_KeyBytes - Trả về độ dài của khóa theo dạng byte cho chuỗi khóa

công khai và bí mật.

 RSA_KeyHashCode - Trả về một mã băm của một chuỗi khóa công

khai hay bí mật.

 RSA_KeyMatch – xác minh rằng một cặp chuỗi khóa công khai và bí

mật được so khớp.

3. Hàm RSA gốc

 RSA_RawPublic - chuyển đổi dữ liệu gốc bằng cách sử dụng khóa

công khai RSA.

 RSA_RawPrivate – chuyển đổi dữ liệu gốc bằng cách sử dụng một khóa

riêng RSA.

 RSA_EncodeMsg - Tạo ra một khối tin được mã hóa eme hoặc EMSA

mã hóa khối tin theo PKCS # 1.

4. Hàm chứng chỉ X509

 X509_MakeCert - Tạo chứng chỉ X.509.

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

 X509_MakeCertSelf - Tạo một chứng chỉ X.509 tự ký.

48

 X509_CertRequest - Tạo ra một yêu cầu ký chứng chỉ PKCS-10 (CSR).

 X509_VerifyCert – Kiểm tra một chứng chỉ X.509 được ký bởi công ty

phát hành của nó.

 X509_CertThumb - Tính toán message digest của một chứng chỉ X.509.

 X509_CertIsValidNow – kiểm tra chứng chỉ X.509 hiện tại có hợp lệ

hay không.

 X509_CertExpiresOn - Trả về chuỗi chứa ngày tháng và thời gian

chứng chỉ hết hạn.

 X509_CertSubjectName - Xuất ra tên của chủ thể từ chứng chỉ X509.

 X509_QueryCert – Truy vấn một file chứng chỉ X.509 cho các thông

tin được lựa chọn.

 X509_ReadStringFromFile - Tạo ra một chuỗi Base64 của file chứng

chỉ X.509 .

 X509_SaveFileFromString - Tạo ra một file chứng chỉ X509 mới từ

một chuỗi Base64.

5. Hàm PFX

 PFX_MakeFile - Tạo ra một file PFX đơn giản (PKCS-12) từ chứng chỉ

X509 và (tùy chọn) file khóa riêng đã mã hóa.

 PFX_VerifySig – Kiểm tra chữ ký một file PFX (PKCS-12).

6. Các hàm mật mã khối

 CIPHER_Bytes - Mã hóa / giải mã một mảng các byte bằng cách sử

dụng thuật toán và chế đọ mã hóa khối.

 CIPHER_File - Mã hóa / giải mã một tập tin bằng cách sử dụng thuật

toán và chế độ mã hóa khối.

 CIPHER_Hex - Mã hóa / giải mã một chuỗi cơ số 16 bằng cách sử dụng

thuật toán và chế độ mã hóa khối.

 CIPHER_KeyWrap – Đóng gói một khóa mã hóa nội dung với một

khóa mã hóa khóa.

 CIPHER_KeyUnwrap – Mở gói một khóa mã hóa nội dung với một

khóa mã hóa khóa.

7. Các hàm băm Message Digest

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

 HASH_Bytes - Tạo ra một digest băm mật mã ở định dạng byte từ dữ liệu byte

49

 HASH_File - Tạo ra một digest băm mật mã ở định dạng byte từ một tập tin.

8. Các hàm HMAC

 HMAC_Bytes - Tạo ra một HMAC keyed-hash ở định dạng byte từ dữ

liệu byte.

 HMAC_HexFromBytes - Tạo ra một HMAC keyed-hash trong định

dạng cơ số 16 từ dữ liệu byte.

 HMAC_HexFromHex - Tạo ra một HMAC keyed-hash trong định dạng

cơ số 16 từ dữ liệu được mã hoá dạng cơ số 16.

9. Các hàm chuyển đổi mã hóa

 CNV_B64StrFromBytes - mã hóa dữ liệu byte vào một chuỗi mã hóa Base64.

 CNV_BytesFromB64Str - giải mã một chuỗi mã hóa Base64 thành byte.

 CNV_B64Filter - Loại bỏ các ký tự không phải base64 từ một chuỗi.

 CNV_HexStrFromBytes - Mã hóa dữ liệu byte vào chuỗi thập cơ số 16.

 CNV_BytesFromHexStr - giải mã một chuỗi cơ số 16 thành các byte.

10. Các hàm chuyển đổi tập tin nhị phân và PEM

 PEM_FileFromBinFile - Chuyển đổi một tập tin nhị phân vào một tập tin PEM.

 PEM_FileToBinFile - Chuyển đổi các nội dung của một tập tin PEM

vào một tập tin nhị phân.

11. Các hàm sinh số ngẫu nhiên

 RNG_Bytes - Tạo ra một tập hợp ngẫu nhiên của dữ liệu byte.

 RNG_BytesWithPrompt - như trên với một dấu nhắc để nhập tổ hợp

phím ngẫu nhiên.

 RNG_Number - Tạo ra một số ngẫu nhiên trong một dải nhất định.

 RNG_Initialize - khởi tạo các RNG từ một tập tin mầm.

2.5. Các hoạt động chính trong hệ thống PKI

Các hoạt động cơ bản cần phải thực hiện trong một hệ thống PKI có thể tóm

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

tắt trong mô hình sau:

50

Hình 2.5. Tóm tắt quá trình hoạt động cơ bản trong hệ thống PKI

2.5.1. Giai đoạn khởi tạo chứng chỉ

Hình 2.6. Giai đoạn khởi tạo

Trước khi các thực thể có thể tham gia vào các dịch vụ, chúng cần được khởi

tạo. Việc khởi tạo bao gồm:

- Đăng ký thực thể cuối

- Sinh cặp khóa

- Tạo chứng thư và phân phối khóa – chứng thư

- Phổ biến chứng thư và sao lưu khóa nếu được áp dụng

Quá trình đăng ký có thể có nhiều kịch bản khác nhau. Là quá trình trong đó

định danh của thực thể được thiết lập và kiểm tra. Mức độ kiểm tra tùy thuộc vào

chính sách chứng thư.

Quá trình sinh cặp khóa:

- Tức là quá trình sinh cặp khóa bí mật – công khai

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

- Có thể được sinh trước quá trình đăng ký hoặc trong trả lời trực tiếp cho quá

51

trình đăng ký thực thể cuối

- Trong PKI toàn diện, các khóa có thể được sinh tại thực thể cuối, trong RA,

hoặc trong CA.

Các nhân tố có thể ảnh hưởng đến việc chọn vị trí sinh cặp khóa bao gồm:

khả năng, hiệu suất, tính đảm bảo, phân nhánh pháp lý và cách sử dụng khóa định

sẵn. Vị trí sinh cặp khóa là quan trọng và trong tất cả các trường hợp thì người sử

dụng phải có trách nhiệm lưu trữ và đảm bảo bí mật cho khóa riêng của mình.

Trường hợp cặp khóa do CA tạo ra thì CA phải có cơ chế, phương tiện đặc

biệt và trách nhiệm đảm bảo bí mật tuyệt đối khóa riêng của người dùng.

Tạo chứng thư và phân phối khóa – chứng thư:

- Bất kể khóa sinh tại vị trí nào, trách nhiệm tạo chứng thư thuộc về CA được

cấp phép.

- Nếu khóa công khai được sinh bởi thành phần khác CA thì khóa công khai

đó phải được chuyển đến CA một cách an toàn.

- Khi khóa công khai được sinh bởi thành phần khác CA thì khóa công khai đó

phải được chuyển đến CA một cách an toàn.

- Khi khóa và chứng thư liên quan đã được sinh ra, nó cần được phân phối hợp lý.

- Các yêu cầu phân phối khóa và chứng thư cụ thể phụ thuộc vào

nhiều yếu tố bao gồm: nơi mà các khóa được sinh ra, mục đích sử dụng của chứng

thư, các ràng buộc về chính sách.

Phổ biến chứng thư:

- Khi khóa bí mật và chứng thư khóa công khai tương ứng đã được

phân phối thì chứng thư được phổ biến.

- Các phương pháp phổ biến: phân phối thủ công hoặc lưu chứng thư

kho công cộng để hỗ trợ việc tải về trực tuyến theo yêu cầu.

- Sao lưu khóa:

Nếu cặp khóa bí mật – công khai được sử dụng cho việc đảm bảo tính bí mật,

giai đoạn khởi tạo có thể bao gồm cả việc sao lưu khóa và chứng thư bởi bên thứ ba

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

tin cậy.

52

Việc sao lưu khóa còn tùy thuộc vào chính sách trong từng môi

trường cụ thể.

2.5.2. Giai đoạn sau phát hành

Khi khóa bí mật và chứng thư số được phân phối, giai đoạn sau phát hành

của việc quản lý khóa – chứng thư được bắt đầu. Giai đoạn này bao gồm:

- Tải chứng thư từ một kho ở xa ( khi được yêu cầu)

 Thực thể cuối đưa ra yêu cầu lấy chứng thư để dùng

 Có thể xuất phát từ hai yêu cầu sử dụng riêng biệt:

 Để mã hóa dữ liệu được gửi tới thực thể cuối khác thường là mã hóa khóa đối

xứng để gửi cho người nhận.

 Để kiểm tra chữ ký số từ một thực thể cuối khác.

 Liên quan đến tính sẵn sàng truy cập chứng thư của thực thể đầu cuối

- Kiểm tra tính hợp lệ của chứng thư số

 Tính toàn vẹn của chứng thư được kiểm tra bởi vì chứng thư được ký số bởi CA

phát hành

 Tính toàn vẹn chỉ là một trong những số phép kiểm tra cần thực hiện trước khi

chứng thư được coi là hợp lệ, bao gồm:

 Chứng thư đã được phát hành bởi nơi tin cậy được xác nhận

 Tính toàn vẹn của chứng thư được đảm bảo

 Chứng thư vẫn trong thời gian hợp lệ

 Chứng thư chưa bị hủy bỏ

 Chứng thư phù hợp với chính sách

- Khôi phục khóa khi cần thiết

Việc sao lưu và khôi phục khóa trong PKI là rất cần thiếtSao lưu khôi phục khóa

thường gắn liền với quá trình quản lý vòng đời khóa – chứng thư

- Cập nhật khóa tự động

Các chứng thư được gán 1 thời gian sống cố định khi phát hành. Khi một chứng

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

thư số gần hết hạn, cần phải phát hành cặp khóa

53

mới và chứg thư mới tương ứng. Đó chính là cập nhật khóa. Thực chất là chạy lại

quá trình khởi tạo và cần lưu ý. Trong PKI, việc cập nhật khóa cần phải được tự

động ở mức tối đa.

2.5.3. Giai đoạn hủy bỏ chứng thư

Quản lý vòng đời khóa, chứng thư kết thúc bằng giai đoạn hủy bỏ. Giai đoạn

này bao gồm: hết hạn chứng thư, hủy bỏ chứng thư, lịch sử khóa, lưu trữ các khóa.

- Hết hạn chứng thư:

 Các chứng thư được gán một khoảng thời gian hợp lệ cố định

 Khi chứng thư hết hạn có ba khả năng có thể xảy ra với thực thể cuối:  Không ảnh hưởng gì đến thực thể cuối không trực tiếp tham gia vào PKI  Sau khi hết hạn, việc đổi mới chứng thư được thực hiện ( đặt thời gian hợp lệ mới, ra hạn thêm)  Cập nhật chứng thư được thực hiện ( thay bằng khóa mới, chứng chỉ mới)

Hình 2.7. Giai đoạn hủy bỏ chứng chỉ

 Hủy bỏ chứng thư đúng lúc trước khi nó hết hạn về thời gian

 Việc hủy bỏ chứng thư chỉ xuất phát từ một số nhân tố sau đây:

 Khóa bí mật bị nghi ngờ

 Sự thay đổi trạng thái công việc hoặc kết thúc thuê bao PKI

- Lịch sử khóa

 Các chứng thư được phát hành với khoảng thời gian hợp lệ nhất định

 Các khóa mã dần hết hạn nhưng không có nghĩa là tất cả các dữ liệu đã được

mã hóa bằng khóa đó sẽ không khôi phục lại được

 Vì vậy cần lưu trữ an toàn và tin cậy các khóa cần thiết để giải mã, ngay cả

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

khi chứng thư tương ứng hết hạn. Quá trình này tạo thành lịch sử khóa

54

- Lưu trữ khóa

 Là cất giữ khóa một cách an toàn và tin cậy trong thời gian lâu dài

 Thông thường được hỗ trợ bởi CA hoặc bên thứ 3 tin cậy khác.

2.5.4. Các hoạt động phục hồi

Các hoạt động phục hồi được thực hiện khi các đối tượng sử dụng đánh mất

thông tin mà nó lưu trữ. Ví dụ, như đã nêu ở phần trên, các đối tượng sử dụng có

thể có một số phương tiện lưu trữ an toàn cá nhân; khi phương tiện lưu trữ này bị

hỏng thì nó cần phải nhờ đến CA để phục hồi các thông tin bị mất.

Việc phục hồi thông tin chủ yếu được tập trung vào việc phục hồi các cặp khoá. Đối với các CA và RA, việc lưu trữ thông tin backup về khoá của các đối

tượng là không bắt buộc. Khi các đối tượng sử dụng cần phục hồi các cặp khoá của

mình, ta cần phải có thêm một số giao thức chuyển đổi để hỗ trợ việc phục hồi

khoá. Trong phạm vi đồ án, em sẽ không đề cập đến các giao thức này.

2.6 Kết chƣơng

Trong chương 2, em đã giới thiệu được Bộ công cụ kiến trúc CryptoSys PKI [7] là một bộ thư viện dạng giao diện lập trình ứng dụng cho hệ thống Windows cho

phép người dùng tạo ra và đọc các thông điệp an toàn mật mã được mã hóa. Nó

cung cấp độ mật mạnh sử dụng công nghệ không cấp bằng sáng chế. Đồng thời đề

cập đến một số hàm được sửa đổi trong phiên bản 3.0 trở lên. Ngoài ra em cũng giới

thiệu một số thuật toán hỗ trợ và không hỗ trợ trong Cryptoys PKI. Cuối cùng là để

cài đặt trên một hệ thống thử nghiệm hoặc hệ thống phát triển, sử dụng chương trình

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

setup.exe được cung cấp và phân phối.

55

CHƢƠNG 3. XÂY DỰNG CHƢƠNG TRÌNH THỬ NGHIỆM

3.1. Mục tiêu phát biểu bài toán

Mục tiêu chính của chương trình là: Xây dựng một hệ thống PKI đơn giản.

Sau khi người dùng tiến hành thủ tục xin cấp chứng thư số thì hệ thống nếu thấy

hợp lệ sẽ sinh cặp khóa công khai, khóa bí mật và phát hành chứng thư cho người

dùng. Ngoài ra, để minh họa việc ứng dụng chứng thư số, Module liên lạc an toàn

cũng được xây dựng, Module này cho phép 2 người dùng có thể sử dụng chứng thư

số đã được phát hành để truyền tin bảo mật và đảm bảo tính xác thực.

Chứng thư số khóa công khai này phải được xác thực rằng chính do CA tin

cậy tạo ra. Trong hệ thống PKI này cũng chứa danh sách chứng thư hết hạn, do đó

người dùng có thể kiểm tra xem chứng thư số của mình có còn hạn sử dụng hay

không. T iếp sau đó là ứng dụng chứng thư số để trao đổi thông tin an toàn sử dụng

khóa công khai trong chứng thư có được để mã hóa dữ liệu gửi đi trong kênh truyền

công cộng với Module liên lạc an toàn.

3.2. Sơ đồ hoạt động của chƣơng trình

Hình 3.1. Sơ đồ hoạt động của chương trình

User yêu cầu cấp phát chứng thư thông qua một hệ thống PKI (ở đây là trung

tâm CA) hệ thống này nhận yêu cầu và sinh ra chứng thư cho User. Ở đây khi User

yêu cầu cấp chứng thư số thì User sẽ gửi thông tin về bản thân và khóa công khai

của mình tới RA, sau đó RA gửi thông tin của user và ký yêu cầu chấp thuận đến

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

trung tâm CA. CA tạo chứng thư khóa công khai, ký bằng khóa bí mật của CA và

56

lưu chứng chỉ vừa được phát hành vào Kho chứng chỉ của CA, sau đó CA gửi

chứng thư trở lại RA và RA cấp chứng thư cho người sử dụng.

3.3. Một số chức năng chính và lựa chọn môi trƣờng công cụ

 Lựa chọn môi trường công cụ

Việc lưa chọn môi trường và công cụ phát triển sẽ trả lời câu hỏi: Hệ thống sẽ

hoạt động trong điều kiện nào và ta được trang bị những gì để xây dựng hệ thống đó.

Một hệ thống PKI trong thực tế bao gồm cả con người và máy móc. Phạm vi

ứng dụng và các tình huống xảy ra trong hệ thống cũng đa dạng. Tuy nhiên, trong

phạm vi luận văn này, em xác định những đối tượng trong hệ thống là các user. Hệ

thống PKI được triển khai và xây dựng trên nền tảng hệ điều hành Windows trên

các máy PC. Mặc dù vậy, việc đảm bảo tương thích tối đa với các phiên bản sớm

hơn của Windows sẽ luôn được chú trọng. Lý do của việc lựa chọn hệ điều hành

này là vì chúng hỗ trợ tốt cho bộ thư viện CryptoSys PKI. Hơn nữa, đây cũng là

một dòng hệ điều hành phổ biến, dễ phát triển và thử nghiệm các ứng dụng.

Ngôn ngữ được lựa chọn để xây dựng hệ thống server phân phối khoá là C#

và công cụ phát triển là bộ Visual studio 2012, đây là bộ công cụ hỗ trợ rất tốt quá

trình mã hoá, giải mã và đóng gói dữ liệu. Vì trong mô hình xây dựng hệ thống PKI

yêu cầu rất nhiều lần quá trình mã hoá và giải mã, từ đó việc lựa chọn công cụ này

là hoàn toàn phù hợp.

Một số chức năng chính: Giao diện chính

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Hình 3.2. Giao diện chính của chương trình

57

Trong hệ thống này bao gồm các chức năng chính đó là: Yêu cầu cấp phát

chứng thư số, yêu cầu kiểm tra chứng thư, cập nhật chứng thư, danh sách hủy bỏ và

dowload chứng thư số.

Giao diện người dùng yêu cầu cấp phát chứng thư:

Hình 3.3. Giao diện chức năng cấp phát chứng chỉ

Khi yêu cầu cấp phát chứng thư số, người yêu cầu phải cung cấp các thông

tin cơ bản như: Họ tên, ngày sinh, địa chỉ, Cơ quan công tác,… cho RA. Sau đó RA

sẽ xem xét, nếu thông tin của người dùng hợp lệ thì sẽ gửi lên cho CA để bắt đầu quá trình thực hiện cấp chứng thư số. Người quản trị sẽ điền thông tin của User vào

sau đó kiểm tra xem thông tin đã đúng hay chưa. Nếu đúng thì tiếp tục thực hiện

những việc cấp chứng thư số.

Khi tiến hành cấp chứng thư CA sinh ra cặp khoá công khai và khoá bí mật

của User. CA sinh ra chứng thư số với các trường thông tin cơ bản như sau: Số

serial, Người phát hành, số hiệu, tên chủ thể, ngày cấp phát, ngày hết hạn, khoá công khai của chủ thể, chữ ký của CA.Với Module mật mã, cặp khoá công khai và khoá bí mật của thuật toán RSA được sinh ra.

Chữ ký của CA được thực hiện như sau: Ban đầu dựa trên những thông tin của User, CA tính giá trị băm trên bản ghi dữ liệu gồm các trường thông tin của chứng thư số (như số serial, tên chủ thể, ngày cấp phát, ngày hết hạn, khoá công

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

khai của chủ thể,…) (Hàm băm được sử dụng là MD5 có trong Module mật mã). Và sau đó, giá trị “băm” này được mã hoá bởi khoá bí mật của CA cho ta giá trị được gọi là chữ ký của CA.

58

Hình 3.4. Giao diện yêu cầu tạo chứng chỉ

Chứng thư số vừa được tạo ra sẽ được lưu vào kho chứng thư số của CA và

gửi cho người dùng tương ứng.

Khi chứng thư đã được cấp, người dùng có thể xem thông tin và tải chứng

thư tại trang Dowload chứng thư .

Hình 3.5. Giao diện danh sách chứng thư được cấp Người dùng bất kỳ có thể dễ dàng kiểm tra xem một chứng thư số nào đó có

hợp lệ do CA cung cấp hay không bằng cách nhập file chứng thư của mình vào, hệ

thống sẽ so sánh chứng thư nhập vào với chứng thư có trong kho sau đó gửi thông

báo tới người dùng.

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Hình 3.6. Giao diện kiểm tra chứng thư số

59

Khi ta có một chứng thư và muốn kiểm tra chứng thư này có phải do CA

cung cấp không và nó đã hết hạn chưa, chúng ta chỉ đường dẫn của chứng thư đó

(nơi mà ta lưu trữ tệp chứng chỉ) và yêu cầu kiểm tra.

Với Module mật mã, tất cả các trường trong chứng thư (trừ trường chữ ký số

của CA) cũng được gộp lại và tiến hành “băm” (theo giải thuật MD5). Giá trị này

được so sánh với giá trị khi dùng giải thuật RSA để ký chữ ký số của CA (việc kiểm

tra này dựa trên khoá công khai của CA). Khi hai giá trị này bằng nhau, tức là

chương trình xuất ra một dòng thông báo “Chứng chỉ này do CA cung cấp” ngược lại xuất ra thông báo “Chứng chỉ này không phải do CA cung cấp”.

Khuôn mẫu của một chứng thư được tạo ra bởi các module mật mã với các

trường:,,,<Địachỉ>,, , , .

Hình 3.7. Chứng chỉ số do CA cấp Khi chứng chỉ số hết hạn, người dùng có thể yêu cầu CA cập nhật lại chứng

thư số của mình. Chứng thư số sẽ được ra hạn thêm và thay đổi cặp khóa mới. Nếu

chứng thư đã được cập nhật thì hệ thống sẽ thông báo lại “Cập nhật thành công”.

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Hình 3.8. Giao diện cập nhật chứng thư số hết hạn

60

CA sẽ có một danh sách các chứng chỉ bị hủy bỏ (CRLs) trong đó chứa các

chứng thư bị thu hồi (vì một lý do nào đó: do hết hạn, do bị lộ khóa bí mật,…)

Hình 3.9. Giao diện kiểm tra chứng thư bị thu hồi

3.4. Ứng dụng chứng thƣ số sử dụng hệ thống PKI để bảo mật

3.4.1. Ứng dụng truyền tin an toàn

Ứng dụng truyền tin an toàn được xây dựng theo mô hình hoạt động như sau:

Hình 3.10. Giao diện chương trình ứng dụng truyền tin bảo mật

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

Ứng dụng truyền tin này có hai chức năng chính là: Bảo mật và không bảo mật.

61

Với ứng dụng truyền không bảo mật, khi chạy chương trình các socket lắng

nghe liên tục ở các cổng được thiết lập. Ví dụ: ở hình trên socket gửi dữ liệu qua

qua người gửi và nhận dữ liệu qua bên người nhận.

Với ứng dụng truyền tin bảo mật, cũng như trong ứng dụng truyền không bảo

mật, các socket cũng lắng nghe ở những cổng được thiết đặt. Nhưng với module

mật mã, trước khi dữ liệu được gửi đi thì nó được mã hoá bằng giải thuật RSA với

khoá công khai của người nhận (khoá này được lấy từ chứng thư số của người nhận

trong kho chứng thư số của hệ thống PKI) và khi nhận thông điệp dữ liệu này được

giải mã bởi giải thuật RSA với khoá bí mật của người nhận .

3.4.2.Ứng dụng xác thực người dùng và kiểm tra tính toàn vẹn

Sơ đồ hoạt động của ứng dụng xác thực người dùng sử dụng chứng thư số:

Hình 3.11. Sơ đồ hoạt động của ứng dụng xác thực và kiểm tra tính toàn vẹn sử

dụng chứng thư số

Người gửi A: dùng khóa bí mật của mình để “Ký số” (mã hóa) lên một mẫu

tin (thông điệp) (hoặc giá trị băm của thông điệp) bằng khóa công khai của mình và

gửi cho người nhận B.

Người nhận B: Sau khi nhận được mẫu tin và chữ ký của người gửi A. Đầu

tiên sẽ yêu cầu chứng thư số của người gửi từ kho chứa chứng thư, kiểm tra chứng

thư số, nếu hợp lệ thì tính giá trị băm của mẫu tin nhận được với cùng thuật toán

băm mà người gửi sử dụng, lấy khóa công khai của người gửi A từ chứng thư số

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

vừa kiểm tra tính hợp lệ để kiểm tra chữ ký bằng cách giải mã giá trị chữ ký lên bản

62

băm nhận được từ A và so sánh với giá trị băm vừa tính được từ mẫu tin nhận được.

Nếu bằng nhau thì có thể tin rằng thông điệp là đúng của người gửi A và thông điệp

cũng không bị sửa đổi.

3.5 Đánh giá kết quả thử nghiệm

Mục tiêu chính của chương trình là: Xây dựng một hệ thống PKI đơn giản.

Sau khi người dùng tiến hành thủ tục xin cấp chứng thư số thì hệ thống nếu thấy

hợp lệ sẽ sinh cặp khóa công khai, khóa bí mật và phát hành chứng thư cho người

dùng. Ngoài ra, để minh họa việc ứng dụng chứng thư số, Module liên lạc an toàn

cũng được xây dựng, Module này cho phép 2 người dùng có thể sử dụng chứng thư

số đã được phát hành để truyền tin bảo mật và đảm bảo tính xác thực.

Xây dựng chương trình tạo hệ thống PKI cấp phát chứng thư số tương đối thuận

lợi dựa chủ yếu vào các hàm các thuật toán hỗ trợ trong thư viện Cryptosys PKI.

Việc cài đặt nhằm mục đích cấp phát chứng thư số khoá công khai an toàn đến

người sử dụng cũng như là việc xác thực các chứng thư tránh giả mạo đạt hiệu quả.

Chương trình truyền tin được bảo mật, ứng dụng chứng thư số truyền các

mẫu tin ngắn thể hiện quá trình truyền thông an toàn giữa các user trong hệ thống sử

chứng thư số .

Những hạn chế của chƣơng trình:

 Về mặt đưa vào ứng dụng trong thực thế: Phải thiết lập khá nhiều những

tham số làm bất tiện cho người sử dụng. Ví dụ: Chương trình truyền tin phải thiết

lập các cổng nhân và cổng gửi cũng như IP của máy cần truyền thông điệp.

 Về mặt kỹ thuật: Tạo các trường trong chứng thư là chỉ mới là những trường

cơ bản nhất của một chứng thư số, chưa tạo ra được một chứng thư số thực sự áp

dụng vào những ứng dụng khác. Hệ thống PKI được xây dựng mới chỉ có một số

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

chức năng cơ bản như: Cấp phát/hủy bỏ, kiểm tra chứng thư

63

KẾT LUẬN

Những công việc đã thực hiện:

 Trình bày cơ sở lý thuyết về mật mã hóa thông tin:

Trình bày những khái niệm, thuật toán mật mã được sử dụng trong quá trình làm

chương trình.

Vấn đề về hệ thống PKI: Trình bày những thành phần chính của một hệ thống PKI.

Các dịch vụ của PKI bao gồm xác thực , toàn vẹn và bảo mật. Các kiến trúc của một

trung tâm chứng thực CA. Các hoạt động chính trong hệ thống PKI để cấp phát hay

hủy bỏ chứng thư số.

Các tiêu chuẩn PKCS, X.509: Trình bày các tiêu chuẩn quốc tế về khoá công khai và chứng

chỉ số được sử dụng để đảm bảo tính an toàn trong quá trình xây dựng trương trình.

Tìm hiểu về bộ thư viện Crptosys PKI : Các thuật toán hỗ trợ sử dụng trong chương

trình như mật mã đối xứng, mật mã công khai, hàm băm,… các hàm như RSA, mã hóa

3DES, sinh số ngẫu nhiên,…

 Xây dựng chương trình

Tạo 1 website mô phỏng hệ thống PKI cấp phát chứng thư số: dựa chủ yếu vào

các hàm các thuật toán hỗ trợ trong thư viện Cryptosys PKI được cài đặt nhằm mục

đích cấp phát chứng thư số khoá công khai an toàn đến người sử dụng cũng như là việc

xác thực các chứng thư tránh giả mạo.

Chương trình truyền tin bảo mật ứng dụng chứng thư số: Một ứng dụng truyền các

mẫu tin ngắn thể hiện quá trình truyền thông an toàn giữa các user trong hệ thống sử

chứng thư số .

Những hạn chế của chƣơng trình:

 Về mặt đưa vào ứng dụng trong thực thế: Phải thiết lập khá nhiều những tham

số làm bất tiện cho người sử dụng. Ví dụ: Chương trình truyền tin phải thiết lập các

cổng nhận và cổng gửi cũng như IP của máy cần truyền thông điệp.

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

 Về mặt kỹ thuật: Tạo các trường trong chứng thư là chỉ mới là những trường

64

cơ bản nhất của một chứng thư số, chưa tạo ra được một chứng thư số thực sự áp dụng

vào những ứng dụng khác. Hệ thống PKI được xây dựng mới chỉ có một số chức năng

cơ bản như: cấp phát/hủy bỏ, kiểm tra chứng thư

Hƣớng phát triển của chƣơng trình

 Hoàn thiện giao diện hệ thống Web cấp phát chứng thư, tiếp tục xây dựng một

số chức năng cho phù hợp với một CA theo chuẩnthông dụng trong thực tế.

 Xây dựng chương trình xuất ra các Certificate để phục vụ cho các ứng dụng

như: HTTPS hay VPN, mail … và nhiều lĩnh vực khác.

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

 Mở rộng CA nhằm mục đích liên kết với những hệ thống CA khác.

65

Tài liệu tham khảo

Tiếng Việt:

[1]. Nguyễn Bình, Hoàng Thu Phương – Cơ sở lý thuyết mật mã ,Giáo trình/ Học

viện kỹ thuật Mật Mã, Hà Nội,2006.

[2]. Lê Mỹ Tú, Trần Duy Lai - Chứng thực điện tử, Giáo trình/Học viện kỹ thuật

Mật Mã, Hà Nội, 2006.

[3]. Lê Quang Tùng - Tổng quan về hệ thống chứng thực điện tử PKI Trung tâm

chứng thực điện tử, 2011

Tiếng Anh:

[4]. Suranjan Choudhu - PKI Implementation And Design, tháng 3,năm 2002

[5]. YongLee, JeailLee, JooSeokSong - Design and implementation of wireless PKI

technology suitable, 2007

[6]. MS Press Windows Server 2010 PKI and Certificate Security

www.cryptosys.net/pki

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

[7]. Scott DormaScott Dorman - Teach Yourself Visual C# 2010 in 24 Hours,2010

66

PHỤ LỤC. CHƢƠNG TRÌNH MÔ PHỎNG HỆ THỐNG PKI

Phụ lục này trình bày về đoạn code chương trình cấp phát, kiểm tra, cập

nhật cũng như danh sách hủy bỏ chứng thư số.

Đầu tiên, khi người dùng yêu cầu cấp phát chứng thư số, CA sẽ sinh

cặp khóa công khai và khóa bí mật của User.CA sinh ra chứng thư số

Sau khi cấp chứng thư thành công, chứng thư sẽ tự động được lưu trong

kho, người dùng có thể tải chứng thư về sử dụng.

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

67

Khi hệ thống cấp phát chứng thư thành công, người dùng có thể tiến

hành kiểm tra xem chứng thư mình tải về có do đúng CA cấp hay không.

Khi chứng chỉ hết hạn, người dùng gửi yêu cầu đến CA xin cấp lại

khóa và ra hạn thêm cho chứng thư

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

68

CA cũng có một danh sách chứa các chứng thư số hết hạn bị thu hồi

do: cặp khóa bị lộ, hết hạn sử dụng,... người dùng kiểm tra tình trạng chứng

thư số của mình:

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn

69

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn