Tải bản đầy đủ (.pptx) (21 trang)

Thuyết trình môn an ninh mạng Tóm Tắt về Hàm Băm

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 (3.71 MB, 21 trang )

Chuyên đề 3: Tóm Tắt về Hàm Băm
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Gv hướng dẫn: TS. Nguyễn Chiến Trinh
Nhóm 4: Lê Công Đức
Trần Quang Dũng
Đỗ Văn Được
Tổng quan
Mục tiêu: các hàm băm (H) tạo ra
giá trị băm cho một tập tin, thông
điệp hay một khối dữ liệu truyền đi
nhằm kiểm tra tính toàn vẹn.
Các đặc điểm

Khối dữ liệu vào có độ dài bất kỳ, tạo đầu ra có độ dài cố định

H(x) tính toán mọi x tương đối dễ dàng

Với bất kỳ giá trị băm h, không thể tính được x sao cho H(x)=h. Hay
H được gọi là hàm một chiều

Tính bền xung đột yếu (weak collision resistance): với bất kỳ giá
trị x, không thể tính được y ≠ x sao cho H(y) = H(x).

Tính bền xung đột mạnh (strong collision resistance): Không
thể tính được một cặp (x, y) sao cho H(x) = H(y)
Tổng quan
Thuật toán Kích thước đầu ra (output size) Xung đột (Collision)
HAVAL 256/224/192/160/128 Có
MD2 128 Khả năng lớn
MD4 128 Có
MD5 128 Có


PANAMA 256 Có lỗi
RIPEMD 128 Có
RIPEMD-128/256 128/256 Không
RIPEMD-160/320 160/320 Không
SHA-0 160 Không
SHA-1 160 Có lỗi
SHA-256/224 256/224 Không
SHA-512/384 512/384 Không
Tiger(2)-192/160/128 192/160/128 Không
VEST-4/8 (hash mode) 160/256 Không
VEST-16/32 (hash mode) 320/512 Không
WHIRLPOOL 512 Không
Giải thuật MD

Các hàm băm MD (Message Digest) (2,4,5,6) được phát
minh bởi Ronald Rivest tại MIT

Được thiết kế để triển khai hiệu quả bằng phần mềm.

Sử dụng các biến 32bit (từ), với các phép toán Boolean như
AND, OR, NOT, XOR

Input: thông điệp với độ dài bất kỳ

Output: giá trị băm (message digest) 128 bits

Giải thuật gồm 5 bước thao tác trên khối 512 bits
Giải thuật MD5 – Nguyên lý
Bước 1: Nhồi dữ liệu


Nhồi thêm các bits sao cho dữ liệu có độ dài l ≡ 448 mod 512 hay l=
n * 512 + 448 (n,l nguyên)

Luôn thực hiện nhồi dữ liệu ngay cả khi dữ liệu ban đầu có độ dài
mong muốn. Ví dụ, dữ liệu có độ dài 448 được nhồi thêm 512 bits
để được độ dài 960 bits.

Số lượng bit nhồi thêm nằm trong khoảng 1 đến 512

Các bit được nhồi gồm 1 bit “1” và các bit 0 theo sau.
Giải thuật MD5 – Nguyên lý
Bước 2: Thêm vào độ dài

Độ dài của khối dữ liệu ban đầu được biểu diễn dưới dạng nhị
phân 64-bit và được thêm vào cuối chuỗi nhị phân kết quả của
bước 1

Nếu độ dài của khối dữ liệu ban đầu > 264, chỉ 64 bits thấp được
sử dụng, nghĩa là giá trị được thêm vào bằng K mod 264

Kết quả có được từ 2 bước đầu là một khối dữ liệu có độ dài là
bội số của 512. Khối dữ liệu được biểu diễn:

Bằng một dãy L khối 512-bit Y0, Y1,…, YL-1

Bằng một dãy N từ (word) 32-bit M0, M1, MN-1.
Vậy N = L x 16 (32 x 16= 512)
Giải thuật MD5 – Nguyên lý
Bước 3: Khởi tạo bộ đệm MD (MD buffer)


Một bộ đệm 128-bit được dùng lưu trữ các giá trị
băm trung gian và kết quả. Bộ đệm được biểu diễn
bằng 4 thanh ghi 32- bit với các giá trị khởi tạo ở
dạng little-endian (byte có trọng số nhỏ nhất trong
từ nằm ở địa chỉ thấp nhất) như sau:
● A = 67 45 23 01

B = EF CD AB 89

C = 98 BA DC FE
● D = 10 32 54 76
Giải thuật MD5 – Nguyên lý
Bước 4: Xử lý các khối dữ liệu 512
bit

Trọng tâm của giải thuật là hàm
nén (compression function) gồm 4
“vòng” xử lý. Các vòng này có cấu
trúc giống nhau nhưng sử dụng
các hàm luận lý khác nhau gồm F,
G, H và I

Mảng 64 phần tử được tính theo
công thức: T[i] = 232 x abs(sin(i)),
được tính theo radian.

Kết quả của 4 vòng được cộng
(theo modulo 232) với đầu vào
CVq để tạo CVq+1
Giải thuật MD5 – Nguyên lý


Mỗi vòng thực hiện 16 bước,
mỗi bước thực hiện các phép
toán để cập nhật giá trị buffer
ABCD, mỗi bước được mô tả
như sau
● B = B + ((A + Q(B,C,D) + X[k]
+ T[i]) <<< s)

A,B,C,D: các từ của thanh ghi

Q: một trong các hàm F,G,H,I

<<< s : dịch vòng trái s bits

Mi ~ X[k]: từ 32-bit thứ k của
khối dữ liệu 512 bits. k=1 15

Ki ~ T[i]: giá trị thứ i trong
bảng T.
● +: phép toán cộng
modulo 232
Giải thuật MD5 – Nguyên lý

Xuất kết quả

Bước 5: Sau khi xử lý hết L khối 512-bit, đầu ra của lần xử lý thứ L
là giá trị băm 128 bits.
Sử dụng thuật toán MD5, ta có thể thực hiện một số ví dụ sau:


MD5(“Posts and Telecommunications Institute of technology”) =
416dcb3e28f33cb3e2a8eb4e137f8521

Thậm chí chỉ cần một thay đổi nhỏ cũng làm thay đổi hoàn toàn kết quả
trả về: MD5(“Posts and Telecommunications institute of technology”) =
680781119b840a0223c33baff7754268

Ngay cả một chuổi rỗng cũng cho ra một kết quả phức tạp:
MD5(“”) = d41d8cd98f00b204e9800998ecf8427e
Giải thuật MD5 – Đặc điểm
Việc tính MD5 đơn giản,có khả năng xác định được file có kích thước
nhiều Gb
Không có khả năng tính ngược khi tìm ra MD
Do bản chất của hàm băm và số lượng cực lớn các giá trị hash có thể
nên hầu như không thể có 2 bản tin phân biệt có cung giá trị Hash
Giá trị MD phụ thuộc vào bản tin tương ứng
Một chuỗi có duy nhất một hash
Giá trị MD phụ thuộc vào tất cả các bits tương ứng

Có nhiều ưu điểm so với MD4

Tuy nhiên MD5 đã bị tấn công thành công, vì vậy nó cũng không
còn an toàn và cần được thay thế bằng một thuật toán băm
khác.
Ra đời
năm
2008 bởi
Ron
Rivest
Mục đích:

trở thành
tiêu
chuẩn
NIST
SHA-3
Cho
phép
nhiều
tính toán
băm
song
song
cùng lúc
(Merkle)
Vẫn đang
trong giai
đoạn
phát
triển,
phát sinh
một số
lỗi
MD6
không
thể trở
thành
tiêu
chuẩn
SHA-3
MD6

được sử
dụng lần
đầu tiên
trong
sâu
Conficker.
B
(12/2008)
Giải thuật MD6
Giải Thuật SHA-1

Secure Hash Algorithm (SHA) phát triển bởi National
Institute of Standard and Technology (NIST)

Đầu vào: thông điệp với độ dài tối đa 264 bits

Đầu ra: giá trị băm (message digest) có độ dài 160 bits

Giải thuật gồm 5 bước thao tác trên các khối 512 bits
Giải thuật SHA-1 – Nguyên lý

Bước 1: Nhồi thêm dữ liệu

Thông điệp được nhồi thêm các bits sao cho độ dài l ≡ 448 mod 512 hay l
= n * 512 + 448 (n,l nguyên)

Thông điệp luôn luôn được nhồi thêm dữ liệu

Số bits nhồi thêm nằm trong khoảng 1 đến 512


Phần dữ liệu nhồi thêm bao gồm một bit 1 và theo sau là các bit 0

Bước 2: Thêm vào độ dài

Độ dài của khối dữ liệu ban đầu được biểu diễn dưới dạng nhị phân 64-bit và
được thêm vào cuối chuỗi nhị phân kết quả của bước 1

Độ dài được biểu diễn dưới dạng nhị phân 64-bit không dấu

Kết quả có được từ 2 bước đầu là một khối dữ liệu có độ dài là bội số của
512. Khối dữ liệu được biểu diễn:

Bằng một dãy L khối 512-bit Y0, Y1,…, YL-1

Bằng một dãy N từ (word) 32-bit M0, M1, MN-1. Vậy N = L x 16
Giải thuật SHA-1 – Nguyên lý

Bước 3: khởi tạo bộ đệm MD (MD buffer)

Một bộ đệm 160-bit được dùng lưu trữ các giá trị băm trung gian và kết quả.
Bộ đệm được biểu diễn bằng 5 thanh ghi 32- bit với các giá trị khởi tạo ở
dạng big-endian (byte có trọng số lớn nhất trong từ nằm ở địa chỉ thấp nhất)
như sau:
● A = 01 23 45 67

B = 89 AB CD EF

C = FE DC BA 98
● D = 76 54 32 10


E = C3 D2 E1 F0

Các giá trị này tương đương với các từ 32-bit sau:
● A = 01 23 45 67

B = 89 AB CD EF

C = FE DC BA 98
● D = 76 54 32 10

E = C3 D2 E1 F0
Giải thuật SHA-1 – Nguyên lý

Bước 4: xử lý các khối dữ liệu 512-b

Trọng tâm của giải thuật bao gồm 4 lặp
thực hiện tất cả 80 bước.

4 vòng lặp có cấu trúc như nhau, chỉ nhau ở
các hàm logic f1, f2, f3, f4

Mỗi vòng có đầu vào gồm khối
512- thời và một bộ đệm 160-bit ABCDE.
thao tác sẽ cập nhật giá trị bộ đệm

Mỗi bước sử dụng một hằng số Kt (0 79)
● Kt = 5A827999 (0 ≤ t ≤ 19)
● Kt = 6ED9EBA1 (20 ≤ t ≤ 39)
● Kt = 8F1BBCDC (40 ≤ t ≤ 59)
● Kt = CA62C1D6 (60 ≤ t ≤ 79)


Đầu ra của 4 vòng (bước 80) được c đầu ra
của bước CVq để tạo ra CVq+1
Giải thuật SHA-1 – Nguyên lý

Bước 5: xuất kết quả

Sau khi thao tác trên toàn bộ L blocks. Kết quả của khối thứ L
là bảng băm 160-bit

Giải thuật được tóm tắt như sau:

CV0 = IV

CVq+1 = SUM32(CVq, ABCDEq)

MD = CVL

Với

IV = giá trị khởi tạo của bộ đệm ABCDE

ABCDEq = đầu ra của hàm nén trên khối thứ q

L = số khối 512-bit của thông điệp

SUM32 = phép cộng modulo 232 trên từng từ (32 bits) của
đầu vào

MD = giá trị băm

So sánh MD5 và SHA-1

Giống nhau:


Cả MD5, SHA1 đều được giới khoa học máy tính coi là "đa chức
năng". Chúng có thể nhận mọi dạng dữ liệu đầu vào, cũng như tạo ra
một dấu vân tay số duy nhất.
MD5 và SHA1 đều cộng thêm các bit “ ” để tạo thành những khối chia
hết cho 512 bit, nhưng SHA1 sử dụng cùng một hàm phi tuyến f cho cả
bốn vòng
Cả MD5 và SHA1 thuật toán đều gồm 5 bước là: nhồi dữ liệu, thêm độ
dài, khởi tạo bộ đệm, xử lí các khối dữ liệu 512 bits, xuất kết quả.
Tính đơn giản
So sánh MD5 và SHA-1

Khác nhau:
1) Thuật toán :
)
MD5 sử dụng mỗi hằng số duy nhất cho mỗi bước biến đổi, SHA sử dụng mỗi hằng số
cho mỗi vòng biến đổi
)
Trong MD5 với mỗi bước được cộng kết quả của bước trước đó. Sự khác biệt đối với
SHA là cột thứ 5 được cộng
)
Input: MD5 là chuỗi có độ dài bất kì còn SHA1 là chuỗi có độ dài tối đa 264 bits.
2) Tốc độ :SHA1 thực hiện nhiều hơn 16 bước và thao tác trên thanh ghi 160 bit.
3) Độ an toàn (khả năng chống tấn công )
)
Để tạo ra thông điệp có giá trị băm cho trước, cần 2128 thao tác với MD5 và 2160 với

SHA1.
)
Để tìm 2 thông điệp có cùng giá trị băm, cần 264 thao tác với MD5 và 280 với SHA1.
Ứng dụng

MD5:
1. Chữ kí điện tử.
2. Dùng trong các ứng dụng bảo mật.
3. Kiểm tra tính toàn vẹn của tập tin được truyền đi.
4. Lưu trữ mật khẩu.
5. Ứng dụng trong các phần mềm để đảm bảo rằng tập
tin tải về không bị lỗi.
Ứng dụng
SHA-1:
1. SHA-1 là 1 phần trong các ứng dụng bảo mật được sử dụng rộng
rãi trong các giao thức như:TLS và SSL,PGP,SSH và IPSEC…
2. Hàm SHA-1 còn được sử dụng trên Wii để xác minh chữ ký thời
gian khởi động
3. Các hàm băm SHA được dùng làm cơ sở cho mã khối SHACAL.

×