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

một số vấn đề toán học trong lý thuyết mật mã

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 (246 KB, 31 trang )

ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC KHOA HỌC

NGÔ THỊ NGA

MỘT SỐ VẤN ĐỀ TOÁN HỌC
TRONG LÝ THUYẾT MẬT MÃ

LUẬN VĂN THẠC SĨ TOÁN HỌC

Thái Nguyên - Năm 2014


ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC KHOA HỌC

NGÔ THỊ NGA

Chuyên ngành:

PHƯƠNG PHÁP TOÁN SƠ CẤP

Mã số : 60.46.01.13

LUẬN VĂN THẠC SĨ TOÁN HỌC

NGƯỜI HƯỚNG DẪN KHOA HỌC
GS.TSKH: HÀ HUY KHOÁI

Thái Nguyên - Năm 2014



Mục lục

Lời nói đầu

2

1 KIẾN THỨC CƠ SỞ
1.1

4
4

1.1.1

Định lý Euler . . . . . . . . . . . . . . . . . . . . . . . . . . .

4

1.1.2

Thuật toán Euclide . . . . . . . . . . . . . . . . . . . . . . . .

7

1.1.3

Đa thức nội suy Lagrange . . . . . . . . . . . . . . . . . . . .

7


Tổng quan về mật mã - Hệ mã công khai RSA . . . . . . . . . . . .

8

1.2.1

Tổng quan về mật mã . . . . . . . . . . . . . . . . . . . . . .

8

1.2.2

Hệ mã mũ của Pohlig và Hellman . . . . . . . . . . . . . . .

11

1.2.3

1.2

Kiến thức cơ sở . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Hệ mã công khai RSA . . . . . . . . . . . . . . . . . . . . . .

13

2 CHỮ KÍ SỐ - CHỮ KÍ NGƯỠNG

17


2.1

Hàm băm mật mã . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

2.2

Chữ kí số . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

2.3

Chữ kí ngưỡng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

2.3.1

25

Q trình kí văn bản

. . . . . . . . . . . . . . . . . . . . . .

1



LỜI NĨI ĐẦU
Hiện nay, mạng máy tính ngày càng thể hiện rõ vai trò thiết yếu trong mọi lĩnh
vực của xã hội. Nó đã và đang trở thành phương tiện điều hành các hệ thống, khi
đó nhu cầu bảo mật thông tin được đặt lên hàng đầu. Nét nổi bật trong sự phát
triển của công nghệ bảo mật thông tin ngày nay là sự thâm nhập ngày càng sâu
của phương pháp Toán học vào lĩnh vực này (đặc biệt là của các phương pháp Số
học và Hình hoc Đại số). Với sự tăng truởng nhanh về tốc độ của các bộ vi xử lí,
các phương pháp mã hố truyền thống (kể cả nhiều máy mã từng nổi tiếng trong
các cuộc Đại chiến Thế giới) đã không thể chống cự nổi khả năng phá khố của
các siêu máy tính ngày nay. Vì vậy người ta đã buộc phải tìm những phương pháp
mới, dựa trên kết quả nghiên cứu sâu sắc của Toán học. Một điều đã trở thành
rất phổ biến hiện nay là các chuyên gia hàng đầu thế giới về mã hóa đều là nhà
tốn học hoặc được đào tạo tốn học một cách cơ bản. Chính Tốn học đã làm
cho cơng nghệ mã có một bước nhảy vọt và đáp ứng một cách suất xắc các yêu
cầu của thực tiễn hiện tại. Mục đích của luận văn này nhằm trình bày cơ sở của
việc ứng dụng số học trong lý thuyết mật mã đặc biệt là chữ kí số - chữ kí ngưỡng.
Luận văn gồm 2 chương: Chương I : Kiến thức cơ sở.Chương này nhằm giới thiệu
chung về lý thuyết mật mã, nhắc lại một số khái niệm cơ sở, một số cơng cụ tốn
học sử dụng tong lý thuyết mật mã liên quan đến luận văn, giới thiệu tổng quan về
mật mã và hệ mã công khai RSA. Chương II: Chữ kí số - Chữ kí ngưỡng. Chương
trình trình bày về hàm băm mã, chữ kí số và chữ kí ngưỡng. Luận văn này được
hồn thành dưới sự hướng dẫn tận tình và nghiêm khắc của Giáo sư - Tiến sĩ khoa
học Hà Huy Khoái. Qua đây cho tơi bày tỏ lịnh kính trọng và biết ơn chân thành

2


đối với thầy hướng dẫn, người đã tận tình chỉ bảo, quan tâm động viên và giúp đỡ
tơi hồn thành bản luận văn này. Đồng thời tôi xin chân thành cảm ơn các thầy
cơ, các cán bộ khoa Tốn và các cán bộ phịng quản lí Khoa học - Trường Đại học

Khoa học Thái Nguyên đã hết lòng giúp đỡ tơi trong suốt q trình học tập và
nghiên cứu. Cuối cùng tôi xin cảm ơn các anh,các chị,các bạn lớp cao học toán
K6b của trường Đại học Khoa Học Thái Nguyên đã động viên tinh thần ,chia sẻ
những khó khăn và giúp đỡ tơi hồn thành luận văn này.
Thái Ngun, ngày 10 tháng 5 năm 2013
Người viết

Ngô Thị Nga

3


Chương 1

KIẾN THỨC CƠ SỞ
1.1
1.1.1

Kiến thức cơ sở
Định lý Euler

Định nghĩa l.1. Cho n là số tự nhiên, số lượng các số tự nhiên bé hơn n và
nguyên tố cùng nhau với n được gọi là phi hàm Euler của n. Kí hiệu: ϕ (n)
Ví dụ 1.1.ϕ(5) = 4; ϕ(6) = 2; ϕ (7) = 6
Lưu ý: Nếu p là số nguyên tố thì ϕ(p) = p − 1
Định nghĩa 1.2. Một hệ thặng dư đầy đủ modulo n là một tập hợp số nguyên
sao cho mỗi số nguyên tùy ý đều đồng dư modnlo n với đúng một số của tập hợp.
Định nghĩa 1.3. Một hệ thặng dư thu gọn modulo n là một tập gồm ϕ(n) số
nguyên sao cho mỗi phần tử của tập hợp đều nguyên tố cùng nhau với n, và khơng
có hai phần tử khác nhau nào đồng dư với nhau theo modulo n.

Ví dụ 1.2. Tập hơp 1, 3, 5, 7 là một hệ thặng dư thu gọn modulo 8.
Định lý 1.1. Giả sử r1 ; r2 ; ...rϕ(n) là hệ thặng dư thu gọn modulo n, a là số nguyên
dương và (a,n)= 1. Khi đó, tập hợp ar1 , ar2 ,...arϕ(n) cũng là hệ thặng dư thu gọn
modulo n
Chứng minh.
Trước hết ta chứng tỏ rằng, mỗi số arj nguyên tố cùng nhau với n. Giả sử ngược
lại (arj ; n) > 1 với j nào đó. Khi đó, tồn tại ước nguyên tố p của (arj ;n). Do đó
hoặc p là ước số của a hoặc p là ước của rj ; tức là p là ước số của a và p là ước
của n; hoặc p là ước của rj và p là ước số của n. Tuy nhiên, khơng thể có p là ước
4


số của rj và p là ước số của n, vì rj và n nguyên tố cùng nhau. Tương tự, khơng
thể có p là ước số của a và p là ước số của n. Vậy arj và n nguyên tố cùng nhau
với mọi j=1,2,...,ϕ(n)
Cịn phải chứng tỏ khơng có hai số arj ; ark nào đồng dư nhau modulo n. Giả sử
arj ≡ ark modn, j = k và 1 ≤ j ≤ ϕ(n); j = k; 1 ≤ k ≤ ϕ(n). Vì (a,n) = 1 nên ta suy

ra rj ≡ rk mod n. Điều này mâu thuẫn vì rj ; rk cùng hệ thặng dư thu gọn ban đầu
modulo n.
Mệnh đề 1.1. Nếu m, n là hai số tự nhiên ngun tố cùng nhau thì ta có
ϕ(m.n) = ϕ(m).ϕ(n).

Chứng minh. Ta viết tất cả các số nguyên dương không vượt quá m.n thành bảng
sau:
1

m+1

2


m+ 2

.....
m

2m + 1

...

(n - 1) m + 1

2m + 2

...

.....

.....

.....

2m

3m

.....

(n - l) m + 2


nm

Bây giờ, ta giả sử r là số nguyên không vượt q m và (m,r)=d với d>l. Khi đó,
khơng có số nào trên dòng r nguyên tố cùng nhau với m.n, vì mỗi phần tử đều có
dạng k.m+r với 1 ≤ k ≤ n − 1. Ta thấy d là ước số của k.m+r vì d là ước số của m
và r.
Vậy để tìm số hạng nguyên tố cùng nhau với m.n ta chỉ xét trên dòng thứ r với m
và r ngun tố cùng nhau .
Trên dịng r đó ta có các số: r; m+r; 2m+r; ...;(n-1)m+r. Vì m và r nguyên tố cùng
nhau nên trên dòng r các số đều nguyên tố cùng nhau với n. Như vậy, n số nguyên
trên dòng r lập thành hệ thặng dư đầy đủ modulo n. Do đó, có đúng ϕ(n) số hạng
trên dịng đó ngun tố cùng nhau với n. Do các số cũng nguyên tố cùng nhau với
m nên chúng ngun tố cùng nhau với m.n.
Vì có ϕ(m) dịng, mỗi dịng có chứa ϕ(n) số ngun tố cùng nhau với m.n nên suy
ra ta được ϕ(m.n) = ϕ(m).ϕ(n)

5


Hệ quả
Giả sử n = p1 α1 ...pk αk là phân tích của n thành thừa số nguyên tố. Khi đó ta có:
ϕ (n) = n 1 −

VD 1.3. ϕ (8) = ϕ 23 = 23 1 −

1
2

1
p1


1−

1
p2

.... 1 −

1
pk

.

= 22

Định lý 1.2 (Định lý Euler):
Giả sử m là số nguyên dương với (a,m)=l. Khi đó, aϕ(m) ≡ 1modm
Chứng minh.
Giả sử r1 ; r2 ;...;rϕ(m) là một hệ thặng dư thu gọn gồm các số nguỵên dương không
vượt qua m và nguyên tố cùng nhau với m. Theo định lí trên và do (a,m) = 1, tập
hợp ar1 ; ar2 ,...,arϕ(m) cũng là hệ thặng dư thu gọn modulo m. Như vậy, các thặng
dư bé nhất của ar1 ; ar2 ; ...; arϕ(m) phải là các số nguyên r1 ; r2 ; ...; rϕ(m) xếp theo thứ
tự nào đó.
Dễ thấy rằng : ar1 .ar2 ...arϕ(m) ≡ r1 , r2 ,...,rϕ(m) (mod m)

Do đó ta có: aϕ(m) r1 r2 ...rϕ(m) ≡ r1 r2 ...rϕ(m) modm
Vì (r1 .r2 ...rϕ(m) , m) = 1 nên ta có: aϕ(m) ≡ 1modm
Hệ quả 1.1. Nếu (c, m) = 1 và a ≡ bmodϕ(m) thì ca = cb modm
Chứng minh. a ≡ bmodϕ(m) suy ra a = k.ϕ(m) + b với k là số nguyên suy ra
ca = ck.ϕ(m)+b = ck.ϕ(m) .cb


Theo định lý Euler cϕ(m) ≡ 1modm từ đó suy ra ca ≡ cb modm
Hệ quả 1.2.
Nếu d là số nguyên thỏa ed ≡ 1modϕ(m) và (c,m)= l thì ced ≡ cmodm
Chứng minh:
Thật vậy, ed ≡ 1modϕ(m) suy ra ed = 1 + k.ϕ(m) với k là số nguyên
Vì (c,m)= l nên cϕ(m) ≡ 1modm
Như vậy, ced ≡ c1+k.ϕ(m) ≡ cmodm

6


1.1.2

Thuật toán Euclide

Giả sử r0 = a; r1 = b là các số nguyên không âm và b = 0. Ta áp dụng liên tiếp
thuật toán chia rj = rj+1 .qj+1 + rj+2 với 0 < rj +2 < rj+1 ; j= 0,l,2,...,n - 2 và rn = 0
khi đó (a,b)=rn−1 .
Ta chứng minh rn−1 nói trên là ước số chung lớn nhất.
Thật vậy, giả sử: a = b.q + r ta chứng minh (a,b)=(b,r) Giả sử m là ước chung
nào đó của a và b khi đó m là ước của r. Ngược lại nếu m’ là ước của b và r thì
m’ là ước của a. Như vậy ước chung của a và b trùng ước chung của b và r, nên
(a,b)=(b,r) Từ thuật toán trên giả sử r0 = a; r1 = b là các số nguyên dương và a>b.
Bằng cách áp dụng liên tục thuật toán chia, ta được:
r0 = r1 .q1 + r2 ; 0 ≤ r2 < r1
r1 = r2 .q2 + r3 ; 0 ≤ r3 < r2

.......
rn−2 = rn−1 .qn−1 + rn ; 0 ≤ rn < rn−1

rn−1 = rn .qn

Ta thấy đi đến phép chia với phần dư 0 sẽ được thực hiện sau hữu hạn bước. Vì
a = r0 > r1 > ... ≥ 0

Ngược lại, nếu (a,b)=d từ kết quả trên ta cũng có thể tìm được duy nhất cặp số
nguyên x,y sao cho ax+by=d. Nếu (a,b)=l thì ta cũng tìm được duy nhất cặp số
nguyên x, y thỏa mãn ax+by=l
VD1.4. Tính ước chung lớn nhất d = (18; 84) bằng thuật tốn Euclid.
Ta có d = (18; 84) = (12; 18) = (6; 12) = (6; 6) = 6
1.1.3

Đa thức nội suy Lagrange

Bài toán:
Cho f(x) và g(x) là hai đa thức có bậc khơng q n. Chứng minh rằng nếu hai đa
thức trên trùng nhau ở n+1 điểm thì hai đa thức đó trùng nhau.
Chứng minh:

7


Thật vậy, giả sử f(x) và g(x) là hai đa thức có bậc khơng q n và trùng nhau ở
n+1 điểm (xi ; yi ); i = 1,2...,n+1 Vì f(x) và g(x) là hai đa thức có bậc khơng q n
nên suy ra phương trình f(x) - g(x) = 0 là phương trình có bậc khơng q n. Nên
số nghiệm của phương trình khơng vượt q n.
Theo giả thiết, f(x) và g(x) trùng nhau ở n+1 điểm (xi ; yi );
i= 1,2,...n + 1 nên suy ra phương trình f(x) - g(x) = 0 có n+1 nghiệm xi , i = 1,
2,.....n + 1
Vậy ta có được phương trình f(x) - g(x) = 0 là phương trình có bậc khơng vượt

quá n nhưng lại có đến n+1 nghiệm.
Điều đó xảy ra khi phương trình f(x) - g(x) = 0 có các hệ số đều bằng khơng.
Điều đó dẫn đến f(x) - g(x) ≡ 0 hay f(x)≡g(x)
Đa thức nội suy Lagrange:
Cho n+1 điểm (xi ; yi ). Từ n+1 điểm đó ta xây dựng đa thức nội suy Lagrange f(x)
n+1

n+1

=

yi .
i=1

j=1,i=j

x−xj
xi −xj

Ta thấy đa thức được xây dựng như trên thỏa mãn f (xi ) = yi ;i= 1,2, ...,n + 1
Nhận xét:
Từ bài toán trên và Đa thức nội suy Lagrange ta có kết luận sau: Cho đa thức
bậc k: f (x) = a0 + a1 x + a2 x2 + ... + ak xk (ak = 0). Ta lấy k+1 điểm (xi ; f (xi )); i =
1,2,..., k + 1. Từ k+1 điểm đó ta xây dựng đa thức nội suy Lagrange F(x). Khi
đó, ta thấy F (x) ≡ f (x). Thậm chí nếu ta tăng số điểm lên nhiều hơn k+1 điểm
(k+2 điểm trở lên) thì kết quả cho ta vẫn không thay đổi tức là F (x) ≡ f (x)

1.2
1.2.1


Tổng quan về mật mã - Hệ mã cơng khai RSA
Tổng quan về mật mã

Ta có thể hiểu nôm na, mật mã học là cách ngụy trang văn bản giữa các đối tác
có quan hệ trao đổi thơng tin mật với nhau và chỉ có họ mới hiểu và đọc được nội
dung văn bản, mà người khác dù có vơ tình hay cố ý có được cũng khơng thể đọc
được nội dung chính xác của văn bản. Mầm mống mật mã học đã có từ thời Hy
8


lạp cổ đại (khoảng 400 năm trước công nguyên) và nó được dùng chủ yếu trong
bí mật qn sự. Người Hy lạp cổ đại dùng một dải băng dài và quấn thành khối
hình trụ trịn xoay rồi viết chữ lên đó theo cách thức thơng thường. Mẫu tin được
chuyển đi dưới dạng dải băng và chỉ có thể đọc ra khi biết được bán kính khối trụ
và quấn lại dải băng như khi đã viết. Trong cách dùng này ta thấy được điều thú
vị ở đây là, giả sử có ai đó có được giải băng mà khơng biết được đường kính thì
cũng khơng thể quấn lại được giải băng như mong muốn để đọc nội dung. Rõ ràng
trong cách dùng này thì chỉ có người trong cuộc (những người biết được chính xác
đường kính khối trụ) thì mới có thể đọc được nội dung văn bản, người ngồi cuộc
khơng thể đọc được nội dung văn bản. Nên vấn đề bảo mật thơng tin là có cơ sở.
Ở đây đường kính khối trụ xem như chìa khóa lập và giải mã văn bản. Dù còn
rất sơ khai nhưng chúng ta cũng thấy được sức mạnh sự bảo mật của nó, và đây
đúng thực là cái nôi của mật mã học. Đến thời Hồng để Caesar thì mật mã được
dùng tinh vi hơn, cụ thể như sau : Hoàng đế Caesar đã từng dùng phép mã thay
thế trong quân sự, trong đó mỗi kí tự được được thay thế bởi kí tự đứng sau nó
ba vị trí trong bảng chữ cái alphabet; nghĩa là chữ A được thay thế bằng chữ D,
chữ B được thay tliế bằng chữ E,... Trong thực tế, việc triển khai một hệ mã như
thế là khá đơn giản và cũng thuận tiện trong việc sử dụng, với việc dùng hai chiếc
đĩa đồng tâm có bán kính khác nhau và có các bảng chữ cái rải đều trên vành đĩa.
Việc xoay một trong hai cái đĩa sao cho chữ A trên vành đĩa nhỏ nằm trên bán

kính nối tâm đĩa vối chữ D trên vành đĩa lớn sẽ xác định được phép mã Caesar.
nói trên, thơng qua phép tương ứng giữa các chữ cái trên vành đĩa nhỏ với các chữ
cái trên vành đĩa lớn. Nói chung, việc xoay đĩa theo một góc bất kỳ sẽ mang lại
một phép mã Caesar. Mấu chốt vấn đề là ở chỗ, nếu ta khơng nắm được qui ước
thay thế thì các kí tự thì khơng thể dịch văn bản mật thành văn bản gốc được và
vì thế khơng thể đọc được nội dung văn bản. Từ hai cách dùng trên ta thấy một
điều là tầm quan trọng trong việc bảo mật thông tin của con người . Đặc biệt là
trong lĩnh vực quân sự, nếu thông tin quân sự mật mà bị đối phương nắm bắt thì

9


qn đội đó ắt sẽ thất bại và vì thế mật mã học cần phải được nghiên cứu một
cách nghiêm túc và sâu sắc nhằm ứng dụng hiệu quả vào thực tiễn. Trong bí mật
quân sự cũng như đời sống có những thơng tin mật của người này nhưng người
kia muốn biết cho bằng được nhằm phục vụ lợi ích riêng cho họ. Thực tế đó đã
thúc đẩy con người không ngừng nghiên cứu mật mã học nhằm đáp ứng nhu cầu
bảo mật thông tin và cho đến những năm đầu của thế kỉ XX mật mã học đã phát
triển mạnh, cụ thể là sự xuất hiện của mã khối.
Mã khối được xem là xuất hiện vào những năm đầu thế kỉ XX, với sự ra đời của hệ
mã British Playfair vào năm 1910, trong đó mỗi khối là một cặp hai chữ. Phép mã
ở đây được thay thế hai chìa. Người ta viết 26 chữ cái vào một bảng hình vng
gồm 5 dịng và 5 cột trong hai chữ IJ được viết vào cùng một ơ. Hai dịng đầu tiên
dành cho chìa khóa, 3 dịng dưới viết 16 chữ cái cịn lại theo thứ tự thơng thường
Muốn mã hóa một khối (cặp hai chữ) nào đó, khơng ở trên cùng một dịng hay
một cột, ta tìm cách thiết lập một hộp (chữ nhật) với hai đỉnh là hai chữ trong
khối đó, cịn hai đỉnh cịn lại cho ta cặp chữ là kết quả mã của cặp chữ nguồn.
Muốn mã hóa cặp hai chữ trên cùng một dịng thì thay thế mỗi chữ bằng chữ kế
tiếp bên phải nó trên cùng dịng đó (nếu là chữ cuối dịng thì thay thế bằng chữ
đầu dịng). Muốn mã hóa hai chữ trên cùng một cột, ta thay mỗi chữ bằng chữ

bên dưới nó.
Các chữ đúp sẽ được tách ra bẳng chữ X trước khi mã hóa chúng....Cho đến nay
thì mật mã đã phát triển rầm rộ trên toàn thế giới nhằm phục vụ nhu cầu bảo
mật thông tin trong quân sự, kinh tế, ...bằng chứng là có nhiều hệ mã ra đời với
nhiều tính năng ưu việt khác nhau. Và nổi trội nhất hiện nay là hệ mã khóa cơng
khai được cho là đảm bảo tính an tồn cao cho thơng tin mật. Vì nó có cả hai chìa
khóa lập mã và giải mã khác nhau rất tiện lợi cho việc giữ bí mật. Khóa lập mã
được cơng khai để người khác mã hóa văn bản và gửi cho mình, cịn khóa giải mã
được giữ bí mật riêng nhằm phục vụ nhu cầu giải mã cá nhân. Điều quan trọng
là từ khóa lập mã khơng thể tính được khóa giải mã và khóa giải mã chỉ có riêng

10


cá nhân đó biết, đối tác bên kia cũng khơng biết nên bảo mật thông tin cá nhân
được xem là ưu việt. Điều này hơn hẳn các hệ mã đối xứng chỉ sử dụng một chìa
cho cả hai quá trình lập mã và giải mã.
1.2.2

Hệ mã mũ của Pohlig và Hellman

Hệ mã này được đưa ra từ năm 1978. Tuy vẫn thuộc vào làng khóa bí mật,
nhưng nó được xem là tiền thân của các hệ mã phi đối xứng (khóa cơng khai).
Hệ mã đối xứng chỉ sử dụng một chìa khố cho cả hai q trình lập mã và giải
mã. Để giải mã được văn bản được gửi từ A thì B phải có chìa khóa do A gửi đến,
nên khi A gửi đến B văn bản mã thì đồng thời A cũng phải gửi cho B chìa khóa
để giải và như thế vơ tình chìa khóa bỗng trở nên trôi nổi và dễ bị phát hiện. So
với hệ mã đối xứng thì hệ mã mũ có tiến bộ hơn về mặt này, vì nếu như khóa lập
mã bị lộ thì trong một thời gian có thể chấp nhận được, người có được, khóa lập
mã vẫn khó có thể tìm ra được khóa giải mã và như thế bí mật thơng tin có thể

được xem như tương đối an tồn trong một khoảng thời gian nào đó.
Ngun lý thực hiện
Để tiến hành thực hiện mã hóa thì A và B sẽ tìm cho mình khóa lập mã và giữ bí
mật khóa (chỉ có họ mới biết chìa khóa đó).
Khóa lập mã là cặp số nguyên dương e và p. Trong đó p là số nguyên tố lẻ và e là
số nguyên dương sao cho e và ϕ(p) = p - 1 là hai số nguyên tố cùng nhau.
Để mã hóa văn bản cần gửi, trước tiên A phải tiến hành số hóa và chia khối văn
bản. Số hóa văn bản tức là ta chuyển văn bản chữ thành văn bản số bằng phép
đặt tương ứng giữa các chữ cái và các số. Ví dụ trong bảng chữ cái tiếng Anh gồm
26 chữ cái thì ta qui ước mỗi chữ như vậy tương ứng với một số, chẳng hạn chữ a
tương ứng là 01, b tương ứng là 02, c tương ứng là 03,..., z tương ứng là 26. Khi
đó, nếu ta có chữ "cantho" thì văn bản số tương ứng là "030114200815". Ở đây ta
không kể khoảng trắng nếu muốn thêm vào khoảng trắng ta có thể qui ước tương
tự như trên. Tuy nhiên ta có thể qui ước phép đặt tương ứng theo cách khác ngược

11


lại hoặc tùy ý theo thỏa thuận giữa A và B. Và như thế ta thấy việc có được khóa
giải mã thì chưa chắc hiểu được nội dung văn bản vì ta khơng biết được qui ước
giữa A và B trong phép đặt tương ứng giữa chữ và số. Điều đó một lần nữa khẳng
định sự an tồn của hệ mã mũ này.
Chia khối văn bản là thao tác chia nhỏ văn bản số để tiến hành mã hóa được thuận
lợi hơn. Ví dụ nếu ta có văn bản "cantho" thì văn bản số tương ứng như trên là
"030114200815" . Nếu khơng chia khối thì ta sẽ làm việc với số nguyên khá lớn 12
số thập phân là "030114200815” tuy nhiên để đơn giản hơn ta có thể chia nhỏ ra
thành hai khối "can" và "tho" khi đó ta có thể làm việc với số nguyên nhỏ hơn
rất nhiều vì mỗi khối bây giờ chỉ gồm ba chữ cái thì đồng nghĩa với việc ta thực
hiện tính tốn trên số nguyên không quá 6 chữ số. Vậy việc chia khối là cần thiết
tuy nhiên khơng thể q nhỏ vì nó đem nhiều bất lợi cho người dùng mã (dễ bị lộ

khóa).
Như cách đặt tương ứng như trên nếu mỗi khối gồm N chữ cái thì số tương ứng sẽ
khơng vượt quá số nguyên 2626...26 ( gồm N lần số 26 viết tiếp nhau). Tuy nhiên
không phải lúc nào văn bản của chúng ta cũng được chia thành nguyên lần khối
N, mà nó có thể thiếu một vài chữ mới thành khối N, gặp trường hợp như vậy ta
phải tiến hành làm tròn khối văn bản bằng cách thêm vào các chữ cái ở cuối văn
bản để cho văn bản của ta là nguyên lần khối N, nhưng không làm thay đổi nội
dung văn bản. Khi chia khối văn bản xong, thì A cần tiến hành mã hóa từng khối
văn bản và mã hóa hết tất cả các khối, bằng cơng C ≡ N e modptrong đó C là văn
bản mã ở dạng số còn N là văn bản số. Và A gửi cho B là gửi tất cả các khối C.
Khi có được các khối C được gửi từ A, thì B sẽ tiến hành giải mã. Trước tiên, B sẽ
tiến hành tìm khóa giải mã d bằng cách giải phương trình đồng dư: ed ≡ 1modϕ(p).
(1)
Ta thấy, số nguyên d ln tìm được và duy nhất bằng thuật tốn Euclide Khi có
được khóa giải mã, B sẽ tiến hành giải mã từng khối C bằng công thức: Cd ≡ N ed ≡
N modp(2) (theo hệ quả của định lý Euler). Khi có được tất cả các khối.

12


N, B sẽ tiếp tục tìm lại văn bản gốc bằng cách sử dụng lại phép đặt tương ứng
ban đầu.
Từ công thức (1), ta thấy nếu hai số N1 ; N2 có cùng số dư khi chia cho p thì hai
khối mã tương ứng C1 ; C2 sẽ trùng nhau. Vì vậy, sẽ xảy ra tình trạng hai khối văn
bản số ban đầu khác nhau nhưng lại có hai khối văn bản mã giống nhau điều này
sẽ nảy sinh vấn đề sai lệch nội dung khi giải mã và dẫn đến nội dung văn bản được
giải mã sẽ khác nội dung văn bản ban đầu. Để khắc phục tình trạng này trong q
trình chia khối cần đảm bảo khơng có khối N nào lớn hơn hoặc bằng số nguyên tố
p. Điều này đảm bảo tính tồn vẹn của nội dung văn bản, tức là nội dung văn bản
sau khi giải mã và văn bản gốc là trùng khớp nhau.

Do N là số nguyên không lớn hơn số nguyên tố p, nên N và p là hai số nguyên tố
cùng nhau điều đó dẫn đến N ed ≡ N modp . Từ công thức (2) ta thấy khối C cũng
là số ln nhỏ hơn p. Để đảm bảo C khơng chính là N e thì số e được chọn khơng
q nhỏ, sao cho thường xuyên có được N e > p.
1.2.3

Hệ mã cơng khai RSA

1.2.3.1. Ngun tắc chung của mã hóa cơng khai
Để tìm nắm rõ về hệ mã RSA, trước tiền ta ta tìm hiểu ngun tắc chung của mã
hóa với khóa cơng khai. Giả sử trong hệ thống đang xét có n cá thể cùng tham gia
trao đổi thơng tin mật. Mỗi cá thể chọn cho mình khóa lập mã k và công thức Ek
được thông báo công khai. Như vậy có n khóa lập mã cơng khai k1 , k2 , ..., kn . Khi cá
thể thứ i muốn gửi thông báo đến cá thể thứ j, cũng như trước đây mỗi chữ trong
thông báo được chuyển thành số, sau đó nhóm thành khối với độ dài nào đó. Tiếp
đó, mỗi khối P trong văn bản được mã hóa bằng khóa lập mã của cá thể j theo
cơng thức C = Ekj (P). Để giải mã thông báo này, cá thể j chỉ cần dùng khóa giải mã
(bí mật riêng của mình) Dk và tiến hành theo cơng thức: Dkj (C) = Dkj Ekj (P) = P.
Vì Ekj và Dkj là khóa lập mã và giải mã của cá thể j nên người khác dù có được
văn bản mật thì cũng khơng thể biết được nội dung văn bản gốc, vì việc biết được

13


khóa lập mã khơng cho phép tìm được khóa giải mã trong thời gian chấp nhận
được.
1.2.3.2. Hệ mã RSA
Hệ mã RSA được xây dựng dựa trên cơ sở là hệ mã mũ. Hệ mã RSA là hệ mã hóa
cơng khai sử dụng hai khóa khác biệt cho hai cơng việc lập mã và giải mã. Mỗi cá
nhân chỉ cần giữ kín (bí mật) khóa giải mã, cịn khóa lập mã sẽ được cơng khai (để

người khác có thể dùng nó để mã hóa văn bản mật và gửi cho mình). Điều then
chốt là từ khóa lập mã khơng thể tính được khóa giải mã trong khoảng thời gian
chấp nhận được (nếu khơng biết thơng tin bí mật nào đó). Rõ ràng với cơ chế này
thì việc bảo mật thơng tin trở nên dễ dàng và hiệu quả hơn. Ý tưởng về một hệ
mã như vậy được đưa ra bởi Diffie, Hellman và Merkle vào giữa những năm 1970
và một mô hình hồn hảo cho hệ mã kiểu này được cơng bố bởi Rivest, Shamir,
Adleman vào năm 1978, mang tên RSA.
Như vậy, hệ mã RSA đã cải thiện được yếu điểm của hệ mã mũ là từ khóa lập mã
e ta sẽ tính được khóa giải mã d theo phương trình ed ≡ 1modϕ(p).
Nguyên lý thực hiện
Cũng như hệ mã mũ, để gửi thơng tin mật đến B thì A cần phải biết được khóa
cơng khai của B và dùng khóa đó để mã hóa thơng tin và gửi cho B. Khóa cơng
khai của B là cặp số ngun dương (e,n) trong đó n là tích của hai số ngun tố
lớn p và q, e là số nguyên dương, sao cho (e, ϕ(n)) = 1.
Q trình mã hóa:
Để mã hóa thơng tin cần gửi đến B trước tiên A phải chuyển thông tin cần gửi
sang văn bản dạng số bằng qui ước cho tương ứng giữa các chữ cái và các chữ số.
Tiếp đó, A tiến hành chia khối văn bản số thành từng khối nhỏ N đảm bảo yêu
cầu N và n là hai số nguyên tố cùng nhau. Khi thực hiện xong cơng việc trên thì
A sẽ tiến hành mã hóa từng khối N theo cơng thức sau: C ≡ N e mod n (ở đây C
chính là văn bản mật của văn bản số N).
Sau khi mã hóa xong toàn bộ các khối N thành dạng văn bản mật C, thì A gửi cho

14


B tất cả các khối C này. Đến đây xem như kết thúc q trình mã hóa. Khi nhận
được vàn bản mật được gửi từ A thì nhiệm vụ của B bây giờ là tiến hành giải mã
toàn bộ văn bản để biết được chính xác nội dung văn bản mà A cần gửi cho mình.
Quá trình giải mã

Để giải mã văn bản mật đó B sẽ dùng khóa giải mã riêng d của mình và d chính
là nghịch đảo của e theo mod n. Công việc giải mã được tiến hành dựa trên công
thức Cd ≡ N ed ≡ N mod n .Khi giải mã xong toàn bộ các khối C thì kết thúc quá
trình giải mã.
Như vậy, việc giải mã một khối trong văn bản mật cũng chính là việc nâng lên lũy
thừa bậc d rồi rút gọn theo modulo n. Điều đáng lưu ý ở đây là sự đảm bảo an
tồn thơng tin trong RSA được nâng lên đáng kể so với hệ mã mũ, vấn đề đề này
sẽ trở nên rõ ràng hơn khi ta so sánh q trình tìm khóa giải mã trong cả hai hệ
mã. Hệ mã mũ tìm d từ phương trình ed ≡ 1modϕ(p) và trong hệ mã RSA việc tìm
d cũng dựa vào phương trình ed ≡ 1modϕ(n). Trong hệ mã mũ p là số nguyên tố và
trong RSA n là tích của hai số ngun tố lớn, nên việc tìm ϕ(p) và ϕ(n) là không
giống nhau.
Như ta đã biết ϕ(n) = (p - l)(q- 1) nên để tính được ϕ(n) ta cần phải phân tích n
ra thừa số nguyên tố và vấn đề này trở nên vơ cùng khó khăn thậm chí là khơng
thể khi hợp số ngun n là rất lớn. Điều khó khăn này đã chứng tỏ được rằng việc
tìm d trong hệ mã RSA là khó hơn nhiều trong hệ mã mũ và cũng vì tính ưu việt
này mà RSA đang có vai trị vơ cùng quan trọng trong thế giới mật mã hiện nay.
Minh chứng sau đây sẽ cho ta thấy được sự an toàn của RSA:
Sau khi tìm ra hệ mã, Rivest, Shamir và Adleman có viết một bài báo cơng bố phát
minh dưới dạng một thông báo khoa học của MIT và trên cột Martin Gardner’s
của tờ báo Scientific American, họ đưa ra lời thách thức bạn đọc bẻ khóa một mâu
tin nhỏ đã được mã hóa với:
n=l14381625757888876692357799761466120102182967212423625625618
429357069325457338978305971235639587050589890751475992900268795 43541 và

15


số e =9007
Mẫu tin:"first solver wins one hundred dollars"

Xuất hiện trong dạng mã hóa (với a=01, b=02, c=03,...) và chỉ được giải mã vào
ngày 24 tháng 4 năm 1994. bằng một cố gắng tổng lực mang tính quốc tế (qua
internet) với việc sử dụng 1600 workstations, mainframes, và suppercomputer tấn
công trong 8 tháng liên tục để phân tích số trên ra thừa số nguyên tố.
Thực tế cho thấy RSA rất an tồn, vì khơng mấy khi có thể huy động được lực
lượng như thế vào công việc giải mã một mẫu tin. Do tính đơn giản trong thiết kế
và triển khai nên RSA được sử dụng rộng rãi và có lẽ là nhiều nhất trong số các
thuật tốn với khóa công khai.

16


Chương 2

CHỮ KÍ SỐ - CHỮ KÍ NGƯỠNG
Ngày nay, với sự phát triển của công nghệ thông tin, nhiều hoạt động của con
người đã được giải quyết dễ dàng và tiện lợi hơn rất nhiều, từ hoạt động sinh hoạt
đời thường đến các giao dịch kinh tế hoặc các hoạt động chuyển giao.... Nếu ta
thực hiện việc gửi một thư tín theo cách thơng thường cho người nào đó, ta phải
mất nhiều ngày thì thư tín mới tới người nhận, và với công nghệ thư điện tử chỉ
cần vài phút là ta có thể gửi được thư tín. Thậm chí có thể thực hiện một cuộc trị
chuyện trực tiếp với nhau dù khoảng cách là các Đại dương. Bên cạnh hoạt động
hàng ngày thì những hoạt động giao dịch xuyên quốc gia cũng có thể thực hiện,
q trình kí kết được thực hiện với sự hổ trợ của việc kí kết điện tử. Cũng giống
như kí kết thơng thường kí kết điện tử cũng đảm bảo đặc thù của một giao dịch
hiệu quả, hai bên đối tác hoàn toàn chịu trách nhiệm với chữ kí của mình trên văn
bản điện tử và nó đã dần được pháp luật bảo hộ.
Vấn đề, là làm sao phát triển hết tính ưu việt của q trình kí điện tử này. Ví dụ
như tránh giả mạo, kí nháy .... Trong hệ thống có nhiều cá thể tham gia, các khóa
lại được cơng khai, làm sao có thể biết được thơng tin được gửi từ ai? Làm sao

tránh được người này mạo danh người kia để gửi thơng tin đến người thứ ba? Nói
cách khác, là làm sao có thể kí tên lên các văn bản điện tử, để người nhận biết
đích xác là mình nhận văn bản được gửi từ ai và để người gửi khơng thể thối thác
trách nhiệm với việc mình đã gửi đi văn bản đó. Đây chính là vấn đề xác nhận chủ
thể trong cơ chế trao đổi thông tin điện tử.

17


Ta biết rằng, trong hệ thống mã hóa cơng khai, mọi người đều biết được khóa cơng
khai của từng cá thể, nhưng ngược lại khơng ai biết được khóa mật của ai. Và ta
cũng biết rằng trong hệ mã RSA, hai khóa mật và khóa cơng khai có vai trị đối
xứng nhau có nghĩa là nếu cái này dùng đế mã hóa thì cái kia dùng để giải mã.
Như vậy, nếu cá thể nào đó dùng khóa mật của mình để mã hóa văn bản thì mọi
người đều có thể giải mã bằng khóa cơng khai của chính anh ta đã cơng bố. Đồng
thời mọi người cũng biết được chính xác văn bản đó là do chính anh ta gửi đi. Như
vậy, một khi cá thể A dùng chính khóa mật của mình để mã hóa văn bản thì cũng
đồng nghĩa là anh ấy đã khẳng định với mọi người là văn bản đó do chính anh ta
gửi đi. Điều đó cũng đồng nghĩa là anh ta đã kí tên mình lên văn bản đó.

2.1

Hàm băm mật mã

Hàm băm - hiểu theo nghĩa đơn giản là hàm cho tương ứng một mảng diữ liệu
lớn với một mảng dữ liệu nhỏ hơn, hàm băm được sử dụng rộng rãi trong nhiều
ứng dụng khác nhau của tin học, không chỉ thuộc về mật mã học. Ở đây chúng ta
chỉ xét các hàm băm có những thuộc tính nhất định, có khả năng ứng dụng trong
công nghệ mã, và trước hết là trong lĩnh vực đảm bảo tính tồn vẹn của dữ liệu.
Những hàm băm như vậy được gọi là hàm băm mật mã

Các hàm băm nhận một chuỗi bit có độ dài tùy ý (hữu hạn) làm dữ liệu đầu vào
và tạo ra một chuỗi bit có chiều dài cố định bằng n bit (n > 0 là hằng số) và được
gọi là mã băm. Điều đáng quan tâm ở đây là mã băm không phụ thuộc vào độ dài
văn bản và sẽ nhạy cảm thay đổi khi văn bản đầu vào thay đổi. Xác suất để hai
dữ liệu đầu vào khác nhau có cùng mã băm là vơ cùng thấp có thể xem là 0. Nên
để tìm chuỗi dữ liệu đầu vào khi biết được mã băm là không thể thực hiện.
Trong lĩnh vực mã hóa thơng tin, mã băm được xem như hình ảnh đặc trưng thu
gọn của một chuỗi bit có độ dài tùy ý (hữu hạn), và được dùng để nhận diện chuỗi
bit đó. Kết hợp với cơng cụ tạo chữ kí số, các hàm băm dùng cho việc đảm bảo
tính tồn vẹn của dữ liệu. Và q trình kiểm tra tính tồn vẹn của dữ liệu diễn ra

18


như sau: Trong lược đồ kí điện tử, mã băm của chuỗi bit được tính tại thời điểm T1
và được bảo vệ bằng thủ thuật nào đó để chống lại mọi sự thay đổi bất hợp pháp.
Tại thời điểm T2 sau đó, để biết được chuỗi bit x nào đó có bị thay đổi khơng ,
người ta tính mã băm của chuỗi bit đó tại thời điểm T2 , tiếp đó so sánh mã băm
tại hai thời điếm T1 và T2 . Nếu hai mã băm trùng nhau thì ta khẳng định chuỗi
bit khơng thay đổi, ngược lại thì ta khẳng định chuỗi bit đã bị thay đổi. Như vậy.
vấn đề bảo đảm tính tồn vẹn của chuỗi bit có độ dài tùy ý được thay bằng việc
bảo vệ sự tồn vẹn của chuỗi bit có chiều dài cố định nhỏ hơn rất nhiều.

2.2

Chữ kí số
Cũng như kí thơng thường việc kí trên văn bản điện tử cũng nhằm mục

đích khẳng định chủ thể văn bản và xác nhận nội dung văn bản kí. Tuy nhiên khó
hơn so với kí văn bản thơng thường, kí trên văn bản điện tử mất nhiều thời gian

và công sức cho nên cần phải thực hiện q trình kí văn bản điện tử sao cho dễ
dàng và ít tốn kém, có như vậy thì ứng dụng của nó mới thực sự đem lại kết quả
như mong muốn. Và điều này đã được thực hiện với việc kết hợp giữa kí điện tử
và mã băm của văn bản. Và sự ra đời của hệ mã hóa cơng khai RSA đã đáp ứng
được u cầu này. Tuy nhiên, vì mặt hạn chế của RSA là khơng hiệu quả về mặt
thời gian đối với các văn bản dài. Khi ấy việc kí kết mất nhiều thời gian mà người
xác nhận cũng mất lượng thời gian không kém. Để giải quyết vấn đề này, người
ta đã thực hiện q trình kí kết trên mã băm của văn bản. Vì tính năng của mã
băm là đảm bảo an tồn dữ liệu cao nên nó đã thực sự là trở thành công cụ thật
sự đắc lực để hổ trợ việc kí kết văn bản.
Q trình kí văn bản giữa A và B được thực hiện như sau:
- A tính mã băm vằn bản (cần gửi cho B) giả sử giá trị đó là m
- A mã hóa mã băm m bằng khóa mật của chính mình: C ≡ md mod n
Sau khi thực hiện hai công việc trên xong. A tiến hành gửi cho B cả văn bản cần
gửi và văn bản mật C nói trên.

19


Sau khi, nhận được văn bản mật và văn bản gốc, B sẽ tiến hành xác định chủ thế
và kiểm tra nội dung văn bản. Quá trình thực hiện như sau:
- B tính giá trị băm của văn bản mà A gửi, giả sử là m’.
- B giải mã văn bản mật C bằng khóa cơng khai của A. Thơng thường giá trị băm
m của văn bản là nguyên tố cùng nhau với n, xác suất để chúng không nguyên tố
cùng nhau là rất thấp. Nên để đảm bảo tính hồn thiện của q trình kí, ta cần
kiểm tra tính nguyên tố cùng nhau của m và n trước khi thực hiện kí kết. Giả sử
ta có được điều đó, khi đó ce ≡ med ≡ mmodn
So sánh hai giá trị m và m’
- Nếu m và m’ khác nhau xem như q trình kí khơng thành cơng
- Nếu m = m’ q trình kí thành cơng, điều đó chứng tỏ nội dung văn bản không

bị thay đổi và người gửi văn bản chính là A. Như vậy với quá trình thực hiện kí
như trên ta có thể khẳng định được hai điều:
* Thứ nhất nội dung văn bản hoàn tồn có thể kiểm sốt được, khơng ai có thê
thay đổi làm sai lệch hoặc đánh tráo nội dung
* Thứ hai xác nhận được chủ thể văn bản, khẳng định văn bản là do A gửi, từ đó
buộc A phải có trách nhiệm với văn bản mình đã kí.
Tuy nhiên, q trình kí trên chỉ hù hợp với trường hợp các văn bản khơng cần mật
nội dung. Vì khi A gửi cho B văn bản chính là văn bản gốc nên người khác có được
nó thì sẽ hiểu được hết nội dung. Muốn mật cả nội dung thì A phải thực hiện tiếp
cơng đoạn mã hóa văn bản bằng khóa cơng khai của B và gửi cho B. Khi đó đảm
bảo tính mật của nội dung văn bản. Ở đây, ta không đề cập đến mật nội dung mà
chỉ quan tâm đến giao thức kí văn bản mà thơi.
Phương pháp ký điện tử và xác nhận chủ thể.
Ký điện tử trong hệ thống an tồn với mã hóa cơng khai.
Giao thức cơ bản dựa trên ý tưởng của Difie và Hellman:
(1) Người gửi (chủ nhân của văn bản) ký văn bản bằng cách mã hóa nó với khóa
bí mật của mình.

20


(2) Người gửi chuyển văn bản ký cho người nhận.
(3) Người nhận văn bản kiểm tra chữ ký bằng việc sử dụng chìa khóa cơng khai
của người gửi để giải mã văn bản.
Rõ ràng giao thức này mang đầy đủ đặc tính đã mơ tả ở trên (của việc ký tá thông
thường). Thật vậy không ai làm giả được chữ ký vì rằng chỉ có duy nhất người gửi
có chìa khóa bí mật đã dùng để ký (mã hóa); Chữ ký thể hiện chủ nhân của nó
phải là người giữ khóa bí mật đã dùng để mã hóa (kiểm tra bằng cách cho giải mã
bằng chìa khóa cơng khai của người đó). Chữ ký khơng thể tái sử dụng vì khơng
ai sử dụng được chìa khóa riêng bí mật của người gửi (để kí một văn bản khác);

Văn bản đã ký không thể thay đổi được nội dạng (nếu đã mở ra để thay đổi thì
khơng thể mã hóa lại bằng chìa khóa bí mật của người “đã ký” được nữa); Người
đã ký khơng thể thối thác chữ ký của mình vì ngồi ơng ta ra khơng cịn ai có cái
chìa đã ký văn bản.
Ký điện tử bằng hệ mã đối xứng với “trọng tài”
Trong hệ thống này vai trò của ơng trọng tài là rất quan trọng. Ơng ta có chung
các chìa bí mật (đối xứng) với từng người trong hệ thống (có nhu cầu ký điện tử)
mỗi người một cái riêng. Các chìa này phải được thiết lập trước khi triển khai dịch
vụ ký điện tử, và mỗi chìa có thể sử dụng để ký nhiều lần (điều này chấp nhận
được vì mỗi người có riêng một cái, trừ ông trọng tài đáng tin cậy). Trong giao
thức này nếu A muốn ký văn bản gửi cho B thì cần thực hiện các bước sau đây:
(1) A mã hóa văn bản (định gửi cho B) bằng chìa khóa bí mật của mình rồi gửi
cho ơng trọng tài.
(2) Ơng trọng tài giải mã văn bản bằng chìa khóa bí mật có chung với A.
(3) Ơng trọng tài đem văn bản đã giải mã và một bản copy của văn bản mã (trước
khi giải) cùng với mẩu tin xác nhận rằng A đã gửi văn bản này gói chung vào một
mớ, rồi mã lại bằng chìa khóa bí mật có chung với B.
(4) Ông trọng tài gửi cái mớ đã mã hóa lại cho B.
(5) B nhận và giải mã bằng khóa bí mật (có chung với ơng trọng tài). Anh ta

21


khơng chỉ đọc được văn bản mà cịn xác nhận được xác nhận của ơng trọng tài
rằng văn bản đó đích thực là do A gửi.
Có thể thấy rằng giao thức này cũng có được đặc tính của việc ký tá thơng thường
như đã trình bày ở trên, nhưng q rườm rà và tốn thời gian của “ông trọng tài”.
Việc suốt ngày liên miên với lập mã và giải mã và rất dễ biến ông ta thành cái cổ
chai tắc nghẽn của dịng thơng tin hệ thống.


Điều khó hơn cả là làm sao kiếm được (và duy trì) một ơng trọng tài như trên,
cho dù ơng ta có là người hồn tồn trung thực đi nữa thì chỉ cần một lần ông ta
mắc sai lầm cũng đủ làm cả hệ thống mất niềm tin. Đấy là chưa kể việc kẻ gian
thường xun tìm cách đột nhập cái kho khóa bí mật của ơng ta. Tóm lại, đây chỉ
là mơ hình trên lý thuyết, rất khó khả thi trong thực tế.

Ký văn bản và đóng dấu thời gian
Đơi khi yếu tố thời gian ký có vai trị quan trọng đặc biệt, nhất là đối với những
gì có khả năng tái sử dụng một cách bất hợp pháp, ví dụ như việc ký séc điện tử.
Vì số lượng bản gốc của mọi văn bản điện tử là vô hạn định, cho nên khi nhận
được một tờ séc điện tử thì ta có cả ngàn tờ séc như vậy. Nếu khơng có giải pháp
ngăn ngừa thích hợp thì người nhận séc có thể sử dụng nó nhiều lần (vào các thời
điểm khác nhau và tại các ngân hàng khác nhau).

Một thủ pháp khá đơn giản cho thời gian ký là đi liền với séc và được gói chung
trong chữ ký. Khi séc được đưa vào ngân hàng rút tiền thì ngồi việc kiểm tra chữ
ký, ngân hàng lưu luôn thời gian ký trong cơ sở dữ liệu. Nếu séc được đưa vào rút
tiền lần thứ hai thì sẽ bị lật tẩy khi so sánh thời gian ký của séc với thời gian đã
được lưu trong cơ sở dữ liệu của ngân hàng. (Dĩ nhiên, ngồi hàm thời gian, ta có
thể dùng một hàm khác để hàn gắn thêm thông tin cho séc đã ký khác nhau là
khác nhau. Nếu không séc ký lần sau sẽ không giá trị).

22


Dấu ấn thời gian của việc ký văn bản còn có tác dụng chống lại âm mưu chối
bỏ những gì mình đã ký bằng cách cố tình đánh mất chìa khóa rồi thối thác trách
nhiệm cho người khác (nhặt được chìa). Khi đã có dấu ấn thời gian thì người ký
buộc phải chịu trách nhiệm về tất cả những gì mình đã ký trước khi tun bố mất
chìa.


Ký với khóa công khai và hàm băm một chiều.

Ta biết rằng trong triển khai thực tiễn, tốc độ mã hóa với khóa công khai là
rất chậm (chậm hơn cả ngàn lần so với khóa đối xứng), cho nên nếu ký một văn
bản dài (như một tài liệu cỡ cuốn sách) thì việc dùng khóa cơng khai trực tiếp là
điều khơng ổn. Một cách giảm tải cho công đoạn này là dùng hàm băm một chiều
để lấy ra mã băm, hay còn gọi là đặc trưng của văn bản (do khả năng đại điện duy
nhất và phản ánh trung thành mọi sự thay đổi của văn bản). Đặc trưng của mọi
văn bản (dù dài hay ngắn) cũng chỉ là một xâu số nhị phân không lớn (thường là
không dài quá 256 bit). Việc đặc trưng của văn bản không bị thay đổi cũng đồng
nghĩa với việc bản than văn bản không bị thay đổi. Từ đây ta có một giao thức
phù hợp cho việc ký các văn bản cỡ lớn (mà không bị nặng tải). Ví dụ, khi A cần
ký một văn bản (dung lượng lớn) và chuyển cho B thì cần thực hiện các bước sau
đây:
(1) A lấy đặc trưng của văn bản (bằng cách dùng một hàm băm một chiều, có sẵn
trên hệ thống, để tạo mã băm của văn bản).
(2) A dùng chìa khóa riêng (bí mật) của mình để mã hóa cái đặc trưng của văn
bản đã lấy ở trên.
(3) A gửi cho B cả văn bản và đặc trưng của văn bản đã ký.
(4) Khi B nhận văn bản (cùng với đặc trưng đã được ký) thì tiến hành hai việc:
rút ra đặc trưng của văn bản mới nhận (bằng hàm băm hai chiều có sẵn của hệ

23


×