Các cách tạo khoá

Một phần của tài liệu Nghiên cứu vấn đề chia sẻ bí mật và ứng dụng trong bỏ phiếu điện tử (Trang 36 - 43)

Hệ mật mã khoá bí mật có nhƣợc điểm là yêu cầu có kênh an toàn để chuyển khoá nhƣng tốc độ mã hoá nhanh hơn nhiều so với các hệ mật mã khoá công khai. Hệ mật mã khoá công khai có ƣu điểm là không cần biết thông tin về khoá giải mã khi gửi bất kỳ một bức điện nào nhƣng tốc độ mã hoá rất chậm. Để kết hợp hai ƣu điểm trên, ta vẫn sử dụng các hệ mật mã khoá bí mật cho các bức điện dài nhƣng dùng các hệ mật mã khoá công khai để tạo ra khoá mật và phân phối khoá mật.

1/. Trao đổi khoá Diffie - Hellman

Giao thức thoả thuận khoá đầu tiên và nổi tiếng nhất là giao thức Diffie – Hellman. Trong giao thức này, khoá đƣợc tạo ra từ sự kết hợp của hai thành viên. Sơ đồ trao đổi khoá Diffie - Hellman

 U chọn aU ngẫu nhiên, (0≤ aU ≤ p – 2)  U tính αau mod p và gửi nó đến V.  V chọn aV ngẫu nhiên, (0≤ aV ≤ p – 2)  V tính αav mod p và gửi nó đến U.  U tính: K = ( αav ) au mod p; còn V tính: K = ( αau ) av mod p

Trao đổi khoá Diffie – Hellman đƣợc đề xuất nhƣ sau:

Hình 1.3:Trao đổi khoá Diffie – Hellman

Giao thức có thể bị tấn công bởi một đối phƣơng chủ động W, những ngƣời sử dụng cách tấn công “kẻ xâm nhập giữa cuộc”. W sẽ chặn lại các bức điện giữa U và V và thay thế bằng bức điện của riêng mình.

αau

Ngƣời dùng U Ngƣời dùng V

Hình 1.4: Kẻ xâm nhập giữa cuộc trong giao thức Diffie – Hellman

Tại thời điểm cuối của giao thức, U thiết lập khoá bí mật αau a’v cùng với W, còn V thiết lập khoá bí mật αa’u av cùng với W. Khi U cố mã hoá bức điện để gửi cho V, W có khả năng giải mã nó song V thì không thể. Tƣơng tự khi V gửi bức điện tới U. Giải pháp để tránh sự xâm nhập của W là U và V nên thiết lập việc xác định danh tính của nhau. Tuy nhiên, điều này vẫn không an toàn trƣớc sự tấn công của kẻ xâm nhập giữa cuộc nếu W vẫn duy trì cách tấn công bị động cho đến khi U và V xác minh danh tính của nhau. Vì thế các giao thức thoả thuận khoá tự nó cần xác thực đƣợc danh tính của những ngƣời tham gia cùng lúc khoá đƣợc thiết lập.

2/. Giao thức trạm tới trạm (station to station)

Đây là một giao thức thoả thuận khoá đƣợc cải tiến từ sơ đồ trao đổi khoá Diffie – Hellman. Giao thức giả thiết số nguyên tố p và phần tử nguyên thuỷ α đƣợc biết một cách công khai và nó đƣợc dùng cùng với các dấu xác nhận. Mỗi ngƣời sử dụng U sẽ có một sơ đồ chữ ký với thuật toán xác minh công khai verU. TA cũng có sơ đồ chữ ký với thuật toán xác minh công khai verTA. Mỗi ngƣời sử dụng U có chứng chỉ:

C(U) = (ID(U), verU, sigTA(ID(U), verU)) trong đó ID(U) là thông tin định danh cho U. Giao thức “trạm tới trạm” có xác thực của Diffie, Van Oorschot và Wiener nhƣ sau:

 U chọn aU ngẫu nhiên (0≤ aU ≤ p-2)  U tính αau mod p và gửi nó đến V.  V chọn aV ngẫu nhiên, (0≤ aV ≤ p-2)  V tính: αav mod p sau đó tính K = ( αau ) av mod p và yV = sigV (αau ,αav ). αau

Ngƣời dùng U Ngƣời dùng W Ngƣời dùng V

αa’v

αa’u αav

 V gửi (C(V), αav, yV) đến U.

 U tính: K = ( αav ) au mod p

Cô dùng verV xác minh yV và xác minh C(V) nhờ verTA

 U tính: yU = sigU (αau ,αau) và gửi (C(U), yU) đến V.

 V xác minh yU bằng verU và xác minh C(V) nhờ verTA

W không thể tính chữ ký của V trên (sigV (αau ,αa’u)) vì không biết thuật toán ký sigV của V. Tƣơng tự, W không thể thay sigU (αau ,αa’v) bằng sigU (αa’u ,αav) vì không biết thuật toán ký sigU của U. Điều này đƣợc minh hoạ dƣới đây:

Hình 1.5: Giao thức trạm tới trạm

Khi có sự xâm nhập của W:

Hình 1.6: Giao thức trạm tới trạm có sự xâm nhập giữa đƣờng

Tóm lại, nhờ sử dụng chữ ký mà có thể tránh sự tấn công của W.

Giao thức này không đƣa ra sự khẳng định khoá. Tuy nhiên, dễ dàng biến đổi để thực hiện đƣợc điều đó bằng cách định nghĩa:

yV = eK(sigV (αau ,αav)) trong bƣớc 4 và yU = eK(sigU (αau ,αav)) trong bƣớc 7 αau Ngƣời dùng U αav Ngƣời dùng V ,sigv(αav ,αau ) sigu(αau, αav ) αau Ngƣời dùng U Ngƣời dùng V

αa’v,sigv(αa’v,αau

) =? sigu(αau, αa’v)

αa’u Ngƣời dùng W αav ,sigv(αav ,αa’u) sigu(αa’u, αav) =?

3/. Giao thức thoả thuận khoá 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 lần truyền vì chỉ có hai lần truyền thông tin riêng biệt (một từ U đến V và một từ V đến U). Trái lại giao thức STS (station to station) đƣợc gọi là giao thức 3 bƣớc.

 U chọn rU ngẫu nhiên, 0≤ rU ≤ p-2 và tính: sU = αru mod p  U gửi (C(U),sU)) đến V.  V chọn rV ngẫu nhiên, 0≤ rV ≤ p-2 và tính: SV = αrv mod p  V gửi (C(V),sV)) đến U.

 U tính: K = sVaubVru mod p .Tại đây, cô nhận đƣợc giá trị bV từ C(V)

 V tính: K = sUavbUrv mod p. Tại đây, anh ta nhận đƣợc giá trị bV từ C(V) Trong đó:

+ p, α đƣợc biết công khai.

+ Mỗi ngƣời sử dụng U đề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 sẽ có sơ đồ chữ ký với thuật toán xác minh công khai verTA và thuật toán ký mật sigTA.

+ Mỗi ngƣời sử dụng U có dấu xác nhận: C(U) = (ID(U), bU, sigTA(ID(U), bU)) trong đó bU đƣợc thiết lập nhƣ trên. Tƣơng tự cho V.

+ Cả U và V cùng tính khoá: K = αruav+rvau mod p Ví dụ: Giả sử p= 27803, α = 5. Giả sử U chọn aU = 21131, V chọn aV = 17555 . Khi đó: bU = 521131 mod 27803 = 21420 bV = 517555 mod 27803 = 17100.

(bU, bV đƣợc đóng trên giấy xác nhận 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 tính khoá:

KU,V = sVaubVru mod p = 267592113117100169 mod 27803 = 21600 V tính khoá:

KU,V = sUavbUrv mod p = 6268175552142023456 mod 27803 = 21600

Độ mật của giao thức MTI trƣớc sự tấn công thụ động đúng bằng bài toán Diffie – Hellman. Khi không dùng chữ ký trong suốt quá trình thực hiện giao thức, có thể giao thức không an toàn trƣớc sự tấn công giữa đƣờng. Khi có sự tấn công chủ động W thì U và V sẽ tính những khoá khác nhau:

U tính khoá: K = αruav+r’vau mod p V tính khoá: K = αr’uav+rvau mod p

Mặc dù U và V đã tính đƣợc những khoá khác nhau (không có lợi cho họ) nhƣng W không thể tính ra khoá của U và V vì chúng đòi hỏi phải biết số mũ mật aU và aV tƣơng ứng. Cả U và V đề đƣợc đảm bảo rằng ngƣời sử dụng khác trên mạng chỉ có thể tính đƣợc khoá mà họ tính đƣợc. Đây là kiểu xác thực khoá ẩn.

4/. Giao thức thoả thuận khoá tự xác thực của Girault

Phƣơng pháp thoả thuận khoá của Girault đƣa ra không cần dấu xác nhận. Giá trị của khoá công khai và danh tính của ngƣời sở hữu nó sẽ ngầm xác thực nó. Sơ đồ Girault kết hợp tính chất của RSA và thuật toán logarithm rời rạc. Giả sử n=pq, p= 2p1+1, q= 2q1+1 và p, q, p1, q1 đều là các số nguyên tố lớn. Giá trị n chỉ đƣợc biết bởi TA. TA chọn số mũ mã hoá e (công khai) và số mũ giải mã d (bí mật) mà d = e-1 mod Φ(n).

Mỗi ngƣời sử dụng U có một xâu ID(U). U nhận đƣợc khoá tự xác nhận pU từ TA. trong đó: bU = pUe + ID(U) mod n.

Nhận khoá xác nhận từ TA.

 U chọn số mũ mật aU và tính: bU = αau mod n

 U đƣa aU và bU cho TA.

 TA tính: pU = (bU – ID(U))d mod n

Giao thức thoả thuận khoá Girault

 U chọn rU ngẫu nhiên, 0≤ rU ≤ p-2 và tính: sU = αru

mod n

 U gửi ID(U), pU, sU cho V.

 V chọn rV ngẫu nhiên, 0≤ rV ≤ p-2 và tính: sV = αrv

mod n

 V gửi ID(V), pV, sV cho U.

 U tính: K = sVau ( pVe + ID(V))ru mod n

 và V tính: K = sUav ( pUe + ID(U))rv mod n

Tại thời điểm kết thúc giao thức, U và V cùng tính ra khoá: K = αruav+rvau

mod n

Hình 1.7: Thỏa thuận khóa Girault

Ví dụ: p = 839, q = 863, α = 5.

Khi đó: n = pq = 724057, Φ(n) = (p-1)(q-1) = 722356

Giả sử TA chọn: d= 125777 làm số mũ giải mã RSA, khi đó e = 84453. Giả sử U có ID(U) = 500021 và aU = 111899 thì: bU = 48889 và pU = 650704 Tƣơng tự, V có ID(V) = 500022 và aV = 423456 thì: bV = 111692 và pV = 683556 Bây giờ khi U và V muốn trao đổi khoá thì:

U chọn rU = 56381, V chọn rV = 356935. Khi đó: sU = 171007, sV = 320688 Cả U và V đề tính cùng khoá: 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 toán logarithm rời rạc là khó giải). Không có a’U, W không thể tính đƣợc khoá.

Khi W ngăn cản U và V tính toán ra khoá chung nhƣ kẻ xâm nhập giữa cuộc thì W cũng không thể sao lại việc tính toán của U hoặc V. Vì vậy, sơ đồ này cung cấp sự xác thực ngầm nhƣ giao thức MTI. ID(U), pu, αru mod n Ngƣời dùng U Ngƣời dùng V ID(V), pv, αrv mod n

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 mà không cần biết aU? Lý do là để đảm bảo tính an toàn 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ì huỷ bỏ). 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. Khi đó: 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 khoá 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) + ID(W) 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:

Hình 1.8: Thoả thuận khoá Girault có sự xâm nhập giữa đƣờng

V sẽ tính khoá: K’ = αr’uav+rva’u mod n = KW U sẽ tính khoá: K = αruav+rvau

mod n

Cho nên W và V sẽ tham giá cùng một khoá, trong khi v nghĩ là mình đang tham gia khoá với U. Vì vậy, W sẽ có thể giải mã bức điện gửi từ V tới U.

ID(U), pu, αru mod n Ngƣời dùng U Ngƣời dùng W ID(V), p’v, αr’v mod n

ID(U), p’u, αr’u mod n

Ngƣời dùng V

Một phần của tài liệu Nghiên cứu vấn đề chia sẻ bí mật và ứng dụng trong bỏ phiếu điện tử (Trang 36 - 43)

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

(78 trang)