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

Tìm hiểu Chữkí nhóm và ứng dụng trong giao dịch đ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 (671 KB, 64 trang )

Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử

1

LỜI NÓI ĐẦU

Trong xu hướng phát triển của thế giới và Việt Nam hiện nay, mạng Internet đang
đem đến sự bùng nổ thông tin một cách mạnh mẽ. Nó được sử dụng để truyền thư điện
tử, truy cập các website, kết nối các công sở, liên lạc với các khách hàng và sử dụng
các dịch vụ ngân hàng, các giao dịch điện tử…
Tiềm năng của mạng Internet là rất lớn. Như ta đã biết các giao tiế
p, trao đổi thông
tin qua Internet đều sử dụng giao thức TCP/IP. Các gói tin truyền từ điểm nguồn tới
điểm đích sẽ đi qua rất nhiều máy tính trung gian, vì vậy độ an toàn thấp, nó rất dễ bị
xâm phạm, theo dõi và giả mạo trên đường truyền. Vấn đề không an toàn cho thông tin
trên đường truyền khiến nhiều người đắn đo trong việc sử dụng mạng Internet cho
những ứng dụng về tài chính, giao dịch ngân hàng, hoạt
động mua bán và khi truyền
các thông tin kinh tế, chính trị vv…
Những biện pháp đảm bảo an toàn thông tin đưa ra đều nhằm đáp ứng 3 yêu cầu:
bảo mật thông tin, xác thực thông tin và toàn vẹn thông tin trên đường truyền. Các
hệ mã hóa thông tin bảo đảm tính bí mật nội dung thông tin, các sơ đồ chữ ký số bảo
đảm xác thực thông tin trên đường truyền.
Tuy nhiên, nhu cầu của con người không chỉ dừng lại ở việc giao dịch giữa các cá
nhân với nhau, mà còn giao dịch thông qua mạng gi
ữa các nhóm người, các công ty,
các tổ chức khác nhau trên thế giới. Dựa trên những yêu cầu thực tế đó các nhà khoa
học đã nghiên cứu và đề xuất ra một kiểu chữ ký mới, đó chính là chữ ký nhóm.
Trong đồ án này tôi đã tìm hiểu và nghiên cứu về chữ ký nhóm. Đây là một loại
chữ ký điện tử cho phép một nhóm người tạo các chữ ký đại diện cho nhóm, và chỉ
những thành viên trong nhóm mới có thể ký vào các thông điệp c


ủa nhóm. Người quản
trị của nhóm có trách nhiệm thành lập nhóm và trong trường hợp cần thiết phải biết
được ai là người ký vào thông điệp.
Trong quá trình làm đồ án tốt nghiệp, em đã nhận được sự hướng dẫn tận tình của
TS.Lê Phê Đô. Em xin chân thành cảm ơn! Đồng thời, em xin cảm ơn các thày cô giáo
bộ môn Tin học – trường Đại học Dân lập Hải Phòng đã trang bị cho em những kiến
thức cơ b
ản trong quá trình học tập tại trường.










Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
2
Chương I

CÁC KHÁI NIỆM CƠ BẢN

1.1 Cơ sở toán học
1.1.1. Ước số - Bội số
Định nghĩa : Ước số của a và b là c nếu c|a và c|b
Ước số chung lớn nhất : Là số lớn nhất mà a và b chia hết
Ký hiệu : c = gcd (a,b) ; (great common divisor)

Bội số chung nhỏ nhất : d là BCNN của a và b nếu

c mà a|c , b|c → d|c
Ký hiệu : d = lcm (a,b) ; (least common multiple)
Tính chất: lcm (a,b) = a.b/gcd(a,b)
1.1.2. Số nguyên tố
Định nghĩa : Số nguyên tố là số chỉ chia hết cho 1 và chính nó, ngoài ra không còn
số nào nó có thể chia hết nữa. Hệ mật thường sử dụng số nguyên tố lớn cỡ 512bits và
thậm chí còn lớn hơn nữa.
Hai số m và n gọi là hai số nguyên tố cùng nhau khi ước số chung lớn nhất của
chúng bằng 1. Chúng ta có thể viết như sau:
UCLN(m,n) = 1
1.1.3. Khái niệm nhóm
Định nghĩa : Nhóm là b
ộ đôi (G,

), trong đó G là tập
φ



là một phép toán
hai ngôi trong G thỏa mãn ba tiên đề sau
1. Phép toán nhóm kết hợp
a * (b * c) = (a * b) * c

a, b, c

G
2. Có một phần tử 0


G được gọi là phần tử đơn vị thỏa mãn
a * 0 = 0 * a

a

G
3. Với mỗi a

G, tồn tại một phần tử a
-1


G được gọi là nghịch đảo
a * a
-1
= a
-1
* a = 0
Nhóm được gọi là giao hoán (hay nhóm Abel) nếu
a * b = b * a

a, b

G
1.1.4. Nhóm hữu hạn
Định nghĩa : Nhóm (G,

) hữu hạn nếu |G| là hữu hạn. Số các phần tử của nhóm G
được gọi là cấp của nhóm.

Ví dụ :

 Tập các số nguyên Z với phép cộng sẽ tạo nên một nhóm. Phần tử đơn vị
của nhóm này được kí hiệu là 0, phần tử ngược của một số nguyên a là
số nguyên –a.
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
3
 Tập Z
n
với phép cộng modulo tạo nên một nhóm cấp n. Tập Z
n
với phép
toán nhân theo modulo n không phải là một nhóm vì không phải mọi
phần tử của nhóm đều có nghịch đảo. Tuy nhiên tập Z
*
n
sẽ là một nhóm
cấp
φ
(n) với phép toán nhân theo modulo n và có phần tử đơn vị là 1.
1.1.5. Nhóm con
Định nghĩa : Bộ đôi (S,

) được gọi là nhóm con của (G,

) nếu:
 S

G, phần tử trung gían e ∈ S

 x, y ∈ S

x * y ∈ S
1.1.6. Nhóm Cyclic
Định nghĩa : Nhóm G được gọi là nhóm cyclic nếu tồn tại một phần tử α ∈ G sao
cho với mỗi b ∈G có một số nguyên I sao cho b = α
i
. Phần tử α như vậy được gọi là
phần tử sinh của G
Nếu G là một nhóm và a ∈ G thì tập tất cả các lũy thừa của a sẽ tạo nên một nhóm
con cyclic của G. Nhóm này được gọi là nhóm con sinh bởi a và được kí hiệu là
a

1.1.7. Các thuật toán trong Z
Cho a và b là các số nguyên không âm và nhỏ hơn hoặc bằng n. Cần chú ý rằng số
các bit trong biểu diễn nhị phân của n là [lgn] + 1 và số này xấp xỉ bằng lg n. Số các
phép toán bit đối với bốn phép toán cơ bản trên các số là cộng , trừ, nhân và chia sử
dụng các thuật toán kinh điển được tóm lược trên bảng sau. Các kỹ thuật tinh tế hơn
đối với các phép toán nhân và chia sẽ có độ phức tạp nhỏ hơn.


Phép toán Độ phức tạp bit
Cộng a + b
Trừ a – b
Nhân a * b
Chia a = qb + r
0(lg a + lg b) = 0 (lg n)
0(lg a + lg b) = 0 (lg n)
0
( )

b) (lg*a) (lg
= 0
( )
n)2 (lg

0
( )
b) (lg*a) (lg
= 0
( )
n)2 (lg

1.1.8. Thuật toán Euclide : Tính UCLN của 2 số nguyên
VÀO : Hai số nguyên không âm a và b với a > b
RA : UCLN của a và b
(1). while b
≠ 0 do

R
← a mod
b, a
← b, b ← r

(2). Return (a)
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
4
1.1.9. Thuật toán Euclide mở rộng
VÀO : Hai số nguyên không âm a và b với a > b
RA : d = UCLN (a, b) và các số nguyên x và y thỏa mãn ax + by = d

(1) Nếu b = 0 thì đ
ặt d ← a, x ← l, y ← 0 v
à return (d, x, y)
(2) Đặt x
2
← l, x
1
← 0, y
2
← 0, y
1
← l
(3) while b > 0 do
1. q
← [a/b], r ← a
– qb, x
← x
2
– qx
1
, y
← y
2
– qy
1

2. a
← b, b ← r, x
2
← x

1
, x
1
← x, y
2
← y
1
, y
1
← y
(4) Đặt d ← a, x ← x
2
, y ← y
2
và return (d, x, y)
1.1.10. Định nghĩa hàm Φ Euler
Định nghĩa : Với n≥1 chúng ta gọi
φ
(n) là tập các số nguyên tố cùng nhau với n
nằm trong khoảng [1,n].
Tính chất :
 Nếu p là số nguyên tố →
φ
(p) = p-1
 Nếu p=m.n , gcd(m,n)=1

φ
(p)=
φ
(m).

φ
(n)
 Nếu n =
k
e
k
eee
pppp ....
3
21
321
là thừa số nguyên tố của n thì

φ
(n) = n




























k
ppp
1
1...
1
1
1
1
21

1.1.11. Đồng dư thức
Định nghĩa : Cho a và b là hai số nguyên tố, a được gọi là đồng dư với b theo
modulo n, ký hiệu là a ≡ b(mod n) nếu a, b chia cho n có cùng số dư.
Ví dụ :
24
≡ 9 mod 5 vì 24
- 9 = 3 * 5
-11

≡ 17 mod 7 vì
-11 - 17 = -4 * 7
Tính chất :
Đối với a, a
1
, b, b
1
, c ∈ Z ta có :
 a ≡ a (mod n)
 a ≡ b (mod n) ↔ b ≡ a (mod n)
 a ≡ b (mod n) , b ≡ c (mod n) → a ≡ c (mod n)
 a ≡ a
1
(mod n) , b ≡ b
1
(mod n)
a+b

a
1
+b
1
(mod n)
a.b ≡ a
1
.b
1
(mod n)
1.1.12. Số nghịch đảo
Định nghĩa : Cho a ∈ Z

n
. Một số nguyên x ∈ Z
n
gọi là nghịch đảo của a theo mod n
nếu a.x ≡ 1mod n..
Nếu có số x như vậy thì nó là duy nhất và ta nói a là khả nghịch. Ký hiệu là a
-1
. Có
thể suy ra rằng a khả nghịch theo mod n khi và chỉ khi gcd (a,n)=1.

Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
5
1.1.13. Nhóm nhân Z*n
Định nghĩa : Nhóm nhân của Z
n
ký hiệu là Z
*
n
là tập hợp các phần tử sao cho gcd
(a,n)=1. Đặc biệt với n là số nguyên tố thì Z
*
n
={ a ∈ Z
n
| 1≤a≤n-1}
Định nghĩa : Cho a ∈ Z
*
n
khi đó bậc của a kí hiệu là ord (a) là một số nguyên

dương t nhỏ nhất sao cho a
t


1(mod n).
1.1.14. Định nghĩa thặng dư bậc 2
Định nghĩa : Cho a ∈ Z
*
n
gọi a là thặng dư bậc 2 theo modulo n nếu tồn tại x sao
cho x
2
≡ a (mod n) . Nếu không tồn tại thì gọi a là bất thặng dư bậc 2. Tập tất cả các
thặng dư bậc hai modulo n được kí hiệu là
n
Q
, còn tập tất cả các thặng dư không bậc
hai được kí hiệu là
n
Q
.
1.1.15. Phần dư China CRT ( Chinese Remainder Theorem)
Nếu các số nguyên n
1
, n
2
, …, n
k
là nguyên tố cùng nhau từng thì hệ các phương
trình đồng dư:

x ≡ a
1
(mod n
1
)
x ≡ a
2
(mod n
2
)
………………
x ≡ a
k
(mod n
k
)
sẽ có nghiệm duy nhất theo modulo n (n = n
1
, n
2
, …, n
k
)
x =

=
k
i 1
a
i

N
i
M
i
mod n
Trong đó N
i
= n / n
i
và M
i
= N
1−
i
mod n
i
Các tính toán này có thể được thực hiện bởi 0
( )
)2n (lg
các phép toán trên bit.
Ví dụ :
Cặp phương trình đồng dư
x ≡ 5 (mod 9)
x ≡ 19 (mod 23) có nghiệm duy nhất x ≡ 203 (mod 207)
Tính chất

Nếu (n
1
, n
2

) = 1 thì cặp phương trình đồng dư
x ≡ a (mod n
1
), x ≡ a (mod n
2
)
có một nghiệm duy nhất x ≡ a (mod n
1
, n
2
)
1.1.16. Độ phức tạp tính toán
Lý thuyết thuật toán và các hàm số tính được ra đời từ những năm 30 của thế kỉ 20
đã đặt nền móng cho việc nghiên cứu các vấn đề “ tính được ”, “ giải được ” trong toán
học. Tuy nhiên từ các “ tính được ” đến việc tính toán thực tế là một khoảng cách rất
lớn. Có rất nhiều vấn đề chứng minh là có thể tính được nhưng không tính được trong
thực tế dù có sự tr
ợ giúp của máy tính. Vào những năm 1960 lý thuyết độ phức tạp
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
6
tính toán được hình thành và phát triển nhanh chóng, cung cấp nhiều hiểu biết sâu sắc
về bản chất phức tạp của các thuật toán và các bài toán, cả những bài toán thuần túy lý
thuyết đến những bài toán thường gặp trong thực tế.
Độ phức tạp tính toán của một tiến trình tính toán là số ô nhớ được dùng hay số các
phép toán sơ cấp được thực hiện trong tiến trình tính toán đó. Dữ liệu đầu vào đối với
một thuậ
t toán thường được biểu diễn qua các từ trong một bảng kí tự nào đó. Độ dài
của một từ là số kí tự trong từ đó.
1.1.17. Các thuật toán trong Zn

Cho n là một số nguyên dương. Các phần tử của Z
n
sẽ được biểu thị bởi các số
nguyên Q
21
= {0, 1, 2, … n-1}.
Ta thấy rằng, nếu a, b ∈ Z
n
thì
(a + b) mod n =

Bởi vậy phép cộng ( và trừ ) theo modulo có thể thực hiện đựợc mà không cần
phép chia. Phép nhân modulo của a và b có thể được thực hiện bằng cách nhân các số
nguyên thông thường rồi lấy phần dư của kết quả sau khi chia cho n. Các phần tử
nghịch đảo trong Z
n
có thể được tính bằng cách dùng thuật toán Euclide mở rộng được
mô tả dưới đây:
1.1.18. Thuật toán ( Tính các nghịch đảo trong Zn )
VÀO : a ∈ Z
n
RA : a
-1
mod n (nếu tồn tại)
1. Dùng thuật toán Euclide mở rộng để tìm các số nguyên x và y sao
cho ax + ny = d trong đó d = (a, n)
2. Nếu d >1 thì a
-1
mod n không tồn tại. Ngược lại return (x)
Phép lũy thừa theo modulo có thể được thực hiện có hiệu quả bằng thuật toán nhân

và bình phương có lặp. Đây là một thuật toán rất quan trọng trong nhiều thủ tục mật
mã. Cho biểu diễn nhị phân của a là :

=
t
i 0
k
i
2
i
trong đó mỗi k
i
∈ {0, 1} khi đó
a + b với a + b < n
a + b – r.n với a + b ≥ n
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
7
a
k
=
k
t
i
k
i
a 2
0

=

=
( ) ( ) ( )
t
t
kkk
aaa
222
...
1
1
0
0

Thuật toán nhân và bình phương có lặp để lấy lũy thừa trong Z
n

VÀO : a ∈ Z
n
và số nguyên k, (0

k < n) có biểu diễn nhị phân :
k =
i
t
i
i
k 2
0

=


RA : a
k
mod n
1. Đặt b ← l. Nếu k = 0 thì return (b)
2. Đ
ặt A ← a

3. Nếu k
0
= 1 thì đặt b ← a
4. for i from l to t do
1. Đ
ặt A ← A
2
mod n
2. Nếu k
i
= l thì đặt b ← A*b mod n
5. Return (b).
Số các phép toán bit đối với phép toán cơ bản trong Z
n


Phép toán Độ phức tạp bit
Cộng modulo 0(lg n)
Trừ modulo 0(lg n)
Nhân modulo
0
( )

2
)(lg n

Nghịch đảo modulo
0
( )
2
)(lg n

Lũy thừa modulo
0
( )
3
)(lg n

Độ phức tạp bit của các phép toán cơ bản trong Z
n

Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
8
1.1.19. Hàm một phía - Hàm một phía có cửa sập
Một hàm một phía là hàm mà dễ dàng tính toán ra quan hệ một chiều nhưng rất khó
để tính ngược lại.
Ví dụ :
Biết giả thiết x thì có thể dễ dàng tính ra f(x), nhưng nếu biết f(x) thì rất khó
tính ra được x. Trong trường hợp này khó có nghĩa là để tính ra được kết quả thì phải
mất rất nhiều thời gian để tính toán.
F(x) được gọi là hàm một phía có cửa sập nếu tính xuôi y = f(x) thì dễ nhưng tính
ngược x =f

1−
(y) thì khó tuy nhiên nếu có “ cửa sập ” thì vấn đề tính ngược trở nên dễ
dàng. Cửa sập ở đây là một điều kiện nào đó giúp chúng ta dễ dàng tính ngược.
Ví dụ :

y = f(x) = x
b
mod n tính xuôi thì dễ nhưng tính ngược x = y
a
mod n thì khó vì phải
biết a với a * b ≡ 1
()
))(mod( n
φ
trong đó
φ
(n) = (p-1)(q-1). Nhưng nếu biết cửa sập p,
q thì việc tính n = p * q và tính a trở nên dễ dàng.
Hộp thư là một ví dụ về hàm một phía có cửa sập. Bất kỳ ai cũng có thể bỏ thư vào
thùng. Bỏ thư vào thùng là một hành động công cộng. Mở thùng thư không phải là
hành động công cộng. Nó là việc khó khăn, bạn sẽ cần đến mỏ hàn để phá hoặc những
công cụ khác. Hơn nữa nếu bạn có “ cử
a sập ” ( Trong trường hợp này là chìa khóa của
hòm thư ) thì công việc mở hòm thư thật dễ dàng.
1.2 Tìm hiểu về mật mã
Mật mã học là khoa học nghiên cứu sự an toàn, toàn vẹn của dữ liệu, xác nhận sự
tồn tại và xác nhận tính nguyên bản của thông tin.











Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
9
Sơ đồ khối một hệ truyền tin mật










Định nghĩa : Một hệ mật mã là một bộ năm (P, C, K, E, D) thoả mãn các điều kiện
sau đây:
+ P là một tập hữu hạn các bản rõ.
+ C là một tập hữu hạn các bản mã.
+ K là một tập hữu hạn các khoá.
+ Với mỗi k ∈ K, có một hàm lập mã e
k
∈ E
e

k
: P
→ C

và một hàm giải mã d
k
∈ D
d
k
: C
→ P sao cho d
k
( )
(x)e
k
= x với mọi x

P
Trong thực tế, P và C thường là bảng chữ cái (hoặc tập các dãy chữ cái có độ
dài cố định).
1.2.1. Mã cổ điển
Hệ mã cổ điển (hệ mã đối xứng) là hệ mật mã mà khóa mã hóa có thể dễ dàng tìm
được từ khóa giải mã và ngược lại. Trong nhiều trường hợp, khóa mã hóa và khóa giải
mã là giống nhau.
Hệ mật mã cổ điển yêu cầu người gửi và người nhận phải thỏa thu
ận một mã trước
khi tin tức được gửi đi, khóa này phải được cất giữ bí mật. Độ an toàn của hệ này phụ
thuộc vào khóa. Nếu để lộ khóa, thì bất kỳ người nào cũng có thể mã hóa và giải mã
thông điệp đó.
Nguồn tin Bộ mã hóa Kênh mở

(không an toàn)
Bộ giải mã Nhận tin
Thám mã
Kênh an toàn
Nguồn khóa
Bản rõ Bản mã Bản mã
K
D
K
E
B A
Bản rõ
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
10
 Các đặc điểm của hệ mã cổ điển
1. Các phương pháp mã hóa cổ điển đòi hỏi người mã hóa và người giải mã phải
có cùng chung một khóa.
2. Khóa phải được giữ bí mật tuyệt đối, khóa phải được gửi đi trên kênh an toàn.
Vì dễ dàng xác định một khóa nếu biết khóa kia.
Nhược điểm chính của phương pháp này là khóa được truyền trên kênh an toàn nên
chi phí tốn kém và không kịp thời.
Ưu điểm là tốc độ mã hóa và giải mã rất nhanh.
Các hệ mật mã cổ điển cũng dùng chung một khoá cho việc lập mã và giải mã, các
bản rõ và bản mã thường dùng cơ sở là bảng chữ cái trong ngôn ngữ tự nhiên. Và
trong phần này ta sẽ dùng bảng chữ cái tiếng Anh làm ví dụ.

 Nơi ứng dụng
Hệ mã cổ điển thường được sử dụng trong môi trường mà khóa có thể dễ dàng trao
chuy

ển bí mật. Nó cũng được dùng để mã hóa thông tin khi lưu trữ trên đĩa.
1.2.1.1. Mã dịch chuyển
Định nghĩa : Mã dịch chuyển: (P, C, K, E, D)
P = C = K = Z
26
với k ∈ K, định nghĩa e
k
(x) = (x + k) mod 26
d
k
(y) = (y – k) mod 26
(x, y ∈ Z
26
)
Ví dụ:
Dùng khoá k = 2 để mã hoá dòng thư:
"madichchuyen'"
dòng thư đó tương ứng với dòng số


m a d i c h c h u y e n
12 0 3 8 2 7 2 7 20 24 4 13
Qua phép mã hoá e
2
sẽ được:
14 2 5 10 4 9 4 9 22 26 6 15
o c f k e j e j w z g p

Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702

11
Bản mã sẽ là:
“ocfkejejwzgp”
Nhận được bản mã đó, dùng d
2
để nhận được bản rõ.
Cách đây 2000 năm mã dịch chuyển đã được Julius Ceasar sử dụng, với khoá k=3
mã địch chuyển được gọi là mã Ceasar.
Tập khoá phụ thuộc vào Z
m
với m là số khoá có thể.
Trong tiếng Anh tập khoá chỉ có 26 khoá có thể, việc thám mã có thể được thực
hiện bằng cách duyệt tuần tự 26 khoá đó, vì vậy độ an toàn của mã dịch chuyển rất
thấp.
1.2.1.2. Mã thay thế
Định nghĩa Mã thay thế: (P, C, K, E, D)
P = C = Z
26
, K = S (Z
26
) Với mỗi π є K, tức là một hoán vị trên Z
26
, ta xác định
e
π
(x) = π (x)
d
π
(y) = π
-1

(y)
với x, y є Z
26
, π
-1
là nghịch đảo của π
Ví dụ:
π được cho bởi (ở đây ta viết chữ cái thay cho các con số thuộc Z
26
):
a b c d e f g h i j k l m n
z y x w v u t s r q p o n m

o p q r s t u v w x y z
l k j i h g f e d c b a
Bản rõ:
“mathaythe”
sẽ được mã hoá thành bản mã (với khoá π):
“nzgszbgsv”
Dễ xác định được π
-1
, và do đó từ bản mã ta tìm được bản rõ.
Mã thay thế có tập hợp khoá khá lớn - bằng số các hoán vị trên bảng chữ cái, tức số
các hoán vị trên Z
26
, hay là 26! > 4.10
26
. Việc duyệt toàn bộ các hoán vị để thám mã là
rất khó, ngay cả đối với máy tính. Tuy nhiên, bằng phương pháp thống kê, ta có thể dễ
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử

Sinh viên: Phạm Thị Hiểu Lớp CT702
12
dàng thám được các bản mã loại này, và do đó mã thay thế cũng không thể được xem
là an toàn
1.2.1.3. Mã Affine
Định nghĩa Mã Affine: (P, C, K, E, D)
P = C = Z
26
, K = { (a, b) є Z
26
x Z
26
: (a, 26) = 1 }
với mỗi k = (a, b) є K ta định nghĩa:
e
k
(x) = ax + b mod 26
d
k
(y) = a
-1
(y – b) mod 26
trong đó x, y є Z
26
Ví dụ: Lấy k = (5, 6).
Bản rõ:
“maaffine”
m a a f f i n e
x 12 0 0 5 5 8 13 4


Y=5x + 6 mod 26
14 6 6 5 5 20 19 0
y o g g f f u t a
Bản mã:
“oggffuta”
Thuật toán giải mã trong trường hợp này có dạng:
d
k
(y) = 21(y
− 6) mod 26

Với mã Affine, số các khoá có thể có bằng (số các số ≤ 26 và nguyên tố với 26) ×
26, tức là 12 × 26 = 312. Việc thử tất cả các khoá để thám mã trong trường hợp này
tuy khá mất thì giờ nếu tính bằng tay, nhưng không khó khăn gì nếu dùng máy tính.
Do vậy, mã Affine cũng không phải là mã an toàn



Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
13
1.2.1.4. Mã Vingenere
Định nghĩa Mã Vingenere: (P, C, K, E, D)
Cho m là số nguyên dương.
P = C = K = (Z
26
)
m
với mỗi khoá k = (k
1

, k
2
,…,k
m
) ∈ K có:
e
k
(x
1
, x
2
,…, x
m
) = (x
1
+ k
1
, x
2
+ k
2
,…, x
m
+ k
m
)
d
k
(y
1

, y
2
,…, y
m
) = (y
1
– k
1
, y
2
– k
2
,…, y
m
– k
m
)
các phép cộng phép trừ đều lấy theo modulo 26
Ví dụ:
Giả sử m = 6 và khoá k là từ CIPHER - tức k = (2, 8, 15, 7, 4, 17).
Bản rõ:
“mavingenere”
m a v i n g e n e r e
x 12 0 21 8 13 6 4 13 4 17 4
k 2 8 15 7 4 17 2 8 15 7 4
y 14 8 10 15 17 23 6 21 19 24 8
o i k p r x g v t y i
Bản mã
“ oikprxgvtyi ”
Từ bản mã đó, dùng phép giải mã d

k
tương ứng, ta lại thu được bản rõ.
Chú ý
: Mã Vingenere với m = 1 sẽ trở thành mã Dịch chuyển.
Tập hợp các khoá trong mã Vingenere mới m ≥ 1 có tất cả là 26
m
khoá có thể có.
Với m = 6, số khoá đó là 308.915.776, duyệt toàn bộ chừng ấy khoá để thám mã bằng
tính tay thì khó, nhưng với máy tính thì vẫn là điều dễ dàng.
1.2.1.5. Mã Hill
Định nghĩa Mã Hill: (P, C, K, E, D)
Cho m là số nguyên dương.
P = C = (Z
26
)
m
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
14
K = { k ∈ (Z
26
)
mxm
mxm :
()
26 det(k),
= 1 }
với mỗi k ∈ K định nghĩa:
e
k

(x
1
, x
2
,…, x
m
) = (x
1
, x
2
,…, x
m
).k
d
k
(y
1
, y
2
,…, y
m
) = (y
1
, y
2
,…,y
m
).k
-1



Ví dụ:
Lấy m = 2, và k =








73
811

Với bộ 2 ký tự (x
1
, x
2
), ta có mã là (y
1
, y
2
) = (x
1
, x
2
). k được tính bởi
y
1
= 11.x

1
+ 3.x
2

y
2
= 8.x
1
+ 7.x
2

Giả sử ta có bản rõ: “tudo”, tách thành từng bộ 2 ký tự, và viết dưới dạng số ta
được 19 20 | 03 14 , lập bản mã theo quy tắc trên, ta được bản mã dưới dạng số là: 09
06 | 23 18, và dưới dạng chữ là “fgxs”.
Chú ý:

Để đơn giản cho việc tính toán, thông thường chọn ma trận vuông 2×2. Khi đó có
thể tính ma trận nghịch đảo theo cách sau :
Giả sử ta có k =








dc
ba


Ta có ma trận nghịch đảo k
1−
=
1−








dc
ba

Và được tính như sau

1−








dc
ba
=













−−




bcad
a
bcad
c
bcad
b
bcad
d

Một chú ý là để phép chia luôn thực hiện được trên tập Z
26
thì nhất thiết định thức
của k: det(k) = (ad – bc) phải có phần tử nghịch đảo trên Z
26

, nghĩa là (ad – bc) phải là
một trong các giá trị : 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, hoặc 25. Đây cũng là điều
kiện để ma trận k tồn tại ma trận nghịch đảo.

Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
15
Khi đó: k
-1
.k = I là ma trận đơn vị (đường chéo chính bằng 1)
1−








dc
ba








dc

ba
=












−−




bcad
a
bcad
c
bcad
b
bcad
d









dc
ba
=








10
01

Định thức của








73
811


Là 11*7 – 8*3 = 1 ≡ 1 mod 26
Khi đó

1
73
811









=










113
87










1123
187
mod 26
1.2.1.6. Mã hoán vị
Định nghĩa Mã hoán vị: (P, C, K, E, D)
Cho m là số nguyên dương.
P = C = Z
26
, K = S
m

( )
mk
xxxe ...,,,
21
=
() ( ) ( )
( )
m
xxx
πππ
...,,,

21

( )
mk
yyyd
...,,,
21
=
() ( ) ( )
( )
m
yyy
111
...,,,
21
−−−
πππ

với mỗi k = π ∈ S
m
, ta có
Trong đó π
-1
là hoán vị nghịch đảo của π
Ví dụ:
Giả sử m = 4, và khoá k được cho bởi phép hoán vị π





Khi đó phép hoán vị nghịch đảo π
-1
là:




1 2 3 4
2 3 4 1
1 2 3 4
4 1 2 3
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
16
Bản rõ:
“ mahoanvi ”
m a h o a n v i
vt 1 2 3 4 1 2 3 4
π
1

2 2

3 3

4 4

1 1

2 2


3 3

4 4

1
vt 2 3 4 1 2 3 4 1
a h o m a h o m

Bản mã:
“ ahomahom ”
Dùng hoán vị nghịch đảo, từ bản mật mã ta lại thu được bản rõ.
Chú ý:

Mã hoán vị là một trường hợp riêng của mã Hill. Thực vậy, cho phép hoán vị π của
{1, 2,…, m}, ta có thể xác định ma trận K
π
= (k
ij
), với

Thì dễ thấy rằng mã Hill với khoá K
π
trùng với mã hoán vị với khoá π.
Với m cho trước, số các khoá có thể có của mã hoán vị là m!
Dễ nhận thấy với m = 26 ta có số khóa 26! (mã Thay thế)
1.2.2. Mã khóa công khai
Trong mô hình mật mã cổ điển trước đây mà hiện nay đang được nghiên cứu,
A(người gửi) và B (người nhận) chọn khóa bí mật K. Sau đó dùng K để tạo luật mã
hóa e

k
và luật giải mã d
k
. Trong hệ mật này d
k
hoặc giống e
k
hoặc khác, nếu để lộ e
k
thì
làm cho hệ thống mất an toàn.
Nhược điểm của hệ mật này là nó yêu cầu phải có thông tin trước về khóa K giữa
A và B qua một kênh an toàn trước khi gửi một bản mã bất kỳ. Trên thực tế điều này
rất khó đảm bảo. Chẳng hạn khi A và B ở cách xa nhau và họ chỉ có thể liên lạc với
nhau bằng E-mail. Trong tình huống đó A và B không thể tạo một kênh bảo mật với
giá phải chăng.
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
17
Ý tưởng xây dựng một hệ mật khóa công khai là tìm một hệ mật không có khả
năng tính tóan để xác định d
k
khi biết e
k
. Nếu thực hiện được như vậy thì quy tắc mã e
k
có thể được công khai bằng cách công bố nó trong một danh bạ (bởi vậy nên có thuật
ngữ hệ mật khóa công khai).
Ưu điểm của hệ mật khóa công khai là ở chỗ A (hoặc bất kỳ A) có thể gửi một bản
tin đã mã hóa cho B (mà không cần thông tin trước về khóa mật) bằng cách dùng mật

mã công khai e
k
. Người nhận A sẽ là người duy nhất có thể giải mã được bản mã này
bằng việc sử dụng luật giải bí mật d
k
của mình. Có thể hình dung hệ mật này tương tự
như sau: A đặt một vật vào một hộp kim loại và rồi khóa nó lại bằng một khóa số do B
để lại. Chỉ có B là người duy nhất có thể mở được hộp vì chỉ có anh ta mới biết tổ hợp
mã của khóa số của mình.
Ý tưởng về một hệ mật khóa công khai được Diffie và Hellman đưa ra vào năm
1976. Còn việc hiện thực hóa nó thì do Riyesrt, Shamir và Ableman đưa ra lần
đầu vào
năm 1977, họ đã tạo nên hệ mật nổi tiếng RSA và một số hệ mật khác. Độ bảo mật của
hệ RSA dựa trên độ khó của việc phân tích ra thừa số nguyên lớn.
 Nơi ứng dụng
Sử dụng chủ yếu trên các mạng công khai như Internet, khi mà việc trao chuyển
khóa bí mật tương đối khó khăn. Đặc trưng nổi bật của hệ mã hóa khóa công khai là cả

khóa công khai và bản mã đều có thể gửi đi trên một kênh thông tin không an toàn.
1.2.2.1. Mã RSA
Hệ mật này sử dụng tính toán trong Z
n
, trong đó n là tích của 2 số nguyên tố phân
biệt p và q. Ta thấy rằng φ(n) = (p – 1).(q – 1).


Định nghĩa


Cho n = p.q trong đó p và q là các số nguyên tố. Đặt P = C = Z

n
và định nghĩa:
K = {(n, p, q, a, b): n = p.q, p, q là các số nguyên tố, a.b ≡ 1 mod φ(n)}
Với K = (n, p, q, a, b) ta xác định: e
K
(x) = x
b
mod n
và d
K
(y) = y
a
mod n
(x, y ∈ Z
n
) Các giá trị n và b được công khai và các giá trị p, q, a được giữ kín

Ví dụ:

Chọn p = 2, q = 5. Tính n = p.q = 2*5 = 10
φ(n)= (p – 1).(q – 1) = 1*4 = 4
Do UCLN(φ(n), b) = 1 nên chọn b = 3
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
18
a.b ≡ 1 mod φ(n) nên chọn a = 7
Giả sử G muốn gửi bản rõ x = 3 tới N, G phải tính:
y = e
K
(x)= x

b
mod n = 3
3
mod 10 = 7
Khi N nhận được bản mã y = 7, anh ta sử dụng số mũ a mật để tính:
x = d
K
(y) = y
a
mod n = 7
7
mod 10 = 3
Đó chính là bản rõ mà G đã mã hoá.
Độ mật của hệ RSA được dựa trên giả thiết là hàm mã e
K
(x) = x
b
mod n là hàm
một chiều. Bởi vậy thám mã sẽ gặp khó khăn về mặt tính toán để giải mã một bản
mã. Cửa sập cho phép N chính là thông tin về phép phân tích thừa số n (n = p.q). Vì
N biết phép phân tích này nên anh ta có thể tính
φ(n) = (p – 1).(q – 1) và rồi tính số mũ giải mã a bằng cách sử dụng thuật toán
Eculide mở rộng.

1.2.2.2. Mã Elgamal
Mô tả hệ mã Elgamal
Hệ mật mã ElGamal được T.ElGamal đề xuất năm 1985, dựa vào độ phức tạp của
bài toán tính lôgarit rờ
i rạc, và sau đó đã nhanh chóng được sử dụng rộng rãi không
những trong vấn đề bảo mật truyền tin mà còn trong các vấn đề xác nhận và chữ ký

điện tử.
Bài toán logarithm rời rạc trong Z
p
là đối tượng trong nhiều công trình nghiên cứu
và được xem là bài toán khó nếu p được chọn cẩn thận. Cụ thể là không có một thuật
toán thời gian đa thức nào cho bài toán logarithm rời rạc. Để gây khó khăn cho các
phương pháp tấn công đã biết, p phải có ít nhất 150 chữ số và (p – 1) phải có ít nhất
một thừa số nguyên tố lớn
Hệ mật Elgamal là một hệ mật không tất định vì bản mã phụ thuộc vào cả bả
n rõ x
lẫn giá trị ngẫu nhiên k do G chọn. Bởi vậy sẽ có nhiều bản mã được mã từ cùng một
bản rõ.

Bài toán logarithm rời rạc trong Z
p
:
Đặc trưng của bài toán: I = (p,
α, β) trong đó p là số nguyên tố, α ∈
p
Z

phần tử nguyên thuỷ (hay phần tử sinh), β ∈
*
p
Z

Mục tiêu: Hãy tìm một số nguyên duy nhất a, 0 ≤ a ≤ p – 2 sao cho:
α
a
≡ β (mod p)

Ta sẽ xác định số nguyên a bằng log
α
β.



Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
19
Định nghĩa mã hoá công khai Elgamal trong
*
p
Z
:
Cho p là số nguyên tố sao cho bài toán logarithm rời rạc trong
p
Z
là khó giải.
Cho α ∈
*
p
Z
là phần tử nguyên thuỷ. Giả sử P =
*
p
Z
, C =
*
p
Z

x
*
p
Z
. Ta định
nghĩa: K = {(p, α, a, β): β ≡ α
a
(mod p)}
Các giá trị p, α, β được công khai, còn a giữ kín.
Với K =(p, α, a, β) và một số ngẫu nhiên bí mật k ∈
1

p
Z
, ta xác định:
e
K
(x, k) = (y
1
, y
2
).
Trong đó: y
1
= α
k
mod p
y
2
= x. β

k
mod p
với y
1
, y
2

*
p
Z
ta xác định:
d
K
(y
1
, y
2
) = y
2
(y
1
a
)
– 1
mod p

Ví dụ:

Chọn p = 7
α ∈

*
p
Z
là phần tử nguyên thuỷ nên α = 3
Chọn a sao cho 0 ≤ a ≤ p – 2 nên a = 2
Khi đó : β = α
a
mod p = 3
2
mod 7 = 2
Chọn một số ngẫu nhiên bí mật k ∈
1

p
Z
, chọn k =3
Giả sử G muốn gửi thông báo x = 3 cho N, G phải tính:
e
K
(x, k) = (y
1
, y
2
)
Trong đó:
y
1
= α
k
mod p = 3

3
mod 7 = 6
y
2
= x. β
k
mod p = 3*2
3
mod 7 = 3
Khi N thu được bản mã (y
1
, y
2
) = (6, 3), anh ta sẽ tính:
x = d
K
(y
1
, y
2
) = y
2
(y
1
a
)
-1
mod p = 3*(6
2
)

-1
mod 7 = 3
Đó chính là bàn rõ mà G đã mã hoá




Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
20
Chương II

CHỮ KÍ ĐIỆN TỬ

2.1. Tìm hiểu về chữ ký điện tử ( electronic signature )
2.1.1. Khái quát về chữ ký điện tử ?
Về căn bản, khái niệm chữ ký điện tử (electronic signature) cũng giống như chữ
viết tay. Bạn dùng nó để xác nhận lời hứa hay cam kết của mình và sau đó không thể
rút lại được. Chữ ký điện tử không đòi hỏi phải sử dụng giấy mực, nó gắn
đặc điểm
nhận dạng của người ký vào một bản cam kết nào đó, nó là đoạn dữ liệu ngắn đính
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
tính toàn vẹn của nội dung văn bản gốc.
Con người đã sử dụng các hợp đồng dưới dạng điện tử từ
hơn 100 năm nay với
việc sử dụng mã Morse và điện tín. Vào năm 1889, tòa án tối cao bang New
Hampshire (Hoa kỳ) đã phê chuẩn tính hiệu lực của chữ ký điện tử. Tuy nhiên, chỉ với
những phát triển của khoa học kỹ thuật gần đây thì chữ ký điện tử mới đi vào cuộc
sống một cách rộng rãi. Vào thập kỷ 1980, các công ty và một số cá nhân bắt đầu sử
dụ

ng máy fax để truyền đi các tài liệu quan trọng. Mặc dù chữ ký trên các tài liệu này
vẫn thể hiện trên giấy nhưng quá trình truyền và nhận chúng hoàn toàn dựa trên tín
hiệu điện tử.
Hiện nay, chữ ký điện tử 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ằng bút điện tử với thiết bị màn hình
cảm ứng tại các quầy tính tiền, chấp nhận các đi
ều khoản người dùng (EULA) khi cài
đặt phần mềm máy tính, ký các hợp đồng điện tử online.
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 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ố.





Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
21
So sánh chữ ký thông thường và chữ ký diện tử
Chữ ký thông thường Chữ ký điện tử
Vấn đề ký một tài liệu
Chữ ký chỉ là một phần vật lý của tài
liệu
Vấn đề ký một tài liệu

Chữ ký điện tử không gắn kiểu vật lý

vào bức thông điệp nên thuật toán được
dùng phải “không nhìn thấy” theo một
cách nào đó trên bức thông điệp
Vấn đề về kiểm tra
Chữ ký được kiểm tra bằng cách so
sánh nó với chữ ký xác thực khác. Tuy
nhiên, đây không phải là một phương
pháp an toàn vì nó dễ bị giả mạo.
Vấn đề về kiểm tra

Chữ ký điện tử có thể kiểm tra nhờ
dùng một thuật toán “kiểm tra công
khai”. Như vậy, bất kì ai cũng có thể
kiểm tra được chữ ký điện tử. Việc dùng
chữ ký điện tử an toàn có thể chặn được
giả mạo.
Bản copy thông điệp được ký bằng
chữ ký thông thường lại có thể khác với
bản gốc.
Bản copy thông điệp được ký bằng
chữ ký điện tử thì đồng nhất với bản
gốc, điều này có nghĩa là cần phải ngăn
chặn một bức thông điệp ký số không bị
dùng lại.

2.1.2. Định nghĩa về sơ đồ ký điện tử
Một sơ đồ chữ ký S là một bộ năm
S = (P , A , K , S , V)
Trong đó: P là một tập hữu hạn các thông báo có thể có,
A là một tập hữu hạn các chữ ký có thể có,

K là một tập hữu hạn các khoá, mỗi khoá K ∈ K gồm có hai phần
K=(K’,K''), K' là khoá bí mật dành cho việc ký, còn K'' là khoá
công khai dành cho việc kiểm thử chữ ký.
V
ới mỗi K =(K’,K''), trong S có một thuật toán ký sig
k’
: P → A , và trong V có
một thuật toán kiểm thử ver
k”
: PxA

{đúng,sai} thoả mãn điều kiện sau đây đối với
mọi thông báo x ∈ P và mọi chữ ký y ∈ A :
ver
k”
(x, y) = đúng ↔ y = sig
k’
(x )
Với sơ đồ trên, mỗi chủ thể sở hữu một bộ khoá K =(K’,K''), công bố công khai
khoá K'' để mọi người có thể kiểm thử chữ ký của mình, và giữ bí mật khoá K’ để thực
hiện chữ ký trên các thông báo mà mình muốn gửi đi. Các hàm ver
k”
và sig
k’

Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
22
(khi biết K’) phải tính được một cách dễ dàng (trong thời gian đa thức), tuy nhiên hàm
y = sig

k’
(x ) là khó tính được nếu không biết K’ - điều đó bảo đảm bí mật cho việc ký,
cũng tức là bảo đảm chống giả mạo chữ ký.
Các chữ ký số phải thỏa mãn điều kiện cơ bản sau :
 Không thể giả mạo. Nếu P ký thông báo M bằng chữ ký F
(P,M)
thì không
ai có thể tạo được cặp [M.S
(M.P)
]
 Xác thực : nếu R nhận được cặp [M.S
(M.P)
] được coi là của P thì R có thể
kiểm tra được rằng chữ ký có thực sự là của P hay không ? Chỉ có P mới
có thể tạo được chữ ký này và chữ ký được ″gắn chặt″ với M. Hai yêu
cầu đầu tiên này là những trở ngại chính trong giao dịch qua máy tính.
Hai tính chất bổ trợ sau là những tính chất mong muốn đối với giao dịch
được hoàn tất nhờ chữ ký số.
¾ Không thể thay đổi : sau khi được phát M không thể
thay đổi bởi
F.R hoặc bởi một kẻ thu trộm nào.
¾ Không thể sử dụng lại : một thông báo trước đó được đưa ra sẽ
ngay lập tức bị R phát hiện.
2.1.3. Sơ đồ chữ ký RSA
Sơ đồ chữ ký RSA được cho bởi bộ năm
S = (P , A , K , S , V)
Trong đó : P = A =Z
n
, với n =p.q là tích của hai số nguyên tố lớn p,q
K là tập các cặp khoá K =(K’,K''), với K’ = a và K'' = (n,b)

a và b là hai số thuộc Z
*

n
thoả mãn a.b ≡ 1(mod
φ
(n)).
Các hàm sig
k’
và ver
k”
được xác định như sau:
sig
k’
(x) = x
a
modn ,
ver
k”
(x,y ) = đúng ↔ x ≡ y
b
(modn).
Dễ chứng minh được rằng sơ đồ được định nghĩa như vậy là hợp thức, tức là với
mọi x ∈ P và mọi chữ ký y ∈ A:
ver
k”
(x,y ) = đúng ↔ y = sig
k’
(x)
Chú ý rằng tuy hai vấn đề xác nhận và bảo mật theo sơ đồ RSA là có bề ngoài

giống nhau, nhưng nội dung của chúng là hoàn toàn khác nhau: Khi A gửi thông báo x
cho B, để B có căn cứ xác nhận đó đúng thực là thông báo do A gửi, A phải gửi kèm
theo chữ ký sig
k’
(x), tức là A gửi cho B (x, sig
k’
(x)), trong các thông tin gửi đi đó,
thông báo x hoàn toàn không được giữ bí mật. Cũng tương tự như vậy, nếu dùng sơ đồ
mật mã RSA, khi một chủ thể A nhận được một bản mật mã e
k’
(x) từ B thì A chỉ biết
rằng thông báo x được bảo mật, chứ không có gì để xác nhận x là của B.
Nếu ta muốn hệ truyền tin của ta vừa có tính bảo mật vừa có tính xác nhận, thì ta
phải sử dụng đồng thời hai hệ mật mã và xác nhận (bằng chữ ký). Giả sử trên mạng
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
23
truyền tin công cộng, ta có cả hai hệ mật mã khoá công khai S
1
và hệ xác nhận bằng
chữ ký S
2
. Giả sử B có bộ khoá mật mã K = (K', K'') với K' = (n, e) và
K'' = d trong hệ S
1
, và A có bộ khoá chữ ký K
s
= (K’
s
, K''

s
) với
K’
s
= a và K''
s
= (n,b) trong hệ S
2
. A có thể gửi đến B một thông báo vừa bảo mật vừa
có chữ ký để xác nhận như sau: A ký trên thông báo x trước, rồi thay cho việc gửi đến
B văn bản cùng chữ ký (x,sig
k’s
(x)) thì A sẽ gửi cho B bản mật mã của văn bản đó
được lập theo khoá công khai của B, tức là gửi cho B e
k’
((x, sig
k’s
(x)). Nhận được văn
bản mật mã đó B sẽ dùng thuật toán giải mã d
k’’
của mình để thu được (x, sig
k’s
(x)),
sau đó dùng thuật toán kiểm thử chữ ký công khai ver
k”s
của A để xác nhận chữ ký
sig
k’s
(x) đúng là của A trên x.
2.1.4. Sơ đồ chữ ký Elgamal

Sơ đồ chữ ký ElGamal được đề xuất năm 1985, gần như đồng thời với sơ đồ hệ mật
mã ElGamal, cũng dựa trên độ khó của bài toán lôgarit rời rạc. Sơ đồ được thiết kế đặc
biệt cho mục đích ký trên các văn bản điện tử, được mô tả như một hệ:
S = (P , A , K , S , V)
Trong
đó P = Z
*
p
, A = Z
*
p
x Z
p-1
, với p là một số nguyên tố sao cho bài toán tính
lôgarit rời rạc trong Z
*
p
là rất khó. Tập hợp K gồm các cặp khoá K=(K’,K''), với K’=a
là một số thuộc Z
*
p
, K'' =(p, α , β), α là một phần tử nguyên thuỷ của Z
*
p
, và
β=α
a
modp. K’ là khoá bí mật dùng để ký, và K'' là khoá công khai dùng để kiểm thử
chữ ký. Các thuật toán ký và kiểm thử chữ ký được xác định như sau: Với mỗi thông
báo x, để tạo chữ ký trên x ta chọn thêm môt số ngẫu nhiên k ∈ Z

*
p-1
, rồi tính :
sig
k’
(x,k ) = (γ , δ) với
γ = α
k
modp,
δ = (x – a.γ). k
-1
mod(p -1).
Thuật toán kiểm thử được định nghĩa bởi:
ver
k”
(x,(γ , δ)) = đúng ↔ β
γ
. γ
δ
≡ α
x
(modp).
Dễ thấy rằng sơ đồ chữ ký được định nghĩa như trên là hợp thức. Thực vậy, nếu
sig
k’
(x,k ) = (γ , δ) thì ta có :
β
γ
. γ
δ

≡ α

. α

mod p
≡ α
x
mod p,
vì k.δ +a.γ ≡ x mod(p -1). Do đó, ver
k”
(x,(γ , δ)) = đúng.

Ví dụ:
Giả sử p = 467, α = 2, a = 127. Khi đó β = 2
127
mod467=132. Cho x =100; ta
chọn ngẫu nhiên k =213 (∈ Z
*
466
) và được k
-1
mod466 = 431.
Chữ ký trên văn bản x=100 với số ngẫu nhiên k =213 là (γ , δ), trong đó
γ =2
213
mod467 = 29 và δ = (100 - 127.29).431mod466 =51.
Để kiểm thử ta tính :
β
γ
. γ

δ
= 132
29
.29
51
≡ 189 (mod467),
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
24
α
x
= 2
100
≡ 189 (mod467),
hai giá trị đó đồng dư với nhau theo mod 467, chữ ký (β
γ
. γ
δ
) = (29,51) được xác
nhận là đúng.
2.1.5. Sơ đồ chữ ký DSS
Sơ đồ chữ ký DSS được cho bởi bộ năm
S = (P , A , K , S , V)
Trong đó P = Z
*
p
, A = Z
*
q
x Z

*
q

p là một số nguyên tố lớn có độ dài biểu diễn 512 ≤ l
p
≤ 1024 bit (với l là
bội của 64) sao cho bài toán tính logarit rời rạc trong Z
p
là khó.
q là một ước số nguyên tố của p -1 có l
q
biểu diễn cỡ 160 bit.
Gọi α ∈ Z
*
p
,α = h
(p-1)/q
mod p ≠ 1 với 1<h<p-1
a là số ngẫu nhiên (0 < a < q )
β ≡ α
a
modp.
k là số ngẫu nhiên (0 < k < q )
K=(K’,K''), trong đó khoá bí mật K’ = a, và khoá công khai K'' = (p,q, α, β).
 Hàm ký sig
k’
:
sig
k’
(x,k ) = (γ , δ)

Trong đó γ = (α
k
modp) modq,
δ = (x + a. γ).k
-1
modq.
 Hàm kiểm thử ver
k”
:
ver
k”
(x,(γ , δ)) = đúng
↔ (
21
.
ee
βα
modp)modq = γ ,
Trong đó e
1
= x . w
và e
2
= γ. w
với w = δ
-1
mod q
Chú ý rằng ta phải có δ ≠ 0 mod q để có thể tính được δ
-1
mod q dùng trong thuật

toán kiểm thử, vì vậy nếu chọn k mà được δ ≡ 0 mod q thì phải chọn lại số k khác để
có được δ ≠ 0 mod q.
Cũng dễ thấy rằng sơ đồ như trên là đúng. Thực vậy nếu x, γ,δ là đúng thì :
(
21
.
ee
βα
modp)modq = (α
x.w
. β
γ.w
mod p) mod q
= (α
x.w
. α
a. γ.w
mod p) mod q
= (α
(x+a.γ).w
mod p) mod q (1)
Hơn nữa w = δ
-1
mod q
= (x + a.γ)
-1
.k mod q
→ (x + a. γ).w = k mod q (2)
Từ (1) và (″) → (
21

.
ee
βα
mod p)mod q = (α
k
mod p) mod q = γ
Như vậy ver
k”
(x,(γ ,δ)) = đúng
Ví dụ :

Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702
25
Giả sử p = 124540019 , q = 17389
Suy ra (p-1)/q = 7162, h = 110217528
Và Tính α = h
7162
mod 124540019 = 10083255
≠ 1, chọn a = 12496

Tính β = α
12496
mod 124540019 = 119946256.
Vậy khóa công khai là: (p = 124540099, q = 17389, α = 10083255, β =
119946256)
khóa bí mật là : (a=12496)
Ký: x = 2546, k = 9557 tính k
-1
mod q = 7631

γ = 100832559557 mod 124540019) mod 17389
= 27039929 mod 1738 9 = 34
δ = (7631){5246+(12496)(34)} mod 17389 = 13049
Kiểm thử:
w = δ
-1
mod q = 1799
e1= x.w mod q = 5246.1799 mod 17389 = 12716
e2= γ.w mod q = 34.1799 mod 17389 = 8999


e1
. β
e2
modp)modq = (10083255
12716
.119946265
8999
mod124540019)mod 17389
= 27039929 mod 17389
= 34 = γ
Như vậy ver
k”

()
),(,
δγ
x
= Đúng
2.2. Chữ ký không thể chối bỏ

Trong các sơ đồ chữ ký điện tử ta đã trình bày ở trên, việc kiểm thử tính đúng đắn
của chữ ký là do người nhận tiến hành. Như vậy, cả văn bản cùng chữ ký có thể được
sao chép và phát tán cho nhiều người mà không được phép của người gửi. Để tránh
khả năng đó, người ta đưa ra sơ đồ chữ ký không thể chố
i bỏ được với một yêu cầu là
chữ ký không thể được kiểm thử nếu không có sự hợp tác của người ký. Sự hợp tác đó
được thể hiện qua giao thức kiểm thử ( giao thức xác nhận ). Khi chữ ký đòi hỏi được
xác nhận bằng một giao thức kiểm thử thì một vấn đề nảy sinh là làm sao có thể ngăn
cản người ký chối bỏ một chữ ký mà anh ta đ
ã ký? Để đáp ứng yêu cầu đó, cần có
thêm một giao thức chối bỏ, thông qua giao thức này, người ký có thể chứng minh một
chữ ký không phải là chữ ký của mình. Nếu anh ta từ chối không tham gia giao thức
đó thì có bằng chứng là anh ta không chứng minh được chữ ký đó là giả mạo, tức là
anh ta không chối bỏ được chữ ký của mình.
Một sơ đồ chữ ký không thể chối bỏ có 3 phần:
 Mộ
t thuật toán ký
 Một giao thức kiểm thử ( giao thức xác nhận )
 Một giao thức chối bỏ

×