7.1. Gi¶ sö h: X →Y lµ hµm hash. Víi y bÊt kú ∈Y, cho:
h
-1
(y) = { x: h(x) = y}
vµ ký hiÖu s
y
= | h
-1
(y)|.
§Þnh nghÜa N =
chơng 8
phân phối và thoả thuận về khoá
8.1 Giới thiệu:
Chúng ta đã thấy rằng, hệ thống mã khoá công khai có u điểm hơn hệ thống
mã khoá riêng ở chỗ không cần có kênh an toàn để trao đổi khoá mật. Tuy nhiên,
đáng tiếc là hầu hết các hệ thống mã khoá công khai đều chậm hơn hệ mã khoá
riêng, chẳng hạn nh DES. Vì thế thực tế các hệ mã khoá riêng thờng đợc dùng để
mã các bức điện dài. Nhng khi đó chúng ta lại trở về vấn đề trao đổi khoá mật.
Trong chơng này, chúng ta sẽ thảo luận vài biện pháp thiết lập các khoá mật.
Ta phân biệt giữa phân phối khoá và thoả thuận vể khoá. Phân phối khoá đợc định
nghĩa là cơ chế một nhóm chọn khoá mật và sau đó truyền nó đến các nhóm khác.
Còn thoả thuận khoá là giao thức để hai nhóm (hoặc nhiều hơn) liên kết với nhau
cùng thiết lập một khoá mật bằng cách liên lạc trên kênh công khai. Trong sơ đồ
thoả thuận khoá, giá trị khoá đợc xác định nh hàm của các đầu vào do cả hai nhóm
cung cấp.
Giả sử, ta có một mạng không an toàn gồm n ngời sử dụng. Trong một số sơ
đồ, ta có ngời uỷ quyền đợc tín nhiệm (TA) để đáp ứng những việc nh xác minh
danh tính của ngời sử dụng, chọn và gửi khoá đến ngời sử dụng ... Do mạng không
an toàn nên cần đợc bảo vệ trớc các đối phơng. Đối phơng (Oscar) có thể là ngời bị
động, có nghĩa là hành động của anh ta chỉ hạn chế ở mức nghe trộm bức điện
truyền trên kênh. Song mặt khác, anh ta có thể là ngời chủ động. Một đối phơng
chủ động có thể làm nhiều hành vi xấu chẳng hạn:
1. Thay đổi bức điện mà anh ta nhận thấy là đang đợc truyền trên mạng.
2. Cất bức điện để dùng lại sau này.
3. Cố gắng giả dạng làm những ngời sử dụng khác nhau trên mạng.
Mục tiêu của đối phơng chủ động có thể là một trong những cái nêu sau đây:
1. Lừa U và V chấp nhận khoá không hợp lê nh khoá hợp lệ (khoá không hợp lệ
có thể là khoá cũ đã hết hạn sử dụng, hoặc khoá do đối phơng chọn).
2. Làm U hoặc V tin rằng, họ có thể trao đổi khoá với ngời kia khi họ không có
khoá.
Mục tiêu của phân phối khoá và giao thức thoả thuận khoá là, tại thời điểm kết
thúc thủ tục, hai nhóm đều có cùng khoá K song không nhóm khác nào biết đợc
(trừ khả năng TA). Chắc chắn, việc thiết kế giao thức có kiểu an toàn này khó khăn
hơn nhiều trớc đối phơng chủ động.
Trớc hết ta xem xét ý tởng về sự phân phối khoá trớc trong mục 8.2. Với mỗi
cặp ngời sử dụng {U,V}, TA chọn một khoá ngẫu nhiên K
U,V
=K
V,U
và truyền
ngoài dải đến U và V trên kênh an toàn. (Nghĩa là, việc truyền khoá không xảy
ra trên mạng do mạng không an toàn ). Biện pháp này gọi là an toàn không điều
kiện song nó đòi hỏi một kênh an toàn giữa TA và những ngời sử dụng trên mạng.
Tuy nhiên điều quan trọng hơn là mỗi ngời phải lu n -1 khoá và TA cần truyền
tổng cộng
( )
n
2
khoá một cách an toàn (đôi khi bài toán này đợc gọi là bài toán n
2
).
Thậm chí với một số mạng tơng đối nhỏ, giá để giải quyết vấn đề này là khá đắt và
nh vậy giải pháp hoàn toàn không thực tế.
Trong phần 8.2.1, chúng ta thảo luận một sơ đồ phân phối trớc khoá an toàn
không điều kiện khá thú vị do Blom đa ra. Sơ đồ cho phép giảm lợng thông tin mật
mà ngời sử dụng cần cất giữ trên mạng. Mục 8.2.2 cũng đa ra một sơ đồ phân phối
trớc khoá an toàn về mặt tính toán dựa trên bài toán logarithm rời rạc.
Một biện pháp thực tế hơn là TA phân phối khoá trực tiếp. Trong sơ đò nh
vậy, TA làm việc nh một ngời chủ khoá (key server). TA chia khoá mật K
U
cho
mỗi ngời sử dụng U trên mạng. Khi U muốn liên lạc với V, cô ta yêu cầu TA cung
cấp khoá cho phiên làm việc (session key). TA tạo ra khoá session K và gửi nó dới
dạng mã hoá cho U và V để giải mã. Hệ thống mã Kerboros mô tả trong mục 8.3 là
dựa trên biện pháp này.
Nếu nh cảm thấy vấn đề phân phối khoá thông qua TA không thực tế hoặc
không mong muốn thì biện pháp chung là dùng giao thức thoả thuận khoá. Trong
giao thức thoả thuận khoá, U và V kết hợp chọn một khoá bằng cách liên lạc với
nhau trên kênh công khai. ý tởng đáng chú ý này do Martin và Diffie đa ra độc lập
với Merkle. ở đây mô tả vài giao thc thoả thuận khoá phổ thông hơn. Giao thức đầu
tiên của Diffie và Hellman đợc cải tiến để ứng phó với các đối phơng tích cực đợc
nêu trong phần 8.4.1. Hai giao thức đáng quan tâm nữa cũng đợc xem xét: sơ đồ
MTI nên trong 8.4.2 và sơ đồ Girault nêu trong mục 8.4.3
8.2 Phân phối khoá trớc
theo phơng pháp cơ bản, TA tạo ra
2
n
khoá và đa mỗi khoa cho duy nhất
một cặp ngời sử dụng trong mạng có n ngời sử dụng. Nh đã nêu ở trên, ta cần một
kênh an toàn giữa TA và mỗi ngời sử dụng để truyền đi các khoá này. Đây là một
cải tiến quan trọng vì số kênh an toàn cần thiết giảm từ
2
n
xuống còn n. Song
nếu n lớn, giải pháp này cũng không thực tế cả về lợng thông tin cần truyền đi an
toàn lẫn lợng thông tin mà mỗi ngời sử dụng phải cất giữ an toàn (nghĩa là các
khoá mật của n-1 ngời sử dụng khác).
nh vậy, điều cần quan tâm là cố gắng giảm đợc lợng thông tin cần truyền đi và cất
giữ trong khi vẫn cho phép mỗi cặp ngời sử dụng U và V có khả năng tính toán
khoá mật K
U,V
. Một sơ đồ u việt hơn thoả mãn yêu cầu này là sơ đồ phân phối khoá
trớc của Blom.
8.2.1 Sơ đồ Blom.
Nh trên, giả thiết rằng có một mạng gôm n ngời sử dụng. Để thuận tiện, giả
sử rằng các khoá đợc chọn trên trờng số hữu hạn Z
P
, p n là số nguyên tố. Cho k là
số nguyên, 1 < k < n -2. Giá trị k để hạn chế kích thớc lớn nhất mà sơ đồ vẫn duy
trì đợc mật độ. Trong sơ đồ Blom, TA sẽ truyền đi k +1 phần tử của Z
P
cho mỗi ng-
ời sử dụng trên kênh an toàn (so với n -1 trong sơ đồ phân phối trớc cơ bản). Mỗi
cặp ngời sử dụng U và V sẽ có khả năng tính khoá K
U,V
= K
V,U
nh trớc đây. Điều
kiện an toàn nh sau: tập bất kì gồm nhiều nhất k ngời sử dụng không liên kết từ
{U, V} phải không có khả năng xác định bất kì thông tin nào về K
U,V
. (chú ý rằng,
ta đang xét sự an toàn không điều kiện).
Trớc hết, xét trờng hợp đặc biệt của sơ đồ Blom khi k =1. ở đây TA sẽ
truyền đi 2 phần tử của Z
P
cho mỗi ngời sử dụng trên kênh an toàn và ngời sử dụng
riêng W sẽ không thể xác định đợc bất kì thông tin nào về K
U,V
nếu WU,V. Sơ đồ
Blom đợc đa ra trong hình 8.1. Ta sẽ minh hoạ sơ đồ Blom với k = 1 trong ví dụ
sau:
Hình 8.1: Sơ đồ phân phối khoá của Blom (k =1)
1. Số nguyên tố p công khai, còn với mỗi ngời sử dụng U, phần tử r
U
Z
P
là công
khai. Phần tử r
U
phải khác biệt.
2. Ta chọn 3 phần tử ngẫu nhiên a, b, c Z
P
(không cần khác biệt) và thiết lập đa
thức
8.3.Kerboros
trong các phơng pháp phân phối trớc khoá xem xét trong các phần trớc đó,
mỗi cặp ngời sử dụng cần tính một khoá cố định. Nếu dùng cùng một khoá trong
một thời gian dài sẽ dễ bị tổn thơng, vì thế ngời ta thờng thích dùng phơng pháp
trực tiếp trong đó khoá của phiên lamà việc mới chỉ đợc tạo ra mỗi khi hai ngới sử
dụng muốn liên lạc với nhau (gọi là tính tơi mới của khoá).
Nếu dùng phân phối khoá trực tiếp thì ngời sử dụng mạng không cần phải lu
các khoá khi muốn liên lạc với những ngời sử dụng khác (Tuy nhiên mỗi ngời đều
đợc chia sẻ khoá với TA). Khoá của phiên làm việc (khóa session) sẽ đợc truyền đi
theo yêu cầu của TA. Đó là sự đáp ứng của TA để đảm bảo khoá tơi.
Korobos là hệ thống dịch vụ khóa phổ cập dựa trên mã khoá riêng. Trong
phần này sẽ đa ra một tổng quan về giao thức phát hành khoá session trong
Korobos. Mỗi ngời sử dụng U sẽ chia sẻ khoá DES mật K
U
cho TA. Trong phiên
bản gần đây nhất của Korobos (version 5), mọi thông báo cần truyền đợc mã hoá
theo chế độ xích khối (CBC) nh mô tả trong 3.4.1
Nh trong mục 8.2.2, ID(U) chỉ thông tin định danh công khai cho U. Khi có
yêu cầu khoá session gửi đến TA, TA sẽ tạo ra một khoá session mới ngẫu nhiên
K. Cũng vậy, TA sẽ ghi lại thời gian khi có yêu cầu T và chỉ ra thời gian (thời gian
tồn tại) L để K có hiệu lực. Điều đó có nghĩa là khoá K chỉ có hiệu lực từ T đến
T+L. Tất cả thông tin này đều đợc mã hoá và đợc truyênông dân đến U và V. Trớc
khi đi đến các chi tiết hơn nữa, ta sẽ đa ra giao thức trong hình 8.4. thông tin đợc
truyền đi trong giao thức đợc minh hoạ nh sau:
Hình 8.4: Truyền khoá session trong Korobos.
1.
Ta sẽ giải thích điều sắp sửa xảy ra trong các bớc của giao thức. Mặc dù
không có chứng minh hình thức rằng Kerobos là an toàn trớc đối thủ tích cực, song
ít nhất ta cũng có thể đa ra lí do nào đó về các đặc điểm của giao thức.
Nh nêu ở trên, TA tạo ra K, T và L trong bớc 2. Trong bớc 3, thông tin này
cùng với ID(V) đợc mã hoá bằng khoá K
U
(đợc U và TA chia sẻ) để tạo lập m
1
. Cả
hai bức điện đã mã hoá này đợc gửi đến U.
U có thể dùng khoá của mình giải mã m
1
, nhận đợc K, T và L. Cô sẽ xác
minh xem thời gian hiện tại có nằm trong khoảng T đến T + L hay không. Cô cũng
kiểm tra khoá session K đợc phát ra cho liên lạc giữa cô và V bằng cách xác minh
thông tin ID(V) đã giải mã từ m
2
.
Tiếp theo, U sẽ làm trễ thời gian m
2
và m
3
đến V. Cũng nh vậy, U sẽ dùng
khoá session K mới để mã T và ID(U) và gửi kết quả m
3
đến V.
Khi V nhận đợc m
3
và m
3
từ U, V giải mã m
2
thu đợc T, K, L và ID(U). Khi
đó, anh ta sẽ dùng khoá session mới K để giải mã m
3
và xác minh xem T và ID(U)
nhận đợc từ m
2
và m
3
có nh nhau không. Điều này đảm bảo cho V rằng khoá