Tải bản đầy đủ (.doc) (4 trang)

MẬT MÃ ỨNG DỤNG TRONG THANH TOÁN ĐIỆN TỪ.DOC

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 (108.16 KB, 4 trang )

ài này nhằm bổ sung cho bài An toàn thông tin
trong thơng mại điện tử[1]

bằng một số trình
bầy chi tiết hơn, có tính chất toán học và kĩ
thuật, về các nội dung của lý thuyết mật mã, cơ
sở của các giải pháp đã đợc đề cập trong bài trớc
[1]
I. Mật mã và cơ sở lý thuyết mật mã
hiện đại
1. Mật mã khoá
Mật mã đã đợc nghiên cứu và sử dụng từ rất
lâu trong lịch sử loài ngời. Tuy nhiên chỉ vài ba
chục năm gần đây, nó mới đợc nghiên cứu công
khai và tìm đợc các lĩnh vực ứng dụng trong đời
sống công cộng với sự phát triển của kỹ thuật
tính toán và viễn thông hiện đại. Và từ đó, ngành
khoa học này đã phát triển rất mạnh mẽ, đạt đợc
nhiều kết quả lý thuyết sâu sắc và tạo cơ sở cho
việc phát triển các giải pháp bảo mật và an toàn
thông tin trong mọi lĩnh vực hoạt động của con
ngời ở thời đại mà công nghệ thông tin đợc ứng
dụng rộng khắp.
Việc ra đời các máy tính điện tử có năng lực
tính toán lớn cùng với việc phát hiện nhiều loại
bài toán đòi hỏi những năng lực tính toán còn
lớn hơn gấp bội đã đa đến việc nghiên cứu về độ
phức tạp tính toán, và một quan niệm về bí mật
gắn với độ phức tạp tính toán. Một giải pháp đợc
gọi là bí mật lý tởng, nếu để phá đợc giải
pháp đó (tức là giải đợc bí mật đó) cần phải thực


hiện một quá trình tính toán cực kì phức tạp
(chẳng hạn đòi hỏi tính toán hàng triêụ năm trên
máy tính), phức tạp đến mức mà ta coi là
không thể đợc trên thực tế.
Với quan niệm mới về bí mật đó, ngời ta đã
cải tiến và tạo mới nhiều giải pháp mật mã chỉ
có thể thực hiện đợc bằng các công cụ tính toán
hiện đại. Các hệ thống mật mã theo phơng thức
khoá đối xứng cổ điển, nhng lấy độ phức tạp
tính toán làm tiêu chuẩn cho độ bảo mật, nh hệ
DES, đã đợc chọn làm chuẩn cho truyền tin bảo
mật trong mấy chục năm gần đây.
ở đây, ta sẽ giới thiệu chủ yếu các hệ thống
mật mã khoá công khai là cống hiến mới của lý
thuyết mật mã hiện đại, cùng nhiều ứng dụng
của nó mà các giải pháp mật mã cổ điển không
thể có đợc.
2.Mật mã khoá công khai là gì?
Cơ sở của các hệ thống mật mã khoá công
khai là lý thuyết toán học về các hàm một
phía hay hàm cửa sập một phía, đợc định
nghĩa nh sau:
Hàm số học f là hàm một phía, nếu biết x, tính
y = f(x) là dễ, còn ngợc lại, biết y, tìm x sao cho
f(x) = y, hay x = f
-1
(y), là rất khó.
Hàm f là hàm cửa sập một phía, nếu nó là hàm
một phía, nhng có một chốt cửa sập z để nếu biết
chốt z đó thì việc tính ngợc x từ y sẽ trở thành

dễ. (Dễ, là có độ phức tạp tính toán chấp nhận đ-
ợc; rất khó là có độ phức tạp tính toán không vợt
qua nổi trên thực tế)
Thí dụ: Giả sử p là một số nguyên tố rất lớn,
và g là một căn nguyên thuỷ modulo p (tức g là
phần tử sinh của nhóm Z
p
*
gồm các số bé hơn p
và nguyên tố với p).
Ta có Hàm y = f(x) = g
x
(mod p) là hàm một
phía, vì biết x tính y là khá đơn giản, nhng biết y
để tính x thì với các thuật toán đã biết hiện nay
đòi hỏi một khối lợng tính toán cỡ
O(exp(lnp.lnlnp)
1/2
) phép tính (nếu p là số
nguyên tố cỡ 200 chữ số thập phân, thì khối l-
ợng tính toán trên đòi hỏi một máy tính 1 tỷ
phép tính/giây làm việc không nghỉ trong
GS. TS. Phan Đình Diệu
1
1
khoảng 3000 năm!). Giả sử n = p.q là tích của
hai số nguyên tố lớn p, q và e là một số nguyên
tố với

(n) = (p-1)(q-1). Biết p, q, dễ tính đợc d

sao cho de

1 mod

(n).
Hàm y= f(x) = x
e
mod n là hàm một phía, vì
biết x tính y và biết y để tính x (trong trờng hợp
chỉ biết n) là rất khó, đòi hỏi một khối lợng tính
toán cũng tơng tự nh cách trích trên
O(exp(lnp.lnlnn)
1/2
). Tuy nhiên, nếu biết thêm d
(hay biết p, q, vì từ đó cũng dễ tính ra d), thì từ y
tìm x lại khá dễ, vì y
d
= x
de
= x (mod n). Nh vậy,
y = f(x) là hàm cửa sập một phía, và d là chốt
cửa sập.
Trên đây là hai thí dụ điển hình, và cũng là hai
trờng hợp đợc sử dụng rộng rãi, về hàm một phía
và hàm cửa sập một phía. Vì đây là những điểm
then chốt của lý thuyết mật mã khoá công khai,
nên việc tìm kiếm các loại hàm một phía và cửa
sập một phía đợc nghiên cứu rất khẩn trơng, và
đến nay tuy có đạt đợc một số kết quả, nhng
việc tìm kiếm vẫn tiếp tục, đầy hứng thú nhng

cũng đầy khó khăn.
II. Mật mã khoá công khai với an
toàn thông tin
1. Truyền tin bảo mật:
Trong các hệ thống bảo mật cổ điển, hai ngời
muốn truyền tin bí mật cho nhau phải thoả thuận
một khoá mật mã chung K, K vừa là khoá để lập
bản mật mã C từ bản rõ P, và cũng là khoá để
giải mã từ C tìm lại P theo các phép lập mật mã
C = E
K
(P) và phép giải mã P = D
K
(C). Tất nhiên
ta có D
K
(E
K
(P)) = P. Khoá K phải giữ kín, chỉ
có hai ngời biết.
Mật mã khoá công khai dựa trên ý tởng sau
đây: có thể tách riêng hai quá trình lập mã và
giải mã với hai khoá riêng biệt. Bí mật là dành
cho ngời nhận tin, nên khoá giải mã phải đợc
giữ mật cho ngời nhận tin, còn việc lập mã để
gửi đến một ngời A có thể công khai để mọi ng-
ời có thể dùng để gửi thông tin mật cho A. ý t-
ởng đó đợc thực hiện nhờ vào các hàm cửa sập
một phía. Thí dụ về hàm cửa sập một phía kể
trên là cơ sở của hệ mật mã khoá công khai nổi

tiếng RSA (do Rivest-Shamir-Adleman đề xuất).
Một ngời A chọn một số nguyên n ( n = pq nh
trên) và một số e. A công bố công khai khoá lập
mã Kp = (n, e) và giữ bí mật cho riêng mình
khoá giải mã Ks = d. Ai cũng có thể gửi thông
báo bí mật đến A, cụ thể, nếu thông báo là P (để
tránh phức tạp cho trình bầy, ta giả thiết P đã đ-
ợc qui về dạng con số modulo n), thì bản mật mã
tơng ứng là C = P
e
mod n. A nhận đợc C, và chỉ
riêng A giải đợc từ C tìm lại P, vì P = C
d
mod n.
Muốn phá mã thì phải biết d, mà biết d tơng đ-
ơng với việc tìm ra p, q là việc rất khó nh đã nói ở
phần trên.
Một hệ mật mã khoá công khai khác xây dựng
trên cơ sở bài toán phân tích số nguyên thành
thừa số nguyên tố là hệ mật mã Rabin. Giả sử A
chọn một số nguyên n = pq, với p, q là các số
nguyên tố lớn dạng 4m+3, và một số B. Khoá
công khai là Kp = (n, B), và khoá bí mật là Ks =
(p, q). Thuật toán lập mã E
Kp
và giải mã D
Ks
trong trờng hợp này là:
E
Kp

(p) = P(P + B) mod n,
D
Ks
(c) =

B
2
/

4 + C - B/2 mod p.
Thuật toán giải mã là dễ thực hiện nếu biết p,
q; do đó chỉ có A là giải mã đợc dễ dàng, còn
ngời khác không biết p, q thì tính D
Ks
cũng khó
tơng đơng với việc tìm các thừa số p, q.
Ta giới thiệu thêm một hệ mật mã khoá công
khai khác là hệ ElGamal. Giả sử hệ xác định
một số nguyên tố lớn p và một căn nguyên thuỷ
g mod p. p và g có thể dùng chung cho cả hệ
thống gồm nhiều ngời. Mỗi thành viên A chọn
và giữ bí mật một số a (Ks = a); tính b = g
a
mod
p và công bố công khai b (Kp = b). Mỗi lần một
thành viên khác muốn gửi bí mật một thông báo
P cho A thì làm nh sau: chọn ngẫu nhiên một số
r

p-1, rồi tính

E
Kp
(P, r) = (C
1
, C
2
),
trong đó
C
1
= g
r
mod p, C
2
= Pb
r
mod p.
C = (C
1
, C
2
) là bản mật mã đợc gửi đến A.
Với khoá Ks = a, A sẽ giải mã nh sau: D
Ks
(C) =
C
2
.(C
1
a

)
-1
mod p.
Dễ thử lại rằng D
Ks
(C) = P.
Hệ mật mã này có một đặc điểm quan trọng:
mỗi lần lập mã, ngời gửi có thể chọn thêm một
yếu tố ngẫu nhiên để tăng độ mật của bản mã,
nh vậy trên thực tế mỗi lần lập mã đều có sử
dụng thêm một khoá riêng.
Tính u việt của mã khoá công khai là ở chỗ:
trong một hệ truyền tin bảo mật không ai phải
trao đổi khoá bí mật trớc với ai cả, mỗi ngời chỉ
giữ cái mật mã riêng của mình mà vẫn truyền tin
bảo mật đợc với mọi ngời khác. Điều này đặc
biệt quan trọng khi việc truyền tin đợc phát triển
trên các mạng rộng, nh Internet với số ngời sử
dụng gần nh không hạn chế. Mặt khác, nh trên
2
2
đã nói, mật mã khoá công khai không chỉ có tác
dụng với bảo mật, mà còn nhiều ứng dụng đặc
sắc khác nh sẽ đợc trình bầy trong các phần sau.
2- Bài toán xác nhận.
Trong cách giao thiệp truyền thống, một chữ kí
viết tay của ngời gửi dới một văn bản không có
tẩy, xoá là đủ để xác nhận ngời gửi là ai, ngời
gửi có trách nhiệm về văn bản và sự toàn vẹn
của văn bản, và cũng không thể chối bỏ trách

nhiệm về chữ kí của mình. Nhng trong truyền
tin điện tử, văn bản chỉ là một dãy bit mà chữ
kí cũng chỉ có thể là một dãy bit, nên nếu mã
hoá phần văn bản riêng, phần chữ kí riêng rồi
ghép lại thì không còn có đợc tính chất nh theo
cách truyền thống nói trên. Chữ kí điện tử, để
thực hiện đợc các chức năng xác nhận nh nói
trên, của một ngời gửi trên một văn bản phải làm
sao vừa mang dấu vết không chối cãi đợc của
ngời gửi, vừa phải gắn bó với từng bit của văn
bản mà nếu thay đổi dù chỉ là một bit của văn
bản thì chữ kí cũng không còn đợc chấp nhận.
Những yêu cầu đó, may thay, lại có thể đợc giải
quyết bằng phơng pháp mật mã khoá công khai.
Chẳng hạn, với thí dụ của hệ RSA, hệ này
cũng có thể đợc dùng một cách đối ngẫu, để đợc
một sơ đồ chữ kí, gọi là sơ đồ chữ kí RSA:
Một ngời dùng A chọn K
p
= (n, e) là khoá
công khai và giữ K
s
= d là khoá mật của mình.
Bây giờ để kí trên một văn bản M, A dùng thuật
toán kí sig
A
trên M:
sig
A
(M) = M

d
mod n
M
d
mod n là chữ kí của A trên văn bản M (M
n; thông thờng, văn bản có thể dài, nhng ta
muốn có chữ kí ngắn. Để làm điều đó ngời ta
dùng kĩ thuật hàm băm biến mỗi văn bản có độ
dài tuỳ ý thành một digest có độ dài n, và kí
trên digest đó. Kĩ thuật hàm băm là một vấn đề
quan trọng, có thể đợc đề cập trong một dịp khác.
Chú ý rằng chỉ có A mới tạo ra đợc chữ kí đó
(vì có khoá mật d). A gửi (M, sig
A
(M)) đến ngời
nhận. Dùng khoá công khai K
p
= (n, e), ta có
một điều kiện kiểm thử ver
A
(x, y) để xác nhận y
có đúng là chữ kí của A trên văn bản x hay
không. Trong trờng hợp này, ver
A
(x, y) =
df
(y
e

x mod n)

Rõ ràng ver
A
(x, y) đúng nếu x = M, y = sig
A
(M).
Ngời nhận thử, nếu thấy ver
A
nghiệm đúng, thì
xác nhận chữ kí của A trên M và cả tính toàn
vẹn của M.
Trong thực tế, ngời ta thờng dùng các sơ đồ
chữ kí do cải tiến hoặc bổ sung từ sơ đồ chữ kí
ElGamal sau đây: Giả sử ta chọn chung một số
nguyên tố lớn p và một căn nguyên thuỷ g mod
p. Mỗi thành viên A chọn một khoá bí mật a, và
công bố khoá công khai b ( = g
a
mod p). Thuật
toán kí sig
A
và điều kiện kiểm thử ver
A
đợc xác
định nh sau: Để kí văn bản M, A lấy thêm một
số ngẫu nhiên (và giữ bí mật) r , rồi lập chữ kí
sig
A
(M, r) = (y, z), trong đó:
y = g
r

mod p ; z = (M - ay) r
-1
mod (p-1)
(y, z) là chữ kí của A trên văn bản M. Điều
kiện kiểm thử đợc xác định bởi
ver
A
(M, (y, z)) =
df
(b
y
.y
z


g
M
mod p).
Dễ thử lại rằng ver
A
(M, (y, z)) đúng khi (y, z)
là chữ kí của A trên văn bản M.
Trên cơ sở sơ đồ chữ kí ElGamal, với một số
bổ sung để bảo đảm tốt hơn độ tin cậy, ngời ta
đã xây dựng sơ đồ chữ kí DSS, đợc chấp nhận là
chuẩn chữ kí điện tử trong một số lĩnh vực giao
dịch ở Mỹ từ đầu những năm 90.
Các sơ đồ chữ kí nói trên đợc thực hiện không
cần đối thoại. Tuy nhiên, trong một số trờng hợp
để ràng buộc trách nhiệm rõ ràng trong việc xác

nhận, ngời ta dùng các giao thức có tính chất đối
thoại (hay chất vấn) qua một vài lần hỏi đáp để
chính thức xác nhận tính đúng đắn của chữ kí,
tính toàn vẹn của văn bản, hay để buộc chấp
nhận (không thể thoái thác hoặc chối bỏ) chữ kí
của mình.[1], [2]
3. Phân phối khoá và thoả thuận khoá.
Để thực hiện việc truyền tin bảo mật trong các
hệ cổ điển với việc sử dụng các phơng pháp mật
mã khoá đối xứng, từng cặp ngời phải có cách
an toàn để thoả thuận và truyền cho nhau các
khoá bí mật chung. Hiện nay, việc dùng các hệ
mật mã khoá đối xứng nh DES vẫn còn khá
thông dụng; tuy nhiên phơng pháp mã khoá
công khai có thể giúp cho các thành viên trong
mạng trao đổi và thoả thuận khoá bí mật với
nhau bằng mạng truyền thông công cộng. Một
thí dụ là giao thức trao đổi Diffie-Hellman sau
đây: Giả thử trong hệ thống đã qui định sử dụng
chung một số nguyên tố lớn p và một căn
nguyên thuỷ g mod p. Mỗi thành viên A
i
trong
hệ thống tự chọn và giữ bí mật một số a
i
làm
khoá bí mật của mình, đồng thời tính b
i
= g
ai

mod p và công bố công khai b
i
nh là khoá công
khai của mình (ta nhớ rằng biết a
i
để tính b
i

dễ, còn ngợc lại, biết b
i
mà tìm ra đợc a
i
là cực
kì khó). Hai ngời A
i
và A
j
khi muốn trao đổi
(Xem tiếp trang 28)
3
3
thông tin mật với nhau thì có thể cùng tạo ra
khoá riêng của hai ngời nh sau: A
i
tính b
j

ai
mod
p, A

j
tính b
i

aj
mod p , hai giá trị đó bằng nhau và
đợc xem là khoá riêng của A
i
và A
j
:
K
ij
= b
j

ai
mod p = b
i

aj
mod p.
Mỗi ngời có đợc khoá K
ij
đó bằng cách kết
hợp cái bí mật của mình với cái công khai của
ngời kia. Ngoài A
i
và A
j

không ai có thể tìm đợc
K
ij
!
Về nguyên tắc, trên mạng truyền thông công
cộng, kể cả mạng lớn nh Internet, với phơng
pháp mã hoá công khai, có thể tổ chức các hệ
thống trao đổi thông tin bảo mật mà không ngời
nào phải trao đổi trớc một bí mật nào của mình
với ngời khác. Tuy nhiên, tuỳ theo yêu cầu của
độ an toàn và tin cậy, các hình thức tổ chức có
sự quản lí, điều phối tập trung theo mức độ nào
đó vẫn là cần thiết. Và do đó, việc quản trị khoá,
phân phối khoá, thoả thuận khoá, chuyển vận
khoá với sự can thiệp của trọng tài,... theo các
yêu cầu tổ chức khác nhau vẫn là một vấn đề rất
đợc quan tâm, đã và đang tiếp tục đợc nghiên
cứu rộng rãi.
.
4
4

×