Ứng cử viên cho chuẩn Hash mới vào năm 2012

15:02 | 05/01/2009

Tổ chức NIST (National Institute of Standards and Technology) đang tiến hành cuộc thi tìm kiếm ứng viên thay thế cho chuẩn hash phổ biến hiện nay - SHA (FIPS 180-2) - đối tượng bị tấn công ngày càng nghiêm trọng. Tiêu chuẩn hàm hash mới, được lựa chọn vào năm 2012, được đặt tên là SHA-3. Như vậy, sau 10 năm, SHA-2 sẽ được thay thế bằng một tiêu chuẩn mới.

Cuộc thi mới của NIST cho thấy có nhiều nhóm tác giả quan tâm nghiên cứu các hàm hash. Bruce Schneier dự đoán có khoảng 80 ứng viên, trên thực tế đến tháng 10/2008, NIST nhận được 64 hồ sơ. Đây là số hồ sơ đáng kể nếu so sánh với cuộc thi tìm thuật toán cho chuẩn AES vào năm 1998, khi đó NIST chỉ nhận được 16 ứng viên và Rijndael đã trở thành kẻ chiến thắng.


Bruce Schneier cùng các đồng nghiệp (thuộc BT Group): Neils Ferguson, Stefan Lucks, Doug Whiting, Mihir Bellare, Tadayoshi Kohno, Jon Callas và Jesse Walker đã công bố một ứng viên cho cuộc thi của NIST, đó là hàm hash Skein. Có thể coi Skein là ứng viên đầu tiên được công bố
Bruce Schneier tuyên bố “Skein là họ các hàm hash mới trên cơ sở mật mã học. Thiết kế của Skein đảm bảo tốc độ, độ bảo mật, tính đơn giản cao, được thiết kế modul đơn giản, mềm dẻo dễ phân tích đánh giá”.
Với Skein-512, chế độ ứng dụng chủ yếu của thuật toán này, Skein có thể băm dữ liệu với tốc độ 6.1 xung nhịp mỗi byte trên bộ vi xử lý 64 bit. Điều đó có nghĩa là, với CPU x64 loại Core 2 Duo hoạt động ở tần số xung nhịp 3.1 GHz, Skein có thể băm 500MB dữ liệu mỗi giây trên mỗi lõi. Tốc độ đó nhanh gần gấp 2 lần SHA-512 và nhanh gấp 3 lần SHA-256. Khi cài đặt ở chế độ song song, tốc độ xử lý còn cao hơn nữa. Skein còn đạt được tốc độ cao đối với các thông điệp ngắn, Skein-512 đạt tới tốc độ 1000 xung nhịp đối với các thông điệp ngắn.
Skein được thiết kế trên cơ sở ứng dụng thuật toán mã khối Three-Fish. Tấn công có hiệu quả cao nhất đối với Three-Fish chỉ đạt ở 25 vòng trên tổng cộng 72 vòng, với hệ số an toàn là 2,9, trong khi AES mất an toàn với 6 vòng trên tổng số 10 vòng, hệ số an toàn chỉ là 1,7. Hơn nữa, Skein còn được trang bị thêm một số thuộc tính an toàn xác suất tăng cường mức bảo mật của thuật toán. Thuật toán Skein được thiết kế mềm dẻo để hoạt động ở các chế độ 256, 512 và 1024 bit và có thể đặt kích thước bất kỳ cho đầu ra. Những thiết lập mềm dẻo đó cho phép thuật toán Skein có thể được sử dụng cho nhiều ứng dụng khác nhau: sinh số ngẫu nhiên, mã dòng, chức năng sinh khóa hay xác thực mà không cần HMAC.


Hình 1. Skein ở chế độ bình thường

Hình 1 biểu diễn thuật toán Skein hoạt động ở chế độ bình thường.Các UBI (Unique Block Iteration) được sử dụng nối tiếp, thông điệp cần băm được đưa vào UBI thứ 2 có thể có kích thước đến 296-1 byte. UBI có lõi là thuật toán mật mã (Three-Fish trong trường hợp Skein) được sử dụng ở chế độ móc xích (chaining mode) thực hiện ánh xạ nén độ dài bất kỳ ở đầu vào sang độ dài cố định của đầu ra.


    Hình 2. Thuật toán Three-Fish 512 (biểu diễn 4 trong tổng số 72 vòng)

Hình 2 biểu diễn 4 trong số 72 vòng của thuật toán Three-Fish với kích thước khối 512 bit, trong đó MIX là một hàm phi tuyến thành phần của thuật toán. Mỗi hàm MIX bao gồm 1 phép cộng số học, 1 phép cộng logic và 1 phép quay cố định.
MIX được biểu diễn ở hình 3 và hoạt động trên cơ sở 2 từ 64 bit.
Skein có thể ứng dụng trên nhiều nền khác khau, cả phần cứng và phần mềm. Skein-512 có thể cài đặt với 200 byte trạng thái. Skein-256 có thể ứng dụng trên các thẻ thông minh 8 bit do chỉ cần 100 byte bộ nhớ


Hình 3. Hàm phi tuyến MIX