Tải bản đầy đủ (.ppt) (16 trang)

TIỂU LUẬN AN NINH CƠ SỞ DỮ LIỆU: 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 (131.39 KB, 16 trang )


Môn học An ninh Cơ sở dữ liệu
Bài tập lớn: HÀM BĂM
Thầy giáo: Trịnh Nhật Tiến
Học viên: Bùi Trung Hiếu
Khóa: K20 – Hệ thống thông tin
Mã số học viên: 13025006

Hàm Băm
1. Giới thiệu:
- Hàm băm (Hash) là giải thuật nhằm sinh ra các giá trị băm
tương ứng với mỗi khối dữ liệu (chuỗi ký tự, một đối tượng
lập trình trong lập trình hướng đối tượng…)
- Giá trị băm đóng vai trò gần như một khóa để phân biệt các
khối dữ liệu.
- Hàm băm thường được dùng trong bảng băm nhằm giảm
chi phí tính toán khi tìm một khối dữ liệu trong một tập hợp.
- Hàm băm mật mã học (Cryptographic hash) là một hàm băm
với một số tính chất bảo mật nhất định để phù hợp việc sử
dụng trong nhiều ứng dụng bảo mật thông tin đa dạng như
chứng thực, kiểm tra tính nguyên vẹn của thông tin. Một hàm
băm nhận đầu vào là một xâu ký tự dài có độ dài tùy ý và tạo
ra kết quả là một xâu ký tự có độ dài cố định, được gói là
tóm tắt thông điệp hoặc chữ ký số.

Giới thiệu (tiếp)
- Một hàm băm tốt phải thỏa mãn các điều kiện sau:
+ Tính toán nhanh
+ Các khóa được phân bổ đều trong bảng
+ Ít xảy ra đụng độ
+ Xử lý được các loại khóa có kiểu dữ liệu khác nhau


- Một số lĩnh vực sử dụng hàm băm:
+ Mật mã học
+ Bảng băm
+ Phát hiện và sửa lỗi dữ liệu
+ Nhận dạng âm thanh
- Tính chất cơ bản của hàm băm mật mã học:
+ Tính một chiều: không thể từ giá trị băm suy ra giá trị
đầu vào ban đầu.
+ Tính duy nhất: xác suất để hai giá trị đầu vào sau khi
băm cho giá trị giống nhau là cực kỳ khó xảy ra.

Giới thiệu (tiếp)
- Một số hàm băm:
+ Hàm cắt bỏ: Cho khóa là số nguyên, bỏ bớt một phần
nào đó của khóa.
Ví dụ: khóa là một số nguyên có 6 chữ số x = 596438. Ta
có thể quy ước là bỏ bớt các chữ số hàng lẻ (hàng 1, 3,
5…), số còn lại sẽ là 563.
Vậy H(x) = H(596438) = 563
Hàm cắt bỏ thỏa mãn điều kiện tính toán nhanh, nhưng khó đảm
bảo điều kiện các khóa được phân bố đều
+ Hàm phần dư: Khóa có giá trị nguyên và bảng băm B có m
phần tử, lấy phần dư của phép chia x/m làm giá trị hàm
băm. Để đảm bảo điều kiện các khóa được phân bố đều
nên chọn m là số nguyên tố
+ Hàm gấp: Khóa là số nguyên, chia số đó thành một số đoạn
tùy chọn, sau đó kết hợp các phần đó lại theo một quy
ước nào đó
Ví dụ: Số các hàng lẻ là 352 và số các hàng chẵn là 684
vậy H(x) = 352 + 684 = 1036


Giới thiệu (tiếp)
- Hầu hết các trường hợp trên đều có thể xảy ra xung đột, nên
có 2 phương pháp để loại bỏ xung đột là phương pháp dò
tuyến tính và phương pháp dây chuyền. Phương pháp dò
tuyến tính là tìm vị trí trống tiếp theo rồi chèn phần tử
đụng độ vào đó. Phương pháp dây chuyền là liên kết các
khóa khác nhau, nhưng có cùng một giá trị băm thành
một danh sách
- Các loại hàm băm mật mã:
+ Sử dụng khóa: Message Authentication Codes (MAC)
+ Không sử dụng khóa: Manipulation Detection Codes
(MDC): One-Way Hash Functions (OWHF), Collision
Resistant Hash Functions (CRHF)
- Ví dụ hàm băm mật mã học: MD2, MD4, MD5, SHA-0, SHA-1…

2. Ứng dụng của hàm băm mật mã
+ Xác thực mật khẩu: Mật khẩu không được lưu dạng văn
bản rõ (clear text) mà ở dạng tóm tắt, tức là người dùng
nhập mật khẩu vào, mật khẩu đó được băm ra, sau đó so
sánh với kết quả băm ở trong dữ liệu lưu trữ.
+ Xác thực thông điệp: Khi giá trị đầu vào thay đổi thì
tương ứng giá trị băm cũng thay đổi, từ đó xác định được
thông điệp đã bị sửa đổi hay chưa.
+ Bảo vệ tính toàn vẹn của thông tin gửi trên mạng: Dựa
vào tính chất một chiều của hàm băm, khi gửi một gói tin
trên mạng, người ta so sánh kết quả băm của gói tin
trước khi gửi với kết quả băm của gói tin khi nhận được.
Nếu kết quả trùng nhau thì gói tin không thay đổi.
+ Tạo chữ ký điện tử: Chữ ký số được tạo ra bằng cách

mã hóa bản tóm tắt (kết quả băm) của thông điệp bằng
khóa bí mật của người ký.

2. Ứng dụng của hàm băm mật mã
Tạo chữ ký điện tử:

2. Ứng dụng của hàm băm mật mã
Xác thực chữ ký điện tử

3. Phương pháp thực hiện hàm băm
Thuật toán SHA-1
Thuật toán SHA-1 do Cục An ninh Trung ương Hoa Kỳ
(NSA) xây dựng dựa trên thuật toán MD4. Thuật toán
SHA-1 tạo ra chuỗi mã băm có chiều dài cố định 160 bit
từ chuỗi bit dữ liệu đầu vào tùy ý với độ dài tối đa 264
bits.
Giải thuật gồm 5 bước trên khối 512 bits.
+ Bước 1: Nhồi dữ liệu
Thông điệp được nhồi thêm các bit sao cho độ dài L mod
512 luôn đồng dư là 448
Số bit nhồi thêm phải nằm trong khoảng (1,512)
Phần thêm vào cuối dữ liệu gồm 1 bit 1 và theo sau là các
bit 0.
+ Bước 2: Thêm độ dài
Độ dài khối dữ liệu ban đầu sẽ được biểu diễn dưới dạng
nhị phân 64 bit và được thêm cuối chuỗi nhị phân mà ta
thu được ở 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ả thu được từ 2 bước là một khối dữ liệu có độ dài

là bội số của 512.

3. Phương pháp thực hiện hàm băm
Thuật toán SHA-1
+ Bước 3: Khởi tạo bộ nhớ đệm MD
Một bộ đệm 160 bits đượ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) và có 2 bộ đệm. 5 thanh ghi của bộ đệm đầu tiên
được đặt tên là A, B, C, D, E và tương tự cho bộ đệm thứ
2 là H0, H1, H2, H3, H4, H5. Giá trị các thanh ghi (theo
dạng HEX) như sau:
= 67452301
= EFCDAB89
= 98BADCFE
= 10325476
= C3D2E1F0
+ Bước 4: Xử lý các khối dữ liệu 512 bit

3. Phương pháp thực hiện hàm băm
Thuật toán SHA-1

3. Phương pháp thực hiện hàm băm
Thuật toán SHA-1
Thuật toán gồm 4 vòng lặp, tất cả 80 bước. Các vòng lặp
có cấu trúc như nhau, chỉ khác nhau ở hàm logic F(t)

3. Phương pháp thực hiện hàm băm
Thuật toán MD5

- MD5 chuyển một đoạn thông tin chiều dài thay đổi thành
một kết quả chiều dài không đổi 128 bit. Mẩu tin đầu vào
được chia thành từng đoạn 512 bit; mẩu tin sau đó được
độn sao cho chiều dài của nó chia chẵn cho 512. Công
việc độn vào như sau: đầu tiên một bit đơn, 1, được gắn
vào cuối mẩu tin. Tiếp theo là một dãy các số zero sao
cho chiều dài của mẩu tin lên tới 64 bit ít hơn so với bội
số của 512. Những bit còn lại được lấp đầy bằng một số
nguyên 64-bit đại diện cho chiều dài của mẩu tin gốc.
- Giải thuật MD5 chính hoạt động trên trạng thái 128-bit,
được chia thành 4 từ 32-bit, với ký hiệu A, B, C và D.
Chúng được khởi tạo với những hằng số cố định. Giải
thuật chính sau đó sẽ xử lý các khối tin 512-bit, mỗi khối
xác định một trạng thái. Quá trình xử lý khối tin bao gômg
bốn giai đoạn giống nhau, gọi là vòng; mỗi vòng gồm có
16 tác vụ giống nhau dựa trên hàm phi tuyến F, cộng mô
đun, và dịch trái. Hình 1 mô tả một tác vụ trong một vòng.
Có 4 khả năng cho hàm F; mỗi cái được dùng khác nhau
cho mỗi vòng:

3. Phương pháp thực hiện hàm băm
Thuật toán MD5
Đây là quá trình thực hiện xử lý của 4 hàm F, G, H, I ở trên:
- Vòng 1 (Round 1): Ký hiệu [abcd k s t] là bước thực hiện của phép
toán a = b + ((a + F(b, c, d) + X[k] + T[t]) <<< s) Quá trình thực
hiện 16 bước sau:
[ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22
4]
[ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22
8]

[ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22
12]
[ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22
16]
- Vòng 2 (Round 2): Tương tự, ký hiệu [abcd k s t] là của biểu thức:
a = b + ((a + G(b, c, d) + X[k] + T[t]) <<< s) Quá trình thực hiện
16 bước:
[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20]
[ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24]
[ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28]
[ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]
Nhận xét: Vòng 2 dùng hàm G, với t từ 17 -> 32 và k = 1 + 5k mod 16

3. Phương pháp thực hiện hàm băm
Thuật toán MD5
- Vòng 3 (Round 3):
Tương tự, ký hiệu [abcd k s t] là của biểu thức: a = b + ((a + H(b,
c, d) + X[k] + T[t]) <<< s)
Quá trình thực hiện 16 bước:
[ABCD 5 4 33] [DABC 8 11 34] [CDAB 1 16 35] [BCDA 14 23 36]
[ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40]
[ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44]
[ABCD 9 4 45] [DABC 12 11 46] [CDAB 5 16 47] [BCDA 2 23 48]
Nhận xét: Vòng 3 dùng hàm H, với t từ 33 -> 48 và k =5 + 3k mod
16
- Vòng (Round 4):
Tương tự, ký hiệu [abcd k s t] là của biểu thức:
a = b + ((a + I(b,c,d) + X[k] + T[t]) <<< s)
Quá trình thực hiện 16 bước:
[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52]

[ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]
[ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60]
[ABCDb 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]
Nhận xét: Vòng 4 dùng hàm I, với t từ 49 -> 64 và k =7k mod 16

3. Phương pháp thực hiện hàm băm
Thuật toán MD5
/* Sau đó làm các phép cộng sau. (Nghĩa là cộng vào mỗi thanh
ghi giá trị của nó trước khi vào vòng lặp) */
A = A + AA
B = B + BB
C = C + CC
D = D + DD
End /* of loop on i */
Bước 5: Tính kết quả message digest. Sau khi thực hiện xong
bước 4, thông điệp thu gọn nhận được từ 4 thanh ghi A,
B, C, D, bắt đầu từ byte thấp của thanh ghi A và kết thúc
với byte cao của thanh ghi D bằng phép nối như sau:
Message Digest = A || B || C || D. (|| phép toán nối)
///////////////////////////////////////////////////////////////////////
lần lượt chỉ phép XOR, AND, OR và NOT.

×