7. 2.1. Sơ đồ phân phối khoá Blom.
Giả sử ta có một mạng gồm có n ng−ời dùng, và mỗi ng−ời dùng đó đều có nhu cầu trao đổi thông tin bí mật với mọi ng−ời trong mạng. Giả sử sơ đồ mật mã đ−ợc sử dụng là một sơ đồ mật mã khoá đối xứng (chẳng hạn, DES). Toàn bộ mạng cần có ( 1
2
n n− )
khoá khác nhau cho chừng ấy cặp ng−ời dùng khác nhau trong mạng. Một cơ quan đ−ợc uỷ thác TA quản lý chừng ấy khoá và phải chuyển cho mỗi ng−ời dùng n -1 khoá chung với n -1 ng−ời còn lại trong mạng, nh− vậy TA phải truyền bằng những kênh bí mật tất cả là n (n -1) l−ợt khoá đến cho tất cả n ng−ời dùng.
Blom (1985) đề nghị một sơ đồ phân phối khoá, mà sau đây ta gọi là sơ đồ Blom, trong tr−ờng hợp đơn giản nhất đ−ợc mô tả nh− sau:
TA chọn một số nguyên tố p ≥ n, và chọn cho mỗi ng−ời dùng A một số rA∈Zp . Số p và các số rA đ−ợc công bố công khai.
Sau đó, TA chọn ba số ngẫu nhiên a,b,c ∈ Zp , và lập đa thức f x y( , )= +a b x( +y)+cxy modp.
Với mỗi ng−ời dùng A, TA tính gA( )x = f x r( , A)=aA+b xA modp,
trong đó . TA chuyển bí mật
cặp số
mod , mod
A A A A
a = +a br p b = +b cr p
(a bA, A)cho A; nh− vậy, A biết gA( )x =aA+b xA . So với việc TA phải truyền bí mật n (n -1) l−ợt khoá kể trên thì với sơ đồ Blom, TA chỉ phải truyền n l−ợt các cặp số (a bA, A)mà thôi.
Sau khi đã thực hiện xong các công việc chuẩn bị đó, bây giờ nếu hai ng−ời dùng A và B muốn tạo khoá chung để truyền tin bằng mật mã cho nhau, thì khoá chung K A,B đó sẽ là :
KA B, =gA( )rB =gB( )rA =f r r( ,A B),
Nh− vậy, theo sơ đồ phân phối này, TA phân phối cho mỗi ng−ời dùng một phần bí mật của khoá, hai ng−ời dùng bất kỳ phối hợp phần bí mật của riêng mình với phần công khai của ng−ời kia để cùng tạo nên khoá bí mật chung cho hai ng−ời. Sơ đồ này là an toàn theo nghĩa sau đây: Bất kỳ một ng−ời thứ ba C nào (kể cả C là một ng−ời tham gia trong mạng) có thể phát hiện đ−ợc khoá bí mật riêng của hai ng−ời A và B. Thực vậy, dù C có là ng−ời tham gia trong mạng đi nữa, thì cái mà C biết nhiều lắm là hai số do TA cấp cho. Ta chứng minh rằng với những gì mà C biết thì bất kỳ giá trị l∈ Z
,
C C
a b
p nào cũng có thể đ−ợc chấp nhận là K A,B . Những gì mà C biết, kể cả việc chấp nhận l = K A,B , đ−ợc thể hiện thành
( A B) A B C C C C a b r r cr r l a br a b cr b + + + = + = + =
Hệ thống ph−ơng trình đó, nếu xem a,b,clà ẩn số, có định thức các hệ số ở vế phải là 1 1 0 ( )( ) 0 1 A B A B C C A C C r r r r r r r r r + B r = − − ,
theo giả thiết chọn các số r , định thức đó khác 0, do đó hệ ph−ơng trình luôn có nghiệm (a,b,c), tức việc chấp nhận llà giá trị củaK A,B
là hoàn toàn có thể. Bất kỳ giá trị l ∈ Zp nào cũng có thể đ−ợc C chấp nhận là K A,B , điều đó đồng nghĩa với việc C không biết K A,B là số nào!
Tuy nhiên, nếu có hai ng−ời tham gia C và D, khác A,B, liên minh với nhau để phát hiện K A,B , thì lại rất dễ dàng, vì cả C và D biết C C C C D D D D a br a b cr b a br a b cr b + = + = + = + =
Bốn ph−ơng trình đó đủ để xác định (a,b,c), từ đó tìm đ−ợc K A,B . Ta có thể mở rộng sơ đồ Blom nói trên để đ−ợc một sơ đồ Blom tổng quát, trong đó mọi khoá chung K A,B của hai ng−ời dùng A và B là bí mật hoàn toàn đối với bất kỳ liên minh nào gồm k ng−ời ngoài A và B, nh−ng không còn là bí mật đối với mọi liên minh gồm k +1 ng−ời tham gia trong mạng. Muốn vậy, ta chỉ cần
thay đa thức f (x,y ) nói trên bằng một đa thức đối xứng bậc 2k sau đây : 0 0 ( , ) mod , k k i j ij i j f x y a x y = = =∑∑ p
trong đó aij ∈Zp, 0≤i j, ≤k a, ij =aji với mọi i, j.
7.2.2. Hệ phân phối khoá Kerberos.
Kerberos là tên của một hệ dịch vụ phân phối (hay cấp phát) khoá phiên (session key) cho từng phiên truyền tin bảo mật theo yêu cầu của ng−ới dùng trong một mạng truyền tin. Hệ mật mã đ−ợc sử dụng th−ờng là hệ có khoá đối xứng, chẳng hạn DES.
Để thực hiện hệ này, tr−ớc hết, cơ quan đ−ợc uỷ thác (hay trung tâm điều phối) TA cần chia sẻ một khoá DES bí mật KA với mỗi thành viên A trong mạng. Sau đó, mỗi lần A có nhu cầu truyền tin bảo mật với một thành viên khác B thì yêu cầu TA cấp một khoá phiên cho cả A và B. Việc cấp phát đó sẽ đ−ợc thực hiện bằng một giao thức phân phối khoá nh− sau:
1. TA chọn ngẫu nhiên một khoá phiên K, xác định một tem thời gian T và một thời gian sống L (nh− thế có nghĩa là khoá phiên K có giá trị sử dụng trong khoảng thời gian từ T đến T +L).
2. TA tính 1 2 ( , ( ), , ), ( , ( ), , ). A B K K m e K ID B T L m e K ID A T L = = và gửi (m m1, 2) đến A.
3. A dùng hàm giải mã dKAcho để thu đ−ợc K, T,L,ID(B). Sau đó tính 1 m m3 =eK(ID A T( ), ), và gửi (m m3, 2)cho B. 4. B dùng các hàm giải mã B K
d cho m2 và dK cho m3 để thu đ−ợc K ,T, L,ID(A) và ID(A),T . Nếu thử thấy hai giá trị của ID(A) và của T trùng nhau, thì B tính tiếp
m 4 = eK (T +1) và gửi m4 cho A.
5. A dùng hàm giải mã dK cho m4, và thử xem kết quả thu đ−ợc có đúng là T +1 hay không.
Trong giao thức kể trên, các ký hiệu ID(A) và ID(B) là chỉ cho danh tính của A và của B, các thông tin đó là công khai.
Hoàn thành giao thức gồm 5 b−ớc nói trên, TA (cùng với A và B) đã thực hiện xong việc cấp phát một khoá phiên K cho hai ng−ời dùng A và B để truyền tin mật mã cho nhau. Tất cả các việc trao đổi thông tin của giao thức đó đều đ−ợc thực hiện trên các kênh công cộng, dù khoá K vẫn là bí mật, chỉ A, B (và TA) là đ−ợc biết mà thôi. Ngoài việc cấp phát khoá, giao thức đó còn thực hiện đ−ợc việc xác nhận khoá: B và A đều tin chắc đ−ợc rằng đối tác của mình đã thực sự có khoá K do kết quả của việc thực hiện các phép thử ở b−ớc 4 và 5; thêm nữa, cả A và B còn biết đ−ợc thời hạn có hiệu lực của khoá.
Phân phối khoá bí mật theo giao thức Kerberos là có độ tin cậy cao, tuy nhiên trong thực tế, việc sử dụng nó cũng đòi hỏi tốn nhiều thời gian, nên ngày nay cũng chỉ đ−ợc dùng trong những tr−ờng hợp hạn chế.
7. 2.3. Hệ phân phối khoá Diffie-Hellman.
Hệ phân phối khoá Diffie-Hellman không đòi hỏi TA phải biết và chuyển bất kỳ thông tin bí mật nào về khoá của các ng−ời tham gia trong mạng để họ thiết lập đ−ợc khoá chung bí mật cho việc truyền tin với nhau.
Trong một hệ phân phối khoá Diffie-Hellman, TA chỉ việc chọn một số nguyên tố lớn p và một phần tử nguyên thuỷ α theo modp, sao cho bài toán tính logα trong Zp∗ là rất khó. Các số p và α
đ−ợc công bố công khai cho mọi ng−ời tham gia trong mạng. Ngoài ra, TA có một sơ đồ chữ ký với thuật toán ký (bí mật) sigTA và thuật toán kiểm thử (công khai) verTA.
Một thành viên bất kỳ A với danh tính ID(A) tuỳ ý chọn một số aA(0≤aA ≤ −p 2)và tính aAmod . A giữ bí mật
A
b =α p aA và đăng
ký các thông tin (ID(A),bA) với TA. TA cấp cho A chứng chỉ C(A) = (ID(A),bA, sigTA(ID(A),bA)).
Các chứng chỉ của các thành viên trong mạng có thể đ−ợc l−u giữ trong một cơ sở dữ liệu công khai, hoặc uỷ thác cho TA l−u giữ và cung cấp công khai cho các thành viên mỗi khi cần đến.
Khi hai thành viên A và B trong mạng cần có một khoá bí mật chung để truyền tin bảo mật cho nhau, thì A dùng thông tin công khai có trong C(B) kết hợp với số bí mật của mình là bB aAđể tạo nên khoá
, aAmod a aB A mod
A B B
K =b p=α p.
Khoá chung đó B cũng tạo ra đ−ợc từ các thông tin công khai bAcủa A và số bí mật của mình: aB
, aB mod a aA B mod
A B A
K =b p=α p.
Để bảo đảm đ−ợc các thông tin về và bB bA là chính xác, A và B có thể dùng thuật toán verTA để kiểm thử chữ ký xác nhận của TA trong các chứng chỉ C(B) và C(A) t−ơng ứng.
Độ an toàn của hệ phân phối khoá Diffie-Hellman đ−ợc bảo đảm bởi điều sau đây: Biết bAvà bBđể tính KA,B chính là bài toán Diffie-Hellman mà ta đã đề cập tới trong mục 4.1, ch−ơng IV: biết
mod
a
p
α và αbmodp, tính αabmodp. Đây là một bài toán khó t−ơng đ−ơng bài toán tính lôgarit rời rạc hay bài toán phá mật mã ElGamal.