You are on page 1of 48

Học viện kỹ thuật mật mã

Khoa an toàn thông tin

Môn mật mã ứng dụng trong an toàn


thông tin
Nhóm 4: Hàm băm và mật mã khóa công khai

Giảng viên hướng dẫn : ThS. Lục Như Quỳnh

Sinh viên thực hiện:

Nguyễn Văn Tiến - AT140846


Nguyễn Trường Bình - AT140803
Bùi Anh Dũng - AT140808 Vũ Hồng Hưng - AT140812
Nguyễn Đình Huy - AT140821 Đào Minh Hùng - AT130323
Nguyễn Thuần Huy - AT140123 Nguyễn Quang Hưng - AT130823
Vũ Văn Nhiệm - AT140831
Bảng công việc thành viên nhóm

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

Bản băm có độ dài cố định L

Đây là một bản rõ ví dụ về e4f075ac73449883621584


H
hàm băm dd219bdd4a

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.

Password Salt Hash


vietnam 0x7381a0f10c3 0x938ff302c906
chienthang 0xa0c110f139d 0xf2357adef39c
daidich 0x30ea0fd1d2f 0x03aa8c0ff391
p@ssw0rd 0x31ffac10ca0 0xff0cea3d0de9
p@ssw0rd 0xffa0cc103e1 0x930e00b8ca8
p@ssw0rd 0x00a10fc13d 0xe3bc098abcd

Sử dụng salt để chống lại Precomputed Hash Table


15
II. Tấn công từ điển
3. Salt
 Sử dụng salt ngăn chặn được việc dùng Precomputed Hash
Table nhưng không ngăn chặn được việc sử dụng từ điển.
 Để chống lại tấn công từ điển, ta cần sử dụng mật khẩu mạnh
tối thiểu 8 ký tự, bao gồm các chữ cái, số và các ký tự đặc
biệt. Đặt mật khẩu một cách vô nghĩa và không có trong từ
điển.

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

2 Thuật toán Diffie-Hellman

3 Thuật toán El-Gamal

3 Thuật toán RSA


1 Cơ sở toán học

2 Thuật toán Diffie-Hellman

3 Thuật toán El-Gamal

3 Thuật toán RSA


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 :
Nhóm là một tập hợp G và một phép toán 2 ngôi *, (G,*) phải thỏa các tính chất sau:
• Tính đóng (Closure): Với mọi a,b ∈ G, ta có a*b ∈ G
• Tính kết hợp (Associativity): Với mọi a,b,c ∈ G, ta có: (a*b)*c = a*(b*c)
• Phần tử đơn vị (Identity element): Tồn tại một phần tử đơn vị e ∈ G thỏa e*a = a*e = a, với mọi a ∈ G .
Nếu tồn tại, phần tử đơn vị là duy nhất.
• Phần tử nghịch đảo (Inverse element): với mỗi a ∈ G, tồn tại b ∈ G thỏa a*b = b*a = e, với e là phần
tử đơn vị của nhóm. Phần tử nghịch đảo của a thường được kí hiệu là a-1 hoặc −a, tùy theo phép toán đang
sử dụng.
VD: Tập hợp số nguyên Z với phép toán cộng. Phần tử đơn vị là 0.

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

2 Thuật toán Diffie-Hellman

3 Thuật toán El-Gamal

3 Thuật toán RSA


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
• Trao đổi khóa Diffie-Hellman là thuật toán khóa công khai đầu tiên được công bố năm 1976
• Thuật toán này cho phép hai người dung trao đổi một khóa một cách an toàn để sau đó có thể được sử
dụng để mã hóa các tin nhắn tiếp theo. Thuật toán tự nó được giới hạn trong việc trao đổi các giá trị bí
mật.
• Tính hiệu quả của thuật toán Diffie-Hellman dựa trên tính khó khăn trong việc tính logarit rời rạ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

XA Bước 2: Chọn khóa riêng XB

YA = aXa(mod p) Bước 3: Tính khóa công khai YB = aXb(mod p)

Bước 4: Trao đổi khóa công


khai

K = YB Xa mod q Bước 5: Tính khóa phiên bí mật K = YA Xb mod q

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

1.Chọn khóa riêng: 1.Chọn khóa riêng:


XA = 97; XB = 233;

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

2 Thuật toán Diffie-Hellman

3 Thuật toán El-Gamal

3 Thuật toán RSA


III, Một số thuật toán mật mã khóa công khai
3. Thuật toán Elgamal
 Hệ mật Elgamal dựa trên bài toán logarit rời rạc. Tính an toàn của nó phụ thuộc vào
độ phức tạp của bài toán này
 Hệ mật elgamal là 1 biến thể của sơ đồ phân phối khóa Diffie-Hellmal
 So với RSA thì hệ mật Elgamal không có nhiều rắc rối về vấn đề quyền sử dụng
 Mã hóa Elgamal hoạt động theo 3 bước:
 B1: Tạo khóa
 B2: Mã hóa
 B3: Giải mã

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

Khóa bí mật (p, g, x)

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

VD: Cho Hệ Elgamal có p = 2579; g = 2; x = 765; chọn y ngẫu nhiêu là


853. Bản rõ M = 1299. Tìm khóa của hệ mã trên? 32
III, Một số thuật toán mật mã khóa công khai
 
3. Thuật toán Elgamal
Giải:
- Mã hóa : Trước hết ta tính: = mod p = mod 2579 = 949
Để mã hóa thông điệp M = 1299 ta tính theo y = 853:
= mod p = mod 2579 = 435
= mod p = () mod 2579 = 2396
Vậy bản mã được gửi đi sẽ là C = (435, 2396).

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

2 Thuật toán Diffie-Hellman

3 Thuật toán El-Gamal

3 Thuật toán RSA


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 được Ron Rivest, Adi Shamir và Len
Adleman (R.S.A) mô tả lần đầu tiên vào năm 1977
Trước đó, vào năm 1973, Clifford Cocks - một nhà toán
học người Anh đã mô tả một thuật toán tương tự. Nhưng
tại thời điểm đó thì thuật toán này không khả thi và chưa
được thực nghiệm.

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

Tính Φ(n) = (p-1)(q-1) Bản rõ M

Chọn khóa công khai e  


e c = mod n
(0< e < Φ(n)) (e< >Φ(n))

  Chọn khóa riêng d


d   Bản rõ
m = mod n e
d = mod Φ(n) gốc M
40
III, Một số thuật toán mật mã khóa công khai
4. Thuật toán RSA
4.2.a Tạo khóa

  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

• Độ an toàn của hệ thống RSA dựa trên 2 vấn đề:


o Bài toán phân tích ra thừa số nguyên tố các số nguyên lớn.
o Bài toán RSA.
• Vì vậy muốn xây dựng hệ RSA an toàn thì n=p*q phải là một số đủ lớn,
để không có khả năng phân tích nó về mặt tính toán.

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ử

Thông điệp dữ liệu Chữ ký số


Gắn vào thông
điệp dữ liệu
Tạo
chữ
Hàm băm Mã hóa

số
Kết quả
sau khi Thông điệp dữ liệu được ký số
băm

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

Không đúng người gửi So


Nội dung thông điệp toàn vẹn
sánh

Nội dung thông điệp bị thay đổi 48


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ử

 Kísố và kiểm tra chữ kí


• Kí số: sign(m) = s = (mod n)
• Kiểm tra: = m (mod n)
Ví dụ:

M = 417;
- n = 1961 và e = 125
- d = 629
- Sign(M) = s = mod n = mod 1961 = 100
- mod n = mod 1961 = 417 (=M)

49

You might also like