Tải bản đầy đủ (.pdf) (93 trang)

Sử dụng chữ ký điện tử để xác thực trong quản lý công văn đi đến

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.11 MB, 93 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
--------------------------------------Đặng Ngọc Minh

SỬ DỤNG CHỮ KÝ ĐIỆN TỬ ĐỂ XÁC THỰC TRONG
QUẢN LÝ CÔNG VĂN ĐI ĐẾN

Chuyên ngành : Công nghệ thông tin

LUẬN VĂN THẠC SĨ KỸ THUẬT
CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC :
1. PGS. TS Đặng Văn Chuyết

Hà Nội – Năm 2014


LỜI CAM ĐOAN

Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi.
Các số liệu, kết quả nêu trong luận văn là trung thực dựa trên các công trình
nghiên cứu của riêng tôi, không sao chép bất kỳ kết quả nghiên cứu nào của các tác
giả khác. Nội dung của luận văn có tham khảo và sử dụng một số thông tin, tài liệu
từ các nguồn sách, tạp chí được liệt kê trong danh mục các tài liệu tham khảo.

Hà Nội, ngày 6 tháng 9 năm 2014
Tác giả

Đặng Ngọc Minh



MỤC LỤC
Chương I - Mở đầu ......................................................................................................1
1. Lí do chọn đề tài .................................................................................................1
2. Các vấn đề cần nghiên cứu .................................................................................2
2.1. Mục đích nghiên cứu ...................................................................................2
2.2. Nhiệm vụ nghiên cứu ..................................................................................2
2.3. Đối tượng nghiên cứu ..................................................................................2
2.4. Phạm vi nghiên cứu .....................................................................................3
2.5. Phương pháp nghiên cứu .............................................................................3
3. Bố cục luận văn...................................................................................................3
Chương II – Tổng quan về mật mã, hàm băm và chữ ký điện tử ...............................5
1. Lý thuyết mật mã và mã hóa ...............................................................................5
1.1. Giới thiệu .....................................................................................................5
1.3. Phân loại ......................................................................................................6
2. Tổng quan về chữ ký điện tử và chữ ký số .........................................................8
2.1. Giới thiệu chung về chữ ký điện tử .............................................................8
2.2. Khái niệm chữ ký số và chữ ký điện tử .......................................................9
2.3. Phân loại ......................................................................................................9
2.4. Quy trình sử dụng ......................................................................................10
2.5. Sơ đồ tổng quan của một hệ thống chữ ký số điện tử ...............................11
3. Hàm băm ...........................................................................................................11
3.1. Sơ lược về hàm băm ..................................................................................11
3.2. Lý do sử dụng hàm băm trong chữ ký điện tử...........................................12
3.3. Hàm băm SHA-1 .......................................................................................14
4. Hạ tầng khóa công khai (PKI) ..........................................................................16
4.1. Khái niệm ..................................................................................................16
4.2. Cấu trúc và vai trò của PKI trong chương trình ........................................17
4.3. Chứng chỉ số X.509 ...................................................................................18
4.4. Tạo khóa cho chứng chỉ số ........................................................................20

5. Ký số RSA .......................................................................................................27
5.1. Giới thiệu sơ lược RSA .............................................................................27


5.2. Giải thuật RSA ..........................................................................................27
5.3. Tính bảo mật của RSA ..............................................................................30
5.4. Các dạng tấn công .....................................................................................31
5.5. Một số phương thức mã hóa nâng cao.......................................................33
5.6. Ký và mã hóa bằng PKCS#1 v1.5 .............................................................34
Chương III - Xây dựng và cài đặt chương trình quản lý văn bản điện tử sử dụng sơ
đồ ký số RSA kết hợp hàm băm SHA .......................................................................41
1. Xây dựng bài toán .............................................................................................41
2. Thiết kế chương trình........................................................................................43
2.1. Phân tích các yêu cầu và các yếu tố an ninh cần bảo mật .........................43
2.2. Xây dựng các chức năng chính của chương trình .....................................48
2.3. Ký số bằng phương pháp RSA khi phê duyệt văn bản..............................54
3. Lựa chọn công cụ ..............................................................................................57
4. Cài đặt ...............................................................................................................57
4.1. Mô tả cài đặt ..............................................................................................57
4.2. Chạy thử nghiệm chương trình ..................................................................74
4.3. Đánh giá kết quả ........................................................................................83
Chương IV - Kết luận ................................................................................................84


Danh mục từ viết tắt:
-

RSA: Rivest Shamir Adleman

-


SHA: Secure Hash Algorithm

-

MD: Message Digest

-

CKĐT: Chữ ký điện tử

-

CA: Certificate Authority

-

UCLN: Ước chung lớn nhất

-

CRT: Chinese Remainder Theorem

-

PKCS: Public Key Cryptography Standards

-

OAEP: Optimal Asymmetric Encryption Padding


-

ANSI: American National Standards Institute

-

ISO: International Organization for Standardization

-

IEC: International Electrotechnical Commission

-

Pfx: Personal Information Exchange

-

Cer: Certificate

-

PKI: Public Key Infastructure


Danh mục các hình vẽ:
Hình II.1.3.1 – Sơ đồ hoạt động của mã hóa đối xứng
Hình II.1.3.2- Sơ đồ hoạt động của mã hóa bất đối xứng
Hình II.3.1 – Hoạt động của hàm băm

Hình II.3.2.2 – Các thông điệp khác nhau qua các thuật tóa mã hóa tọa thành bản mã
giống nhau
Hình II.5.2 - Sơ đồ ký số RSA
Hình III.1 – Mô hình client – server
Hình III.3.2 – Các thao tác xử lý với văn bản
Hình III.2.1 – Biểu đồ Use Case của người quản trị
Hình III.2.2.2 (1) – Biểu đồ Use Case của người dùng
Hình III.2.2.2 (2) – Các thành phần cơ bản của một văn bản số
Hình III.2.2.2 (3) – Biểu đồ trình tự quản lý văn bản
Hình III.2.2.2 (4) – Ví dụ luồng văn bản
Hình III.2.3 (1) - Sơ đồ quá trình ký vào tài liệu điện tử dùng khóa bí mật
Hình III.2.3 (2) - Sơ đồ quá trình xác thực điện tử dùng khóa công khai.
Hình III.4.1.2 – Hình ảnh minh họa một USB Key


Chương I - Mở đầu
1. Lí do chọn đề tài
Nhu cầu về bảo đảm an toàn lưu trữ và truyền đạt thông tin đã xuất hiện từ rất
sớm, khi con người biết trao đổi và truyền đưa thông tin cho nhau, đặc biệt khi các
thông tin đó đã được thể hiện dưới hình thức ngôn ngữ, thư từ. Trải qua hàng nghìn
năm lịch sử, mật mã đã được sử dụng rộng rãi trên khắp 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 (chẳng hạn dưới dạng một văn bản).
Ngày nay, khi các ứng dụng của công nghệ thông tin ngày càng không thể
thiếu được đối với các thành phần như xã hội, kinh tế, chính trị, quân sự... Đặc biệt
hiện nay nhu cầu thay thế các văn bản giấy tờ thông thường nhằm tiết kiệm tài nguyên
và công sức cho công tác lưu trữ trong cơ quan, tất cả mọi thông tin liên quan đều do
máy vi tính quản lý và truyền gửi đi trên hệ thống mạng, kéo theo đó là vấn đề về xác

thực nguồn thông tin nhận được. Và vấn đề được đặt ra là làm thế nào để xác thực
được một cách chính xác nguồn thông tin nhận là của một người, một máy chủ hay
của một thực thể nào đó gửi tin trên hệ thống mạng?
Cơ sở của giải pháp cho bài toán kể trên là các phương pháp mật mã, đặc biệt
là mật mã khóa công khai.
Đề tài “SỬ DỤNG CHỮ KÝ ĐIỆN TỬ TRONG QUẢN LÝ CÔNG VĂN
ĐI ĐẾN” sẽ tìm hiểu vấn đề nêu trên và cài đặt chương trình ký số minh họa.
Bài luận văn này tôi chủ yếu tập trung trình bày về việc xây dựng hệ thống
quản lý văn bản số và ứng dụng hệ thống chữ ký số cho việc bảo mật thông tin trong
mạng hệ thống bằng ứng dụng hệ mã hóa RSA. Bài luận văn gồm có ba phần: 1. Tìm
hiểu về mật mã, mã hóa, hàm băm và chữ ký số, 2. Xây dựng chương trình quản lý
1


văn bản số kết hợp chữ ký số RSA, 3. Cài đặt chương trình. Phần cuối cùng là kết
luận và tài liệu tham khảo.
Mặc dù đã cố gắng hết sức, nhưng vẫn không sao tránh khỏi sai sót, vì vậy rất
mong nhận được sự góp ý phê bình của các thầy cô.

2. Các vấn đề cần nghiên cứu
2.1. Mục đích nghiên cứu
Tìm hiểu cơ sở lý thuyết của mã hóa và giải mã, chữ ký điện tử.
Tìm hiểu các chức năng và yêu cầu cần thiết cho một hệ thống quản lý thông
tin đi đến.
Cài đặt chương trình ký số kết hợp RSA và hàm Băm.

2.2. Nhiệm vụ nghiên cứu
- Nghiên cứu cơ sở lý luận về chứng thực thông tin.
- Tìm hiểu về chữ ký điện tử.
- Tìm hiểu về các phương thức mã hóa dữ liệu cơ bản.

- Tìm hiểu phương thức mã hóa bất đối xứng sử dụng cho chữ ký điển tử.
- Tìm hiểu về hàm băm.
- Cài đặt chương trình minh họa.

2.3. Đối tượng nghiên cứu
- Lý thuyết mật mã và mã hóa.
- Hàm băm kết hợp cho chữ ký điện tử.

2


- Hệ mã hóa công khai RSA.

2.4. Phạm vi nghiên cứu
Nghiên cứu nghiệp vụ quản lý văn bản nhà nước, lý thuyết về chứng thực
thông tin, hệ mã hóa công khai RSA, hàm băm SHA và cài đặt chương trình minh
họa.

2.5. Phương pháp nghiên cứu
- Hoạt động nghiên cứu cá nhân, nghiên cứu tài liệu.
- Trao đổi với giảng viên hướng dẫn.

3. Bố cục luận văn
Chương I – Mở đầu
Chương II – Tổng quan về mật mã, hàm băm và chữ ký điện tử
1. Lý thuyết mật mã và mã hóa
2. Tổng quan về chữ ký điện tử và chữ ký số
3. Hàm băm
4. Hạ tầng khóa công khai PKI
5. Ký số RSA

Chương III - Xây dựng cà cài đặt chương trình quản lý văn bản điện tử sử
dụng sơ đồ ký số RSA kết hợp hàm băm SHA
1. Xây dựng bài toán
2. Thiết kế chương trình

3


3. Lựa chọn công cụ
4. Cài đặt
Chương IV – Kết luận

4


Chương II – Tổng quan về mật mã, hàm băm và chữ ký điện tử
1. Lý thuyết mật mã và mã hóa
1.1. Giới thiệu
Mật mã (Cryptography) là một môn khoa học nghiên cứu cách viết bí mật.
Về phương diện lịch sử, mật mã gắn liền với quá trình mã hóa. Mã hóa là cách thức
để chuyển đổi thông tin từ dạng này sang dạng khác, từ dạng thông thường có thể
nhận thức được thành dạng không thể nhận thức được, làm cho thông tin trở thành
dạng không thể đọc được nếu như không có các thông tin bí mật. Các sản phẩm của
lĩnh vực này là các hệ mã mật, các hàm băm, các hệ chữ ký điện tử, các cơ chế phân
phối, quản lý khóa và các giao thức mật mã. Quá trình mã hóa chủ yếu được sử dụng
để đảm bảo tính bí mật của các thông tin quan trọng, chẳng hạn trong công tác tình
báo, quân sự hay ngoại giao cũng như các bí mật về kinh tế, thương mại. Hầu hết các
phương pháp mã hoá được dùng hiện nay dựa vào các máy tính, đơn giản là do các
mã do con người sinh ra rất dễ bị phá bởi công cụ máy tính. 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)
* Mã hoá với khoá công khai (Public-key Encryption)
Hệ mật mã hiện đại cần đảm bảo được hai yêu cầu sau:
- Đảm bảo tính bảo mật: Ngăn không để người lạ thực hiện việc trích chọn,
sửa đổi thông tin từ các bản mã được gửi trên các kênh truyền phổ biến (thường
không an toàn).
- Đảm bảo tính xác thực: Đảm bảo chỉ có người nhận đúng mới có thể giải
mã nội dung bản mã, đồng thời cũng đảm bảo người gửi không thể phủ nhận nội
dung đã gửi.

5


1.3. Phân loại
1.3.1. Mã hóa đối xứng
Các thuật toán khóa đối xứng (symmetric-key algorithms) là một lớp các thuật
toán mật mã hóa trong đó các khóa dùng cho việc mật mã hóa và giải mã có quan hệ
rõ ràng với nhau (có thể dễ dàng tìm được một khóa nếu biết khóa kia).
Cả hai quá trình mã hóa và giải mã của hệ thống mã hóa đối xứng đều sử dụng
chung một khóa bí mật. Do đó, khi bị mất khóa bí mật này thì tính bảo mật của hệ mã
bị phá vỡ.
Ban đầu, bản rõ được người gửi A mã hóa với khóa k. Sau đó bản mã được
gửi tới người nhận B. Khi nhận được bản mã, người B sử dụng khóa k giải mã để thu
được bản rõ. Do đó, nếu một người khác có được khóa k thì hệ thống mã hóa này sẽ
bị tấn công.

Hình II.1.3.1 – Sơ đồ hoạt động của mã hóa đối xứng

Các thuật toán đối xứng nói chung đòi hỏi công suất tính toán ít hơn các thuật
toán khóa bất đối xứng. Trên thực tế, một thuật toán khóa bất đối xứng có khối lượng

tính toán nhiều hơn gấp hằng trăm, hằng ngàn lần một thuật toán khóa đối xứng có
chất lượng tương đương.
Hạn chế của các thuật toán khóa đối xứng bắt nguồn từ yêu cầu về sự phân
hưởng chìa khóa bí mật, mỗi bên phải có một bản sao của chìa. Do khả năng các chìa
khóa có thể bị phát hiện bởi đối thủ mật mã, chúng thường phải được bảo an trong
6


khi phân phối và trong khi dùng. Hậu quả của yêu cầu về việc lựa chọn, phân phối và
lưu trữ các chìa khóa một cách không có lỗi, không bị mất mát là một việc làm khó
khăn, khó có thể đạt được một cách đáng tin cậy.
Để đả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 chìa khóa cần phải có là n(n-1)/2.
Các thuật toán khóa đối xứng không thể dùng cho mục đích xác thực hay mục
đích chống thoái thác.

1.3.2. Mã hóa bất đối xứng
Mật mã hóa khóa công khai là một dạng mật mã hóa 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óa 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.

Hình II.1.3.2- Sơ đồ hoạt động của mã hóa bất đối xứng

Hệ thống mật mã hóa khóa công khai có thể sử dụng với các mục đích:


7


- Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã
được.
- 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.
- Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin mật
giữa 2 bên.
Thông thường, các kỹ thuật mật mã hóa khóa công khai đòi hỏi khối lượng
tính toán nhiều hơn các kỹ thuật mã hóa khóa đối xứng nhưng những lợi điểm mà
chúng mang lại khiến cho chúng được áp dụng trong nhiều ứng dụng.

2. Tổng quan về chữ ký điện tử và chữ ký số
2.1. Giới thiệu chung về chữ ký điện tử
Trong đời sống hàng ngày, chữ ký (viết tay) trên một văn bản là một minh chứng
về “bản quyền” hoặc ít nhất cũng là sự “tán đồng, thừa nhận” các nội dung trong văn
bản. Tuy nhiên trong thế giới máy tính thì vấn đề ký như trong thực tế sẽ gặp phải
nhiều khó khăn : các dòng thông tin trên máy tính có thể thay đổi dễ dàng, hình ảnh
của chữ ký tay của một người cũng dễ dàng cho “sang – truyền” từ một văn bản này
sang một văn bản khác, và việc thay đổi nội dung một văn bản điện tử (sau khi ký)
cũng chẳng để lại dấu vết gì về phương diện “tẩy, xóa”… Do đó, giao thức “ký trong
thế giới điện tử “ cần phải có sự hỗ trợ của công nghệ mã hóa. Sơ đồ chữ ký điện tử
là phương pháp ký một thông báo được lưu dưới dạng điện tử. Giao thức cơ bản của
chữ ký số dựa trên ý tưởng của Diffie và Hellman:
-

Người gửi (chủ nhân của văn bản) ký văn bản bằng cách mã hóa nó với khóa

bí mật của mình.

-

Người gửi chuyển văn bản đã ký cho người nhận.

8


-

Người nhận văn bản kiểm tra chữ ký bằng việc sử dụng chìa khóa công khai

của người gửi để giải mã văn bản.
Một chữ ký số “lý tưởng” cần phải đáp ứng được các yêu cầu đặc điểm:
-

Tính xác nhận: một chữ ký điện tử đảm bảo rằng chính người ký là người tạo

ra nó.
-

Tính an toàn: không thể làm giả chữ ký nếu như không biết thông tin bí mật

để tạo chữ ký.
-

Không thể dùng lại: một chữ ký điện tử không thể dùng cho một tài liệu khác

-

Không thể phủ nhận: một khi người ký không thể phủ nhận chữ ký đó.


-

Tính hiệu quả: ký và xác nhận nhanh chóng dễ dàng.

2.2. Khái niệm chữ ký số và chữ ký điện tử
Chữ ký điện tử (tiếng Anh: electronic signature) là thông tin đi kèm theo dữ liệu
(văn bản, hình ảnh, video...) nhằm mục đích xác định người chủ của dữ liệu đó.
Chữ ký số (khóa công khai) (digital signature) 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ý.

2.3. Phân loại
Chúng ta có thể chia chữ ký số ra 2 loại: Kỹ thuật ký mà chữ ký số là một phần
đính vào thông điệp gửi đi, cả 2 đều là đầu vào cho quá trình xác minh tính đúng đắn
của chữ ký và loại chữ ký mà từ nó có thể phục hồi lại thông điệp ban đầu trước khi
ký, thông điệp ban đầu này không phải là đầu vào cho quá trình xác minh chữ ký.

9


Luận văn này tôi chủ yếu tập trung vào kỹ thuật ký thứ 1, chữ ký số được sử dụng
như một phần đính kèm thêm cho quá trình xác minh thông điệp. Những đặc điểm cơ
bản của chữ ký này là :
-

Chữ ký điện tử đi kèm với thông điệp gốc


-

Cần có thông điệp (gốc) cho quá trình kiểm tra chữ ký điện tử

-

Sử dụng hàm băm mật mã. Ví dụ: SHA, MD-5…

-

Dựa trên thuật toán mã hóa. Ví dụ :chữ ký số Full Domain Hash, RSA-PKCS
dựa theo thuật toán mã hóa RSA, chữ ký số DSA dựa vào thuật toán DSA…

2.4. Quy trình sử dụng
Chữ ký số hoạt động dựa trên hệ thống mã hóa khóa công khai. Hệ thống mã
hóa này gồm hai khóa, khóa bí mật và khóa công khai. Mỗi chủ thể có một cặp khóa
như vậy, chủ thể đó sẽ giữ khóa bí mật, còn khóa công khai của chủ thể sẽ được đưa
ra công cộng để bất kỳ ai cũng có thể biết. Nguyên tắc của hệ thống mã hóa khóa
công khai đó là, nếu mã hóa bằng khóa bí mật thì chỉ khóa công khai mới giải mã
đúng thông tin được, và ngược lại, nếu mã hóa bằng khóa công khai, thì chỉ có khóa
bí mật mới giải mã đúng được.
Ngoài ra, chữ ký còn đảm bảo phát giác được bất kỳ sự thay đổi nào trên dữ
liệu đã được “ký”. Để ký lên một văn bản, phần mềm ký sẽ nghiền (crunch down) dữ
liệu để gói gọn bằng một vài dòng, được gọi là thông báo tóm tắt, bằng một tiến trình
được gọi là “kỹ thuật băm”, rồi tạo thành chữ ký điện tử. Cuối cùng, phần mềm ký
tên sẽ gắn chữ ký điện tử này vào văn bản.

10



2.5. Sơ đồ tổng quan của một hệ thống chữ ký số điện tử
Một sơ đồ chữ ký số thường bao gồm hai thành phần chủ chốt là thuật toán ký
và thuật toán xác minh. Một sơ đồ chữ ký số là một bộ 5 (P, A, K, S, V) thỏa mãn
các điều kiện sau:
-

P là một tập hợp các bản rõ có thể.

-

A là tập hữu hạn các chữ ký có thể.

-

K là tập hữu hạn các khóa có thể.

-

S là tập các thuật toán ký.

-

V là tập các thuật toán xác minh.

Với mỗi k thuộc K, tồn tại một thuật toán ký sigk thuộc S và một thuật toán xác
minh verk thuộc V, trong đó sigk và verk là các ánh xạ : sigk là một ánh xạ từ P sang
A và Verk là một ánh xạ từ A sang tập biểu diễn {True, False} thỏa mãn với mọi x
thuộc P, y thuộc A,ver (x,y)= true nếu y=sig(x) và ver(x,y) = false nếu y khác sig(x).
Với mỗi k thuộc K, hàm sigk và verk là các hàm thời gian đa thức, verk là hàm công
khai còn sigk là hàm mật.

Khi một người dùng muốn ký lên một thông báo x thì người đó dùng thuật toán
an toàn để tạo ra chữ ký y=sig(x) nhận được và gửi cho người nhận. Người nhận
nhận được chữ ký sig(x) thì dùng thuật toán xác minh ver(x,y) để xác định tính đúng
đắn của chữ ký số (trả về true hoặc false).

3. Hàm băm
3.1. Sơ lược về hàm băm
Hàm băm (hash function) là một giải thụât nhằm sinh ra các giá trị băm tương
ứng với mỗi khối dữ liệu. 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.

11


Hàm băm là các thuật toán không sử dụng khóa để mã hóa (ở đây ta dùng thuật
ngữ “băm” thay cho “mã hóa”), nó có nhiệm vụ “lọc” (băm) thông điệp được đưa
vào theo một thuật toán h một chiều nào đó, rồi đưa ra một bản băm gọi là văn bản
đại diện có kích thước cố định. Do đó người nhận không biết được nội dung hay độ
dài ban đầu của thông điệp đã được băm bằng hàm băm.
Giá trị của hàm băm là duy nhất, và không thể suy ngược lại được nội dung
thông điệp từ giá trị băm này.
Một hàm băm để được xem là bảo mật và an toàn phải đảm bảo các tính chất:
-

Có thể áp dụng với thông báo đầu vào có độ dài bất kỳ.

-

Tạo ra giá trị băm y = h(x) có độ dài cố định.


-

h(x) dễ dàng tính được với bất kỳ x nào.

-

Tính một chiều : Với mọi đầu ra y cho trước không thể tìm được x’ sao cho

h(x’) bằng giá trị y cho trước.

3.2. Lý do sử dụng hàm băm trong chữ ký điện tử

12


Hình II.3.2 – Các thông điệp khác nhau qua các thuật toán mã hóa tọa thành bản mã
giống nhau

Các sơ đồ ký số thường chỉ được sử dụng để ký các bức thông điệp có kích
thước nhỏ và sau khi ký, bản ký số có kích thước lớn hơn bản thông điệp gốc (gấp
đôi). Trên thực tế, ta cần phải ký các văn bản có kích thước lớn lên đến hàng
Megabytes, sau đó ta phải gửi kèm cả chữ ký số lẫn đoạn thông điệp gốc để xác nhận,
điều này làm cho dung lượng thông tin truyền qua mạng trở nên rất lớn. Một cách để
giải quyết vấn đề trên là chặt thông điệp thành nhiều đoạn 160 bit, sau đó ký lên các
đoạn đó độc lập nhau. Nhưng sử dụng biện pháp này lại tạo ra một số vấn đề khác
của chữ ký số:
- Không giải quyết được vấn đề kích thước truyền lớn.
- Các chữ ký “an toàn” thì tốc độ chậm vì chúng dùng nhiều phép tính số học
modulo.
- Sau khi ký, nội dung của thông điệp có thể bị xáo trộn các đoạn với nhau,

hoặc một số đoạn có thể bị mất mát, không đảm bảo tính toàn vẹn của thông điệp.
Giả pháp cho vấn đề vướng mắc trên là dùng hàm băm để trợ giúp cho việc ký
số:
- Hàm băm tạo ra một đoạn chuỗi băm có độ dài duy nhất, giúp giảm kích
thước cần tính toán → giảm cả thời gian thực hiện và dung lượng truyền.
- Tăng tính bảo mật cho chương trình, mỗi đoạn văn bản chỉ có thể tạo ra một
chuỗi băm duy nhất không trùng lặp.
- Tránh sự trùng lặp thông điệp (tuy hiếm xảy ra) khi ký trên các đoạn văn bản
khác nhau.
Ngoài ra, các phương pháp ký hiện đại được nâng cao từ RSA tùy theo các
phương pháp băm được sử dụng để thêm vào các ký tự đặc biệc hoặc các chuỗi ngẫu
nhiên vào chuỗi mã hóa khi ký để tăng thêm tính bảo mật.
13


Hiện nay do sự phát triển của máy tính khiến cho người ta phải phát triển các
phương pháp băm SHA với độ dài lớn hơn nhưng SHA-1 vẫn là hàm băm được ưa
chuộng trong các chương trình phổ thông nhờ tốc độ xử lý tốt mà vẫn đảm bảo tính
bảo mật.

3.3. Hàm băm SHA-1
3.3.1. Khái niệm
SHA-1 (Secure Hash Algorithm) là thuật toán “băm” một chiều (hash) dùng
trong rất nhiều hệ thống như SSH, SSL, S/MIME, PGP, IPSec, VPNs… Nó được Cơ
quan an ninh quốc gia Mỹ phát minh năm 1995 và trở thành chuẩn bảo mật cơ sở phổ
biến nhất trên Internet và là thuật toán chữ ký điện tử duy nhất được Cơ quan Chuẩn
Chữ ký Số của chính phủ Mỹ phê chuẩn.

3.3.2. Thuật toán:
Đầu vào: chuỗi có độ dài tối đa 264 bits.

Đầu ra: giá trị băm có độ dài 160 bits.
Bước 1: nhồi thêm dữ liệu
Thông điệp được nhồi thêm các bits sao cho độ dài l ≡ 448 mod 512 hay l = n *
512 + 448 (n, l nguyên).
Bước 2: thêm vào độ dài
Độ dài của khối dữ liệu ban đầu được biểu diễn dưới dạng nhị phân 64 bit và được
thêm vào cuối chuỗi nhị phân kết quả của bước 1.
Kết quả có được từ 2 bước đầu là một khối dữ liệu có độ dài là bội số của 512.
Bước 3: khởi tạo bộ đệm MD (MD buffer)

14


Một bộ đệm 160 bit được dùng lưu trữ các giá trị băm trung gian và kết quả. Bộ
đệm được biểu diễn bằng 5 thanh ghi 32 bit với các giá trị khởi tạo ở dạng
bigiendian (byte có trọng số lớn nhất trong từ nằm ở địa chỉ thấp nhất.
A = 01 23 45 67

D = 76 54 32 10

B = 89 AB CD EF

E = C3 D2 E1 F0

C = FE DC BA 98
Bước 4: xử lý các khối dữ liệu 512 bit
Trọng tâm của giải thuật bao gồm 4 vòng lặp thực hiện tất cả 80 bước. Mỗi vòng
có đầu vào gồm khối 512 bit hiện thời và một bộ đệm 160 bit ABCDE. Các thao
tác sẽ cập nhật giá trị bộ đệm.
Mỗi bước sử dụng một hằng số Kt (0 ≤ t ≤ 79)


15


Kt = 5A827999 (0 ≤ t ≤19)
Kt = 6ED9EBA1 (20≤t≤39)
Kt = 8F1BBCDC (40 ≤ t ≤ 59)
Kt = CA62C1D6 (60 ≤ t ≤ 79)
Đầu ra của 4 vòng (bước 80) được cộng với đầu ra của bước CVq để tạo ra CVq+1.
Bước 5: xuất kết quả
Sau khi thao tác trên toàn bộ L blocks. Kết quả của khối thứ L là bảng băm 160
bit.

4. Hạ tầng khóa công khai (PKI)
4.1. Khái niệm
PKI (Public Key Infrastructure): 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.
Các quá trình này thường được thực hiện bởi một phần mềm đặt tại trung tâm và các
phần mềm phối hợp khác đặt tại địa điểm của người dùng. Khóa công khai thường
được phân phối trong chứng thực khóa công khai.
Khái niệm hạ tầng khóa công khai (PKI) thường được dùng để chỉ toàn bộ hệ
thống bao gồm nhà cung cấp chứng thực số (Certificate authority) cùng các cơ chế
liên quan đồng thời với toàn bộ việc sử dụng các thuật toán mã hóa công khai trong
trao đổi thông tin.
PKI bản chất là một hệ thống công nghệ vừa mang tính tiêu chuẩn, vừa mang
tính ứng dụng được sử dụng để khởi tạo, lưu trữ và quản lý các chứng thực điện tử
(digital certificate) cũng như các mã khóa công khai và khóa riêng.


16


4.2. Cấu trúc và vai trò của PKI trong chương trình
Một trong những khó khăn của hệ thống khóa bất đối xứng là làm sao đảm bảo
được khóa công khai mà người nhận dùng để chứng thực chính xác là khóa công khai
nhận được từ đối tác. Đó chính là lý do ra đời của PKI như một bên trung gian để
kiểm tra cũng như cung cấp các thông tin về người sở hữu khóa cho người cần chứng
thực khi cần thiết. Trong khóa luận này tôi không đi sâu tìm hiểu về PKI cũng như
cách xây dựng một hệ thống hạ tầng khóa công khai phức tạp và chi tiết mà chỉ sử
dụng chứng thư của nó như một tập tin thay thế đại diện cho khóa bí mật và khóa
công khai trong chương trình. Do đó tôi xây dựng như một PKI ở mức sơ khai với
các chức năng cơ bản: tạo khóa, cấp phát, chứng thực, kiểm tra khi người dùng ở
client sử dụng các chứng chỉ số nhằm mục đích tìm hiểu các chức năng cơ bản của
nó để có thể kết hợp với các nhà cung cấp dịch vụ chứng thư số chuyên nghiệp và
bảo mật cao hơn trong trường hợp muốn nở rộng chương trình sau này.
Với những yêu cầu về một hệ thống PKI như trên chúng ta phải thiết kế các
chức năng của chương trình cho 2 đố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ỳ
 Cấp phát và bảo mật Khóa riêng và khóa công khai của CA.
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.
 Mã hóa và giải mã bằng CA được cấp phát.


Mô hình được sử dụng là mô hình phân cấp CA đơn tầng, với chỉ một CA
được xác định làm root CA cùng toàn bộ khóa sinh ra từ nó đều nằm tập trung trên
17


một máy tính và cũng chính là máy chủ của chương trình. Root CA không bị tách rời
khỏi mạng mà nó sẽ là một máy chủ thành viên của domain và luôn hiện diện trên
mạng để cấp chứng chỉ theo yêu cầu của các máy tính, người dùng, dịch vụ hay thiết
bị mạng.
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.

4.3. Chứng chỉ số X.509
a. Giới thiệu
Chứng chỉ số là một tập tin giúp chắc chắn rằng khóa công khai thuộc về một
thực thể nào đó như người dùng, tổ chức, máy tính và điều này được xác minh bởi
một bên thứ ba đáng tin cậy thường gọi là CA (Certificate Authorities). Chứng chỉ số
chứa các thông tin nhận dạng về thực thể như tên, địa chỉ, khóa công khai (cùng nhiều
thông tin khác) và được ký số bởi khóa bí mật của CA.
Chứng chỉ số là thành phần làm nền tảng cho hoạt động của PKI (hệ thống
chứng thư số). Nó là tài liệu điện tử giúp nhận dạng và đại diện cho người dùng, tổ
chức, máy tính, thiết bị mạng hoặc dịch vụ nào đó. Nó được phát hành bởi một
Certification Authority (CA) và được liên kết với một cặp khóa công khai và khóa bí
mật.
Theo thời gian, RSA Lab đã phát triển và hoàn thiện các chứng chỉ số và các
chuẩn mã hóa của nó để tăng tính bảo mật cho phương pháp RSA, các chuẩn và chứng
chỉ này đều phải tuân theo các quy định cụ thể về các đối tượng được trừu tượng hóa
gọi là ASN.1 (Abstract Syntax Notation One, được định nghĩa trong X.208) và một
bộ quy tắc mã hóa để đại diện cho các ký tự và chuỗi số gọi là BER (Basic Encoding

Rules, được định nghĩa trong X.209). Toàn bộ lịch sử các phiên bản chứng chỉ số X
Sê-ri có thể xem thêm tại trang web />
18


Hiện nay, X.509v3 là phiên bản đang được sử dụng phổ biến nhất.

b. Cấu tạo chứng chỉ X.509v3
Được ra đời vào năm 1996, định dạng X.509 version 3 được bổ sung thêm các
phần mở rộng (extension) để khắc phục các vấn đề liên quan tới việc so khớp Issuer
Unique ID và Subject Unique ID cũng như là các vấn đề về xác thực chứng chỉ. Một
chứng chỉ X.509 version 3 có thể chứa một hoặc nhiều extension, như được thể hiện
trong hình dưới đây:

Hình II.4.3 – Các thành phần của chứng chỉ số X.509 v3

19


×