[123doc] Tieu Luan Tim Hieu Ham Bam Sha 3

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 25

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA VIỄN THÔNG I


----------

BÀI TIỂU LUẬN


MÔN HỌC: AN NINH MẠNG VIỄN THÔNG
ĐỀ TÀI: TÌM HIỂU HÀM BĂM SHA-3
MỤ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

3
LỜ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.

4
CHƯƠ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

5
1.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:

(b) Mô tả chi tiết


đầu vào ban đầu x

(a) Mô tả ở mức cao


Hàm băm

Đầu vào độ dài tùy ý


Tiền xử lý

Thêm các bit đệm (padding)

Hàm
nén lặp Thêm độ dài khối

Đầu ra có độ
Đầu vào đã định dạng
dài cố định
x  x1 x 2  x t Xử lý lặp

Biến đổi đầu Hàm nén


ra có lựa chọn x
Đầu ra i

H i

H t
g

Đầu ra h  x   g  H t 
Hình 1.2: Cấu trúc Mekle-Damrgard
Hầu hết các hàm băm không có khóa ℎ được thiết kế như các xử lý lặp để băm các
đầu vào có độ dài hữu hạn tùy ý, bằng việc xử lý các khối đầu vào có độ dài cố định,
như chỉ ra trong hình 2.
Đầ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
đầu vào tiếp theo 𝑥𝑖+1 .
Gọi 𝐻𝑖 là ký hiệu phần kết quả sau bước thứ 𝑖, xử lý chung cho hàm băm lặp với
đầu vào 𝑥 = 𝑥1 𝑥2 … 𝑥𝑡 có thể được mô tả như sau:
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:

Người gửi A Người nhận B

H
M
M || E D
So sánh

H K K
EK ( M || H  M ) H(M)
(a)

H
M
M K || K
So sánh

H E D
EK  H  M  
(b)

M || M S || H
So sánh

S || H
H(M || S)
(c)

7
M || E D M || H
S
So sánh

S || H K K
H(M || S)
EK ( M || H  M || S )
(d)

Hì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ố.
H
M
M || PU A
PRA
So sánh

H E D
(a) EPRA  H  M  

8
H
M || E D M
PRA PU A
So sánh
H E K K D
(b)
EK ( M || EPRA  H  M  ) EK  H  M  

Hình 1.4: Một số sơ đồ sử dụng hàm băm trong lược đồ chữ ký số


Lưu trữ mật khẩu: Hầu hết các ứng dụng phần mềm ngày nay đều có chứng thực
ngườ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:

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.

10
1.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 toà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
toá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 toà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 toán băm: SHA-256 và SHA-512. SHA-224
là một biến thể của SHA-256 với các giá trị khởi tạo và đầu ra bị cắt bỏ khác nhau. SHA-
384 và SHA-512/224 và SHA-512/256 ít được biết đến là tất cả các biến thể của SHA-
512. SHA-512 an toà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 toá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 toá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 toán băm an toàn 3 ) là thành viên mới nhất của họ tiêu chuẩn Thuật
toán băm an toà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 , Michaë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.
11
NIST 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.

12
CHƯƠ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 nr 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à
log 2 𝑏⁄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 25 50 100 200 400 800 1600


w 1 2 4 8 16 32 64
l 0 1 2 3 4 5 6

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 đó:
S  S[0]|| S[1]|| ...|| S[b  2]|| S[b  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.

13
Mảng trạng thái: Đối với một phép hoán vị keccak-𝑝, một mảng 5 × 5 × 𝑤 bit biểu
diễn trạng thái. Các chỉ số thỏa mãn: 0 ≤ 𝑥 ≤ 4, 0 ≤ 𝑦 ≤ 4, và 0 ≤ 𝑧 ≤ (𝑤 − 1).
b,Thành phần của mảng trạng thái
Mảng trạng thái cho một phép hoán vị Keccak-p và các mảng con ít chiều hơn được
minh họa trong hình 7 dưới đây đối với trường hợp b  200 , do đó w  8 . Các mảng
con hai chiều được gọi là các sheet, plane và slice, và các mảng con một chiều được gọi
là clumn (cột), row (hàng) và lane:

Hình 2.1: Thành phần của mảng trạng thái theo các chiều
Trong đó:
Sheet: là một mảng con gồm b / 5 bit theo trục tọa độ x cố định.
Plane: là một mảng con gồm b / 5 bit theo trục tọa độ y cố định.
slice: là một mảng con gồm 25 bit theo trục tọa độ z cố định.
Lane: là một mảng con gồm b / 25 bit theo các trục tọa độ x và y cố định.
Row (hàng): là một mảng con gồm 5 bit theo tọa độ y và z cố định
Column (cột): là một mảng con gồm 5 bit với trục tọa độ x và z không đổi.
c,Chuyển từ chuỗi sang mảng trạng thái
Cho S là ký hiệu của một chuỗi b bit biểu diễn cho trạng thái của phép hoán vị
Keccak  p[b, nr ] . Mảng trạng thái tương ứng ký hiệu là A được định nghĩa như
sau:
Đối với mọi bộ ba ( x, y, z ) sao cho 0  x  5,0  y  5 và 0  z  w , ta có:
A[ x, y, z ]  S[ w(5 y  x)  z ] .
Ví dụ, nếu b  1600 , thì w  64 , do đó:
A[0,0,0]=S[0] A[1,0,0]=S[64] A[2,0,0]=S[128] A[3,0,0]=S[192]
A[0,0,1]=S[1] A[1,0,1]=S[65] A[2,0,1]=S[129] A[3,0,1]=S[193]

14
A[0,0,2]=S[2] A[1,0,2]=S[66] A[2,0,2]=S[130] A[3,0,2]=S[194]

A[0,0,62]=S[62] A[1,0,62]=S[126] A[2,0,62]=S[190] A[3,0,62]=S[254]


A[0,0,63]=S[63] A[1,0,63]=S[127] A[2,0,63]=S[191] A[3,0,63]=S[255]

A[4,0,0]=S[256] A[0,1,0]=S[320] A[1,1,0]=S[384] A[2,1,0]=S[448]
A[4,0,1]=S[257] A[0,1,1]=S[321] A[1,1,1]=S[385] A[2,1,1]=S[449]
A[4,0,2]=S[258] A[0,1,2]=S[322] A[1,1,2]=S[386] A[2,1,2]=S[450]

A[4,0,62]=S[318] A[0,1,62]=S[382] A[1,1,62]=S[446] A[2,1,62]=S[510]


A[4,0,63]=S[319] A[0,1,63]=S[383] A[1,1,63]=S[447] A[2,1,63]=S[511]

d,Chuyển từ mảng trạng thái sang chuỗi
Cho A là ký hiệu của một mảng trạng thái. Biểu diễn chuỗi tương ứng ký hiệu là
S có thể được cấu trúc từ các lane và plane của A như sau:
Đối với mỗi cặp số nguyên (i, j ) sao cho 0  i  5 và 0  j  5 , xác định chuỗi
Lane(i, j ) :
Lane(i, j )  A[i, j ,0] || A[i, j ,1] || A[i, j ,2] || ...|| A[i, j , w  2] || A[i, j , w  1] .
Ví dụ, nếu b  1600 , thì w  64 do đó:
Lane(0,0)  A[0,0,0] || A[0,0,1] || A[0,0,2] || ...|| A[0, 0,62] || A[0,0,63]
Lane(1,0)  A[1,0,0] || A[1,0,1] || A[1,0,2] || ...|| A[1,0,62] || A[1,0,63]
Lane(2,0)  A[2,0,0] || A[2,0,1] || A[2,0,2] || ...|| A[2, 0,62] || A[2,0,63]
Đối với mọi số nguyên j sao cho 0  j  5 , định nghĩa chuỗi Plane( j ) như sau:
Plane( j )  Lane(0, j ) || Lane(1, j ) || Lane(2, j ) || Lane(3, j ) || Lane(4, j ) .
Do đó
S  Plane(0) || Plane(1) || Plane(2) || Plane(3) || Plane(4) .

15
Ví dụ, nếu b  1600 , thì w  64 , do đó:
S  A[0,0,0] || A[0,0,1] || A[0,0,2] || ...|| A[0,0,62] || A[0,0,63]
|| A[1,0,0] || A[1,0,1] || A[1,0,2] || ...|| A[1,0,62] || A[1,0,63]
|| A[2,0,0] || A[2,0,1] || A[2,0,2] || ...|| A[2,0,62] || A[2,0,63]
|| A[3,0,0] || A[3,0,1] || A[3,0,2] || ...|| A[3,0,62] || A[3,0,63]

|| A[3,4,0] || A[3,4,1] || A[3,4,2] || ...|| A[3,4,62] || A[3,4,63]


|| A[4,4,0] || A[4,4,1] || A[4,4,2] || ...|| A[4,4,62] || A[4,4,63].
e,Quy ước nhãn cho mảng trạng thái
Trong sơ đồ trạng thái đi kèm với các thông số kỹ thuật của ánh xạ bước, lane tương
ứng với tọa độ (𝑥,𝑦) = (0,0) nằm ở trung tâm của slice. Nhãn đầy đủ của các tọa độ
(𝑥,𝑦) và 𝑧 trong những hình vẽ này được chỉ ra trong hình 8 ở bên dưới.

Hình 2.2: Các trục x, y và z cho sơ đồ ánh xạ bước


2.1.2.Ánh xạ bước
Năm ánh xạ bước trong một vòng keccak-𝑝[𝑏, 𝑛𝑟 ] được ký hiệu là 𝜃,𝜌,𝜋,χ và 𝜏.
Thuật toán đối với từng ánh xạ bước có một mảng trạng thái đầu vào ký hiệu là A
và trả lại một mảng trạng thái cập nhật đầu ra ký hiệu là A’. Kích thước của trạng thái là
một tham số bỏ qua ký hiệu, vì b luôn được xác định khi gọi tới ánh xạ bước.
Ánh xạ 𝜏 có đầu vào thứ hai là 𝑖𝑟 : một số nguyên được gọi là chỉ số vòng, ký hiệu
là 𝑖𝑟 , Các ánh xạ khác không phụ thuộc vào chỉ số vòng.
a. Mô tả ánh xạ 𝜃
Thuật toán 1:  ( A)
Đầu vào: mảng trạng thái A .
Đầu ra: mảng trạng thái A' .
Các bước:
1. Đối với tất cả các cặp ( x, z ) sao cho 0  x  5 và 0  z  w , có
C[ x, z]  A[ x,0, z]  A[ x,1, z]  A[ x,2, z]  A[ x,3, z]  A[ x,4, z].

16
2. Đối với tất cả các cặp ( x, z ) sao cho 0  x  5 và 0  z  w có
D[ x, z ]  C[( x  1) mod5, z ]  C[( x  1) mod5,( z  1) mod w].
3. Đối với tất cả các cặp ( x, y, z ) sao cho 0  x  5,0  y  5 và 0  z  w , có:
A '[ x, y, z ]  A[ x, y, z ]  D[ x, z ].

Hình 2.3: Minh họa cho  áp dụng cho một bit đơn
Ánh xạ bước  được minh họa trong hình 2.3 ở trên.
Tác dụng của  là XOR từng bit trong trạng thái với tính chẵn lẻ của hai cột trong
mảng. Cụ thể, đối với bit A[ x0 , y0 , z0 ] , trục x của một trong các cột là x0  1mod5 ,
với trục z giống 𝑧0 , trong đó trục x của cột khác là x0  1mod5 , với trục z là
z0  1mod w . Trong hình 2.3, ký hiệu tổng  chỉ ra tính chẵn lẻ tức là XOR tổng tất
cả các bit trong cột.
b. Mô tả ánh xạ 𝜌
Thuật toán 2:  ( A)
Đầu vào: mảng trạng thái A .
Đầu ra: mảng trạng thái A' .
Các bước:
1. Với mọi z sao cho 0  z  w , có A '[0,0, z ]  A[0,0, z].
2. Cho ( x, y )  (1,0).
3. Với t từ 0 đến 23:
a. Với mọi 𝑧 sao cho 0 ≤ 𝑧 ≤ 𝑤, có
A '[x, y, z ]  A[ x, y,( z  (t  1)(t  2) / 2) mod w] ;
b. Cho (𝑥, 𝑦)=(𝑦, (2𝑥 + 3𝑦)𝑚𝑜𝑑5).
4. Trả lại A' .
Tác dụng của  là xoay một độ dài bit của mỗi lane, được gọi là offset phụ thuộc
vào các trục tọa độ x và y cố định của lane. Tương tự, với mỗi bit trong lane, tọa độ
z được thay đổi bằng cách cộng offset theo mô-đun kích thước của lane. Offset của
mỗi lane là kết quả của phép tính toán trong bước 3a của thuật toán 2 được liệt kê
trong bảng 2.

17
x3 x4 x0 x 1 x2
y2 153 231 3 10 171
y 1 55 276 36 300 6
y0 28 91 0 1 190
y4 120 78 210 66 253
y 3 21 136 105 45 15
Bảng 2.2: Offset của 
Một ví dụ minh họa cho  với trường hợp w  8 được cho trong hình 9 bên dưới.
Quy ước ghi nhãn cho các trục x và y trong hình 2.4 được chỉ ra một cách rõ ràng
trong hình 2.1, tương ứng với các hàng và các cột trong bảng 2.2. Ví dụ, lane A[0,0]
ở chính giữa của sheet chính giữa và lane A[2,3] nằm ở vị trí dưới cùng của sheet
ngoài cùng bên phải.

Hình 2.4: Minh họa cho  đối với b  200


Đối với mỗi lane trong hình 2.4, chấm đen biểu thị bit có tọa độ z bằng 0, và khối
màu xám biểu diễn vị trí của bit đó sau khi thực hiện  . Các bit khác của lane dịch
offset giống nhau và phép dịch là phép dịch vòng. Ví dụ, offset cho lane A[1,0] là 1,
nên bit cuối cùng với tọa độ z là 7, dịch chuyển sang vị trí trước với tọa độ z bằng 0.
Do đó, offset có thể giảm theo mô-đun độ lớn của lane; ví dụ: lane cho A[3,2] , tại vị trí
trên cùng của sheet ngoài cùng bên trái, có một offset của 153 mod 8, tức là 1.
c. Mô tả ánh xạ 𝜋
Thuật toán 3:  ( A)
Đầu vào: mảng trạng thái A .
Đầu ra: mảng trạng thái A' .
Các bước:
1. Với mọi bộ ba (𝑥,𝑦,𝑧) sao cho 0 ≤ 𝑥 < 5, 0 ≤ 𝑦 < 5 và 0  z  w , có
A '[x, y, z ]  A[( x  3 y ) mod5, x, z ].
2. Trả lại A' .

18
Tác dục của  là sắp xếp lại vị trí của các lane như được minh họa cho bất kỳ
slice trong hình 10 bên dưới. Quy ước cho việc dán nhãn các trục tọa độ được mô tả
trong hình 6 ở trên; ví dụ, bit với tọa độ x  y  0 nằm ở chính giữa của slice.

Hình 2.5: Minh họa cho  áp dụng cho một slice đơn
d. Mô tả ánh xạ 
Thuật toán 4:  ( A)
Đầu vào: mảng trạng thái A .
Đầu ra: mảng trạng thái A' .
Các bước:
1. Với mọi bộ ba (𝑥,𝑦,𝑧) sao cho 0 ≤ 𝑥 < 5, 0 ≤ 𝑦 < 5 và 0  z  w , có
A '[x, y, z ]  A[ x, y, z ]  (( A[( x  1) mod5, y, z ]  1)  A[( x  2) mod5, y, z ]).
2. Trả lại A' .
Dấu chấm ở phía bên phải của công thức trong bước 1 chính là phép nhân số
nguyên, mà trong trường hợp này tương đương với phép “AND” cho dữ liệu dạng
Boolean.
Tác dụng của  là XOR từng bit với một hàm phi tuyến gồm hai bit khác trong
cột như được minh họa trong hình 11 bên dưới.

Hình 2.6: Minh họa cho  áp dụng cho một hàng đơn
e. Mô tả ánh xạ 
19
Trong bản đặc tả trong thuật toán 7, ánh xạ bước  được tham số bằng chỉ số vòng
ir . Trong bản đặc tả  của thuật toán 6, tham số này được xác định là  1 bit của một
giá trị lane được gọi là hằng số vòng, ký hiệu là RC. Mỗi bit trong  1 bit này được
tạo ra bởi một hàm số dựa trên một thanh ghi dịch tuyến tính có phản hồi. Hàm này ký
hiệu là rc được mô tả trong thuật toán 5.
Thuật toán 5: rc (t )
Đầu vào: số nguyên t .
Đầu ra: bit rc (t ) .
Các bước:
1. Nếu t mod 255  0 , trả lại 1.
2. Cho R  10000000.
3. Với i từ 1 đến t mod 255 , thực hiện:
a. R  0 || R ;
b. R[0]  R[0]  R[8];
c. R[4]  R[4]  R[8];
d. R[5]  R[5]  R[8];
e. R[6]  R[6]  R[8];
d. R  Trunc8 [R].
4. Trả lại R[0] .
Thuật toán 6:  ( A, ir )
Đầu vào: mảng trạng thái A ;
chỉ số vòng ir .
Đầu ra: mảng trạng thái A' .
Các bước:
1. Với mọi bộ ba ( x, y, z ) sao cho 0  x  5,0  y  5 và 0  z  w , có
A '[x, y, z ]  A[ x, y, z ] .
2. Cho RC  0 w.
, có RC[2  1]  rc( j  7ir ).
j
3. Với j từ 0 đến
4. Với mọi z sao cho 0  z  w , có A '[0,0,z]  A '[0,0, z ]  RC[ z ].
5. Trả lại A' .
Tác dụng của  là thay đổi một số bit của Lane(0,0) phụ thuộc vào chỉ số vòng ir .
24 lane khác không phụ thuộc vào  .
2.1.3.Hoán vị keccak-p[b,nr]
Cho một mảng trạng thái A và chỉ số vòng ir , hàm vòng Rnd là phép biến đổi lấy
kết quả từ việc áp dụng các ánh xạ bước  ,  , ,  và  theo thứ tự đó, tức là:
Rnd( A, ir )   (  ( (  ( ( A)))), ir ).
20
Phép hoán vị Keccak  p[b, nr ] bao gồm nr lần lặp của Rnd được mô tả cụ thể
trong thuật toán 7.
Thuật toán 7: Keccak  p[b, nr ](S)
Đầu vào: chuỗi S có độ dài b ;
số vòng nr .
Đầu ra: chuỗi S ' có độ dài b .
Các bước:
1. Chuyển S thành một mảng trạng thái A được mô tả trong mục c của mục 2.1.1
2. Với ir từ 2  12  nr đến 2  12  1 , có A  Rnd( A, ir ) .
3. Chuyển A thành một chuỗi S ' có độ dài b được mô tả trong mục d của mục
2.1.1
4. Trả lại S '

2.2.Cấu trúc sponge


Cấu trúc sponge là một framework cho các hàm cụ thể xử lý dữ liệu nhị phân với
độ dài đầu ra tùy ý. Cấu trúc này sử dụng ba thành phần sau đây:
 Một hàm cơ bản với các chuỗi có độ dài cố định, ký hiệu là f ,
 Một tham số được gọi là rate, ký hiệu là r .
 Một quy tắc đệm, ký hiệu là pad.
Cấu trúc bọt biển cho các hàm băm. P i là đầu vào, Z i là đầu ra băm. "Dung
lượng" c không được sử dụng phải gấp đôi khả năng chống va chạm hoặc tấn công
preimage mong muốn

21
Hình 2.7: Cấu trúc sponge Z  SPONGE[ f ,pad, r ]( M , d )
Hàm được xây dựng từ những thành phần này, được ký hiệu là
SPONGE[ f ,pad, r ] gọi là một hàm sponge. Tương tự với một hàm sponge là hàm
“hấp thụ - absorb” một số lượng các bit đầu vào tùy ý thành trạng thái của nó, sau khi
một số lượng các bit đầu ra tùy ý được “ép - squeeze” thành trạng thái.
Hàm f ánh xạ các chuỗi có độ dài cố định duy nhất ký hiệu là b thành các chuỗi
có độ dài giống nhau, b được gọi là độ rộng của f . Các hàm SHA-3 được mô tả tiếp
sau đây là các trường hợp cụ thể của cấu trúc sponge trong đó hàm cơ bản f là hàm
nghịch đảo, tức là một phép hoán vị, mặc dù cấu trúc sponge không yêu cầu f là hàm
nghịch đảo.
Rate r là một số nguyên dương nhỏ hơn độ rộng b . Hiệu suất (capacity) ký hiệu là
c là một số nguyên dương b  r . Do đó, r  c  b .
Quy tắc đệm pad là một hàm tạo ra phần đệm, tức là một chuỗi với độ dài phù hợp
để nối với một chuỗi khác. Với cấu trúc sponge, phần đệm được nối vào thông báo nhằm
đảm bảo rằng có thể phân chia thành một loạt các chuỗi r bit. Nhìn chung, cho trước
một số nguyên dương x và một số nguyên không âm m , đầu ra pad( x, m) là một chuỗi
với đặc điểm m  len(pad( x, m)) là một bội số dương của x . Thuật toán 9 mô tả quy
tắc đệm cho các hàm Keccak và tương tự là các hàm SHA-3.
Cho trước ba thành phần f , pad và r được mô tả như trên, hàm
SPONGE[ f ,pad, r ] được mô tả trong thuật toán 8 trên ( M , d ) trong đó M là thông
báo đầu vào của hàm sponge và d là độ dài mong muốn của đầu ra tính theo bit. Độ
rộng b được xác định bởi lựa chọn của f .
Thuật toán 8: SPONGE[ f ,pad, r ]( M , d )
Đầu vào: chuỗi M ,
số nguyên không âm d .
Đầu ra: chuỗi Z sao cho len( Z )  d .
Các bước:
1. Cho P  M || pad(r ,len( M )).

22
2. Cho n  len( P) / r .
3. Cho c  b  r .
4. Cho P0 ,..., Pn1 là một dãy duy nhất các chuỗi có độ dài r sao cho
P  P0 || ...|| Pn1 .
5. Cho S  0b .
6. Với i từ 0 đến n  1 , cho S  f ( S  ( Pi || 0 )).
c

7. Cho Z là một chuỗi rỗng.


8. Cho Z  Z || Truncr (S ) .
9. Nếu d  Z , thì trả lại Truncd ( Z ) ; ngược lại tiếp tục.
10. Cho S  f ( S ) và tiếp tục với bước 8.
Lưu ý rằng đầu vào d xác định số lượng bit mà thuật toán 8 trả về, nhưng không
ảnh hưởng đến giá trị. Về nguyên tắc, đầu ra có thể được coi như một chuỗi vô hạn
nhưng trong thực tế quá trình tính toán sẽ bị dừng lại sau khi tạo ra được số lượng bit
đầu ra mong muốn.
Quy tắc đệm multi-rate ký hiệu là pad10*1
Thuật toán 9: pad10 *1( x, m)
Đầu vào: số nguyên dương x ;
số nguyên không âm m .
Đầu ra: chuỗi Z sao cho m  len( Z ) là bội số dương của x .
Các bước:
1. Cho j  (m  2) mod x .
j
2. Trả lại 1|| 0 ||1 .
Như vậy, dấu hoa thị trong “pad10*1” chỉ ra rằng bit “0” hoặc bị bỏ qua hoặc lặp
đi lặp lại đến khi tạo ra một chuỗi đầu ra có độ dài mong muốn.

2.3.Mở rộng hàm băm SHA-3


2.3.1.Mô tả về keccak(c)
Keccak là họ các hàm sponge với phép hoán vị Keccak-𝑝[𝑏,2 +12], 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[c]  SPONGE[Keccak  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[c]( M , d )  SPONGE[Keccak  p[1600,24],pad10 *1,1600  c]( M , d ).

23
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( M )  Keccak[448]( M || 01,224);
SHA3  256( M )  Keccak[512]( M || 01,256);
SHA3  384( M )  Keccak[768]( M || 01,384);
SHA3  512( M )  Keccak[1024]( M || 01,512).
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 . Hai bit được nối thêm vào thông báo (tức là 01 ) hỗ trợ chia tách 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 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( M , d )  Keccak[256](M ||11, d ),
RawSHAKE256(M , d )  Keccak[512](M ||11, 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( M , d )  RawSHAKE128( M ||11, d ),
SHAKE256( M , d )  RawSHAKE256( M ||11, 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( M , d )  Keccak[256]( M ||1111, d ),
SHAKE256( M , d )  Keccak[512]( M ||1111, d ).

2.4.Độ bảo mật SHA-3 so với các hàm băm SHA


Với mức độ an toàn chống lại các tấn công tiền ảnh thứ hai lên một thông báo M ,
hàm số L( M ) được định nghĩa là log 2 (len( M ) / B)  , trong đó B là độ dài khối của
hàm số, tức là 512 bit đối với SHA-1, SHA-224 và SHA-256, còn 1024 bit cho SHA-
512.

24
Hàm Kích Mức độ an toàn tính theo Bit
thước
Va chạm Tiền ảnh Tiền ảnh thứ hai
đầu ra
SHA-1 160 < 80 160 160  L( M )
SHA-224 224 112 224 min(224,256  L( M ))
SHA- 224 112 224 224
512/224
SHA-256 256 128 256 256  L( M )
SHA- 256 128 256 256
512/256
SHA-384 384 192 384 384
SHA-512 512 256 512 512  L( M )
SHA3-224 224 112 224 224
SHA3-256 256 128 256 256
SHA3-384 384 192 384 384
SHA3-512 512 256 512 512
SHAKE128 d min(d / 2,128)  min(d ,128) min(d ,128)
SHAKE256 d min(d / 2,256)  min(d ,256) min(d , 256)

Bốn hàm băm SHA-3 là lựa chọn thay thế cho các hàm SHA-2 và được thiết kế
nhằm kháng lại các tấn công tiền ảnh, tiền ảnh thứ hai và va chạm tương đương hoặc
lớn hơn khả năng kháng mà các hàm SHA-2 cung cấp. Các hàm SHA-3 cũng được thiết
kế để chống lại các kiểu tấn công khác như tấn công mở rộng độ dài, có khả năng chống
lại bằng với một hàm ngẫu nhiên có độ dài đầu ra tương tự, cung cấp mức độ an toàn
cao hơn độ dài đầu ra tính bằng bit của hàm băm.
Hai hàm XOF SHA-3 được thiết kế nhằm chống lại các tấn công va chạm, tiền ảnh,
tiền ảnh thứ hai và các tấn công khác, khả năng kháng lại bằng với khả năng của một
hàm ngẫu nhiên với độ dài đầu ra yêu cầu, có độ bảo mật cao hơn 128 bit đối với
SHAKE128 và 256 bit đối với SHAKE256. Một hàm ngẫu nhiên có độ dài đầu ra là d
bit không thể cung cấp độ an toàn lớn hơn d / 2 bit chống lại tấn công va chạm và d
bit chống lại tấn công tiền ảnh và tiền ảnh thứ hai, do đó SHAKE128 và SHAKE256 sẽ
cung cấp độ an toàn tương ứng nhỏ hơn 128 và 256 bit khi d đủ nhỏ như mô tả ở trên.

25
TỔNG KẾT

Hiện tại SHA-3 vẫn được coi là an toàn và sử dụng rộng rãi như trong cái loại tiền
điện tử và đóng vài trò quan trọng trong quá trình khai thác. Có thể thấy vấn đề an toàn
mạng đang ngày càng chú trọng, vì vậy cần đòi hỏi các hàm bảo mật ngày càng tiên
tiến,vì vậy việc áp dụng các hàm băm SHA-3 đang được chú ý đến và có thể phát triển
và sử dụng nhiều hơn trong tương lai.

TÀI LIỆU THAM KHẢO


[1] TS. Nguyễn Chiến Trinh, “An ninh mạng viễn thông”, bài giảng, Học Viện Công
nghệ Bưu chính Viễn thông, 2016.
[2] Website:
https://en.wikipedia.org/wiki/SHA-3#Examples_of_SHA-3_variants
https://cryptoviet.com/hash-la-gi#sha-3
https://csrc.nist.gov/csrc/media/publications/fips/202/final/documents/fips_212
2_draft

NHIỆM VỤ THÀNH VIÊN NHÓM

STT Nội dung Công việc Thành viên


Tổng quan về hàm băm
Tìm tài liệu,work,silde, Nguyễn Mạnh
1 >Khái quát về hàm băm
thuyết trình Hùng
>Cấu trúc và ứng dụng
>Giới thiệu một số hàm
Tìm tài liệu,work,silde, Nguyễn Đức
2 SHA
thuyết trình Mạnh
>Trạng thái trong keccak-p
Kecak-p:
Tìm tài liệu,work,silde, Bùi Trọng
3 >Ánh xạ bước
thuyết trình Hoàn
>Hoán vị
>Cấu trúc sponge Tìm tài liệu,work,silde, Nguyễn Duy
4
>Độ bảo mật thuyết trình Khánh
Mở rộng SHA-3
Tìm tài liệu,work,silde, Đoàn Khánh
5 >Keccak ( c )
thuyết trình Linh
>Các hàm SHA-3

26

You might also like