SHA-1 được đưa ra bởi viện tiêu chuẩn và công nghệ quốc gia NIST năm 1993. Thuật toán : đầu vào là message có độ dài < 264 bit, đầu ra message digest độ dài 160 bit. Đầu vào được xử lý trong các khối 512 bit
Hình 3.15 : Cơ chế hoạt động của SHA-1
Quá trình sinh message digest sử dụng SHA-1 diễn ra qua 5 bước như sau :
1) Thêm vào các bít padding : Message được thêm vào các bit để đảm bảo độ dài của bản tin đó là bội số của 512. Padding gồm bit 1 và dãy số 0 theo sau tức là có dạng 10000…00.
2) Thêm chiều dài (Append length) : một khối 64 bit sẽ được thêm vào message. Block này được xem như số nguyên 64 bit không dấu, có chứa độ dài của message gốc khi chưa thêm padding
Đầu ra sau 2 bước đầu là một số nguyên độ dài 512 bit
3) Khởi tạo bộ đệm MD. Bộ đệm 160 bit được sử dụng để giữ lại kết quả tạm thời và cuối cùng của hàm hash. Bộ đệm được thể hiện là 5 thanh ghi 32 bit (A, B, C, D, E) những thanh ghi này được khởi tạo thành số nguyên 32 bit (hexadecimal) như sau :
B = EFCDAB89 C = 98BADCFE D = 10325476 E = C3D2E1F0
4) Xử lý bản tin trong các khối 512 bit. Thuật toán sử dụng hàm nén gồm 4 vòng xử lý, mỗi vong 20 bước. Sơ đồ hoạt động thể hiện như hình sau :
Hình 3.16 : Cơ chế xử lý khối đơn trong SHA-1
5) Output : sau khi tất cả các khối 512 được xử lý, đầu ra chính là message digest độ dài 160 bit.
Giải thuật SHA -1 có nhiều ưu điểm nổi trội hơn so với giải thuật MD5 dựa trên những phương diện sau:
An toàn đối với tấn công dạng brute –force: sự khác biệt quan trọng nhất đó là message digest của SHA-1(160 bits) dài hơn 32 bit so với digest của MD5(128 bits). Sử dụng công nghệ brute-force, độ khó khăn để tính toán ra một đoạn tin nào đó có message digest cho trước cần 2128
phép tính cho MD5 và 2160 cho SHA-1. Hơn nữa sử dụng công nghệ brute-force, độ khó khăn để tạo ra 2 đoạn tin có cùng message digest cần
264 phép tính cho MD5 và 280 phép tính cho SHA-1. Do đó, sử dụng SHA-1 là an toàn hơn với dạng tấn công brute-force.
An toàn đối với thám mã: Người ta đã chứng minh được MD5 có thể bị tổn thương với tấn công dạng thám mã còn SHA-1 thì khó khăn hơn Bảng sau so sánh các hàm hash với nhau :
Bảng 3.2 : So sánh các giải thuật hash
3.8 KẾT LUẬN
Để ứng dụng được chữ ký điện tử, ta cần hiểu được nguyên lý hoạt động toán học của nó. Nhiều thuật toán chữ ký đã được nghiên cứu và công bố rộng rãi. Chương này đã trình bày một số thuật toán được sử dụng rộng rãi nhất, do viện tiêu chuẩn và quốc gia Mỹ (the U.S National Institute of Standards and Technology) đưa ra trong chuẩn chữ ký điện tử DSS. Đó là thuật toán chữ ký điện tử DSA sử dụng thuật toán băm SHA. Thuật toán này sẽ được dung để xây dựng ứng dụng trong phần sau của đồ án.
PHẦN II: THIẾT KẾ - XÂY DỰNG HỆ THỐNG ỨNG DỤNG CHỮ KÝ SỐ TRONG BẢO MẬT TRUYỀN THÔNG
CHƯƠNG 4: MỘT SỐ VẤN ĐỀ VỀ KIẾN TRÚC MÃ HÓA CỦA JAVA
Java Cryptography gồm 2 phần. Một phần là bản thân JDK bao gồm những lớp dành cho việc chứng thực. Phần khác, Java Cryptography Extension (JCE), bao gồm những lớp được gọi là “mã hóa mạnh” (strong cryptography)