Chươn
g
III
g
Các Hệ Mật Mã Công Khai
III.1 Nguyên lý hệ mật mã công khai
Đ
ặ
c điểm:
ặ
• Mậtmãcôngkhaidựatrêncơ sở của các hàm toán học
ch
ứ
khôn
g
p
hảid
ự
atrên
p
hé
p
tha
y
th
ế
và đ
ổ
ichỗ nh
ư
g
p
ự
pp
y
trong phương pháp mã hoá đốixứng.
• Mã m
ậ
tcôn
g
khai là
bấ
t đ
ố
ixứn
g
.Tron
g
c
ơ
ch
ế
m
ã
m
ậ
t
ậ
g
g
g
ậ
khoá công khai sử dụng hai khoá: khoá mật và khoá
công khai. Việcsử dụng hai khoá không đốixứng đưa
đế
h
h
ắ
l h
h
đế
nn
h
ững
h
ệ qu
ả
sâu s
ắ
ctrong
l
ĩn
h
vựcantoànt
h
ông
tin: tính toàn vẹn, tính xác thực, phân phối khoá.
III.1 Nguyên lý hệ mật mã công khai
Xu
ấ
txứ:
• Hệ mã mật khoá công khai đượcpháttriểnnhằmgiải
q
u
yế
thaiv
ấ
n đ
ề
p
hứct
ạp
nả
y
sinh t
ừ
p
hươn
g
p
há
p
mã
qy
p
ạp
y
p g
pp
hoá đốixứng:
Vấn đề thứ nhất: bài toán phân phối khoá;
ấ ề
V
ấ
n đ
ề
thứ hai: chữ ký điện tử.
III.1 Nguyên lý hệ mật mã công khai
V
ấ
n đ
ề
p
hân
p
h
ố
i khóa:
p
p
• Trong sơđồmã hoá truyềnthống, quá trình phân phối
kho
á
đư
a
ra
y
êu c
ầ
uhai
p
hía tham
g
ia vào trao đ
ổ
i thôn
g
y
p
g
g
tin:
Phảichiasẻ trước khoá, khoá này phải đượcphân
ố
ằ
p
h
ố
i
bằ
ng một cách nào đóhohọ.
Phảisử dụng trung tâm phân phối khoá KDC.
ấ
ề
V
ấ
n đ
ề
chữ ký điệntử:
• Chữ ký điệntử phải đượcsử dụng trong các thông điệp
điệnt
ử
v
à
p
hảicóhiệulựctương đương vớich
ữ
ký trên
giấy.
III.1 Nguyên lý hệ mật mã công khai
H
ệ
m
ậ
t khóa côn
g
khai:
ệ
ậ
g
• Mỗihệ thống đầucuốitạomộtcặp khoá để mã hoá và
g
iải mã các thôn
g
đi
ệp
.
g
g
ệp
• Mỗihệ thống đầucuốicôngbố một khoá trong cặp khoá
,khoá còn lại đượcgiữ mật.
ế
ố
•
Nế
uAmu
ố
ngửi thông điệpchoB,Asẽ mã ho
á
văn
b
ản
bằng khoá công khai củaB.
•
Khi
B
nhận
được
thông
điệp
B
sẽ
giải
mã
bằng
khoá
•
Khi
B
nhận
được
thông
điệp
,
B
sẽ
giải
mã
bằng
khoá
mật. Không mộtbênthứ ba có thể giảimãđược thông
điệp
vì
chỉ
có
B
biết
khoá
mật
của
B
.
điệp
vì
chỉ
có
B
biết
khoá
mật
của
B
.
III.1 Nguyên lý hệ mật mã công khai
S
ơ
đ
ồ
mã hóa côn
g
khai:
g
• Sơđồmã mật khoá công khai sử dụng mộtkhoáđể mã
hoá v
à
m
ộ
t kho
á
khác có liên
q
uan đ
ể
g
iảim
ã
.Cácthu
ậ
t
ộ
q
g
ậ
toánmãhoávàgiảimãcómộtsốđặc điểmquantrọng
sau:
ể
ế
ế
Không th
ể
xác định đượckhoágiảim
ã
n
ế
uchỉ
b
i
ế
t
thuật toán mã hoá và khoá mã hoá.
Một
số
hệ
mã
mật
khoá
công
khai
(như
RSA)
còn
Một
số
hệ
mã
mật
khoá
công
khai
(như
RSA)
còn
cung cấpkhả năng sử dụng bấtkỳ một khoá trong cặp
khoá
làm
khoá
mã
hoá,
khoá
còn
lại
sẽ
được
dùng
khoá
làm
khoá
mã
hoá,
khoá
còn
lại
sẽ
được
dùng
làm khoá giảimã.
III.1 Nguyên lý hệ mật mã công khai
S
ơ
đ
ồ
mã hóa:
III.1 Nguyên lý hệ mật mã công khai
S
ơ
đ
ồ
chứn
g
th
ự
c:
g
ự
III.1 Nguyên lý hệ mật mã công khai
Các bướcti
ế
nhành:
1. Mỗingườisử dụng tạomộtcặpkhoáđượcsử dụng để mã hóa và
giải mã thông điệp.
ỗ
2. M
ỗ
ingười dùng sẽ giao một trong hai khóa cho người đăng ký
khóa công cộng hoặcmộtfilecókhả năng truy cập. Khóa đólà
khóa côn
g
khai. Cái còn l
ạ
ilàsẽđư
ợ
c
g
i
ữ
bí m
ậ
t.
N
h
ư
tron
g
hình
g
ạ
ợ
g
ậ
g
trên đãgiả thiết, mỗingười dùng sẽ duy trì mộttập các khóa công
khai thu đượctừ các người dùng khác
3
Nếu
Bob
muốn
gửi
một
thông
điệp
bí
mật
cho
Alice
Bob
mã
hóa
3
.
Nếu
Bob
muốn
gửi
một
thông
điệp
bí
mật
cho
Alice
,
Bob
mã
hóa
thông điệpbằng cách sử dụng khóa công khai của Alice.
4. Khi Alice nhận được thông điệp, cô giảimãnóbằng khóa riêng
ể
của mình. Không có ngườinhậnkháccóth
ể
giải mã thông điệpvì
chỉ Alice biết khóa riêng của Alice.
III.1 Nguyên lý hệ mật mã công khai
Mô hình đảmbảob
í
m
ậ
t:
ậ
Kẻ phá mã, quan
sát Y và có quyền
ậ à
truy c
ậ
p v
à
o KU
b
nhưng không có
q
u
yề
n tru
y
c
ập
qy y ập
vào KR
b
hoặc X,
để xem được
thông
tin
kẻ phá
thông
tin
kẻ
phá
mã phảiphục hồi
X và / hoặc KR
b
.
III.1 Nguyên lý hệ mật mã công khai
Mô hình chứng thực:
Trong trường hợpnày,Asoạn một
tin nhắn đến B và mã hóa bằng khóa
riêng của A trước khi truyền nó. B
có th
ể
g
iảimãthôn
g
đi
ệp
bằ
n
g
cách
g
g
ệp
g
sử dụng khóa công khai của A.Bởi
vì thông điệp đã đượcmãhóabằng
khó
a
riên
g
củ
a
A
,
chỉ Acóth
ể
so
ạ
n
g
,
ạ
thông báo này.Vìvậy, thông điệp
được mã hóa toàn bộ phụcvụ như
một
chữ
ký
số
.
Ngoài
ra,
không
thể
một
chữ
ký
số
.
Ngoài
ra,
không
thể
thay đổi thông điệp mà không cần
truy cập vào các khóa riêng của A,
do
đó
thông
điệp
này
là
xác
thực
cả
do
đó
,
thông
điệp
này
là
xác
thực
cả
về nguồnvàvề tính toàn vẹndữ
liệu.
III.1 Nguyên lý hệ mật mã công khai
Mô hình kếthợp:
Trong trường hợpnày,chúngta
bắt đầunhư trướcbằng cách mã
hóa
các
tin
nhắn
sử
dụng
khóa
hóa
các
tin
nhắn
,
sử
dụng
khóa
riêng củangườigửi. Công việc
này để cung cấp các chữ ký số.
Tiế
th
hú
t
ã
hó
ột
Tiế
p
th
eo, c
hú
ng
t
a m
ã
hó
am
ột
lầnnữa, bằng cách sử dụng khóa
công khai củangườinhận. Các
bảnmãcuối cùng chỉ có thểđược
giảimãchỉ bởingườinhận đã
được
xác
định
người
có
chìa
được
xác
định
,
người
có
chìa
khóa. Vì vậy, tính bảomật được
cung cấp.
III.1 Nguyên lý hệ mật mã công khai
Các điềukiệncầnthiết:
• Bên B dễ dàng tạo ra được cặp (KU
b
, KR
b
)
• Bên A dễ dàng tạo ra được C = E
KU
b
(M)
Bê B dễ dà iảiãMD
(C)
•
Bê
n
B
dễ
dà
ng g
iải
m
ã
M
=
D
KR
b
(C)
• Đối thủ không thể xác định được KR
b
khi biết KU
b
•
Đốithủ không thể xác định được M khi biếtKU
và C
•
Đối
thủ
không
thể
xác
định
được
M
khi
biết
KU
b
và
C
• Một trong hai khóa có thể dùng mã hóa trong khi khóa
kia có th
ể
dùn
g
g
iải mã
gg
M = D
KR
b
(E
KU
b
(M)) = D
KU
b
(E
KR
b
(M))
III.1 Nguyên lý hệ mật mã công khai
Mã hóa đ
ố
ixứn
g
và mã hóa côn
g
khai:
g
g
III.2 Thuật Toán RSA
H
ệ
mã hóa RSA:
ệ
• Đề xuấtbởi Ron Rivest, Adi Shamir và Len Adleman
(MIT) vào năm 1977
ổ
ấ
• Hệ mã hóa khóa công khai
p
h
ổ
dụng nh
ấ
t
• Mã hóa khốivớimỗikhốilàmộtsố nguyên < n
Thường
kích
cỡ
n
là
1024
bit
≈
309
chữ
số
thập
phân
Thường
kích
cỡ
n
là
1024
bit
≈
309
chữ
số
thập
phân
• Đăng ký bản quyềnnăm 1983, hếthạnnăm 2000
• An toàn vì chi
p
hí
p
hân tích thừ
a
s
ố
củ
a
mộts
ố
n
g
u
y
ên
p
p
gy
lớnlàrấtlớn
III.2 Thuật Toán RSA
T
ạ
o khóa RSA:
ạ
• Mỗi bên tự tạo ra một cặp khóa công khai - khóa riêng
theo các bước sau :
h ẫ hi ố ố đ l
C
h
ọn ng
ẫ
u n
hi
ên 2 s
ố
nguyên t
ố
đ
ủ
l
ớn p
≠
q
Tính n = pq
Tính Φ
(
n
)
=
(p
-1
)(q
-1
)
() (p
)(q
)
Chọn ngẫu nhiên khóa mã hóa e sao cho 1 < e < Φ(n) và gcd(e,
Φ(n)) = 1
Tìm khóa giảimãd≤ nthỏamãned≡ 1mod
Φ
(n)
Tìm
khóa
giải
mã
d
≤
n
thỏa
mãn
e
.
d
≡
1
mod
Φ
(n)
• Công bố khóa mã hóa công khai KU = {e, n}
• Giữ bí mật khóa
g
iải mã riên
g
KR =
{
d, n
}
g g{}
Các giá trị bí mật p và q bị hủy bỏ
III.2 Thuật Toán RSA
Th
ự
chi
ệ
nRSA:
ự
ệ
• Để mã hóa 1 thông báo M, bên gửi thực hiện
Lấy khóa công khai của bên nhận KU = {e, n}
Tí h C M
e
d
Tí
n
h
C
=
M
e
mo
d
n
• Để giải mã bản mã hóa C, bên nhận thực hiện
Sử d
ụ
n
g
khóa riên
g
KR =
{
d
,
n
}
ụ gg{,}
Tính M = C
d
mod n
• Lưu ý là thông báo M phải nhỏ hơn n
Phân thành nhiềukhốinếucần
Phân
thành
nhiều
khối
nếu
cần
III.2 Thuật Toán RSA
Tính khả thi củaRSA:
• Theo định lý Euler
∀ a, n : gcd(a, n) = 1 ⇒ a
Φ(n)
mod n = 1
Φ
()làố á ố êd hỏ h àêtố ù
Φ
(
n
)
là
s
ố
c
á
c s
ố
nguy
ê
n
d
ương n
hỏ
h
ơn n v
à
nguy
ê
n
tố
c
ù
ng
nhau với n
• Đ
ố
i với RSA có
n = pq với p và q là các số nguyên tố
Φ(n) = (p - 1)(q - 1)
ed ≡ 1mod
Φ
(n)
⇒
∃
số nguyên k : ed = k
Φ
(n) + 1
ed
≡
1
mod
Φ
(n)
⇒
∃
số
nguyên
k
:
ed
=
k
Φ
(n)
+
1
M < n
• Có thể suy ra
C
d
mod n = M
e
d
mod n = M
k
Φ
(n) + 1
mod n = M mod n = M
III.2 Thuật Toán RSA
V
í
d
ụ
t
ạ
o khóa RSA:
ụ
ạ
• Chọn 2 số nguyên tố p = 17 và q = 11
• Tính n = pq = 17 × 11 = 187
• Tính Φ(n) = (p - 1)(q - 1) = 16
×
10 = 160
• Chọn e : gcd(e, 160) = 1 và 1 < e < 160; lấy e = 7
•
Xác định d : de ≡ 1 mod 160 và d ≤ 187
•
Xác
định
d
:
de
≡
1
mod
160
và
d
≤
187
• Giá trị d = 23 vì 23 × 7 = 161 = 1 × 160 + 1
•
Công bố khóa công khai KU
=
{7, 187}
Công
bố
khóa
công
khai
KU
{7,
187}
• Giữ bí mật khóa riêng KR = {23, 187}
Hủy bỏ các giá trị bí mật p = 17 và q = 11
III.2 Thuật Toán RSA
V
í
d
ụ
t
ạ
o khóa RSA:
ụ
ạ
III.2 Thuật Toán RSA
Ch
ọ
nthams
ố
RSA:
ọ
• Cầnchọnpvàqđủ lớn
• Thường chọnenhỏ
ể
ấ
• Thường có th
ể
chọncùnggiátrị củaechot
ấ
tc
ả
người
dùng
•
Trước
đây
khuyến
nghị
giá
trị
của
e
là
3
nhưng
hiện
nay
•
Trước
đây
khuyến
nghị
giá
trị
của
e
là
3
,
nhưng
hiện
nay
được coi là quá nhỏ
• Th
ườ
n
g
c
h
ọ
n
e
=2
16
-1=
65535
ườ g
c ọ
e
65535
• Giá trị củadsẽ lớn và khó đoán
III.2 Thuật Toán RSA
An toàn củaRSA:
• Khóa 128 bit là mộtsố giữa1vàmộtsố rấtlớn
340.282.366.920.938.000.000.000.000.000.000.000.000
Có
b
hiê
ố
ê
tố
iữ
1
à
ố
à
•
Có
b
ao n
hiê
us
ố
nguy
ê
n
tố
g
iữ
a
1
v
à
s
ố
n
à
y
≈ n/ln(n)=2
128
/ ln(2
128
) ≈
3.835.341.275.459.350.000.000.000.000.000.000.000
• Cầnbaonhiêuthờigiannếumỗigiâycóthể tính được
10
12
số
H
121
617
874
031
562
000
ă
(kh ả
10
iệ
lầ
ổi
ủ
H
ơn
121
,
617
,
874
,
031
,
562
,
000
n
ă
m
(kh
o
ả
ng
10
tr
iệ
u
lầ
ntu
ổi
c
ủ
a
vũ trụ)
• An
toà
nnh
ư
n
g
cầ
n
đề
p
h
ò
n
g
nh
ữ
n
g
đ
i
ể
m
yếu
toà
ư g
cầ
đề
pòg
ữ g
đ ể
yếu
III.2 Thuật Toán RSA
PhámãRSA:
• Phương pháp vét cạn
Thử tấtcả các khóa riêng có thể
Phụ
thuộc
vào
độ
dài
khóa
Phụ
thuộc
vào
độ
dài
khóa
• Phương pháp phân tích toán học
Phân n thành tích 2 số nguyên tố pvàq
ế
Xác định trựcti
ế
p
Φ
(n) không thông qua
p
và q
Xác định trựctiếp d không thông qua Φ(n)
•
Phương
pháp
phân
tích
thời
gian
Phương
pháp
phân
tích
thời
gian
Dựatrênviệc đothờigiangiảimã
Có thể ngănngừabằng cách làm nhiễu
III.3 Hệ Trao Đổi Khóa Diffie-Hellman
• Giải thu
ậ
t m
ậ
t mã khóa côn
g
khai đ
ầ
u tiên
ậ ậ g
• Đề xuất bởi Whitfield Diffie và Martin Hellman vào năm
1976
ấ
Malcolm Williamson (GCHQ - Anh) phát hiện trước m
ấ
y năm
nhưng đến năm 1997 mới công bố
•
Chỉ dùng để trao đổi khóa bí mậtmột cách an toàn trên
Chỉ
dùng
để
trao
đổi
khóa
bí
mật
một
cách
an
toàn
trên
các kêch thông tin không an toàn
• Khóa bí mật được tính toán bởi cả hai bên
• An toàn phụ thuộc vào độ phức tạp của việc tính log rời
rạc
III.3 Hệ Trao Đổi Khóa Diffie-Hellman
Thi
ế
tl
ập
Diffie-Hellman:
ập
• Các bên thống nhấtvới nhau các tham số chung
qlàmộtsố nguyên tốđủlớn
là
ột
ê
ă
ủ
α
là
m
ột
nguy
ê
nc
ă
nc
ủ
aq
α mod q, α
2
mod q, , α
p-1
mod q là các số nguyên giao hoán của các số từ
1 đếnq-1
Bê
A
•
Bê
n
A
Chọnngẫu nhiên làm khóa riêng X
A
<q
Tính khóa chun
g
Y
A
=
α
X
A
mo
d
q
g
A
q
• Bên B
Chọnngẫu nhiên làm khóa riêng X
B
<q
Tính
khóa
chung
Y
α
X
B
mod
q
Tính
khóa
chung
Y
B
=
α
B
mod
q