2.3.1. Mô tả về Keccak[c]
Keccak là họ các hàm sponge với phép hoán vị Keccak-, +, là hàm cơ bản và sử dụng quy tắc đệm pad10*1. Họ hàm được tham số hóa bằng các lựa chọn rate r
và hiệu suất c sao cho r c+
trong tập hợp {25,50,100,200,400,800,1600}, tức là một trong bảy giá trị của b.
Khi giới hạn trường hợp b=1600
, họ Keccak được ký hiệu là Keccak[c]; trong trường hợp này, r
được xác định bằng cách chọn c. Cụ thể, Keccak[ ] SPONGE[Keccakc = − p[1600,24],pad10 *1,1600−c].
Do đó, cho trước một thông báo M
và độ dài đầu ra d,
Keccak[ ]( , ) SPONGE[Keccakc M d = − p[1600,24],pad10 *1,1600−c M d]( , ). 2.3.2. Các hàm băm SHA-3
Bốn hàm băm SHA-3 được định nghĩa từ hàm Keccak[c] bằng cách nối thêm hai bit vào thông báo và mô tả độ dài đầu ra như sau:
SHA3 224( ) Keccak[448]( || 01,224); SHA3 256( ) Keccak[512]( || 01,256); SHA3 384( ) Keccak[768]( || 01,384); SHA3 512( ) Keccak[1024]( || 01,512). M M M M M M M M − = − = − = − =
Trong tất cả các trường hợp, hiệu suất (capacity) gấp đôi độ dài tóm lược, tức là c=2d
miền (domain separation); nghĩa là phân loại các thông báo cho các hàm băm SHA-3 từ các thông báo cho XOF SHA-3, cũng như những lĩnh vực khác có thể được xác định trong tương lai.
2.3.3.Các hàm mở rộng đầu ra SHA-3
Hai hàm XOF SHA-3, SHAKE128 và SHAKE256 được định nghĩa từ hai hàm trung gian gọi là RawSHAKE128 và RawSHAKE256, được định nghĩa từ hàm Keccak[c].
Cụ thể, nếu thông báo được ký hiệu là M
và độ dài đầu ra ký hiệu là d, thì RawSHAKE128( , ) Keccak[256]( ||11, ), RawSHAKE256( , ) Keccak[512]( ||11, ). M d M d M d M d = =
Hai bit được nối thêm vào thông báo tức là 11 trong trường hợp này hỗ trợ cho việc chia tách miền (domain separation).
Hai hàm XOF SHA-3 là
SHAKE128( , ) RawSHAKE128( ||11, ), SHAKE256( , ) RawSHAKE256( ||11, ). M d M d M d M d = =
Trong trường hợp này, các bit 11 được nối thêm vào thông báo nhằm tương thích với lược đồ mã Sakura. Lược đồ này sẽ tạo thuận lợi cho quá trình phát triển phần mở rộng của hàm số được gọi là băm dạng cây (tree hashing), trong đó quá trình xử lý song song có thể ứng dụng cho tính toán và cập nhật các giá trị tóm lược của thông báo dài một cách hiệu quả hơn.
Hai hàm XOF SHA-3 cũng được định nghĩa trực tiếp từ Keccak như sau: SHAKE128( , ) Keccak[256]( ||1111, ), SHAKE256( , ) Keccak[512]( ||1111, ). M d M d M d M d = =