Sự tiền phân bố khóa:

Một phần của tài liệu các hệ mật mã.doc (Trang 35 - 38)

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

2.1. Sự tiền phân bố khóa:

- Đối với mạng n user, TA phải tạo và truyền n(n-1) khóa. Nếu n lớn, giải pháp này rất không thực tế vì phải đảm bảo lượng thông tin được truyền một cách bảo mật và lượng thông tin mà mỗi user phải lưu trữ một cách bí mật (tên, khóa bí mật của n-1 user khác). Sơ đồ tiền phân bố khóa Blom cho phép giảm lượng thông tin mà cần để truyền và lưu trữ, trong khi vẫn cho phép mỗi cặp user U và V có thể tính một cách độc lập khóa bí mật KU,V.

2.1.1. Sơ đồ của Blom:

- Giả sử mạng có n user, khóa được chọn thuộc miền xác định Zp với p là số nguyên tố (p >= n).

- K là một số nguyên : 1 =< K <= n-2 biểu thị cho kích thước lớn nhất chống lại sự liên kết của K user mà sơ đồ vẫn còn bảo mật.

- TA sẽ truyền K + 1 phần tử của Zp tới mỗi user qua kênh bảo mật (trong sơ đồ tiền phân bố khóa cơ bản là n-1). Mỗi cặp user U và V sẽ có thể tính khóa KU,V = KV,U. Điều kiện bảo mật như sau: tập nhiều nhất K user không liên kết từ {U,V} không thể xác định bất kỳ thông tin về KU,V.

- Xét trường hợp đặt biệt của sơ đồ Blom khi K=1 (hình bên): TA sẽ truyền hai phần tử thuộc Zp tới mỗi user qua kênh bảo mật và bất kỳ user riêng lẻ W sẽ không thể xác định bất kỳ thông tin về KU,V nếu W khác U, V.

- Ví dụ: giả sử có ba user U, V, và W, p=17, các phần tử công khai là rU=12, rV=7, rW=1. Giả sử rằng TA chọn a=8, b=7, c=2. Khi đó:

f(x,y) = 8 + 7(x+y) + 2xy gU(x) = 7 + 14x

gV(x) = 6 + 4x gW(x) =15 + 9x

KU,V = 3, KU,W = 4, KV,W = 10

. U tính KU,V như sau: KU,V = gU(rV) = 7 + 14*7 mod 17 = 3 . V tính KV,U như sau: KV,U = gV(rU) = 6 + 4*12 mod 17 = 3

Sơ đồ phân bố khóa của Blom (K=1)

1. Số nguyên tố p được chọn công khai và cho mỗi user U, một phần tử rU thuộc Zp được chọn công khai. Các phần tử rU phải khác biệt nhau.

2. TA chọn ba phần tử ngẫu nhiên a, b, c thuộc Zp (không cần khác biệt) và tính:

f(x,y) = a + b(x+y) + cxy mod p 3. Đối với mỗi user U, TA tính

gU(x) = f(x,rU) mod p

Và truyền gU(x) tới user U qua kênh bảo mật. Vì gU(x) là hàm tuyến tính theo x nên có thể được ghi như sau:

gU(x) = aU + bUx Với aU = a + brU mod p

bU = b + crU mod p

4. Nếu U và V muốn truyền thông thì chúng sử dụng khóa KU,V = KV,U = f(rU,rV) = a + b(rU + rV) + crUrV mod p Với U tính KU,V = f(rU, rV) = gU(rV)

V tính KV,U = f(rU, rV) = gV(rU)

- Khi có sự liên kết của hai user {W, X} thì có thể xác định bất kỳ khóa KU,V mà {W, X} khác {U, V}. Bởi vì W và X cùng biết:

aW = a + brW bW = b + crW aX = a + brX bX = b + crX

Với 4 phương trình 3 ẩn trên ta có thể dễ dàng tính a, b, c. Từ đó tính được khóa KU,V.

- Để tạo sơ đồ vẫn còn bảo mật chống lại sự liên kết của K user, TA sẽ sử dụng hàm f(x,y) có dạng :

f(x,y) = ∑∑ ai,j xi yj mod p (ai,j thuộc Zp và ai,j = aj,i )

2.1.2. Diffie-Hellman:

Diffie_Hellman

1. Số nguyên tố p và phần tử đơn giản α thuộc Zp được làm công khai. 2. V tính

KU,V = αauav mod p = bUav mod p

Sử dụng giá trị công khai bU từ sự chứng thực của U, cùng với giá trị bảo mật aV của riêng mình.

3. U tính

KU,V = αauav mod p = bVau mod p

Sử dụng giá trị công khai bV từ sự chứng thực của V, cùng với giá trị bảo mật aU của riêng mình.

- Sơ đồ tiền phân bố khóa này cung cấp bài toán Diffie-Hellman quan hệ với bài toán Discrete Logarithm là không thể bẻ gãy.

- Sơ đồ được xét trên Zp, với p là số nguyên tố, α là phần tử đơn giản của Zp , giá trị của p và α là công khai với mọi người trong mạng, ID(U) sẽ biểu thị thông tin định danh nhất định cho mỗi user trong mạng (ví dụ: tên, địa chỉ email, số điện thoại hay các thông tin thích hợp khác). Mỗi user U có một mũ bảo mật aU (0 <= aU <= p-2) (TA không biết giá trị này) và giá trị công khai tương ứng: bU = αau mod p.

- TA sẽ có một 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 khi tham gia mạng sẽ có sự chứng thực: C(U) = (ID(U), bU, sigTA(ID(U), bU))

Sự chứng thực này có thể được lưu trữ trong cơ sở dữ liệu công khai hay mỗi user có thể lưu trữ sự chứng thực của riêng mình. Chữ ký của TA trên sự chứng thực cho phép bất kỳ người nào trong mạng làm rỏ thông tin mà nó chứa.

Thật dễ dàng cho user U và V để tính khóa:

k k

=

i 0

=

KU,V = αauav mod p Ví dụ: p = 25307, α = 2

. Giả sử U chọn aU = 3578 và tính

bU = αau mod p = 23578 mod 25307 = 6113 Sau đó U đặt bU vào trong sự chứng thực của mình. . Giả sử V chọn aV = 19956 và tính

bV = αav mod p = 219956 mod 25307 = 7984 Sau đó V đặt bV vào trong sự chứng thực của mình. . Giờ đây U và V có thể tính khóa:

KU,V = bVau mod p = bUav mod p

= 79843578 mod 25307 = 611319956 mod 25307 = 3694

- Nhờ có chữ ký của TA trên sự chứng thực của user nên ngăn cản một cách hiệu quả sự xâm nhập của user W khác.

Câu hỏi đặt ra là W có thể tính KU,V nếu W khác U, V hay không? Hoặc nếu W biết bU, bV thì nó có thể xác định KU,V hay không? Bài toán này được gọi là bài toán

Diffie_Hellman.

Bài toán Diffie_Hellman

I = (p, α, β, γ ) trong đó p là số nguyên tố, α thuộc Zp* là phần tử đơn giản và β, γ thuộc Zp*.

Mục tiêu : tính βlog αγ mod p (=γlog αβ mod p)

Sơ đồ tiền phân bố khóa Diffie_Hellman là bảo mật chống lại đối phương bị động nếu và chỉ nếu bài toán Diffie_Hellman là khó giải ra. Tuy nhiên việc phỏng đoán không chứng minh rằng bất kỳ giải thuật mà giải bài toán Diffie_Hellman cũng có thể được sử dụng để giải bài toán Discrete Log (giống như trong giải thuật RSA , việc bẻ gãy RSA thì tương đương với việc phân tích thừa số).

Một phần của tài liệu các hệ mật mã.doc (Trang 35 - 38)

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

(97 trang)
w