Trao đổi khĩa Diffie_Hellman:

Một phần của tài liệu Tìm hiểu được một số giải thuật chính như DES, ECB, CBC, RSA, MD5 (Trang 41 - 48)

2. Phân bố các khĩa bảo mật

2.3. Trao đổi khĩa Diffie_Hellman:

Nếu chúng ta khơng muốn sử dụng server khĩa trực tuyến thì sử dụng giao thức đồng ý khĩa để trao đổi các khĩa bí mật:

1. U chọn aU ngẫu nhiên : 0 <= aU <= p-2 2. U tính α au mod p và gởi nĩ tới V 3. V chọn aV ngẫu nhiên : 0 <= aV <= p-2 4. V tính α av mod p và gởi nĩ tới U 5. U tính K = (α av)au mod p

V tính K = (α au)av mod p

Giao thức này rất giống sự tiền phân bố khĩa Diffie_Hellman, nĩ chỉ khác ở chỗ aU và aV được chọn mỗi lần giao thức được chạy thay vì là cố định. Cả U và V đều đảm bảo việc làm tươi khĩa bởi vì khĩa phiên liên lạc phụ thuộc vào cả hai số mũ ngẫu nhiên aU và aV.

fig15

Giao thức này cĩ thể bị tấn cơng bởi một đối pjương chủ động W, W sẽ chặn lại đoạn tin giữa U và V và thay thế bằng đoạn tin của riêng mình:

Fig16

Ơû cuối giao thức U thiết lập khĩa bí mật αau a’v với W vàV thiết lập khĩa bí mật αa’u av với W. Khi U thử mã hĩa đoạn tin gởi tới V, W sẽ cĩ thể giải mã nĩ nhưng V thì khơng làm được. Tương tự khi V gởi đoạn tin tới U. Để tránh sự xâm nhập của W thì U và V nên thiết lập việc định danh lẫn nhau cùng thời điểm mà khĩa đươc thiết lập. Giao thức như thế được gọi là sự đồng ý khĩa cĩ chứng thực là một dạng mơ phỏng của sự trao đổi khĩa Diffie_Hellman. Giao thức giả thiết một số nguyên tố p và một phần tử cơ bản α được biết một cách cơng khai. Mỗi user U sẽ cĩ một sơ đồ chữ ký với giải thuật làm rỏ verU và giải thuật ký tên sigU. TA cũng cĩ một sơ đồ chữ ký với giải thuật làm rỏ cơng khai verTA. Mỗi user U cĩ một sự chứng thực:

C(U) = (ID(U), verU, sigTA(ID(U), verU)) Với ID(U) là thơng tin định danh cho U.

Giao thức station_to_station cĩ chứng thực của Diffie, Van Oorschot và Wiener như sau:

1. U chọn một số ngẫu nhiên aU : 0 <= aU <= p-2 2. U tính αau mod p và gởi nĩ tới V

3. V chọn một số ngẫu nhiên aV : 0 <= aV <= p-2 4. V tính: αav mod p

Và K = (αau)av mod p yV = sigV (αav, αau) và gởi (C(V), αav, yV ) tới U

5. U tính K = (αav)au mod p

Và làm rỏ yV sử dụng verV, làm rỏ C(V) sử dụng verTA. 6. U tính yU = sigU (αau, αav)

Và gởi (C(U), yU ) tới V.

7. V làm rỏ yU sử dụng verU và làm rỏ C(U) sử dụng verTA

khơng thể tính chữ ký của V trên (αa’v, αau) bởi vì V khơng biết giải thuật ký tên sigV, nên W khơng thể thay sigV (αav, αa’u) bằng sigV (αa’v, αau). Tương tự W khơng thể thay sigU (αau, αa’v) bằng sigU (αa’u, αav) bởi vì W khơng biết giải thuật ký tên của U (sigU).

Tĩm lại nhờ sử dụng chữ ký mà cĩ thể tránh được sự tấn cơng của W.

- Giao thức này khơng cung cấp sự xác nhận khĩa. Thật dễ dàng để mơ tả điều đĩ bằng cách:

yV = eK(sigV (αav, αau)) trong bước 4 Và yU = eK (sigU (αau, αav)) trong bước 6.

2.3.2. Giao thức đồng ý khĩa MTI (Matsumoto, Takashima, Imai):

- Giao thức này khơng yêu cầu U và V tính bất kỳ chữ ký nào. Nĩ là giao thức hai chuyến (pass) bởi vì cĩ sự truyền thơng hai phía giữa U và V (trong giao thức

station_to_station cĩ 3 pass). Việc thiết lập giao thức này thì tương tự như sự tiền phân bố khĩa Diffie_Hellman:

1. U chọn rU ngẫu nhiên (0 <= rU <= p-2) và tính sU = αru mod p 2. U gởi (C(U), sU) tới V

3. V chọn rV ngẫu nhiên (0 <= rV <= p-2) và tính sV = αrv mod p 4. V gởi (C(V), sV) tới U

5. U tính:

K = sVaubVru mod p = αrvau + ruav mod p (bV được lấy từ C(V)) Và V tính:

K = sUavbUrv mod p = αruav + rvau mod p (bU được lấy từ C(U))

Trong đĩ:

. p, α: được biết cơng khai.

. Mỗi user U cĩ xâu ID(U), số mũ bí mật aU (0 <=aU<=p-2), và giá trị cơng khai tương ứng: bU = αau mod p. Tương tự đối với V.

. TA cĩ sơ đồ chữ ký với giải thuật làm rỏ (cơng khai) verTA và giải thuật chữ ký bảo mật sigTA.

. Mỗi user U cĩ sự chứng thực :

C(U) = (ID(U), bU, sigTA(ID(U), bU) Tương tự cho V.

. Cả U và V cĩ cùng khĩa: K = αruav + rvau mod p.

- Ví dụ: p = 27803, α = 5 được biết cơng khai

. Giả thiết U chọn aU = 21131, V chọn aV = 17555. Khi đĩ: bU = 521131 mod 27803 = 21420

bV = 517555 mod 27803 = 17100

(bU, bV được đặt trên sự chứng thực của U và V) . Giả sử U chọn rU = 169, V chọn rV = 23456. Khi đĩ:

sU = 5169 mod 27803 = 6268 sV = 523456 mod 27803 = 26759

U sẽ gởi sU tới V và V sẽ gởi sV tới U. . U tính khĩa: KU,V = sVaubVru mod p = 267592113117100169 mod 27803 = 21600 . V tính khĩa: KU,V = sUavbUrv mod p = 6268175552142023456 mod 27803 = 21600

Sự bảo mật của giao thức MTI chống lại đối phương bị động cũng tương tự như bài tốn Diffie_Hellman. Khi cĩ sự xâm nhập của đối phương chủ động W thì U và V sẽ tính những khĩa khác nhau:

. U tính khĩa: K = αruav + r’vau mod p. . V tính khĩa: K = αr’uav + rvau mod p.

- Mặc dù U và V đã tính được những khĩa khác nhau (dĩ nhiên là khơng cĩ lợi cho họ) thì những khĩa này cũng khơng được tính bởi W (vì W khơng biết các số mũ bí mật aU, aV). Đây là kiểu chứng thực khĩa tường minh.

2.3.3. Sự đồng ý khĩa sử dụng chứng thực bản thân (Girault):

- Khơng yêu cầu viêc chứng thực, giá trị của khĩa cơng khai và định danh của chủ nĩ thì được chứng thực một cách tường minh tới mỗi cái khác.

- Sơ đồ của Girault kết hợp những đặt điểm của giải thuật RSA và giải thuật rời rạc. Giả sử n =pq, p = 2p1 + 1, q = 2q1 + 1 và p, q, p1, q1 là các số nguyên tố lớn (bảo mật). Giá trị n chỉ được biết bởi TA. TA chọn một số mũ mã hĩa RSA e (cơng khai) và số mũ giải mã d (bảo mật) mà d = e-1 mod Φ(n).

. Mỗi user U cĩ một xâu ID(U) và đưa ra một khĩa cơng khai chứng thực bản thân pU từ TA:

1. U chọn một số mũ bảo mật aU và tính: bU = αau mod n

2. U gởi aU và bU tới TA.

3. TA tính: pU = (bU – ID(U))d mod n. 4. TA gởi pU tới U.

.

Cĩ thể tính bU từ pU như sau: bU = pUe + ID(U) mod n - Giao thức đồng ý khĩa Girault:

1. U chọn rU ngẫu nhiên và tính: sU = αru mod n

2. U gởi ID(U), pU và sU tới V. 3. V chọn rV ngẫu nhiên và tính:

sV = αrv mod n

4. V gởi ID(V), pV và sV tới U.

5. U tính: K = sVau(pVe + ID(V))ru mod n 6. U tính: K = sUav(pUe + ID(U))rv mod n Ở cuối giao thức U và V tính khĩa:

K = αruav + rvau mod n. - Ví dụ: p = 839, q = 863, α = 5.

. Khi đĩ: n = pq = 724057, Φ(n) = (p - 1)(q - 1) = 722356. . TA chọn d = 125777 → e = 84453 (RSA).

. Giả sử U cĩ ID(U) = 500021 và aU = 111899 thì: bU = 48889 và pU = 650704.

. Tương tự khi V cĩ ID(V) = 500022 và aV = 123456 thì: bV = 111692 và pV = 683556.

. Giờ đây khi U và V muốn trao đổi khĩa thì: U chọn rU = 56381 → sU = 171007 V chọn rV = 356935 → sV = 320688 . Cả U lẫn V đều tính cùng khĩa: K = 42869.

- Khi đối phương W muốn giả dạng U thì W bắt đầu với ID(U) và giá trị giả b’U. Khi đĩ khơng cĩ cách nào để W tính số mũ a’U tương ứng với b’U (nếu bài tốn Discrete Log khơng bị bẻ gãy). Khơng cĩ a’U thì việc tính tốn khĩa khơng thể được thực hiện bởi W.

- Khi W ngăn cản U và V từ việc tính tốn khĩa chung (W ở giữa đường truyền U và V) thì W cũng khơng thể sao lại việc tính tốn của U hoặc V. Vì vậy sơ đồ này cung cấp sự chứng thực tường minh như trong giao thức MTI.

- Tại sao U được yêu cầu cung cấp giá trị aU tới TA trong khi TA cĩ thể tính pU trực tiếp từ bU khơng cần biết aU?. Lí do là để đảm bảo tính bảo mật thì giá trị aU phải được biết trước khi TA tính pU cho U (TA tính bU dựa vào aU, sau đĩ so sánh với bU nhận từ U: nếu giống nhau thì chấp nhận, ngược lại thì hủy), giả sử W chọn một giá trị giả a’U và tính giá trị tương ứng: b’U = αa’u mod n.

→ p’U = (b’U – ID(U))d mod n

. W sẽ tính b’W = b’U – ID(U) + ID(W) và gởi b’W , ID(W) tới TA. Giả sử TA tính và gởi khĩa bí mật p’W tới W: p’W = (b’W – ID(W))d mod n.

. Vì b’W – ID(W) = b’U – ID(U) mod n, nên p’W = p’U.

. Giả sử một thời gian sau, U và V thực thi giao thức và W thay thế thơng tin như sau: . V sẽ tính khĩa : K’ = αr’uav + rva’u mod n = KW.

. U sẽ tính khĩa : K = αruav + rvau mod n.

Cho nên W và V sẽ tham gia cùng một khĩa, trong khi V nghĩ là mình đang tham gia khĩa với U. Vì vậy W sẽ cĩ thể giải mã đoạn tin gởi từ V tới U.

Một phần của tài liệu Tìm hiểu được một số giải thuật chính như DES, ECB, CBC, RSA, MD5 (Trang 41 - 48)

Tải bản đầy đủ (DOC)

(96 trang)
w