Tải bản đầy đủ (.docx) (28 trang)

MÃ HÓA DỮ LIỆU VÀ ỨNG DỤNG TRONG CHỮ KÝ ĐIỆN TỬ

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 (903.36 KB, 28 trang )

MÃ HÓA DỮ LIỆU VÀ ỨNG DỤNG TRONG CHỮ KÝ ĐIỆN
TỬ
I. ĐẶT VẤN ĐỀ
Ngày nay khi sự phát triển của Internet và công nghệ thông tin ngày càng cao. Đã cho
phép chúng ta thực hiện những giao dịch điện tử thông qua internet, nhưng tính linh hoạt
của internet cũng tạo cơ hội cho “bên thứ ba” có thể thực hiện các hành động bất hợp pháp
cụ thể là:
• Tấn công trực tiếp: Một phương pháp phổ biến đó là đoán và dò tìm username –
password theo các thông tin của nguời dùng như tên, ngày sinh, địa chỉ, số nhà Đây
là phương pháp đơn giản, dễ thực hiện và khả năng thành công cũng khá lớn, có thể
tới 30%.
• Nghe trộm và quan sát mạng: Được tiến hành ngày sau khi kẻ tấn công đã chiếm
được quyền truy nhập vào hệ thống. Thông tin không bị thay đổi nhưng tính bí mật
của nó thì đã không còn. Bên thứ ba dễ dàng ghi lại các thông tin không được mã
hóa khi truyền trên mạng như mật khẩu, số thẻ tín dụng hay các thông tin bảo mật
khác.
• Giả mạo (Tampering): Cá thông tin trong khi truyền trên mạng có thể bị thay đổi nội
dung hoặc thay thế trước khi đến đúng người nhận. Các kiểu giả mạo :
o Giả mạo các định tuyến: các thủ tục định tuyến chuẩn được dùng thông dụng
trong các cấu hình router cho phép bất kỳ người nào có thể lập lại cấu hình
cho các router này. Nó có thể được dùng để chuyển định tuyến các kết nối tới
các mạng mà bình thường chúng sẽ không được đi qua, ở đó các thông tin sẽ
bị đánh cắp.
o Giả mạo DNS: tấn công mức mạng có thể được dùng để yêu cầu các máy chủ
tên miền cung cấp các thông tin dùng để tấn công sau này.
o Giả mạo hệ thống truy nhập từ xa: có thể dễ dàng chặn một kết nối mà các bên
truyền không hề biết, chèn thêm vào hay đưa ra các lệnh mới, rồi truyền đến
nơi nhận. Từ đó có thể tấn công hay chiếm quyền điều khiển các máy tính
chạy sau firewall.
• Mạo danh: Một cá nhân có thể dựa vào thông tin của người khác để trao đổi với một
đối tượng. Có 2 hình thức mạo danh sau:


1
1
o Bắt chước: Một cá nhân có thể giả vờ như một người khác. Ví dụ, dùng địa
chỉ mail của một người khác hoặc giả mạo tên miền của một trang web.
o Xuyên tạc: Một cá nhân hay một tổ chức có thể giả vờ như một đối tượng, hay
đưa ra những thông tin về mình mà không đúng như vậy. Ví dụ, có một trang
chuyên về thiết bị nội thất mà có sử dụng thẻ tín dụng, nhưng thực tế là một
trang chuyên đánh cắp mã thẻ tín dụng.
• Chối bỏ nguồn gốc (Repudiation): Một cá nhân có thể chối cãi là đã không gửi thông
tin tài liệu khi xảy ra tranh chấp. Ví dụ điển hình là trong gửi mail, thông thường
người nhận sẽ không thể khẳng định người gửi là chính xác.
• Từ chối dịch vụ (Denial of Service): Xảy ra khi một kẻ sử dụng một dịch ụ quan
trọng của hệ thống máy tính theo cách khiến cho dịch vụ giảm chất lượng rõ rệt, quá
tải, thậm chí tê liệt hệ thống dẫn đến ngăn cản người khác không thể sử dụng được
dịch vụ đó.
• Truy nhập bất hợp pháp (Illegal Access): Xảy ra khi một người truy nhập vào một hệ
thống máy tính hay một phần nào đó của hệ thống mà không đuợc phép của người
quản trị.
• Tấn công vào yếu tố con người: Kẻ tấn công có thể liên lạc với người quản trị hệ
thống, giả làm một người sử dụng để thay đổi mật khẩu, thay đổi quyền truy nhập
của mình đối với hệ thống, hoặc thậm chí thay đổi một số cấu hình hệ thống để thực
hiện các phương pháp tấn công khác.
Do vậy để đảm bảo an toàn trong thương mại điện tử và giao dich điện tử cần có các
hình thức bảo mật có hiệu quả nhất. Các vấn đề an toàn thông tin trên mạng có thể được
giải quyết dựa trên cơ sở lý thuyết mật mã. Mật mã học được ứng dụng từ xa xưa từ thời Ai
cập cổ đại và xuyên suốt tiến trình lịch sử để truyền đi các thông tin quân sự và ngoại giao
bí mật.
II. CÁC KỸ THUẬT MÃ HÓA DỮ LIỆU
II.1 Khái niệm
Mã hóa dữ liệu là sử dụng một phương pháp biến đổi dữ liệu từ dạng bình thường sang một

dạng khác, mà một người không có thẩm quyền, không có phương tiện giải mã thì không thể
đọc hiểu được. Giải mã dữ liệu là quá trình ngược lại, là sử dụng một phương pháp biến đổi dữ
liệu đã được mã hóa về dạng thông tin ban đầu.
2
2
Quy trình mã hóa dữ liệu
Sau đây là một số khái niệm và kí hiệu liên quan về vấn đề mã hóa và giải mã dữ liệu :
- Mã hóa (Encryption): Quá trình chuyển đổi dữ liệu gốc thành dữ liệu được mã hóa
sao người khác không thể đọc hiểu được (kí hiệu E);
- Giải mã (Decryption): Quá trình ngược lại của mã hóa, biến đổi dữ liệu đã được mã
hóa thành dạng gốc ban đầu (kí hiệu D);
- Thông điệp (Message), bản gốc (Plaintext): Tệp dữ liệu chưa mã hóa (kí hiệu M).
- Bản mã (Ciphertext): Tệp dữ liệu đã được mã hóa (kí hiệu C).
Theo quy ước, khi mã hóa thì C = E(M) và khi giải mã thì M = D(C) = D(E(M))
Theo phương pháp truyền thống, người ta thường dùng cùng một khóa để mã hóa và giải
mã. Lúc đó, khóa phải được giữ bí mật tuyệt đối. Người ta gọi đây là hệ thống mã hóa cổ
điển (hay còn gọi là mã hóa đối xứng, một khóa, khóa bí mật, ).
Phương pháp khác sử dụng khóa công khai (còn gọi là phương pháp mã hóa bất đối xứng,
hay hệ thống hai khóa) trong đó khóa để mã hóa và khóa để giải mã là khác nhau. Các khóa này
tạo thành một cặp chuyển đổi ngược nhau và không khóa nào có thể suy ra được từ khóa kia.
Phần tiếp theo của bài báo sẽ đề cập đến kỹ thuật mã hóa này.
II.2 Các giải thuật mã hóa
II.2.1 Thuật toán MD5
Hàm băm (Hash Function) nhận giá trị vào (Input) là một thông điệp M ở có chiều dài bất
kỳ, để biến (băm) thành một giá trị h ở đầu ra (Output) có chiều dài cố định, h được gọi là
giá trị băm (Hash Value).
Minh họa hàm băm
3
3
Thuật toán MD5 (Message Digest 5), do Ronald Rivest thiết kế năm 1991, là xây dựng

một hàm băm để mã hóa một tín hiệu vào có chiều dài bất kỳ và đưa ra một tín hiệu (Digest)
ở đầu ra có chiều dài cố định 128 bit (tương ứng với 32 chữ số hệ 16). [2]
Dưới đây là các ví dụ mô tả các kết quả sau khi thực hiện hàm băm MD5.
- MD5("xin chao") = 2201c07c37755e663c07335cfd2f44c6
Chỉ cần một thay đổi nhỏ (chẳng hạn viết hoa chữ x thành X) cũng làm thay đổi hoàn
toàn kết quả trả về :
- MD5("Xin chao") = e05c1d9f05f5b9eb56fe907c36f469d8
Thuật toán cũng cho kết quả đối với chuỗi rỗng :
- MD5(" ") = d41d8cd98f00b204e9800998ecf8427e
II.2.2 Mã hóa đối xứng
Mã hóa đối xứng hay còn gọi là mã hóa khóa bí mật. Hai bên tham gia truyền thông sử
dụng chung một khóa, gọi là khóa bí mật để thực hiện mã hóa và giải mã bản tin truyền cho
nhau. Gọi là đối xứng vì ở đây sử dụng chung một khóa cho cả việc mã hóa và giải mã.
Mô hình hệ mã hóa đối xứng
Hệ mã hóa đối xứng
Mức độ bảo mật của phương pháp mã hóa đối xứng phụ thuộc vào mức độ bảo mật
của khóa. Việc trao đổi khóa bí mật K giữa hai bên tham gia truyền thông phải đảm bảo là
hoàn toàn bí mật. Với hệ mã hóa đối xứng, các phương pháp tấn công thường được sử dụng
là phân tích mã hóa và tìm kiếm vét cạn. Phân tích mã hóa là quá trình nỗ lực để phát hiện
4
4
ra khóa hoặc khôi phục bản tin gốc. Tìm kiếm vét cạn là cách thử tấn công toàn bộ khóa có
thể dựa trên khả năng tính toán.
Ngày nay, khi tốc độ tính toán và xử lý ngày càng phát triển mạnh, việc mã hóa sử dụng
thuật toán mã hóa khóa công khai có thể không an toàn.
II.2.3 Mã hóa công khai và các giải thuật mã hóa công khai
II.2.3.1 Mã hóa công khai
Mã hóa bất đối xứng hay còn gọi là mã hóa khóa công khai, được đưa ra vào năm 1976
bởi Diffie và Hellman. Việc ra đời của hệ mã hóa khóa công khai mở đầu cho hàng loạt
những thành tựu trong việc ứng dụng hệ mã này, tạo nên bước tiến quan trọng trong lịch sử

mã hóa.
Thuật toán mã hóa khóa công khai dựa trên các hàm toán học hơn là những phép tính bit
thông thường. Và hơn nữa, hệ mã hóa khóa công khai là bất đối xứng tức là hệ mã hóa này
sử dụng hai khóa, một khóa để mã hóa và một để giải mã, đối nghịch với mã hóa đối xứng
truyền thống là chỉ dùng 1 khóa để mã hóa và giải mã.
Việc sử dụng 2 khóa được ứng dụng nhiều trong các lĩnh vực như về độ tin cậy, phân phối
khóa hay chứng thực.
Mô hình hệ mã hóa bất đối xứng
Mã hóa công khai
Mã hóa khóa công khai được ứng dụng nhiều trong các lĩnh vực như để đảm bảo độ tin
cậy, phân phối khóa, chứng thực văn bản. Mức độ an toàn của mã hóa bất đối xứng hơn hẳn
so với hệ mã hóa đối xứng, bên tấn công không thể sử dụng phân tích mã hóa hay tấn công
5
5
vét cạn để tấn công hệ mã hóa công khai vì rất phức tạp về mặt tính toán khi biết khóa công
khai và bản tin ciphertext để tìm được plaintext.
Đặc trưng của hệ mã hóa khóa công khai là sử dụng hai khóa, trong đó một khóa để mã
hóa, khóa còn lại được giữ bí mật và dùng để giải mã. Bên gửi sử dụng khóa công khai của
bên nhận để mã hóa, như vậy ai cũng có thể thực hiện mã hóa được vì khóa đó là khóa công
khai, mọi người đều có thể biết. Nhưng khi tới bên nhận thì chỉ có người chủ đích thực mới
có thể giải được mã vì chỉ riêng người đó có khóa riêng để giải mã, những người thuộc bên
thứ 3 không có khóa riêng nên không thể giả mạo tin nhắn được.
Các bước thực hiện mã hóa theo hệ mã hóa khóa công khai :
1) Mỗi người dùng sinh một cặp khóa sử dụng để mã hóa và giải mã bản tin
2) Người dùng đăng ký 1 trong 2 khóa là công khai hoặc chứa trong tệp để người
khác có thể truy nhập được. Đó là khóa công khai.
3) Nếu người dùng A muốn gửi bản tin tới người dùng B, thì A mã hóa bản tin
sử dụng khóa công khai của B
4) Khi B nhận được bản tin, B sẽ thực hiện giải mã nó sử dụng khóa riêng.
Không ai có thể giải mã được bản tin đó vì chỉ có B biết, đó là khóa riêng của

B.
Với cách tiếp cận này, các bên tham gia truyền thông đều có thể truy nhập tới khóa công
khai, còn khóa riêng được sinh cục bộ bởi mỗi bên và do đó không bao
giờ bị phân tán để kẻ thứ 3 có thể biết. Miễn là người dùng bảo vệ tốt khóa riêng của
mình thì bảo mật truyền thông được đảm bảo
Các yêu cầu của hệ mã hóa khóa công khai : Giả sử ở đây có hai bên tham gia truyền
thông là A và B, A muốn gửi tin cho B. Các yêu cầu đặt ra với hệ mã hóa khóa công khai ở
đây là :
1) Dễ dàng về mặt tính toán để bên B có thể sinh ra cặp khóa public/private. Khóa
công khai là K
PU
và khóa riêng là K
PR

2) Dễ dàng cho bên gửi A biết được khóa công khai và bản tin cần mã hóa M để
sinh ra ciphertext tương ứng
C = E
Kpu
(M)
3) Dễ dàng cho bên nhận B thực hiện giải mã ciphertext sử dụng khóa riêng K
PR
để
phục hồi lại bản tin gốc
6
6
M = D
Kpr
(C) = D
Kpr
[ E

Kpu
(M)]
4) Việc tính toán của bên thứ 3, từ khóa công khai K
PU
để tìm được K
PR
là điều
không thể
5) Việc tính toán của bên thứ 3, từ khóa công khai K
PU
và ciphertext C để tìm được
bản tin gốc M là điều không thể
6) Một trong hai khóa được dùng để mã hóa thì khóa còn lại được dùng để giải mã
M = D
Kpr
[E
Kpu
(M)] = D
Kpu
[E
Kpr
(M)]
II.2.3.2 Giải thuật RSA (Rivest Shamir Aldeman)
Thuật toán RSA là một trong những thuật toán khóa công khai được phát triển sớm nhất,
được đưa ra vào năm 1977 bởi Ron Rivest, Adi Shamir và Len Adleman. RSA hỗ trợ cả mã
hóa và giải mã dữ liệu với độ dài khóa thay đổi. Sử dụng khóa dài giúp tăng độ an toàn của
hệ thống nhưng phải trả giá về thời gian tính toán
RSA là một khối mã hóa (block cipher) trong đó plaintext và ciphertext là những số
nguyên từ 0 đến (n-1) với n xác định
Khối plaintext M và khối ciphertext C

C = M
e
mod n
M = C
d
mod n = (M
e
)
d
mod n = M
ed
mod n
Cả người gửi và người nhận đều phải biết giá trị của n và e, và chỉ có người nhận mới biết
giá trị của d. Đây là thuật toán mã hóa khóa công khai với khóa công kha K
PU
= {e, n} và
khóa riêng K
PR
= {d, n},
Để thuật toán này thỏa mãn những điều kiện của mã hóa khóa công khai thì những yêu cầu
sau phải được thỏa mãn :
1) Có thể tìm ra giá trị của e, d, n mà thỏa mãn M
ed
= M mod n với mọi M < n
2) Dễ dàng tính toán M
e
và C
d
với mọi giá trị M < n.
3) Với e và n đã cho, việc tìm ra d là điều không thể.

Hai yêu cầu đầu tiên có thể dễ dàng đáp ứng, yêu cầu thứ 3 có thể đáp ứng với giá trị lớn
của e và n.
7
7
Sơ đồ thuật toán RSA
Thuật toán RSA được tổng quát trong 3 quá trình như sau :
1) Tạo cặp khóa
Để tạo được cặp khóa, đầu tiên cần lựa chọn 2 số nguyên tố p và q. Tiếp đó tính tích
của chúng được giá trị n tức là tính n = p x q.
Tính φ(n) = (p -1)(q -1). Hai số nguyên tố p, q lựa chọn là đủ lớn để khó có thể tính
ngược lại từ n và φ(n).
Sau đó lựa chọn số nguyên e (1 < e < φ(n) ) là số nguyên tố cùng nhau với φ(n), tức
là thỏa mãn ƯSCLN (φ(n),e) = 1.
Tính d thỏa mãn d = e
-1
mod φ(n)
Khi đó cặp khóa sinh ra với khóa công khai là K
PU
= {n, e} và khóa riêng K
PR
={n,
d}.
2) Mã hóa
Giả sử người dùng A công khai khóa của họ và người dùng B muốn gửi tin cho A thì
B sẽ mã hóa bản tin sử dụng khóa K
PU
của A : C = M
e
mod n
Sau đó truyền C đi.

8
8
3) Giải mã
Khi A nhận được bản ciphertext, A sẽ thực hiện giải mã bằng cách tính :
M = C
d
mod n
Ví dụ thuật toán RSA
Ta xét một ví dụ thuật toán RSA được thực hiện qua những bước như sau :
1. Lựa chọn 2 số nguyên tố p =7 và q =17
2. Tính n = 7 x 17 = 119 ; φ(n) = (7 -1)(17 - 1) =96
3. Chọn e < 96 và là nguyên tố cùng nhau với 96, chọn e = 5 (có thể chọn e = 3, 7 )
4. Xác định d : thỏa mãn d = e
-1
mod φ(n) = 5
-1
mod 96, ta xác định được d = 77 vì 77 x
5 = 385 = 4 x 96 + 1
5. Khóa sinh ra là K
PU
= {96, 5} và K
PR
= {96, 77}
6. Giả sử đầu vào plaintext M = 83. Sử dụng khóa công khai để mã hóa ta cần tính C =
83
5
mod 96
83
5
mod 96 = [(83

1
mod 96) x (83
2
mod 96)
2
mod 96] mod 96
83 mod 96 = 83
83
2
mod 96 = 73
C = 83
5
mod 96 = (83 x 73
2
) mod 96 = 35
7. Khi tới nơi nhận, bên nhận thực hiện giải mã sử dụng khóa riêng, cần tính M = 35
77
mod 96
35
77
mod 96 = [35
2
mod 96 x (35
5
mod 96)
15
mod 96] mod 96
35
2
mod 96 = 73

35
5
mod 96 = 35, (35
5
mod 96)
15
mod 96 = 35
3
mod 96 = 59
M = 35
77
mod 96 = (73 x 59) mod 96 = 83
II.3 So sánh mã hóa đối xứng và mã hóa công khai
Tiêu chí đánh giá Mã hóa đối xứng Mã hóa khóa công khai
Khóa - Sử dụng 1 khóa chung cho
cả mã hóa và giải mã
- Khóa được giữ bí mật
(secret - key)
- Sử dụng 2 khóa: 1 khóa
công khai (public key)
được công bố rộng rãi
dùng để mã hóa. Một khóa
9
9
riêng (private key) được
giữ bí mật dùng để giải mã
Yêu cầu để hoạt
động
- Giải thuật tương tự cho mã
hóa và giải mã

- Người gửi và người nhận
phải sử dụng cùng giải
thuật và cùng khóa
- Một giải thuật cho mã hóa
và một giải thuật cho giải

- Người gửi và người nhận
mỗi nguời có cặp khóa
cho riêng mình
Yêu cầu cho bảo
mật
- Khóa phải được giữ bí mật
- Không thể hay ít nhất
không có tính thực tế để
giải mã đoạn tin nếu thông
tin khác không có sẵn
- Kiến thức về giải thuật
cùng với các mẫu về mật
mã không đủ để xác định
khóa
- Một trong hai khóa phải
được giữ bí mật
- Không thể hay ít nhất
không có tính thực tế để
giải mã đoạn tin nếu
thông tin khác không có
sẵn
- Kiến thức về giải thuật
cùng với khóa được công
khai, cùng với các mẫu về

mật mã không đủ để xác
định được khóa bí mật
Khả năng ứng
dụng
- Dùng để mã hóa / giải mã - Dùng để mã hóa/ giải mã
- Xây dựng chữ ký số
- Trao đổi khóa bí mật
Tốc độ xử lý Rất nhanh Chậm hơn nhiều lần (có thể là
chậm hơn hàng nghìn lần).
II.4 Nhận xét về các kỹ thuật mã hóa
Hai kỹ thuật cơ bản trong lý thuyết mã hóa là mã hóa khóa bí mật (secret-key
crytography) và mã hóa khóa công khai (public – key cryptography). Hệ mã hóa khóa bí
mật giống như việc sử dụng khóa chìa, hai bên A và B đều phải có chìa giống nhau để đóng
hay mở, chỉ có hai người này mới sử dụng được khóa đó. Hệ mã hóa khóa công khai giống
như việc dùng thùng thư riêng cho mỗi người, B hay người nào đó muốn gửi gì cho A thì bỏ
vào thùng, sau đó A sẽ dùng chìa riêng để mở.
Tùy thuộc vào yêu cầu bảo mật thông tin mà người ta sẽ sử dụng hệ mã hóa khóa công
khai hay hệ mã bí mật. Ứng dụng trong phần sau của đồ án sử dụng thuật toán mã hóa khóa
công khai RSA để tạo ra chữ ký số lên thông điệp truyền đi giữa các đối tác trong hệ thống.
10
10
III. TÌM HIỂU VỀ CHỮ KÝ ĐIỆN TỬ VÀ CHỮ KÝ SỐ
III.1 Chữ ký điện tử
III.1.1 Khái niệm về chữ ký điện tử:
Chữ ký điện tử là đoạn dữ liệu gắn liền 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 tính toàn vẹn của văn bản gốc .
III.1.2 Mô hình chung của chữ ký điện tử
Chữ ký điện tử được tạo ra bằng cách áp dụng thuật toán băm một chiều trên văn bản
gốc để tạo ra bản ra bản phân tích văn bản (message digest) hay còn gọi là fingerprint, sau
đó mã hóa bằng private key tạo ra chữ ký số đính kèm với văn bản gốc để gửi đi. khi nhận,

văn bản được tách làm 2 phần, phần văn bản gốc được tính lại fingerprint để so sánh với
fingerprint cũ cũng được phục hồi từ việc giải mã chữ ký số. Như vậy ta có thể xác định
được thông điệp bị gửi không bị sửa đổi hay can thiệp trong quá trình gửi.
Mô hình chung cho chữ ký điện tử
III.1.3 Quy trình thực hiện của chữ ký điện tử:
Bước 1 : Mã hóa :
- 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 message digest. dùng giải thuật MD5 (Message Digest 5) ta được digest
có chiều dài 128-bit, dùng giải thuật SHA (Secure Hash Algorithm) ta có
chiều dại 160 bit.
- Sử dụng khóa 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 ta dùng giải thuật rsa. kết quả thu
được gọi là digital signature của message ban đầu .
- Gộp digital signature vào message ban đầu. công việc này gọi là “ký
nhận” vào message. sau khi đã ký nhận vào message, mọi sự thay đổi trên
11
11
message sẽ bị phát hiện trong giai đoạn kiểm tra. ngoài ra, việc ký nhận này
đảm bảo người nhận tin tưởng message này xuất phát từ người gửi chứ không
phải ai khác.
Bước 2: Kiểm tra :
- Dùng 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ý số của message .
- Dùng giải thuật md5 hoặc sha băm message đính kèm .
So sánh kết quả thu được ở các bước trên . Nếu trùng nhau , ta kết luận message này không
bị thay đổi trong quá trình truyền và message này là của người gửi.
III.2. Chữ ký số
III.2.1 Khái niệm
Chữ ký số là một dạng đặc biết của chữ ký điện tử sử dụng công nghệ khóa công khai
PKI (Public Key Infrastructure). Trong đó mỗi người tham gia ký cần một cặp khóa bao

gồm khóa công khai và khóa bí mật. Khóa bí mật dùng để tạo chữ ký số, khóa công khai
được dùng để thẩm định, xác thực chữ ký số.
III.2.2 Quy trình tạo và kiểm tra chữ ký số
- Tạo chữ ký số :
 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
message digest. Dùng giải thuật md5 (message digest 5) ta được digest có chiều
dài 128-bit, dùng giải thuật sha (secure hash algorithm) ta có chiều dài 160-bit.
 Sử dụng khóa 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 ta dùng giải thuật rsa. kết quả thu được gọi là
digital signature của message ban đầu.
 Gộp digital signature vào message ban đầu. công việc này gọi là “ký nhận” vào
message. sau khi đã ký nhận vào message, mọi sự thay đổi trên message sẽ bị
phát hiện trong giai đoạn kiểm tra. ngoài ra, việc ký nhận này đảm bảo người
nhận tin tưởng message này xuất phát từ người gửi chứ không phải là ai khác.
12
12
Sơ đồ mô tả quy trình ký và gửi các tệp văn bản
- Quá trình thẩm định chữ ký số :
 Dùng 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ý số của message.
 Dùng giải thuật (md5 hoặc sha) băm message đính kèm.
 So sánh kết quả thu được ở bước 1 và 2. nếu trùng nhau, ta kết luận message này
không bị thay đổi trong quá trình truyền và message này là của người gửi.
13
13
Sơ đồ mô tả quá trình nhận các tệp văn bản
- Có 3 nguyên nhân dẫn đến chữ ký không hợp lệ :
• Nếu chữ ký số bị giả mạo (không thực) và nó được giải mã với khóa công khai,
giá trị băm nhận được không phải là giá trị băm của bản tin nguyên gốc.
• Nếu bản tin bị thay đổi (bị giả mạo) sau khi ký, giá trị băm hiện thời nhận được từ

bản tin giả sẽ khác với giá trị băm ban đầu vì hai bản tin khác nhau tương ứng với
hai giá trị băm khác nhau.
• Nếu khóa công khai không tương ứng với khóa bí mật đã dùng trong quá trình ký
số, giá trị băm ban đầu nhận được khi giải mã chữ ký sẽ là một giá trị sai.
III.2.3 Tính chất của chữ ký số
Dịch vụ bảo mật (Security Service) là những dịch vụ nhằm nâng cao tính an toàn cho hệ
thống xử lý dữ liệu và các thông tin được chuyển đi giữa các tổ chức. Các dịch vụ bảo mật
đuợc hỗ trợ bao gồm :
• Xác thực (Authentication): nhằm đảm bảo các bên tham gia truyền thông đều được
xác thực.
• Đảm bảo độ tin cậy của dữ liệu (Data Confidentiality): bảo vệ dữ liệu khỏi những
tấn công thụ động ( những tấn công mà bên bị tấn công không biêt).
• Toàn vẹn dữ liệu(Data Intergrity): Đảm bảo dữ liệu truyền đi trên đường truyền
không có sự sửa đổi, thay thế hoặc tái sử dụng.
14
14
• Tính bí mật (Privacy): khả năng đảm bảo thông tin giữa người gửi và người nhận
được bảo mật.
• Không thể phủ nhận (Nonrepudiation): khả năng đảm bảo các bên tham gia giao dịch
không phủ định các hành động giao dịch trực tuyến mà họ đã thực hiện.
• Điều khiển truy nhập (Access Control): khả năng giới hạn và điều khiển các truy
nhập hệ thống.
• Khả dụng (Availability): tăng tính khả dụng cho hệ thống
III.2.4 Giải thuật chữ ký số DSA (Digital Signature Algorithm)
III.2.4.1 Khái quát về DSA
DSA là chuẩn của chính phủ Mỹ hoặc FIPS cho các chữ ký số. Giải thuật này được đề
nghị bởi Viện các tiêu chuẩn và công nghệ quốc gia (NIST) vào tháng 8/1991 để sử dụng
trong chuẩn chữ ký số (DSS), được chỉ ra trong FIPS 186 [1], được chấp nhận năm 1993.
Một sửa đổi nhỏ được đưa ra năm 1996 trong FIPS 186-1 [2], chuẩn được mở rộng hơn năm
2000, được xem như FIPS 186-2

Giải thuật DSA
III.2.4.2 Thuật toán tạo khóa cho DSA
Mỗi thực thể cần tạo một khóa công khai và khóa bí mật tương ứng. Mỗi thực thể cần thực hiện
các bước sau:
• Chọn một số nguyên tố q thỏa mãn 2
159
< q < 2
160
• Chọn t sao cho 0 ≤ t ≤8, và chọn một số nguyên tố p sao cho 2
511+64t
<p < 2
512+64t
, và
thỏa mãn q chia hết cho (p-1).
15
15
• Chọn một bộ sinh α của nhóm tuần hoàn duy nhất bậc q trong Z
*
p
o Chọn một phần tử g ∈Z
*
p
và tính
( 1)
mod
p q
g p
α

=


o Nếu α =1 , quay lại bước a
• Chọn một số nguyên ngẫu nhiên a sao cho 1 ≤ a ≤ q-1.
• Tính
mod
a
y p
α
=
.
• Khóa công khai của người dùng là (p,q, α,y); khóa bí mật là a
Chú ý : Sinh các số nguyên tố p và q cho DSA: Trong thuật toán trên ta cần sinh số nguyên
tố q trước rồi mới tìm số nguyên tố p sao cho q chia hết cho (p-1)
III.2.4.3 thuật toán tạo chữ ký số và xác minh chữ ký số
Người dùng A ký lên bản tin nhị phân có chiều dài tùy biến m. Bất kỳ người dùng B nào
đều có thể xác minh chữ ký này sử dụng khóa công khai của A.
 Thuật toán tạo chữ ký
Người dùng A cần thực hiện các bước sau:
1. Chọn ngẫu nhiên một số nguyên bí mật k, 0<k<p
2. Tính r = (α
k
mod p)mod q
3. Tính k
-1
mod q
4. Tính s = k
-1
{h(m) + a.r} mod q
5. Chữ ký của A cho m là cặp (r,s)
 Thuật toán xác minh chữ ký

Để xác minh chữ ký của A(r,s) trên m, người dùng B cần thực hiện các bước sau:
1. Nhận khóa công khai đã chứng thực của A (p,q, α,y)
2. Kiểm tra các điều kiện 0<r<q và 0<s<q. Nếu không thỏa mãn, loại bỏ chữ ký
3. Tính ω =s
-1
mod q và h(m)
4. Tính u
1
= ω.h(m)modq và u
2
= r ω mod q
5. Tính v = (α
u1
y
u2
mod p)mod q
6. Chấp nhận chữ ký khi và chỉ khi v = r
III.2.5. Chứng chỉ số
16
16
Để xác minh một chữ ký số, bên xác minh phải truy nhập tới khóa công khai của
người ký và đảm bảo rằng nó tương ứng với khóa bí mật của người ký. Tuy nhiên, một cặp
khóa bí mật và khóa công khai về bản chất không gắn với bất cứ người nào, nó đơn giản chỉ
là một cặp số. Cần có chiến lược để kết hợp một cách tin cậy một người hay một thực thể cụ
thể với cặp khóa này.
Trong một giao dịch chỉ có hai bên tham gia, mỗi bên có thể truyền khóa công khai
của cặp khóa mà bên kia sẽ dùng. Phương pháp nhận dạng này khó thực hiện nhất là khi hai
bên có khoảng cách địa lý, thường kiểm soát truyền thông nhờ một kênh không an toàn như
Internet; hoặc các bên tham gia không phải là 2 người mà là các công ty hay các thực thể
nhân tạo hoạt động thông qua các agent. Khi thương mại điện tử ngày càng phát triển mạnh

thì các giao dịch quan trọng giữa những người không quen biết, không có liên hệ bằng hợp
đồng và không bao giờ gặp lại nhau thì vấn đề xác thực/ không chối bỏ trở thành một yếu tố
của tính hiệu quả và tin cậy. Một hệ thống truyền thông mở như Internet cần có một hệ
thống xác thực nhận dạng để quản lý tình huống này.
Ví dụ : A muốn gửi thông điệp cho B và mã hóa theo phương pháp khóa công khai.
Lúc này A cần phải mã hóa thông điệp bằng public key của B. Trường hợp public key bị giả
mạo thì sao? Hacker có thể tự sinh ra một cặp khóa public key/private key, sau đó đưa cho
A khóa public key này và nói đây là khóa public key của B. Nếu A dùng public key giả này
mà tưởng là của B thì dẫn đến hệ quả mọi thông tin A truyền đi đều bị hacker đọc được.
Giải pháp cho vấn đề này được đưa ra là sử dụng một bên chứng thực thứ ba để kết
hợp nhận dạng của người ký với một khóa công khai.Với mã hóa đối xứng, người ta sử
dụng phương pháp phân phối khóa để đảm bảo các bên tham gia có thể trao đổi khóa bí mật
một cách an toàn. Còn với mã hóa công khai, để xác thực nguồn gốc của khóa công khai
hay chữ ký, người ta đề xuất bên thứ 3 đó là CA – Certification Authority.
CA là cơ quan chứng nhận, đứng ra để xác nhận chữ ký điện tử hay khóa công khai là
của cá nhân hay tổ chức cụ thể và là duy nhất. Để có thể thực hiện xác thực thì các bên tham
gia truyền thông phải cung cấp cho cơ quan chứng nhận chứng cứ định danh của mình Và
khi mà A cần truyền tin cho B, A sẽ không hỏi trực tiếp khóa công khai của B từ B mà sẽ
hỏi CA, CA khi đó cung cấp cho A bảng chứng thực của B, A sẽ dùng khóa công khai của
CA để giải mã tìm được khóa công khai của B.
17
17
Một chứng nhận điện tử có thể được xem như là một “hộ chiếu” hay “chứng minh
Một số tổ chức CA điển hình tin cậy như VeriSign, Entrust, CyberTrust, v.v Một khi
public key đã được CA chứng nhận thì có thể dùng khóa đó để trao đổi dữ liệu trên mạng
với mức độ bảo mật cao.
- Cấu trúc của một chứng nhận điện tử gồm các thành phần chính như sau:
Issuer: tên của CA tạo ra chứng nhận.
Period of validity: ngày hết hạn của chứng nhận.
Subject: bao gồm những thông tin về thực thể được chứng nhận.

Public key: khóa công khai được chứng nhận.
Signature: do private key của CA tạo ra và đảm bảo giá trị của chứng nhận.
Hình 3.11: Chứng thực thông qua CA
Để kết hợp một cặp khóa với một người ký, tổ chức cấp chứng thực đưa ra một
chứng chỉ, là một bản ghi điện tử ghi lại một khóa công khai, nhận dạng của người sở hữu
khóa và các thông tin về chứng chỉ như hạn sử dụng, số tuần tự. Một người nhận được
chứng chỉ có thể dùng khóa công khai được lưu trong chứng chỉ để xác minh chữ ký điện tử
có được tạo ra từ khóa bí mật tương ứng hay không.
18
18
Hình 3.12: Chứng chỉ số
Để đảm bảo tính xác thực cho cả bản tin và chứng chỉ, tổ chức cấp chứng chỉ thực
hiện ký số lên chứng chỉ. Chữ ký số cần có một dấu thời gian tin cậy cho phép người xác
minh xác định được chữ ký số có được tạo ra trong thời hạn hợp lệ ghi trong chứng chỉ hay
không.
Để một khóa công khai và nhận dạng của một người dùng cụ thể là sẵn dùng cho quá
trình xác minh, chứng chỉ cần được đặt trong một kho chứa sẵn dùng. Kho chứa này là các
cơ sở dữ liệu trực tuyến chứa các chứng chỉ và các thông tin khác sẵn sàng lấy ra và dùng
trong xác minh chữ ký số. Việc lấy thông tin có thể thực hiện tự động nhờ một chương trình
xác minh thực hiện truy vấn trực tiếp cơ sở dữ liệu để nhận được các chứng chỉ khi cần.
IV. Giải pháp ứng dụng chữ ký điện tử
IV.1. Giải pháp ứng dụng chữ ký điện tử trong quá trình gửi và nhận văn bản
Phần này, chúng tôi đề xuất giải pháp ứng dụng chữ ký điện tử trong hệ thống quản lý, quá
trình gửi và nhận các tệp văn bản phục vụ quản lý dựa vào thuật toán băm MD5 và thuật
toán mã hóa RSA đã trình bày ở trên.
(1). Quá trình ký và gửi các tệp văn bản
Từ file cần gửi ban đầu, chương trình sẽ sử dụn g hàm băm MD5 để mã hóa
thành chuỗi ký tự dài 128 bit, hash value (gọi là bản tóm lược).
19
19

Chương trình sử dụng thuật toán RSA để mã hóa khóa riêng (private key) của người gửi
và bản tóm lược hash value thành một dạng khác (giá trị băm ở dạng mật mã) gọi là chữ ký
điện tử.
Kết hợp file ban đầu với chữ ký điện tử thành một thông điệp đã ký và gửi đi cho người
nhận.
Sơ đồ mô tả quá trình ký và gửi các tệp văn bản
(2). Quá trình nhận các tệp văn bản
Sau khi người nhận đăng nhập vào hệ thống và thực hiện việc nhận các tệp văn bản. Hệ
thống sẽ tách thông điệp đã ký thành ra file và chữ ký điện tử. Đến giai đoạn này sẽ có 2
quá trình kiểm tra:
1. Kiểm tra file có đúng người gửi hay không?
- Sử dụng thuật toán RSA để giải mã chữ ký điện tử bằng khóa công khai (username)
của người gửi.
- Nếu giải mã không được thì file nhận được không đúng người gửi.
- Nếu giải mã thành công thì file nhận được đúng người gửi và có được Bản tóm lược 1.
2. Kiểm tra file có bị thay đổi hay không?
- Từ file được tách ra ta sử dụng hàm băm MD5 mã hóa thành Bản tóm lược 2.
- Kiểm tra Bản tóm lược 1 và Bản tóm lược 2 có giống nhau hay không? Nếu giống
nhau thì file nhận được là vẹn toàn (không bị thay đổi hay tác động), ngược lại là file đã bị
thay đổi.
20
20
21
21
IV.2. Ví dụ sử dụng chữ ký điện tử trong email
Chúng ta hãy bắt tay vào ứng dụng cụ thể sau đây để hiễu rõ hơn về cách thức dùng
chũ ký điện tử trong một giao dịch thông thường.
Trong mô ví dụ này, chúng ta cần 2 tài khoản e-mail dạng POP3.
Tài khoản e-mail POP3 thứ nhất được xác lập cho Mike (trong ví dụ này Mike sẽ dùng để
gửi email và tài khoản thứ hai xác lập cho Amanda (Amanda sẽ dùng để nhận e-mails và

kiểm tra chữ ký điện tử nhằm xác định các mails này đúng là đến từ Mike )
Cấn kiểm tra kết nối Internet đã sẵn sàng cho việc gửi và nhận e-mails. Xin nhắc lại,
Mike chính là người gửi (sender) và Amanda sẽ là người nhận mails (receiver). Trong ví dụ
này, website của công ty cổ phần Storks và các tài khoản emails của họ được một nhà cung
cấp dịch vụ/lưu trữ Web (web hosting service) trên Internet duy trì. Nhà cung cấp dịch vụ
Web cung cấp cho công ty Storks các thông tin về tài khoản email cho Mike và Amanda,
những tài khoản sẽ được sử dụng trong ví dụ này. Tất cả nhân viên dùng e-mail tại Storks
đều dùng Outlook Express hoặc Microsoft Outlook là chương trình Mail client mặc định
của mình.
IV.2.1. Cài đặt một tài khoản email POP3
1. Mike sử dụng Outlook Express là chương trình mail client mặc định của mình. Đăng
nhập vào Windows XP Computer của mình (Pro-1).
Mở Outlook Express từ menu chọn Tools, chọn Accounts.
22
22
2. Click vào Mail tab sau đó chọn Add, chọn tiếp Mail. Sau đó wizard sẽ hướng dẫn Mike
từng bước để điền name, email address và thông tin về tài khoản POP3. các thông tin về
tài khoản mail được cung cấp bởi ISAP hoặc nhà cung cấp dịch vụ Web (web hosting).
Lưu ý : bạn cần cài đặt thêm một tài khoản POP3 thứ 2 dành cho Amanda theo cùng cách
thức trên để kiểm tra chữ ký điện tử của các tài liệu nhận được từ email của Mike.
IV.2.2. Thuê một chứng chỉ số cá nhân (personal certificate) từ một nhà cung cấp
chứng chỉ số công cộng (public CA)
3. Bước kế tiếp, để có thể gửi mail với chũ ký điện tử, Mike cần liên hệ và thuê chứng chỉ
số cá nhân từ một nhà cung cấp chứng chỉ số tin cậy (trusted public CA), chẳng hạn như
Verisign hay Thawte. Thuê chứng chỉ số từ bên cung cấp thứ ba (3rd party) được đánh giá
tin cậy là điều cần thiết nếu bạn muốn chuyển email an toàn đến một người nhận không
cùng trong tổ chức của bạn. Vì thông thường, trong một tổ chức, để đảm bảo an toàn cho
các giao dịch nội bộ dùng chữ ký điện tử, tổ chức đó thường sử dụng dịch vụ cung cấp
chứng chỉ số an toàn của riêng mình (ví dụ cài đặt và triển khai dịch vụ cung cấp chứng chỉ
số Certificate Authority –CA, trên Windows Server 2003) . Tuy nhiên nhà cung cấp chứng

chỉ số cục bộ này không thường được sử dụng cho các giao dịch điện tử với các giao dịch
không cùng tổ chức của bạn.
Chính vì những lý do này, nên công ty Storks đã quyết định sử dụng chứng chỉ số của nhà
cung cấp Thawte (www.thawte.com), để trang bị cho Mike trong các giao dịch email dùng
chứng chỉ số cá nhân.
Và Mike có thể đăng ký cho mình một tài khoản Personal Email Certificate hoàn toàn miễn
phí tại đây. Truy cập weblink sau và tiến hành đăng ký để nhận chứng chỉ số cá nhân
/>
23
23
Lưu ý quan trọng:
Bạn phải cung cấp cho Thawte thông tin cá nhân để xác định bạn. Các thông tin này
là cần thiết và sẽ được các hệ thống CA của Thawte xử lý trong tiến trình cấp pháp chứng
chỉ số cho bạn. Đảm bảo phải đọc tất cả các thông tin về việc cung cấp chứng chỉ số trên
Website của Thawte và biết những việc gì cần thiết phải thực hiện trong suốt quá trình đăng
ký.
Bạn cần cung cấp thông tin cá nhân và trả lời 5 câu hỏi xác nhận cho chính mình.Sau
khi đã thực hiện đăng ký, bạn sẽ nhận một email từ Thawte với những hướng dẫn cụ thể
cách thức hoàn thành việc xin cấp chứng chỉ số.
Sau quy trình này, bạn sẽ nhận tiếp một email khác xác nhận chứng chỉ số cá nhân
của Thawte đã được cấp cho bạn. Chỉ cần click vào các link trên Email này và tiến hành cài
đặt chứng chỉ số. Click Yes và OK khi thông báo Certificate Installation Complete xuất
hiện .

24
24
IV.2.3. Xác nhận điện tử cho các emails
Một khi chứng chỉ số cá nhân cho email đã được cài đặt , bạn có thể dùng nó làm chữ ký số
và mã hóa các email gửi đi.
1. Mở Outlook Express dùng tài khoản email POP3 đầu tiên đã tạo ở trên. Chọn

Tools, chọn Options và chọn Security tab. Trên tab này, chúng ta sẽ có một tùy chọn
encrypt and digitally sign your outgoing messages. Click Apply và OK.

25
25

×