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ã
Hà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 I. 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 khớ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 Độ dài Kích thước từ Xung đột SHA-0 160 160 512 64 32 Không SHA-1 160 160 512 64 32 Có lỗi SHA-224 224 256 512 64 32 Không SHA-256 256 256 512 64 32 Không SHA-384 384 512 1024 128 64 Không SHA-512 512 512 1024 128 64 Không - 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. + 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ý - Mở rộng thông điệp - Phân tích thông điệp đã mở rộng thành khối m bit. - 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. } => Gọi chung là SHA – 2 3. Khung thuật toán chung cho các hàm băm SHA 3.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 3.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 H 0 (0) = 67452301 H 1 (0) = efcdab89 H 2 (0) = 98badcfe H 3 (0) = 10325476 H 4 (0) = c3d2e1f0 3.2.2 SHA-256 H 0 (0) = 67452301 H 1 (0) = efcdab89 H 2 (0) = 98badcfe H 3 (0) = 10325476 H 4 (0) = c3d2e1f0 3.2.3 SHA-384 H 0 (0) = cbbb9d5dc1059ed8 H 1 (0) = 629a292a367cd507 H 2 (0) = 9159015a3070dd17 H 3 (0) = 152fecd8f70e5939 H 4 (0) = 67332667ffc00b31 H 5 (0) = 8eb44a8768581511 H 6 (0) = db0c2e0d64f98fa7 H 7 (0) = 47b5481dbefa4fa4. 3.2.4 SHA-512 H 1 (0) = 6a09e667f3bcc908 H 2 (0) = bb67ae8584caa73b H 3 (0) = 3c6ef372fe94f82b H 4 (0) = a54ff53a5f1d36f1 H 5 (0) = 510e527fade682d1 H 6 (0) = 9b05688c2b3e6c1f H 7 (0) = 5be0cd19137e2179 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: Giả 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 3.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, M 0 (i) chứa 32 bit đầu của khối thông điệp i, M 1 (i) chứa 32 bit kế tiếp M 16 (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, M 0 (i) chứa 64 bit đầu của khối thông điệp i, M 1 (i) chứa 64 bit kế tiếp M 16 (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 3.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 [...]... 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 Thông điệp Khối Từ toán Thông Độ an toàn điệp rút gọ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 ... 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 2) Việc tìm được hai đoạn dữ liệu nhất định có cùng kết quả băm . cuối cùng. 3.5 Các hàm được dùng 3.5.1 SHA- 1 3.5.2 SHA- 256 3.5.3 SHA- 384, SHA- 512 • Nhận xét - Chuẩn SHA đặc tả 5 thuật toán SHA- 1, SHA2 24, SHA- 256, SHA- 384 và SHA- 512. - Sự khác biệt chính của các. (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 SHA3 84, SHA5 12 3.2 Giá trị băm ban đầu Trước khi thực hiện băm, với mỗi. thước từ Xung đột SHA- 0 160 160 512 64 32 Không SHA- 1 160 160 512 64 32 Có lỗi SHA- 224 224 256 512 64 32 Không SHA- 256 256 256 512 64 32 Không SHA- 384 384 512 1024 128 64 Không SHA- 512 512 512