Tải bản đầy đủ
2 Các ứng dụng của chữ ký số

2 Các ứng dụng của chữ ký số

Tải bản đầy đủ

24

Trong bỏ phiếu điện tử để tránh gian lận thông đồng với ban kiểm phiếu với
cử tri. Hệ thống dùng “Đa chữ ký mù” để bảo đảm sự nhất trí cao khi cấp quyền bỏ
phiếu cho cử tri.
2.2.3 Ứng dụng trong ngân hàng
Một số giao dịch trong ngân hàng, chứng khoán hiện nay đang được dùng
OTP (One Time Password). Chữ ký số là một loại chữ ký điện tử dựa trên hệ thống
mật mã không đối xứng, chưa thông tin định danh người chủ sở hữu chữ ký đó.
Các thông tin này có thể lưu trữ băng nhiều hình thức khác nhau dưới dạng
file và lưu trữ trên máy tính; trên các thiết bị đặc biệt (USB token) trên thẻ (Smart
card) hay trên sim điện thoại (SIM base CA). Tùy nhu cầu mà mỗi khách hàng chọn
những hình thức lưu trữ khác nhau, tuy nhiên SIM base CA được đánh giá cao ở
tính di động thuận tiện do gắn liền với điện thoại di động.
2.2.4 Ứng dụng trong hệ thống tiền điện tử
Một đồng tiền điện tử C có hai thông tin quan trong là số Seri và giá trị của
đồng tiền. Hệ thống phải bảo đảm các yêu cầu là Ngân hàng phát hành đồng tiền C
khó nhận biết đồng tiền này của người mua hàng đã rút ra từ tài khoản của họ. Ngân
hàng thu nạp đồng tiền C cũng khó biết đồng tiền C đã được nhận từ người bán.
Mặt khác người bán khó biết C được rút từ tài khoản nào. Để thực hiện yêu cầu
trên, chúng ta dùng “Chữ ký mù” để ký lên đồng tiền C.
Như vậy tiền điện tử C không lưu lại dấu vết của những ai đã tiêu nó. Thực
tế đồng tiền C không do một ngân hàng phát hành, nó có thể là đồng tiền chung của
nhiều ngân hàng. Vì vậy nó phải mang dấu anns của các ngân hàng liên quan. Nên
tổ chức ngân hàng sẽ thống nhất một “Đa chữ ký mù” để ký lên đồng tiền C.
2.2.5 Ứng dụng trong doanh nghiệp
Đối với doanh nghiệp, chữ ký số có thể được ứng dụng vào trong hầu hết các
hoạt động của công ty như đăng nhập thẻ thông minh (smart card), windows
security logon, trao đổi các tài liệu nhạy cảm, trao đổi email, truy cập từ xa VPN,...
việc triển khai một hệ thống PKI đối với các doanh nghiệp nhỏ là rất đơn giản, và
lợi ích mà hệ thống đem lại rất lớn so với chi phí đầu tư ban đầu.

25

2.3 Hàm băm
Ta có thể thấy rằng các sơ đồ chữ ký nói chung chỉ cho phép ký các bức điện
nhỏ. Thông thường khi sử dụng, chữ ký được sinh ra có độ dài lớn hơn so với văn
bản ký, do vậy kích thước văn bản sau khi ký sẽ tăng lên.
Một cách đơn giản để giải bài toán này là chia các bức điện dài thành nhiều
đoạn, sau đó ký lên các đoạn đó độc lập nhau. Điều này cũng tương tự như mã hóa
một chuỗi dài bản rõ bằng cách mã hoá mỗi ký tự bản rõ độc lập nhau sử dụng cùng
một bản khoá.
Biện pháp này có một số vấn đề trong việc tạo ra các chữ ký số. Trước hết
với một bức điện dài, ta kết thúc bằng một chữ ký rất lớn.
2.3.1 Khái niệm
Hàm băm là thuật toán không dùng khóa để mã hóa (ở đây dùng thuật ngữ
“băm” thay cho “mã hóa”), nó có nhiệm vụ băm tài liệu và cho kết quả là một giá
trị “băm” có kích thước cố định.

Văn bản cần
băm
( độ dài bất kỳ)

Băm
(Sử dụng hàm
băm)

Văn bản đã
băm
(độ dài cố
định)

Hình 2.5 Minh họa hàm băm
Đặc tính quan trọng của hàm băm
Hàm băm h là hàm một chiều (one – way hash ) với các đặc tính sau:
Với thông điệp đầu vào x thu được bản băm z = h(x) là duy nhất.
Nếu dữ liệu trong thông điệp x thay đổi hay bị xóa để thành thông điệp x’ thì
h(x’) ≠ h(x). Cho dù chỉ có một sự thay đổi nhỏ hay chỉ là xóa đi một bit dữ liệu
của thông điệp thì giá trị băm cũng vẫn thay đổi. Điều này có nghĩa là: hai thông
điệp hoàn toàn khác nhau thì giá trị hàm băm cũng hoàn toàn khác nhau. Nội dung
của thông điệp gốc không thể bị suy ra từ giá trị hàm băm. Nghĩa là với thông điệp
x thì dễ dàng tính được z = h(x), nhưng lại không thể tính (thực chất là khó) suy
ngược lại được x nếu chỉ biết hàm băm h(x).

26

Tính chất của hàm băm
Việc đưa hàm băm h vào dùng trong sơ đồ chữ ký số không làm giảm sự an
toàn của sơ đồ chữ ký số vì nó là bản tóm lược thông báo – bản đại diện cho thông
điệp – được ký chứ không phải là thông điệp gốc. Điều cần thiết đối với h là cần
thỏa mãn một số tính chất sau để tránh bị giả mạo:
Tính chất 2.1: Hàm băm h không va chạm yếu: h là hàm băm không có tính va
chạm yếu nếu khi cho trước một bức điện x, không thể tiến hành về mặt tính toán để
tìm ra một bức điện x’ ≠ x mà h(x’) = h(x).
Xét kiểu tấn công như sau: Thông tin cần phải truyền từ A đến B (Hình 2.6a)

(x, y)=sigK(h(x))

Người gửi
A

Người nhận
B

Hình 2.6a: Đường đi đúng của thông tin
Nhưng trên đường truyền, thông tin bị lấy trộm và bị thay đổi (Hình 2.6b)

(x, y)=sigK(h(x))

Người gửi
A

(x’, y)=sigK(h(x)
)

(x, y)=sigK(h(x))
Người nhận
B

Kẻ nghe lén lấy trộm
Hình 2.6b: Thông tin bị lấy trộm và bị thay đổi trên đường truyền
Người A gửi cho B (x, y) với y = sigK(h(x)). Nhưng trên đường truyền, tin
bị lấy trộm. Tên trộm bằng cách nào đó tìm được một bản thông điệp x’ có h(x’) =
h(x) mà x’ ≠ x. Sau đó, hắn đưa x’ thay thế x rồi truyền tiếp cho B. Người B nhận
được và vẫn xác thực thông tin đúng đắn.

27

Tính chất 2.2: Hàm băm h không va chạm mạnh: h là hàm băm không có tính va
chạm mạnh nếu không có khả năng tính toán để tìm ra hai bức thông điệp x và x’
mà x ≠ x’ và h(x’) = h(x).
Xét một kiểu tấn công như sau: Đầu tiên, kẻ giả mạo tìm được hai bức thông
điệp x’ và x (x’≠ x) mà có h(x’) = h(x) (ta coi x là hợp lệ, còn x’ là giả mạo). Tiếp
theo kẻ này đưa cho A và thuyết phục A ký vào bản tóm lược h(x) để nhận được y.
Khi đó (x’, y) là bức thông điệp giả mạo nhưng hợp lệ.
Tính chất 2.3: Hàm băm h là hàm một chiều: h là một chiều nếu khi cho trước một
bản tóm lược thông báo z thì không thể thực hiện về mặt tính toán để tìm ra thông
điệp ban đầu x sao cho h(x) = z.
Xét một kiểu tấn công như sau: Việc giả mạo chữ ký trên bản tóm lược z
thường xảy ra với các sơ đồ chữ ký số. Giả sử kẻ giả mạo tính chữ ký trên bản tóm
lược z, sau đó tìm được bản thông điệp x’ được tính ngược từ bản đại diện z = h(x).
Tên trộm thay thế bản thông điệp x hợp lệ bằng bản thông điệp x’ giả mạo
nhưng lại có z = h(x’). Và ký số trên bản đại diện cho x’ bằng đúng chữ ký hợp lệ.
Và như vậy thì (x’, y) là bức điện giả mạo nhưng hợp lệ.
Ý nghĩa của việc dùng thông điệp và hàm băm
Hàm băm trợ giúp cho các sơ đồ chữ ký nhằm giảm dung lượng của dữ liệu
cần thiết để truyền qua mạng (lúc này chỉ còn bao gồm dung lượng của bức thông
điệp gốc và 256 bit (sử dụng MD) hay 320 bit (sử dụng SHA) của bức ký số được
ký trên bản đại diện của thông điệp gốc), tương đương với việc giảm thời gian
truyền tin qua mạng.
Hàm băm thường kết hợp với chữ ký số để tạo một loại chữ ký điện tử vừa
an toàn hơn (không thể cắt/dán) vừa dùng để kiểm tra tính toàn vẹn của thông điệp
nên tạo được niềm tin của người dùng.
2.3.2 Các hàm băm thông dụng
Các hàm băm dòng MD (MD2, MD4, MD5) do Rivest đề xuất. Giá trị băm
theo các thuật toán này có độ dài cố định là 128 bit. Hàm băm MD4 đưa ra năm
1990. Một năm sau phiên bản mạnh hơn là MD5 cũng được đề xuất.

28

Hàm băm an toàn SHA, phức tạp hơn nhiều, cũng dựa trên phương pháp
tương tự, được công bố trong Hồ sơ Liên bang năm 1992. Năm 1993 được chấp
nhận làm tiêu chuẩn của Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST). Giá trị
băm theo thuật toán này có độ dài cố định là 160 bit.
2.3.2.1 Thuật toán hàm băm MD
a. Thuật toán hàm băm MD4 [6]
Input: Thông điệp là xâu a có độ dài b bit.
Output: Bản băm, đại diện cho thông điệp gốc, độ dài cố định 128 bit.
Tóm tắt thuật toán
Bước 1: Khởi tạo các thanh ghi
Có 4 thanh ghi để tính toán nhằm đưa ra các đoạn mã: A, B, C, D. Đại diện
thông điệp được xây dựng như sự kết nối của các thanh ghi. Mỗi thanh ghi có độ dài
32 bit. Các thanh ghi này được khởi tạo bằng giá trị dạng hecxa.
word A := 67 45 23 01

word B := ef cd ab 89

word C := 98 ba dc fe

word D := 10 32 54 76

Bước 2:
+ Tạo “Thông điệp đệm” M cho xâu a.
+ Chia mảng M thành các khối 512 bit, đưa từng khối 512 bit vào mảng T[j].
+ Mỗi lần xử lý một khối 512 bit (16 word ), lặp lại N/16 lần.
b. Thuật toán hàm băm MD5 [6]
MD5 (Message-Digest algorithm 5) là một hàm băm mật mã được sử dụng
phổ biến, được thiết kể bởi Giáo sư Ronald L. Rivest tại trường MIT vào năm 1991
để thay thế cho hàm băm trước đó là MD4 (1990). Là một chuẩn Internet (RFC
1321), MD5 đã được dùng trong nhiều ứng dụng bảo mật và cũng được dùng phổ
biến để kiểm tra tính toàn vẹn của tập tin.
Cũng như các hàm băm khác như MD4 và SHS (Secure Hash Standard),
MD5 là phương pháp có ưu điểm tốc độ xử lý rất nhanh, thích hợp với các thông
điệp dài và cho ra giá trị băm dài 128 bit.
Trong MD5, thông điệp ban đầu X sẽ được mở rộng thành dãy bit X có độ
dài là bội của 512. Dãy bit X gồm các thành phần được sắp thứ tự như sau: Dãy b it

29

X ban đầu, một bit 1, dãy d bit 0 (d được tính sao cho dãy X cuối cùng là bội của 512),
dãy 64 bit l biểu diễn chiều dài của thông điệp. Đơn vị xử lý trong MD5 là các từ 32-

bit, nên dãy bit X ở trên sẽ được biểu diễn thành dãy các từ X[i] 32-bit sau:
X=X[0] X[1] X[2] …X[N−1] , với N là bội của 16.
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
c. Phương pháp MD5 có những ưu điểm sau so với phương pháp MD4
Thay vì có 3 chu kỳ biến đổi như trong MD4, MD5 bổ sung thêm chu kỳ thứ
4 để tăng mức độ an toàn.
Trong mỗi thao tác của từng chu kỳ, MD5 sử dụng hằng số “ti” phân biệt,
trong đó MD4 sử dụng hằng số chung cho mọi thao tác trong cùng chu kỳ biến đổi.
Hàm G ở chu kỳ 2 của MD4: G(X,Y,Z) = ((X Λ Z) ∨ (X Λ Y) ∨ (Y ΛZ ))
được thay thế bằng G(X,Y,Z) = (X Λ Z) ∨ (Y Λ ( ¬Z )) để giảm tính đối xứng.
Mỗi bước biến đổi trong từng chu kỳ chịu ảnh hưởng kết quả của bước biến
đổi trước, vì vậy làm tăng nhanh tốc độ của hiệu ứng lan truyền (avalanche).
Các hệ số dịch chuyển xoay vòng trong mỗi chu kỳ được tối ưu hóa nhằm
tăng tốc độ hiệu ứng lan truyền. Ngoài ra, mỗi chu kỳ sử dụng 4 hệ số dịch chuyển
khác nhau.
Lý do MD5 được thiết kế thay thế cho MD4 là vì các phân tích chỉ ra rằng
phương pháp MD4 có vẻ không an toàn. Den Boer và Bosselaers đã chỉ ra các điểm
yếu trong MD4 trong một bài báo được đăng vào năm 1991 và một tấn công xung
đột đầu tiên được tìm thấy bởi Han Dobbertin vào năm 1996 .
2.3.2.2 Hàm băm SHS/ SHA
SHS (Secure Hash Standard) là chuẩn gồm tập hợp các thuật toán băm mật
mã an toàn (Secure Hash Algorithm – SHA) như SHA-1, SHA-224, SHA-256,
SHA-384, SHA-512 do NIST (viện công nghệ quốc gia Mỹ) và NSA (National

30

Security Agency/Central Security Service, viết tắt NSA/CSS: Cơ quan an ninh quốc
gia Hoa Kỳ/ Cục an ninh Trung ương xây dựng.
Chuẩn hàm băm SHA phức tạp và chậm hơn dòng MD. SHA được thiết kế
để chạy trên máy kiến trúc endian lớn hơn là trên máy endian nhỏ. SHA tạo ra bản
tóm lược thông điệp có kích thước 160 bit, sử dụng 5 thanh ghi 32 bit.
INPUT : Thông điệp (văn bản) có độ dài tùy ý
OUTPUT : Bản băm, đại diện cho thông điệp gốc, độ dài cố định 160 bit
Phương pháp SHA-1 (cũng như SHA-0) được xây dựng trên cùng cơ sở với
phương pháp MD4 và MD5. Tuy nhiên, phương pháp SHA-1 sử dụng trên hệ thống
Big-endian (lưu trữ các byte đầu tiên quan trọng nhất) thay vì Little-endian (lưu trữ
các byte đầu tiên ít quan trọng) (endian chính là được đề cập đến trật tự của các địa
chỉ cá nhân phụ trong các đại diện của một mục dữ liệu lớn hơn và được lưu trữ
trong bộ nhớ bên ngoài (hoặc đôi khi gửi đi trên một kết nối, nối tiếp)) như phương
pháp MD4 và MD5. Ngoài ra, hàm băm SHA-1 tạo ra thông điệp rút gọn kết quả có
độ dài 160 bit nên thường được sử dụng
Phương pháp SHA-1 giống với MD5 (cải tiến từ MD4) nhưng thông điệp
tóm tắt được tạo ra có độ dài 160 bit. Sau là một số so sánh giữa MD5 và SHA-1:

Giống như MD5, SHA-1 cũng thêm chu kỳ thứ 4 để tăng mức độ an toàn cho
thuật toán. Tuy nhiên, chu kỳ thứ 4 của SHA-1 sử dụng lại hàm f của chu kỳ thứ 2.

Trong SHA-1, 20 bước biến đổi trong cùng một chu kỳ sử dụng cùng một
hàng số K[t]. Trong khi đó, mỗi bước biến đổi trong cùng một chu kỳ của MD5 sử
dụng các hằng số khác nhau.

So với MD4, hàm G trong MD5 được thay thế thành hàm mới để làm giảm
tính đối xứng. Trong khi SHA-1, hàm G trong SHA-1 vẫn giữ lại hàm G của MD4.


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

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

31

Thuật
toán

Kết
quả

SHA-0

160

SHA-1

160

SHA-

256/

256/22

224

4
SHA-

512/

512/38

384

4

Kích thước tính theo bit
Thông
Trạng
Khối
điệp
thái
tối đa
160

160

264 - 1

512

Các thao

Đụng

Độ

chu

tác

độ

an



80

Từ

264 - 1

512

Số

32

32

80

80

+, and, or,
xor, rotl
+, and, or,
xor, rotl

256

512

264 - 1

32

80

xor, shr,

512

1024

2128 – 1

64

80

xor, shr,
rotr

2.4.1 Thuật toán chữ ký RSA [5,7]
2.4.1.1 Sơ đồ
Bước 1. Tạo cặp khóa (bí mật, công khai) (a, b)
2 số nguyên tố lớn phân biệt p và q.
Cặp (n,b) là khóa công khai.
Cặp (n,a) là khóa bí mật.
Thuật toán
1. Chọn bí mật số nguyên tố lớn p và q.
2. Tính n = p * q, công khai n, đặt P=C = Zn.
3. Tính bí mật φ(n) = (p-1).(q-1).
4. Chọn khóa công khai b < φ(n), nguyên tố với φ(n).
Khóa bí mật a là phần tử nghịch đảo của b theo mod φ(n) tức là
a*b ≡ 1(mod φ(n)).

80

tác
Chưa

rotr
+, and, or,

2.4 Thuật toán chữ ký số

Output:

thao

+, and, or,

Bảng 2.1: Đặc điểm của các thuật toán băm SHA

Input:

263

Chưa

112/
128
192/
256

32

5. Tập cặp khóa (bí mật, công khai) K = {(a, b)/a,b ∈ Zn ,
a*b ≡ 1 (modφ(n))}.
Bước 2. Ký số:
Chữ ký trên x ∈ P là y = Sig k (x) = x a (mod n), y ∈ A.

(1)

Bước 3. Kiểm tra chữ ký:
Verk (x,y) = đúng ⇔ x ≡ y b (mod n).

(2)

2.4.1.2 Ví dụ minh hoạ
Bước 1. Tạo khoá (bí mật, công khai)
Chọn 2 số nguyên tố p = 11, q = 3.
1. n = p*q = 11*3 = 33
2. φ(n) = (p-1)*(q-1) = 10*2 = 20
3. Chọn b = 3 gcd (b, φ(n)) = gcd (3, 20) = 1
4. Tính a:
4.1. φ(n) = (b*a-1)*k .
4.2. Tập các ước số của φ(n) là ki = 1, 2, 4, 5, 10, 20.
Khi ki = 1 => a = 7
Khi ki= 4, 10 => a không đồng dư với b theo mod φ(n) => loại
Khi Ki = 2, 5, 20 => a không nguyên => loại
5. Khoá công khai = (n, b) = (33, 3)
Khoá bí mật = (n, a) = (33, 7).
Bước 2. Ký số
Chữ ký trên x = 3
y = Sig k (x) = x a (mod n) = 37 mod 33 = 837 mod 33 = 12 , y ∈ A.
Bước 3. Kiểm tra chữ ký:
Verk (x,y) = đúng ⇔ x ≡ y b (mod n)
⇔ 3 ≡ 123 (mod 33).

.

2.4.1.3 Độ an toàn của chữ ký RSA
Bài toán căn bản bảo đảm độ an toàn của Sơ đồ chữ ký RSA