Md5

52
ĐẠI HC QUC GIA HÀ NI TRƯỜNG ĐẠI HC CÔNG NGHTrn Quang Thun NGHIÊN CU VÀ XÂY DNG HTNG KHÓA CÔNG KHAI KHOÁ LUN TT NGHIỆP ĐẠI HC HCHÍNH QUY Ngành : Công nghthông tin HÀ NỘI - 2010

Transcript of Md5

Page 1: Md5

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Trần Quang Thuận

NGHIÊN CỨU VÀ XÂY DỰNG HẠ TẦNG KHÓA

CÔNG KHAI

KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY

Ngành : Công nghệ thông tin

HÀ NỘI - 2010

Page 2: Md5

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Trần Quang Thuận

NGHIÊN CỨU VÀ XÂY DỰNG HẠ TẦNG KHÓA

CÔNG KHAI

KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY

Ngành : Công nghệ thông tin

Cán bộ hướng dẫn: PGS – TS.Hồ Sỹ Đàm

Cán bộ đồng hướng dẫn: TS.Lê Đức Phong

HÀ NỘI - 2010

Page 3: Md5

LỜI CẢM ƠN

Tôi xin gửi lời cảm ơn chân thành nhất tới PGS.TS Hồ Sĩ Đàm, TS. Lê Đức Phong.

Những người thầy đã cho tôi những định hướng và những ý kiến rất quý báu để tôi hoàn

thành được khóa luận tốt nghiệp này. Tôi xin tỏ lòng biết ơn sâu sắc tới các thầy cô, bạn

bè đã dìu dắt, giúp đỡ tôi tiến bộ trong suốt quá trình làm khóa luận tốt nghiệp. Xin cảm

ơn gia đình và bè bạn, những người luôn khuyến khích và giúp đỡ tôi trong mọi hoàn

cảnh khó khăn. Tôi xin cảm ơn bộ môn Truyền Thông và Mạng Máy Tính, khoa Công

Nghệ Thông Tin trường Đại Học Công Nghệ-Đại Học Quốc Gia Hà Nội đã hết sức tạo

điều kiện cho tôi trong quá trình học, làm và hoàn thành khóa luận này.

Page 4: Md5

M ỤC L ỤC

Mở Đầu ................................................................................................................................ 1

Chương 1 : Giới Thiệu......................................................................................................... 2

1.1. Tìm hiểu Mật mã học khoá công khai ...................................................................... 2

1.1.1. Mật mã học khoá công khai ................................................................................ 2

1.1.2. Ứng dụng ............................................................................................................ 4

1.2. Thuật toán và độ phức tạp thuật toán ....................................................................... 4

1.2.1. Thuật toán ........................................................................................................... 4

1.2.2. Phân tích thuật toán ............................................................................................. 4

1.3. Hạ tầng khóa công khai (PKI) .................................................................................. 5

1.3.1. PKI là gì .............................................................................................................. 5

1.3.2. Cở sở hạ tầng khóa công khai ............................................................................. 6

1.4. Một vài kiến trúc và công nghệ PKI hiện hành ........................................................ 7

1.4.1.Một số ứng dụng ..................................................................................................... 7

1.5. Mục đích của đề tài................................................................................................... 8

1.6. Đặt vần đề ? .............................................................................................................. 8

1.7. Các vấn đề sẽ giải quyết trong khóa luận ................................................................. 9

Chương 2 : Xây dựng hạ tầng khóa công khai(PKI), vấn đề cấp phát chứng thực số và

ứng dụng trong thương mại điện tử ................................................................................... 10

2.1. Hàm băm mật mã học ............................................................................................. 10

2.1.1. Hàm băm ........................................................................................................... 10

2.1.2. Hàm băm mật mã học ....................................................................................... 10

2.1.3. Đảm bảo tính toàn vẹn dữ liệu .......................................................................... 10

2.1.4. Một số hàm băm thông dụng ............................................................................ 11

2.2. Mã hóa thông tin ..................................................................................................... 13

2.3. Chữ ký số ................................................................................................................ 14

2.3.1. Chữ ký số .......................................................................................................... 14

2.3.2. Tạo và kiểm tra chữ ký số ................................................................................. 14

2.4. Chứng thực số ......................................................................................................... 20

2.5. Cấu trúc phân tầng của hệ thống PKI ..................................................................... 21

2.6. Cấp phát và xác thực chứng thực số ....................................................................... 22

2.6.1. Cấp phát chứng thực số ..................................................................................... 22

2.6.2. Xác thực chứng thực số .................................................................................... 23

2.7. Ứng dụng của hạ tầng khóa công khai và cấp phát chứng thực ............................. 24

2.7.1. Mã hóa .............................................................................................................. 24

2.7.2. Chống giả mạo .................................................................................................. 24

2.7.3. Xác thực ............................................................................................................ 24

2.7.4. Chống chối bỏ nguồn gốc ................................................................................. 25

2.7.5. Chữ ký điện tử................................................................................................... 25

Page 5: Md5

2.7.6. Bảo mật website ................................................................................................ 26

2.7.7. Đảm bảo phần mềm .......................................................................................... 26

2.8. OpenCA hệ thống hạ tầng khóa công khai trong thực tế ....................................... 26

2.8.1. Định nghĩa :....................................................................................................... 26

2.8.2. Đánh giá về hệ OpenCA ................................................................................... 27

Chương 3: Đặc tả một Platform PKI ................................................................................. 27

3.1. Ngôn ngữ lập trình .................................................................................................. 27

3.2. Thư viện số nguyên lớn .......................................................................................... 28

3.3. Một Platform PKI phải cung cấp đầy đủ các chức năng sau: ................................ 28

3.3.1. Cấp phát ............................................................................................................ 28

3.3.2. Chứng thực ........................................................................................................ 38

3.3.3. Toàn vẹn dữ liệu ............................................................................................... 38

3.3.4. Thu hồi và cấp phát lại chứng thực số .............................................................. 40

KẾT LUẬN ....................................................................................................................... 43

CÁC TÀI LIỆU THAM KHẢO ........................................................................................ 44

Page 6: Md5

TÓM TẮT KHÓA LUẬN

Khóa luận “Hạ tầng khóa công khai (PKI), vấn đề cấp phát chứng thực số và ứng

dụng trong thương mại điện tử”. Hạ tầng khóa công khai là một bộ khung cơ bản để xây

dựng mô hình an ninh, bảo mật trong thương mại điện tử. Tìm hiểu vai trò của chứng thực

số trong hạ tầng khóa công khai. Vai trò của chứng thực số trong các giao dịch trực tuyến.

Người sử dụng, ngoài hình thức bảo mật thông thường như mật khẩu, cũng phải dùng một

chứng thực số cá nhân để khẳng định danh tính của mình, xác nhận các hoạt động giao

dịch của mình với dịch vụ ngân hàng, thương mại điện tử, dao dịch chứng khoán... Chứng

thực số sẽ giúp nhà quản lý đảm bảo rằng khách hàng không thể chối cãi các giao dịch

của mình, khi họ đã dùng chứng thực số. Từ đó đặt ra các vấn đề quản lý (cấp phát,xác

thực) thu hồi và cấp phát lại chứng thực số.

Trong khóa luận tôi sẽ trình bày về các vấn đề chính xoay quanh vấn đề hạ tầng

khóa công khai (PKI). Phần đầu của khóa luận (chương 1) giới thiệu vấn đề và cách tiếp

cận giải quyết vấn đề sẽ trình bày khái quát về một vài khái niệm cơ bản về mật mã học

khóa công khai, hạ tầng khóa công khai ; các khái niệm cơ bản về thuật toán và lý thuyết

độ phức tạp; một vài công cụ nền tảng của mật mã học khóa công khai (mã hóa thông tin,

hàm băm, chữ ký số). Chương 2 của khóa luận sẽ làm rõ hơn các khái niệm, các vấn đề cơ

bản bên trong một hạ tầng khóa công khai (chứng thực số, các dịch vụ đăng ký, cấp phát,

xác thực, thu hồi, … khóa công khai); ứng dụng của hạ tầng khóa công khai trong giao

dịch điện tử ngày nay ; và một vài hệ thống hạ tầng khóa công khai trong thực tế. Chương

3 đặc tả một hạ tầng khóa công khai đơn giản và Kết Luận.

Page 7: Md5

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

PKI Public Key Infrastructure

CA Certificate Authority

RSA Rivest Shamir Adleman

DSA Digital Signature Algorithm

MD5 Message Digest 5

RA Registration Authority

SHA Secure Hash Algorithm

SHS Secure Hash Standard

H Hash function

RFC Request For Comments

Page 8: Md5

DANH MỤC HÌNH VẼ VÀ BẢNG

Hình 1.1: Cấp phát khóa riêng khóa công khai

Hình 1.2: Mã hóa thông tin

Hình 1.3: Tạo và xác thực chữ ký số

Hình 1.4 : Mô hình xây dựng PKI cơ bản

Bảng 1.5 : mô hình xử dụng xác thực

Hình 2.1 : Đặc điểm của các thuật toán băm SHA

Bảng 2.2 :So sánh thời gian tạo khóa, tạo chữ ký và xác nhận chữ ký của RSA với

DSA

Hình 2.3 : Thời gian xác nhận chữ ký của RSA và DSA

Hình 2.4 : Thời gian tạo chữ ký của RSA và DSA

Hình 2.5 : Thời gian xác nhận chữ ký của RSA và DSA

Hình 2.6 : Mô hình phân cấp

Hình 3.1 : Hàm tạo cặp khóa riêng và khóa công khai

Hình 3.2 : Mô phỏng tạo khóa

Hình 3.3 : Tạo chữ ký số

Hình 3.4 : Form nhập thông tin của client

Hình 3.5 : Thông báo trả về khi kết quả gửi thông tin thành công

Hình 3.6 : Xác thực khóa công khai và chữ ký số

Hình 3.7 : cấp phát chứng thực số

Hình 3.8 : Kiểm tra thông tin và cấp phát chứng thực số

Hình 3.9 : Xác thực chứng thực số

Hình 3.10 : Form tìm kiếm, sửa, xóa thông tin chứng thực số

Hình 3.11 : Kiểm tra và thu hồi chứng thực số hết hạn sử dụng

Page 9: Md5

1

Mở Đầu

Trong kỷ nguyên của công nghệ thông tin, tính phổ biến rộng rãi của Internet một

mặt đem lại nhiều ứng dụng tiện lợi, thú vị và dần thay thế các hoạt động truyền thống

trong thế giớ thực; mặt khác nó đặt ra các vấn đề về sự an toàn, tính tin cậy của những

giao dịch trên Internet. Cơ sở hạ tầng khóa công khai (PKI) có thể đáp ứng, giải quyết

những vấn đề cơ bản nhất cho những yêu cầu trên. Dựa trên các dịch vụ cơ bản về chứng

thực số và chữ ký số, một PKI chính là bộ khung của các chính sách, dịch vụ và phần

mềm mã hóa, đáp ứng nhu cầu bảo mật của người sử dụng.

Không chỉ nằm trong lĩnh vực thương mại điện tử, chứng thực số hiện còn được sử

dụng như một dạng chứng minh thư cá nhân. Tại các nước công nghệ phát triển, chứng

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, ra vào chung cư .v.v.

Với các đặc điểm nổi bật như không thể giả mạo, chứng thực nguồn gốc xuất xứ,

các quốc gia phát triển đều đã sử dụng chứng thực số như một bằng chứng pháp lý từ rất

sớm. Đây là yếu tố rất quan trọng để có thể phát triển thương mại điện tử, vì không ai

dám mạo hiểm với tiền của mình, khi họ chưa chắc chắn được rằng các hoạt động đó có

được đảm bảo, và có được pháp luật công nhận hay không.

Trong bản khóa luận tốt nghiệp này, tác giả xin trình bày tổng quát về cơ sở hạ tầng

khóa công khai và ứng dụng của nó trong thương mại điện tử. Qua đó trình bày một bản

platform mô phỏng hoạt động của một hạ tầng khóa công khai (PKI) cơ bản.

Page 10: Md5

2

Chương 1 : Giới Thiệu

1.1. Tìm hiểu Mật mã học khoá công khai

1.1.1. Mật mã học khoá công khai

1.1.1.1. Mật mã học khóa công khai (Phi đối xứng) là gì

- là một chuyên ngành của mật mã học cho phép người sử dụng trao đổi các

thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước đó.

Điều này được thực hiện bằng cách sử dụng một cặp khóa có quan hệ toán

học với nhau là khóa công khai và khóa cá nhân (hay khóa bí mật).

- Trong mật mã học khóa công khai, khóa cá nhân phải được giữ bí mật trong

khi khóa công khai được phổ biến công khai. Trong 2 khóa, một dùng để mã

hóa và khóa còn lại dùng để giải mã. Điều quan trọng đối với hệ thống là

không thể tìm ra khóa bí mật nếu chỉ biết khóa công khai.[1]

1.1.1.2. Mục đích của hệ thống mã hoá công khai :

- Cấp phát khoá riêng và khoá công khai :

Hình 1.1: Cấp phát khóa riêng khóa công khai

Việc cấp phát khoá công khai và khoá bí mật thông qua thuật toán

RSA (phổ biến). Thuật toán RSA tạo ra cặp khoá bằng các phương

thức toán học từ 2 số nguyên tố bất kỳ đủ lớn.

Page 11: Md5

3

- Mã hoá :

Hình 1.2: Mã hóa thông tin

Bob mã hóa thông tin gửi cho Alice bằng khóa công khai của

Alice. Alice nhận được tin nhắn từ Bob kiểm tra tin nhắn và giải

mã bằng khóa bí mật của Alice.

- Tạo và xác thực chữ ký số :

Hình 1.3: Tạo và xác thực chữ ký số

S = H(m)^d mod n (Tạo chữ kí số)

Cho phép kiểm tra một văn bản có phải đã được tạo với một khóa

bí mật nào đó hay không.

Tạo chữ kí số bằng khóa bí mật của Alice.

Và ký vào tin nhắn Alive gửi cho Bob

Bob kiểm tra chữ ký số bằng khóa công khai của Alice:

Page 12: Md5

4

S^e mod n =H(m) với H(m) là giá trị sau khi băm tin nhắn Alice

gửi cho Bob. Chữ ký số đúng đắn đồng nghĩa với việc các thông tin

Alice gửi bob là đúng đắn.

1.1.2. Ứng dụng

- Ứng dụng rõ ràng nhất của mật mã hóa khóa công khai là trong lĩnh vực bảo mật,

an toàn thông tin: Một văn bản được mã hóa bằng khóa công khai của một

người sử dụng thì chỉ có thể giải mã với khóa bí mật của người đó.Các thuật toán

tạo chữ ký số khóa công khai cho phép định danh một tin nhắn hay 1 tài liệu .

Một người sử dụng có thể mã hóa văn bản với khóa bí mật của mình. Nếu một

người khác có thể giải mã với khóa công khai của người gửi thì có thể tin rằng

văn bản thực sự xuất phát từ người gắn với khóa công khai đó (Đây là nguyên lý

sinh & xác thực chữ ký số, người gửi sử dụng khóa bí mật của mình để sinh ra 1

chữ ký số cho 1 tin nhắn, tài liệu. Bên nhận có thể xác thực tính đúng đắn của

chữ ký số đó nhờ vào khóa công khai của người gửi).Các đặc điểm trên còn có

ích cho nhiều ứng dụng khác như: tiền điện tử, thỏa thuận khóa... Các vấn đề và

mục đích của đề tài.

1.2. Thuật toán và độ phức tạp thuật toán

1.2.1. Thuật toán

- Thuật toán được hiểu là sự đặc tả chính xác của một dãy các bước có thể được

thực hiện một cách máy móc để giải quyết một vấn đề. Cần nhấn mạnh rằng, mỗi

thuật toán có một dữ liệu vào (Input) và dữ liệu ra (Output); khi thực hiện thuật

toán (thực hiện các bước đã mô tả) , thuật toán cần cho ra các kiểu dữ liệu ra

tương ứng với các dữ liệu vào.[2]

1.2.2. Phân tích thuật toán

1.2.2.1. Tính hiệu quả của thuật toán

- Khi giải một vấn đề, chúng ta cần chọn trong số các thuật toán, một thuật toán

mà chúng ta cho là “tốt” nhất. Cơ sở đánh chọn lựa thuật toán :

Thuật toán đơn giản, dễ hiểu, dễ cài đặt(dễ viết chương trình)

Page 13: Md5

5

Thuật toán sử dụng tiết kiệm nhất các nguồn tài nguyên của máy tính và

đặc biệt chạy nhanh nhất có thể được.

- Tính hiệu quả của thuật toán bao gồm 2 nhân tố cơ bản :

Dung lượng không gian nhớ cần thiết để lưu giữ các dữ liệu vào, các kết

quả tính toán trung gian và các kết quả của thuật toán

Thời gian cần thiết để thực hiện thuật toán(hay thời gian chạy) [3]

1.2.2.2. Đánh giá thời gian thực hiện thuật toán

- Thời gian chạy chương trình phụ thuộc vào các nhân tố chính sau:

Các dữ liệu vào

Chương trình dịch để chuyển chương trình nguồn thành mã máy.

Tốc độ thực hiện của các phép toán của máy tính được sử dụng để chạy

chương trình.

- Giả sử T(n) là thời gian thực hiện thuật toán và f(n) là hàm xác định

dương.T(n)=O(f(n)) nếu các hằng số dương c và n0 sao cho T(n) c.g(n)

với mọi n>= n 0 .

1.3. Hạ tầng khóa công khai (PKI)

1.3.1. PKI là gì

- Để hiểu rõ về việc xây dựng cơ PKI và vần đề cấp phát chứng thực số có vai trò

và ứng dụng như thế nào trong thương mại điên tử. Chúng ta sẽ đi phân tích từng

khía cạnh xung quanh PKI.

- Trước tiên chúng hiểu thế nào là PKI và tính cấp thiết của PKI hiện nay :

PKI : viết tắt của Public Key Infrastructure tức là hạ tầng cơ sở khóa công

khai. Là một cơ chế để cho một bên thứ 3 (thường là nhà cung cấp chứng

thực số) cung cấp và xác thực định danh các bên tham gia vào quá trình trao

đổi thông tin. Cơ chế này cũng cho phép gán cho mỗi người sử dụng trong

hệ thống một cặp khóa công khai/khóa bí mật.

Trong kỷ nguyên bùng nổ của công nghệ thông tin, mọi giao dịch từ xa có

thể thông qua internet. Tuy nhiên, mặt khác khó mà bảo đảm rằng những

giao dịch trên Internet luôn an toàn. Cơ sở hạ tầng khóa công khai (PKI) đã

đáp ứng những yêu cầu cấp thiết đó. Dựa trên cách sử dụng của chìa khóa

mật mã công cộng và chữ ký điện tử, một PKI chính là bộ khung của các

Page 14: Md5

6

chính sách, dịch vụ và phần mềm mã hóa, đáp ứng nhu cầu bảo mật của

người sử dụng.

1.3.2. Cở sở hạ tầng khóa công khai

Hình 1.4 : Mô hình xây dựng PKI cơ bản

- PKI cung cấp một cặp chìa khóa, trong đó có một chìa là chìa khóa công khai

(Public key) để có thể sử dụng dịch vụ, chìa còn lại là chìa khóa bí mật (Private

key) mà người sử dụng phải giữ bí mật. Hai chìa khóa này có liên quan mật thiết

đến nhau, sao cho một thông điệp được mã hóa bởi một chìa khóa mật mã công

khai thì chỉ giải mã được bởi một chìa khóa bí mật tương ứng.

- Ví dụ về mô hình xử dụng xác thực :

Giả sử có 2 người dùng Bob và Alice muốn chuyển thư điện tử cho nhau để đảm

bảo tính xác thực và bảo mật họ dùng 1 phần mềm PKI

Hành động Trạng thái của hệ thống PKI

Bob muốn chuyển một thư điện tử đến

cho Alice, với yêu cầu rằng giao dịch

phải chứng minh được chính anh đã gởi

nó đi và nội dung bức thư không bị thay

đổi.

Phần mềm PKI dùng chìa khóa cá nhân

của Bob tạo ra một chữ ký điện tử cho

bức thư

Page 15: Md5

7

Bob muốn chắc chắn rằng không ai ngoài

Alice đọc được bức thư này

Phần mềm PKI của Bob dùng chìa khóa

công cộng của Alice để mã hóa thông

điệp của Bob.

Alice muốn đọc thư do Bob gởi Phần mềm PKI dùng chìa khóa cá nhân

của Alice để để giải mã thông điệp.

Alice muốn kiểm chứng rằng chính Bob

đã gởi đi thông điệp đó và nội dung

thông điệp không bị chỉnh sửa.

Phần mềm PKI của Alice dùng chìa khóa

công cộng của Bob để kiểm chứng chữ

ký điện tử của anh ta.

Bảng 1.5 : Mô hình sử dụng xác thực

1.4. Một vài kiến trúc và công nghệ PKI hiện hành

1.4.1. Một số ứng dụng

- Mục tiêu chính của PKI là cung cấp khóa công khai và xác định mối liên hệ giữa

khóa và định dạng người dùng. Nhờ vậy người dùng có thể sử dụng trong một số

ứng dụng như:

Mã hoá Email hoặc xác thực người gửi Email (OpenPGP hay S/MIME).

Mã hóa hoặc nhận thực văn bản (Các tiêu chuẩn Chữ ký XML* hoặc mã

hoá XML* khi văn bản được thể hiện dưới dạng XML).

Xác thực người dùng ứng dụng (Đăng nhập bằng thẻ thông minh -

smartcard, nhận thực người dùng trong SSL).

Các giao thức truyền thông an toàn dùng kỹ thuật Bootstrapping (IKE,

SSL): trao đổi khóa bằng khóa bất đối xứng, còn mã hóa bằng khóa đối

xứng.

1.4.2. Một số hệ thống PKI

- Dưới đây là danh sách một số hệ thống PKI, trong đó một số nhà cung cấp chứng

thực số hàng đầu (ví dụ VeriSign) không được liệt kê vì các phần mềm của họ

không được công bố công khai :

Hệ thống quản lý chứng thực Red Hat

Computer Associate eTrust PKI

Page 16: Md5

8

Microsoft

OpenCA (Một mô hình PKI mã nguồn mở)

RSA Security

IDX-PKI

Simple CA

1.5. Mục đích của đề tài

- Một vài năm trở lại đây PKI là 1 chủ đề nóng đối với các doanh nghiệp lớn. Ở Việt

Nam đây vấn là một đề tài khá mới mẻ. Do vậy tìm hiểu và xây dựng hạ tầng cơ sở

xác thực khóa công khai(PKI) là một cách tiếp cận cho một nền tảng mới. Từ đó nêu

rõ vai trò và ứng dụng của hạ tầng khóa công khai trong thương mại điện tử.

- Tìm hiểu về các thuật toán(sinh số ngẫu nhiên trong việc tạo khóa, hàm băm, mã

hóa, tạo chữ ký số...)

1.6. Đặt vần đề ?

- Để xây dựng một cơ sở hạ tầng chúng ta phải giải quyết sơ bộ những vấn đề sau

đây :

Làm sao để cấp phát khóa công khai và khóa bí mật cho từng người.

Vấn đề đăng ký khóa công khai với một CA

Vấn đề thu hồi/cấp phát lại khóa công khai

Vấn đề kiểm chứng khóa công khai

Làm sao từ khóa công khai của 1 người hệ thống PKI phải xác định xem chữ

ký số có phải của người đó hay không.

Vấn đề toàn vẹn dữ liệu. Hệ thống PKI phải xác định xem liệu tin nhắn gửi đi

giữa client và server có bị thay đổi hay không?

Một thông điệp được mã hóa bởi một chìa khóa mật mã công khai thì chỉ giải

mã được bởi một chìa khóa bí mật tương ứng.

Khóa của bên thứ 3 bên thẩm định sẽ do cấp hay tổ chức nào giám đinh. Hay

phải có cơ chế nào để chống giả mạo bên chứng thực.

Các Vấn đề liên quan đến chứng thực số cấp phát, xác thực và quản lý tại

server ra sao.

Page 17: Md5

9

1.7. Các vấn đề sẽ giải quyết trong khóa luận

- Với những yêu cầu về một hệ thống PKI như trên chúng ta phải xây dựng bài toán

như thế nào.Chương trình thiết kế phải bao gồm 3 đối tượng :

Server :

Cho phép người dùng trong hệ thống đăng ký khóa công khai. Cấp phát 1

chứng thực số (certificat) cho người dùng đó nếu khóa công khai hợp lệ

Quản lý khóa công khai, Thu hồi/cấp phát lại chứng thực số

Cho phép bên thứ 3 kiểm tra tính đúng đắn của 1 chứng thực số bất kỳ

User :

Hệ thống PKI cấp phát một khóa công khai cho user và khóa bí mật (Khóa

riêng) do PKI client cấp phát và user phải giữ bí mật.

Tạo chữ ký số cho từng văn bản ngẫu nhiên.

Bên thứ 3 là bên thẩm định và đánh giá :

Cấp phát và bảo mật Khóa riêng và khóa công khai của CA.

Page 18: Md5

10

Chương 2 : Xây dựng hạ tầng khóa công khai(PKI), vấn đề

cấp phát chứng thực số và ứng dụng trong thương mại điện

tử

2.1. Hàm băm mật mã học

2.1.1. Hàm băm

- Hàm băm (tiếng Anh: hash function) là hàm sinh ra các giá trị băm tương ứng

với mỗi khối dữ liệu (có thể là một chuỗi kí tự, một đoạn tin nhắn...). Giá trị băm

đóng vai trò gần như một khóa để phân biệt các khối dữ liệu, tuy nhiên, người ta

chấp nhận hiện tượng trùng khóa hay còn gọi là đụng độ và cố gắng cải thiện giải

thuật để giảm thiểu sự đụng độ đó. Hàm băm thường được dùng trong bảng băm

nhằm giảm chi phí tính toán khi tìm một khối dữ liệu trong một tập hợp (nhờ việc

so sánh các giá trị băm nhanh hơn việc so sánh những khối dữ liệu có kích thước

lớn).

2.1.2. Hàm băm mật mã học

- Trong ngành mật mã học, một hàm băm mật mã học (tiếng Anh: Cryptographic

hash function) là một hàm băm với một số tính chất bảo mật nhất định để phù

hợp việc sử dụng trong nhiều ứng dụng bảo mật thông tin đa dạng, chẳng hạn

như chứng thực (authentication) và kiểm tra tính nguyên vẹn của thông điệp

(message integrity). Một hàm băm nhận đầu vào là một xâu ký tự dài (hay thông

điệp) có độ dài tùy ý và tạo ra kết quả là một xâu ký tự có độ dài cố định, đôi khi

được gọi là tóm tắt thông điệp (message digest) hoặc chữ ký số (digital

fingerprint).[4]

2.1.3. Đảm bảo tính toàn vẹn dữ liệu

- Hàm băm mật mã học là hàm bam và có tính chất là hàm 1 chiều. Từ khối dữ

liệu hay giá trị băm đầu vào chỉ có thể đưa ra 1 giá trị băm duy nhất. Như chúng

ta đã biết đối với tính chất của hàm 1 chiều. Một người nào đó dù bắt được giá trị

băm họ cũng không thể suy ngược lại giá trị, đoạn tin nhắn băm khởi điểm.

Page 19: Md5

11

- Hàm băm thường được dùng trong bảng băm nhằm giảm chi phí tính toán khi tìm

một khối dữ liệu trong một tập hợp. Giá trị băm đóng vai trò gần như một khóa

để phân biệt các khối dữ liệu

- Giá trị đầu vào(tin nhắn, dữ liệu...) bị thay đổi tương ứng giá trị băm cũng bị thay

đổi. Do vậy nếu 1 kẻ tấn công phá hoại, chỉnh sửa dữ liệu thì server có thể biết

ngay lập tức.

2.1.4. Một số hàm băm thông dụng

2.1.4.1. Thuật toán hàm băm MD5

a. Thuật toán hàm băm MD5

- MD5 (Message-Digest algorithm 5) là một hàm băm mật mã được sử dụng

phổ biến, được thiết kể bởi Giáo sư Ronald L. Rivest tại trường MIT vào năm

1991 để thay thế cho hàm băm trước đó là MD4 (1990). Là một chuẩn

Internet (RFC 1321), MD5 đã được dùng trong nhiều ứng dụng bảo mật và

cũng được dùng phổ biến để kiểm tra tính toàn vẹn của tập tin. Cũng như các

hàm băm khác như MD4 và SHS (Secure Hash Standard), MD5 là phương

pháp có ưu điểm tốc độ xử lý rất nhanh, thích hợp với các thông điệp dài và

cho ra giá trị băm dài 128 bit.

- Trong MD5, thông điệp ban đầu X sẽ được mở rộng thành dãy bit X có độ dài

là bội của 512. Dãy bit X gồm các thành phần được sắp thứ tự như sau: Dãy

bit X ban đầu, một bit 1, dãy d bit 0 (d được tính sao cho dãy X cuối cùng là

bội của 512), dãy 64 bit l biểu diễn chiều dài của thông điệp. Đơn vị xử lý

trong MD5 là các từ 32-bit, nên dãy bit X ở trên sẽ được biểu diễn thành dãy

các từ X[i] 32-bit sau:

X=X[0] X[1] X[2] …X[N−1] , với N là bội của 16.[5]

b. Phương pháp MD5 có những ưu điểm sau so với phương pháp MD4

- Thay vì có 3 chu kỳ biến đổi như trong MD4, MD5 bổ sung thêm chu kỳ thứ

4 để tăng mức độ an toàn.

- Trong mỗi thao tác của từng chu kỳ, MD5 sử dụng hằng số ti phân biệt, trong

khi MD4 sử dụng hằng số chung cho mọi thao tác trong cùng chu kỳ biến đổi.

- Hàm G ở chu kỳ 2 của MD4: G(X,Y,Z) = ((XZ) (XY) (Y Z )) được

thay thế bằng G(X,Y,Z) = (XZ) (Y ( Z )) để giảm tính đối xứng.

Page 20: Md5

12

- Mỗi bước biến đổi trong từng chu kỳ chịu ảnh hưởng kết quả của bước biến

đổi trước, vì vậy làm tăng nhanh tốc độ của hiệu ứng lan truyền (avalanche).

- Các hệ số dịch chuyển xoay vòng trong mỗi chu kỳ được tối ưu hóa nhằm

tăng tốc độ hiệu ứng lan truyền. Ngoài ra, mỗi chu kỳ sử dụng 4 hệ số dịch

chuyển khác nhau.

- Lý do MD5 được thiết kế thay thế cho MD4 là vì các phân tích chỉ ra rằng

phương pháp MD4 có vẻ không an toàn. Den Boer và Bosselaers đã chỉ ra các

điểm yếu trong MD4 trong một bài báo được đăng vào năm 1991và một tấn

công xung đột đầu tiên được tìm thấy bởi Han Dobbertin vào năm 1996 .

- Tuy nhiên, các nỗ lực tấn công, phân tích của các nhà nghiên cứu cho thấy

MD5 cũng không còn an toàn và cần được thay thế bằng một thuật toán băm

khác như các công bố của Den Boer và Bosselaers năm 1993; của Hans

Dobbertin năm 1996; của nhóm tác giả Xiaoyun Wang, Dengguo Feng,

Xuejia Lai, và Hongbo ngày 19/8/2004; của Arjen Lenstra, Xiaoyun Wang,

và Benne de Weger ngày 1/3/2005; và của Vlastimil Klima, …

2.1.4.2. Chuẩn băm an toàn SHS

- SHS (Secure Hash Standard) là chuẩn gồm tập hợp các thuật toán băm mật

mã an toàn (Secure Hash Algorithm – SHA) như SHA-1, SHA-224, SHA-

256, SHA-384, SHA-512 do NIST 2 và NSA 3 xây dựng.

- Phương pháp SHA-1 (cũng như SHA-0) được xây dựng trên cùng cơ sở với

phương pháp MD4 và MD5. Tuy nhiên, phương pháp SHA-1 sử dụng trên hệ

thống Big-endian 5 thay vì Little-endian 6 như phương pháp MD4 và MD5.

Ngoài ra, hàm băm SHA-1 tạo ra thông điệp rút gọn kết quả có độ dài 160 bit

nên thường được sử dụng

- Phương pháp SHA-1 giống với MD5 (cải tiến từ MD4) nhưng thông điệp tóm

tắt được tạo ra có độ dài 160 bit. Dưới đây là một số điểm so sánh giữa MD5

và SHA-1:

Giống như MD5, SHA-1 cũng thêm chu kỳ thứ 4 để tăng mức độ an

toàn cho thuật toán. Tuy nhiên, chu kỳ 4 của SHA-1 sử dụng lại hàm f

của chu kỳ thứ 2.

Page 21: Md5

13

Trong SHA-1, 20 bước biến đổi trong cùng một chu kỳ sử dụng cùng

một hàng số K[t] . Trong khi đó, mỗi bước biến đổi trong cùng một chu

kỳ của MD5 sử dụng các hằng số khác nhau.

So với MD4, hàm G trong MD5 được thay thế thành hàm mới để làm

giảm tính đối xứng. Trong khi SHA-1, hàm G trong SHA-1 vẫn giữ lại

hàm G của MD4.

Cả MD5 và SHA-1, mỗi bước biến đổi trong từng chu kỳ chịu ảnh

hưởng kết quả của biến đổi trước, vì vậy làm tăng nhanh tốc độ của hiệu

ứng lan truyền.

Hình 2.1: Đặc điểm của các thuật toán băm SHA

2.2. Mã hóa thông tin

- Có rất nhiều thông tin mà chúng ta không muốn người khác biết khi gửi đi như:

thông tin về Credit-Card, thông tin về kinh doanh của công ty, thông tin về tài khoản

cá nhân, thông tin về cá nhân như số chứng minh thư, số thẻ...

- Các thông tin bí mật được cung cấp cho các máy tính quan mạng Internet bằng nhiều

phương thức khác nhau ví dụ : Một cách bảo mật đơn giản nhưng minh bạch

nhất là lưu các thông tin bí mật trên các bộ nhớ có thể xoá được (Removable

Storage) như đĩa mềm. Tuy nhiên dạng bảo mật phổ biến nhất vẫn là dựa vào quá

trình mã hoá dữ liệu (Encryption).

- Các hệ thống mã hoá trong máy tính phổ biến nhất thuộc một trong hai loại sau:

Mã hoá với khoá đối xứng (Symmetric-key Encryption) : Trong phương pháp

mã hoá với khoá đối xứng, mỗi máy tính có một khoá bí mật (dạng mã) dùng

Page 22: Md5

14

để mã hoá các gói thông tin trước khi chúng được gửi qua mạng tới các máy

tính khác. Phương pháp mã hoá với khoá đối xứng đòi hỏi người sử dụng phải

xác định được những máy tính nào đang liên lạc trao đổi thông tin với nhau để

cài đặt khoá này trên mỗi máy.

Mã hoá với khoá công khai (Public-key Encryption).[6]

2.3. Chữ ký số

2.3.1. Chữ ký số

- Chữ ký số (Digital Signature) chỉ là tập con của chữ ký điện tử. Chữ ký số là

chữ ký điện tử dựa trên kỹ thuật mã hóa với khóa công khai, trong đó, mỗi người

có một cặp khóa (một khóa bí mật và một khóa công khai). Khóa bí mật không

bao giờ được công bố, trong khi đó, khóa công khai được tự do sử dụng. Để trao

đổi thông điệp bí mật, người gửi sử dụng khóa công khai của người nhận để mã

hóa thông điệp gửi, sau đó, người nhận sẽ sử dụng khóa bí mật tương ứng của

mình để giải mã thông điệp.

- Chữ ký điện tử là thông tin được mã hoá bằng Khoá riêng của người gửi, được

gửi kèm theo văn bản nhằm đảm bảo cho người nhận định danh, xác thực đúng

nguồn gốc và tính toàn vẹn của tài liệu nhận được. Chữ ký điện tử thể hiện văn

bản gửi đi là đã được ký bởi chính người sở hữu một Khoá riêng tương ứng với

một Chứng chỉ điện tử nào đó.”

- Chữ ký số khóa công khai (hay hạ tầng khóa công khai) là mô hình sử dụng các

kỹ thuật mật mã để gắn với mỗi người sử dụng một cặp khóa công khai - bí mật

và qua đó có thể ký các văn bản điện tử cũng như trao đổi các thông tin mật.

Khóa công khai thường được phân phối thông qua chứng thực khóa công khai.

Quá trình sử dụng chữ ký số bao gồm 2 quá trình: tạo chữ ký và kiểm tra chữ ký.

[7]

2.3.2. Tạo và kiểm tra chữ ký số

2.3.2.1. Các thuật toán chữ ký số thông dụng - Chữ ký số giúp xác định được người tạo ra hay chịu trách nhiệm đối với một

thông điệp được ký. Một phương pháp chữ ký số phải bao gồm ít nhất 3 thuật

toán chính, đó là thuật toán dùng để tạo khóa, thuật toán dùng để tạo ra chữ

ký số và thuật toán tương ứng để xác nhận chữ ký số.

Page 23: Md5

15

2.3.2.2. Thuật toán chữ ký số RSA

- Phương pháp chữ ký số RSA được xây dựng dựa trên thuật toán mã hóa khóa

công khai RSA. Để tạo một cặp khóa, RSA thực hiện các bước sau:

Chọn 2 số nguyên tố lớn ngẫu nhiên p, q. Nhằm có sự an toàn tối đa

nên chọn p và q có độ dài bằng nhau.

Tính n=pq và φ=(p−1)(q−1).

Chọn ngẫu nhiên một số nguyên e (1<e<φ) sao cho gcd(e, φ)=1 với

gcd là ước số chung lớn nhất.

Tính: d=e−1 mod φ.

- Kết quả là ta có được cặp khóa: khóa công khai (n,e) và khóa bí mật (n,d).

Hai người sẽ sử dụng chung một hàm băm ℋ an toàn trước hiện tượng xung

đột. Để ký một thông điệp m, người ký thực hiện các bước sau:

Dùng hàm băm ℋ để băm thông điệp m: h=ℋ(m).

Tạo chữ ký số sử dụng khóa bí mật (n,d) để tính:

s=h d mod n.

- Chữ ký của m là s và được gửi kèm với thông điệp m đến người nhận. Để xác

nhận chữ ký, người nhận thực hiện các bước sau:

Sử dụng khóa công khai (n,e) của người ký để giải mã chữ ký:

h=s e mod n.

Sử dụng cùng hàm băm ℋ với người ký để băm thông điệp m:

h′=H(m).

Chấp nhận chữ ký nếu h′=h. Ngược lại từ chối chữ ký.

2.3.2.3. Thuật toán chữ ký số DSA

- Thuật toán chữ ký số DSA (Digital Signature Algorithm) được đề nghị bởi

NIST vào tháng 8/1991 để sử dụng trong chuẩn chữ ký số DSS (Digital

Signature Standard), được chỉ ra trong FIPS 186, được chấp nhận năm 1993.

Một sửa đổi nhỏ được đưa ra ngày năm 1996 trong FIPS 186-1, chuẩn được

mở rộng hơn năm 2000, được xem như xem như FIPS 186-2. Việc tạo khóa

gồm hai bước. Bước thứ nhất là lựa chọn các tham số cho thuật toán được

chia sẻ giữa các người sử dụng khác nhau trong cùng hệ thống:

Page 24: Md5

16

Chọn một hàm băm mã hóa ℋ. Trong DSS chuẩn ℋ luôn là SHA-1,

nhưng các hàm băm tốt hơn trong nhóm SHA cũng đang được sử dụng.

Đôi khi đầu ra của một thuật toán băm mới hơn bị rút ngắn kích thước

so với các thuật toán băm mới cũ để tương tích với cặp khóa hiện có.

Chọn kích thước khóa L. Đây là thước đo chính quyết định sức mạnh

mã hóa của khóa. DSS chuẩn ràng buộc L là bội số của 64 và

512≤L≤1024. Sau đó, FIPS 186-2 xác định L luôn là 1024. Không lâu

sau, NIST 800-57 đề nghị độ dài khóa là 2048 (hoặc 3072) để thời gian

an toàn đến năm 2010 (hoặc 2030), sử dụng tương ứng với các giá trị

băm và q dài hơn. Bản thảo FIPS 186-3 cũng tính đến các hàm băm

sau này và các khóa dài hơn.

Chọn một số nguyên tố q cùng số bit với đầu ra của ℋ.

Chọn một số nguyên tố p độ dài L bit sao cho p–1 là bội của q. Tức là

p=qz–1 với số nguyên z nào đó.

Chọn g = h qp /)1( mod p với h bất kỳ (1<h<p–1), và chọn lại nếu kết

quả là 1. Hầu hết cách chọn h đều nhận được g có thể sử dụng, thông

thường chọn h=2.

- Các tham số thuật toán (p,q,g) có thể chia sẻ giữa những người khác nhau

trong hệ thống. Bước thứ hai tính các khóa bí mật và khóa công khai của từng

người :

Chọn x ngẫu nhiên sao cho 0<x<q.

Tính y=g x mod p.

Khóa công khai là (p,q,g,y), khóa bí mật là x.

- Phiên bản FIPS 186-3 sắp tới sử dụng SHA-224/256/384/512 là các hàm băm,

kích thước của q là 224 (hoặc 256 bit), và L bằng 2048 (hoặc 3072).

- Để ký một thông điệp m, người ký thực hiện các bước sau:

Phát sinh một số ngẫu nhiêu k (0<k<q) cho mỗi thông điệp.

Tính r=(g k mod p) mod q.

Tính s = k 1 (ℋ(m) + xr)) mod q.

Tính toán lại chữ ký trong trường hợp không chắc chắn r=0 hoặc s=0.

Page 25: Md5

17

Chữ ký là (r,s).

- Để xác nhận chữ ký, người nhận thực hiện các bước sau:

Loại bỏ chữ ký nếu 0<r<q hoặc 0<s<q không thỏa mãn.

Tính w=s 1 mod q.

Tính u 1 =(ℋ(m)×w) mod q.

Tính u 2 =(r×w) mod q.

Tính v=( (g 1u ×y 2u )mod p) mod q

Chữ ký có hiệu lực nếu v=r.

- Tính đúng đắn của giải thuật được chứng minh như sau:

Đầu tiên, nếu g = hqp /)1( mod p suy ra gp=h 1p −1=1 (mod p) theo định

lý Fermat nhỏ. Bởi vì g>1 và q là số nguyên tố nên g có bậc q.

Người ký tính s = k 1 (ℋ(m) + xr)) mod q.

Như vậy k=ℋ(m)s 1 +xrs 1 =ℋ(m)w+xrw (mod q).

Bởi vì g có bậc q nên ta có:

g k =g wmH )( .g xrw =g wmH )( y rw =g 1u y 2u (mod p).

Cuối cùng, tính đúng đắn của DSA suy ra từ:

r= (g k mod p) mod q= (g 1u y 2u mod p) mod q=v.

- Phương pháp DSA đã giải quyết vấn đề này bằng cách sử dụng chữ ký 320 bit

cho văn bản 160 bit với các phép tính được thực hiện trên tập con có 2160

phần tử với p là số nguyên tố 512 bit.

2.3.2.4. Kết quả thử nghiệm và nhận xét - So sánh RSA và DSA

Để so sánh tốc độ của hai thuật toán chữ ký số RSA và DSA, Thử

nghiệm 2.2 dưới đây đã được tiến hành và ghi nhận.

Thử nghiệm 2.2: DSS chuẩn ràng buộc độ dài khóa L là bội số của 64

và 512≤L≤1024 và để an toàn lâu dài độ dài khóa L được đề nghị là

2048 hoặc 3072. Do đó độ dài khóa được thử nghiệm cho cả RSA và

DSA là 576, 640, 704, 768, 832, 896, 960, 1024, 2048, 3072 (bit). Ứng

Page 26: Md5

18

với mỗi độ dài khóa, lần lượt cho cả RSA và DSA phát sinh khóa, ký

văn bản ngẫu nhiên (kích thước 2 MB) và kiểm tra chữ ký tạo được.

Để thuận tiện so sánh, hàm băm mật mã SHA-1 được chọn để sử dụng

cho cả RSA và DSA. Thử nghiệm được lặp lại 50.000 lần. Kết quả

nhận được như sau:

Bảng 2.2 So sánh thời gian tạo khóa, tạo chữ ký và xác nhận chữ ký của RSA

với DSA

Hình 2.3 : Thời gian tạo khóa của RSA và DSA

Kích

thước

(bit)

Tạo khóa (giây)

Tạo chữ ký (giây)

Xác nhận chữ ký (giây)

RSA

DSA

DSA/

RSA

RSA

DSA

RSA/

DSA

RSA

DSA

RSA/

DSA

512 0,0408 0,5676 13,93 0,0351 0,0011 32,60 0,0320 0,0017 19,32

576 0,0568 0,8030 14,14 0,0361 0,0013 27,24 0,0321 0,0022 14,60

640 0,0757 1,2464 16,47 0,0371 0,0015 24,53 0,0319 0,0025 12,57

704 0,0994 1,7948 18,06 0,0387 0,0019 20,25 0,0320 0,0031 10,16

768 0,1278 2,3668 18,52 0,0408 0,0016 25,29 0,0321 0,0040 7,94

832 0,1609 3,0526 18,97 0,0428 0,0021 20,31 0,0322 0,0044 7,34

896 0,2026 4,2369 20,92 0,0454 0,0027 16,58 0,0321 0,0050 6,36

960 0,2446 5,4622 22,33 0,0480 0,0026 18,45 0,0321 0,0061 5,29

1024 0,2734 7,1210 26,05 0,0515 0,0035 14,86 0,0318 0,0068 4,69

2048 2,4876 103,1124 41,45 0,1749 0,0124 14,16 0,0325 0,0240 1,35

3072 11,1882 508,2395 45,43 0,5056 0,0278 18,19 0,0341 0,0539 0,63

Page 27: Md5

19

Kết quả Thử nghiệm 2.5 cho thấy tốc độ tạo khóa của RSA nhanh hơn

rất nhiều so với DSA và khi kích thước khóa tăng lên thì tỷ lệ này ngày

càng gia tăng. Hơn nữa, khi tăng kích thước L của DSA và tương ứng

với các hàm băm SHA có đầu ra lớn hơn thì DSA sẽ còn chậm hơn rất

nhiều.

Hình 2.4 : Thời gian tạo chữ ký của RSA và DSA

Kết quả Thử nghiệm 2.2 cho thấy tốc độ tạo chữ ký của RSA chậm

hơn DSA nhưng tỷ lệ này có xu hướng giảm khi kích thước khóa tăng

lên. Nguyên nhân là do khi số mũ khóa công khai e cố định thì số mũ

khóa bí mật d sẽ tăng khi kích thước n tăng. Mặt khác, phép tính chiếm

thời gian nhiều nhất của quy trình ký chính là phép lũy thừa modulo

nên khi số mũ tăng thì thời gian thực hiện cũng sẽ tăng. Tuy nhiên,

kích thước khóa được sử dụng phổ biến hiện nay là 1024 và 2048 nên

thời gian ký lúc này sẽ không còn là vấn đề đáng lo ngại do toàn bộ

quy trình chỉ mất ít hơn 0,2 giây.

Page 28: Md5

20

Hình 2.5 : Thời gian xác nhận chữ ký của RSA và DSA

Thử nghiệm trên môi trường Windows XP, bộ xử lý Pentium 4 3.00

GHz, bộ nhớ 512 MB.

Kết quả Thử nghiệm 2.2 cũng cho thấy tốc độ xác nhận chữ ký của

RSA không thay đổi đáng kể khi kích thước khóa tăng do số mũ công

khai e được sử dụng luôn là một số nhỏ (giá trị phổ biến hiện này là

65537) và tốc độ thực hiện phép lũy thừa modulo (phép toán chính

trong quy trình xác nhận chữ ký) sẽ tăng không nhiều. Ngược lại, tốc

độ xác nhận chữ ký của DSA mặc dù thấp hơn RSA nhưng sẽ ngày

càng tăng khi kích khóa tăng lên. Nguyên nhân là do quy trình xác

nhận chữ ký của DSA gồm rất nhiều phép tính tốn chi phí cao (phép

lũy thừa modulo và phép nhân) nên khi kích thước khóa tăng dần thì

điều này sẽ trở thành gánh nặng. Mặc khác, nếu kích thước L được

chọn lớn hơn thì tốc độ xác nhận chữ ký sẽ chậm hơn nữa. Với các thử

nghiệm trên ta dễ dàng nhận thấy RSA tốt hơn DSA về mọi mặt, đặc

biệt là tốc độ phát sinh khóa của RSA nhanh hơn DSA rất nhiều. Ngoài

ra, tốc độ ký và xác nhận chữ ký dẫu có chậm hơn DSA nhưng thời

gian này là không đáng kể.[8]

2.4. Chứng thực số

- Trong mật mã học, chứng thực khóa công khai (còn gọi là chứng thực số / chứng

thực điện tử) là một chứng thực sử dụng chữ ký số để gắn một khóa công khai với

một thực thể (cá nhân, máy chủ hoặc công ty...). Một chứng thực khóa công khai tiêu

Page 29: Md5

21

biểu thường bao gồm khóa công khai và các thông tin (tên, địa chỉ...) về thực thể sở

hữu khóa đó. Chứng thực điện tử có thể được sử dụng để kiểm tra một khóa công

khai nào đó thuộc về ai.

- CA phát hành các chứng thực khóa công khai trong đó thể hiện rằng CA đó chứng

nhận khóa công khai nằm trong mỗi chứng thực thuộc về cá nhân, tổ chức, máy chủ

hay bất kỳ thực thể nào ghi trong cùng chứng thực đó. Nhiệm vụ của CA là kiểm tra

tính chính xác của thông tin liên quan tới thực thể được cấp chứng thực. Khi người

sử dụng tin tưởng vào một CA và có thể kiểm tra chữ ký số của CA đó thì họ cũng

có thể tin tưởng vào khóa công khai và thực thể được ghi trong chứng thực. [9]

2.5. Cấu trúc phân tầng của hệ thống PKI

- Mô hình này tương ứng với cấu trúc phân cấp với CA gốc và các CA cấp dưới. CA

gốc xác nhận các CA cấp dưới, các CA này lại xác nhận các CA cấp thấp hơn. Các

CA cấp dưới không cần xác nhận các CA cấp trên.

Hình 2.6 : Mô hình phân cấp

- Mô hình phân cấp được minh hoạ như hình ở trên.Trong mô hình này, mỗi thực thể

sẽ giữ bản sao khoá công khai của root CA và kiểm tra đường dẫn của chứng thư bắt

đầu từ chữ ký của CA gốc. Đây là mô hình PKI tin cậy sớm nhất và được sử dụng

trong PEM.

* Ưu điểm của mô hình:

Page 30: Md5

22

- Mô hình này có thể dùng được trực tiếp cho những doanh nghiệp phân cấp và độc

lập, cũng như những tổ chức chính phủ và quân đội.

- Cho phép thực thi chính sách và chuẩn thông qua hạ tầng cơ sở.

- Dễ vận hành giữa các tổ chức khác nhau.

* Nhược điểm:

- Có thể không thích hợp đối với môi trường mà mỗi miền khác nhau cần có chính

sách và giải pháp PKI khác nhau.

- Các tổ chức có thể không tự nguyện tin vào các tổ chức khác.

- Có thể không thích hợp cho những mối quan hệ ngang hàng giữa chính phủvà

doanh nghiệp.

- Những tổ chức thiết lập CA trước có thể không muốn trở thành một phần của mô

hình.

- Có thể gây ra sự trội hơn của sản phẩm đối với vấn đề về khả năng tương tác.

- Chỉ có một CA gốc nên có thể gây ra một số vấn đề như thiếu khả năng hoạt

động. Thêm vào đó, trong trường hợp khoá cá nhân của CA bị xâm phạm, khoá

công khai mới của CA gốc phải được phân phối đến tất cả các người sử dụng

cuối trong hệ thống theo một số cơ chế khác nhau.

- Mặc dù có những nhược điểm, song mô hình này vẫn thích hợp với yêu cầu của

các tổ chức chính phủ vì cấu trúc phân cấp tự nhiên sẵn có.

2.6. Cấp phát và xác thực chứng thực số 2.6.1. Cấp phát chứng thực số

2.6.1.1. Sinh cặp khóa ngẫu nhiên (PKI client)

- Tại Client hệ thống PKI sẽ cấp phát cặp khóa riêng và khóa công khai

- Hệ thống PKI(cụ thể PKI client) sẽ sử dụng 1 thuật toán bất kỳ hợp lý được

chọn lựa để sinh cặp khóa ngẫu nhiên.

- Chẳng hạn đây là thuật tóa RSA. Cặp khóa ngẫu nhiên được sinh ra từ 2 số

nguyên tố ngẫu nhiên lập đủ lớn. Cặp khóa ngẫu nhiên ở đây là :

Khóa công khai : (n,e)

Khóa bí mật : (n,d)

Page 31: Md5

23

2.6.1.2. Tạo chữ ký số

- Sau khi tạo cặp khóa ngẫu nhiên , hệ thống PKI client sẽ tạo ra chữ ký số

tương ứng với cặp khóa ngẫu nhiên của từng client và ký theo từng văn bản

ngẫu nhiên.

2.6.1.3. Cấp phát chứng thực số

- Sau khi PKI client tạo cặp khóa riêng và khóa công khai đồng thời tạo chữ ký

số cho client tương ứng. Thông tin bảo mật sẽ được gửi đến server.

- Tại server, server sẽ xác thực những thông tin mà client gửi đến có chính xác

và đúng đắn.Nếu thông tin xác thực là đúng đắn(khóa công khai, chữ ký số,

giá trị băm của văn bản, tin nhắn) server sẽ cấp phát cho client 1 chứng thực

số bao gồm các thông tin sau : tên, tuổi, địa chỉ.. các thông tin cá nhân khác,

khóa công khai, ngày tạo, ngày hết hạn, và ID của chứng thực số. ID của

chứng thực số có tính duy nhất với mỗi client.

2.6.1.4. Thu hồi và cấp phát lại chứng thực số

- Một chứng thực số bị thu hồi khi nào :

Khi mà chứng thực số đã hết hạn sử dụng, chứng thực sẽ bị thu hồi để

ra hạn hoặc cấp một chứng thực số mới

Khi client phát hiện khóa bí mật của người này bị lộ hoặc server phát

hiện thấy hằm băm mật mã của mình bị lộ hoặc các thông tin bảo mật

khác của 1 client đã bị rò rỉ

- Cấp phát lại chứng thực số :

Client sẽ gửi yêu cầu đến server yêu cầu và 1 bản thông tin(địa chỉ,

khóa công khai,khóa riêng…) của client đăng ký một bản chứng thực

số mới.

2.6.2. Xác thực chứng thực số

- Khi bạn gửi một thông tin kèm chứng chỉ số, người nhận - có thể là đối tác kinh

doanh, tổ chức hoặc cơ quan chính quyền - sẽ xác định rõ được danh tính của bạn.

Có nghĩa là dù không nhìn thấy bạn, nhưng qua hệ thống chứng chỉ số mà bạn và

người nhận cùng sử dụng, người nhận sẽ biết chắc chắn đó là bạn chứ không phải

Page 32: Md5

24

là một người khác. Xác thực là một tính năng rất quan trọng trong việc thực hiện

các giao dịch điện tử qua mạng, cũng như các thủ tục hành chính với cơ quan

pháp quyền. Các hoạt động này cần phải xác minh rõ người gửi thông tin để sử

dụng tư cách pháp nhân. Đây chính là nền tảng của một Chính phủ điện tử, môi

trường cho phép công dân có thể giao tiếp, thực hiện các công việc hành chính

với cơ quan nhà nước hoàn toàn qua mạng. Có thể nói, chứng chỉ số là một phần

không thể thiếu, là phần cốt lõi của Chính phủ điện tử.

- Một người thứ 3 bất kỳ(Có thể là 1 client khác, khách chưa đăng ký chứng thực

số) đều có thể kiểm tra được tính đúng đắn của 1 chứng thực số. Bằng cách PKI

client sẽ cung cấp 1 dịch vụ xác thực. Người dùng có thể nhập vào ID của 1

chứng thực số bất kỳ cần kiểm tra và gửi thông tin đó lên server. Nếu chứng thực

số tồn tại server sẽ trả lại thông báo cho client vừa kiểm tra.

2.7. Ứng dụng của hạ tầng khóa công khai và cấp phát chứng thực

2.7.1. Mã hóa

- Lợi ích đầu tiên của chứng chỉ số là tính bảo mật thông tin. Khi người gửi đã mã

hóa thông tin bằng khóa công khai của bạn, chắc chắn chỉ có bạn mới giải mã

dược thông tin để đọc. Trong qúa trình truyền thông tin qua Internet, dù có đọc

được các gói tin đã mã hóa này, kẻ xấu cũng không thể biết được trong gói tin có

thông tin gì. Đây là một tính năng rất quan trọng, giúp người sử dụng hoàn toàn

tin cậy về khả năng bảo mật thông tin. Những trao đổi thông tin cần bảo mật cao,

chẳng hạn giao dịch liên ngân hàng, ngân hàng điện tử, thanh toán bằng thẻ tín

dụng, đều cần phải có chứng chỉ số để đảm bảo an toàn.

2.7.2. Chống giả mạo

- Khi bạn gửi đi một thông tin, có thể là một dữ liệu hoặc một Email, có sử dụng

chứng chỉ số, người nhận sẽ kiểm tra được thông tin của bạn có bị thay đổi hay

không. Bất kỳ một sự sửa đổi hay thay thế nội dung của thông điệp gốc đều sẽ bị

phát hiện. Địa chỉ mail, tên domain... đều có thể bị kẻ xấu làm giả để đánh lừa

người nhận lây lan virus, ăn cắp thông tin quan trọng. Tuy nhiên , chứng chỉ số

thì không thể làm giả, nên việc trao đổi thông tin có kèm chứng chỉ số luôn đảm

bảo an toàn.

2.7.3. Xác thực

Page 33: Md5

25

- Khi sử dụng một chứng chỉ số, người nhận – có thể là đối tác kinh doanh, tổ chức

hoặc cơ quan chính quyền- sẽ xác định rõ được danh tính của bạn. Có nghĩa là dù

không nhìn thấy bạn, nhưng qua hệ thống chứng chỉ số mà bạn và người nhận

cùng sử dụng, người nhận sẽ biết chắc chắn đó là bạn chứ không phải ai khác.

Xác thực là một tính năng rất quan trọng trong việc giao dịch điện tử qua mạng,

cũng như các thủ tục hành chính với cơ quan với cơ quan pháp quyền. Các hoạt

động này cần phải xác minh rõ người gửi thông tin để sử dụng tư cách pháp

nhân. Đây chính là nền tảng của một chính phủ điện tử, môi trường cho phép

công dân có thể giao tiếp. Có thể nói, chứng chỉ số là một phần không thể thiếu,

là phần cốt lõi của chính phủ điện tử.

2.7.4. Chống chối bỏ nguồn gốc

- Khi sử dụng một chứng chỉ số, bạn phải chịu trách nhiệm hoàn toàn về những

thông tin mà chứng chỉ số đi kèm. Trong trường hợp người gửi chối cãi, phủ

nhận một thông tin nào đó không phải do mình gửi(chẳng hạn qua mạng) chứng

chỉ số mà người nhận có được sẽ là bằng chứng khẳng định người gửi là tác giả

của thông tin đó. Trong trường hợp chối bỏ, CA cung cấp chứng chỉ số cho hai

bên sẽ chịu trách nhiệm xác minh nguồn gốc thông tin, chứng tỏ nguồn gốc thông

tin được gửi.

2.7.5. Chữ ký điện tử

- Email đóng vai trò khá quan trọng trong trao đổi thông tin hàng ngày của chúng

ta vì ưu điểm nhanh, rẻ và dễ sử dụng. Những thông điệp có thể gửi đi nhanh

chóng qua internet đến khách hàng đồng nghiệp, nhà cung cấp và đối tác. Tuy

nhiên, email rất dễ bị đọc bởi các Hacker. Những thông điệp có thể bị đọc hay bị

giả mạo trước khi đến người nhận.

- Bằng việc sử dụng chứng chỉ cá nhân, bạn sẽ ngăn ngừa được các nguy cơ này

mà vẫn không làm giảm những lợi thể của Email. Với chứng chỉ số cá nhân, bạn

có thể tạo thêm một chữ ký điện tử vào email như một bằng chứng xác nhận của

mình. Chữ ký điện tử cũng có tính năng xác thực thông tin, toàn vẹn dữ liệu và

chống chối bỏ nguồn gốc.

- Ngoài ra, chứng chỉ số cá nhân còn cho phép người dùng có thể chứng thực mình

với một web server thông qua giao thức bảo mật SSL. Phương pháp chứng thực

Page 34: Md5

26

dựa trên chứng chỉ số được đánh giá là tốt, an toàn bảo mật hơn phương pháp

chứng thực truyền thống dựa trên mật khẩu.

2.7.6. Bảo mật website

- Khi website của bạn sử dụng cho mục đích thương mại điện tử hay cho những

mục đích quan trọng khác, những thông tin trao đổi giữa bạn và khách hàng có

thể bị lộ. Để tránh nguy cơ này, bạn có thể dùng chứng chỉ số SSL server để bảo

mật cho Website của mình.

- Chứng chỉ số SSL server sẽ cho phép bạn lập cấu hình website của mình theo

giao thức bảo mật SSL(Secure Sockets Layer). Các tính năng nổi bật:

Thực hiện mua bán bằng thẻ tín dụng.

Bảo vệ những thông tin cá nhân nhạy cảm xủa khách hàng

Đảm bảo hacker không thể dò tìm được mật khẩu.

2.7.7. Đảm bảo phần mềm

- Chứng chỉ số nhà phát triển phần mềm sẽ cho phép bạn ký vào các applet, script,

Java software, ActiveX control, các file định dạng EXE, CAB, DLL... Như vậy,

thông qua chứng chỉ số bạn sẽ đảm bảo tính hợp pháp cũng như nguồn gốc xuất

xứ của sản phẩm. Hơn nữa người dùng có thể xác thực được bạn là nhà cung cấp,

phát hiện được sự thay đổi của chương trình(virus, crack, bản lậu...).

2.8. OpenCA hệ thống hạ tầng khóa công khai trong thực tế

2.8.1. Định nghĩa :

- OpenCA là một hệ thống mã nguồn mở, được xây dựng và phát triển bởi rất

nhiều nhà lập trình trên thế giới. OpenCA được xây dựng với mục đích tạo ra

một hệ thống công cụ nhằm hỗ trợ cho các dự án về bảo mật.OpenCA hỗ trợ từ

mức độ thấp như mã hoá dữ liệu,tạo chữ ký số cho đến các hệ thống an toàn dữ

liệu cao cấp. Mã nguồn của OpenCA được cung cấp rộng rãi trên

www.openca.org.Từ những đặc điểm như trên có thể thấy OpenCA chính là một

công cụ rất hiệu quả để xây dựng những ứng dụng theo mô hình hạ tầng khoá

công khai PKI. OpenCA hỗ trợ xây dựng tất cả các thủ tục lõi cho một ứng dụng

PKI từ việc sinh khoá mã hoá giải mã dữ liệu cho tới các thủ tục cấp phát,thu hồi

chứng thư,tạo chữ ký số…Với tất cả những cái đó,ta có thể xây dựng một ứng

dụng theo mô hình PKI cơ sở, phần mở rộng còn lại sẽ được xây dựng tiếp theo

định hướng của nhà phát triển.

Page 35: Md5

27

- Các thành phần chính của OpenCA bao gồm 3 thành phần là hệ thống thư viện

OpenSSL, cơ sở dữ liệu và giao diện web. Trong đó giao diện web được xây

dựng bằng ngôn ngữ Perl. Thư viện OpenSSL thực hiện các tiến trình về mã hoá.

[10]

2.8.2. Đánh giá về hệ OpenCA 2.8.2.1. Ưu điểm của hệ thống

- OpenCA được thiết kế và xây dựng theo nguyên lý của mô hình PKI và nó

đảm bảo đầy đủ những chức năng cơ sở của một hệ PKI cần phải có: Cấp

phát, gia hạn, thu hồi chứng thư số, đảm bảo tính xác thực, an toàn tin cậy.

- Với các kịch bản đã thử nghiệm trong thời gian dài hệ thống đã hoạt động khá

ổn định và không xảy ra những lỗi nghiêm trọng dẫn đến từ chối dịch vụ.

- Hệ mã nguồn mở OpenCA hoàn toàn tương thích với môi trường Linux và

không hề gây xung đột với các hệ thống khác cùng cài đặt trên một hệ điều

hành.

- Hệ thống OpenCA sử dụng rất nhiều chuẩn công nghiệp( như các chuẩn về

chứng thư số X509). Vì vậy nó được chấp nhận và sử dụng rất rộng rãi trong

thực tế.

2.8.2.2. Những điểm còn hạn chế của hệ thống

- Lỗi không xác định khi RA ký lên các yêu cầu gửi lên cho CA.

- Không làm việc được với các thiết bị sử dụng chuẩn USB 2.0

- Khó khăn trong việc cài đặt và thay đổi.[11]

Chương 3: Đặc tả một Platform PKI

3.1. Ngôn ngữ lập trình

- Ngôn ngữ lập trình được chọn lựa và sử dụng ở đây là java và công cụ kết nối cơ sở

dữ liệu là Mysql.

- Thuật toán sử dụng tạo cặp khóa, chữ ký số và xác thực chữ ký số là RSA. Hàm băm

mã hóa sử dụng : SHA-1.

Page 36: Md5

28

3.2. Thư viện số nguyên lớn

- Thư viện số nguyên lớn mang tất cả đặc điểm của số nguyên nguyên thủy trong java

và tất cả các phương thức có trong java.lang.Math. Thêm vào đó thư viện số

nguyên lớn còn cung cấp các phương thức như: tính modular toán học(tính toán số

dư trong phép chia), tính GCD(ước số trung lớn nhất của 2 số), tạo số nguyên tố

ngẫu nhiên, thao tác bit, và một vài phương thức khác.

3.3. Một Platform PKI phải cung cấp đầy đủ các chức năng sau:

- Cấp phát.

- Xác thực.

- Toàn vẹn dữ liệu.

- Thu hồi và cấp phát lại chứng thực số.

3.3.1. Cấp phát

- Cấp phát chứng thực số: Chứng thực số bao gồm các thông tin : tên, tuổi, địa chỉ,

ngày tháng cấp phát chứng thực số, khóa công khai, và ID của chứng thực

số.Việc cấp phát chứng thực số hoàn tất sau khi Client gửi thông tin đăng ký nên

server. Server sẽ kiểm tra các thông tin client gửi lên. Bằng việc thẩm tra chữ ký

số, và khóa công khai. Nếu chữ ký số đúng đắn tương đương việc khóa công khai

là đúng đắn . Thông tin client gửi mẫu lên đăng ký server gồm những thông tin

sau:

Khóa công khai(Khóa bí mật chỉ mình client biết)

Cặp khóa bí mật(n,d) cặp khóa công khai(n,e)

Hàm tạo 2 số nguyên tố trong thư viện BigInteger :

public BigInteger(int bitLength, int certainty,Random rnd)

bitLength : độ dài bit của khóa(số random[1,2 bitLength-1])

certainty : xác xuất 1 số BigInteger không phải là số nguyên tố

1/2 ycerta int

Page 37: Md5

29

Hình 3.1 : Hàm tạo cặp khóa riêng và khóa công khai

n=p.q

Tạo khóa riêng (n,e): Theo thuật toán RSA ta có

)1)(1()( qpn , gcd(e, )(n )=1

Tạo khóa công khai (n,d): d = e 1 mod )(n . Trong thư viện số

nguyên lớn : d= e.modInverse( )(n ).

Page 38: Md5

30

Hình 3.2 : Mô phỏng tạo khóa

Page 39: Md5

31

Tạo chữ ký số : S = H(m)^d mod n. Tin nhắn nhập vào được băm theo

hàm băm mặc định cho trước

Hình 3.3 : Tạo chữ ký số

Page 40: Md5

32

Form nhập thông tin đăng ký :

Hình 3.4 : Form nhập thông tin của client

Page 41: Md5

33

Các thông tin mà client nhập sẽ được gửi lên server.

Tại client:

Page 42: Md5

34

Tại server:

Hình 3.5 : Thông báo trả về khi kết quả gửi thông tin thành công

Page 43: Md5

35

Tại server nhận thông tin gửi từ client. Nếu việc thẩm tra chữ ký số

thành công. Việc đăng ký chứng thực số hoàn tất(Tại server sẽ thông báo

Successful). Nếu việc thẩm tra thất bại tương ứng với việc chữ ký số và

khóa công khai gửi lên không đúng đắn hay tương thích(Server sẽ báo

Failed). Ngoài ra việc đã tồn tại user với địa chỉ thông báo và khóa công

khai tồn tại trong chứng thực số(Server sẽ nhận biết được, server sẽ

không cấp phát 1 chứng thực số khác. Mà chỉ đưa ra thông báo cho user

đó)

S e mod n = H(m)

Hình 3.6 : Xác thực khóa công khai và chữ ký số

Page 44: Md5

36

Hình 3.7 : cấp phát chứng thực số

Page 45: Md5

37

Hình 3.8 : Kiểm tra thông tin và cấp phát chứng thực số

Việc kiểm tra tại server hoàn tất, 1 bản chứng thực số được tạo ra và lưu tại

server

Page 46: Md5

38

3.3.2. Chứng thực

- Bên cạnh việc cấp phát 1 PKI cơ bản còn có vai trò xác thực 1 chứng thực số.

Hình 3.9 : Xác thực chứng thực số

- Một client khác hoặc một người thứ 3 có thể gửi ID chứng thực số của một client

để biết được client đó có tồn tại hay không. Bằng cách kích vào Menu

CheckUser. Thông tin server trả về có thể là Ok(nếu tồn tại client), failed user

was expired(nếu client đó đã hết hạn), failed(nếu không tồn tại user đó.

3.3.3. Toàn vẹn dữ liệu

- Client gửi tin nhắn đến server để đăng ký chứng thực số. Nếu tin nhắn bị thay đổi

đồng nghĩa với việc gia trị băm(H(m)) cũng bị thay đổi. Do vậy trong trường hợp

thẩm tra chữ ký số là đúng đắn tương ứng với giá trị băm H(m) đúng và tin nhắn

gửi đi và tin nhắn nhận được tại server là trùng nhau. Như vậy thông tin mà client

gửi lên server hoàn toàn không bị thay đổi.Ngoài các chức năng trên Platform

PKI còn bao gồm các chức năng như: Kiểm tra những client hết hạn sử dụng

chức thực số, tìm kiếm,xóa, sửa 1 chứng thực số.

Page 47: Md5

39

Hình 3.10 : Form tìm kiếm, sửa, xóa thông tin chứng thực số

Page 48: Md5

40

3.3.4. Thu hồi và cấp phát lại chứng thực số

3.3.4.1. Thu hồi

- Mỗi bản chứng thực số sẽ được gán thời gian bắt đầu cấp phát. Server sẽ kiểm

tra và so sánh khoảng thời gian cấp phát chứng thực số đến thời gian hiện tại.

Nếu thời gian đã hết hạn chứng thực số đó sẽ bị thu hồi và được lưu lại vào

bảng cơ sở dữ liệu chứa “Chứng thực số hệt quyền hạn sử dụng”

Page 49: Md5

41

Hình 3.11 : Kiểm tra và thu hồi chứng thực số hết hạn sử dụng

Page 50: Md5

42

3.3.4.2. Cấp phát lại - Server nhận thấy 1 chứng thức số đã bị lộ, hoặc client cảm nhận thấy

khóa bí mật của mình và các thông tin quan trọng khác bị rò rỉ. Client sẽ

gửi thông báo đến server và yêu cầu đăng ký 1 bản chứng thực số khác.

Về phía server, Khi phát hiện thấy 1 chứng thực số bị lộ hoặc rò rỉ thông

tin sẽ gửi yêu cầu đến client yêu cầu client đăng ký 1 bản chứng thực số

khác.

Page 51: Md5

43

KẾT LUẬN

Đề tài “Hạ tầng khóa công khai (PKI), vấn đề cấp phát chứng thực số và ứng dụng

trong thương mại điện tử” là một đề tài khó và rộng. Trong thời gian nghiên cứu, tìm

hiểu, xây dựng ứng dụng đố án đã hoàn thành được các nhiệm vụ được đặt ra, cụ thể

là:

- Về mặt lý thuyết : Khóa luận trình bày những khái niệm, đặc điểm cơ bản của

một hệ thống PKI. Ứng dụng của hạ tầng khóa công khai trong thương mại điện

tự. Tư tưởng của thuật toán cấp phát khóa, sinh và kiểm tra chữ ký

số(RSA,DSA,...) về ưu nhược điểm của từng thuật toán, định nghĩa về hàm

băm(hàm băm MD5,SHA-1). Cấp phát và xác thực chứng thực số.

- Về mô phỏng và kết quả thử nghiệm : Đã hoàn thành việc mô phỏng hoạt

động cơ bản của một hệ thống PKI.

Mặc dù đã hết sức cố gắng nhưng trình độ chuyên môn và thời gian thực hiện khóa

luận còn hạn hẹp, cũng như mức độ phức tạp của đề tài, nên kết quả đạt được còn gặp

phải một số khiếm khuyết.

Hướng phát triển đề tài: Tiếp tục hoàn thiện các chức năng, nhằm tăng hiệu quả và

độ an toàn. Cải thiện việc gửi dữ liệu từ client và xử lý tại server để thời gian hoạt

động của cả hệ thống là nhanh nhất và hiệu quả của hệ thông là tốt nhất có thể.

Page 52: Md5

44

CÁC TÀI LIỆU THAM KHẢO

[1] William Stallings. Cryptography and Network Security : Principles and Practice,

Fourth Edition. Prentice Hall, 2005.

TS.Nguyễn Đại Thọ Bộ môn Mạng & Truyền thông Máy tính Khoa Công nghệ Thông

tin Slide bài giảng AN TOÀN MẠNG - (Chương 3 – trang 96).

http://vi.wikipedia.org/wiki/M%E1%BA%ADt_m%C3%A3_h%C3%B3a_kh%C3%B3a_

c%C3%B4ng_khai

[2], [3] Đinh Mạnh Tường – Giáo trình “Cấu trúc dữ liệu và giải thuật”

(Chương 1 trang 12-16).

[4] TS.Nguyễn Đại Thọ Bộ môn Mạng & Truyền thông Máy tính Khoa Công nghệ

Thông tin. Slide bài giảng AN TOÀN MẠNG - (Chương 4 – trang 116).

http://vi.wikipedia.org/wiki/H%C3%A0m_b%C4%83m_m%E1%BA%ADt_m%C3%A3

_h%E1%BB%8Dc

[5],[8] Đặng Bình Phương Luận văn cao học – Đại học khoa học tự nhiên TP.Hồ Chí

Minh - Nghiên cứu kiến trúc và xây dựng hệ thống chứng thực tập trung.(trang 8-11)

[6] http://ptic.com.vn/chuyende_chitiet.asp?stuff_id=7

[7] Chứng thực điện tử&Chữ ký điện tử(HÀ NỘI –IT Week 2004) – VASC CA

[9] Carlisle Adams, Steve Lloyd

Understanding PKI: Concepts, Standards, and Deployment Considerations, Second

Edition November 06, 2002 (Chương 6 Certificates and Certification).

[10],[11] ĐỒ ÁN TỐT NGHIỆP Trần Hoàn Vũ hệ Kỹ Sư Chất Lượng Cao – K49 bộ

môn Truyền Thông và Mạng Máy Tính, khoa Công Nghệ Thông Tin trường Đại Học

Bách Khoa Hà Nội.

http://www.openca.org