Professional Documents
Culture Documents
Họ và tên Nhiệm vụ
Nguyễn Văn Tiến( Nhóm trưởng) Slide+Word(Hàm băm và tấn công từ điển)
Nguyễn Thuần Huy Slide+Word(Cơ sở toán học)
Lê Xuân Tùng Slide+Word(Thuật toán Diffie-Hellman)
Vũ Hồng Hưng Slide+Word(Thuật toán Elgamal)
Vũ Văn Nhiệm Slide+Word(Thuật toán Elgamal)
Nguyễn Trường Bình Slide+Word(Thuật toán RSA)
Bùi Anh Dũng Triển khai code
Nguyễn Quang Hưng Triển khai code
Nguyễn Đình Huy Triển khai code
Đào Minh Hùng Triển khai code
1 Hàm băm
2 Tấn công từ điển
Một số thuật toán mật
3 mã khóa công khai
điển hình
1 Hàm băm
2 Tấn công từ điển
Một số thuật toán mật
3 mã khóa công khai
điển hình
I. Hàm băm
1. Giới thiệu về hàm băm Input data (M)
(Độ dài tùy ý , có thể là file, là text
Hàm băm là phương pháp lấy được một bộ phận message hoặc data block)
nhỏ của một thông điệp có sẵn.
Ứng với mỗi một khối dữ liệu (một dãy bit, một
chuỗi ký tự) sẽ ra được một giá trị băm.
Hash function (H)
Có thể gọi là bản tóm lược của một thông báo.
Tóm lược thông điệp có độ dài tùy ý thành bản
tóm lược có độ dài cố định h = H(M).
Output data (h)
(Độ dài cố định)
5
I. Hàm băm
2. Các tính chất của hàm băm
Thông điệp có độ dài tùy ý thành bản tóm lược có độ dài cố định.
265233a24f451906c893de
Ví dụ về hàm băm H
87e59ad640
6
I. Hàm băm
2. Các tính chất của hàm băm
Kháng tiền ảnh (tính chất một chiều).
o Với mỗi khối dữ liệu gốc qua hàm băm sẽ cho một giá trị băm.
o Từ giá trị băm không thể tìm ngược lại ra khối dữ kiệu gốc.
M H H(M)
7
I. Hàm băm
2. Các tính chất của hàm băm
Kháng tiền ảnh thứ 2 ( kháng va chạm yếu).
o Cho trước một thông điệp , không thể tìm được thông thông điệp khác mà giá trị băm của hai thông điệp này
giống nhau.
M M’
H H
H(M) H(M’)
8
I. Hàm băm
2. Các tính chất của hàm băm
Kháng va chạm ( kháng va chạm mạnh).
o Không thể tìm được 2 thông điệp khác nhau mà có giá trị băm giống nhau.
M M’
H H
H(M) H(M’)
9
I. Hàm băm
3. Hàm băm và mã hóa
Mã hóa là hai chiều, yêu cầu có khóa để mã hóa và giải mã.
Hàm băm là một chiều. Không có khả năng tính ngược lại
10
I. Hàm băm
4. Ứng dụng của hàm băm
Các hệ thống lưu trữ đám mây sử dụng chúng để xác
định các tệp giống nhau và để phát hiện các file đã sửa
đổi.
Hệ thống kiểm soát sửa đổi Git sử dụng chúng để xác
định các tệp trong kho lưu trữ.
Các hàm băm còn được ứng dụng trong việc nhận dạng
âm thanh, chẳng hạn như xác định xem một file MP3 có
khớp với một file trong danh sách các file khác hay
không.
11
1 Hàm băm
2 Tấn công từ điển
Một số thuật toán mật
3 mã khóa công khai
điển hình
II. Tấn công từ điển
1.Tổng quan về tấn công từ điển
Phương pháp tấn công này là tạo ra một danh sách hay gọi là từ điển, có chứa các tổ hợp ký tự có khả năng
cao là password.
Kẻ tấn công sẽ phân tích các thông tin về nạn nhân, và dự đoán mật khẩu trong vùng thông tin đó.
Phương pháp tấn công này có tỷ lệ thành công cao, vì nhiều người dùng có thói quen đặt mật khẩu ngắn, sử
dụng các mật khẩu thông dụng hay sử dụng mật khẩu là các thông tin cá nhân.
Thời gian tấn công ngắn hơn so với phương pháp brute force attack.
VD: password, 123456, quanghai218.
13
II. Tấn công từ điển
2. Precomputed Hash Table
Trong Precomputed Hash Table, sẽ ánh xạ một giá trị đến một bản băm. Nếu bản băm là được thông qua, ta có
thể xác nhận được giá trị đó.
Trong việc lưu trữ mật khẩu, khi kẻ tấn công bắt gặp cơ sở dữ liệu bao gồm hàm băm và mật khẩu. Chúng có thể
sử dụng Precomputed Hash Table để tìm kiếm các hàm băm phù hợp mà chúng có thể tìm ra mật khẩu.
0xe3bca98abcd
Password Hash
vietnam 0x938ff302c906
chienthang 0xf2357adef39c
daidich 0x03aa8c0ff391
covid19 0x930000b8ca8
p@ssw0rd 0xe3bca98abcd
….. …..
Precomputed Hash Table
14
II. Tấn công từ điển
3. Salt
Mặc dù lưu trữ hàm băm và mật khẩu vẫn chưa được coi là an toàn, vì không thể ngăn cản những kẻ tấn công
sử dụng hàm băm để dò ra được mật khẩu, nhưng nó khiến cho công việc của chúng trở nên khó khăn và tốn
thời gian hơn.
Ta sẽ sử dụng Salt, phương pháp này là việc bổ sung một dữ liệu ngẫu nhiên vào với mật khẩu trước khi nó
được đưa qua hàm băm.
16
1 Hàm băm
2 Tấn công từ điển
Một số thuật toán mật
3 mã khóa công khai
điển hình
1 Cơ sở toán học
20
III. Một số thuật toán mật mã khóa công khai điển hình
1. Cơ sở toán học
Nhóm hữu hạn :
- Nhóm hữu hạn là một nhóm có số phần tử hữu hạn. Một loại nhóm hữu hạn mà ta thường gặp là nhóm
số nguyên đồng dư Zn.
- Xét một nhóm hữu hạn G,
• Bậc của nhóm là số phần tử của nhóm đó, kí hiệu |G|.
• Bậc của một phần tử a ∈ G là số nguyên dương m nhỏ nhất sao cho am = e, với e là phần tử đơn vị của
nhóm, kí hiệu |a|.
Ký hiệu ⟨a⟩ là nhóm con sinh bởi a ∈ G, ⟨a⟩ = {ak|k ∈ Z}. Ta có tính chất sau: |⟨a⟩|=|a|, phát biểu bằng lời:
“Bậc của nhóm con sinh bởi a bằng bậc của a”
21
III. Một số thuật toán mật mã khóa công khai điển hình
1. Cơ sở toán học
Phần tử sinh của nhóm cyclic :
• Cho m € Z+ ,m > 1 , (g,m) = 1 .G khi đó được gọi là căn nguyên thủy m nếu g € số mũ φ(m) => khi đó
m được gọi là căn nguyên thủy hay phân tử sinh.
VD: 3 φ(14) ≡ 1 (mod14) với (g,m)=1 (2 số nguyên tố cùng nhau)
36 ≡ 1 (mod14) với φ(14) = 14(1-1/2)(1-1/7)
=> 3 là một phần tử sinh của modulo 14
Một số là có tồn tại phần tử sinh khi và chỉ khi nó phải rơi vào 1 trong 4 trường hợp sau 2, 4, pn , 2pn (p
là số nguyên tố lẻ), n là số nguyên dương.
• Nhóm Z*m là 1 nhóm cyclic khi và chỉ khi m có phần tử sinh, tức m có dạng 2, 4, pn , 2pn (p là số
nguyên tố lẻ), n là số nguyên dương.
22
1 Cơ sở toán học
24
III. Một số thuật toán mật mã khóa công khai điển hình
2. Thuật toán Diffie-Hellman
Alice Bob
p, a Bước 1: Thống nhất với nhau về số nguyên tố chung p, a
25
III. Một số thuật toán mật mã khóa công khai điển hình
2. Thuật toán Diffie-Hellman
Giá Trị dùng chung: p = 353 , a = 3
Alice Bob
2.Tính khóa công khai: Trao đổi giá trị 2.Tính khóa công khai:
YA = 397 mod353=40 YB = 3233 mod353=248
3.Tính khóa phiên bí mật chung: 3.Tính khóa phiên bí mật chung:
K = YB Xa mod p K = YA Xb mod p
KAB=24897mod353 = 160 KAB=40233mod353 = 160
26
1 Cơ sở toán học
28
III, Một số thuật toán mật mã khóa công khai
3. Thuật toán Elgamal Bob
* Sơ đồ
Bộ sinh khóa
• Chọn số nguyên tố p
Khóa công khai (p, g, h) • Chọn là PTS của Z*p
• Chọn
• Tính h=
Alice
Bản
rõ M • mod p Bản
Bản mã (, ) • M . mod p
• mod p rõ M
Mã hóa Giải mã
29
III, Một số thuật toán mật mã khóa công khai
3. Thuật toán Elgamal
B1: Tạo khóa:
• Chọn số nguyên tố p
• Chọn là PTS của Z*p
• Chọn
• Tính =
• Khóa bí mật là = (p, g, x)
• Khóa công khai là = (p, g, h)
30
III, Một số thuật toán mật mã khóa công khai
3. Thuật toán Elgamal
B2: Mã hóa:
• Để mã hóa một thông điệp M (một số nguyên tố trên Zp) thành bản mã
C thì người gửi chọn một số ngẫu nhiên y nhỏ hơn p và tính cặp bản mã:
• mod p
• mod p
• Bản mã E(C1 , C2 ) được gửi đi
31
III, Một số thuật toán mật mã khóa công khai
3. Thuật toán Elgamal
B3: Giải mã:
- Để giải mã thông điệp M đầu tiên ta dùng khóa bí mật x và tính theo
công thức:
- M . mod p
- Với: mod p = mod p
33
III, Một số thuật toán mật mã khóa công khai
3. Thuật toán Elgamal
Giải:
- Giải mã :
Với khóa bí mật x = 765 và bản mã C = (435, 2396), ta có:
mod p = mod p = mod 2579
= mod 2579 = 1980
M = . mod p = (2396*1980) mod 2579 = 1299
34
III, Một số thuật toán mật mã khóa công khai
3. Thuật toán Elgamal
• Lược đồ ký số Elgamal
• B1: Sinh khóa
Chọn số nguyên tố p
Chọn là PTS của Z*p
Chọn
Tính =
Khóa bí mật là = (p, g, )
Khóa công khai là = (p, g, h)
35
III, Một số thuật toán mật mã khóa công khai
3. Thuật toán Elgamal
• Lược đồ ký số Elgamal
• B2: Thực hiện ký số
Thông điệp m, sử dụng = (p, )
1. Sinh ngẫu nhiên: 1 < k < p-1; gcd (k,p-1)=1
2. Tính r = (mod p)
3. Tính s = (m- r)(mod p-1)
4. Nếu s = 0 thì trở lại bước 1
5. Chữ kí số lên thông điệp m là (r, s)
• B3: Kiểm tra chữ ký
Thông điệp m, sử dụng = (p, g, h)
1. Kiểm tra: 0 < r < p; 0 < s < p-1
2. Kiểm tra: m = .(mod p)
36
1 Cơ sở toán học
38
III, Một số thuật toán mật mã khóa công khai
4. Thuật toán RSA
4.1. Giới thiệu chung
Thuật toán mã hóa RSA thoả mãn 5 yêu cầu của một hệ mã hiện đại:
• Độ bảo mật cao
• Thao tác nhanh
• Có thể dùng chung.
• Có ứng dụng rộng rãi.
• Có thể dùng để xác định chủ nhân (dùng làm chữ ký điện tử).
39
III, Một số thuật toán mật mã khóa công khai
4. Thuật toán RSA
4.2. Mô tả hoạt động
Chọn p, q là 2 số nguyên tố
Tính n = p*q
Lý thuyết Ví dụ
Bước 1: B (người nhận) tạo hai số nguyên tố Bước 1: Chọn số 29 và 41
ngẫu nhiên p và q (hai số này là 2 số nguyên tố)
Bước 2: tính: n = p*q Bước 2: n = 29 * 41 = 1189
Φ(n) = (p-1)(q-1) Φ(n) = 28 * 40 = 1120
Bước 3: chọn một số ngẫu nhiên e Bước 3: chọn e = 117
(0< e < Φ(n)) sao cho ƯCLN (e, Φ(n))=1 vì ƯCLN(117, 1120)=1
Bước 4: tính d = mod Φ(n) bằng cách dùng Bước 4: d = = mod 1120
thuật toán Euclide = 1053
Bước 5: Bước 5:
- n và e làm khoá công khai (public key), - n = 1189 và e = 117
- d làm khoá bí mật (pivate key). - d = 1053
41
III, Một số thuật toán mật mã khóa công khai
4. Thuật toán RSA
4.2.b Mã hóa và giải mã
Lý thuyết Ví dụ
Bước 1: A nhận khoá công khai của B. Bước 1: A nhận khoá công khai
Bước 2: A biểu diễn thông tin cần gửi thành n = 1189 và e = 117
số m (0 m n-1) Bước 2: Thông tin cần gửi m = 23
Bước 3: Tính c = mod n Bước 3:
Bước 4: Gửi c cho B c = mod n = mod 1189 = 373
Bước 5: Giải mã tính m = mod n Bước 4: Gửi c cho B
Þ m là thông tin nhận được. Bước 5: Giải mã
m = mod n = mod 1189
= 23
42
III, Một số thuật toán mật mã khóa công khai
4. Thuật toán RSA
4.3. Độ an toàn mã hóa RSA
43
III, Một số thuật toán mật mã khóa công khai
4. Thuật toán RSA
4.4. Ứng dụng của RSA vào chữ ký điện tử
• Thông tin truyền đi trên mạng cũng cần thiết phải được xác nhận người gửi.
• Các văn bản truyền trên mạng (dưới dạng số hoá) cần phải có chữ ký của
người gửi để xác nhận trách nhiệm của người gửi.
• Chữ ký dùng ở đây là một dãy bit và được gọi là″chữ ký điện tử″.
• Mỗi người cần 1 cặp khóa gồm khóa công khai và khóa bí mật
• Khóa bí mật dùng để tạo chữ ký số
• Khóa công khai dùng để xác thực chữ kí số đó
46
III, Một số thuật toán mật mã khóa công khai
4. Thuật toán RSA
4.4. Ứng dụng của RSA vào chữ ký điện tử
47
III, Một số thuật toán mật mã khóa công khai
4. Thuật toán RSA
Thông điệp dữ liệu được ký số
4.4. Ứng dụng của RSA vào chữ ký điện tử
Chữ ký số
Giải mã Tách
Xác
thực
Giải Kết quả Hàm băm Kết quả
chữ
mã sau khi sau khi
ký số được giải mã băm
M = 417;
- n = 1961 và e = 125
- d = 629
- Sign(M) = s = mod n = mod 1961 = 100
- mod n = mod 1961 = 417 (=M)
49