Download as pdf or txt
Download as pdf or txt
You are on page 1of 61

Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2


KHOA TIN HỌC
************

ĐỖ THỊ XUÂN THẮM

TÌM HIỂU VỀ CHỮ KÝ SỐ


(DIGITAL SIGNATURE) VÀ ỨNG
DỤNG

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC


Chuyên ngành: Tin học

HÀ NỘI - 200

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 1
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

MỤC LỤC

Lời mở đầu

Đặt vấn đề…………………………………………………………... 1

Chƣơng 1: Cơ sở lý thuyết.……………….………………………. 4

1.1. Mật mã.……………………………………………..………….. 4

1.2. Tạo số ngẫu nhiên .………………………………………….…. 4

1.3. Tính mã băm của password ……………………………..…….. 5

Chƣơng 2: Chữ ký số (Digital Signature)…………………..……. 6

2.1. Lịch sử phát triển của chữ ký số……………...…………..……. 6

2.2. Giới thiệu chung về chữ ký số …………………………..…….. 6

2.3. Định nghĩa lược đồ chữ ký số……………………..……..…….. 8

2.4. Một vài lược đồ chữ ký số……………………………...……… 8

2.4.1. Lược đồ chữ ký RSA ………………………………...……… 8

2.4.2. Lược đồ ElGamal……………………………………………. 11

Chƣơng 3: Hàm băm (hash)…………………..…………….……. 15

3.1. Giới thiệu ……………………………………………….……... 15

3.2 Định nghĩa………………………………...…………...…….…. 16

3.3. Một số hàm Hash sử dụng trong chữ ký số…………...………. 16

3.3.1. Các hàm Hash đơn giản……………………………...………. 16

3.3.2. Hàm Hash MD5……………………………………………… 18

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 2
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Chƣơng 4: Cách làm việc của chữ ký số Digital Signature)…… 26

4.1. Giới thiệu chung……………………………………………….. 26

4.2. Ký chữ ký và xác thực chữ ký số………………………………. 26

4.2.1. Ký gửi chữ ký số (mã hóa –Encrypt)..................................….. 26

4.2.2. Xác thực chữ ký số (giải mã – Decrypt)......................…..…... 28

4.3. Chương trình Demo mô phỏng chữ ký số đơn giản........…..….. 29

4.4. Phân loại chữ ký số…………………………………………….. 32

Chƣơng 5: Chữ ký số ngƣời dùng không chối bỏ

(undenial signature)………………………………………………. 34

5.1. Giới thiệu………………………………………………………. 34

5.2. Lược đồ chữ ký chống chối bỏ………………………………… 34

5.2.1. Thuật toán ký………………………………………………… 34

5.2.2. Giao thức kiểm tra…………………………………………… 35

5.2.3. Giao thức chối bỏ…………………………………………….. 37

5.3. Các định lý ………………………………..…………….……... 38

5.4. Vấn đề cần giải quyết ……………………..…………….…….. 42

Chƣơng 6: Ứng dụng chữ ký số (Digital Signature)…………...... 45

6.1. Ứng dụng chung của chữ ký số………………..………………. 45

6.2. Chữ ký “mù”…………………………………..……………….. 48

6.2.1. Ứng dụng trong bỏ phiếu điện tử…………..………………… 48

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 3
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

6.2.2 Ứng dụng trong hệ thống tiền điện tử………………………… 49

6.3. Ứng dụng chữ ký “nhóm”: Thẻ thanh toán liên ngân hàng……. 50

6.4. Cách sử dụng chữ ký số…………..……………………..……... 50

Kết luận………..……………………..……………………..………. 53

Tài liệu tham khảo…………………..……………………..……….. 54

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 4
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Lời Mở Đầu
Ngày nay, các ứng dụng Công nghệ thông tin ngày càng phổ biến rộng
rãi đã ảnh hưởng rất lớn đến diện mạo của đời sống, kinh tế, xã hội. Mọi công
việc hàng ngày của chúng ta đều có thể thực hiện được từ xa với sự hộ trợ của
máy tính và mạng internet (từ việc học tập, đi mua sắm,…). Tất cả những
thông tin liên quan đến những công việc này đều do máy tính quản lý và
truyền đi trên hệ thống mạng. Đối với những thông tin bình thường thì không
có ai chú ý đến, nhưng đối với những thông tin mang tính chất sống còn đối
với mỗi cá nhân (hay tổ chức) thì vấn đề bảo mật là hết sức quan trọng.
Trong thời đại mà thương mại điện tử đang lên ngôi, những bức thư
điện tử cũng không còn xa lạ và là công cụ không thể thiếu đối với mỗi con
người năng động, thì sự đảm bảo cho nội dung là hoàn toàn cần thiết. Hãy thử
tưởng tượng bạn đọc được trên một email thông tin rằng sản phẩm nổi tiếng A
đang bán giảm giá một nửa, hơn nữa khi mua sản phẩm A bạn còn được đọc
một năm báo C miễn phí. Thật là một cơ hội hiếm có nhưng làm sao có thể tin
tưởng được điều này? Nếu những email và bài viết kia có được chữ ký điện tử
của những người phát ngôn đáng tin cậy, ta có thể hoàn toàn yên tâm về nội
dung của chúng. Đó là đặc điểm nổi bật của chữ ký số.
Một vai trò quan trọng của chữ ký số (Digital Sinature) là khả năng bảo
mật. Chính vì lý do này mà em đã chọn đề tài “Tìm hiểu về chữ ký số
(Digital Signature) và ứng dụng”. Sau một thời gian tìm tòi, học hỏi cùng
với sự giúp đỡ tận tình của thầy, cô trong khoa đặc biệt là thầy Trần Tuấn
Vinh, em đã hoàn thành đề tài này. Trong quá trình tìm hiểu và nghiên cứu
em không tránh khỏi những thiếu sót. Vì vậy em kính mong nhận được sự
đóng góp của quý thầy cô cùng các bạn.
Sinh viên thực hiện đề tài
Đỗ Thị Xuân Thắm

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 5
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

ĐẶT VẤN ĐỀ
Ngày nay, khi ứng dụng trên mạng máy tính ngày càng trở nên phổ
biến, thuận lợi và quan trọng thì yêu cầu về an toàn mạng, về an ninh dữ liệu
trên mạng ngày càng trở nên cấp bách và cần thiết. Nguồn tài nguyên trên
mạng rất dễ bị đánh cắp hoặc phá hỏng nếu không có một cơ chế bảo mật cho
chúng hoặc do chúng ta sử dụng cơ chế bảo mật quá lỏng lẻo, sơ hở. Thông
tin trên mạng đang truyền hoặc lưu trữ đều cần được bảo vệ, hoặc các thông
tin ấy phải được giữ bí mật, hoặc chúng phải cho phép người ta kiểm tra để
tin tưởng rằng chúng không bị sửa đổi so với dạng nguyên thủy của mình và
chúng đúng là của người nhận gửi nó cho ta.
Mạng máy tính có đặc điểm nổi bật là có rất nhiều người sử dụng,
nhiều người cùng khai thác một kho tài nguyên, đặc biệt là tài nguyên của
thông tin và các điểm có người sử dụng thường phân tán về mặt địa lý. Các
đặc điểm này thể hiện lợi ích to lớn của mạng thông tin máy tính đồng thời nó
cũng là điều kiện thuận lợi cho những người (hacker) muốn phá hoại an toàn
thông tin trên mạng máy tính.
Do đó cách tốt nhất để bảo mật thông tin là mã hóa thông tin trước khi
gửi đi. Mục tiêu cơ bản của mật mã là cho phép hai người, thường được đề
cập đến như Alice và Bob, liên lạc trên kênh không an toàn theo cách mà đối
thủ Orcar không thể hiểu được cái gì đang được nói. Kênh này có thể là
đường điện thoại hoặc máy tính. Thông tin mà Alice muốn gửi đến Bob sẽ
được gọi là “bản rõ” (plaintext), có thể là bất kỳ tài liệu nào có cấu trúc tùy ý.
Alice mã bản rõ bằng cách dùng khóa xác định trước, và gửi bản rõ thu được
trên kênh không an toàn. Orcar dù thu trộm được mã kênh song không thể

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 6
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

hiểu được bản rõ là gì, nhưng Bob là người biết khóa mã có thể giải mã và
thiết lập bản rõ (văn bản).
Có hai loại khóa mật mã là khóa bí mật (private key) và khóa công khai
(public key). Trong mật mã bí mật hai người muốn trao đổi thông tin cho
nhau phải thỏa thuận chọn một cách bí mật khóa k. Từ k suy ra quy tắc mã
hóa ek và quy tắc giải mã dk. Trong hệ mật mã này dk hoặc trùng với ek hoặc
dễ dàng rút ra từ ek và tiết lộ ek sẽ làm cho hệ thống không an toàn. Độ an toàn
hệ mật mã chính là độ an toàn tính toán. Trong thực tế, một hệ mật mã là “an
toàn tính toán” nếu phương pháp tốt nhất để nó phá yêu cầu của một số lớn
không hợp lý thời gian tính toán, nghĩa là quá trình thực hiện cực kỳ phức tạp,
phức tạp đến mức ta coi là “không thể được”. Hệ mật khóa công khai đã đáp
ứng được những đòi hỏi đó. Ý tưởng nằm sau hệ mật khóa công khai là ở chỗ
nó có thể tìm ra một hệ mật trong đó không thể tính toán để xác định d k khi
biết ek.. Quy tắc mã ek có thể là công khai. Hàm mã hóa công khai ek phải dễ
dàng tính toán nhưng việc giải mã phải khó đối với bất kỳ người nào ngoài
người lập mã. Tính chất dễ tính toán và khó đảo ngược này thường được gọi
là tính chất một chiều. Muốn giải mã các thông báo nhận được một cách hiệu
quả ta cần có một cửa sập một chiều, điều này đảm bảo độ bí mật cao.
Mã hóa còn có đặc điểm là xác thực và chữ ký số. Xác thực có nhược
điểm là ở đây cả hai bên đều có chung một khóa nên không thể phân xử được
khi một trong hai người chối bỏ thông báo họ chối bỏ gửi cho người kia. Hơn
nữa trong mạng có nhiều người sử dụng, nếu một cặp khóa thỏa thuận như
vậy thì mỗi người phải lưu giữ n – 1 khóa bí mật. Khi n đủ lớn đó là một việc
phiền phức và phức tạp. Chính vì vậy mà chữ ký số ra đời và được sử dụng
nhiều hơn. Chữ ký số có nhiệm vụ giống chữ ký tay nghĩa là nó được dùng để
thực hiện chức năng xác nhận của một người gửi trên văn bản. Nó vừa mang
dấu vết không chối cãi được của người gửi, vừa gắn với từng bit của văn bản

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 7
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

mà nếu thay đổi dù chỉ một bit của văn bản thì chữ ký cũng không còn được
chấp nhận.
Chính vì những lý do trên mà em đã chọn và nghiên cứu đề tài “Tìm
hiều về chữ ký số (Digital Signature) và ứng dụng”. Trên cơ sở tìm hiểu và
nghiên cứu các lược đồ chữ ký, hàm băm và ứng dụng của chữ ký số trong
thực tế hiện nay.

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 8
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

CHƢƠNG 1
CƠ SỞ LÝ THUYẾT
1.1. Mật mã
Mật mã (cryptography) là một trong những mặt phức tạp nhất của quá
trình phát triển phần mềm mà bất kỳ nhà phát triển nào cũng sẽ sử dụng. Lý
thuyết kỹ thuật mật mã hiện đại cực kỳ khó hiểu và đòi hỏi một mức kiến thức
toán học mà tương đối ít người có được. May mắn là thư viện lớp .NET
Framework cung cấp các hiện thực dễ sử dụng cho hầu hết các kỹ thuật mật
mã thông dụng và hỗ trợ các giải thuật phổ biến nhất.
Gồm các vấn đề sau:
- Tạo số ngẫu nhiên
- Tạo và xác minh các mã băm mật mã và các mã băm có khóa.
- Sử dụng giải thuật đối xứng và không đối xứng để mã hóa và giải
mã dữ liệu.
Một số định nghĩa hay dùng:
- Encrypt (động từ, tạm dịch là mật hóa) là mã hóa thông tin theo
cách nào đó để mọi người không thể đọc được nó, trừ những ai có khóa.
- Decrypt (động từ, tạm dịch là giải mật hóa) là giải mã thông tin đã
được mật hóa.
- Key là chuỗi các bit dùng để mã hóa và giải mã thông tin.
- Plaintext là văn bản chưa được mã hóa hay đã được giải mã.
- Ciphertext là văn bản đã được mã hóa.

1.2. Tạo số ngẫu nhiên

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 9
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Bạn cần tạo một số ngẫu nhiên dùng cho các ứng dụng mật mã và bảo
mật.
Sử dụng một bộ tạo số ngẫu nhiên mật mã (cryptographic random number
generator), Ví dụ (trong C#):
System.Security.Cryptography.RNGCryptoServiceProvider.

Lớp System.Random là một bộ tạo số giả ngẫu nhiên, nó sử dụng một giải
thuật toán học để mô phỏng việc tạo số ngẫu nhiên.

1.3. Tính mã băm của password

Bạn cần lưu trữ password của người dùng một cách an toàn để bạn có
thể sử dụng nó để xác thực người dùng đó trong tương lai.
Đừng lưu trữ password của người dùng ở dạng plaintext vì đây là một
nguy cơ bảo mật lớn. Thay vào đó, hãy tạo và lưu trữ một mã băm của
password bằng một lớp giải thuật băm dẫn xuất từ lớp (trong C#)
System.Security.Cryptography.HashAlgorithm. Khi xác thực, tạo mã băm của
password và so sánh nó với mã băm đã được lưu trữ.

Các giải thuật băm là các hàm mật mã một chiều, nhận plaintext có
chiều dài thay đổi và tạo một giá trị số có kích thước cố định. Chúng là một
chiều vì gần như không thể tìm lại plaintext gốc từ mã băm. Các giải thuật
băm là tất định (deterministic); áp dụng cùng giải thuật băm cho một mẩu
plaintext luôn tạo ra cùng mã băm.

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 10
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

CHƢƠNG 2
CHỮ KÝ SỐ (DIGITAL SIGNATURE)
2.1. Lịch sử phát triển của chữ ký số

Từ thời xa xưa con người đã sử dụng các hợp đồng điện tử với việc sử
dụng mã Morse. Vào năm 1889, tòa án tối cao Hoa Kỳ đã phê chuẩn tính hiệu
lực của chữ ký điện tử hay còn gọi chữ ký số. Trong những năm gần đây chữ
ký số mới được áp dụng và sử dụng rộng rãi trong các lĩnh vực. Hiện nay, chữ
ký số có thể bao hàm các cam kết gửi bằng email, nhập các số định dạng cá
nhân (PIN) vào các máy ATM, ký bút điện tử với thiết bị màn hình cảm ứng
tại quầy tính tiền, chấp nhận tài khoản người dùng khi cài đặt phần mềm máy
tính,…

2.2. Giới thiệu chung về chữ ký số

Chữ ký số (digital signature) là gì?

Trước đây, nhiều người nhầm tưởng chữ ký số là chữ ký của người
dùng ký trên giấy sau đó được scan thành các hình ảnh đính kèm vào bức thư,
họ cho rằng đó là chữ ký số. Cũng có người cho rằng chữ ký số là các chữ ký
đính kèm, các thông tin nằm dưới mỗi bức thư điện tử được gửi đi luôn được
tự động thêm vào khi tạo email bằng các chương trình kiểm tra email như
Outlook hoặc các Webmail. Một số ý kiến khác có cái nhìn tiến bộ hơn thì
cho rằng chữ chữ ký số được ký trên các thiết bị cảm ứng, sau đó chuyển
những gì người viết trên thiết bị cảm ứng thành các file hình ảnh…Đây là
cách hiểu không chính xác về chữ ký số. Vậy chữ ký số là gì?

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 11
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Về căn bản chữ ký số cũng giống chữ ký viết tay cùng có nhiệm vụ
chung là ký nhưng có sự khác nhau cơ bản giữa chúng:
Thứ nhất, về việc ký tài liệu: Với chữ ký tay thì chữ ký là bộ phận vật lý
của tài liệu được ký. Tuy nhiên chữ ký số không gắn một cách vật lý với
thông báo được ký mà được gắn với một thông báo logic, do đó thuật toán
được dùng để “trói” chữ ký với thông báo theo một cách nào đó.
Thứ hai, về việc kiểm tra: Chữ ký tay được kiểm tra bằng cách so sánh
nó với những cái khác, những chữ ký đã xác thực. Ví dụ, một người ký trên
một tấm séc mua hàng, người bán phải so sánh chữ ký trên tấm séc với chữ ký
nằm sau trên thẻ tín dụng để kiểm tra. Tất nhiên, phương pháp này không an
toàn lắm vì nó tương đối dễ đánh lừa bởi chữ ký của người khác. Khác với
chữ ký tay, chữ ký số có thể kiểm tra bằng các thuật toán kiểm tra công khai
đã biết. Vì vậy, bất kỳ người nào đó đều có thể kiểm tra chữ ký số. Và việc sử
dụng lược đồ chữ ký an toàn sẽ ngăn chặn khả năng đánh lừa.
Điều khác nhau cơ bản giữa chữ ký “tay” và “chữ ký số” là “bản sao”
thông báo số được ký là đồng nhất với bản gốc. Trong khi đó, bản sao chép
tài liệu giấy đã ký thường là khác với bản gốc. Điều này nghĩa là phải ngăn
chặn một thông báo đã ký số bị sử dụng lại. Ví dụ, nếu Bob ký thông báo số
cho quyền Alice rút $500 từ tài khoản ngân hàng của mình, anh ta chỉ muốn
Alice làm việc đó một lần. Do đó, thông báo tự nó phải chứa thông tin để
ngăn chặn Alice làm việc đó nhiều lần.
Vậy chữ ký số (Digital Signature) là một dạng của chữ ký điện tử, là
đoạn dữ liệu gắn kèm với văn bản gốc để chứng thực tác giả của văn bản và
giúp người nhận kiểm tra được tính toàn vẹn của nội dung văn bản gốc.
Ví dụ: Chữ ký số sử dụng mật mã có khóa công khai; kết hợp chữ ký số
và mật mã; chữ ký số sử dụng thuật toán RSA; chữ ký số tách biệt đoạn tin;

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 12
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

chữ ký số dùng mật mã đối xứng; chữ ký số và xác thực sử dụng hàm một
chiều; chữ ký có trọng tài.
Lược đồ chữ ký số gồm hai thành phần: Một thuật toán ký và một thuật
toán kiểm tra. Bob có thể ký thông báo x nhờ thuật toán ký (bí mật) Sig. Chữ
ký thu được sig (x) sau đó có thể được kiểm tra nhờ thuật toán kiểm tra công
khai Ver. Khi cặp (x, y) thuật toán kiểm tra sẽ trả lời “đúng” hoặc “sai” phụ
thuộc vào việc chữ ký có đích thực hay không?

2.3. Định nghĩa lược đồ chữ ký số

Định nghĩa: Lược đồ chữ ký số là bộ năm phần tử (P, A, K, S, V) thỏa


mãn các điều kiện sau:
1. P: Là một hữu hạn các thông báo.
2. A: Tập hữu hạn các chữ ký có thể.
3. K: Tập hữu hạn các khóa, không gian khóa.
4. Với mỗi k  K,  sigk  S và verk V
Mỗi sigk: P A, verk: P * A true, false là những hàm sao cho mỗi bức
điện x  P và mỗi chữ ký y  A thỏa mãn:
 true, khi y  sig x 
Ver(x,y) =  .
 false, khi y  sig x 

* Yêu cầu: Với mỗi khóa k  K, các hàm sigk và verk là các hàm thời gian đa
thức. Với Verk là hàm công khai, sigk là hàm bí mật để tránh trường hợp Orcar
có thể giả mạo chữ ký để thông báo x. Với mỗi x chỉ duy nhất Bob tính được
chữ ký sao cho: Ver(x, y) = True.
Lược đồ chữ ký phải an toàn. Bởi vì Orcar có thể kiểm tra tất cả các
khả năng của chữ ký y nhờ thuật toán kiểm tra công khai Ver cho tới khi đạt
được yêu cầu tức là tìm được chữ ký đúng. Do đó, nếu có đủ thời gian cần
thiết Orcar có thể giả mạo được chữ ký của Bob. Vì vậy mục đích của chúng
ta là tìm lược đồ chữ ký sao cho Orcar không đủ thời gian để thử như thế.

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 13
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

2.4. Một vài lược đồ chữ ký số

2.4.1. Lược đồ chữ ký RSA

Thuật toán RSA được dùng để tạo chữ ký số cho văn bản. Thuật toán
RSA sử dụng hai khóa khóa công khai (public key) và khóa bí mật (private
key). Mỗi khóa là những số cố định trong quá trình mã hóa và giải mã. Khóa
công khai được công bố cho mọi người dùng và được dùng để mã hóa. Nhưng
thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng
khóa bí mật tương ứng. Nói cách khác mọi người đều có thể mã hóa nhưng
chỉ có người biết khóa cá nhân mới giải mã được.
Giả sử Alice muốn gửi cho Bob một văn bản có chữ ký của mình để
làm việc này Alice tạo ra một giá trị băm (hash value) của văn bản cần ký và
tính giá trị d mod n của nó (giống như khi Alice thực hiện giải mã). Giá trị
cuối cùng chính là chữ ký số của văn bản đang xét. Khi Bob nhận được văn
bản cùng với chữ ký số, anh ta tính giá trị mũ e mod n của chữ ký đồng thời
với việc tính giá trị băm của văn bản. Nếu giá trị này như nhau thì Bob biết
rằng người tạo ra chữ ký biết khóa bí mật của Alice và văn bản không bị thay
đổi sau khi ký.
Lược đồ chữ ký RSA được định nghĩa như sau:
 Tạo khóa:
Cho n= p.q; với q, p là các số nguyên tố lớn khác nhau, (n) = (p - 1)(q – 1).
Cho P = A = Zn và định nghĩa: K = {(n, p, q, a, b)}: n = p.q; p, q là các số
nguyên tố;
Các giá trị n và b là công khai; các giá trị p, q, a là bí mật.
 Tạo chữ ký: Với K = (n, p, q, a, b) xác định:
Sigk(x) = xa mod n
 Kiểm tra chữ ký: Verk(x, y) = true  x  yb mod n; x, y Zn

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 14
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Giả sử Bob muốn ký thông báo x, anh ta tính chữ ký y bằng cách:
y = sigk(x) = xa B mod n (aB là khóa công khai của Bob).
Nếu đúng, Alice công nhận là chữ ký trên x của Bob. Ngược lại, Alice sẽ
coi x không phải của Bob gửi cho mình (chữ ký tin cậy).
Người ta có thể giả mạo chữ ký của Bob như sau: chọn y, sau đó tính
x = verk(y), khi đó y = sigk(x). Một cách để khắc phục khó khăn này là việc
yêu cầu x phải có nghĩa. Do đó chữ ký giả mạo nói trên sẽ thành công với các
xác suất rất nhỏ.
Ta có thể kết hợp chữ ký với mã hóa sẽ làm cho độ an toàn của chữ ký
tăng thêm.
Giả sử rằng, Alice sẽ tính chữ ký của cô ta là y = sigAlice(x), và sau mã
hóa cả x và y bằng cách sử dụng mật mã công khai e Bob của Bob. Khi đó cô ta
nhận được z = eBob(x, y). Bản mã z sẽ được truyền tới Bob. Khi nhận được z,
việc trước tiên là anh ta giải mã bằng hàm d Bob để nhận được (x, y). Sau đó
anh ta sử dụng hàm kiểm tra khóa công khai của Alice để kiểm tra xem liệu
verAlice(x, y) = true?
Nếu Alice mã hóa x trước đó rồi sau mới ký lên bảng mã hóa thì sao?
Khi đó Alice tính:
y = sigAlice(eBob(x))
Alice sẽ truyền cặp (z, y) cho Bob. Bob sẽ giải mã z, nhận được x và
kiểm tra chữ ký y trên bảng bằng cách sử dụng verAlice. Một vấn đề tiềm ẩn
trong biện pháp này là nếu Orcar có được cặp (z, y) kiểu này, anh ta có thể
thay thế chữ ký y của Alice bằng chữ ký của anh ta: y’ = sigOrcar(eBob(x)).
Chú ý rằng Orcar có thể ký bản mã ebob(x) ngay cả khi anh ta không
biết rõ x.
Khi đó, nếu Orcar truyền (z, y’) tới Bob, chữ ký của Orcar sẽ được
kiểm tra thử vì Bob sử dụng verOrcar, và Bob có thể suy ra rằng bản rõ x xuất

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 15
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

phát từ Orcar. Điều này cũng làm cho người sử dụng hiểu rằng nên ký trước
rồi sau đó mới tiến hành mã hóa.
Ví dụ: Giả sử Bob dùng lược đồ chữ ký số RSA với n= 247, (p = 13, q
= 19); (n) = 12.18 = 216. Khóa công khai của Bob là b = 7
 a = 7-1mod 216 = 31.
Bob công khai (n, b) = (247, 7).
Bob ký lên thông báo x = 100 với chữ ký:
y = xa mod n = 10031 mod 247 = 74.
Bob gửi cặp (x, y) = (100, 74) cho Alice. Alice kiểm tra bằng cách sử dụng
khóa công khai của Bob như sau:
b 7
x = y mod n = 74 mod 247 = 100 = x.

 Alice chấp nhận y = 74 là chữ ký tin cậy. (Xem trong [8]).


2.4.2. Lược đồ ElGamal
Lược đồ chữ ký số ElGamal được giới thiệu năm 1985 và được Viện
tiêu chuẩn và Công nghệ quốc gia Mỹ sửa đổi thành chuẩn chữ ký số. Lược
đồ ElGamal không tất định cũng giống như hệ thống mã hóa công khai
ElGamal. Điều này có nghĩa là có nhiều chữ ký hợp lệ cho một thông báo bất
kỳ. Thuật toán kiểm tra có khả năng chấp nhận bất kỳ chữ ký hợp lệ nào khi
xác minh.
Lược đồ chữ ký số ElGamal được định nghĩa như sau:
 Tạo khóa:
Cho p là số nguyên tố sai cho bài toán là logarit rời rạc trong Zp là khó
và giả sử  Z *p là phần tử nguyên thủy.

Cho P = Z *p , A = Z *p  Zp-1 và định nghĩa:

K = {(p, a, , ):  = a mod p }.


Các giá trị p, ,  là công khai, a là bí mật.

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 16
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

 Tạo chữ ký
Với K = (p, a, , ) và với số ngẫu nhiên k Z *p 1 , định nghĩa: sigk(, ),

Trong đó:
 = k mod p và  = (x - a) k -1mod(p - 1).
 Kiểm tra chữ ký số:
Với x,   Z *p và  Zp-1 ta định nghĩa:

Ver (x, , ) = True  .   x mod p.


Chứng minh:
Nếu chữ ký được thiết lập đúng kiểm tra sẽ thành công vì:
   a. r. mod p
 x mod p ( v × a + r  x mod(p - 1)).
Bob tính chữ ký bằng cách dùng cả giá trị bí mật a (là một phần tử của
khóa) lẫn số ngẫu nhiên bí mật k (dùng ký hiệu trên x). Việc kiểm tra có thể
thực hiện duy nhất bằng thông tin công khai.
Ví dụ: Giả sử p = 467,  = 2, a = 127
Khi đó:  = a mod p = 2127mod 467 = 132
Giả sử Bob có thông báo x = 100 và anh ta chọn ngẫu nhiên k = 213 vì
(213, 466) =1 và 213-1 mod 466 = 431
Bob ký trên x như sau:
 = k mod p = 2213mod 467 = 29
và  = (x - a)k-1 mod(p -1) = (100 – 127. 29).431 mod 466 = 51.
Chữ ký của Bob trên x =100 là (29, 51).
Bất kỳ người nào cũng có thể kiểm tra chữ ký này bằng cách:
13229 . 2951  189 mod 467
2100  189 mod 467
Do đó chữ ký tin cậy. (Xem trong [8]).

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 17
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Bây giờ ta xét độ an toàn của lược đồ chữ ký ElGamal.


Giả sử Orcar thử giả mạo chữ ký trên thông báo x cho trước mà không
biết a, Nếu Orcar chọn giá trị  và thử tìm  tương ứng, anh ta phải tính
logarit rời rạc của logx -. Mặt khác, nếu anh ta chọn  trước và sau đó thử
tìm  thì anh ta phải giải phương trình    x mod p, trong đó  là ẩn. Bài
toán này chưa có lời giải, tuy nhiên dường như nó liên quan đến bài toán đã
nghiên cứu. Vẫn còn có khả năng là tìm  và  đồng thời để (, ) là chữ ký.
Hiện thời không ai tìm được cách giải song cũng không ai khẳng định được
nó không có lời giải.
Nếu Orcar chọn  và , sau đó thử giải để tìm x, anh ta sẽ phải tính bài
toán logarit rời rạc, tức phải tính log  . Vì thế Orcar không thể ký một
thông điệp ngẫu nhiên bằng cách này. Tuy nhiên có một cách để Orcar ký lên
thông điệp ngẫu nhiên bằng việc chọn , , x đồng thời.
Giả thiết i và j là các số nguyên 0  i  p – 2; 0  j  p – 2 và (j, p - 1) =1.
Khi đó thực hiện các phép tính:
 = i j mod p
 = -.j-1mod(p - 1)
x = - i.j-1mod(p - 1) = i. mod(p - 1).
Trong đó j-1 được tính theo module (p - 1). Ta thấy rằng (, ) là chữ ký hợp lệ
của x. Điều này được chứng minh qua việc kiểm tra:
i 1
   -(i j )- j
mod p
1
  -i.j 
-
1
 -.i.j mod p
 x mod p.
Ví dụ: p = 467;  = 2;  = 132.
Giả sử Orcar chọn i = 99; j = 179, khi đó j-1 mod(p -1) = 151. Anh ta tính:

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 18
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

 = 299 132179mod 467 = 117


 = - 177. 151 mod 466 = 41
x = 99. 41 mod 466 = 331
Và (117, 41 ) là chữ ký trên x = 331.
Kiểm tra:
132117 11741  303mod 467
và 2331  303 mod 467
Do đó chữ ký đó là hợp lệ. (Xem trong [6]).
Orcar có thể giả mạo chữ ký theo kiểu khác là bắt đầu thông báo x đã được
Bob ký. Giả sử (, ) là chữ ký hợp lệ trên x. Khi đó Orcar có khả năng ký lên
nhiều thông báo khác nhau. Giả sử i, j, h là các số nguyên 0  h; i, j  p – 2 và
(h - j, p - 1) = 1. Thực hiện các phép tính:
 = h i j mod p
 = (h - j)-1mod(p - 1)
x’ = (hx + i)(h - j)-1 mod(p - 1)
Trong đó (h - j)-1được tính theo module (p - 1).
Kiểm tra     x mod p  (, ) là chữ ký hợp lệ của x’.
'

Cả hai phương pháp đều tạo các chữ ký giả mạo hợp lệ song không
xuất hiện khả năng đối phương giả mạo chữ ký trên thông điệp có lựa chọn
của chính họ mà không phải bài toán logarit rời rạc. Vì thế không có gì nguy
hiểm về độ an toàn của lược đồ ElGamal. (Xem trong [8]).

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 19
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

CHƢƠNG 3
HÀM BĂM (HASH)
3.1. Giới thiệu

Đối với xác thực và chữ ký số ta thấy rằng các thuật toán thường nhận
đầu vào là một dòng bit có độ dài rất ngắn (64, 128, 160) và tốc độ thực hiện
chậm. Mặt khác, các thông báo cần ký thường có độ dài khác nhau và trong
nhiều trường hợp chúng có độ dài lớn cỡ vài Kilobyte hoặc Megabyte. Do
vậy, muốn ký một chữ ký ngắn trên một thông báo dài ta cần phải cắt thông
báo ra thành nhiều đoạn có độ dài hữu hạn và cố định rồi tiến hành ký độc lập
từng đoạn đó và gửi từng đoạn đó đi. Khi đó lại xuất hiện nhiều vấn đề như:
- Tốc độ thực hiện rất chậm vì phải ký trên nhiều đoạn.
- Dễ xảy ra trường hợp không sắp xếp được thông báo theo đúng trật tự
ban đầu.
- Có thể bị mất các đoạn riêng biệt trong quá trình truyền tin.
Để giải quyết vấn đề này ta dùng hàm băm (Hash). Hàm Hash chấp
nhận một thông báo có độ dài bất kỳ làm đầu vào, hàm hash sẽ biến đổi thông
báo thành một thông báo rút gọn, sau đó sẽ dùng lược đồ chữ ký để mô tả
thông báo rút gọn.
Ta có mô hình chung như sau:
Thông báo x độ dài tùy ý

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 20
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng


Thông báo rút gọn z = h(x) 160 bit


Chữ ký y = sigK(x) 320 bit
Nếu không cần bí mật x, ta sẽ gửi cặp (x, y) cho người nhận. Nếu cần
giữ bí mật x thì ta sẽ mã hóa thông báo x thành x’ và gửi cặp (x’, y).
3.2. Định nghĩa
- Hàm Hash là một hàm tính toán có hiệu quả khi ánh xạ các dòng nhị
phân có độ dài tùy ý thành dòng nhị phân có độ dài cố định nào đó.
- Hàm hash yếu: Hàm hash được gọi là yếu nếu cho một thông báo x
thì về mặt tính toán không tìm ra được thông báo x’ khác với x sao cho:
h(x’) = h(x)
- Hàm hash mạnh: Hàm hash được gọi là mạnh nếu về mặt tính toán
không tìm ra được thông báo x và x’ sao cho:
x’  x và h(x’) = h(x)
- Hàm hash có tính chất một chiều: Hàm hash có tính chất một chiều
nếu cho trước thông báo rút gọn z thì về mặt tính toán không tìm ra được
thông báo x sao cho h(x) = z.
- Hàm hash yếu làm cho chữ ký số trở nên tin cậy giống như việc ký
trên toàn thông báo.
- Hàm hash mạnh có tác dụng chống lại kẻ giả mạo tạo ra hai bản thông
báo có nội dung khác nhau, sau đó thu nhận chữ ký hợp pháp cho mỗi thông
báo dễ được xác nhận rồi lấy nó giả mạo làm chữ ký của thông báo thứ hai.
3.3. Một số hàm Hash sử dụng trong chữ ký số

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 21
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

3.3.1. Các hàm Hash đơn giản


Tất cả các hàm Hash đều được thực hiện theo nguyên tắc chung là: Đầu
vào được biểu diễn dạng một dãy các khối có độ dài n bit. Các khối bit này
được xử lý theo cùng một kiểu và lặp đi lặp lại để cuối cùng cho đầu ra có số
bit cố định.
Hàm Hash đơn giản nhất là thực hiện phép XOR từng bit một của mỗi
khối. Nó được biểu diễn như sau:
Ci = b1i  b2i …bmi
Trong đó:
Ci : Là bit thứ i của mã Hash.
m: Là số các khối đầu vào.
bji: Là bit thứ i trong khối thứ j.
: Là phép cộng module 2.
Sơ đồ hàm Hash sử dụng phép XOR:
Khối 1: b11 b12 … b1n
Khối 2: b21 b22 … b2n
… … … … …
Khối m: bm1 bm2 … bmn
Mã Hash: C1 C2 … Cn

Ci là bit kiểm tra tính chẵn lẻ cho vị trí thứ i khi ta chia tệp dữ liệu thành từng
khối, mỗi khối có n vị trí. Nó có tác dụng như kiểm tra tổng hợp tính toàn vẹn
của dữ liệu.
Khi mã hóa một thông điệp dài thì sử dụng mode CBC (The Cipher
Block Chaining), thực hiện như sau:
Giả sử thông báo X được phân thành các khối 64 bit liên tiếp:
X = X1X2 …XN

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 22
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Khi đó mã Hash C là:


C = XNH = X1 X2 … Xn.
Sau đó mã hóa toàn bộ thông báo nối với mã Hash theo mode CBC để sản
sinh ra bản mã: Y1Y2 …YN+1

3.3.2. Hàm Hash MD5

Năm 1990, Ronald Rivest đã đề xuất hàm Hash MD4, sau đó một phiên
bản mạnh hơn MD4 đã ra đời vào năm 1991 đó là MD5. Cùng thời điểm đó
SHS (Secure Hash Standard) phức tạp hơn ra đời. Nhưng MD5 và SHS đều
dựa trên nền tảng của MD4.
Ở đây ta đi sâu vào đặc điểm nguyên tắc hoạt động của MD5. Và tìm hiểu
ứng dụng của nó trong thực tế hiện nay, MD5 có thể coi là phương pháp mã
hóa cực nhanh dùng trong chữ ký số.
MD5 (Message- Digest algorithm 5) là một hàm băm để mã hóa với các
giá trị băm là 128 bit. Được xem là một chuẩn trên Internet, MD5 được sử
dụng rộng dãi trong các chương trình an ninh mạng, và cũng thường được
kiểm tra tính nguyên vẹn của tập tin.
MD5 có hai ứng dụng quan trọng:
1/ MD5 được sử dụng rộng rãi trong thế giới phần mềm để đảm bảo
rằng tập tin tải về không bị hỏng. Các nhà phát triển ứng dụng thường dùng
MD5 trong việc cho phép tải về. Khi chúng ta tải file về thì file chúng ta vừa
tải sẽ có một tín hiệu md, nếu tín hiệu này khớp với tín hiệu các nhà phát triển
ứng dụng đã “xuất bản”. Thì đồng ý tải và không có vấn đề gì. Nếu hai tín
hiệu md này khác nhau, có thể file tải về có virus hay một dạng tương tự.
2/ MD5 dùng để mã hóa mật khẩu. Mục đích của việc mã hóa này là biến đổi
một chuỗi mật khẩu thành một đoạn mã khác, sao cho đoạn mã đó không thể

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 23
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

nào lần trở lại mật khẩu. Có nghĩa là giải mã là không thể hoặc làm mất một
khoảng thời gian vô tận (đủ làm nản lòng các hacker).
Tính chất
- Có thể áp dụng trên dữ liệu có kích thước bất kỳ.
- Kết quả hàm băm là một chuỗi n-bit (n là cố định).
- Hàm băm là hàm một chiều.
- Hàm băm an toàn với hiện tượng “đụng độ”.
Thuật toán thực hiện MD5:
MD5 biến đổi một thông điệp có chiều dài bất kì thành một khối có kích
thước cố định 128 bits. Thông điệp đưa ra sẽ bị cắt thành các khối 512 bits.
Các bước thực hiện

Bước Mô tả

1 A = 0x67452301
B = 0xefcdab89
C = 0x89badcfe
D = 0x10325476
2 For i: = 1 to N/16 do

3 For j: = 0 to 15 do X[j]: = M[16i + j]

4 AA: = A; BB: = B; CC: = C; DD: = D


5 Round 1

6 Round 2
7 Round 3

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 24
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

8 AA: = A +AA; BB: = B + BB; CC: = C + CC;


DD: = D + Dd mod 2332

Giải thích thuật toán thực hiện MD5:


Giả sử x là một thông báo cần Hash. Đầu tiên bổ sung số nối vào x, sau
đó là dãy các số 0 sao cho độ dài thu được là đồng dư với 448 mod 512. Cuối
cùng, gắn thêm 64 bit nữa vào để được thông báo mở rộng. Đây là 64 bit biểu
diễn nhị phân độ dài nguyên thủy của x. Kết quả ta được thông báo mở rộng
M có độ dài chia hết 512. Vì vậy khi cắt thành những từ có độ dài 32 bit ta sẽ
được số N chia hết cho 16.
Biểu diễn M dưới dạng dãy liên tiếp N các từ có độ dài 32 bit:
M = M[0] M[1] …M[N – 1]

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 25
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Do M chia hết cho 512 nên N chia hết cho 16.
Thuật toán xây dựng M trong MD5 như sau:
Bước 1: d = 447 – (xmod 512)
Bước 2: Cho biểu diễn nhị phân của xmod 264, l= 64
Bước 3: M = x10dl
Chu kỳ xử lý của MD5: Quá trình xử lý một khối thông điệp bao gồm 4
bước tương tự nhau gọi là vòng “round”. Mỗi vòng lại gồm 16 quá trình
tương tự nhau dựa trên hàm một chiều F, phép cộng Module và phép xoay
trái,…MD5 hoạt động theo sơ đồ dưới.

Sơ đồ hoạt động của MD5


Trong khi xây dựng M bổ sung 1 vào x và thêm toàn số 0 sao cho độ
dài đồng dư với 448 mod 512 (độ dài  mod 512) và cuối cùng gắn thêm 64
bit biểu diễn nhị phân độ dài nguyên thuỷ của x. Kết quả mỗi chuỗi M có độ

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 26
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

dài chia hết cho 512. Vì vậy khi cắt thành từng từ có độ dài 32 bit ta sẽ được
số N chia hết cho 16.
Chúng ta tiếp tục xây dựng thông báo rút gọn có độ dài 128 bit được mô
tả dựa trên thuật toán xây dựng M. Các thông điệp thu gọn được xây dựng
như một sự ghép của 4 từ A, B, C, D. Các từ này gần tương tự như 4 thanh
ghi trong máy tính.
Các thanh ghi có giá trị khởi tạo từ bước 1. Xử lý mảng M[] tại mỗi thời
điểm, thực hiện 16 từ của M[] và lưu trữ trong mảng X[] tại bước 3. Tại bước
4 giá trị của A, B, C, D, được lưu trữ trong các biến AA, BB, CC, DD. Sau đó
chúng thực hiện ba vòng lặp của Hashing. Mỗi vòng thực hiện các phép toán
số học và logic trên 16 từ của X, các thuật toán hạng này sau khi thực hiện
trong 3 vòng sẽ cho giá trị mới bằng cách cộng vào các giá trị được lưu trữ
trong bước 4. Đây là phép cộng các số nguyên được rút gọn bằng phép
module 232. Khi MD5 thực hiện đầy đủ thì một điều cần thiết phải tính đến nó
là cấu trúc của bộ vi xử lý trong máy tính nhằm mục đích thực hiện phép cộng
chính xác nhất.
Trong 3 vòng Round 1, Round 2, Round 3 của MD5 thực hiện các phép
toán logic sau:
+ a << s: phép quay vòng dịch trái đại lượng a đi s bit, 1  s  32.
+a: phép đảo bit
+ : phép and
+ : phép or
+ : phép Xor
+ “”: cộng 2 số nguyên theo module 232
Mỗi vòng chỉ sử dụng một trong 3 hàm f, g, h:
f(A, B, C) = (AB)(AC)

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 27
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

g(A, B, C) = (AB)(AC)(BC)
h(A, B, C) = A  B  C
Ta ký hiệu các hằng số:
K1 = 0x5a827999
K2 = 0x6ed9eba1
Các biến Xi, i = 0,15
Bảng chân lý của 3 hàm:

A B C f(A, B, C) g(A, B, C) h(A, B, C)


0 0 0 0 0 0
0 0 1 1 0 1
0 1 0 0 0 1
0 1 1 1 1 0
1 0 0 0 0 1
1 0 1 0 1 0
1 1 0 1 1 0
1 1 1 1 1 1
3 vòng Round 1, Round 2, Round 3 được mô tả theo bảng sau:

Round 1:

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 28
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

1 A = (A + f(B, C, D) + Xo)<<3
2 D = (D + f(A, B, C) + X1)<<7
3 C = (C + f(D, A, B) + X2)<<11
4 B = (B + f(C, D, A) + X3)<<19
5 A = (A + f(B, C, D) + X4)<<3
6 D = (D + f(A, B, C) + X5)<<7
7 C = (C + f(D, A, B) + X6)<<11
8 B = (B + f(C, D, A) + X7)<<19
9 A = (A + f(B, C, D) + X8)<<3
10 D = (D + f(A, B, C) + X9)<<7
11 C = (C + f(D, A, B) + X10)<<11
12 B = (B + f(C, D, A) + X11)<<19
13 A = (A + f(B, C, D) + X12)<<3
14 D = (D + f(A, B, C) + X13)<<7
15 C = (C + f(D, A, B) + X14)<<11
16 B = (B + f(C, D, A) + X15)<<19

Round 2:
1 A = (A + g(B, C, D) + Xo + K1)<<3
2 D = (D + g(A, B, C) + X4 + K1)<<5
3 C = (C + g(D, A, B) + X8 +K1)<<9
4 B = (B + g(C, D, A) + X12 + K1)<<13
5 A = (A + g(B, C, D) + X1 + K1)<<3
6 D = (D + g(A, B, C) + X5 + K1)<<5
7 C = (C + g(D, A, B) + X8 +K1)<<9
8 B = (B + g(C, D, A) + X13 + K1)<<13

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 29
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

9 A = (A + g(B, C, D) + X2 + K1)<<3
10 D = (D + g(A, B, C) + X6 + K1)<<5
11 C = (C + g(D, A, B) + X10 +K1)<<9
12 B = (B + g(C, D, A) + X14 + K1)<<13
13 A = (A + g(B, C, D) + X3 + K1)<<3
14 D = (D + g(A, B, C) + X7 + K1)<<5
15 C = (C + g(D, A, B) + X11 +K1)<<9
16 B = (B + g(C, D, A) + X15 + K1)<<13

Round 3:
1 A = (A + h(B, C, D) +X0 + K2)<<3
2 D = (D + h(A, B, C) + X8 + K2)<<9
3 C = (C + h(D, A, B) + X4 + K2)<<11
4 B = (B + h(C, D, A) + X12 + K2)<<15
5 A = (A + h(B, C, D) +X2 + K2)<<3
6 D = (D + h(A, B, C) + X10 + K2)<<9
7 C = (C + h(D, A, B) + X6 + K2)<<11
8 B = (B + h(C, D, A) + X14 + K2)<<15
9 A = (A + h(B, C, D) +X1 + K2)<<3
10 D = (D + h(A, B, C) + X9 + K2)<<9
11 C = (C + h(D, A, B) + X5 + K2)<<11
12 B = (B + h(C, D, A) + X13 + K2)<<15
13 A = (A + h(B, C, D) +X3 + K2)<<3
14 D = (D + h(A, B, C) + X11 + K2)<<9
15 C = (C + h(D, A, B) + X7 + K2)<<11
16 B = (B + h(C, D, A) + X15 + K2)<<15

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 30
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Hàm băm MD5 (còn được gọi là hàm tóm tắt thông điệp - message
degests) sẽ trả về một chuỗi số thập lục phân gồm 32 số liên tiếp. Ngay cả khi
chuỗi đó là rỗng cũng cho kết quả phức tạp.
Cụ thể khi mã hóa dữ liệu A (bằng MD5) thành dữ liệu B. Khi giải mã
người ta gửi dữ liệu A và dữ liệu B, bên mã hóa sẽ mã hóa dữ liệu bằng MD5
ra dữ liệu C. Nếu dữ liệu C giống dữ liệu B thì là đúng. Nhưng do tính chất
của hàm băm là hàm một chiều không biến đổi trở lại nên người ta sẽ dùng
một khóa để bảo mật và giải mã.

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 31
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

CHƢƠNG 4
CÁCH LÀM VIỆC CỦA CHỮ KÝ SỐ
(DIGITAL SIGNATURE)
4.1. Giới thiệu chung

Chữ ký số (Digital Signature) được tạo ra và kiểm tra bằng mật mã, đó
là phương pháp thuộc lĩnh vực toán học, nó chuyển toàn bộ message thành
một dạng khó có thể nhận dạng và có thể giải mã. Digital Signature sử dụng
hai khóa thông dụng, một khóa để tạo ra Digital Signature hoặc chuyển
message thành dạng khó nhận dạng, một khóa dùng để kiểm tra Digital
Signature hoặc để chuyển message đã mã hóa về dạng ban đầu của nó.
Digital Signature là hình thức cơ bản để bảo mật cho một tài liệu điện
tử (e-mail, bảng tính, text file,…) đáng tin cậy. Đáng tin cậy nghĩa là bạn biết
ai tạo ra tài liệu và bạn biết nó không bị thay đổi trong bất cứ cách nào từ
người tạo ra nó.
Digital Signature làm việc dựa trên hai khóa là Public key và private
key và thực hiện qua hai giai đoạn là việc hình thành chữ ký trên tài liệu ở
phía người gửi và việc xác nhận tài liệu nhận được đã chính xác và nguyên
vẹn hay không ở phía người nhận.
Tạo chữ ký điện tử gồm hai phần mã hóa trước khi gửi đi và kiểm tra
thẩm quyền để đọc. Hay chính là diễn ra hai quá trình mã hóa (Encrypt) và và
giải mã (Decrypt).

4.2. Ký chữ ký và xác thực chữ ký điện tử

4.2.1. Ký gửi chữ ký điện tử (mã hóa - Encrypt)

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 32
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Khi một người muốn gửi cho ai đó một văn bản quan trọng, đòi hỏi văn
bản phải được ký xác nhận định danh người gửi văn bản; người gửi văn bản
sẽ làm thực hiện quy trình ký chữ ký số.

Quy trình ký chữ ký số sử dụng khóa công khai được mô phỏng như
hình vẽ:

Bản tin điện tử Khóa bí mật của


người gửi

Hàm băm

Bản tin tóm lược Mã hóa

Chữ ký số

Chữ ký số vào văn


bản điện tử

Bản tin rõ đã ký Dữ liệu sẵn sàng


được gửi đi

Hình 4.1 – Sơ đồ quá trình ký vào tài liệu điện tử dùng private key
Các bước thực hiện như sau:
Bước 1: Dùng giải thuật băm để thay đổi thông điệp cần truyền đi. Kết
quả ta được một bản tin tóm lược (Message Digest). Dùng giải thuật
(Message Digest 5) ta được bản mã có chiều dài 128-bit. Nếu dùng giải thuật
SHA (Secure Hash Algorithm) ta có chiều dài 160-bit.

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 33
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Bước 2: Sử dụng khóa bí mật (Private key) của người gửi để mã hóa
Message Digest thu được ở bước 1. Thông thường ở bước này người ta dùng
giải thuật RSA kết quả sẽ thu được chữ ký số của thông điệp ban đầu.
Bước 3: Gộp chữ số vào bản tin điện tử ban đầu. Việc này gọi là “ký
xác nhận” vào thông điệp. Sau khi ký xác nhận vào thông điệp mọi sự thay
đổi trên thông điệp sẽ bị phát hiện trong giai đoạn kiểm tra. Ngoài ra việc ký
xác nhận này đảm bảo người nhận tin tưởng thông điệp này xuất phát từ
người gửi.

4.2.2. Xác thực chữ ký số (giải mã - Decrypt )

Sau khi nhận một văn bản có đính kèm chữ ký của người gửi, người
nhận văn bản phải giải mã trở lại văn bản trên và kiểm tra xem văn bản này đã
bị thay đổi bởi người thứ ba chưa, và chữ ký đính kèm trên văn bản có đúng
của người gửi hay không (kiểm tra “chính danh”).
Quy trình giải mã được thể hiện ở hình 2:
Các bước thực hiện quá trình giải mã:
Bước 1: Bản tin điện tử có đính kèm chữ ký của người gửi, sau khi nhận
sẽ được tách riêng phần chữ ký và phần văn bản nguyên vẹn. Sử dụng khóa
công khai (Public key) của người gửi (khóa này được thông báo đến mọi
người) để giải mã chữ ký điện tử của thông điệp, kết quả là bản tin tóm lược
1.
Bước 2: Dùng giải thuật băm MD5 (hoặc SHA) để băm văn bản đã tách
phần chữ ký số, kết quả thu được văn bản tóm lược 2.
Bước 3: So sánh hai văn bản tóm lược thu được ở bước 1 và 2. Nếu
trùng nhau kết luận thông điệp này không bị thay đổi trong quá trình truyền
tin và xác nhận thông điệp này là của người gửi.

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 34
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Bản tin đã ký

Khóa công khai Tách bản tin và


của người gửi CKS

Giải mã CKS Bản tin điện tử

Hàm băm

Giải mã
Bản tin tóm lược 1

Khác
nhau có

Bản tin tóm lược 2 Giống nhau

Bản tin đã bị thay đổi

Giống nhau

Không đúng người gửi


Bản tin là toàn vẹn

Hình 4.2 – Sơ đồ quá trình xác thực điện tử dùng Public Key.
4.3. Chương trình Demo mô phỏng chữ ký số đơn giản
Giả thiết Alice muốn gửi một tài liệu A cho Bob, Alice dùng giải thuật
MD5 để tạo ra một mã duy nhất từ A mà ta vẫn gọi là chữ ký điện tử hay ký
số S(A).

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 35
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

MD5

Tài liệu Chữ ký của


Tài liệu
A
S(A)
Đặc điểm của S(A) là duy nhất với mỗi tài liệu, cho dù có sửa một ký
tự trong tài liệu A thì ngay lập tức S(A) mới khác ngay với S(A) cũ. Điều đó
để ta chắc chắn rằng mỗi tài liệu chỉ có một chữ ký duy nhất.
Hay nói cách khác với chữ ký tay ta thường dùng đó là mọi văn bản ta
đều ký một chữ ký “của ta” vào nó. Còn chữ ký số là một mã được sinh ra từ
nội dung của một tài liệu, nội dung khác thì sẽ có một mã chữ ký khác nhau
và là duy nhất. Sau đó khi ta muốn gửi tài liệu A cho người nhận, thì chúng ta
sẽ phải gửi kèm cả chữ ký S(A) theo.
Giả sử tài liệu A đến tay một người nào đó trước khi đến tay Bob và họ
cố tình sửa nội dung của nó theo mục đích khác (mục đích xấu). Khi đó Bob
sẽ nhận được tài liệu A’ tất nhiên khác A, khi đó Bob dùng MD5 để tạo chữ
ký cho A’ thì thu được S(A’), tiến hành so sánh với S(A) nhận được tất nhiên
S(A’) phải khác S(A). Khi đó Bob biết nội dung đã bị sửa.
Tuy nhiên nếu đối tượng đó vừa sửa nội dung thành A’ vừa tạo chữ ký
S(A’) và gửi cho Bob, và Bob nhận được là A’ và S(A’) khi đó Bob không có
được S(A) gốc để so sánh, và tất nhiên khi Bob dùng MD5 để tạo chữ ký cho
A’ thì nhận được S(A’) = S(A’) nhận được, vì thế mà Bob không biết được tài
liệu đã bị sửa.
Để khắc phục nhược điểm này Alice phải dùng thêm mã hóa cho chữ
ký, ta sử dụng mã RSA.

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 36
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Chương trình mô phỏng

Hình 4.3: Chương trình demo chữ ký điện tử.

Hình 4.4: Tạo chữ ký

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 37
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

4.4. Phân loại chữ ký số


Ngẫu nhiên

Khôi phục thông


điệp
Xác định

Chiến lược chữ ký

Ngẫu nhiên

Đính kèm

Xác định

+ Chiến lược chữ ký với phần đính kèm:


- 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ụ DSA, RSA, ElGamal, Schnorr,…
+ Các mức độ “Phá vỡ” chiến lược chữ ký điện tử:
- Total Break: Tìm được phương pháp hiệu quả để “giả mạo” chữ ký
hợp lệ:
+ Biết được Private key?
+ Không biết Private key nhưng tìm được phương pháp hiệu quả để
giả tạo chữ ký hợp lệ.
- Selective forgery: Cho trước một thông điệp, người tấn công có khả
năng tạo ra được chữ ký hợp lệ trên thông điệp này.
- Existential forgery: Có thể tìm và chỉ ra được một số (có thể vô
nghĩa). Nhưng dễ dàng để người tấn công có thể tạo ra được chữ ký hợp lệ
trên thông điệp này.

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 38
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

+ Phân loại tấn công


- Key-only: Người tấn công chỉ biết public key
- Message attack
+ Known-message attack: Người tấn công có các chữ ký của một
tập các thông điệp. Người tấn công biết nội dung của các thông điệp này
nhưng không được phép chọn sẵn các thông điệp.
- Chosen-message attack: Người tấn công có được các chữ ký hợp lệ
của một tập hợp các thông điệp có chọn lọc.

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 39
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

CHƢƠNG 5
CHỮ KÝ SỐ NGƢỜI DÙNG KHÔNG CHỐI BỎ
(UNDENIAL SIGNATURE)
5.1. Giới thiệu

Chữ ký số chống chối bỏ được công bố bởi Chaum và Van Antwerpen


vào năm 1989. Nó có một nét riêng mới lạ rất thú vị. Quan trọng nhất trong số
đó là chữ ký không thể kiểm tra khi không được sự cộng tác của người ký,
Bob.

Sự bảo vệ này của Bob đề phòng khả năng chữ ký trong tài liệu của anh
ta bị sao chép và phân phối bởi thiết bị điện tử mà không có sự đồng ý của
anh ta. Ví dụ, Bob có một phần mềm và chữ ký kèm theo được tạo ra nhờ
thuật toán của chữ ký số thông thường. Như vậy, sẽ không tránh khỏi trường
hợp phần mềm bị sao chép mà Bob không biết. Người mua sẽ kiểm tra chữ ký
kèm theo phần mềm nhờ thuật toán kiểm tra công khai Ver và công nhận chữ
ký là đúng. Vì chúng ta đã biết bản sao của chữ ký số là đồng nhất với bản
gốc. Đương nhiên như vậy Bob bị mất bản quyền. Để tránh điều bất lợi đó
Bob đã dùng chữ ký số chống chối bỏ. Sự kiểm tra sẽ thành công khi thực
hiện giao thức hỏi – đáp.

Lược đồ chữ ký chống chối bỏ gồm 3 phần: Thuật toán ký, giao thức
kiểm tra, giao thức chối bỏ (disavowal).

5.2. Lược đồ chữ ký chống chối bỏ

5.2.1. Thuật toán ký

 Tạo khóa:

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 40
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Cho p, q là các số nguyên tố lẻ sao cho p = 2q +1 và bài toán rời rạc trên Zp là
khó. Lấy   Zp* là một phần tử của bậc q (Nếu 0 là phần tử nguyên thủy
của Zp thì  = 0(p -1)/q mod p). Lấy 1  a  q-1 và xác định:  = a mod p.

Lấy G là phân nhóm nhân của Zp* bậc q (G bao gồm các thặng dư bậc 2
theo modun p).
Lấy P = A = G, xác định:
K =  (p, , a, ):  = a mod p
Các giá trị p, ,  là công khai, a là bí mật.
 Tạo chữ ký:
Với K = (p, , a, ) và x  G, xác định chữ ký y trên thông báo x:
y = sigk(x) = xa mod p

5.2.2. Giao thức kiểm tra

Với x, y  G, sự kiểm tra được tiến hành theo giao thức sau:
1. Alice chọn e1, e2 ngẫu nhiên, e1, e2  Zp*.
2. Alice tính c = y e  e mod p và gửi nó cho Bob.
1 2

1
3. Bob tính d = c a modq
mod p và gửi nó cho Alice.
4. Alice chấp nhận y là chữ ký đúng khi và chỉ khi:
d  x e  e mod p.
1 2

Vai trò của p, q trong lược đồ:


Lược đồ nằm trong Zp; tuy nhiên chúng ta cần tính toán trong phân
nhóm nhân G của Zp* của bậc số nguyên tố lẻ. Đặc biệt, chúng ta cần tính
phần tử nghịch đảo theo modunG, điều này lý giải tại saoGnên là
nguyên tố lẻ. Nó thuận tiện nếu lấy p = 2q+1 với q là nguyên tố lẻ. Trong
trường hợp này phân nhóm G tồn tại.
Chứng minh bước 4 của giao thức kiểm tra:

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 41
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Ở đây, chúng ta chứng minh rằng Alice sẽ chấp nhận chữ ký đúng.
Trong các phép toán dưới đây, tất cả số mũ là biến đổi theo modun q.
Ta có: d  c a mod p
1

Mà c = y e  e mod p1 2

 d  ye 1 a1
e 2 a1
mod p (1)
Ta lại có:   a mod p
  a   mod p
1
(2)
Tương tự ta cũng có: y = xa mod p
 y a = x mod p
1
(3)
Thay (2), (3) vào (1) được:
d  x e  e mod p. Đó là điều phải chứng minh.
1 2

Ví dụ: Giả sử chúng ta lấy p = 467. Từ (2) là căn nguyên thủy


=> 22 = 4 là thặng dư bậc 2 theo modun 467 và 4 là phần tử sinh của G.
Lấy  = 4. Giả sử a = 101, ta có:
 = amod p = 4101 mod 467 = 449
Bob sẽ ký thông báo x = 119 với chữ ký:
y = xa mod p = 119101 mod 467 = 129
Giả sử Alice muốn kiểm tra chữ ký y. Alice chọn ngẫu nhiên
e1 = 38, e2 = 397.
Ta có: c = y e  e mod p = 12938 449397 mod 467 = 13
1 2

Alice gửi c =13 cho Bob và Bob sẽ tính d theo:


1
d = ca modq
mod p
1
 d = 13101 mod233
mod 467 (q = (p - 1)/2 = (467 –1 )/2 = 233)
d=9
Alice kiểm tra chữ ký y theo bước 4. Có:
x e  e mod p = 11938 4397 mod 467 = 9
1 2

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 42
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

 d  x e  e mod p.
1 2

Do đó, Alice chấp nhận chữ ký là đúng. (xem trong [8])

5.2.3. Giao thức chối bỏ

Một vấn đề đặt ra, nếu sự cộng tác của Bob là cần thiết trong việc kiểm
tra chữ ký thì điều gì đã ngăn cản Bob từ chối chữ ký do chính anh tạo ra
trong thời gian gần đây? Tất nhiên, Bob có thể cho rằng chữ ký đúng đó là giả
mạo và từ chối kiểm tra nó hoặc Bob thực hiện một giao thức mà theo đó chữ
ký sẽ không được kiểm tra.
Vì vậy, một lược đồ chữ ký chống chối bỏ được kết hợp chặt chẽ với
một giao thức bỏ và nhờ điều đó Bob có thể chứng minh rằng chữ ký đó là giả
mạo. (Nếu anh ta từ chối thực hiện một phần trong giao thức chối bỏ, điều đó
đồng nghĩa với dấu hiệu chứng minh chữ ký đó là xác thực trên thực tế và anh
ta đang cố gắng từ chối chữ ký của mình).
Giao thức chối bỏ gồm 2 tiến trình của giao thức kiểm tra và có các
bước sau:
1. Alice chọn e1, e2 ngẫu nhiên, e1, e2  Zq*.
2. Alice tính c = y e  e mod p và gửi nó cho Bob.
1 2

1
3. Bob tính d = c a modq
mod p và gửi nó cho Alice.
4. Alice kiểm tra d  x e  e mod p. 1 2

5. Alice chọn f1, f2 ngẫu nhiên, f1, f2  Zq*.


6. Alice tính C = y f  f mod p và gửi nó cho Bob.
1 2

1
7. Bob tính D = c a modq
mod p và gửi nó cho Alice.
8. Alice kiểm tra D  x f  f mod p 1 2

9. Alice kết luận rằng y là chữ ký giả mạo khi và chỉ khi
(d  e ) f  (D  f ) e mod p
2 1 2 1

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 43
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Các bước 1 – 4 và 5 – 8 là hai tiến trình không thành công của giao
thức kiểm tra. Bước 9 là bước “kiểm tra tính chính xác” cho phép Alice xác
định rõ chữ ký đó có xác thực hay không nếu sự trả lời của Bob được tạo ra
như giao thức theo lý thuyết. Ví dụ: Ta lấy tương tự như ví dụ trước.
Lấy p = 467,  = 4, a = 101,  = 449.
Ký thông báo x = 286 với chữ ký y = 83 (là giả mạo). Bob muốn thuyết
phục Alice rằng chữ ký đó là không đúng. Vậy phải thực hiện như sau:
Alice chọn ngẫu nhiên e1 = 45, e2 = 237. Alice tính c = 305 và Bob trả
lời với d = 109. Alice tính: 28645. 4237mod 467 = 149.
Vì 149  109 nên Alice thực hiện tiếp giao thức chối bỏ.
Alice chọn tiếp f1 = 125, f2 = 9, ngẫu nhiên, Alice tính C = 270 và Bob
trả lời với D = 68. Alice tính: 286125.49mod 467 = 25.
Vì 25  68 nên Alice thực hiện bước cuối cùng của giao thức tức là
thực hiện kiểm tra tính xác thực.
Ta có: (109.4-237)125  188 mod 467
và (68.4-9)45  188 mod 467
(d  e ) f  (D  f ) e mod p
2 1 2 1

Vậy Alice tin chắc rằng chữ ký đó là không đúng.


Bây giờ, chúng ta cần chứng minh 2 điều là:
a. Bob có thể thuyết phục Alice rằng chữ ký không đúng đó là giả mạo.
b. Bob không thể làm cho Alice bị thuyết phục rằng chữ ký đúng đó là
giả mạo ngoại trừ xác suất rất nhỏ. (Xem trong [6], [8])

5.3. Các định lý

Định lý 5.1: Nếu y  xa mod p, Alice sẽ chấp nhận y như là một chữ ký đúng
1
của x với xác suất .
q

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 44
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Chứng minh:
Trước tiên, ta nhận xét rằng mỗi yêu cầu c có thể sảy ra tương ứng
chính xác với mỗi cặp (e1, e2) bậc q. (Bởi vì y và  đều là phần tử của nhóm
nhân G có bậc nguyên tố lẻ q). Khi Bob nhận yêu cầu c anh ta không biết
Alice đã dùng cặp (e1, e2) nào để xây dựng c. Chúng ta cần phải chứng minh
rằng, nếu y  xa mod p thì các câu trả lời của Bob d  G có thể đúng với duy
nhất một cặp (e1, e2) trong các cặp (e1, e2) bậc q.
Từ phần tử sinh  của nhóm G, chúng ta có thể viết được một số phần
tử của G như là một khả năng của  với số mũ xác định duy nhất theo modun
q. Như vậy, ta có thể viết: c = i, d = j, x = k, y = l với i, j, k, l  Zp và tất
cả tính theo modun p.
Ta xét 2 đồng dư sau:
c  ye 1 e 2 mod p (1)
d  xe 1 e 2 mod p (2)
(1)  i  l .e 1 .e 2 mod p
Với  = amod p
 i  l .e 1 . a.e 2 mod p
 i  l .e 1 + a .e 2 mod p
 i  l.e1 + a.e2 mod q (3)
(2)  j  k .e 1 . e 2 mod p
 j  k .e 1 + e 2 mod p

 j  k.e1 + e2 mod q (4)


Từ (3) và (4) ta có hệ:
i  l.e1 + a.e2 mod q
j  k.e1 + e2 mod q

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 45
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Xét D = lk a
1 = l – a.k (5)
Mặt khác: y  xa mod p (gt)
 l  k .amod p
 l  a.k mod q (6)
Từ (5) và (6)  D  0
Vì hệ số ma trận của hệ thống đồng dư theo modun q  0 nên hệ có một
nghiệm duy nhất nghĩa là ta tìm được duy nhất một cặp (e1, e2)  i, j, k,
l  Zp.
Do đó,  d  G là câu trả lời thì tất cả các câu trả lời đó chỉ đúng với
một cặp (e1, e2) trong đó các cặp (e1, e2 ) bậc q.
Vậy xác suất rằng Bob đưa ra cho Alice câu trả lời d mà sẽ được kiểm
1
tra là và đồng nghĩa với việc Alice chấp nhận y là chữ ký đúng của x với
q

xác suất.
Định lý 5.2: Khi Alice và Bob cùng thực hiện giao thức chối bỏ.
Nếu  xamod p thì (d-e 2 )f 1  (D-f 2 )e 1 mod p.
Chứng minh:
1
Ta có: d  ca mod p
Mà c  ye 1 e 2 mod p
1 1
 d  ye 1 .a .e 2 .a mod p
Mặt khác:   a mod p
1 1
 d  ye 1 .a . e 2 .a .a
mod p
Do vậy:
1 1
(d.-e 2 )f 1  (ye 1 .a .e 2 .a .a
.-e 2 )f 1 mod p
1
 ye 1 .a .f 1
.e 2 .f 1 – e 2 .f 1 mod p

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 46
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

1
 ye 1 .a .f 1
mod p (1)
Tương tự như trên ta cũng tính được:
1
(D.-f 2 )e 1  ye 1 .a .f 1
mod p (2)
1
Với D  Ca mod p
C  yf 1 f 2 mod p
  a mod p
Từ (1) và (2) (d-e 2 )f 1  (D-f 2 )e 1 mod p.
Vì vậy, nếu y là chữ ký giả mạo thì Bob có thể thuyết phục được Alice
tin chữ ký đó là giả mạo.
Định lý 5.3: Giả sử y  xa mod p, Alice thực hiện giao thức chối bỏ. Nếu
d  xe 1 e 2 mod p, D  xf 1 f 2 mod p thì khả năng (d-e 2 )f 1  (D-f 2 )e 1 mod p
1
có xác suất 1 – .
q

Chứng minh:
Ở đây, ta xét trường hợp rằng Bob có thể từ chối chữ ký đúng của anh
ta. Trong trường hợp này, chúng ta không thể giả định Bob làm theo giao thức
nghĩa là Bob có thể không xây dựng d và D như lý thuyết bởi giao thức,
chúng ta chỉ giả định Bob tạo ra 2 giá trị d và D thỏa mãn điều kiện trong
bước 4 bước 8 và bước 9 của giao thức chối bỏ.
Giả thiết chúng ta có:
y  xamod p
d  xe 1 e 2 mod p
D  xf 1 f 2 mod p
(d-e 2 )f 1  (D-f 2 )e 1 mod p
Từ (d-e 2 )f 1  (D-f 2 )e 1 mod p có:
1
(d-e 2 )f 1 .e 1  D.-f 2 mod p

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 47
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

1
 (d-e 2 )f 1 .e 1 .f 2  D mod p
1 1
 D  (de 1 -e 2 .e 1 )f 1 . f 2 mod p
1 1
Đặt d0 = de 1 -e 2 .e 1 modp _ d0 chỉ phụ thuộc vào bước 1 – 4 của giao
thức.
 D  d0f 1 .f 2 mod p
1 1
Từ d0 = de 1 -e 2 .e 1 mod p  d0e 1 = d-e 2 .mod p
 d = d0e 1 .e 2 mod p
Áp dụng định lý 5.1, chúng ta kết luận y là chữ ký đúng của d0 với xác suất
1
1 – . Nhưng chúng ta đang giả định y là chữ ký đúng của x. Do đó, với xác
q

suất cao chúng ta có: xa  d0a mod p  x = d0 (1)


Mặt khác: d  xe 1 e 2 mod p (gt)
d.-e 2  xe 1 mod p
1
(d.-e 2 )e 1  xmod p
1 1
x  d e1 .-e 2 . e 1 mod p
1 1
mà d0 = d e 1 -e 2 . e 1 mod p (theo trên)
 x  d0 (2)
Ta thấy (1) và (2) mâu thuẫn.
Vì vậy, để (d-e 2 )f 1  (D-f 2 )e 1 mod p với d  xe 1 e 2 mod p và D 
1
xf 1 f 2 mod p thì xác suất xảy ra là rất cao 1 – . Nghĩa là, Bob chỉ có thể lừa
q

1
Alice trong trường hợp này với xác suất rất nhỏ là .
q

5.4. Vấn đề cần giải quyết

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 48
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Ba định lý trong phần này đều mới chỉ đề cập tới một khía cạnh là Bob
chấp nhận hay chối bỏ chữ ký của mình mà chưa nói tới một khía cạnh khác
là Alice có thể chối bỏ chữ ký của mình đã đọc thông báo do Bob gửi. Ta giả
định rằng nếu Bob gửi cho Alice một thông báo đòi nợ nhưng Alice chưa
muốn trả hoặc không muốn trả thì cô ta sẽ lờ đi và coi như chưa nhận hay
chưa đọc thông báo đó. Vậy Bob có thể làm cách nào để chứng minh Alice đã
mở thông báo?
Để giải quyết vấn đề trên Bob và Alice thực hiện theo giao thức sau:
Trước tiên, Bob và Alice cùng xây dựng khóa K theo lược đồ trao đổi khóa
Diffie – Hellman. Giao thức như sau:
Giả sử p là số nguyên tố,  là căn nguyên thủy của Zp*; , p là công
khai. Cuộc trao đổi khóa giữa Bob và Alice theo các bước sau:
Bob chọn ngẫu nhiên aB: 0  aB  p – 2
1. Bob tính a B mod p và gửi cho Alice

2. Bob chọn ngẫu nhiên aA: 0  aA  p – 2


3. Bob tính a A mod p và gửi nó cho Bob

4. Bob tính K = (a A )a B mod p

5. Alice tính K = (a A )a B mod p


Sau đó, Bob tiếp tục xây dựng một khóa K1, K1 bí mật. Bob có thể xây
dựng K1 theo hệ mật đối xứng (DES, AES – đó là hệ một khóa. Các khóa lập
và giải mã như nhau hay dễ dàng xác định lẫn nhau. Các hệ một khóa cung
cấp một cách tuyệt vời cho việc mã hóa các tệp riêng của người dùng). Bob
và Alice tiến hành tiếp theo các bước dưới đây:
Bob dùng K1 để mã hóa thông báo x và chữ ký kèm theo:
y = sigB(x)
i = eK 1 (x, y)

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 49
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Bob gửi i cho Alice


1. Alice gửi lại thông báo x1 kèm chữ ký y1 = sigA(x1) và mã y1 bằng
K: j = eK(y1) rồi gửi cho Bob. Trong đó x1 chứa ngày giờ, lời yêu cầu
và chứa cả i.
Bob tính i1 = eK(K1) và gửi nó cho Alice.
Khi Bob và Alice tiến hành theo giao thức trên, muốn đọc được thông báo thì
Alice phải gửi lại một thông báo (đã được mã hóa bằng khóa K) tới Bob, yêu
cầu Bob gửi khóa K1 cho mình bởi vì K1 chỉ mình Bob biết. Bob kiểm tra
thông báo của Alice theo thuật toán kiểm tra công khai Ver để xác định thông
báo có đúng của Alice gửi hay không? Nếu đúng, anh ta gửi khóa K1 cho
Alice mà K1 đã được mã hóa theo K.
Bob thực hiện theo cách trên sẽ có đủ chứng cứ để chứng minh trước
tòa rằng Alice có mở và đọc thông báo anh ta gửi tới bằng cách đưa thông báo
có kèm chữ ký của Alice và cả ngày giờ Bob nhận được thông báo đó. (Xem
trong [6], [8], [5]).

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 50
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

CHƢƠNG 6
ỨNG DỤNG CHỮ KÝ SỐ (DIGITAL SIGNATURE)
6.1. Ứng dụng chung của chữ ký số

Chữ ký số đảm bảo được sự toàn vẹn cho dữ liệu được đánh dấu và xác
định dữ liệu đã được đánh dấu. Chính vì lý do này Digital Signature được sử
dụng trong nhiều lĩnh vực như thư tín điện tử, các thiết bị truyền tải điện tử,
trao đổi dữ liệu điện tử, phân phối phần mềm, lưu trữ dữ liệu, trao đổi qua
mạng và các ứng dụng khác yêu cầu sự chứng thực gốc và toàn vẹn dữ liệu.
Chữ ký số có vai trò rất lớn trong các giao dịch điện tử trong hoạt động
tài chính như hoạt động ngân sách nhà nước, tài chính, ngân hàng, thuế, kho
bạc, hải quan, chứng khoán, kiểm toán (Nghị định 27/2007/NĐ-CP/ ngày
25/02/2007). Hành chính công khai (khai sinh, khai tử, nộp thuế, cấp các loại
giấy tờ chứng chỉ,… được sử dụng nhiều ở Nhật Bản), mua bán đấu thầu qua
mạng, y tế, giáo dục.
Chữ ký số được sử dụng trong lĩnh vực thư tín điện tử, sau khi một phía
đối tác A tạo một văn bản có thể sử dụng khoá riêng để ký tên và gửi cho bên
B. Sau khi xác minh lại thông báo nhận được với độ tin cậy nào đó, bên B có
thể ký kết hợp đồng với bên A và tất nhiên lúc này bên B xác minh được
thông báo nhận được không bị biến đổi sau khi ký.
Chữ ký số cũng được sử dụng trong hệ thống chuyển tiền tự động. Giả
sử một nguồn tài chính điện tử gửi thông báo yêu cầu chuyển 10.000$ cho
một tài khoản khác. Nếu thông báo được chuyển qua mạng không được bảo

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 51
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

vệ, thì rất có thể sẽ bị đối phương thay đổi và yêu cầu chuyển 100.000$ chứ
không phải là 10.000$. Lúc này nếu không có thông tin bổ sung thì người
nhận không thể biết thông báo đã bị thay đổi. Tuy nhiên, nếu dùng Digital
Signature để đánh dấu thông báo truớc khi gửi thì người nhận sẽ phát hiện ra
sự thay đổi và yêu cầu chuyển tiền không thể thực hiện.
Chữ ký số là mô hình đảm bảo an toàn dữ liệu khi truyền trên mạng và
được sử dụng để tạo chứng nhận trong các giao dịch qua mạng Internet. Ví dụ
A gửi đến tổ chức Certificate Authority (CA) yêu cầu cấp chứng nhận điện tử
kèm theo khóa công khai của họ. Tổ chức CA sẽ “ký nhận” vào đó và cấp
Digital Certificate cho A. Khách hàng này sẽ thông báo Certificate của mình
trên mạng. Giả sử có B muốn gửi cho A một message thì công việc đầu tiên B
sẽ lấy certificate của A và kiểm tra tính hợp lệ của certificate. Nếu hợp lệ, B
sẽ lấy public key trong Digital Certificate để mã hóa dữ liệu và gửi cho A.
Chữ ký số có ứng dụng trong ngân hàng (Điều 11 đến điều 16 trong
chương 3 luật giao dịch điện tử trong hoạt động tài chính), trong quá trình
giao dịch giữa ngân hàng và thẻ của khách hàng. Khi mà tài khoản của khách
hàng (vì một lý do nào đó) phải trừ tiền (chẳng hạn rút tiền). Thì phải mất một
quãng đường từ máy rút tiền đến ngân hàng. Trên đường đi xảy ra sự cố
chẳng hạn như mất điện, rớt mạng,…thì ở máy rút tiền, tiền của khách hàng
đã được trừ nhưng ở ngân hàng thì chưa bởi vậy người ta phải đồng bộ dữ
liệu. Nghĩa là ngân hàng phải gửi dữ liệu gốc ở ngân hàng tới máy rút tiền, để
khôi phục lại tài khoản cho khách hàng. Tài khoản bao gồm: số tài khoản, số
dư tài khoản và những thông tin này phải được mã hóa.
Chữ ký số cũng được sử dụng trong nhiều lĩnh vực kinh doanh yêu cầu
thay thế chữ ký “handwritten”. Ví dụ như Digital Signature được dùng trong
Electronic Data Interchange (EDI). EDI là trao đổi thông báo tài liệu kinh
doanh giữa các máy tính với nhau. Trong chính quyền liên bang, công nghệ

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 52
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

này được sử dụng để tìm kiếm hàng hoá và các dịch vụ. Trong những giao
dịch EDI này chữ ký số hoá đã thay thế cho chữ ký “handwritten”. Ví dụ như:
hợp đồng điện tử giữa chính phủ và nhà cung cấp sẽ được điều đình. Chính
phủ sẽ gửi thông báo, đã được ký, yêu cầu thầu cho nhà cung cấp và nhà cung
cấp muốn trả lời thì trước tiên phải xác minh lại thông báo đã nhận được.
Hoạt động này đảm bảo nội dung của tài liệu không bị biến đổi và được ký
bởi một viên chức có đủ thẩm quyền. Sau khi xác minh yêu cầu thầu, nhà
cung cấp có thể tạo và ký một gói thầu điện tử rồi gửi cho chính phủ. Viên
chức đại diện chính phủ sẽ xác minh lại thông báo trả lời của nhà cung cấp và
nếu gói thầu được chấp nhận thì hai bên sẽ đề ra những điều khoản hợp đồng
chung. Hợp đồng sẽ được hai bên ký kết và nếu sau một thời gian, hai bên có
vấn đề phát sinh thì sẽ có một đối tượng thứ ba đứng ra để xác minh lại hợp
đồng và chữ ký có liên quan. Các nhà doanh nghiệp muốn tham gia đấu thầu
có thể truy cập trực tiếp vào website www.moste.gov.vn/chukydientu. Sau khi
kiểm tra thông tin chủ thầu sẽ gửi thư đến các doanh nghiệp được phép tham
gia dự thầu cùng một thẻ thông minh PKI để tải hồ sơ dự thầu từ website nói
trên.
Trong những hệ thống pháp lý, chúng ta thấy được sự cần thiết phải
đóng dấu ngày tháng năm thực hiện tài liệu, cũng như thời gian bắt đầu có
hiệu lực của nó. Thời gian điện tử có thể được đóng dấu lên mẫu điện tử và
sau đó được chữ ký số đánh dấu. Việc sử dụng chữ ký số để bảo vệ tài liệu và
tính toàn vẹn của dữ liệu và của thời gian nó đóng dấu lên. Vậy chữ ký số còn
có giá trị như con dấu (Điều 24 Luật giao dịch điện tử).
Chữ ký số cũng rất hữu ích trong việc phân phối phần mềm. Một chữ
ký số hoá được ứng dụng cho phần mềm, để nó có hiệu lực và phê chuẩn cho
việc phân phối. Trước khi cài đặt một phần mềm trên máy tính, chữ ký dùng

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 53
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

để xác minh không có sự xâm phạm bất hợp pháp (như virus) xảy ra làm thay
đổi dữ liệu phần mềm. Chữ ký để xác nhận tính toàn vẹn của phần mềm.
Trong những ứng dụng cơ sở dữ liệu, sự toàn vẹn của thông tin cất
trong cơ sở dữ liệu rất quan trọng và chữ ký số được dùng để đảm bảo khả
năng này. Chẳng hạn thông tin sẽ được ký khi vào cơ sở dữ liệu, hệ thống
cũng có thể yêu cầu cập nhật và cải biến thông tin được ký. Trước khi người
dùng sử dụng thông tin đã được ký, họ kiểm tra để xác nhận thông tin không
bị truy nhập bất hợp pháp.
Như đã biết ở trên chữ ký số là một trong những công cụ hữu hiệu để
xác thực từ xa bản quyền các thông điệp hay các đối tác trên mạng máy tính.
Trên thực tế còn có những nhu cầu xác thực đặc biệt. Đó là xác thực đối
tượng cần ẩn danh (người ký không biết nội dung sẽ ký), khi đó người ta dùng
chữ ký “mù”. Đó là cả một tập thể xác thực một đối tượng, khi đó người ta
dùng chữ ký “nhóm”. Đó là nhu cầu xác thực tập thể cho đối tượng ẩn danh,
người ta dùng chữ ký “mù nhóm”.

6.2. Chữ ký “mù” (blind signature), chữ ký “nhóm” (group signature)

Về chữ ký “mù” và ứng dụng của nó, chúng ta xem trong [7].

6.2.1. Ứng dụng trong bỏ phiếu điện tử

Theo phương thức bỏ phiếu “điện tử”, mỗi lá phiếu phải có thông tin
định danh.
Nó có thể là một con số x nào đó và phải khác nhau. Trên mỗi lá phiếu
phải có chữ ký trên số định danh x, thì lá phiếu mới có giá trị khi bầu cử.
Nếu cử tri CT chuyển ngay số định danh x cho ban kiểm phiếu KP ký,
thì họ lập tức xác lập được mối liên hệ giữa CT và x (VD qua địa chỉ nơi gửi
trên mạng).
Đó là điều mà CT không muốn vì sợ rắc rối sau này.

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 54
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Cử tri biến đổi x thành y trước khi đưa ban kiểm phiếu KP ký và xác
nhận. Ban KP ký vào y, mà không biết đó là số định danh của x đã bị che dấu
và (làm mù). Họ trao đổi chữ ký trên y là z cho CT. Cử tri “xóa mù” trên z sẽ
được chữ ký của ban KP trên số định danh là x, như vậy cử tri có quyền bầu
cử.
Với kỹ thuật này, cuộc bỏ phiếu được đảm bảo được: quyền bỏ phiếu
và bí mật. Tức là:

Chỉ có người có quyền bầu cử mới được bỏ phiếu (Vì lá phiếu đã có


chữ ký của ban kiểm phiếu KP).

6.2.2. Ứng dụng trong hệ thống tiền điện tử

Mua bán hàng trên mạng máy tính.


Giả sử Alice muốn mua quyển sách Q giá 60$ từ Bob. Giả sử hai người
cùng sử dụng dịch vụ của một ngân hàng. Giao thức giao dịch gồm ba giai
đoạn như sau:
Rút tiền (Withdrawal)
+ Alice tạo tiền điện tử C (Với thông tin: số seri, giá trị của C, VD
60$).
+ Alice yêu cầu ngân hàng ký chữ ký “mù” lên C.
+ Giao ký thành công thì ngân hàng sẽ trừ 60$ trong tài khoản của
Alice.
Tiêu tiền (Spending)
+ Bob kiểm tra chữ ký trên C. Nếu chữ ký thông điệp hợp lệ thì bob kết
thúc giao thức.
Gửi tiền (Deposit)
+ Bob lấy C từ Alice và gửi luôn cho ngân hàng.
+ Ngân hàng xác thực chữ ký trên C.

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 55
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

- Nếu chữ ký không hợp lệ, thì ngân hàng kiểm tra xem C đã được
tiêu trước đó hay chưa.
- Nếu C chưa được tiêu thì ngân hàng cộng thêm vào tài khoản
của Bob.
+ Nếu việc gửi tiền thành công, Bob sẽ gửi quyển sách Q cho Alice.
Bob “khó” có thể biết C từ tài khoản nào. Khi Bob gửi C vào tài khoản của
mình, thì ngân hàng cũng “khó” biết đồng tiền đó nhận từ Alice vì nó đã được
ký “mù”. Như vậy tiền điện tử C không lưu lại dấu vết của ai đã “tiêu” nó.

6.3. Ứng dụng chữ ký “nhóm” (group signature): Thẻ thanh toán liên
ngân hàng

- Hiện nay, thẻ thanh toán điện tử, thẻ rút tiền tự động ATM đã trở nên
phổ biến. Tuy nhiên nếu mỗi ngân hàng đều phát minh một loại thẻ thì chi phí
sẽ rất cao: Cho người dùng và cho ngân hàng. Người dùng một rút tiền hay
thanh toán họ phải tìm đến đúng “quầy” của ngân hàng đó. Hơn thế nữa họ
phải mua nhiều thẻ nếu gửi tiền nhiều ngân hàng, họ sẽ gặp khó khăn trong
việc quản lý nhiều thẻ. Mặt khác mỗi ngân hàng phải chi phí mua các “quầy”
thanh toán riêng.
Như vậy yêu cầu cần có một thẻ thanh toán chung và “quầy” thanh toán
chung giữa các ngân hàng là cần thiết. Chữ ký “nhóm” được ứng dụng trong
trường hợp này.
Một liên minh ngân hàng trong đó mỗi ngân hàng là một thành viên
trong nhóm đó, trưởng nhóm là một ngân hàng trung tâm (được tin cậy bởi
các ngân hàng khác).
Ngân hàng trung tâm tạo các khóa bí mật và khóa công khai của nhóm,
tạo các khóa bí mật cho các ngân hàng thành viên. Mỗi ngân hàng thành viên

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 56
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

đều có quyền tạo ra thẻ thanh toán chung của nhóm, nhưng chỉ cần ký của
ngân hàng đó.
6.4. Cách sử dụng chữ ký số
Bạn có thể tự tạo cho mình một chữ ký số bằng rất nhiều phần mềm sẵn
có như OpenSSL, hoặc đăng ký với một tổ chức cấp CA nào đó. Việc đăng ký
này tính phí, và chữ ký được cấp đó sẽ được tổ chức CA chứng thực. Định
dạng file *.PFX hay *.P12 sau khi tạo ra sẽ bao gồm Private Key, Public Key
và chứng thư của bạn. Nếu sử dụng Windows, chỉ cần tiến hành cài đặt và
làm theo chỉ dẫn. Kết thúc quá trình, chứng thư của bạn sẽ được cài đặt trong
máy tính, nếu bạn cài lại máy phải cài lại chứng thư đó. Tuy nhiên, việc lưu
chữ ký số của bạn trong máy tính cũng có thể phát sinh rủi ro do có thể bị sao
chép và vô tình bị lộ mật khẩu bảo vệ Private Key. Để giải quyết vấn đề này,
người ta thường dùng thẻ thông minh để lưu chữ ký số, nhằm nâng cao tính
bảo mật và duy nhất của chữ ký số.
Tính pháp lý của “Chữ ký số (CKS)”: Theo quyết định số
25/2006/QĐ-BTM về quy chế sử dụng chữ ký số của bộ Thương Mại, mọi
văn bản điện tử được ký bằng CKS có giá trị pháp lý tương đương văn bản
giấy được ký và đóng dấu. Ngoài ra, nghị định 26 về CKS và dịch vụ chứng
thực CKS đã được Thủ Tướng Chính Phủ ban hành ngày 15/2/2007, qua đó
công nhận CKS và chứng thực số có giá trị pháp lý trong giao dịch điện tử,
bước đầu thúc đẩy sự phát triển của thương mại điện tử tại Việt Nam.
Đơn vị cấp chứng chỉ số ở Việt Nam hiện nay có VASC-CA với các giải
pháp:
Chứng chỉ số cá nhân VASC-CA: giúp mã hóa thông tin, bảo mật e-
mail, sử dụng chữ ký điện tử cá nhân, chứng thực một web server thông qua
giao thức bảo mật SSL.

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 57
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Chứng chỉ số SSL Server VASC-CA: Giúp bảo mật hoạt động trao đổi
thông tin trên website, xác thực người dùng bằng SSL, xác minh tính chính
thống, chống giả mạo, cho phép thanh toán bằng thẻ tín dụng, ngăn chặn
hacker dò mật khẩu.
Chứng chỉ số nhà phát triển phần mềm VASC-CA: cho phép nhà phát
triển phần mềm ký vào các chương trình applet, script, Java software,
ActiveX control, EXE, CAB và DLL, đảm bảo tính hợp pháp của sản phẩm,
cho phép người sử dụng nhận diện được nhà cung cấp, phát hiện ra được sự
thay đổi của chương trình (do bị hỏng, bị hacker, hay virus phá hoại)
Cung cấp các giải pháp ứng dụng có dùng chữ ký số hiện nay ở Việt
Nam cũng chưa nhiều. Các công ty như Giải Pháp Thẻ Minh Thông
(www.tomica.vn), MI-SOFT(www.misoft.com.vn)... là những công ty cung
cấp tích hợp giải pháp chữ ký số HSM (Hardware Security Module) vào thẻ
thông minh và USB Token vào các ứng dụng và giao dịch cần bảo mật như:
Internet Banking, Money Tranfer, VPN hay e-Signing.
Để chữ ký số sử dụng rộng rãi ở Việt Nam, điều quan trọng là cần một
tổ chức cấp CA thừa nhận và được sự ửng hộ mạnh mẽ của Nhà Nước trong
việc ứng dụng thương mại điện tử và hành chính điện tử.

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 58
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

KẾT LUẬN
Ngày nay, cùng với sự phát triển của khoa học hiện đại và Công nghệ
thông tin, ngành mật mã đã có những bước phát triển mạnh mẽ, đạt được
nhiều kết quả lý thuyết sâu sắc và tạo cơ sở cho việc phát triển các giải pháp
bảo mật, an toàn thông tin trong mọi lĩnh vực hoạt động của con người. Đặc
biệt là những ưu điểm mà chữ ký số mang lại. Chữ ký số được biết khi trao
đổi thông tin ngày càng phổ biến trên mạng truyền thông ở nơi mà chữ ký tay
không thể phát huy tác dụng. Mà khi dùng chữ ký số sẽ đem lại hiệu quả
nhanh, không tốn nhiều thời gian và tiền bạc. Chữ ký số có ứng dụng rất lớn
trong thương mại điện tử chẳng hạn: Internet Banking (chuyển tiền qua
mạng), mua bán, đấu thầu qua mạng, chứng khoán,… Nhận thấy việc sử
dụng chữ ký số chỉ giải quyết được vấn đề bảo mật thông điệp và xác thực.
Tuy nhiên không thể đảm bảo được rằng đối tác không thể bị giả mạo và chối
bỏ. Để chống giả mạo có thể xin một chứng chỉ điện tử (Digital Certificate)
tại một cơ quan có thẩm quyền để chứng thực cho Public Key. Chính vì vậy
mà việc sử dụng chữ ký số gặp không ít những khó khăn.
Hướng phát triển có thể áp dụng được chữ ký số vào các ứng dụng
trong thực tiễn của cuộc sống để bảo mật thông tin. Và qua đó có thể thấy
được tầm quan trọng và ứng dụng rộng lớn của nó để áp dụng ngay cả trong
trường đại học, giáo dục, y tế. Chẳng hạn như xây dựng hệ thống bỏ phiếu
điện tử, tích hợp một trong các chiến lược tạo chữ ký số ở trên vào các file

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 59
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

Word, Excel,…Tuy nhiên đây cũng là một trong những lĩnh vực khó và cần
sự đầu tư của nhà nước song còn có rất nhiều điểm cần phải nghiên cứu và
hoàn thiện nhưng trong thời gian cho phép và trình độ hiểu biết còn hạn chế
nên không tránh khỏi những thiếu xót, rất mong thầy, cô và các bạn đóng góp.
Cuối cùng em xin chân thành cảm ơn thầy giáo Th.S Trần Tuấn Vinh
đã tận tình chỉ bảo và giúp đỡ em hoàn thành khóa luận này.

TÀI LIỆU THAM KHẢO


1. Tài liệu tham khảo
[1] Douglas R. stinson, Cryptography_ Theory and Practice, CRC Press,
1995.
[2] Man Toung Rhee, Hanyang University, Cryptography and Secure
Communications, McGRAW - HILL BOOK CO, 1994.
[3] Ph.D William Stallings, Network and Internetwork Security Principles
and Practice, PRENTICE HALL, 1995.
[4] Phạm Huy Điển - Hà Huy Khoái, Mã hóa thông tin - Cơ sở toán học
và ứng dụng, Viện Toán học, 2004.
[5] Hà Huy Khoái, Nhập môn số học và thuật toán, Nhà xuất bản khoa học -
1997
[6] PGS-TS. Thái Hồng Nhị - TS. Phạm Minh Việt, An toàn thông tin - Mạng
máy tính, truyền tin số và truyền dữ liệu, Nhà xuất bản khoa học và kỹ thuật,
2004.
[7] Trịnh Nhật Tiến, Trương Thị Thu Hiền, Nguyễn Đình Nam. “Một số kỹ
thuật bỏ phiếu từ xa”. Kỷ yếu HT QG về CNTT tại Thái Nguyên 8/2003.
(Nhà xuất bản khoa học kỹ thuật năm 2005, trang 416 - 423)
[8] PGS-TS. Nguyễn Bình, Giáo trình Lý thuyết mật mã học, Nhà xuất bản
Bưu Điện, 2004.
[9] Bài giảng tham khảo TH.S Trần Minh Triết.

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 60
Đề tài: Tìm hiểu về chữ ký số (Digital Signature) và ứng dụng

2. Một số trang Web tham khảo:


http://www.itl.nist.gov/fipspubs
http://www.misoft.com.vn
http://xalo.vn
http://google.com
với các từ khóa: “Digital Signature, How digital signature work, digital
signature standard, digital signature toturial, public-key cryptography…”

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 61

You might also like