2. Agenda
- Giới thiệu
- Hàm băm (MD5, SHA-1, SHA-2,...)
- Mã hóa đối xứng (DES, 3DES,...)
- Mã hóa bất đối xứng (RSA)
- Chữ ký số
3. Giới thiệu
- Cha đẻ của mật mã học hiện đại là Claude Shannon.
- c = e(m, ke)
- d(m, kd) = m
4. Hàm băm
- Điều kiện
- Năm 2004, nhà toán học Trung Quốc Xiaoyun Wang và cộng sự đã chứng
minh rằng một số hàm băm được sử dụng rộng rãi lúc đó như MD4, MD5,
HACAL-128, RIPEMD,... là không đáp ứng được tiêu chí kháng đụng độ.
- Năm 2005, họ cũng chứng minh rằng hàm băm sử dụng phổ biến là SHA-
1 không kháng đụng độ mạnh như mọi người nghĩ và họ đã tìm ra phương
pháp để có 2 inputs cùng output.
5. Mã hóa đối xứng (DES)
- Data Encryption Standard là một phương thức mã hóa công khai được
công bố tại Mỹ vào 17-03-1975.
- Mã hóa từng block dữ liệu 64 bits.
- Khóa 64 bits (nhưng thực sự chỉ dùng 56 bits)
- DES không chống lại được những kiểu tấn công kiểu vét cạn
- 3DES
6. DES
- Gồm 2 lần hoán vị IP & FP (giải mã thì ngược
lại)
- 16 chu trình giống nhau
- Hàm Feistel (hàm f)
- IP & FP là 2 fixed matrix
8. Mã hóa bất đối xứng (RSA)
- Bất kỳ số nguyên a > 1 đều có thể viết được dưới dạng:
a = p1
a1p2
a2p3
a3...pt
at
Trong đó p1 < p2 < p3 < … < pt
Ví dụ:
85 = 5 x 17
91 = 7 x 13
1200 = 24 x 3 x 52
11011 = 7 x 112 x 13
- Thuật toán: Eratosthenes
9. RSA
- Alice và Bob thống nhất chọn chung một số nguyên tố q và một phần tử
sinh α.
- Alice chọn ngẫu nhiên một số xa ∈ {1, 2,..., q-1} rồi gửi cho Bob kết quả
Ya = αxa mod q
- Bob chọn ngẫu nhiên một số xb ∈ {1, 2,..., q-1} rồi gửi cho Alice kết quả
Yb = αxb mod q
- Alice tính khóa bí mật: K=(αxb)xa mod q = αxaxb mod q
- Bob tính khóa bí mật: K=(αxb)xa mod q = αxaxb mod q
10. RSA
Ví dụ:
- Alice và Bob chọn số nguyên tố chung là 353 và phần tử sinh α = 3
- Alice chọn Xa = 97 rồi gửi cho Bob giá trị kết quả 397 mod 353 = 40
- Bob chọn Xb = 233 rồi gửi cho Alice giá trị kết quả 3233 mod 353 = 248
- Cả Alice và Bob đều dễ dàng tính được K = 24897 mod 353 = 160 = 40233
mod 353
13. RSA - Example
- Cho các số nguyên tố p = 2357 và q = 2551
- Tính được:
- n = pq = 6012707
- ∅(n) = (p -1)(q - 1) = 6007800
- Chọn số nguyên e ∈ (0; ∅(n)) là 3674911
- d = e-1 mod ∅(n) = 422191
- Khóa công khai: (n, e) = (6012707, 3674911)
- Khóa bí mật: d = 422191
- Very large prime numbers