4.2.2.1. Giới thiệu
Hiện nay các dòng họ thuật toán băm như gia đình MD, Sneru và SHA-1 đã bị tìm ra các collision hoặc có khả năng bị khám phá ra collision nhờ vào các collision của các thuật toán “hàng xóm”.
Thêm vào đó các thuật toán này làm việc kém hiệu quả trên dòng máy tính 64 bits do nó chỉ được thiết kế trên các bộ vi xử lý 32 bits. Mặt khác, thế hệ sắp tới của các bộ vi xử lý có dùng các từ 64-bit (word), và bao gồm luôn cả một loạt các máy DEC Alpha cũng như các bộ vi xử lý thế hệ kế tiếp từ Intel, HP, và IBM. Dường như sẽ hợp lý nếu giả sử việc dùng các vi xử lý trong các ứng dụng nhúng (đa số các hệ thống sẽ dùng các bộ vi xử lý 64-bit trong vòng 5 năm tới).
Do đó, nhằm mục đích cải tiến hiệu suất trên các bộ vi xử lý mới và tạo ra hệ thống băm bảo mật hơn, Ross Anderson và Eli Biham đề xuất thuật toán Tiger, “A Fast New Hash Function” vào năm 1996.
Tiger được đề xuất để cải tiến tốc độ hoặc ít nhất là phải bằng với SHA-1 và gia đình MD. Nó nhanh như SHA-1 trên bộ vi xử lý 32-bit và nhanh hơn khoảng 3 lần trên vi xử lý 64-bit (DEC Alpha), và được cho là nhanh hơn SHA-1 trên các bộ vi xử lý 16-bit vì SHA-1 được thiết kế để chạy trên các máy 32-bit.
Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
Tiger tương thích với các bộ vi xử lý 64 bits và 32 bits, tránh được vấn đề xung đột, vấn đề bội số(chống lại các kiểu tấn công dùng bội số hay các hệ số của các giá trị băm để tìm ra được khoá dùng trong việc băm thông điệp).
Để cải tiến bảo mật, Tiger được thiết kế có chiều dài băm 192 bits. Tuy nhiên để cho tương thích với các ứng dụng hiện tại (sử dụng các thuật toán có chiều dài 128bits, 160 bits), Tiger được cải tiến thành các loại sau :
Tiger/160 có chiều dài là 160 bits. Thuật toán này tương thích với SHA-1. Tiger/128 có chiều dài là 128 bits. Thuật toán này tương thích với MD4, MD5, RIPE_MD, các hàm băm thuộc họ Snefru và các hàm băm khác.
Các giá trị trên có được bằng cách cắt giảm chiều dài 192 bits của nó.
4.2.2.2. Các bước xử lý trong thuật toán.
Message được chia thành các block 512 bits. Nếu block cuối cùng không đủ chiều dài thì bit 1 sẽ được thêm vào cuối.
Mỗi block được mã hóa riêng biệt với nhau bằng cùng hàm mã hóa. Hàm mã hóa :
• Giá trị hash key ban đầu được chia thành 3 phần (a, b, c).
• Việc tính toán hash key bao gồm 3 lần thông qua hàm pass, và schedule
theo thứ tự như sau :
pass(a, b, c, 5) key_schedule pass(c, a, b, 7) key_schedule pass(b, c, a, 9)
Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
• Hàm pass thực hiện 8 lần hàm round. Hàm round sử dụng four S-boxes và các phép hoán vị để bảo đảm rằng các giá trị trả ra sẽ khác nhau trong bất kỳ trường hợp nào khác.
• Trong hàm schedule, các giá trị a, b, c sẽ được biến đổi dạng dữ liệu để ngăn cản kẻ tấn công lợi dụng tính thưa của dữ liệu trong 3 vòng lặp qua hàm pass trên.
Tất cả các thuật toán được sử dụng có thể chạy song song.
4.2.2.3. Đánh giá thuật toán
Thuật toán này chỉ cần một vùng nhớ rất nhỏ chỉ khoảng 8 Kbyte do S- boxes thật sự không cần lưu trữ.
Nhờ vào việc tính toán hoán đổi liên tục mà hàm băm Tiger rất bảo mật. Nó chống được các phương pháp tấn công “meet-in-the-middle”, “birthday”.
Tính chất phi tuyến từ các S_box từ 8 bit thành 64 bit (đầu vào 8 bit, đầu ra 64 bit). Điều này tốt hơn nhiều so với việc chỉ kết hợp phép tính cộng với phép XOR (dùng các bit mang theo _ carry bit), và nó ảnh hưởng đến các bit xuất, không chỉ các bit lân cận.
Có một sự lan truyền mạnh, trong mỗi bit thông điệp ảnh hưởng đến tất cả 3 thanh ghi sau 3 vòng _ nhanh hơn những hàm băm khác. Việc lan truyền trong các từ 64 bit (và các S_box 64 bit) thì nhanh hơn nhiều khi các từ ngắn hơn được dùng.
Như ghi chú ở trên, tất cả các biện pháp tấn công đều tấn công trên kết quả của MDx hay Snefru ở một trong các khối trung gian. Tăng giá trị của kết quả trung gian lên 192 bit giúp ngăn chặn các cuộc tấn công này.
Tìm hiểu và phát triển cơ chế bảo mật hệ quản trị cơ sở dữ liệu MySQL
Cùng với việc lan truyền mạnh, nó giúp cho Tiger chống lại các tấn công tương đương với các tấn công khác nhau của Dobbertin trên MD4 (đó việc thay đổi một số bit nào đó trong thông điệp ảnh hưởng đến đa số các bit trong nhiều vòng, và kế đó sự khác biệt nhỏ nào có thể được thực hiện để hủy bỏ trong hàm pass trước đó).
Phép nhân của thanh ghi b trong mỗi vòng cũng góp phần cho việc chống lại các tấn công như vậy, do nó bảo đảm rằng các bit được dùng như đầu vào đến các S_box trong các vòng trước được trộn với những S_box khác, và với cùng S_box với một đầu vào khác. Phép nhân này cũng chống lại các tấn công trên các hàm băm, bởi vì các hằng số là khác nhau ở mỗi vòng.
Hàm feedforward ngăn cản các tấn công “meet-in-the-middle”, “birthday” tìm ra các ảnh trước đó của hàm băm (mặc dù sự phức tạp sẽ là 296).