Tải bản đầy đủ (.pdf) (91 trang)

Phân tích đánh giá một số hệ mã hóa

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.07 MB, 91 trang )



ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ






TRỊNH VIẾT CƯỜNG



PHÂN TÍCH ĐÁNH GIÁ MỘT SỐ HỆ MÃ
HÓA




LUẬN VĂN THẠC SĨ





NGƯỜI HƯỚNG DẪN
PGS.TS.TRỊNH NHẬT TIẾN








Hà Nội - 2007




3
Để hoàn thành đƣợc luận văn này, tôi xin đƣợc gửi lời cảm ơn chân thành đến
PGS, TS. Trịnh Nhật Tiến, ngƣời đã nhiệt tình hƣớng dẫn tôi hoàn thành luận
văn cao học này.
Tôi cũng xin gửi lời cảm ơn chân thành đến các thầy cô, những ngƣời đã
giảng dạy tôi trong khóa học cao học 2004 – 2006, các đồng nghiệp bạn bè và
ngƣời thân đã nhiệt tình ủng hộ tạo điều kiện cho tôi hoàn thành luận văn này.




















Trang phụ bìa …………………………………………………………… 1
Lời cam đoan …………………………………………………………… 2


4
Lời cảm ơn ………………………………………………………………. 3
Mục lục …………………………………………………………………… 4
Danh sách các ký hiệu, các chữ viết tắt …………………………………… 7
Lời mở đầu ……………………………………………………………… 8
Chƣơng 1: CƠ SỞ LÝ THUYẾT ………………………………………… 9
1.1. SỐ HỌC CÁC SỐ NGUYÊN ………………………………. 9
1.1.1 Tính chia hết của các số nguyên……………………………… 9
1.1.2 Đồng dƣ và phƣơng trình đồng dƣ tuyến tính……………… 12
1.1.3 Thặng dƣ thu gọn và phần tử nguyên thuỷ………………… 13
1.2 XÁC SUẤT VÀ THUẬT TOÁN XÁC SUẤT……………… 15
1.2.1 Khái niệm xác suất ……………………………………… 15
1.2.2 Tính bí mật hoàn toàn của một hệ mật mã…………………. 15
1.2.3 Thuật toán xác xuất ………………………………………… 16
1.3 ĐỘ PHỨC TẠP TÍNH TOÁN……………………………… 17
1.3.1 Khái niệm về độ phức tạp tính toán ………………………… 17
1.3.2 Hàm một phía và Hàm một phía có cửa sập………………… 18
Chƣơng 2: MỘT SỐ PHƢƠNG PHÁP THÁM MÃ…………………… 19
2.1. PHƢƠNG PHÁP THÁM MÃ………………………………………… 19
2.1.1. Thám mã chỉ biết bản mã …………………………………………… 19
2.1.2. Thám mã biết bản rõ ……………………………………………… 20

2.1.3. Thám mã với bản rõ đƣợc chọn ……………………………………. 21
2.1.4. Thám mã với bản mã đƣợc chọn …………………………………… 23
2.2. TÍNH AN TOÀN CỦA HỆ MÃ …………………………………… 28
2.2.1. An toàn một chiều (One – Wayness) …………………………. 28
2.2.2. An toàn ngữ nghĩa (Semantic Security) …………………………… 29
2.2.3. Tính không phân biệt đƣợc (Indistinguishability)(IND) ………… 31
2.2.4. An toàn ngữ nghĩa tƣơng đƣơng với IND ………………………… 34
2.2.5. Khái niệm an toàn mạnh nhất IND-CCA …………………………. 36
Chƣơng 3: PHÂN TÍCH ĐÁNH GIÁ MỘT SỐ HỆ MÃ HOÁ …………. 38
3.1. HỆ MÃ HOÁ RSA …………………………………………………… 38


5
3.1.1. Hệ mã RSA an toàn trƣớc các tấn công KPA, COA, CPA ………… 38
3.1.2. Hệ mã RSA không an toàn ngữ nghĩa ……………………………. 38
3.1.3. Hệ mã RSA không đạt an toàn trƣớc tấn công CCA ……………… 39
3.1.4. Ứng dụng thực tế …………………………………………………… 39
3.2. HỆ MÃ HOÁ ELGAMAL ………………………………………… 40
3.2.1. ELGAMAL đảm bảo an toàn ngữ nghĩa ………………………… 40
3.2.2. Hệ mã ELGAMAL an toàn trƣớc các tấn công KPA, COA, CPA 41
3.2.3. Hệ mã ELGAMAL không đạt an toàn trƣớc tấn công CCA ……… 41
3.3. HỆ MÃ HOÁ CRAMER-SHOUP (1998) ……………………………. 42
3.3.1. Giả thuyết Decisionnal Diffie-Hellman …………………………… 42
3.3.2. Sơ đồ Hệ mã ……………………………………………………… 43
3.3.3. Độ an toàn của hệ mã hoá …………………………………………. 45
3.3.4. Cài đặt hệ mã hoá …………………………………………………. 45
3.3.5. Hệ mã hoá không dùng hàm băm 46
3.4. HỆ MÃ HOÁ LAI (Hybrid Encryption) 47
3.4.1 Hệ mã hoá KEM 47
3.4.2 Hệ mã hoá SKE 49

3.4.3 Hệ mã hoá công khai lai (Hybrid public-key encryption) (HPKE) …. 54
3.5. HỆ MÃ HOÁ OAEP (Optimal Aysmmetric Encryption Padding) 58
3.5.1. Mô hình máy tƣ vấn ngẫu nhiên (Random Oracle Model) 58
3.5.2. An toàn Planitext – Awareness …………………………………… 60
3.5.3. Lƣợc đồ OAEP …………………………………………………… 62
3.5.4. Đánh giá lƣợc đồ ………………………………………………… 64
Chƣơng 4: THỬ NGHIỆM CHƢƠNG TRÌNH MÃ HÓA…………… 70
1. CÔNG CỤ …………………………………………… 70
4.2. CÁC THÀNH PHẦN CỦA CHƢƠNG TRÌNH …………… 70
KẾT LUẬN ……………………………………………………………… 76
TÀI LIỆU THAM KHẢO …………………………………………… 78




6



























DANH SÁCH CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
STT
Chữ viết tắt
Ý nghĩa


7
1

Phép Xor
2
||
Phép ghép hai chuỗi
3
CCA
Thám mã với bản mã được chọn
(Chosen ciphert attack)
4

CCA1
Thám mã với bản mã được chọn trước bất kỳ
(Non-adaptive chosen ciphertext attack)
5
CCA2
Thám mã với bản mã được chọn trước thích hợp
(Adaptive chosen ciphertext attack)
6
COA
Thám mã chỉ biết bản mã (Ciphertext only attack)
7
CPA
Thám mã với bản rõ được chọn
(Chosen plaintext attack)
8
DDH
Giả thuyết Decisionnal Diffie-Hellman
9
HPKE
Hệ mã hoá công khai lai
(Hybrid public-key encryption)
10
IND
Tính không phân biệt được (Indistinguishability)
11
KEM
Máy đóng gói khoá (key encapsulation mechanism)
12
KPA
Thám mã biết bản rõ (Known plaintext attack)

13
MAC
Mã xác thực thông tin một lần
(one-time message authentication code)
14
OAEP
Optimal Aysmmetric Encryption Padding
15
PA
An toàn Planitext – Awareness
16
Pr
Xác suất
17
RO
Máy tư vấn ngẫu nhiên (Random Oracle)
18
SKE
Hệ mã hoá khoá đối xứng một lần
(one-time symmetric-key encryption scheme)
19
TCR
Họ hàm băm Target collision resistant
20
WPA
An toàn Weak plaintext – awareness
LỜI MỞ ĐẦU


8

Luận văn đã tổng hợp lại các phương pháp tấn công chủ yếu đối với hệ mã
hiện nay. Luận văn cũng đã trình bày một dạng tấn công mạnh nhất được biết đến
hiện nay là CCA2, dạng tấn công này đã có thật trong thực tế. Về bản chất các
dạng tấn công chính là “năng lực” mà thám mã có được, dạng tấn công càng mạnh
thì có nghĩa là “năng lực” của thám mã càng lớn.
Từ những gì xảy ra trong thực tế, các nhà lập mã đã giả thiết những tình
huống xấu nhất có thể xảy ra trong thực tế (tình huống xấu có nghĩa là thám
mã sẽ có được “năng lực” gì).
Đến nay tình huống xấu nhất có thể xảy ra mà các nhà lập mã trên thế
giới có thể nghĩ đến, đó là tình huống mà thám mã có máy tư vấn giải mã
(Oracle Decryption), tức là tương đương với phương pháp tấn công CCA2, và
quả thật tình huống này đã xảy ra trong thực tế, tất nhiên là với mức độ ít.
Cũng trong khuôn khổ luận văn, đã trình bày và đánh giá một số hệ mã
dưới những phương pháp tấn công trên. Và dưới những phương pháp tấn công
mạnh (như CCA2), các hệ mã thông dụng như RSA và Elgamal đã dễ dàng bị
phá.
Trên cơ sở đó, luận văn cũng trình bày hai hệ mã thông dụng và có hiệu
quả nhất hiện nay là OAEP và Cramer Shoup, có thể chứng minh là an toàn
dưới phương pháp tấn công mạnh nhất là CCA2. Tất nhiên đi đôi với điều đó
là sự phức tạp và chi phí cho việc cài đặt các hệ mã này rất cao, đồng thời
cũng đang còn nhược điểm khi chứng minh tính bảo mật.
Với OAEP, phải xem hàm băm như một máy tư vấn ngẫu nhiên
(Random Oracle) trong chứng minh tính bảo mật.
Việc có hàm băm với tính chất như thế trong thực tế, đang còn được
nghiên cứu.
Còn đối với Cramer Shoup đó là tính an toàn, phải dựa trên giả thuyết
Decisionnal Diffie Hellman.
Để so sánh hai hệ mã, thì OAEP có ưu điểm là dựa trên giả thuyết toán
học mạnh hơn là hàm một phía (RSA), còn Cramer Shoup dựa trên giả thuyết
toán học yếu hơn Decisionnal Diffie Hellman (mặc dù cho đến nay vẫn chưa



9
có một sự chứng minh cụ thể là cái nào mạnh hơn cái nào), nhưng ngược lại
OAEP lại phải dựa vào mô hình RO còn đang gây nhiều tranh cải.
Tất nhiên là tuỳ theo yêu cầu thực tế của người dùng và tính chất thực
tế mà hệ mã phải đáp ứng, người sử dụng có thể chọn một hệ mã nào cho phù
hợp với yêu cầu của mình. Ví dụ chỉ để mã hoá những thông tin không mang
tính quan trọng, thì không nhất thiết phải dùng hệ mã cài đặt với chi phí tốn
kém như hai hệ mã trên. Có thể cài đặt những phiên bản đơn giản hơn của hai
hệ mã trên. Cramer Shoup cũng đã giới thiệu cách cài đặt đơn giản hơn, vẫn
đạt an toàn IND-CCA1 hoặc dùng hệ mã đơn giản và ít tốn kém hơn.
Và tất nhiên do tính không ngừng của phát triển mật mã, nên những
phương pháp tấn công ở trên và độ an toàn của các hệ mã được đánh giá, chỉ
là tương đối. Tương lai có thể phải xem xét đến mô hình kẻ tấn công dùng đến
máy tính lượng tử.
Trên cơ sở đánh giá phân tích các hệ mã, luận văn chính là một biện pháp bảo
vệ an toàn thông tin.















Chƣơng 1: CƠ SỞ LÝ THUYẾT


10

1.1. SỐ HỌC CÁC SỐ NGUYÊN
Ta ký hiệu Z là tập các số nguyên và Z
+
là tập các số nguyên không
âm. Trong mục này ta sẽ nhắc lại một số kiến thức về số học của các số
nguyên cần cho việc trình bày lý thuyết mật mã.
1.1.1. Tính chia hết của các số nguyên
Tập Z là đóng kín đối với các phép cộng, trừ và nhân, nhưng không
đóng kín đối với phép chia. Vì vậy khi một số nguyên a chia cho một số
nguyên b được thương là một số nguyên q có một ý nghĩa rất đặc biệt, khi đó
ta nói a chia hết cho b, a là bội số của b, b là ước số của a, và ký hiệu là b|a.
Dễ thấy rằng 1 là ước số của mọi số nguyên, 0 là bội số của mọi số nguyên, và
moi số nguyên a là ước số, đồng thời là bội số của chính nó.
Số nguyên d được gọi là ước số chung của hai số nguyên a và b nếu d|a
và d|b. Số nguyên d được gọi là ước số chung lớn nhất của a và b nếu d > 0, d
là ước số chung của a và b, và mọi ước số chung của a và b đều là ước số của
d. Ta ký hiệu ước số chung lớn nhất của a và b là gcd(a, b).
Dễ thấy rằng với mọi số nguyên dương a ta có gcd(a, 0) = a, ta cũng
quy ước là gcd(0, 0) = 0.
Số nguyên a > 1 được gọi là số nguyên tố nếu a không có ước số nào
ngoài 1 và chính a. Số a là hợp số nếu không phải là nguyên tố.
Số nguyên n > 1 bất kỳ đều có thể viết dưới dạng:
n = p

1
α1
. p
2
α2
… p
k
αk

Trong đó p
1
, p
2
, …, p
k
là các số nguyên tố khác nhau, α
1
, α
2
, …, α
k

các số mũ nguyên dương. Nếu không kể thứ tự của các thừa số nguyên tố thì
dạng biểu diễn đó là duy nhất, ta gọi đó là dạng khai triển chính tắc của n.




Định lý 1.1.



11
Nếu b > 0 và b|a thì gcd(a, b) = b.
Nếu a = bq + r thì gcd(a, b) = gcd(b, r).
Số nguyên m được gọi là bội số chung của a và b nếu m chia hết cho cả
a và b. Số m được gọi là bội số chung nhỏ nhất của a và b ký hiệu là lcm(a, b),
nếu m là bội số chung của a và b, và mọi bội số chung của a và b đều là bội
của m.
Với mọi số nguyên dương a và b ta có quan hệ
Lcm(a, b).gcd(a, b) = a.b
Thuật toán Euclide tìm ước số chung lớn nhất:
INPUT: hai số nguyên không âm a và b, với a ≥ b.
OUTPUT: ước số chung lớn nhất của a và b.
1. While b > 0 do
Begin
r := a mod b;
a := b;
b := r;
End;
2. Cho ra kết quả (a).
Ta biết rằng nếu gcd(a, b) = d, thì phương trình bất định
a.x + b.y = d
Có nghiệm nguyên (x, y), và một nghiệm nguyên như thế có thể tìm
được bởi thuật toán Euclide mở rộng như sau:








Thuật toán Euclide mở rộng:


12
INPUT: hai số nguyên không âm a và b với a ≥ b.
OUTPUT: d = gcd(a, b) và hai số x, y sao cho a.x + b.y = d.
1. Nếu b = 0 thì đặt d ← a, x ← 1, y ← 0, và cho ra (d, x, y).
2. Đặt x
2
= 1, x
1
= 0, y
2
= 0, y
1
= 1.
3. While b > 0 do
Begin
q := a div b ; r :=a mod b ;
x := x
2
– qx
1
; y := y
2
– qy
1
;
a := b ; b := r ;

x
2
:= x
1
; x
1
:= x ;
y
2
:= y
1
; y
1
:=y ;
End ;
4. Đặt d := a, x := x
2
, y := y
2
, và cho ra kết quả (d, x, y).

















1.1.2. Đồng dƣ và phƣơng trình đồng dƣ tuyến tính


13
* Khái niệm Đồng dƣ:
Cho n là một số nguyên dương. Ta nói hai số nguyên a và b là đồng dư
với nhau theo modul n, và viết a ≡ b (mod n), nếu n|(a – b).
Cho a  Z
n
. Số nguyên x  Z
n
được gọi là nghịch đảo của a theo mod
n, nếu a.x ≡ 1 (mod n). Khi đó ta nói a là khả nghịch và ký hiệu x là a
-1
mod n.
Ta định nghĩa phép chia trong Z
n
như sau:
(a : b) (mod n) = (a. b
-1
)mod n.
Phép chia chỉ thực hiện được khi b là khả nghịch theo mod n.
* Phƣơng trình đồng dƣ tuyến tính :
Phương trình đồng dư tuyến tính có dạng :

a . x ≡ b (mod n).
Trong đó a, b, n là các số nguyên, x là ẩn số.
Phương trình đó có nghiệm khi và chỉ khi d = gcd(a, n)|b. Khi đó có
đúng d nghiệm theo mod n.
Ta xét hệ các phương trình đồng dư tuyến tính :

x
1
≡ a
1
(mod n
1
)
x
2
≡ a
2
(mod n
2
)
…………………
x
k
≡ a
k
(mod n
k
)

Ký hiệu: n = n

1
.n
2
…n
k
, N
i
= n / n
i
.
Định lý 1.2. (định lý số dƣ Trung Quốc).
Giả sử các số nguyên n
1
, n
2
…, n
k
là từng cặp nguyên tố với nhau. Khi
đó, hệ phương trình đồng dư tuyến tính trên có một nghiệm duy nhất theo mod
n là :
x = ∑
i=1
k
a
i
. N
i
. M
i
mod n,

Trong đó M
i
= N
i
-1
mod n
i
(Có M
i
vì N
i
và n
i
nguyên tố với nhau).

1.1.3. Thặng dƣ thu gọn và phần tử nguyên thuỷ


14
1). Tập thặng dư thu gọn
Tập Z
n
= {0, 1, 2, …, n - 1} thường được gọi là tập các thặng dư đầy
đủ theo mod n, vì mọi số nguyên đều có thể tìm được trong Z
n
một số đồng dư
với mình theo mod n. Tập Z
n
đóng đối với các phép cộng, trừ và nhân, nhưng
không đóng với phép chia.

Tập Z
*
n
= { a  Z
n
: gcd(a, n) = 1}, tức Z
*
n
là tập con của Z
n
bao gồm
tất cả các phần tử nguyên tố với n. Tập đó được gọi là tập các thặng dư thu
gọn theo mod n.
Mọi số nguyên nguyên tố với n đều có thể tìm thấy trong Z
*
n
một đại
diện đồng dư với mình theo mod n. Chú ý rằng nếu p là số nguyên tố thì Z*
p
=
{1, 2, …, p – 1}.
Tập Z
*
n
lập thành nhóm con đối với phép nhân của Z
n
, vì trong Z
*
n


phép chia theo mod n bao giờ cũng thực hiện được, Gọi Z
*
n
là nhóm nhân của
Z
n
.
2). Khái niệm cấp của một phần tử
Ta gọi số các phần tử trong một nhóm là cấp của nhóm đó. Ký hiệu
θ(n) là số các số nguyên dương bé hơn n và nguyên tố với n. Như vậy Z
*
n

cấp là θ(n). Nếu p là số nguyên tố thì nhóm Z
*
p
có cấp là p – 1.
Ta nói phần tử g  Z
*
n
có cấp m, nếu m là số nguyên dương bé nhất sao
cho g
m
= 1 trong Z
*
n
.
Theo một định lý trong Đại số, ta có m | θ(n). Vì vậy với mọi b  Z
*
n

ta
luôn có b
θ(n)
≡ 1 mod n.







3). Phần tử nguyên thủy


15
Nếu p là số nguyên tố, thì do θ(p) = p – 1, ta có với mọi b  Z
*
p

b
p-1
≡ 1 (mod p)
Nếu b có cấp p – 1, thì các phần tử b, b
2
, …, b
p-1
đều khác nhau và theo
mod p, chúng lập thành Z
*
p

. Khi đó ta nói Z
*
p
là nhóm cyclic và b là phần tử
sinh, hay phần tử nguyên thuỷ của nhóm đó.
Người ta đã chứng minh được tính chất sau:
1. Với mọi số nguyên tố p, Z
*
p
là nhóm cyclic, có θ(p-1) phần tử nguyên thuỷ.
2. Nếu p – 1 = p
1
α1
. p
2
α2
… p
s
αs
là khai triển chính tắc của p – 1, và nếu:
a
p-1/p1
≡ 1 (mod p), …, a
p-1/ps
≡ 1 (mod p),
thì a là phần tử nguyên thuỷ của Z
*
p
theo mod p.
3. Nếu g là phần tử nguyên thuỷ theo mod p, thì β = g

i
mod p với mọi i mà
gcd(i, p – 1) = 1, cũng là phần tử nguyên thuỷ theo mod p.

















1.2. XÁC SUẤT VÀ THUẬT TOÁN XÁC SUẤT


16
1.2.1. Khái niệm xác suất
Ta xét tập hợp Ω, được gọi là không gian các sự kiện sơ cấp (hay không
gian mẫu). Các phần tử của Ω có thể xem như các kết quả có thể có (và loại
trừ lẫn nhau) của một thực nghiệm nào đó. Ta chỉ xét các không gian rời rạc,
hữu hạn, Ω = {s
1

, s
2
, …, s
n
}.
Một phân bố xác suất P trên Ω được định nghĩa là tập các số thực
không âm P = {p
1
, p
2
, …, p
n
} có tổng ∑p
i
= 1. Số p
i
được gọi là xác suất của
sự kiện sơ cấp s
i
.
Một tập con L của Ω được gọi là một sự kiện. Xác suất của sự kiện L
được định nghĩa bởi p(L) = ∑
s 
L
p(s).
1.2.2.Tính bí mật hoàn toàn của một hệ mật mã
Năm 1949, C. Shannon công bố công trình Lý thuyết truyền thông của
các hệ bí mật, đưa ra nhiều quan niệm làm cơ sở cho việc đánh giá tính bí mật
của các hệ mật mã, trong đó có khái niệm tính bí mật hoàn toàn.
Theo Shannon một hệ mật mã là bí mật hoàn toàn, nếu việc biết xác

suất bản rõ là như nhau dù biết hay không biết bản mã, hay nói cách khác là
việc biết bản mã cũng không đem lại thêm bất kỳ thông tin gì về bản rõ.
Gọi P là tập không gian các bản rõ, C là tập không gian các bản mã, K
là tập không gian các khóa, E là giải thuật mã hóa, D là giải thuật giải mã.
Định lý 1.3.
Giả sử S = (P, C, K, E, D) là hệ mã với điều kiện |P| = |C| = |K|, tức
các tập P, C, K có số các phần tử bằng nhau.
Hệ mã S là bí mật hoàn toàn, nếu và chỉ nếu mỗi khoá k

K được
dùng với xác xuất bằng nhau là 1/|K|, và với mọi x

P, y

C có khoá duy
nhất k

K sao cho E
k
(x) = y.



1.2.3. Thuật toán xác xuất


17
Thuật toán xác suất là thuật toán mà cùng với dữ liệu đầu vào, ta bổ
sung thêm giá trị của một đại lượng ngẫu nhiên tương ứng nào đó.
Thuật toán xác suất được chia làm hai loại: thuật toán Monte Carlo và

thuật toán Las Vegas. Thuật toán Monte Carlo luôn kết thúc với kết quả có
hoặc không đối với mọi dữ liệu đầu vào bất kỳ. Thuật toán Las Vegas tuy
cũng kết thúc với mọi dữ liệu, nhưng có thể kết thúc với một thông báo không
có trả lời có hoặc không.






















1.3. ĐỘ PHỨC TẠP TÍNH TOÁN


18

1.3.1. Khái niệm về độ phức tạp tính toán
Độ phức tạp tính toán (về không gian hay về thời gian) của một tiến
trình tính toán là số ô nhớ được dùng hay số các phép toán sơ cấp được thực
hiện trong tiến trình tính toán đó.
Độ phức tạp tính toán (trong trường hợp xấu nhất) của thuật toán A
được hiểu là một hàm số f
A
(n) sao cho với mỗi số n, f
A
(n) là số ô nhớ, hay số
phép toán sơ cấp tối đa mà A cần để thực hiện tiến trình tính toán của mình
trên các dữ liệu vào có độ dài ≤ n.
Thuật toán A có độ phức tạp thời gian đa thức, nếu có một đa thức P(n)
sao cho với mọi n đủ lớn ta có f
A
(n) ≤ P(n), trong đó f
A
(n) là độ phức tạp tính
toán theo thời gian của A.
Về sau khi nói đến các bài toán, ta hiểu đó là các bài toán quyết định,
mỗi bài toán P như vậy được xác định bởi:
 Một tập các dữ liệu vào I.
 Một câu hỏi Q trên các dữ liệu vào, sao cho với mỗi dữ
liệu vào x  I, câu hỏi Q có một trả lời đúng hoặc sai.
Ta nói bài toán quyết định P là giải được, nếu có thuật toán để giải nó,
tức là thuật toán làm việc có kết thúc trên mọi dữ liệu vào của bài toán, và cho
kết quả đúng hoặc sai tuỳ theo câu hỏi Q trên dữ liệu đó có trả lời đúng hoặc
sai. Bài toán P là giải được trong thời gian đa thức, nếu có thuật toán giải nó
với độ phức tạp thời gian đa thức.









1.3.2. Hàm một phía và Hàm một phía có cửa sập


19
Hàm số y = f(x) được gọi là hàm một phía (one – way function), nếu
việc tính thuận từ x ra y là “dễ”, nhưng việc tính ngược từ y tìm lại x là “khó”.
Tính từ “dễ” và “khó” không có các định nghĩa chính xác, mà được hiểu một
cách thực hành, chẳng hạn “dễ” là có thể tính được trong thời gian đa thức
(với đa thức bậc thấp), “khó” là không tính được trong thời gian đa thức.
Cho đến nay việc tìm và chứng minh một hàm số nào đó là không tính
được trong thời gian đa thức còn là việc khó khăn, cho nên “khó” thường chỉ
được hiểu là chưa tìm được thuật toán tính nó trong thời gian đa thức. Với
cách hiểu tương đối như vậy thì các bài toán về phân tích thừa số nguyên tố,
logarit rời rạc, … có thể được xem như là các hàm một phía.
Hàm y = f(x) được gọi là hàm một phía có cửa sập (trapdoor one-way
function), nếu việc tính thuận từ x ra y là “dễ”, việc tính ngược từ y tìm lại x
là “khó”, nhưng có cửa sập z để với sự trợ giúp của nó, thì việc tính x từ y lại
trở thành “dễ”.


















20
Chƣơng 2: MỘT SỐ PHƢƠNG PHÁP THÁM MÃ

2.1. PHƢƠNG PHÁP THÁM MÃ
2.1.1. Thám mã chỉ biết bản mã
Thám mã chỉ biết bản mã (Ciphertext only attack) (COA) là mô hình
thám mã, trong đó giả sử rằng thám mã chỉ biết duy nhất tập các bản mã.
Xảy ra trường hợp này khi (như thời ngày xưa) bắt được kẻ đưa thư,
hoặc (thời ngày nay) chặn được thông tin truyền trên mạng.
Thám mã là thành công hoàn toàn nếu như các bản rõ tương ứng có thể
được suy ra, hay tốt hơn là có thể tìm được khoá giải mã. Khả năng để tìm
được bất kì thông tin gì về bản rõ cơ sở cũng được xem là thành công.
Những hệ mã hoá trước đây thực hiện bằng bút và giấy, thường bị phá
bởi việc dùng bản mã đơn độc. Đối với hệ mã cổ điển đơn giản, nhà lập mã đã
phát triển kỹ thuật thống kê cho việc tấn công bản mã như “phân tích tần
số”(frequency analysis).
Các hệ mã hiện đại cố gắng cung cấp khả năng bảo vệ chống lại tấn
công dạng này, bằng cách sử dụng giả thuyết giải bản mã tương ứng với việc

giải bài toán “khó”, quá trình kiểm tra khả năng của hệ mã mới thường kéo
dài nhiều năm, bao gồm việc kiểm tra toàn bộ mọi khía cạnh của một số lượng
lớn các bản mã từ bất kì một sự thống kê ngẫu nhiên nào.
Ví dụ như hệ mã RSA, để tìm ra bản rõ từ bản mã thì phải giải bài toán
“khó” là bài toán RSA.










21
2.1.2. Thám mã biết bản rõ
Thám mã biết bản rõ (Known plaintext attack) (KPA) là một mô hình
tấn công để giải mã, trong đó thám mã biết cả bản rõ và bản mã, và tự do dùng
chúng để tìm kiếm những thông tin khác về hệ mã, đặc biệt là khoá bí mật.
Tuy nhiên bản mã và bản rõ là biết được một cách ngẫu nhiên ngoài ý
muốn của thám mã, ví dụ thông tin được cắt thành nhiều bản rõ để mã hoá
thành nhiều bản mã tương ứng, nhiều người đưa thư khác nhau mang đến một
đích nào đó, thám mã vô tình bắt được kẻ đưa thư cầm một bản mã và một
bản rõ tương ứng với nó, sự bắt được này là hoàn toàn vô tình, thám mã không
thể lựa chọn trước được.
Nhiều hệ mã hoá cổ điển dễ bị tấn công đối với thám mã loại này. Ví
dụ như với hệ mã chuyển dịch (shift cipher) (hệ mã Caesar) , nếu biết một cặp
bản mã và bản rõ bất kỳ, tức là biết được khoảng chuyển dịch hay sẽ biết được
khoá K, lúc đó ta sẽ giải mã được toàn bộ hệ mã.

Những file lưu trữ dạng ZIP cũng dễ bị tấn công theo kiểu này. Ví dụ,
thám mã với file Zip đã được mã hoá chỉ cần biết một file Zip chưa mã hoá
(được hiểu là biết bản rõ (Known plaintext)), sau đó dùng một số phần mềm
sẵn có, họ có thể tính ngay được khoá để giải mã toàn bộ.
Để tìm được file chưa mã hoá này, thám mã có thể tìm kiếm trên
Website một file thích hợp, tìm kiếm nó từ một kho lưu trữ, hoặc cố gắng xây
dựng lại một file rõ (plaintext file) với những tri thức của tên file từ kho lưu
trữ đã được mã hoá.








22
2.1.3. Thám mã với bản rõ đƣợc chọn
Thám mã với bản rõ được chọn (Chosen plaintext attack) (CPA) là mô
hình tấn công để giải mã, trong đó giả sử rằng thám mã có khả năng chọn một
bản rõ tuỳ ý và biết bản mã tương ứng. Điều này có thể xảy ra khi thám mã
chiếm được tạm thời máy lập mã, với hệ mã hoá công khai điều này là hiển
nhiên, vì biết được khoá công khai thì thám mã có thể mã hoá bất kỳ bản rõ
nào mà họ chọn. Đối với các hệ mã đối xứng thì như mô hình trên, thám mã
có “quyền” bắt được bất kỳ kẻ đưa thư nào mà họ muốn, ta đừng hiểu theo
nghĩa là thám mã bắt tất cả các kẻ đưa thư có cặp bản rõ bản mã tương ứng,
hợp lại sẽ được bản rõ đầy đủ, mà phải hiểu là nếu thám mã có một bản rõ bất
kỳ nào đó, thì có thể “bắt” được kẻ đưa thư mang bản mã tương ứng với bản
rõ đó.
Ta thấy thám mã ở trường hợp này có “năng lực mạnh” hơn hẳn thám

mã ở mục trên, vì ở trên chỉ biết được cặp bản rõ bản mã một cách ngẫu
nhiên, còn ở đây có thể biết được do thám mã chọn trước.
Một cách hình thức, thám mã có một plaintext checking oracle (máy tư
vấn kiểm tra bản rõ) nhận đầu vào là cặp (m, c) và trả lời xem c có phải là bản
mã của m không. Trong trường hợp xấu nhất, thám mã với bản rõ được chọn
có thể khám phá ra khoá bí mật của hệ mã.
Thám mã với bản rõ được chọn trở nên rất quan trọng trong các hệ mã
hoá công khai, tại vì các khoá mã hoá được công bố và thám mã có thể mã
hoá bất kì bản rõ nào mà họ chọn.
Bất kì hệ mã nào an toàn đối với “thám mã với bản rõ được chọn” , thì
cũng an toàn với “thám mã biết bản rõ” (Known plaintext attack) và “thám mã
chỉ biết bản mã” (Ciphertext only attack), đây là vấn đề an toàn kéo theo.







23
Có hai kiểu phân biệt “thám mã với bản rõ được chọn”:
 “Thám mã với bản rõ được chọn” theo khối, trong đó thám mã
chọn tất cả các bản rõ trước, rồi sau đó mới mã hoá.
 “Thám mã với bản rõ được chọn” thích hợp, trong đó thám mã
tạo ra một chuỗi các bản rõ (queries) liên quan lẫn nhau, việc chọn các bản rõ
tiếp theo dựa trên thông tin về những mã hoá trước đó.
Những giải thuật mã hoá khoá công khai không ngẫu nhiên (tất định)
(ví dụ như RSA dùng thuật toán mã hoá tất định, một bản rõ có duy nhất một
bản mã), dễ bị xâm phạm bởi các kiểu thám mã “từ điển” đơn giản. Đó là
thám mã xây dựng một bảng các bản rõ và bản mã tương ứng có thể, biết bản

mã để tìm ra bản rõ tương ứng, thám mã chỉ cần tìm kiếm trên bảng bản mã,
ánh xạ sang bản rõ tương ứng, tất nhiên là với yêu cầu rằng không gian của
các bản rõ là “đủ nhỏ”, hoặc thám mã có thể đoán trước được tập bản rõ nằm
trong khoảng đủ nhỏ nào, mà người lập mã sẽ sử dụng.
Vì vậy việc định nghĩa bí mật hoàn toàn cho hệ mã hoá công khai dưới
“sự thám mã với bản rõ được chọn” yêu cầu hệ mã phải là hệ mã xác xuất (ví
dụ mã hoá ngẫu nhiên) ([13]).















24
2.1.4. Thám mã với bản mã đƣợc chọn
2.1.4.1. Kiểu tấn công CCA
Thám mã với bản mã được chọn (Chosen ciphertext attack) (CCA) là
mô hình tấn công để giải mã, trong đó thám mã chọn bản mã và giải mã bản
mã đó với khoá chưa được biết. Điều này đạt được khi thám mã giành được
quyền kiểm soát tạm thời máy giải mã.
Hai dạng cụ thể của loại tấn công này còn được gọi là tấn công

“lunchtime” (CCA1) và tấn công “midnight” (CCA2). Thiết bị cung cấp khả
năng giải mã các bản mã được chọn (ngẫu nhiên hay có chủ định), gọi là thiết
bị giải mã hoặc máy tư vấn giải mã (decryption oracle).
Rõ ràng kẻ địch có thể giải mã các bản mã đã chọn trước (bằng cách
dùng một vài thiết bị giải mã (decryption oracle)), thì có thể đánh bại sự an
toàn của một lược đồ mã hoá. Tuy nhiên thám mã với bản mã được chọn có
thể kéo theo nhiều ý nghĩa hơn đối với một số sơ đồ mã hoá. Ví dụ trong
trường hợp đặc biệt thám mã có thể khôi phục lại được khoá giải mã của lược
đồ, bằng cách đưa ra những bản mã chọn trước một cách phù hợp và phân tích
những kết quả đã được giải mã. Một thành công của thám mã với bản mã
được chọn là có thể gây mất an toàn tới lược đồ mã hoá, thậm chí ngay khi
thiết bị giải mã (decryption oracle) trở nên không còn hiệu lực. Vì thế tấn
công dạng này có thể có hiệu lực trong cả những trường hợp mà thiết bị giải
mã (decryption oracle) không thể được dùng để giải mã một cách trực tiếp các
bản mã mục tiêu.
Một số lược đồ an toàn khác có thể không còn tác dụng trước kiểu tấn
công này. Ví dụ như lược đồ El Gamal là “an toàn ngữ nghĩa” (semantically
secure) (2.2.2) trước mô hình tấn công CPA nhưng không còn “an toàn ngữ
nghĩa” trước tấn công này (chương 3).






25
Những phiên bản trước đây của hệ RSA, dùng giao thức an toàn SSL
(Secure socket layer) dễ bị xâm phạm bởi tấn công với bản mã chọn trước
thích hợp (Adaptive chosen ciphertext attack), cách tấn công này khám phá ra
khoá phiên SSL. Nhà thiết kế ra thẻ thông minh (Smart card) phải có hiểu biết

cụ thể về loại tấn công này, những thiết bị này hoàn toàn có thể nằm dưới sự
điều khiển của kẻ địch nếu chúng đưa ra một số lượng lớn các bản mã chọn
trước để cố gắng khôi phục lại khoá bí mật.
Khi một hệ mã hoá dễ bị xâm phạm với CCA, thì khi thực hiện nên
tránh những trường hợp để cho kẻ địch giải các bản mã đã chọn trước (ví dụ
như tránh cung cấp cho kẻ địch máy giải mã (decryption oracle). Đôi khi còn
khó khăn hơn nữa, khi chỉ cần giải một phần những bản mã được chọn trước
(không cần hoàn toàn), cũng có thể cho cơ hội tấn công hệ mã một cách khôn
ngoan. Hơn nữa một vài hệ mã hoá (như RSA) dùng cùng một kỹ thuật để ký
và giải mã những thông báo. Việc này cho cơ hội tấn công khi việc “băm”
(hashing) không được dùng trên thông báo đã được ký. Vì thế nên dùng những
hệ mã, mà có thể chứng minh là an toàn trước tấn công của CCA, bao gồm
RSA-OAEP và Cramer-Shoup .
Hiện nay hai hệ được quan tâm nhất là OAEP và Cramer-Shoup:
۰ OAEP hiệu quả hơn, dựa trên giả thuyết toán học mạnh hơn là hàm một
phía. Cramer-Shoup dùng giả thuyết toán học DDH (Decisionnal Diffie-
Hellman) nhưng phải coi hàm băm như một máy tư vấn ngẫu nhiên (RO-
Random Oracle) trong chứng minh tính bảo mật.
۰ Một số nghiên cứu chỉ ra nhược điểm của RO, do vậy Cramer-Shoup được
ưa chuộng hơn trong một số trường hợp.








26
2.1.4.2. Kiểu tấn công CCA1

Trong kiểu tấn công với bản mã được chọn trước bất kỳ (Non-adaptive
chosen ciphertext attack), hay còn gọi là tấn công có bản mã chọn trước không
phân biệt (indifferent chosen ciphertext attack) hoặc tấn công “lunchtime”
(CCA1), trong đó kẻ địch chỉ có thể chiếm được máy tư vấn giải mã (có
decryption oracle) trước khi chọn bản mã cụ thể để tấn công. Mục tiêu tấn
công là thu thập đủ thông tin để làm giảm độ an toàn của hệ mã. Nếu thành
công thì có thể khám phá ra khoá bí mật và do đó có thể phá vở sự an toàn của
hệ mật.




















×