Bài viết đề xuất một giao thức thiết lập khóa cho các hệ thống mật mã khóa bí mật; giao thức này có khả năng thiết lập và xác thực khóa; phân tích về tính an toàn của giao thức được đề xuất, đã chỉ ra khả năng áp dụng nó vào thực tế. Mời các bạn cùng tham khảo bài viết để nắm chi tiết hơn nội dung nghiên cứu.
Trang 1XÂY DỰNG GIAO THỨC XÁC LẬP KHÓA CHO CÁC HỆ MẬT MÃ KHÓA BÍ MẬT
CONSTRUCTION OF KEY ESTABLISHMENT PROTOCOL FOR SECRET KEY
CRYPTOGRAPHY SYSTEMS
Lưu Hồng Dũng
Abstract: This paper proposed a key establishment
protocol for secret key cryptography systems This
protocol has the capacity of key establishment and
anthentication The paper also offers analysis on the
safety of the proposed protocol, has shown the ability to
apply it in practice
Từ khóa: Key Establishment, Key Agreement
Protocol, Key Transport Protocols, Secret Key
Cryptography System, Public Key Cryptography
System
I ĐẶT VẤN ĐỀ
Phương pháp xác lập khóa cho các hệ mật mã
khóa bí mật được đề xuất đầu tiên bởi W Diffie và
M Hellman vào năm 1976 và được gọi là giao
thức trao thỏa thuận Diffie-Hellman
(Diffie-Hellman Key Agreement Protocol) (gọi tắt là
phương pháp Diffie-Hellman), sau đó đã mở ra
một lĩnh vực mới về khoa học mật mã: mật mã
khóa công khai Hiện tại nó vẫn được sử dụng rất
phổ biến với nhiều biến thể khác nhau Nhược
điểm cơ bản của phương pháp Diffie-Hellman là
không có cơ chế xác thực các đối tượng tham gia
truyền thông vì thế phương pháp này không có khả
năng chống lại một số dạng tấn công giả mạo trong
thực tế Một số phương pháp đã được phát triển
sau đó như ECDH (Elliptic Curve Diffie-Hellman
Key Exchange), MQV (Menezes-Qu-Vanstone
Protocol), ECMQV (Elliptic Curve
Menezes-Qu-Vanstone Protocol) đã được ứng dụng phổ biến
trong thực tế Tuy nhiên, việc phát triển các phương pháp mới để ứng dụng trong thực tế vẫn luôn là yêu cầu cần thiết được đặt ra
Bài báo đề xuất 2 phương pháp cho phép bảo đảm đồng thời việc thiết lập khóa cho các hệ mật
mã khóa bí mật và xác thực các đối tượng tham gia truyền thông, vì thế sẽ chống được các kiểu tấn công giả mạo trong thực tế
II XÂY DỰNG GIAO THỨC XÁC LẬP KHÓA
Giao thức xác lập khóa được đề xuất ở đây bao gồm 2 thuật toán: thuật toán thỏa thuận khóa xây dựng trên cơ sở bài toán logarit rời rạc trong trường hữu hạn nguyên tố và thuật toán chuyển khóa, mà thực chất là một thuật toán mật mã khóa công khai được phát triển từ thuật toán thỏa thuận khóa thứ nhất Cả 2 thuật toán này đều sử dụng chung một thuật toán hình thành các tham số hệ thống và khóa
1 Thuật toán hình thành các tham số hệ thống
và khóa công khai
1- Chọn một số nguyên tố lớn p và phần tử sinh
g của nhóm sao cho bài toán logarit rời rạc trong là khó giải
*
p
Z
*
p
Z 2- Chọn khóa riêng (x) là một số nguyên thỏa
mãn: 1 < x < p
3- Khóa công khai tương ứng (y) được tính theo
công thức:
Trang 2
y = ( ) g xmod p
4- Chứng nhận và công khai y bởi một Cơ
quan chứng thực – CA (Certificate
Authority) đáng tin cậy
2 Thuật toán thỏa thuận khóa
2.1 Mô tả thuật toán
Các đối tượng tham gia trao đổi thông tin mật
cùng thống nhất chọn các tham số p và g, chọn
khóa riêng và tính khóa công khai của mình theo
Thuật toán hình thành các tham số hệ thống và
khóa công khai ở Mục 1 Giả sử đối tượng gửi/mã
hóa thông tin ký hiệu là A có khóa riêng là xA,
khóa công khai tương ứng của A là yA; Đối tượng
nhận/giải mã thông tin ký hiệu là B có khóa riêng
là xB và khóa công khai là yB Các đối tượng A và
B thống nhất sử dụng một thuật toán mật mã khóa
bí mật (ví dụ: DES, AES, ) để mã hóa thông tin
(bản tin, thông báo, tài liệu, ) cần trao đổi với
nhau, khi đó phương pháp để thiết lập một khóa bí
mật chung cho phép A mã hóa thông tin và B giải
mã thông tin, bao gồm các bước thực hiện như sau:
Bước 1:
+ Đối tượng A thực hiện các bước:
1- Chọn ngẫu nhiên một giá trị k A thỏa mãn:
p
k A <
<
1
2- Hình thành thông tin thỏa thuận khóa R A
theo công thức:
R ( ) g k A p
3- Gửi giá trị R A cho đối tượng B
+ Đối tượng B thực hiện các bước:
1- Chọn ngẫu nhiên một giá trị k B thỏa mãn:
p
k B <
<
2- Hình thành thông tin thỏa thuận khóa R B
theo công thức:
R ( ) g k B p
3- Gửi giá trị R B cho đối tượng A
Bước 2:
1- Đối tượng A hình thành khóa mã hóa theo công thức:
K ( ) ( ) R A y x A p
B
k B
2- Đối tượng B hình thành khóa giải mã theo công thức:
K ( ) ( ) R B y x B p
A
k A
2.2 Tính đúng đắn của thuật toán mới đề xuất
Điều cần chứng minh ở đây là: cho p là số nguyên tố, g là phần tử sinh của nhóm Z∗p,
p x
x A B <
< ,
( ) g p
y x B
( ) g p
R k A
( ) g p
R k B
( ) ( ) R y p
B
k B
( ) ( ) R y p
A
k A
B = × mod thì: K A =K B
Chứng minh:
Trang 3Thật vậy, do:
=
( ) ( )
p g
g
p p
g p g
p y
R
K
B A B
A
A B
A B
A A
x x k
k
x x
k k
x B
k B A
mod
mod mod
mod
mod
. ×
=
×
×
=
Mặt khác, do:
( ) ( )
p g
g
p p
g p g
p y
R
K
B A B
A
B A
B A
B B
x x k
k
x x
k k
x A
k A B
mod
mod mod
mod
mod
. ×
=
×
=
×
=
Từ đây suy ra: K A =K B
Đây là điều cần chứng minh
2.3 Mức độ an toàn của thuật toán mới đề xuất
Mức độ an toàn của thuật toán mới đề xuất được
đánh giá qua các khả năng như sau:
a) Chống tấn công làm lộ khóa bí mật
Từ: K ( ) ( ) R A y x A p
B
k B
thể tính được khóa bí mật dùng chung cho các bên
tham gia truyền thông nếu biết được k
( ) ( ) R y p
A
k A
A và x A hoặc:
k B và x B Các giá trị này có thể tính được nhờ việc
giải:
R ( ) g k A p (1)
và:
y ( ) g x A p (2)
Hoặc:
R ( ) g k B p (3)
và:
y ( ) g x B p
Việc giải (1) và (2) hay (3) và (4) thực chất là giải bài toán logarit rời rạc trong trường hữu hạn nguyên tố Z∗p
Như vậy, khả năng chống tấn công làm lộ khóa
bí mật dùng chung của thuật toán mới đề xuất phụ thuộc vào mức độ khó của bài toán logarit rời rạc
b) Khả năng chống giả mạo về nguồn gốc khóa
bí mật
Để mạo danh A, kẻ giả mạo cần phải tính được khóa riêng (xA) của A Việc tính xA có thể thực hiện bằng cách giải (2) Tương tự, cũng có thể mạo danh B nếu tính được xB nhờ việc giải (4) Như đã chỉ ra, việc giải (2) và (4) thực chất là giải bài toán logarit rời rạc
Những phân tích trên cho thấy khả năng chống giả mạo nguồn gốc của khóa bí mật dùng chung phụ thuộc vào mức độ khó của bài toán logarit rời rạc
c) Tính bí mật về phía trước đối với A
Việc biết khóa riêng dài hạn của A sau một quá trình thỏa thuận khóa không cho phép kẻ tấn công tính lại được các khóa bí mật dùng chung do thuật toán tạo đã ra trước đó
d) Tính bí mật về phía trước riêng biệt đối với
cả A và B
Nếu biết khóa riêng dài hạn của A hoặc biết khóa riêng dài hạn của B sau một quá trình thỏa
Trang 4thuận khóa, kẻ tấn công cũng không thể tính lại
được các khóa bí mật dùng chung do thuật toán tạo
đã ra trước đó
e) Tính bí mật về phía trước tương hỗ
Khi biết cả khóa riêng dài hạn của A và B sau
một quá trình thỏa thuận khóa thì kẻ tấn công cũng
không thể tính lại được các khóa bí mật dùng
chung do thuật toán tạo đã ra trước đó
2.4 Thuật toán thỏa thuận khóa mở rộng
Thuật toán thỏa thuận khóa mở rộng (thuật toán
mở rộng) được đề xuất cho các trường hợp mà ở
đó có số đối tượng tham gia thỏa thuận khóa lớn
hơn 2 Xét trường hợp số đối tượng là 3, với các
trường hợp có số đối tượng tham gia thỏa thuận
khóa lớn hơn 3 cũng có thể thực hiện hoàn toàn
tương tự giá sử các đối tượng cần thỏa thuận khóa
bí mật chung là A, B và C, các đối tượng này có
khóa riêng tương ứng là xA, xB, xC và các khóa
công khai tương ứng là yA, yB, yC Các đối tượng
thỏa thuận một khóa bí mật chung qua các bước
như sau:
Bước 1:
1- A chọn một giá trị k A thỏa mãn: 1<k A < p và
tính giá trị RA và SA theo công thức:
gửi cho B
( ) g p
R k A
C
2- B chọn một giá trị k B thỏa mãn: 1<k B < pvà
tính giá trị RB và SB theo công thức:
R ( ) g k B p
gửi cho C
( ) y p
B
3- C chọn một giá trị k C thỏa mãn: 1<k C < p và tính giá trị RC và SC theo công thức:
( ) g p
R k C
rồi gửi cho A
( ) y p
S x C
B
Bước 2:
1- A tính giá trị RAC theo công thức:
R ( ) R k A p
C
AC = mod , rồi gửi cho B
2- B tính giá trị RB theo công thức:
R ( ) R k B p
A
AB = mod , rồi gửi cho C
3- C tính giá trị RBC theo công thức:
R ( ) R k C p
B
BC = mod , rồi gửi cho A
Bước 3:
1- A tính khóa bí mật KA theo công thức:
( ) ( ) R S p
C
k BC
2- B tính khóa bí mật KB theo công thức:
( ) ( ) R S p
A
k AC
3- C tính khóa bí mật KC theo công thức:
( ) ( ) R S p
B
k AB
Tính đúng đắn của thuật toán thỏa thuận khóa mở rộng được đề xuất có thể chứng minh như sau: Điều cần chứng minh ở đây là:
K A =K B =K C Thật vậy, ta có:
Trang 5
( ) ( )
( )
( ) g ( ) g p
p p
g p
g
p p
y p
R
p S
R
K
C B A C
B
A
C a B
C A B
A C
A C
A A
x x x k
k
k
x x x
k k k
x x
B
k k
B
x C
k
BC
A
mod
mod mod
mod
mod mod
mod
mod
.
.
.
×
=
×
=
×
=
×
=
Tương tự, ta cũng có:
( ) ( )
( )
( ) g p
p p
g p
g
p p
y p
R
p S
R
K
C
B
A
C B A C
B A C
B A
B A
B B
k
k
k
x x x x
k k k
x x
C k
k
C
x A
k
AC
B
mod
mod mod
mod
mod mod
mod
mod
.
.
.
=
×
=
×
=
×
=
Và:
( ) ( )
( )
( ) g ( ) g p
p p
g p
g
p p
y p
R
p S
R
K
C B A C
B
A
C B A
C B A
C B
C B
C C
x x x k
k
k
x x x
k k k
x x
A
k k
A
x B
k
AB
C
mod
mod mod
mod
mod mod
mod
mod
.
.
.
×
=
×
=
×
=
×
=
Từ đây suy ra: K A =K B =K C
Mức độ an toàn của thuật toán mở rộng có thể
phân tích đánh giá tương tự như với thuật toán thỏa
thuận khóa đã đề xuất ở Mục 2.3
3 Thuật toán chuyển khóa
3.1 Mô tả thuật toán
Ở đây cũng giả thiết rằng, các đối tượng tham
gia trao đổi thông tin A và B cùng thống nhất sử
dụng một thuật toán mật mã khóa bí mật (ví dụ:
DES, AES, ) để mã hóa thông tin (bản tin, thông
báo, tài liệu, ) cần trao đổi với nhau Các đối
tượng A và B lựa chọn các tham số dùng chung p
và g, chọn khóa riêng và tính khóa công khai của
mình theo Thuật toán hình thành các tham số hệ thống và khóa công khai ở Mục 1 Giả sử đối
tượng A có khóa riêng là xA, khóa công khai tương ứng của A là yA; Đối tượng B có khóa riêng là xB
và khóa công khai là yB Giả sử rằng, đối tượng A chọn khóa bí mật cho việc mã hóa và giải mã thông tin là K, với: 1 < K < p và gửi cho đối tượng B, quá trình thực hiện bao gồm các bước như sau:
Bước 1:
Đối tượng B thực hiện:
1- Chọn ngẫu nhiên một giá trị k B thỏa mãn:
p
k B <
<
2- Tính giá tri R B theo công thức:
R ( ) g k B p
3- Gửi giá trị R B cho đối tượng A
Bước 2:
Đối tượng A thực hiện:
1- Chọn ngẫu nhiên một giá trị k A thỏa mãn:
p
k A <
<
2- Tính giá trị C theo công thức:
C K ( ) ( ) R A y x A p
B
k
×
= 3- Tính giá trị R theo công thức:
R ( ) g k A p
mod
= 4- Gửi bản mã (C,R) cho đối tượng B
Bước 3:
Từ bản mã (C,R) nhận được, đối tượng B thực hiện việc giải mã (C,R) để nhận khóa bí mật (K) theo công thức sau:
Trang 6( ) R ( ) y p C
A k
mod
−
×
=
3.2 Tính đúng đắn của thuật toán mới đề xuất
Điều cần chứng minh ở đây là: cho p là số
nguyên tố, g là phần tử sinh của nhóm Z∗p,
p x
x A B <
< ,
( ) g p
y x B
( ) g p
R k B
( ) ( ) R y p
K
B
k
×
( ) g p
R k A
mod
( ) R ( ) y p
C
A k
mod
−
×
Chứng minh:
Thật vậy, do:
R ( ) g k A p
mod
=
Nên:
( ) ( )
( ) ( )
×
×
×
=
=
×
×
×
=
×
×
=
−
−
−
−
−
−
p g
p g
p p
g p g
K
p p
g
p g
p y
R
K
p y
R C
K
A B B
A
A B
A B
B A
B A
A A
B B
x x k
k
x x
k k
x x
k k
x B
k B
x A k
mod mod
mod mod
mod
mod mod
mod mod
mod
.
×
K
p g
g g
g
K
p p g
g
p g
g
K
A B B A B A A B
A B B
A
B A A B
x x k k x x k k
x x k
k
x x k k
=
×
×
×
×
=
=
×
×
×
×
×
=
−
−
−
−
mod
mod mod mod
.
.
.
.
3.3 Mức độ an toàn của thuật toán mới đề xuất
Tương tự thuật toán thỏa thuận khóa ở Mục 2,
mức độ an toàn của thuật toán chuyển khóa mới đề xuất cũng được đánh giá qua các khả năng như sau:
a) Chống tấn công làm lộ khóa bí mật
Từ: C K ( ) ( ) R A y x A p
B
k
×
và: K C ( ) R B ( ) y x B p
A
×
thấy, có thể tính được khóa bí mật dùng chung cho
các bên tham gia truyền thông nếu biết được k A và
x A hoặc k B và x B Các giá trị này có thể tính được nhờ việc giải:
y ( ) g x A p
và:
R ( ) g k A p
mod
Hoặc:
y ( ) g x B p
và:
R ( ) g k B p
Như đã chỉ ra ở Mục 2.3.a, khả năng chống tấn công làm lộ khóa bí mật dùng chung của thuật toán mới đề xuất ở đây cũng phụ thuộc vào mức độ khó của bài toán logarit rời rạc
b) Khả năng chống giả mạo về nguồn gốc khóa
bí mật
Để mạo danh A, kẻ giả mạo cần phải tính được khóa riêng (xA) của A Việc tính xA có thể thực hiện bằng cách giải (5) Tương tự, cũng có thể mạo danh B nếu tính được xB nhờ việc giải (7) Như vậy, khả năng chống giả mạo nguồn gốc của khóa
Trang 7bí mật dùng chung (K) cũng phụ thuộc vào mức độ
khó của bài toán logarit rời rạc
3.4 Thuật toán chuyển khóa mở rộng
Thuật toán chuyển khóa mở rộng (thuật toán mở
rộng) được đề xuất cho các trường hợp mà ở đó có
số đối tượng lớn hơn 2 Xét trường hợp số đối
tượng là 3, với các trường hợp có số đối tượng
tham gia thỏa thuận khóa lớn hơn 3 cũng có thể
thực hiện hoàn toàn tương tự giá sử các đối tượng
cần thỏa thuận khóa bí mật chung là A, B và C, có
các khóa riêng là xA, xB, xC và các khóa công khai
tương ứng là yA, yB, yC Giả sử đối tượng A tạo
trước một khóa bí mật dùng chung K với:
và chuyển cho các đối tượng B và C,
thuật toán bao gồm các bước như sau:
p
K <
<
1
Bước 1:
1- A chọn một giá trị k A thỏa mãn: 1<k A < p và
tính giá trị RA và SA theo công thức:
gửi cho B
( ) g p
R k A
C
2- B chọn một giá trị k B thỏa mãn: 1<k B < pvà
tính giá trị RB và SB theo công thức:
gửi cho C
( ) g p
R k B
A
3- C chọn một giá trị k C thỏa mãn: 1<k C < p và
tính giá trị RC và SC theo công thức:
( ) g p
R k C
rồi gửi cho A
( ) y p
S x C
B
Bước 2:
1- A tính giá trị RAC theo công thức:
R ( ) R k A p
C
AC = mod , rồi gửi cho B
2- B tính giá trị RB theo công thức:
R ( ) R k B p
A
AB = mod , rồi gửi cho C
3- C tính giá trị RBC theo công thức:
R ( ) R k C p
B
BC = mod , rồi gửi cho A
Bước 3:
1- A mã hóa khóa bí mật KA theo công thức:
C K ( ) ( ) R A S x A p
C
k BC A
cho B và C
2- B giải mã CK để nhận khóa bí mật KA theo công thức:
A
k AC K
3- C giải mã CK để nhận khóa bí mật KA theo công thức:
K C ( ) R C ( ) S x C p
B
k AB K
Có thể dễ dàng thấy rằng:
K B =K C =K A
Thật vậy, ta có:
( ) ( ) ( ) ( )
( ) ( )
( )
×
×
×
=
=
×
×
×
×
=
×
×
=
−
−
−
−
−
−
B A
B A
A C
A C
B
B A
A
B B
x x
C k k
C
x x
B
k k
B A
x A
k AC
x C
k BC A
x A
k AC K B
p y
p R
p p
y p R
K
p S
R p S
R K
p S
R C K
mod mod
mod mod
mod mod
mod mod
Trang 8
( ) ( )
( ) ( )
(
( ) ( )
( )
( )( )
A x
x x
k
k
k
x x x k k
k
A
x x x k
k
k
x x x k k
k
A
x x x
k k k
x x x
k k k
A
K p g
g
K
p p g
g
p g
g
K
p p
g p
g
p p
g p
g
K
C B A
C
B
A
C B A C B
A
C B A C
B
A
C B A C B A
B A C
B A C
C A B
C A B
=
×
×
×
=
×
×
×
×
×
=
×
×
×
×
=
+
−
+
−
−
−
−
mod
mod mod mod
mod mod
mod
mod mod
mod
.
.
.
.
.
.
.
.
.
)
)
Tương tự, ta cũng có:
( ) ( )
( ) ( )
( )
( )
(
( )
( )( )
( )( )
A x
x x k
k
k
x x x k k
k
A
x x x k
k
k
x x x k k k
A
x x x
k k k
x x x
k k k
A
x x
A
k k
A
x x
B k k
B
A
x
B
k AB
x C
k
BC
A
x B
k AB K
C
K p g
g
K
p p g
p g
K
p p
g p
g
p p
g p
g
K
p p
y p
R
p p
y p
R
K
p S
R p S
R
K
p S
R
C
K
C B A C
B
A
C B A C B A
C B A C
B
A
C B A C B A
C B A
C B A
C A B
C A B
C B
C B
A C
A C
C
C A
A
C C
=
×
×
×
=
×
×
×
=
=
×
×
×
×
=
=
×
×
×
×
=
=
×
×
×
×
=
×
×
=
+
−
+
+
−
+
−
−
−
−
−
−
−
−
mod
mod mod mod
mod mod
mod
mod mod
mod
mod mod
mod
mod mod
mod mod
mod mod
.
.
.
.
.
.
.
.
Từ đây suy ra: K A=K B =K C
Mức độ an toàn của thuật toán mở rộng có thể
phân tích đánh giá tương tự như với thuật toán
chuyển khóa đã đề xuất ở Mục 3.3
III KẾT LUẬN
Bài báo đề xuất giao thức xác lập khóa cho
các hệ mật mã khóa bí mật, bao gồm một thuật
toán thỏa thuận khóa và một thuật toán chuyển
khóa Các thuật toán mới đề xuất có những đặc điểm cơ bản như sau:
- Mức độ an toàn của thuật toán phụ thuộc vào tính khó giải của bài toán logarit rời rạc trong trường hữu hạn nguyên tố
- Khóa mật dùng chung được xác thực về nguồn gốc, nên thuật toán mới đề xuất có khả năng chống lại các dạng tấn công giả mạo
- Khi bị lộ khóa riêng dài hạn (xA,xB) của các đối tượng tham gia thỏa thuận khóa (A,B) thì kẻ tấn công cũng không tính được khóa bí mật dùng chung (K) do thuật toán đã tạo ra trước đó
- Có thể mở rộng thuật toán cho các trường hợp có số lượng các đối tượng tham gia thỏa thuận khóa lớn hơn 2
Chứng minh về tính đúng đắn và những đánh giá về mức độ an toàn của thuật toán mới đề xuất
đã cho thấy khả năng ứng dụng của nó trong thực
tế
TÀI LIỆU THAM KHẢO
[1] W Diffie & M Hellman, New Directions in Cryptography, IEEE Trans On Info Theory,
IT-22(6):644-654, 1976
[2] William Stallings, Cryptography and Network Security Principles and Practices, Fourth
Edition, Prentice Hall PTR, p 592, 2005
[3] D.R Stinson, Cryptography: Theory and Practice, CRC Press 1995
Trang 9_
SƠ LƯỢC VỀ TÁC GIẢ
LƯU HỒNG DŨNG
Sinh năm 1966
Tốt nghiệp đại học ngành Vô tuyến Điện tử tại Học
viện Kỹ thuật Quân sự năm 1989
Hiện đang công tác tại khoa CNTT- Học viện
KTQS
Hướng nghiên cứu: An toàn và bảo mật thông tin
Email: luuhongdung@gmail.com