Hàm băm SHAI.Giới thiệu về hàm băm mật mã1.Khái niệm hàm băm2.Đặc tính của hàm bămII.Ứng dụng của hàm băm mật mãIII.Các kiểu hàm băm SHA1.Phân loại hàm băm SHA2.Ý tưởng thuật toán hàm băm SHA3.Khung thuật toán cho hàm hăm SHA4.Ví dụ minh họaIV.Độ an toàn của hàm băm SHAI.Giới thiệu về hàm băm mật mã1. Khái niệm hàm bămHàm băm là một thuật toán không dùng để mã hoá, nó có nhiệm vụ “lọc” tài liệubản tin và cho kết quả là một giá trị băm có kích thước cố định, còn gọi là “đại diện tài liệu”, “đại diện bản tin”, “đại diện thông điệp”.Hàm băm nhận đầu vào là 1 xâu ký tự dài (thông điệp) có độ dài tuỳ ý và tạo ra kết quả là 1 xâu ký tự có độ dài cố định (tóm tắt thông điệp hoặc chữ ký số).Một hàm băm mật mã là một loại chữ kí cho văn bản hoặc một tập tin dữ liệu. Hàm băm không phải là mã hoá vì nó không thể được giải mã về văn bản ban đầu, mà nó có chức năng mật mã “một chiều”, và có một kích thước cố định cho bất kỳ một văn bản gốc nào. Điều này phù hợp khi so sánh các phiên bản “băm” các văn bản 2. Đặc tính của hàm băm Với hàm băm là hàm 1 chiều có các đặc tính sau:Với tài liệu đầu vào (bản tin gốc) x, chỉ thu được giá trị băm duy nhất z = h(x);Nếu dữ liệu trong bản tin x bị thay đổi hay bị xoá để thành bản tin x’, thì giá trị băm h(x’) khác h(x).Nội dung của bản tin gốc “khó” thể suy ra từ giá trị hàm băm của nó. Nghĩa là, với thông điệp x thì “dễ” tính được z = h(x), nhưng lại “khó” tính ngược lại được nếu chỉ biết giá trị băm h(x).II.Ứng dụng của hàm băm mật mã
Trang 1Hàm băm SHA
I Giới thiệu về hàm băm mật mã
1 Khái niệm hàm băm
2 Đặc tính của hàm băm
II Ứng dụng của hàm băm mật mã III Các kiểu hàm băm SHA
1 Phân loại hàm băm SHA
2 Ý tưởng thuật toán hàm băm SHA
3 Khung thuật toán cho hàm hăm SHA
4 Ví dụ minh họa
IV Độ an toàn của hàm băm SHA
Trang 2I Giới thiệu về hàm băm mật mã
1 Khái niệm hàm băm
- Hàm băm là một thuật toán không dùng để mã hoá, nó có nhiệm vụ “lọc” tài liệu/ bản tin và cho kết quả là một giá trị băm có kích thước cố định, còn gọi là “đại diện tài liệu”, “đại diện bản tin”, “đại diện thông điệp”
- Hàm băm nhận đầu vào là 1 xâu ký tự dài (thông điệp) có độ dài tuỳ ý và tạo ra kết quả là 1 xâu ký tự có độ dài cố định (tóm tắt thông điệp hoặc chữ ký số)
- Một hàm băm mật mã là một loại chữ kí cho văn bản hoặc một tập tin dữ liệu
- Hàm băm không phải là mã hoá vì nó không thể được giải mã về văn bản ban đầu,
mà nó có chức năng mật mã “một chiều”, và có một kích thước cố định cho bất kỳ một văn bản gốc nào Điều này phù hợp khi so sánh các phiên bản “băm” các văn bản
2 Đặc tính của hàm băm
Với hàm băm là hàm 1 chiều có các đặc tính sau:
- Với tài liệu đầu vào (bản tin gốc) x, chỉ thu được giá trị băm duy nhất z = h(x);
- Nếu dữ liệu trong bản tin x bị thay đổi hay bị xoá để thành bản tin x’, thì giá trị băm h(x’) khác h(x)
- Nội dung của bản tin gốc “khó” thể suy ra từ giá trị hàm băm của nó Nghĩa là, với thông điệp x thì “dễ” tính được z = h(x), nhưng lại “khó” tính ngược lại được nếu chỉ biết giá trị băm h(x)
II Ứng dụng của hàm băm mật mã
- Xác nhận mật khẩu: bạn có thể lưu băm của mật khẩu Khi người dùng cung cấp mật khẩu thì băm mật khẩu của người dùng Nếu các phiên bản băm khớp thì mật khẩu được xác thực, nhưng mật khẩu ban đầu không thu lấy được từ băm đã được lưu trữ
- Xác thực thách thức băm: để tránh việc truyền mật khẩu “clear”, máy khách có thể gửi băm của mật khẩu trên internet để xác nhận bởi một máy chủ mà không sợ mật khẩu ban đầu bị đánh cắp
- Chống giả mạo: liên kết băm của một tin nhắn với bản gốc và người nhận tin có thể tái băm tin nhắn đó và so sánh nó với băm đã được cung cấp Nếu 2 bản băm
Trang 3khớp nhau thì tin nhắn đó không bị thay đổi Ứng dụng này cũng có thể dụng để xác nhận dữ liệu có bị mất hay khôgn trong quá trình truyền tải
- Chữ ký số: dùng hàm băm h để tạo đại diện bản tin z = h(x), có độ dài ngắn Sau
đó ký trên z, như vậy chữ ký trên z sẽ nhỏ hơn rất nhiều so với chữ ký trên bản tin gốc x
- Bảo mật một số dữ liệu đặc biệt như bảo vệ mật khẩu, bảo vệ khoá mật mã
III Các kiểu hàm băm SHA
1 Phân loại hàm băm SHA
- SHA bao 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 nhất định 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
Thuật
toán
Kích thước đầu ra
Kích thước trạng thái
Kích thước khối
thước từ
Xung đột
- 5 thuật giải SHA được phát triển bởi cục an ninh quốc gia Mỹ (National Security Agency hay NSA), được xuất bản thành chuẩn của chính phủ Mĩ bởiViện công nghệ và chuẩn quốc gia Mĩ ( National Institute of Standard and Technology hay NIST)
- Tên các thuật giải tương ứng được đặt dựa theo kết quả trả về của thuật giải
Trang 4+ SHA – 1 (kết quả trả về dài 160 bit)
+ SHA – 224 (kết quả trả về dài 224 bit)
+ SHA – 256 (kết quả trả về dài 256 bit)
+ SHA – 384 (kết quả trả về dài 384 bit)
+ SHA – 512 (kết quả trả về dài 512 bit)
2 Ý tưởng của các thuật toán hàm băm
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.
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ý
Bước tính toán giá trị băm gồm 2 bước
+ 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
3 Khung thuật toán chung cho các hàm băm SHA
} => Gọi chung là SHA – 2
Trang 53.1 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 (scheduleRound) của SHA-224 là 64, kích thước bảng hằng số thông điệp của SHA-384 và SHA-512 là 80
3.1.1 SHA -1
3.1.2 SHA-256
3.1.3 SHA384, SHA512
Trang 63.2 Giá trị băm ban đầu
Trước khi thực hiện băm, với mỗi thuật toán băm an toàn, giá trị băm ban đầu H(0)
phải được thiết lập Kích thước và số lượng từ trong H(0) tuỳ thuộc vào thông điệp rút gọn Giá trị ban đầu của từng thuật toán băm:
3.2.1 SHA-1
H0(0) = 67452301
H1(0) = efcdab89
H2(0) = 98badcfe
H3(0) = 10325476
H4(0) = c3d2e1f0
3.2.2 SHA-256
H0(0) = 67452301
H1(0) = efcdab89
H2(0) = 98badcfe
H3(0) = 10325476
Trang 7H4(0) = c3d2e1f0
3.2.3 SHA-384
H3(0) = 152fecd8f70e5939
H4(0) = 67332667ffc00b31
H6(0) = db0c2e0d64f98fa7
H7(0) = 47b5481dbefa4fa4
3.2.4 SHA-512
H1(0) = 6a09e667f3bcc908
H3(0) = 3c6ef372fe94f82b
H4(0) = a54ff53a5f1d36f1
H5(0) = 510e527fade682d1
H6(0) = 9b05688c2b3e6c1f
3.3 Tiền xử lý thông điệp
Thông điệp M được mở rộng trước khi thực hiện 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 bit tuỳ vào thuật toán
VD:
Trang 8Giả sử thông điệp : “abc” = 0110001 01100010 01100011 có độ dài l bits = 24bits.
Cần tách thông điệp để số bit của nó là bội số của 512 hoặc 1024 tuỳ vào thuật toán
Bước 1: Thêm bit 1 vào sau thông điệp ban đầu được:
0110001 01100010 01100011 1
Bước 2:
3.3.1 SHA-1, SHA-256
Thêm k 0 bit sao cho l+1+k = 448 mod 512
K = 448 – (l+1) = 448 – (24+1) = 423
Vậy sẽ phải thêm 423 0bits vào sau thông điệp thu được ở bước 1
B3: Thêm 64 bit gồm 64 – l = 64 – 24 = 40 0 bits và l bits vào sau thông điệp thuđược
ở bước 2
3.3.2 SHA-384, SHA-512
Thêm k 0 bits sao cho l + 1 + k = 896 mod 1024
K = 896 – (l+1) = 896 – (24+1) = 871
Vậy sẽ phải thêm 423 0 bits vào sau thông điệp thu được ở bước 1:
B3: Thêm 128 bit gồm 128 – l = 128 – 24 = 104 0 bits và l bits vào sau thông điệp thu được ở bước 2
Trang 93.4 Chia thông điệp thành N nhóm m-bit
3.4.1 SHA-1, 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
3.4.2 SHA 384, SHA-512
Thông điệp mở rộng được phân tích thành N khối 1024bit M(1), M(2), M(N) Do đó
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
3.5 Các hàm được dùng
3.5.1 SHA-1
3.5.2 SHA-256
Trang 103.5.3 SHA-384, SHA-512
Nhận xét
- Chuẩn SHA đặc tả 5 thuật toán SHA-1, SHA224, SHA-256, SHA-384 và SHA-512
- Sự khác biệt chính của các thuật toán là số lượng bit bảo mật của dữ liệu băm – điều này có ảnh hưởng trực tiếp đến chiều dài của thông điệp rút gọn Khi một thuật tóan băm được sử dụng kết hợp với thuật toán khác đòi hỏi phải cho kết quả số lượng bit tương ứng VD, nếu một thông điệp được ký với thuật toán chữ kí điện tử cung cấp 128bit thì thuật tóan chữ ký đó có thể đòi hỏi sử dụng 1 thuật toán băm an toàn cung cấp 128bit như SHA-256
4 Ví dụ minh hoạ
Dùng thuật toán SHA-1
Thông điệp “abc”
Bước 1: Tiền xử lý thông điệp:
01100001 01100010 01100011 10000000 00 00 00000018
Bước 2: Thông điệp được tách làm 512bit nên N = 1 (1 nhóm 512-bit)
Bước 3 Giá trị băm ban đầu:
H 0 (1) = 67452301
H 1 1) = efcdab89
Trang 11H 2 (1) = 98badcfe
H 3 (1) = 10325476
H 4 (1) = c3d2e1f0
Bước 4: Tính Wt
Lặp t = 0 đến t = 79, để tìm ra a,b,c,d,e tương ứng
Trang 13Sau khi hoàn thành, tính giá trị H
H 0 (1) = 67452301+ 42541b35= a9993e36
H 1 1) = efcdab89+ 5738d5e1= 4706816a
H 2 (1) = 98badcfe + 21834873 = ba3e2571
H 3 (1) = 10325476 + 681e6df6 = 7850c26c
H 4 (1) = c3d2e1f0 + d8fdf6ad = 9cd0d89d.
Thông điệp cuối cùng:
a9993e36 4706816a ba3e2571 7850c26c 9cd0d89d
5 Độ an toàn của thuật toán băm
- Những thuật giải này được gọi là “an toàn” vì theo nguyên văn chuẩn FIPS 180-2 phát hành ngày 1/8/2002:
1) Cho một giá trị băm nhất định được tạo nên từ một trong những thuật giải SHA, việc tìm lại được đoạn dữ liệu gốc là không khả thi
Trang 142) Việc tìm được hai đoạn dữ liệu nhất định có cùng kết quả băm tạo ra bởi một trong những thuật giải 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
Thuật
toán
điệp rút gọn
Độ an toàn