Chuẩn mật mã nâng cao không chỉ đơn thuần là mã hóa và giải mã thông tin mà còn bao gồm nhiều vấn đề khác nhau cần được nghiên cứu và giải quyết như ứng dụng xây dựng các hàm băm phục vụ
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA VIỄN THÔNG I
Trang 2MỤC LỤC
MỤC LỤC 3
LỜI NÓI ĐẦU 4
CHƯƠNG I: TỔNG QUAN VỀ HÀM BĂM MẬT MÃ 5
1.1.Khát quát chung về hàm băm 5
1.2.Cấu trúc cơ bản của hàm băm 6
1.3.Các ứng dụng cơ bản của hàm băm 7
1.4 Giới thiệu một số họ hàm băm phổ biến 9
1.5.Một số hàm băm SHA 11
CHƯƠNG II:TÌM HIỂU HÀM BĂM SHA-3 13
2.1.Các phép hoán vị keccak-p 13
2.1.1.Trạng thái và mảng trạng thái 13
2.1.2.Ánh xạ bước 16
2.1.3.Hoán vị keccak-p[b,nr] 20
2.2.Cấu trúc sponge 21
2.3.Mở rộng hàm băm SHA-3 23
2.3.1.Mô tả về keccak(c) 23
2.3.2.Các hàm băm SHA-3 24
2.3.3.Các mở rộng đầu ra SHA-3 24
2.4.Độ bảo mật SHA-3 so với các hàm băm SHA 24
TỔNG KẾT 26
TÀI LIỆU THAM KHẢO 26
NHIỆM VỤ THÀNH VIÊN NHÓM 26
Trang 3LỜI NÓI ĐẦU
Với sự phát triển ngày càng nhanh chóng của Internet và các ứng dụng giao dịch điện tử trên mạng, nhu cầu bảo vệ thông tin trong các hệ thống và ứng dụng điện tử ngày càng được quan tâm và có ý nghĩa hết sức quan trọng Vì thế việc nghiên cứu về chuẩn mật mã nâng cao và ứng dụng nó trong các lĩnh vực bảo mật thông tin là rất cần thiết
Ứng dụng của chuẩn mật mã nâng cao đang được sử dụng ngày càng phổ biến trong nhiều ứng dụng khác nhau Chuẩn mật mã nâng cao không chỉ đơn thuần là mã hóa và giải mã thông tin mà còn bao gồm nhiều vấn đề khác nhau cần được nghiên cứu
và giải quyết như ứng dụng xây dựng các hàm băm phục vụ việc chứng thực nguồn gốc
Nội dung thông tin (kỹ thuật chữ ký điện tử), xác thực tính nguyên vẹn dữ liệu Một trong những hàm băm đang được sử dụng rộng rãi nhất hiện nay đó là hàm
băm SHA được phát triển bởi cục an ninh quốc gia Mĩ (National Security Agency hay NSA) Với nhiều ưu điểm và cũng đã có nhiều phiên bản khác nhau được phát hành tiêu biểu trong số đó là họ hàm băm SHA Bài báo cáo này chúng ta sẽ cùng nhau đi tìm hiểu rõ về hàm băm SHA-3
Trang 4CHƯƠNG I: TỔNG QUAN VỀ HÀM BĂM MẬT MÃ
1.1.Khát quát chung về hàm băm
Trong nghành mật mã học, hàm băm mật mã là hàm băm với một số tính chất bảo mật nhất định để phù hợp với việc sử dụng trong nhiều ứng dụng bảo mật thông tin đa dạng chứng thức và kiểm tra tính toàn vẹn của thông điệp Các hàm băm đóng vai trò
cơ bản trong mật mã hiện đại Hàm băm ℎ là một hàm toán học chuyển đổi các xâu bit
có độ dài hữu hạn tùy ý thành các xâu bit có độ dài 𝑛 cố định Đầu ra này được gọi là
mã băm (hay kết quả băm, giá trị băm, vết, hay tóm lược thông báo) Hàm băm được
đặc trưng bởi hai tính chất sau:
Tính chất nén: ℎ sẽ ánh xạ một đầu vào 𝑥 có độ dài bit hữu hạn tùy ý tới một đầu ra ℎ(𝑥) có độ dài bit 𝑛 hữu hạn (tùy vào thuật toán băm được sử dụng)
Tính chất dễ dàng tính toán: Với ℎ cho trước và một đầu vào 𝑥, có thể dễ dàng tính được ℎ(𝑥)
Hàm băm mật mã là hàm băm mà ngoài hai tính chất cơ bản trên còn phải thỏa mãn
ba tính chất an toàn được nêu dưới đây:
Tính một chiều: Đối với hầu hết đầu ra được xác định trước, không có khả năng tính toán để tìm một đầu vào bất kỳ mà khi băm sẽ cho ra đầu ra tương ứng (tức là cho trước một giá trị tóm lược 𝑦, không thể tìm một tiền ảnh 𝑥 sao cho ℎ(𝑥) = 𝑦)
Tính chống trùng mạnh: Không có khả năng tính toán để tìm một đầu vào thứ hai bất kỳ mà có cùng đầu ra như với đầu vào đã được xác định trước (tức là cho trước 𝑥 ∈
𝑋, không có khả năng tính toán để tìm tiền ảnh thứ hai 𝑥′ ∈ 𝑋 sao cho 𝑥′ ≠ 𝑥 và ℎ(𝑥′) = ℎ(𝑥))
Tính chống trùng yếu: Không có khả năng tính toán để tìm hai đầu vào bất kỳ
𝑥, 𝑥′ ∈ 𝑋 sao cho 𝑥′ ≠ 𝑥 và ℎ(𝑥′) = ℎ(𝑥)
Kích thước của thông điệp đầu vào 𝑥 là bất kỳ còn kích thước của giá trị băm ℎ của thông điệp là nhỏ vậy nên việc trùng giá trị băm là không thể loại bỏ Tính chống trùng của hàm băm là yêu cầu rằng việc tìm ra hai thông điệp đầu vào 𝑥 như vậy thì phải là rất khó khăn về mặt thời gian và tính toán
Hình 1.1: Ánh xạ giữa thông điệp và giá trị băm không phải là song ánh
Trang 51.2.Cấu trúc cơ bản của hàm băm
Theo định nghĩa hàm băm mật mã ta thấy rằng bản chất của hàm băm chính là một hàm nén Hiện tại hầu hết các hàm băm mật mã áp dụng cấu trúc hàm băm Merkle- Damrgard (MD5, SHA-1, SHA-2) hoặc cấu trúc Sponge (SHA-3)
Cấu trúc Mekle-Damrgard:
Đầu vào độ dài tùy ý
Hàm nén lặp
Đầu ra
Biến đổi đầu
ra có lựa chọn
Đầu ra có độ dài cố định
(a) Mô tả ở mức cao
Thêm các bit đệm (padding)
Thêm độ dài khối
g Đầu vào đã định dạng
(b) Mô tả chi tiết đầu vào ban đầu x
Hàm băm Tiền xử lý
Xử lý lặp Hàm nén
Đầu vào hàm băm là một thông báo 𝑥 có độ dài hữu hạn tùy ý được chia thành các khối bằng nhau có độ dài cố định là 𝑟-bit Bước tiền xử lý này thường gồm việc thêm các bit mở rộng (gọi là padding) để thông báo 𝑥 có độ dài bit là bội của độ dài khối 𝑟,
và (vì các lý do an toàn) thường gồm 1 khối hoặc một phần khối để chỉ độ dài bit của đầu vào chưa được thêm vào Mỗi khối 𝑥𝑖 được dùng làm đầu vào có độ dài cố định
cho hàm băm bên trong (hàm nén của ℎ, thực hiện tính một kết quả trung gian mới
có độ dài bit là 𝑛) là một hàm của kết quả trung gian trước đó có độ dài là 𝑛 bit và khối
Trang 6𝐻0 = 𝐼𝑉; 𝐻𝑖 = (𝐻𝑖−1,𝑥𝑖),1 ≤ 𝑖 ≤ 𝑡; ℎ(𝑥) = 𝑔(𝐻𝑡)
𝐻𝑖−1 được coi như biến chuỗi giữa bước 𝑖 − 1 và bước 𝑖, và 𝐻0 là giá trị khởi đầu
được định nghĩa trước hay gọi là giá trị khởi đầu 𝐼𝑉 Biến đổi đầu ra có lựa chọn 𝑔 được
dùng trong bước cuối cùng để ánh xạ biến chuỗi 𝑛 −bit thành một kết quả 𝑚 −bit 𝑔(𝐻𝑡),
𝑔 thường là ánh xạ đồng nhất 𝑔(𝐻𝑡) = 𝐻𝑡 Cấu trúc Sponge: Cấu trúc Sponge là một cấu trúc mới, được nghiên cứu và áp
dụng trong hàm SHA-3, cấu trúc này sẽ được trình bày chi tiết ở phần sau
1.3.Các ứng dụng cơ bản của hàm băm
Hàm băm mật mã được đánh giá là một thuật toán mật mã linh hoạt nhất Nó được
sử dụng trong nhiều ứng dụng an toàn và các giao thức Internet Sau đây là một số ứng
dụng quan trọng của hàm băm mật mã:
Xác thực thông báo: Xác thực thông báo làm một cơ chế được sử dụng để xác thực
tính toàn vẹn của một thông báo Xác thực thông báo đảm bảo rằng dữ liệu nhận được
là chính xác giống như khi nó được gửi (tức là không bị sửa đổi, chèn, xóa hay phát
lại), và trong nhiều trường hợp định danh của người gửi là được bảo vệ Khi một hàm
băm được sử dụng để cung cấp cơ chế xác thực thông báo, giá trị hàm băm thường
được gọi là một mã băm Có một số phương pháp sử dụng mã băm để cung cấp cơ chế
xác thực thông báo như hình sau:
Trang 7Hình 1.3: Một số sơ đồ sử dụng hàm băm để xác thực thông báo
Theo sơ đồ 1.3(a): hai thực thể liên lạc 𝐴 và 𝐵 có một khóa bí mật 𝐾 đã chia sẻ Khi
𝐴 cần gửi một thông báo cho 𝐵, thì 𝐴 tính mã băm 𝐻 = 𝐻(𝑀) Mã băm được nối vào thông báo 𝑀 và được mã hóa bằng khóa bí mật 𝐾 để tạo bản mã 𝐸𝐾(𝑀||𝐻(𝑀)) truyền cho 𝐵 Người nhận 𝐵 xác thực thông báo này như sau: trước tiên 𝐵 giải mã bản mã nhận được bằng khóa bí mật 𝐾 đã chia sẻ, sau đó tính lại mã băm từ thông báo 𝑀 và so sánh với mã băm nhận được kèm theo thông báo Nếu hai giá trị này giống nhau thì thông báo được xác thực Do chỉ có người gửi 𝐴 và người nhận 𝐵 biết khóa bí mật 𝐾,
do đó thông báo phải đến từ 𝐴 và không bị sửa đổi trái phép Trong lược đồ này, mã băm được sử dụng để đảm bảo tính xác thực thông báo, còn hàm mã hóa 𝐸 được sử dụng để đảm bảo tính bí mật của thông báo
Theo sơ đồ 1.3 (b), duy nhất mã băm được mã hóa bằng mật mã khóa bí mật Điều này sẽ làm giảm gánh nặng xử lý cho những ứng dụng không cần giữ bí mật thông báo, mà chỉ cần đảm bảo tính toàn vẹn của thông báo
Theo sơ đồ 1.3 (c), duy nhất hàm băm được sử dụng để xác thực thông báo Kỷ thuật này yêu cầu hai thực thể liên lạc 𝐴 và 𝐵 phải chia sẻ một tham số bí mật 𝑆 𝐴 tính giá trị băm trên 𝑀 và 𝑆 như sau: 𝐻 = 𝐻(𝑀||𝑆) và bổ sung vào thông báo gửi cho 𝐵 Do 𝐵 cũng
có tham số bí mật 𝑆 nên có thể tính lại giá trị băm để xác thực Hơn nữa, tham số bí mật 𝑆 không được gửi đi nên đối phương không thể sửa đổi thông báo mà không bị phát hiện Theo sơ đồ 1.3 (d), một hàm mã hóa khóa bí mật được bổ sung vào sơ đồ trên để đảm bảo thêm tính bí mật của thông báo
Chữ ký số: Chữ ký số là một chuỗi số, kết quả của phép biến đổi mật mã trên thông
báo nhằm cung cấp một phương tiện để triển khai tính xác thực của nguồn gốc thông báo, tính toàn vẹn của dữ liệu và tính không thể chối bỏ của người ký
Khi hàm băm được sử dụng trong lược đồ chữ ký số, giá trị băm của thông báo được
mã hóa bởi một khóa riêng của người gửi Bất kỳ ai, biết khóa công khai của người gửi đều
có thể xác thực tính toàn vẹn của thông báo Hình 4 mô tả 2 phương pháp sử dụng giá trị băm để cung cấp một chữ ký số
E H M
Trang 8người sử dụng Nghĩa là để sử dụng ứng dụng, người sử dụng phải qua một cơ chế chứng
thực tên người sử dụng và mật khẩu
Giả sử mật khẩu được lưu giữ dưới dạng thông thường, không mã hóa, tại một nơi nào đó trên máy tính cá nhân hay máy chủ, trong một tập tin dữ liệu hay trong hệ quản trị cơ sở dữ liệu Như vậy sẽ xuất hiện một nguy cơ là một người khác có thể mở được tập tin dữ liệu hoặc cơ sở dữ liệu, và xem trộm được mật khẩu Như vậy mật khẩu không thể được giữ bí mật tuyệt đối
Phương pháp bảo vệ mật khẩu hiệu quả nhất hiện nay là dùng hàm băm Khi người
sử dụng đăng ký mật khẩu, giá trị băm của mật khẩu được tính bằng một hàm băm nào
đó (SHA-1, SHA-2…) Giá trị băm đươc lưu trữ vào tập tin hay cơ sở dữ liệu Vì hàm băm là một chiều, nên dù biết được giá trị băm và loại hàm băm, kẻ tấn công cũng không thể suy ra được mật khẩu Khi người sử dụng đăng nhập, mật khẩu đăng nhập được tính giá trị băm và so sánh với giá trị băm đang lưu trữ Do tính chống trùng, chỉ có một mật khẩu duy nhất có giá trị băm tương ứng, nên không ai khác ngoài người sử dụng có mật khẩu đó mới có thể đăng nhập ứng dụng
Ứng dụng tải dữ liệu trên mạng: Hàm băm có thể giúp chúng ta phát hiện ra những
trường hợp lỗi khi chúng ta tải dữ liệu trên mạng, nếu chất lượng mạng không tốt thì có thể xảy ra lỗi trong quá trình tải làm cho tập tin tại máy khách khác với tập tin trên máy chủ
1.4 Giới thiệu một số họ hàm băm phổ biến
Đã có rất nhiều hàm băm được công bố và được sử dụng trong thực tế (bao gồm cả các hàm băm có khóa và các hàm băm không có khóa) Bảng 1 cho chúng ta một số hàm băm với các thông số tương ứng:
Trang 9 Hàm băm MD5:
Ronald Rivest là người đã phát minh ra các hàm băm MD2, MD4 (1990) và MD5 (1991) Hàm băm MD5 được phát triển lên từ MD4 và trước đó là MD2, là một cải tiến của MD4 và là hàm băm được sử dụng rất rộng rãi, nguyên tắc thiết kế của hàm băm MD5 là nguyên tắc chung cho rất nhiều hàm băm khác
Hàm băm MD5 nhận thông báo đầu vào có độ dài tối đa 264 bit Thông báo này được thực hiện đệm sau đó chia thành các khối con với độ dài 512 bit Các khối con 512 bit này sẽ là đầu vào của thuật toán băm, bên trong thuật toán mỗi khối 512 bit lại được chia ra 16 khối 32 bit và đi qua bốn vòng lặp của MD5
Mỗi khối thống báo con 512 bit qua xử lý sẽ cho đầu ra là một khối 128 bit, chính
là giá trị băm của thông báo đầu vào tương ứng Theo cấu trúc Mekle-Damrgard giá trị băm này sẽ là đầu vào để xử lý khối thông báo con tiếp theo Tiếp tục xử lý, đầu ra cuối cùng là một khối 128 bit, là giá trị băm nhận được của thông báo đầu vào
Hàm băm MD5 đã được cải tiến để khắc phục những hạn chế và những điểm mất
an toàn trong MD4 Mặc dù năm 1993, Den Boer và Bosselaers đã tìm ra các va chạm trong việc sử dụng hàm nén của MD5, nhưng tới nay MD5 vẫn được sử dụng rộng rãi trong các ứng dụng thực tế do độ an toàn nó mang lại vòn đủ đáp ứng nhu cầu
Họ các Hàm băm SHA
Thuật toán băm an toàn (SHA) đã được NIST và NSA thiết kế xây dựng Sau đó được NIST đề xuất làm chuẩn hàm băm an toàn (SHS) bao gồm các thuật toán băm: SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 và SHA-3
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ý bao gồm các thao tác:
- Mở rộng thông báo
- Phân tích thông báo đã mở rộng thành các khối 𝑚-bit
- Khởi tạo giá trị băm ban đầu
Bước tính toán giá trị băm bao gồm các thao tác:
- Làm 𝑁 lần các công việc sau:
+ Tạo bảng phân bố thông báo (message schedule) từ khối thứ 𝑖
+ Dùng bảng phân bố thông báo cùng với các hàm, hằng số, các thao tác trên word để tạo giá trị băm 𝑖
- Sử dụng giá trị băm cuối cùng để tạo thông báo rút gọn
Thông báo 𝑀 được đệm thêm các bit theo quy tắc đệm trước khi thực hiện băm, nhằm đảm bảo thông báo đầu vào cho thuật toán băm có độ dài là bội số 512 hoặc 1024 bit, tùy thuộc vào thuật toán băm
Tiếp theo thông báo sẽ được phân tích thành 𝑁 khối 𝑚 bit Đối với các hàm băm
SHA-1, SHA-256 giá trị 𝑚 là 512 bit, và đối với các hàm băm SHA-384 và SHA-256 thì 𝑚 là 1024 bit Những khối thông báo con này sẽ là đầu vào cho thuật toán băm
Trang 101.5.Một số hàm băm SHA
SHA (Secure Hash Algorithm hay giải thuật băm bảo mật) gồm năm giải thuật được chấp nhận bởi FIPS dùng để chuyển một đoạn dữ liệu nhất định thành một đoạn dữ liệu cĩ chiều dài khơng đổi với xác suất khác biệt cao Những giải thuật này được gọi
là "an tồn", theo chuẩn FIPS 180-2
SHA-1:
SHA-1 được phát triển như một phần của dự án Capstone của Chính phủ Hoa Kỳ Phiên bản đầu tiên, thường được gọi là SHA-0 được xuất bản năm 1993 với tiêu đề Secure Hash Standard, FIPS PUB 180, bởi NIST (Viện Tiêu chuẩn và Cơng nghệ Quốc gia Hoa Kỳ) Nĩ đã bị NSA rút lại ngay sau khi xuất bản và được thay thế bởi phiên bản sửa đổi, được xuất bản năm 1995 trong FIPS PUB 180-1 và thường được đặt tên là SHA-
1 SHA-1 tạo ra bản tĩm tắt cĩ kích thước 160 bit (20 byte) Các va chạm chống lại thuật tốn SHA-1 đầy đủ cĩ thể được tạo ra bằng cách sử dụng tấn cơng phá vỡ Do đĩ, hàm băm này cho đến nay được coi là khơng đủ an tồn
SHA-2:
SHA-2 là một tập hợp các hàm băm mật mã được thiết kế bởi Cơ quan an ninh quốc gia Hoa Kỳ (NSA), được xuất bản lần đầu tiên vào năm 2001 Chúng được xây dựng bằng cấu trúc Merkle–Damgård, chức năng nén một chiều của nĩ được xây dựng bằng cấu trúc Davies–Meyer từ một hệ mật mã khối chuyên dụng
SHA-2 về thực chất bao gồm hai thuật tốn băm: SHA-256 và SHA-512 SHA-224
là một biến thể của 256 với các giá trị khởi tạo và đầu ra bị cắt bỏ khác nhau
384 và 512/224 và 512/256 ít được biết đến là tất cả các biến thể của
SHA-512 SHA-512 an tồn hơn SHA-256 và thường nhanh hơn SHA-256 trên các máy 64 bit như AMD64
Do cĩ nhiều phiên bản thuật tốn khác nhau do đĩ kích thước đầu ra của họ SHA-2 cũng khác nhau tùy theo thuật tốn Phần mở rộng của tên phía sau tiền tố “SHA” chính
là độ dài của thơng điệp băm đầu ra Ví dụ với SHA-224 thì kích thước đầu ra là 224 bit (28 byte), SHA-256 tạo ra 32 byte, SHA-384 tạo ra 48 byte và cuối cùng là SHA- 512 tạo ra 64 byte Và chúng ta cĩ thể đã biết rằng Bitcoin sử dụng hàm băm SHA-256 là một phiên bản trong họ SHA-2 này
SHA-3:
SHA-3 ( Thuật tốn băm an tồn 3 ) là thành viên mới nhất của họ tiêu chuẩn Thuật tốn băm an tồn , được phát hành bởi NIST vào ngày 5 tháng 8 năm 2015 Mặc dù thuộc cùng một loạt tiêu chuẩn, SHA -3 bên trong khác với cấu trúc giống MD5 của SHA-1 và SHA-2
SHA-3 là một tập hợp con của các gia đình nguyên thủy rộng lớn hơn mật
mã Keccak, được thiết kế bởi Guido Bertoni , Joan Daemen , Michặl Peeters, và Gilles Van Assche , xây dựng dựa trên RadioGatún Các tác giả của Keccak đã đề xuất các cách sử dụng bổ sung cho hàm, chưa được tiêu chuẩn hĩa bởi NIST, bao gồm mật mã luồng , mã hĩa được xác thựchệ thống, một lược đồ băm "cây" để băm nhanh hơn trên một số kiến trúc nhất định, và AEAD mật mã Keyak và Ketje
Trang 11NIST hiện không có kế hoạch rút SHA-2 hoặc loại bỏ nó khỏi Tiêu chuẩn băm an toàn đã sửa đổi Mục đích của SHA-3 là nó có thể được thay thế trực tiếp cho SHA-2 trong các ứng dụng hiện tại nếu cần thiết và để cải thiện đáng kể tính mạnh mẽ của bộ công cụ thuật toán băm tổng thể của NIST.Những người tạo ra thuật toán Keccak và các hàm SHA-3 đề xuất sử dụng hàm KangarooTwelve nhanh hơn với các thông số được điều chỉnh và chế độ băm cây mới mà không cần thêm chi phí cho các kích thước thư nhỏ
Thuật toán Keccak là công trình của Guido Bertoni, Joan Daemen (người cũng đồng thiết kế mật mã Rijndael với Vincent Rijmen ), Michael Peeters và Gilles Van
Assche Nó dựa trên các thiết kế hàm băm PANAMA và RadioGatún PANAMA được thiết kế bởi Daemen và Craig Clapp vào năm 1998 RadioGatún, một người kế nhiệm của PANAMA, được thiết kế bởi Daemen, Peeters, và Van Assche, và đã được trình bày tại Hội thảo NIST Hash trong năm 2006 [15] Các thực hiện tham khảo mã nguồn đã được dành riêng cho miền công cộng thông qua miễn trừ CC0
Năm 2006 NIST bắt đầu tổ chức cuộc thi hàm băm NIST để tạo ra một tiêu chuẩn băm mới, SHA-3 SHA-3 không nhằm thay thế SHA-2 , vì không có cuộc tấn công đáng kể nào vào SHA-2 đã được chứng minh Do các cuộc tấn công thành công
vào MD5 , SHA-0 và SHA-1, NIST nhận thấy nhu cầu về một hàm băm mật mã thay thế, khác biệt, đã trở thành SHA-3
Sau một thời gian thiết lập, hồ sơ tuyển sinh sẽ được nộp vào cuối năm 2008
Keccak được chấp nhận là một trong 51 ứng cử viên Vào tháng 7 năm 2009, 14 thuật toán đã được chọn vào vòng hai Keccak tiến đến vòng cuối cùng vào tháng 12 năm
2010
Trong cuộc thi, những người tham gia được phép "tinh chỉnh" các thuật toán của họ
để giải quyết các vấn đề đã được phát hiện Những thay đổi đã được thực hiện đối với Keccak là:
Số lượng vòng đã được tăng từ 12 + ℓ lên 12 + 2ℓ để bảo mật hơn
Phần đệm thông báo đã được thay đổi từ một lược đồ phức tạp hơn thành
một mẫu 10 * 1 đơn giản được mô tả bên dưới
Tỷ lệ r đã được tăng đến giới hạn bảo mật, thay vì làm tròn xuống lũy thừa gần nhất của 2
Vào ngày 2 tháng 10 năm 2012, Keccak được chọn là người chiến thắng trong cuộc thi
Vào năm 2014, NIST đã xuất bản dự thảo FIPS 202 "Tiêu chuẩn SHA-3: Hàm băm dựa trên hoán vị và các hàm đầu ra có thể mở rộng" FIPS 202 đã được phê duyệt vào ngày 5 tháng 8 năm 2015
Vào ngày 5 tháng 8 năm 2015 NIST thông báo rằng SHA-3 đã trở thành một tiêu chuẩn băm
Trang 12CHƯƠNG II:TÌM HIỂU HÀM BĂM SHA-3
2.1.Các phép hoán vị keccak-p
Các phép hoán vị Keccak-p được mô tả với hai tham số:
Độ dài cố định của các chuỗi được hoán vị, được gọi là độ rộng của phép hoán vị
Số lượng các phép lặp của một phép chuyển đổi nội bộ, được gọi là một vòng
Độ rộng được ký hiệu là b và số lượng vòng được ký hiệu là 𝑛𝑟 Phép hoán vị
Keccak-p với 𝑛𝑟 vòng và độ rộng 𝑏 được ký hiệu là keccak-𝑝[𝑏, 𝑛𝑟]; phép hoán vị được định nghĩa cho 𝑏 bất kỳ {25,50,100, 200, 400,800,1600} và số nguyên dương n r bất
kỳ
Một vòng của phép hoán vị Keccak-p được ký hiệu là Rnd, bao gồm một chuỗi năm phép biến đổi được gọi là các ánh xạ bước (step mapping) Tập các giá trị 𝑏 bit đầu vào của phép hoán vị đi qua các biến đổi liên tiếp của các ánh xạ bước, cuối cùng thành đầu ra được gọi là trạng thái (state)
2.1.1.Trạng thái và mảng trạng thái
a,Khái niệm trạng thái và mảng trạng thái
Trạng thái là một mảng các bit được liên tục cập nhập trong quá trình xử lý Đối với một phép hoán vị Keccak-𝑝, trạng thái được biểu diễn bằng một chuỗi hoặc một mảng
ba chiều
Trạng thái cho phép hoán vị keccak-𝑝[𝑏, 𝑛𝑟] bao gồm 𝑏 bit Bản đặc tả thông số kỹ thuật trong bộ tiêu chuẩn này bao gồm hai đại lượng khác liên quan đến 𝑏: 𝑏 25⁄ và log2𝑏 25⁄ , lần lượt ký hiệu là 𝑤 và 𝑙 Bảy giá trị có thể của những biến này đối với các phép hoán vị Keccak-p được cho trong bảng dưới đây:
Bảng 2.1: Độ rộng và số liệu liên quan đến phép hoán vị Keccack-p
Có thể biểu diễn trạng thái đầu vào và đầu ra của phép hoán vị là các chuỗi b bit và biểu diễn trạng thái đầu vào và đầu ra của các ánh xạ bước là một mảng bit 5 5 w Nếu S là ký hiệu một chuỗi biểu diễn trạng thái, thì các bit của nó được đánh số từ
0 đến b 1, do đó:
[0]|| [1]|| || [ 2]|| [ 1]
Nếu A là ký hiệu của một mảng bit 5 5 w biểu diễn trạng thái, thì chỉ số của nó
là bộ ba số nguyên ( , , )x y z sao cho 0 x 5,0 y 5 và 0 z w Bit tương ứng với ( , , )x y z được ký hiệu là A x y z[ , , ] Mảng trạng thái biểu diễn cho trạng thái bằng một mảng ba chiều với chỉ số được xác định theo cách này