MẬT MÃ ỨNG DỤNG TRONG THANH TOÁN ĐIỆN TỪ
Trang 1à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
Trang 2khoả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 ) -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
Trang 3đã 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 Ai 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
khai của mình (ta nhớ rằng biết a i để tính b i là
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 Ai và Aj khi muốn trao đổi
Trang 4thô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: Ai tính b j ai mod
p, Aj tính b i aj mod p , hai giá trị đó bằng nhau và
đợc xem là khoá riêng của Ai và Aj :
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 Ai và Aj 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
.