Tải bản đầy đủ (.doc) (34 trang)

Đề cương ôn thi môn học an toàn thông tin

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 (744.68 KB, 34 trang )

Câu 1: Các khái niệm cơ bản của lý thuyết mã, các thao tác mã hóa cơ
bản, khóa và thuật toán mã/giải mã.
1.1 Các khái niệm cơ bản của lý thuyết mã.
- Bản gốc là dữ liệu ban đầu, có thể được hiểu mà không cần sử dụng những
công cụ, những biến đổi đặc biệt nào. Bản gốc hay còn được gọi là bản rõ.
- Bản mã hóa là kết quả của việc áp dụng phương pháp mã hóa lên bản gốc.
Với bản mã hóa, ta không thể thu được thông tin đúng mà không áp dụng
những cách thức đặc biệt. Bản mã hóa chính là dữ liệu đã được mã hóa.
- Mã hóa là phương pháp ngụy trang để ấn dấu đi nội dung thực sự của dữ
liệu.
- Giải mã là phương pháp chuyển đổi bản mã thành bản rõ.
- Khoa học mật mã là khoa học nghiên cứu về việc tạo mã và giải mã.
- Khoa học phân tích mã là khoa học nghiên cứu các nguyên lý giải mã mà
không biết khóa.
- Lược đồ mã hóa là lược đồ mô tả cách thức mã hóa của người gửi và giải
mã của người nhận.
1.2 Các thao tác mã hóa cơ bản.
- Phép thế:
+ ) Caesar cipher:
Bản chất trong mã hóa của Ceasar là thay thế các ký tự trong thư bằng
các ký tự khác theo một nguyên tắc nào đó.
+) Monoalphabetic cipher:
- Trong mật mã dịch chuyển của Ceasar. Ta có 25cách dịch chuyển khác
nhau, mỗi cách dịch chuyển cho một loại mã khác nhau.
- Thực ra với ý tưởng là sự thay thế, ta không chỉ hạn chế với phép dịch
chuyển trong bảng chữcái, khi đó bảng chữcái mật mã là bất kỳsựsắp xếp
lại nào của bảng chữcái thường. Nhưthếvới 26 chữcái ta sẽcó nhiều hơn
4 x 1026 bảng chữcái mật mã khác nhau.
- Monoalphabetic cipher là loại mã hóa thay thếchỉsửdụng một bảng chữ
cái mật mã đểthay thếcác ký tựtrong thông điệp gốc.
+) Substitution ciphers(mã thế)


Mã thế(substitution cipher) là hình thức mã hóa mà các ký tự trong
thông điệp ban đầu được thay thếbởi các ký tự khác hoặc ký hiệu mới
theo một nguyên tắc nhất định.
- Phép chuyển vị:
+) Mã Rail Fence.
Mã Rail Fence còn được gọi là mã zig zag là một hình thức của mã
chuyển vị
• Thông điệp được viết lần lượt từ trái qua phải trên các cột(rail) của
một hàng dào tưởng tượng theo đường chéo từ trên xuống dưới.
1
• Theo đường chéo từ dưới lên khi đạt tới cột thấp nhất.
• Và khi đạt tới cột cao nhất, lại viết theo đường chéo từtrên xuống.
Cứ lặp lại như thế cho đến khi viết hết toàn bộ nội dung của thông
điệp.
+) Mã Transposition.
Mã chuyển vị là hình thức mã hóa mà các ký tự trong thông điệp ban đầu
được hoán đổi vị chí cho nhau. Với những thông điệp ngắn, chẳng hạn
Như thông điệp chỉ có một từ thì phương pháp này không đủ an toàn.
1.3 Khóa và thuật toán mã/giải mã.
• Thuật toán mã hóa(giải mã) là một thủ tục thể hiện cách thức xử lý bản
gốc(bản mã hóa) thành bản mã hóa(bản gốc). Thuật toán mã hóa sẽ là một
sự tổ hợp các phép thế và phép chuyển vị theo một trình tự nhất định.
• Thuật toán mã hóa được thể hiện như một hàm toán học với tham số vào là
bản gốc(M) và khóa(k). Được ký hiệu như sau: E(M,k).
• Thuật toán giải mã được thể hiện như một hàm toán học với tham số vào là
bản mã hóa(C) và khóa(k). Được ký hiệu như sau: D(C,k).
• Khóa là một tham số đặc biệt thường được giữ bí mật. Khóa giúp cho sự
mã hóa(giải mã) không lệ thuộc hoàn toàn vào thuật toán. Với cùng một
bản gốc, một thuật toán, mã hóa với các khóa khác nhau sẽ cho ra bản mã
khác nhau(tương tự như vậy với giải mã).

• Số lượng khóa khả dĩ hay tiềm năng của một thuật toán mã hóa(giải mã) là
số lượng khóa có thể được lựa chọn như một tham số cho thuật toán mã
hóa(giải mã).Số lượng khóa khả dĩ là tùy thuộc vào thuật toán mã hóa(giải
mã).
Chú ý: nguyên lý Kerckhoff được đưa ra: “ Sự an toàn của một hệ thống mật
mã không phải phụ thuộc vào việc giữ bí mật thuật toán mật mã. Sự an toàn
này chỉ phụ thuộc vào việc giữ bí mật khóa.”
Câu 2: Trình bày về mã đối xứng.
Mã đối xứng là loại mật mã mà việc mã hóa và giải mã có thể sử dụng chung
một khóa, người mã hóa cũng có thể giải mã và ngược lại người giải mã
cũng có thể mã hóa. Mã đối xứng còn được gọi là mã một khóa.
+) Mã dịch chuyển Caesar:
- Ta lần lượt đánh chỉ số cho các chữ cái bắt đầu từ 0.
- Khi đó mã dịch chuyển Caesar có thể mô tả một cách hình thức như
sau:
+ k là một số nguyên từ 0 tới 25 được gọi là khóa.
+ Hàm mã hóa: E(k,p)=(p+k) mod 26 với p là chỉ số của ký tự cần mã
hóa.
2
+Hàm giải mã: D(k,c)=|c-k| mod 26 với c là chỉ số của ký tự cần giải
mã.
+ Như vậy số lượng khóa tiềm năng của mã dịch chuyển Caesar là
25(do k=0 không có giá trịmã hóa).
+) Mã Hill.
- Ta cũng lần lưlượt đánh chỉ số cho các chữ cái bắt đầu từ 0.
- Mã Hill dựa trên ý tư tưởng mã hóa từng nhóm các ký tự.
Cụ thể như sau:
–k là một ma trận vuông cỡ n(n là số lượng ký tự trong một nhóm).
– Hàm mã hóa: E(k,p)=k.p mod 26 với p là ma trận(1xn) với
các phần tử là chỉ số của n ký tự liên tiếp trong bản gốc.

–Hàm giải mã: D(k,c)=k1c mod 26 với k1 là ma trận đảo của
k và c là ma trận(1xn) mà mỗi phần tử là chỉ số của n ký tự liên tiếp trong
bản mã hóa.
 Để đảm bảo tính bí mật của thông tin, một hệ mã hóa đối
xứng phải đáp ứng hai yêu cầu sau:
• Thuật toán mã hóa phải mạnh – đảm bảo rằng đối phương không thể giải
mã mà không biết khóa mã.
• Khóa mã phải được giữ bí mật. Do đó mà mã đối xứng còn được gọi là mã
khóa bí mật.
 Để có thể thực hiện trao đổi thông tin bí mật bằng mã xứng, người sử
dụng phải:
- Thống nhất với nhau thuật toán mã hóa và giải mã được sử dụng trong
quá trình trao đổi.
- Thống nhất với nhau khóa bí mật sẽ đưđược sử dụng trong quá trình
trao đổi. Cũng bởi vậy mã đối xứng còn được gọi là mã thỏa thuận.
 Việc phải thống nhất khóa bí mật là nhược điểm lớn của mã đối xứng.
Nhược điểm này được gọi là vấn đề phân phối khóa.
- Mã khóa bí mật, mã thỏa thuận, mã một khóa là các tên Khác nhau của
mã đối xứng.
- Mã đối xứng chỉ xử dụng một khóa duy nhất đã thỏa thuận trước trong cả
tiến trình mã hóa và giải mã.
- Tất cả các mã cổ điển đều là mã đối xứng – mã đối xứng có một lịch sử dài
và thú vị.
- Mã đối xứng là loại mã duy nhất cho đến khi xuất hiện khóa công khai vào
năm 1975.
Câu 3: Trình bày mã bất đối xứng.
+) Vấn đề phân phối khóa.
• Như ta đã biết vấn đề chính yếu tồn tại lâu dài trong mã hóa đối xứng là:
3
Làm như thế nào để trao đổi khóa một cách bí mật giữa những người, những

tổ chức mong muốn được trao đổi với nhau một cách bí mật?.
• Vấn đề này được gọi là vấn đề phân phối khóa.
Cái khó của vấn đề là tồn tại một nghịch lý giữa sự bí mật và sự công
khai. Khóa mã rõ ràng là bí mật nhưngnhưng lại muốn đưđược biết bởi một
số cá nhân hay tổ chức.
+) Giải pháp phân phối khóa.
Cuối cùng thì giải pháp cho vấn đề phân phối khóa được gọi là Lược đồ trao
đổi khóa Diffie-Hellman-Merkle . Lược đồ cho phép thiết lập một kênh trao
đổi khóa bí mật trên hệ thống công cộng.
 Lược đồ trao đổi khóa Diffie-Hellman-Merkle.
A và B thống nhất với nhau hai số Y và P: (7,11).
A và B chọn hai số ngẫu nhiên x và z : (3,6).
A tính α= Yx mod P : 73 mod 11=2.
B tính β= Yz mod P : 76 mod 11=4.
A gửi α cho B.
B gửi β cho A
A Tính βx mod P : 43 mod 11 = 9.
B Tính αz mod P : 26 mod 11 = 9
Thật kỳ lạ là A, B đều tính ra số 9. Đó chính là khóa mà A,B sẽ sử dụng
để trao đổi thông tin với nhau một cách bí mật.
 Alice Alice và Bob ra công khai.
Diffie đã đưa ra ý tưởng mã hóa khóa công khai.
– Sử dụng một cặp khóa: một khóa công khai và một khóa
riêng.
– Một trong hai khóa có thể được sử dụng để mã hóa và khóa
còn lại để giải mã.
 Tính an toàn của mã hóa khóa công khai.
• Cũng như với mã hóa đối xứng, mã hóa khóa công khai cũng luôn phải
đương đầu với tấn công vét cạn. Do đó tính an toàn của khóa công khai
cũng phải dựa trên số lượng khóa tiềm năng.

• Tính an toàn của mã hóa khóa công khai phụ thuộc vào tính khó của
những vấn đề tính toán.
Do dựa trên tính khó của vấn đề tính toán, nên các thuật toán mã hóa
khóa công khai thường phải thao tác trên các con số khá lớn để đảm bảo
vấn đề tính toán có độ khó đủ để không có lời giải khả thi. Cũng chính vì
vậy các thuật toán mã hóa khóa công khai thường chạy chậm.
 Ứng dụng của khóa công khai
- Mã hóa giúp đảm bảo tính bí mật của thông tin.
- Làm nền tảng cho chữ ký điện tử.
4
- Được sử dụng để trao đổi khóa.
Câu 4: Trình bày về RSA.
RSA: Mã hóa khóa công cộng.
- Là mã công khai được biết đến nhiều nhất và sử dụng rộng rãi nhất.
- Dựa trên lũy thừa trên trường hữu hạn các số nguyên modulo nguyên tố.
- Phép lũy thừa cần O((log n)3) phép toán (dễ)
- Sử dụng các số rất lớn 1024 bit.
- Tính an toàn dựa vào độ khó phân tích ra thừa số các số lớn. Lũy thừa
yêu cầu O(e^log n log log n) phép toán.
 Lược đồ sinh khóa
- Mỗi người sử dụng sẽ được tạo một RSA publickey và một
RSA privatekey tương ứng.Khóa được tạo theo thuật toán
sau:
Algorithm: Key generation cho RSA public-key encryption
- Sinh ra hai sốnguyên tố“lớn” p và q phân biệt và có cỡ
Tính n=p.q do đó Ø(n)=(p-1).(q-1).
Chọn số ngẫu nhiên e sao cho: 1<e< Ø(n) và gcd(e, Ø(n))=1.
Tính số nguyên d sao cho: 1<d <Ø(n) và e.d ≡1 mod Ø(n).
Publickey là PU{e,n} và Privatekey là PR{d,n} hoặc PR{d,p,q}
RSA Public-key encryption

 Lược đồ mã hóa
Khi đối tượng B muốn gửi một thông điệp cho đối tượng A.
Sau khi đã nhận được khóa công khai(RSA Publickey). B có
thể tiến hành mã hóa theo thuật toán sau:
Algorithm: RSA Publickey encryption
Thi hành việcxácnhận publickey (n,e).
Đặc tả thông điệp cần mã hóa như một số nguyên m: m thuộc [0,n-1].
Tính c = m
e
mod n.
Gửi cho c cho A (c chính là cipher text).
 Lược đồ giải mã.
Khi A nhận được do B gửi đến.A sẽ sử dụng private key tương
ứng của mình đề giải mã thông điệp theo thuật toán sau:
Algorithm RSA private-key Decryption
m= c
d
mod n
RSA Public-key encryption
Chứng minh: Ta có e.d đồng dưvới 1 modul Ø(n) do vậy ta có: e.d= 1+k.
Ø(n).
* Khi đó nếu gcd(m,p)=1 thì theo định lý Fermat ta sẽcó: m
p-1
đồng dư với 1
modul
5
p vậythì: m
1+k(p-1)(q-1)
≡m (mod p) => m
e.d

≡m (mod p)
* Nếugcd(m,p) =p thì m
e.d
≡m (mod p).
Tương tự ta chứng minh: m
e.d
≡m (mod q).
Cuối cùng do p,q là hai số nguyên tố phân biệt nên ta có m
e.d
≡m (mod n).
Vậyc
d
= (m
e
)
d
≡m (mod n).Tức m= (m
e
)
d
mod n=c
d
mod n . (đpcm)
 Sinh khoá RSA
- Người sử dụng RSA cần phải
Xác định ngẫu nhiên 2 số nguyên tố.
Chọn e hoặc d và tính số kia.
- Các số nguyên tố p, q không dễ suy ra nếu biết tích n = p.q
Như vậy p, q cần phải là các sốđủlớn.
p, q thường được đoán và qua kiểm tra xác suất số nguyên tố.

Các số e và d là nghịch đảo nhau, có thể dùng thuật toán nghịch
đảo để tính số nọ khi biết số kia.
 An toàn của RSA.
Có các cách tấn công
– Tìm kiếm khoá bằng phươngphương pháp vét cạn (không khả thi với
kích thước đủ lớn của các số).
– Tấn công bằng toán học dựa vào độ khó việc tính ø(n) bằng cách phân
tích n.
Tấn công toán học có 3 dạng
– Phân tích n = p.q, sau đó tính ø(n) và d.
– Tìm n trực tiếp và tính d.
– Tìm d trực tiếp.
- Hiện tại tin rằng tất cả đều tương đương với bài toán phân tích
thừa số nguyên
– Có các bước tiến chậm theo thời gian
– Hiện tại cho rằng RSA 1024 hoặc 2048 là an toàn
– Tấn công thời gian (trong khi giải mã).
+ Paul Kocher chỉ ra rằng kẻ thám mã có thể xác định được khoá riêng
nếu theo dõi thời gian máy tính cần để giải mã các bản tin.
+ Tấn công thời gian không chỉ áp dụng cho RSA, mà cả với các hệ mã
công khai khác.
+ Tấn công thời gian giống như kẻ cướp đoán sự an toàn bằng cách quan
sát một người nào đó trong bao lâu chuyển quay điện thoại từ số này
sang số khác.
– Tấn công với bản mã chọn trước.
+ RSA có điểm yếu với tấn công bản mã chọn trước.
+ Kẻ tấn công chọn bản mã và đoán bản rõ được giải mã.
+ Chọn bản mã để khám phá RSA cung cấp thông tin để thám mã.
6
+ Có thể tính với bộ đệm ngẫu nhiên của bản rõ. Hoặc sử dụng bộ đệm

mã hoá phả xứng (OASP).
Câu 5: Mã hóa RABIN
 Cơ sở toán học
Cũng như các giải pháp mã hóa khác, Rabin public-key encryption cơ
bản dựa trên hai vấn đề tính toán lớn là:
- Vấn đề thừa số nguyên(Integer factorization problem).
-Vấn đề SQ-Root(Square roots modulo composite n).
Đưa ramột hợp số n và một số a thuộc tập Q
n
(tập các số thặng dư bậc hai
modulo n).Vấn đề đặt ra là tìm căn bậc hai của a modulo n tức là tìm số x
sao cho: x
2
đồng dư với a modulo n.
 Lược đồ sinh khóa
Mỗi thực thể được tạo một publickey và một privatekey tương ứng.Khóa
được tạo theo thuật toán sau:
Algorithm: Key generation cho Rabin-key encryption
Sinh ra hai sốnguyên tố“lớn” p va q phân biệt và có cỡ“tuơng tự nhau”
Tính n=p.q
Publickey là n và Privatekey là (p,q)
 Lược đổ mã hóa:
Khi đối tượng B muốn gửi một thông điệp cho đối tượng A. B tiến hành
mã hóa như sau:
Algorithm Rabin Publickey encryption
Thi hành việc xác nhận publickey n
Đặc tả thông điệp cần mã hóa như một số nguyên m:m thuộc [o,n-1]
Tính c=m
2
mod n

Gửi cho c cho A(c là cipher text)
 Lược đổ giải mã:
Khi đối tượng A nhận được thông điệp từ B. A tiến hành giải mã như
sau:
Algorithm Rabin Publickey dencryption
Trước hết cần tìm bốn số m
1
,m
2
,m
3
và m
4
là cănbậc hai của c modulo
n.Thông điệp được gửi có thể là một trong bốn số m
1
,m
2
,m
3
,m
4
.A bằng
một phương pháp nào đó có thể quyết định được đâu là m(plain text
thực sự).
Câu 6: Mã hóa khóa công khai ELGAMAL.
 Cơ sở toán học.
7
ELGamal public-key encryption key encryption còn được xem là Diffie-
Hellman key agreement là một kỹ thuật xây dựng giao thức phân phối

khóa.
- Tính bảo mật của nó cơ bản dựa trên tính “rắn” của vấn đề tính toán là :
+ The discrete logarithm problem
The discrete logarithm problem là một vấn đề tính toán được áp dụng khá
nhiều trong các giải pháp bảo mật.The discrete logarithm problem liên
quan tới một số vấn đề toán học đặc thù như:
Vần đề có phát biểu toán học như sau:
Cho G là một nhóm cyclic hữu hạn sinh bởi phần tử sinh α cấp n và cho β
thuộc G. The discrete logarithm của β với cơ số α là log α β là số nguyên
duy nhất x sao cho 0 ≤ x ≤ n-1 và β=α
x
+ The Diffie-Hellman problem.
Vấn đề này có phát biểu toán học đơn giản như sau:
Cho một số nguyên tố p,α là một phân tử sinh của Z*
p
.Đồng thời cho α
a

mod p và α
b
mod p.Vấn đề đặt ra là tìm α
a.b
mod p.
Vấn đề tổng quát hơn của DHP là GDHP(Generalized Diffie-Hellman
Problem) có phát biểu toán học như sau:
Đưa ra một nhóm cyclic hữu hạn G với phần tử sinh α và các phân tử α
a

b
.Vấn đề đặt ra là tìm:α

a.b
 Lược đồ sinh khóa.
Mỗi thức thể được tạo một publickey và một privatekeytương ứng.Khóa
được tạo theo thuật toán sau:
Algorithm: Key generation cho EL Gmal-key encryption
Sinh ngẫu nhiên số nguyên tố p và phần tử sinh α của nhóm nhân Z*
p
của
modulo p.
Chọn một số ngẫu nhiên a sao cho: 1≤a ≤p-2.Tính α
a
mod p
Publickey là : (p,α,α
a
) và Privatekey là : a.
 Lược đổ mã hóa:
Khi đối tượng B muốn gửi một thông điệp cho đối tượng A. B tiến hành
mã hóa như sau:
Algorithm EL Gamal Publickey encryption
Thi hành việcxácnhận publickey (p,α,α
a
).
Đặc tả thông điẹpcần mã hóa như một số nguyên m:m thuộc [o,p-1]
Chọn mộtsố nguyên ngẫu nhiên k sao cho 1 ≤k ≤p-2 .
Tính γ=α
k
mod p và δ=m.(α
a
)
k

mod p.
Gửichoc =(γ,δ) cho A (c là cipher text)
 Lược đổ giải mã.
Khi đối tượng A nhận được thông điệp từ B. A tiến hành giải mã như
sau:
8
Algorithm EL Gamal Publickey dencryption
Sử dụng private key a tính γ

p-1-a mod p
Khôi phục plaintext như sau:m= (γ
-a
).δmod p.
Chứng minh:Như miêu tả việc mã hóa ta có : (γ
-a
).δ≡α
–a.k
.m.α
a.k
≡m
(mod p)
Câu 7: Xét trên một phương diện nào đó, mã khối tổng quát tương
tự như một mật mã một bảng chữ cái cổ điển? Anh chị hãy chỉ ra sự
tương đương đó? Từ đó giải thích vì sao mã khối tổng quát lại tỏ ra
an toàn hơn so với mã một bảng chữ cái cổ điển? Theo anh chị thì
mã khối có an toàn tuyệt đối không, giải thích vì sao?
Trả lời:
• Chứng minh mã khối tổng quát tương tự như một mật mã một bảng
chữ cái hiện đại:
Để chứng minh trước hết, ta giả thiết mỗi khối có cỡ là n bit. Khi đó:

Bảng chữ cái gốc chính là bảng chữ cái mà mỗi chữ cái là một bộ n bits
Quá trình mã hóa khối đơn giản có thể hiểu là thay thế n bits ban đầu
bằng n bits mã hóa.Vậy nên nó cũng giống như việc thay thế chữ cái này
thành chữ cái khác.
Như thế phương thức mã hóa có thể được diễn đạt thông qua một bảng
chữ cái mã hóa mà ở đó mỗi chữ cái cũng là một bộ n bits
=> Như vậy mã khối tổng quát tương đương với mã một bảng chữ cái cổ
điển
• Mã khối tổng quát tỏ ra an toàn hơn mã môt bảng chữ cái cổ điển:
- Mã một bảng chữ cái:Việc mã hóa được tiến hành bằng cách thay thế
một chữ cái trong bản rõ thành một chữ cái trong bản mã.Như vậy số
lượng hoán vị của 26 chữ cái là 26!.Đây cũng chính là số lượng khóa
của phương pháp này. Vì 26! Là khá lớn nên khó có thể tấn công vét
cạn tuy nhiên nó bị tấn công bằng cách phân tích tần suất các chữ cái
tiếng anh:Trong ngôn ngữ TA tần suất sử dụng của các chữ cái không
đều nhau, chữ E được sử dụng nhiều nhất, còn các chữ ít được sử
dụng thường là Z,Q,J. Tương tự như vậy đối với cụm hai chữ cái và
ba chữ cái, cụm chữ TH được sử dụng nhiều nhất,
- Mã khối tổng quát: Mã hóa theo từng khối, mỗi khối có kích thước là
n bits. Với ngõ vào là n bits => sẽ có 2
n
bản rõ khác nhau,và cũng sẽ
có 2
n
bản mã khác nhau, để có thể giải mã được, mỗi bản rõ này cần
tạo ra 1 bản mã duy nhất.Như vậy số phép biến đổi là 2
n
!. Khi n càng
lớn thì mã khối tổng quát càng an toàn vì không thể tìm ra mối liên hệ
thống kê và không thể vét cạn vì hàm E tăng lên rất nhanh

 Mã khối tổng quát tỏ ra an toàn hơn mã một bảng chữ cái
9
• Mã khối không an toàn tuyệt đối vì:
Khi n lớn rõ ràng là rất an toàn nhưng chưa hẳn khả thi với nhà lập mã:
- Vì để tạo ra hàm E tổng quát => khóa đơn giản chính là mô tả của
hàm E.
- Khi đó với n lớn => để mô tả hàm E sẽ rất phức tạp.
Chẳng hạn: với n=64
Để mô tả hàm E cần 64*2
64
=2
70
bits
Câu 8: Anh chị hãy trình bày ý tưởng xấp xỉ mã hóa khối của Feistel,
từ đó xác định các vấn đề cơ bản phải quan tâm khi thiết kế một mã
khối dựa trên ý tưởng chứa Horst Feistel.
Trả lời:
• Ý tưởng xấp xỉ mã hòa khối của Horst Feistel:
- Theo lý thuyết của Shannon để có môt giải thuật mã hóa đủ mạnh, cần xây
dựng từ hai thao tác cơ bản:
1. confusion: Sự rối loạn là thuật ngữdùng để chỉ những kỹ thuật nhằm làm
cho quá trình tìm kiếm mối quan hệ thống kê giữa khóa và bản mã trở nên
“không thể” và được thể hiện qua phép thay thế(substitution)
2. diffusion: Sự khuyếch tán là thuậtngữ dùng để chỉ những kỹ thuật nhằm
làm cho quá trình tìm kiếm mối quan hệ thống kê giữa bản gốc và bản mã
trở nên “không thể” và được thể hiện qua phép hoán vị
- Horst Feistel đề nghị sủ dụng mã tích thay vì các hàm tuyến tính
- Ông đề nghị sử dụng luân phiên phép thế và phép hoán vị để tạo nên một
thuật toán mã hóa mạnh
- Horst Feistel thực sự thành công trong việc thực hiện ý tưởng S-P Network

của Claude Shannon
* Cấu trúc của mã Feistel:
1. Mã hóa
- Một khối của plaintext(PB) sẽ chạy qua n vòng mã hóa để sinh ra một khối
của ciphertext(CB).
- Đầu tiên PB được chia làm 2 phần ký hiệu là:R
0
,L
0.
-Khoá mã hóa K sẽ được sử dụng để sinh ra n khóa con: k
i
với 1≤i≤n
-Tại vòng mã hóa i:
2. Giải mã:
Để giải mã quá trình được thực hiện qua các vòng theo thứ tự ngược lại:
10
* Mô hình mã hóa Feistel
Nhận xét:
- Hàm thế được áp dụng trên nửa trái(F và phép XOR)
- Các vòng có cùng cấu trúc nhưng được đặc biệt hóa bởi khóa con k
1
- Cuối cùng phép hoán vị được thực hiện bằng cách đảo ngược vị trí hai
nửa
b) từ đó xác định các vấn đề cơ bản phải quan tâm khi thiết kế một mã
khối dựa trên ý tưởng chứa Horst Feistel.
- Tăng kích thước khối sẽ làm tăng độ an toàn , nhưng làm giảm tốc độ
mã.
- Tăng kích thước khóa sẽ làm tăng độ an toàn, tìm khóa khó hơn nhưng
làm chậm mã.
- Tăng số vòng làm tăng độ an toàn nhưng làm chậm mã.

- Phát sinh khóa con càng phức tạp làm cho việc thám mã khó hơn nhưng
làm chậm mã.
- Hàm vòng F càng phức tạp làm cho việc thám mã khó hơn nhưng làm
chậm mã.
- Phần mềm mã hóa và giải mã nhanh và khó thám mã là tiêu chí hay
được đề cập đến đối với ứng dụng và kiểm nghiệm thực tế.
- Ứng với các hàn F và thuật toán sinh khóa con khác nhau thì ta có các
phương pháp mã hóa khác nhau,
11
Câu 9: Trình bày cấu trúc Feistel Cipher.
Được xây dựng dựa trên ý tưởng của Feistel.
• Một khối của plaintext(PB) sẽ chạy qua n vòng mã hóa để sinh ra một
khối của ciphertext(CB).
• Đầu tiên PB đưđược chia làm 2 phần ký hiệu là: R
0
,L
0
.
• Khóa mã hóa K sẽ được sử dụng để sinh ra n khóa con(subkey): k
i
với
1 ≤ i ≤ n.
• Tại vòng mã hóa i:
- Input : R
i-1
,L
i-1
( là kết quả của vòng i-1).
– Output : R
i

= F(R
i-1
,k
i
) xor L
i-1
.
L
i=
R
i-1
.
CB = R
n
|| L
n
.
+) Nhận xét:
• Hàm thế được áp dụng trên nửa trái(F và phép xor).
• Các vòng có cùng một cấu trúc nhưng được đặc biệt hóa bởi khóa con
k
i
.
• Cuối cùng phép hoán vị được thực hiện bằng cách đảo vị trí hai nửa.
 Cấu trúc của Feistel bản chất là việc thực hiện luân phiên các chức
Năng rối loạn và khuyếch tán.Cấu trúc của Feistel là một cái đặt cụ thể
cho ý tưởng của Claude Shannon.
Câu 10 : Hãy trình bày một cách ngắn gọn mật mã DES( cả mã hóa
và giải mã). Hãy cho biết DES được xây dựng trên ý tưởng mã khối
tổng quát hay ý tưởng xấp xỉ của Horst Feistel.Giải thích vì sao?

Trả lời:
Trong phương pháp DES, kích thước khối là 64 bit. DES thực hiện mã hóa
dữ liệu qua 16 vòng lặp mã hóa, mỗi vòng sử dụng một khóa chu kỳ 48 bit
được tạo ra từ khóa ban đầu có độ dài 56 bit. DES sử dụng 8 bảng hằng số
S-box để thao tác.
Quá trình mã hóa của DES có thể được tóm tắt như sau: Biểu diễn thông
điệp nguồn xP∈ bằng dãy 64bit. Khóa k có 56 bit. Thực hiện mã hóa theo
ba giai đoạn:
1. Tạo dãy 64 bit 0x bằng cách hoán vị x theo hoán vị IP (Initial
Permutation).
Biểu diễn gồm 32 bit bên trái của
gồm 32 bit bên phải của x0.
12
2. Thực hiện 16 vòng lặp từ 64 bit thu được và 56 bit của khoá k (chỉ sử
dụng 48 bit của khoá k trong mỗi vòng lặp). 64 bit kết quả thu được qua mỗi
vòng
lặp sẽ là đầu vào cho vòng lặp sau. Các cặp từ 32 bit
được xác định theo quy tắc sau:
với ⊕ biểu diễn phép toán XOR trên hai dãy bit, là các dãy 48
bit phát sinh từ khóa K cho trước (Trên thực tế, mỗi khóa Ki được phát sinh
bằng cách hoán vị các bit trong khóa K cho trước).
3. Áp dụng hoán vị ngược đối với dãy bit , thu được từ y
gồm
64 bit. Như vậy
Hàm f được sử dụng ở bước 2 là hàm có gồm hai tham số: Tham số thứ nhất
A là một dãy 32 bit, tham số thứ hai J là một dãy 48 bit. Kết quả của hàm f
là một dãy 32 bit. Các bước xử lý của hàm như sau: Tham số thứ
nhất A (32 bit) được mở rộng thành dãy 48 bit bằng hàm mở rộng E. Kết quả
của hàm là một dãy 48 bit được phát sinh từ A bằng cách hoán vị theo
một thứ tự nhất định 32 bit của A, trong đó có 16 bit của A được lặp lại hai

lần trong .
Thực hiện phép toán XOR cho hai dãy 48 bit và J, ta thu được một dãy
48 bit B. Biểu diễn B thành từng nhóm 6 bit như sau: .
Sử dụng tám ma trận , mỗi ma trận Si có kích thước 4x16 và
mỗi dòng của ma trận nhận đủ 16 giá trị từ 0 đến 15. Xét dãy gồm 6 bit
được xác định bằng giá trị của phần tử tại dòng r cột c
của Sj, trong đó, chỉ số dòng r có biểu diễn nhị phân là , chỉ số cột c có
biểu diễn nhị phân là . Bằng cách này, ta xác định được các dãy 4
bit
13
Tập hợp các dãy 4 bit Cj lại, ta có được dãy 32 bit . Dãy
32 bit thu được bằng cách hoán vị C theo một quy luật P nhất định chính là
kết quả của hàm
 Giải mã DES.
• Giải mã đơn giản là áp dụng thuật toán mã nhưng với các khóa được sử
dụng theo chiều ngược lại. (k
16
->k
1
).
• DES gần giống như việc giữ thư bí mật bằng cách bỏ thư vào hòm và
khóa lại. Sau đó hòm thu được lại bỏ vào hòm lớn hơn và khóa lại, cứ
như vậy cho đủ 16 hòm thì thu được DES.
a) DES được xây dựng trên ý tưởng xấp xỉ của Horst Feistel.
- Được xây dựng trên ý tưởng một khối của plaintext(PB) sẽ chạy qua n
vòng mã hóa để sinh ra một khối của ciphertext(PC).
- Trong cấu tạo của DES sử dụng 2 nửa 32 bit trái và 32 bit phải. Như
đối với mọi mã Feistel, nửa phải của vòng trước được chuyển qua nửa
trái của bước sau và lấy đầu ra của hàm vòng trên nửa phải và khóa
con cộng cơ số 2 với nửa trái. Tại vòng mã hóa i:

Input : R
i-1
, L
i-1
Ouput: R
i
= F(R
i-1
,K
i
),L
i
= R
i-1
.
Vì:
• DES có cấu trúc tương tự như cấu trúc của Feistel nếu bỏ đi hàm IPvà
IP
-1
ở đầu và cuối.
Câu 11: Tính an toàn của DES.
Trả lời:
+) Hiệu ứng tuyết lở.
• Là một tính chất mong muốn của các mật mã.
• Nếu thay đổi một bit ở đầu vào hoặc khóa thì đầu ra sẽ thay đổi trên
nhiều bits (1/2).
• DES có thể hiện rất tốt tính chất này.
+) Cỡ của khóa:
• Với 56 bits khóa, cho 2
56

≈7.2 *10
16
khóa tiềm năng.
• DES bị tấn công vét cạn:
+) Thám mã:
14
• Có nhiều nghiên cứu về thám mã trên DES.
• Lợi dụng những yếu điđiểm trong thiết kế của DES(S-box).
• Sử dụng kết quả thống kê=> cần một lượng thông tin lớn.
Một số hình thức chính
- Thám mã sai phân
- Thám mã tuyến tính
- Tấn công khóa liên kết.
+) Timing Attack
• Dựa trên cơ sở là: việc mã và giải mã cần một lượng thời gian khác
nhau với những input khác nhau.
• DES là hoàn hảo để đối phó với hình thức tấn công này.
• DES có thể kháng cự được với hình thức tấn công Differential
cryptanalysis.
• Việc sử dụng các S-box và các hàm hoán vị (P) làm cho DES mạnh hơn
Lucifer trong việc đối phó với thám mã sai phân.
Câu 12: Trình bày AES:
+) Mã hóa và giải mã AES.
- input cho cả mã hóa và giải mã là các khối 128 bits.
- khóa có cỡ là 128 bits.
 Add round key( thêm khóa vòng)
• XOR trạng thái với 128 bit với khoá.
• Xử lý theo từng cột.
• Dễ tìm hàm ngưngược
• Thiết kế để đơnđơn giản nhất có thể:

+ Dạng mã Vernam với khoá mở rộng.
+ Đòi hỏi thêm một số bước tăng độ phức tạp/tính an toàn.
 Substitute Bytes
• Là một phép thế các bytes đơn giản.
• Sử dụng cách cài đặt dạng bảng<S-box>.
 Shift Row.
• Dịch vòng quanh trên mỗi hàng.
+ Hàng 1 không đổi.
+ Hàng 2 dịch quay vòng sang trái 1 bytes.
+ Hàng 3 dịch quay vòng sang trái 2 bytes.
+ Hàng 4 dịch quay vòng sang trái 3 bytes.
• Hàm ngược đơn giản chỉ là dịch sang phải.
• Do add round key thực hiện theo cột. Do đó bước này có vai trò hoán vị
các bytes giữa các cột.
+) Khóa mở rộng AES.
15
• Dùng khoá 128 bits(16 bytes) và mở rộng thành mảng gồm 44/52/60 từ
32 bits.
• Bắt đầu bằng việc copy khoá vào 4 từ đầu.
• Các nhóm 4 từ tiếp theo, mỗi từ được xây dựng dựa trên từ đứng trước
nó(w
i-1
) và từ của nhóm trước có vị trí tương ứng với nó (w
i-4
).
• Lưu ý từ đầu tiên trong nhóm = xor(g(w
i-1
),w
i-4
) các từ

còn lại trong nhóm đưđược tính = xor(w
i-1
,w
i-4
).
g là một hàm thực hiện liên tiếp: dịch trái, S-box, cuối cùng là xor với
một hằng số.
+) Cơ sở lý luận mở rộng khóa:
• Thiết kế chống các tấn công đã biết.
• Các tiêu chuẩn thiết kế bao gồm:
– Biết một phần khoá không đủ để biết nhiều hơnhơn.
– Phép biến đổi nghịch đảo đưđược.
– Nhanh đối với nhiều kiểu CPU.
– Sử dụng hằng số vòng để làm mất tính đối xứng.
– Khuếch tán bit khoá thành khoá vòng.
– Có đủ tính phi đối xứng để chống thám mã.
– Đơn giản trong việc giải mã.
Câu 13: Trình bày stream cipher?
Trả lời:
• Stream cipher xử lý plaintext theo từng bits hoặc theo từng nhóm nhỏ.
• Stream cipher được xây dựng như sau:
– Khóa đóng vai trò làm input cho một bộ sinh số giả ngẫu nhiên(PGN).
– Output của PGN được gọi là keystream.
– Keystream được tổ hợp với plaintext để tạo thành ciphertext.
Khi thiết kế stream cipher ta lưu ý hai yếu tố sau:
- Tính ngẫu nhiên của PNG khi sinh keystream.
- Key size.
Stream cipher đưđược chia thành hai loại:
- Stream cipher đối xứng và stream cipher bất đối xứng.
• Nếu PNG thỏa mãn những yêu cầu đặt ra trong thiết kế thì tính an toàn

của stream cipher là tương đương với block cipher.
• Cài đặt của stream cipher thường đơn giản và chạy nhanh hơn block
cipher.
• Stream cipher cần tránh việc sử dụng lại khóa.
• Nếu có được những tính chất của plaintext thì stream cipher không
được an toàn.
16
 Với những đặc điểm như vậy, Stream cipher thường được sử dụng
cho:
- Mã hóa các dữ liệu ngẫu nhiên.
- Những ứng dụng tương tác đòi hỏi thời gian mã và giải mã phải nhanh
như: mã hóa âm thanh, giọng nói.
Câu 14: Trình bày RC4:
Trả lời:
- Nền tảng của RC4 là phép hoán vị ngẫu nhiên.
- RC4 có cấu trúc đơnđơn giản; dễ để hiểu và phân tích.
- RC4 cho phép khóa K có cỡ từ 1- tới 256 bytes(8-1024 bits).
- RC4 sử dụng hai vector 256 bytes:
+ T là vector tạm thời và S là vector trạng thái.
- RC4 hoạt động như sau:
1. Khởi tạo vector S.
2. Khóa K được sử dụng để khởi tạo vector T.
3. Vector T được sử dụng để hoán vị S.
4. Thực hiện sinh keystream và mã hóa(giải mã).
+) sinh keystream(ks) và mã hóa
i,j = 0;
while (true) do
begin
i= (i+1) mod 256;
j = (j+Sơi]) mod 256;

swap(S[i],S[j]);
t = (S[i] + S[j]) mode 256;
ks = S[t];
end;
- Mã hóa đơn giản là sử dụng ks để xor với plaintext.
Câu 15: Chế độ thi hành mật mã khối là gì ? Nêu ngắn gọn chế độ ECB
và CBC? Phân tích ưu nhược điểm của 2 chế độ trên.
Trả lời:
+) Một chế độ thi hành là một kỹ thuật nhằm nâng cao hiệu quả của mật mã
khối cho một loại ứng dụng cụ thể.
+) Chế độ ECB-electronic code book(sách mật mã điện tử)
- ECB là chế độ đơn giản nhất, mỗi khối được mã hóa một cách riêng
rẽ, chung một khóa K cho tất cả các khối của plaintext.
- Khi dùng : truyền an toàn từng giá trị riêng lẻ.
- Mã hóa ECB
17
- Giải mã ECB
+) Ưu điểm của ECB.
- Đơn giản
- Không cần đồng bộ hóa giữa bên gửi và bên nhận.Nếu bên nhận
không nhận đủ các khối, vẫn có thể giải mã các khối nhận được.
- Các bit lỗi sẽ không được đưa vào các khối kế sau
- Vì các khối được mã hóa và giải mã hoàn toàn độc lập với nhau nên
ECB cho phép mã hóa và giải mã đồng thời nhiều khối(song song)
nếu có đủ phần cứng để thực thi
+) Nhược điểm của ECB
- ECB về bản chất giống hệt với mật mã bảng chữ cái cổ điển, chỉ có
điều bảng chữ cái của ECB phức tạp hơn.
- Các khối bản rõ giống nhau sẽ được ánh xạ thành khối bản mã giống
nhau(nếu dùng cùng 1 loại khóa) => dễ dàng tấn công bằng phương

pháp thống kê tần suất
- ECB dễ dàng bị phá nếu plaintext lớn và có tính cấu trúc rõ ràng, từ
đó ECB thường dùng để mã hóa những plaintext ngắn như khóa bí
mật.
- ECB song song hóa được ,có cấu trúc(quy luật) => độ an toàn yếu
+) Chế độ CBC- Cipher Block Chaining( chế độ dây chuyền mã khối)
- Trong mô hình CBC, bản mã của một lần mã hóa được sử dụng cho lần mã
hóa tiếp theo:
- Do đó để mã hóa khối đầu tiên, người ta dùng một khối dữ liệu giả được
gọi là vector khởi tạo (initialization vector – IV) và được chọn ngẫu nhiên:
18
-Để giải mã, tiến hành ngược lại:
- Người mã hóa và người giải mã phải dùng chung vector khởi tạo IV.
Vector khởi tạo
không cần giữ bí mật nên thường được gắn vào trước bản mã trước khi
truyền thông điệp
+) Ưu điểm CBC.
- Nội dung của bản mã Ci không chỉ phụ thuộc vào bản rõ Pi mà còn phụ
thuộc vào tất cả các bản rõ đứng trước và IV. Do đó nếu có hai bản rõ giống
nhau thì hai bản mã sẽ không giống nhau (do IV ngẫu nhiên). Điều này khắc
phục được hạn chế của mô hình ECB, từ bản mã người phá mã không thể
phát hiện ra những đặc tính thống kê của dữ liệu.
+)Nhược điểm của CBC
- Bản rõ Pi không chỉ phụ thuộc vào bản mã Ci mà còn phụ thuộc vào
bản mã Ci-1 đứng trước. Do đó nếu xảy lỗi trên đường truyền, chỉ cần một
bít bị hỏng thì dẫn đến không thể giải mã được bản mã đó và bản mã tiếp
theo sau
- Các bít lỗi sẽ bị đưa vào các khối tiếp theo
- Không song song hóa được
- Sự thay đổi của bản tin ở đâu đó sẽ kéo theo sự thay đổi của mọi khối

mã.
- Cần giá trị vecto ban đầu IV được biết trước bởi người gửi và người
nhận. Tuy nhiên nếu IV được gửi công khai , kẻ tấn công có thể thay
đổi bit đầu tiên và thay đổi cả IV để bù trừ.
Câu 16: Phân tích ngắn gọn chế độ CFB, OFB, CTR. Ưu và nhược
điểm của các chế độ.
Trả lời:
+) Chế độ CFB- Cipher Feddback ( mã phản hồi ngược)
19
- Mô hình CFB có thay đổi một chút so với mô hình OFB. Mô hình OFB
dùng s bít của khóa do bộ sinh khóa tạo ra để ghép với IV cho lần
mã hóa tiếp theo. Còn mô hình CFB dùng s bít của bản mã để ghép
với IV.
CFB encrytption:
CFB decrytption:
Do đó giống như mô hình CBC, có thể thấy rằng nội dung của bản mã Ci
không chỉ phụ thuộc vào bản rõ Pi mà còn phụ thuộc vào tất cả các bản
rõ đứng trước và IV. Ngược lại, đối với việc giải mã, bản rõ Pi không chỉ
phụ thuộc vào bản mã Ci mà còn phụ thuộc vào bản mã Ci-1 đứng trước.
+) Ưu và nhược điểm của CFB
- Được dùng khi dữ liệu đến theo byte/bit.
- Chế độ dòng thường gặp nhất.
- Giống CBC
+)Nhược điểm
- Giống CBC
+) Chế độ OFB- Outer FeeBack( phản hồi ngược đầu ra)
- Mô hình CTR là một mã dòng trong đó đơn vị mã hóa có kích thước
cố định là b bít, với b là kích thước mã khối. Để mã hóa với đơn vị mã hóa
có kích thước bất kỳ, mô hình OFB được đề xuất. Mô hình này có hai điểm
khác so với mô hình CTR:

 Chỉ dùng s bít đầu tiên của khóa sinh ra bởi bộ sinh khóa, với s là
kích thước đơn vị mã hóa dùng trong phép XOR.
 Để tăng thêm tính ngẫu nhiên của bộ sinh khóa, s bít này của khóa
được ghép vào vector khởi tạo IV cho lần mã hóa tiếp theo. Phép ghép được
20
thực hiện bằng cách đẩy trái IV s bít và đưa s bít của khóa vào s bít thấp của
IV.
OFB encrytption
:
OFB decrytption:
+)Ưu điểm của OFB
- OFB không song song hóa được => không có cấu trúc => an toàn hơn
CTR
- Về cơ bản OFB giống hệt với CFB.
- Cải tiến của OFB nhằm tránh việc phát triển lỗi từ một lỗi trong quá
trình truyền.
+)Nhược điểm:Giống với CBC
21
+) CTR- Couter ( bộ đếm CTR).
- Giống như OFB, nhưng mã giá trị đếm thay vì giá trị phản hồi tùy ý.
- CTR encrytption:
- Counter ban đầu được khởi tạo một giá trị nào đó. Sau mỗi khối được
mã hóa counter=counter+1 mod 2
b
với b là cỡ của block.
- CTR decrytption:
+)Ưu điểm của CTR
- Hard effeciency : CTR cho phép mã và giải mã các khối một cách song
song. CBC không thể thực hiện song song.
- Software effeciency: Do tận dụng được lợi thế xử lý song song nên

CTR sẽ chạy nhanh hơn.
- Xử lý : Nếu bộ nhớ cho phép và vẫn đảm bảo được sự an toàn thì các
output của khối mã hóa có thể được tính trước, từ đó mà tốc độ mã hóa sẽ
rất nhanh.
- Cho phép truy nhập ngẫu nhiên các khối.
+)Nhược điểm của CTR
- Về tính an toàn CTR không mạnh như các chế độ khác.
- CTR có cài đặt tương đối đơn giản do mã và giải mã là như nhau
- CTR song song hóa được ,có cấu trúc(quy luật) => độ an toàn yếu
- CTR có cài đặt tương đối đơn giản.
Câu 17: Trình bày hàm băm và hàm băm mật mã?
Trả lời:
+) Hàm băm.
22
• Định nghĩa
Cho hai miền D và R.
Một ánh xạ h: D -> R với |D|>|R|.
• Ứng dụng:
– Tìm kiếm nhanh(hash table).
– Error detection/correction.
– Cryptography: cryptographic hash function.
– Các ứng dụng khác.
• Các ứng dụng khác nhau yêu cầu những loại hàm băm khác nhau.
• Trong bối cảnh này, hash function có thể hiểu đơn giản là một ánh từ
một xâu bits bất kỳ tới một xâu bits có chiều dài cố định n.
• h: X -> Y với |X|>|Y|.
h: (0,1)* -> (0,1)
n
.
• Nếu tập X là hữu hạn thì h còn được gọi là hàm nén.

Ví dụ một hàm băm đơn giản:
– Input là m khối n bits.
- Output là xâu c độ dài n bits. c
i
= b
i1
XOR b
i2
XOR … XOR b
i(m-1)
XOR
b
im
- Trong đó:
c
i
là bit thứ i của output c.
b
ij
là bit thứ i của khối thứ j.
+) Hàm băm mật mã.
• Hàm băm có thể được sử dụng cho mục đích của khoa học mật mã.
• Với ứng dụng mật mã, h(m) được gọi là “dấu vân tay số” của m.
• Ứng dụng truyền thống và phổ biến của hàm băm mật
mã là đảm bảo sự bí mật của password.
(username,password)=(username,h(password))
• Ngày nay được sử dụng nhiều trong phân phối các gói phần mềm.
- Để đáp ứng được những yêu cầu bảo mật của ứng dụng mật mã, hàm
băm phải thỏa mãn các tính chất sau:
+ Phải chống tạo ảnh.

+ Phải chống tạo ảnh thứ 2.
+ Chống đụng độ, tìm được cặp có 2 giá trị băm bằng nhau.
- Trên cơ sở toán học , ta có:
Chống đụng độ, tìm được cặp có 2 giá trị băm bằng nhau => phải chống
tạo ảnh thứ 2=> phải chống tạo ảnh.
+ Chống đụng độ => chống tạo ảnh thứ 2.
Có thể tìm 1 tạo ảnh thứ 2 => có thể tìm 1 đụng độ.
Nếu ta có thể tìm được m’ là tạo ảnh thứ 2 của h(m) thì m và m’ là
một đụng độ.
23
+ Chống tạo ảnh thứ 2 => chống tạo ảnh.
Có thể tìm 1 tạo ảnh => có thể tìm 1 tạo ảnh thứ 2.
Đơn giản , giả thiết | h
-1
(y)| >1 với mỗi giá trị băm y. Có một thuật
toán xác suất A trả ra tạo ảnh của m với xác suất không nhỏ là p
Bằng cách gọi A như một hàm con, chúng ta có thể tìm tạo ảnh thứ 2
m với xác suất >= p/2
Định nghĩa : Một hàm băm được gọi là hàm băm mật mã nếu nó
chống được sự đụng độ.
 Xây dựng các hàm băm như thế nào?
h : {0,1}* -> {0,1}
n
?
• Về mặt lý thuyết, ta có thể xây dựng các hàm băm chống đụng độ
bằng các hàm hoán vị một chiều.
• Trên thực tế, hàm băm mật mã được xây dựng từ các hàm nén thông
qua một tiến trình gọi là: Merkle-Damgard’s construction.
f : {0,1}
n+r

-> {0,1}
n
 Để xây dựng hàm băm mật mã từ hàm nén.
h : {0,1}* -> {0,1}
n
xây dựng từ f : {0,1}
n+r
-> {0,1}
n
1. Với m Є {0,1}*, độn thêm các bits để độ dài của m sau khi độn
là bội của r.
Padding=10…0|m| với|m| là biểu diễn nhị phân chiều dài của m.
2. Tách m= m
1
m
2
m
k
với | m
i
| = r.
3. Gán v
0
= IV và v
i
=f( v
i-1
|| m
i
) với 1<= i <= k; IV là hằng (O

n
).
4. Giá trị băm h(m) = v
k
.
 Khi thiết kế hàm băm mật mã ta hướng tới các tiêu chí sau:
1. Đầu vào là một xâu bits có cỡ “ bất kỳ ”.
2. Output phải có cỡ cố định(n)
3. Hàm phải có tính khả thi.
4. Chống đụng độ bền vững.
Trên thực tế, cỡ của xâu bits input thường có cỡ hữu hạn trong một miền
[0;2
s
]. Độ lớn của s nói chung càng lớn càng “tốt”.
 Khi thiết kế hàm băm mật mã ta phải quan tâm tới độ lớn của
output(n).
- n phải đủ lớn để h có thể chống lại birthday attack.
- Birthday attack: sinh ra một tập message:
{m
1
,m
2
,…,m
k
} và kiểm tra h(m
i
)=h(m
j
).
- Birthday problem: trong một nhóm k người thì xác suất bắt gặp ít nhất 2

người có cùng ngày sinh là bao nhiêu?
Giải quyết vấn đề birthday?
P (365,k) = 1- 365!/ ( 365 –k)!(365)
k
k = 23 thì p sấp sỉ 0,5073; k = 100 thì p sấp sỉ 0,9999997.
24
 Birthday pradox.
Giải quyết vấn đề birthday tổng quát:
P (N,k) = 1- N!/(N-k)!(N)
k
> 1-e
-(k*(k-1))/2n
P(N,k)>=0,5=> k=1.18
căn n
 Birthday attack thành công với k= 2
n/2
- Birthday attack thành công là bởi xác suất có đụng độ tăng rất nhanh
theo k.
 Cỡ của message digest?
• n=64 => không an toàn. Năm 2004 đã phát hiện đụng độ trong
SHA-1.
• n tối thiểu là 128 bits.
• Ngày nay để đảm bảo an toàn, n được khuyến cáo tối thiểu là
160 bits.
Câu 18: Anh chị hãy trình bày tư tưởng chính của SHA – 512? Chứng
minh hoặc bác bỏ khẳng định SHA – 512 được xây dựng trên ý tưởng của
Merkle – Damgard.
Trả lời:
a) Tư tưởng chính của SHA – 512.
+) Một số tính chất của SHA – 512.

- Cỡ của thông điệp : 0<= l< 2
128
- Cỡ của khối : 1024 bits.
- Cỡ của giá trị băm của thông điệp : 512 bits.
- Cỡ của từ: 64 bits.
- Sử dụng 8 biến trung gian, mỗi biến là một từ 64 bits.
* Thuật toán hàm băm SHA-512 gồm 2 bước: tiền xử lý và tính toán giá trị
băm.
© Bước tiền xử lý bao gồm các thao tác:
o Mở rộng thông điệp
o Phân tích thông điệp đã mở rộng thành các khối m bit
o Khởi tạo giá trị băm ban đầu
© Bước tính toán giá trị băm bao gồm các thao tác:
o Làm N lần các công việc sau:
© - Tạo bảng phân bố thông điệp (message schedule) từ khối thứ i.
© - Dùng bảng phân bố thông điệp cùng với các hàm, hằng số, các thao
tác trên từ để tạo ra giá trị băm i.
o Sử dụng giá trị băm cuối cùng để tạo thông điệp rút gọn.
1. Tiền xử lý:
+) Padding message(Mở rộng thông điệp):
25

×