Hàm băm SHA
Người hướng dẫn: PGS.TS Trịnh Nhật Tiến
Học viên: Nghiêm Thị Hương
Giới thiệu về Hàm băm(1)
Hàm băm (Hash function) là một hàm toán học chuyển đổi
một thông điệp đầu vào có độ dài bất kỳ thành một dãy bit
có độ dài cố định (tuỳ thuộc vào thuật toán băm). Dãy bit
này được gọi là thông điệp rút gọn (message digest) hay giá
trị băm (hash value), đại diện cho thông điệp ban đầu.
Hàm băm (hash function) là hàm một chiều mà nếu đưa một
lượng dữ liệu bất kì qua hàm này sẽ cho ra một chuỗi có độ
dài cố định ở đầu ra. Từ chuỗi đầu ra khó có thể tìm được
chuỗi ban đầu.
Hàm băm không phải là mã hoá vì không thể giải mã về
chuỗi ban đầu.
Giới thiệu về Hàm băm(2)
Một hàm băm tốt phải thoả mãn các điều kiện sau:
Tính toán nhanh
Các khoá được phân bố đều trong bảng
Ít xảy ra đụng độ
Xử lý được các loại khoá có các kiểu dữ liệu khác nhau
Một hàm băm được coi là không an toàn nếu:
Cho một tóm tắt, tìm được thông điệp khớp với tóm tắt đó
Có 2 hoặc nhiều thông điệp khác nhau có trùng tóm tắt,
xảy ra xung đột băm
Tính chất cơ bản của hàm
băm
Tính một chiều:
không thể suy ra dữ
liệu ban đầu từ kết
quả, điều này tương
tự như việc bạn
không thể chỉ dựa
vào một dấu vân tay
lạ mà suy ra ai là chủ
của nó được.
Tính duy nhất: xác
suất để có một vụ va
chạm (hash
collision), tức là hai
thông điệp khác nhau
có cùng một kết quả
hash, là cực kỳ nhỏ
Một số ứng dụng của hàm
băm
Xác nhận mật khẩu
Xác thực thách thức băm
Chống giả mạo
Chữ ký số
Hàm băm SHA
SHA gồm 5 thuật giải được chấp nhận bởi Federal
Information Processing Standards (FIPS) dùng để
chuyển 1 đoạn dữ liệu thành 1 đoạn dữ liệu có chiều
dài không đổi với xác suất khác biệt cao.
5 thuật giải được phát triển bởi NSA- cục an ninh
quốc gia Mĩ. Được xuất bản thành chuẩn bởi NISTviện công nghệ và chuẩn quốc gia Mĩ.
5 thuật toán SHA
SHA-1 : trả về kết quả dài 160 bit.
SHA-224 : trả về kết quả dài 224 bit.
SHA-256 : trả về kết quả dài 256 bit.
SHA-384 : trả về kết quả dài 384 bit.
SHA-512: trả về kết quả dài 512 bit.
Chú ý: sha-224, sha-256, sha-384, sha-512 gọi chung là
SHA-2
Đặc điểm
Thuật
toán
Kích
thước
đầu ra
Kích
thước
trạng
thái
Kích
thước
khối
Độ dài
Kích
thước
từ
Xung
đột
SHA-0
SHA- 1
SHA224
SHA256
SHA384
SHA512
160
160
224
160
160
256
512
512
512
64
64
64
32
32
32
Không
Có lỗi
Không
256
256
512
64
32
Không
384
512
1024
128
64
Không
512
512
1021
128
64
Không
Ý tưởng thuật toán SHA
Các thuật toán hàm băm SHA gồm 2 bước: tiền xử lý và
tính toán giá trị băm
•Bước tiền xử lý:
-Mở rộng thông điệp
-Phân tích thông điệp đã mở rộng thành khối m bít.
-Khởi tạo giá trị băm ban đầu
•Bước tính toán giá trị băm gồm 2 bước:
-Làm N lần các công việc sau:
+ Tạo bảng phân bố thông điệp từ khối i
+ Dùng bảng phân bố thông điệp cùng các hàm, hằng số từ
các thao tác trên để tạo ra giá trị băm
- Sử dụng giá trị băm cuối cùng để tạo thông điệp rút gọn.
Hằng số
Mỗi thuật toán có bảng hằng số phân bố thông điệp
tương ứng
Kích thước bảng hằng số thông điệp của SHA-224 và
SHA-256 là 64
Kích thước bảng hằng số thông điệp của SHA-384 và
SHA-512 là 80
Giá trị băm ban đầu
Giá trị băm ban đầu H(0) được thiết lập để đảm bảo
thuật toán băm an toàn.
Kích thước và số lượng từ trong H(0) tùy thuộc vào
thông điệp rút gọn
Tiền xử lý thông điệp
Thông điệp M được mở rộng trước khi thực băm mục
đích nhằm đảm bảo thông điệp mở rộng có độ dài là
bội số của 512 hoặc 1024 tùy vào thuật toán
Thuật toán SHA-224, SHA-256: 512
Thuật toán SHA-384, SHA-512: 1024
Chia thông điệp thành N nhóm
m-bit
SHA-224, SHA-256
Thông điệp mở rộng thành N khối 512-bit M(1),
M(2),... M(N). Do đó 512 bit của khối dữ liệu đầu
vào có thể thực hiện được bằng 16 từ 32bit, M0(i)
chứa 32 bit đầu của khối thông điệp i, M1(i) chứa
32 bit kế tiếp...M16(i) chứa 32 bit cuối cùng.
SHA-384, SHA-512
1024 bit của khối dữ liệu đầu vào có thể được thể
hiện bằng 16 từ 64bit, M0(i) chứa 64 bit đầu của
khối thông điệp i, M1(i) chứa 64 bit kế tiếp... M16(i)
chứa 64 bit cuối cùng.
Độ an toàn thuật toán SHA
Theo chuẩn FIPS 180-2 phát hành ngày 1/8/2002:
Cho một giá trị băm nhất định được tạo ra từ một trong
thuật toán SHA, việc tìm lại được dữ liệu gốc là không
khả thi.
Việc tìm được 2 đoạn dữ liệu nhất định có cùng kết quả
băm tạo ra từ một trong các thuật toán SHA là không
khả thi. Bất cứ thay đổi nào trên đoạn dữ liệu gốc dù
nhỏ cũng sẽ tạo nên một giá trị băm hoàn toàn khác với
xác suất rất cao.
Độ an toàn thuật toán SHA
Thuật
toán
Thông
điệp
Khối
Từ
Thông
điệp rút
gọn
Độ an
toàn
SHA- 1
< 264
512
32
160
80
SHA-224
< 264
512
32
224
112
SHA-256
< 264
512
32
256
128
SHA-384
< 2128
1024
64
384
192
SHA-512
< 2128
1024
64
512
256