Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 25 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
25
Dung lượng
1,68 MB
Nội dung
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 CHƯƠNG I: TỔNG QUAN VỀ HÀM BĂM MẬT MÃ .5 1.1.Khát quát chung hàm băm 1.2.Cấu trúc hàm băm 1.3.Các ứng dụng hàm băm .7 1.4 Giới thiệu số họ hàm băm phổ biến 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 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ả keccak(c) .23 2.3.2.Các hàm băm SHA-3 .24 2.3.3.Các mở rộng đầu SHA-3 24 2.4.Độ bảo mật SHA-3 so với 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 LỜI NÓI ĐẦU Với phát triển ngày nhanh chóng Internet ứng dụng giao dịch điện tử mạng, nhu cầu bảo vệ thông tin hệ thống ứng dụng điện tử ngày quan tâm có ý nghĩa quan trọng Vì việc nghiên cứu chuẩn mật mã nâng cao ứng dụng lĩnh vực bảo mật thông tin cần thiết Ứng dụng chuẩn mật mã nâng cao sử dụng ngày phổ biến nhiều ứng dụng khác Chuẩn mật mã nâng cao không đơn mã hóa giải mã thơng tin mà bao gồm nhiều vấn đề khác cần nghiên cứu giải ứng dụng xây dựng 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 liệu Một hàm băm sử dụng rộng rãi hàm băm SHA phát triển cục an ninh quốc gia Mĩ (National Security Agency hay NSA) Với nhiều ưu điểm có nhiều phiên khác phát hành tiêu biểu số họ hàm băm SHA Bài báo cáo tìm hiểu rõ hàm băm SHA-3 CHƯƠNG I: TỔNG QUAN VỀ HÀM BĂM MẬT MÃ 1.1.Khát quát chung hàm băm Trong nghành mật mã học, hàm băm mật mã hàm băm với số tính chất bảo mật định để phù hợp với việc sử dụng nhiều ứng dụng bảo mật thông tin đa dạng chứng thức kiểm tra tính tồn vẹn thơng điệp Các hàm băm đóng vai trị mật mã đại Hàm băm ℎ hàm tốn học chuyển đổi xâu bit có độ dài hữu hạn tùy ý thành xâu bit có độ dài 𝑛 cố định Đầu gọi mã băm (hay kết băm, giá trị băm, vết, hay tóm lược thơng báo) Hàm băm đặc trưng hai tính chất sau: Tính chất nén: ℎ ánh xạ đầu vào 𝑥 có độ dài bit hữu hạn tùy ý tới đầu ℎ(𝑥) có độ dài bit 𝑛 hữu hạn (tùy vào thuật tốn băm sử dụng) Tính chất dễ dàng tính tốn: Với ℎ cho trước đầu vào 𝑥, dễ dàng tính ℎ(𝑥) Hàm băm mật mã hàm băm mà ngồi hai tính chất cịn phải thỏa mãn ba tính chất an tồn nêu đây: Tính chiều: Đối với hầu hết đầu xác định trước, khơng có khả tính tốn để tìm đầu vào mà băm cho đầu tương ứng (tức cho trước giá trị tóm lược 𝑦, khơng thể tìm tiền ảnh 𝑥 cho ℎ(𝑥) = 𝑦) Tính chống trùng mạnh: Khơng có khả tính tốn để tìm đầu vào thứ hai mà có đầu với đầu vào xác định trước (tức cho trước 𝑥 ∈ 𝑋, khơng có khả tính tốn để tìm tiền ảnh thứ hai 𝑥 ′ ∈ 𝑋 cho 𝑥 ′ ≠ 𝑥 ℎ(𝑥 ′ ) = ℎ(𝑥)) Tính chống trùng yếu: Khơng có khả tính tốn để tìm hai đầu vào 𝑥, 𝑥 ′ ∈ 𝑋 cho 𝑥 ′ ≠ 𝑥 ℎ(𝑥 ′ ) = ℎ(𝑥) Kích thước thơng điệp đầu vào 𝑥 cịn kích thước giá trị băm ℎ thông điệp nhỏ nên việc trùng giá trị băm khơng thể loại bỏ Tính chống trùng hàm băm yêu cầu việc tìm hai thơng điệp đầu vào 𝑥 phải khó khăn mặt thời gian tính tốn Hình 1.1: Ánh xạ thơng điệp giá trị băm song ánh 1.2.Cấu trúc hàm băm Theo định nghĩa hàm băm mật mã ta thấy chất hàm băm hàm nén Hiện hầu hết hàm băm mật mã áp dụng cấu trúc hàm băm MerkleDamrgard (MD5, SHA-1, SHA-2) 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 bit đệm (padding) Hàm nén lặp Thêm độ dài khối Đầu có độ dài cố định Đầu Đầu vào định dạng x x1 x x t Xử lý lặp Biến đổi đầu có lựa chọn Hàm nén x i H i H t g Đầu h x g H t Hình 1.2: Cấu trúc Mekle-Damrgard Hầu hết hàm băm khơng có khóa ℎ thiết kế xử lý lặp để băm đầu vào có độ dài hữu hạn tùy ý, việc xử lý khối đầu vào có độ dài cố định, hình Đầu vào hàm băm thơng báo 𝑥 có độ dài hữu hạn tùy ý chia thành khối có độ dài cố định 𝑟-bit Bước tiền xử lý thường gồm việc thêm bit mở rộng (gọi padding) để thơng báo 𝑥 có độ dài bit bội độ dài khối 𝑟, (vì lý an toàn) thường gồm khối phần khối để độ dài bit đầu vào chưa thêm vào Mỗi khối 𝑥𝑖 dùng làm đầu vào có độ dài cố định cho hàm băm bên (hàm nén ℎ, thực tính kết trung gian có độ dài bit 𝑛) hàm kết trung gian trước có độ dài 𝑛 bit khối đầu vào 𝑥𝑖+1 Gọi 𝐻𝑖 ký hiệu phần kết sau bước thứ 𝑖, xử lý chung cho hàm băm lặp với đầu vào 𝑥 = 𝑥1 𝑥2 … 𝑥𝑡 mơ tả sau: 𝐻0 = 𝐼𝑉; 𝐻𝑖 = (𝐻𝑖−1, 𝑥𝑖 ),1 ≤ 𝑖 ≤ 𝑡; ℎ(𝑥) = 𝑔(𝐻𝑡 ) 𝐻𝑖−1 coi biến chuỗi bước 𝑖 − bước 𝑖, 𝐻0 giá trị khởi đầu định nghĩa trước hay gọi giá trị khởi đầu 𝐼𝑉 Biến đổi đầu có lựa chọn 𝑔 dùng bước cuối để ánh xạ biến chuỗi 𝑛 −bit thành kết 𝑚 −bit 𝑔(𝐻𝑡 ), 𝑔 thường ánh xạ đồng 𝑔(𝐻𝑡 ) = 𝐻𝑡 Cấu trúc Sponge: Cấu trúc Sponge cấu trúc mới, nghiên cứu áp dụng hàm SHA-3, cấu trúc trình bày chi tiết phần sau 1.3.Các ứng dụng hàm băm Hàm băm mật mã đánh giá thuật tốn mật mã linh hoạt Nó sử dụng nhiều ứng dụng an toàn giao thức Internet Sau số ứng dụng quan trọng 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 chế sử dụng để xác thực tính tồn vẹn thơng báo Xác thực thông báo đảm bảo liệu nhận xác giống gửi (tức khơng bị sửa đổi, chèn, xóa hay phát lại), nhiều trường hợp định danh người gửi bảo vệ Khi hàm băm sử dụng để cung cấp chế xác thực thông báo, giá trị hàm băm thường gọi mã băm Có số phương pháp sử dụng mã băm để cung cấp chế xác thực thông báo hình sau: Người gửi A Người nhận B M || E H M D So sánh H K (a) M K EK ( M || H M ) K H(M) H M || K So sánh H E D EK H M (b) M || M S || H So sánh S || H H(M || S) (c) || M E D M S H || 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 𝐴 𝐵 có khóa bí mật 𝐾 chia sẻ Khi 𝐴 cần gửi thông báo cho 𝐵, 𝐴 tính mã băm 𝐻 = 𝐻(𝑀) Mã băm nối vào thơng báo 𝑀 mã hóa khóa bí mật 𝐾 để tạo mã 𝐸𝐾 (𝑀||𝐻 (𝑀)) truyền cho 𝐵 Người nhận 𝐵 xác thực thông báo sau: trước tiên 𝐵 giải mã mã nhận khóa bí mật 𝐾 chia sẻ, sau tính lại mã băm từ thơng báo 𝑀 so sánh với mã băm nhận kèm theo thông báo Nếu hai giá trị giống thơng báo xác thực Do có người gửi 𝐴 người nhận 𝐵 biết khóa bí mật 𝐾, thơng báo phải đến từ 𝐴 không bị sửa đổi trái phép Trong lược đồ này, mã băm sử dụng để đảm bảo tính xác thực thơng báo, cịn hàm mã hóa 𝐸 sử dụng để đảm bảo tính bí mật thơng báo Theo sơ đồ 1.3 (b), mã băm mã hóa mật mã khóa bí mật Điều làm giảm gánh nặng xử lý cho ứng dụng khơng cần giữ bí mật thơng báo, mà cần đảm bảo tính tồn vẹn thơng báo Theo sơ đồ 1.3 (c), hàm băm sử dụng để xác thực thông báo Kỷ thuật yêu cầu hai thực thể liên lạc 𝐴 𝐵 phải chia sẻ tham số bí mật 𝑆 𝐴 tính giá trị băm 𝑀 𝑆 sau: 𝐻 = 𝐻(𝑀||𝑆) bổ sung vào thông báo gửi cho 𝐵 Do 𝐵 có tham số bí mật 𝑆 nên tính lại giá trị băm để xác thực Hơn nữa, tham số bí mật 𝑆 khơng gửi nên đối phương sửa đổi thông báo mà không bị phát Theo sơ đồ 1.3 (d), hàm mã hóa khóa bí mật bổ sung vào sơ đồ để đảm bảo thêm tính bí mật thơng báo Chữ ký số: Chữ ký số chuỗi số, kết phép biến đổi mật mã thông báo nhằm cung cấp phương tiện để triển khai tính xác thực nguồn gốc thơng báo, tính tồn vẹn liệu tính khơng thể chối bỏ người ký Khi hàm băm sử dụng lược đồ chữ ký số, giá trị băm thơng báo mã hóa khóa riêng người gửi Bất kỳ ai, biết khóa cơng khai người gửi xác thực tính tồn vẹn thơng báo Hình mô tả phương pháp sử dụng giá trị băm để cung cấp chữ ký số M PRA H (a) E || M H PU A So sánh EPRA H M D M PRA || E D M H PU A So sánh H (b) E K EK ( M || EPRA H M ) K D EK H M Hình 1.4: Một số sơ đồ sử dụng hàm băm lược đồ chữ ký số Lưu trữ mật khẩu: Hầu hết ứng dụng phần mềm ngày có chứng thực người sử dụng Nghĩa để sử dụng ứng dụng, người sử dụng phải qua chế chứng thực tên người sử dụng mật Giả sử mật lưu giữ dạng thơng thường, khơng mã hóa, nơi máy tính cá nhân hay máy chủ, tập tin liệu hay hệ quản trị sở liệu Như xuất nguy người khác mở tập tin liệu sở liệu, xem trộm mật Như mật khơng thể giữ bí mật tuyệt đối Phương pháp bảo vệ mật hiệu dùng hàm băm Khi người sử dụng đăng ký mật khẩu, giá trị băm mật tính hàm băm (SHA-1, SHA-2…) Giá trị băm đươc lưu trữ vào tập tin hay sở liệu Vì hàm băm chiều, nên dù biết giá trị băm loại hàm băm, kẻ công suy mật Khi người sử dụng đăng nhập, mật đăng nhập tính giá trị băm so sánh với giá trị băm lưu trữ Do tính chống trùng, có mật có giá trị băm tương ứng, nên khơng khác ngồi người sử dụng có mật đăng nhập ứng dụng Ứng dụng tải liệu mạng: Hàm băm giúp phát trường hợp lỗi tải liệu mạng, chất lượng mạng khơng tốt xảy lỗi trình tải làm cho tập tin máy khách khác với tập tin máy chủ 1.4 Giới thiệu số họ hàm băm phổ biến Đã có nhiều hàm băm cơng bố sử dụng thực tế (bao gồm hàm băm có khóa hàm băm khơng có khóa) Bảng cho số hàm băm với thông số tương ứng: Hàm băm MD5: Ronald Rivest người phát minh hàm băm MD2, MD4 (1990) MD5 (1991) Hàm băm MD5 phát triển lên từ MD4 trước MD2, cải tiến MD4 hàm băm sử dụng rộng rãi, nguyên tắc thiết kế hàm băm MD5 nguyên tắc chung cho 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 thực đệm sau chia thành khối với độ dài 512 bit Các khối 512 bit đầu vào thuật toán băm, bên thuật toán khối 512 bit lại chia 16 khối 32 bit qua bốn vòng lặp MD5 Mỗi khối thống báo 512 bit qua xử lý cho đầu khối 128 bit, giá trị băm thông báo đầu vào tương ứng Theo cấu trúc Mekle-Damrgard giá trị băm đầu vào để xử lý khối thông báo Tiếp tục xử lý, đầu cuối khối 128 bit, giá trị băm nhận thông báo đầu vào Hàm băm MD5 cải tiến để khắc phục hạn chế điểm an toàn MD4 Mặc dù năm 1993, Den Boer Bosselaers tìm va chạm việc sử dụng hàm nén MD5, tới MD5 sử dụng rộng rãi ứng dụng thực tế độ an tồn mang lại vịn đủ đáp ứng nhu cầu Họ Hàm băm SHA Thuật tốn băm an tồn (SHA) NIST NSA thiết kế xây dựng Sau NIST đề xuất làm chuẩn hàm băm an toàn (SHS) bao gồm thuật toán băm: SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 SHA-3 Các thuật toán hàm băm SHA gồm bước: tiền xử lý tính tốn giá trị băm Bước tiền xử lý bao gồm thao tác: - Mở rộng thơng báo - Phân tích thơng báo mở rộng thành khối 𝑚-bit - Khởi tạo giá trị băm ban đầu Bước tính tốn giá trị băm bao gồm thao tác: - Làm 𝑁 lần 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 với hàm, số, thao tác word để tạo giá trị băm 𝑖 - Sử dụng giá trị băm cuối để tạo thông báo rút gọn Thông báo 𝑀 đệm thêm bit theo quy tắc đệm trước thực băm, nhằm đảm bảo thông báo đầu vào cho thuật tốn băm có độ dài bội số 512 1024 bit, tùy thuộc vào thuật toán băm Tiếp theo thơng báo phân tích thành 𝑁 khối 𝑚 bit Đối với hàm băm SHA-1, SHA-256 giá trị 𝑚 512 bit, hàm băm SHA-384 SHA-256 𝑚 1024 bit Những khối thông báo đầ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 chấp nhận FIPS dùng để chuyển đoạn liệu định thành đoạn 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 gọi "an toàn", theo chuẩn FIPS 180-2 SHA-1: SHA-1 phát triển phần dự án Capstone Chính phủ Hoa Kỳ Phiên đầu tiên, thường gọi SHA-0 xuất năm 1993 với tiêu đề Secure Hash Standard, FIPS PUB 180, NIST (Viện Tiêu chuẩn Cơng nghệ Quốc gia Hoa Kỳ) Nó bị NSA rút lại sau xuất thay phiên sửa đổi, xuất năm 1995 FIPS PUB 180-1 thường đặt tên SHA1 SHA-1 tạo 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 đủ tạo cách sử dụng công phá vỡ Do đó, hàm băm coi khơng đủ an tồn SHA-2: SHA-2 tập hợp hàm băm mật mã thiết kế Cơ quan an ninh quốc gia Hoa Kỳ (NSA), xuất lần vào năm 2001 Chúng xây dựng cấu trúc Merkle–Damgård, chức nén chiều xây dựng cấu trúc Davies–Meyer từ hệ mật mã khối chuyên dụng SHA-2 thực chất bao gồm hai thuật toán băm: SHA-256 SHA-512 SHA-224 biến thể SHA-256 với giá trị khởi tạo đầu bị cắt bỏ khác SHA384 SHA-512/224 SHA-512/256 biết đến tất biến thể SHA512 SHA-512 an toàn SHA-256 thường nhanh SHA-256 máy 64 bit AMD64 Do có nhiều phiên thuật tốn khác kích thước đầu họ SHA-2 khác tùy theo thuật tốn Phần mở rộng tên phía sau tiền tố “SHA” độ dài thơng điệp băm đầu Ví dụ với SHA-224 kích thước đầu 224 bit (28 byte), SHA-256 tạo 32 byte, SHA-384 tạo 48 byte cuối SHA- 512 tạo 64 byte Và biết Bitcoin sử dụng hàm băm SHA-256 phiên họ SHA-2 SHA-3: SHA-3 ( Thuật tốn băm an tồn ) thành viên họ tiêu chuẩn Thuật toán băm an toàn , phát hành NIST vào ngày tháng năm 2015 Mặc dù thuộc loạt tiêu chuẩn, SHA -3 bên khác với cấu trúc giống MD5 SHA-1 SHA-2 SHA-3 tập hợp gia đình nguyên thủy rộng lớn mật mã Keccak, thiết kế Guido Bertoni , Joan Daemen , Michaël Peeters, Gilles Van Assche , xây dựng dựa RadioGatún Các tác giả Keccak đề xuất cách sử dụng bổ sung cho hàm, chưa tiêu chuẩn hóa NIST, bao gồm mật mã luồng , mã hóa xác thựchệ thống, lược đồ băm "cây" để băm nhanh số kiến trúc định, AEAD mật mã Keyak Ketje 11 NIST khơng có kế hoạch rút SHA-2 loại bỏ khỏi Tiêu chuẩn băm an tồn sửa đổi Mục đích SHA-3 thay trực tiếp cho SHA-2 ứng dụng cần thiết để cải thiện đáng kể tính mạnh mẽ cơng cụ thuật tốn băm tổng thể NIST.Những người tạo thuật toán Keccak hàm SHA-3 đề xuất sử dụng hàm KangarooTwelve nhanh với thông số điều chỉnh chế độ băm mà không cần thêm chi phí cho kích thước thư nhỏ Thuật tốn Keccak cơng trình Guido Bertoni, Joan Daemen (người đồng thiết kế mật mã Rijndael với Vincent Rijmen ), Michael Peeters Gilles Van Assche Nó dựa thiết kế hàm băm PANAMA RadioGatún PANAMA thiết kế Daemen Craig Clapp vào năm 1998 RadioGatún, người kế nhiệm PANAMA, thiết kế Daemen, Peeters, Van Assche, trình bày Hội thảo NIST Hash năm 2006 [15] Các thực tham khảo mã nguồn 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 thi hàm băm NIST để tạo tiêu chuẩn băm mới, SHA-3 SHA-3 khơng nhằm thay SHA-2 , khơng có cơng đáng kể vào SHA-2 chứng minh Do công thành công vào MD5 , SHA-0 SHA-1, NIST nhận thấy nhu cầu hàm băm mật mã thay thế, khác biệt, trở thành SHA-3 Sau thời gian thiết lập, hồ sơ tuyển sinh nộp vào cuối năm 2008 Keccak chấp nhận 51 ứng cử viên Vào tháng năm 2009, 14 thuật tốn chọn vào vịng hai Keccak tiến đến vòng cuối vào tháng 12 năm 2010 Trong thi, người tham gia phép "tinh chỉnh" thuật toán họ để giải vấn đề phát Những thay đổi thực Keccak là: Số lượng vòng tăng từ 12 + ℓ lên 12 + 2ℓ để bảo mật Phần đệm thông báo thay đổi từ lược đồ phức tạp thành mẫu 10 * đơn giản mô tả bên Tỷ lệ r tăng đến giới hạn bảo mật, thay làm trịn xuống lũy thừa gần Vào ngày tháng 10 năm 2012, Keccak chọn người chiến thắng thi Vào năm 2014, NIST xuất dự thảo FIPS 202 "Tiêu chuẩn SHA-3: Hàm băm dựa hốn vị hàm đầu mở rộng" FIPS 202 phê duyệt vào ngày tháng năm 2015 Vào ngày tháng năm 2015 NIST thông báo SHA-3 trở thành 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 mô tả với hai tham số: Độ dài cố định chuỗi hoán vị, gọi độ rộng phép hoán vị Số lượng phép lặp phép chuyển đổi nội bộ, gọi vòng Độ rộng ký hiệu b số lượng vòng ký hiệu 𝑛𝑟 Phép hoán vị Keccak-p với 𝑛𝑟 vòng độ rộng 𝑏 ký hiệu keccak-𝑝[𝑏, 𝑛𝑟 ]; phép hoán vị định nghĩa cho 𝑏 {25,50,100,200,400,800,1600} số nguyên dương nr Một vịng phép hốn vị Keccak-p ký hiệu Rnd , bao gồm chuỗi năm phép biến đổi gọi ánh xạ bước (step mapping) Tập giá trị 𝑏 bit đầu vào phép hoán vị qua biến đổi liên tiếp ánh xạ bước, cuối thành đầu gọi trạng thái (state) 2.1.1.Trạng thái mảng trạng thái a,Khái niệm trạng thái mảng trạng thái Trạng thái mảng bit liên tục cập nhập trình xử lý Đối với phép hoán vị Keccak-𝑝, trạng thái biểu diễn chuỗi 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 tiêu chuẩn bao gồm hai đại lượng khác liên quan đến 𝑏: 𝑏⁄25 log 𝑏⁄25, ký hiệu 𝑤 𝑙 Bảy giá trị biến phép hoán vị Keccak-p cho bảng đây: b 25 50 100 200 400 800 1600 w 16 32 64 l Bảng 2.1: Độ rộng số liệu liên quan đến phép hốn vị Keccack-p Có thể biểu diễn trạng thái đầu vào đầu phép hoán vị chuỗi b bit biểu diễn trạng thái đầu vào đầu ánh xạ bước mảng bit w Nếu S ký hiệu chuỗi biểu diễn trạng thái, bit đánh số từ đến b 1, đó: S S[0]|| S[1]|| || S[b 2]|| S[b 1] Nếu A ký hiệu mảng bit w biểu diễn trạng thái, số ba số nguyên ( x, y, z ) cho x 5,0 y z w Bit tương ứng với ( x, y, z ) ký hiệu A[ x, y, z ] Mảng trạng thái biểu diễn cho trạng thái mảng ba chiều với số xác định theo cách 13 Mảng trạng thái: Đối với phép hoán vị keccak-𝑝, mảng × × 𝑤 bit biểu diễn trạng thái Các số thỏa mãn: ≤ 𝑥 ≤ 4, ≤ 𝑦 ≤ 4, ≤ 𝑧 ≤ (𝑤 − 1) b,Thành phần mảng trạng thái Mảng trạng thái cho phép hoán vị Keccak-p mảng chiều minh họa hình trường hợp b 200 , w Các mảng hai chiều gọi sheet, plane slice, mảng chiều gọi clumn (cột), row (hàng) lane: Hình 2.1: Thành phần mảng trạng thái theo chiều Trong đó: Sheet: mảng gồm b / bit theo trục tọa độ x cố định Plane: mảng gồm b / bit theo trục tọa độ y cố định slice: mảng gồm 25 bit theo trục tọa độ z cố định Lane: mảng gồm b / 25 bit theo trục tọa độ x y cố định Row (hàng): mảng gồm bit theo tọa độ y z cố định Column (cột): mảng gồm bit với trục tọa độ x z không đổi c,Chuyển từ chuỗi sang mảng trạng thái Cho S ký hiệu chuỗi b bit biểu diễn cho trạng thái phép hoán vị Keccak p[b, nr ] Mảng trạng thái tương ứng ký hiệu A định nghĩa sau: Đối với ba ( x, y, z ) cho x 5,0 y z w , ta có: A[ x, y, z ] S[ w(5 y x) z ] Ví dụ, b 1600 , w 64 , đó: 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 ký hiệu mảng trạng thái Biểu diễn chuỗi tương ứng ký hiệu S cấu trúc từ lane plane A sau: Đối với cặp số nguyên (i, j ) cho i j , 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ụ, b 1600 , w 64 đó: 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 số nguyên j cho j , định nghĩa chuỗi Plane( j ) 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ụ, b 1600 , w 64 , đó: 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 kèm với thông số kỹ thuật ánh xạ bước, lane tương ứng với tọa độ (𝑥,𝑦) = (0,0) nằm trung tâm slice Nhãn đầy đủ tọa độ (𝑥,𝑦) 𝑧 hình vẽ hình bên Hình 2.2: Các trục x, y z cho sơ đồ ánh xạ bước 2.1.2.Ánh xạ bước Năm ánh xạ bước vòng keccak-𝑝[𝑏, 𝑛𝑟 ] ký hiệu 𝜃,𝜌,𝜋,χ 𝜏 Thuật toán ánh xạ bước có mảng trạng thái đầu vào ký hiệu A trả lại mảng trạng thái cập nhật đầu ký hiệu A’ Kích thước trạng thái tham số bỏ qua ký hiệu, b ln xác định gọi tới ánh xạ bước Ánh xạ 𝜏 có đầu vào thứ hai 𝑖𝑟 : số nguyên gọi số vòng, ký hiệu 𝑖𝑟 , Các ánh xạ khác khơng phụ thuộc vào số vịng a Mơ tả ánh xạ 𝜃 Thuật tố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: Đối với tất cặp ( x, z ) cho x 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 Đối với tất cặp ( x, z ) cho x z w có D[ x, z ] C[( x 1) mod5, z ] C[( x 1) mod5,( z 1) mod w] Đối với tất cặp ( x, y, z ) cho x 5,0 y 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 bit đơn Ánh xạ bước minh họa hình 2.3 Tác dụng XOR bit trạng thái với tính chẵn lẻ hai cột mảng Cụ thể, bit A[ x0 , y0 , z0 ] , trục x cột x0 1mod5 , với trục z giống 𝑧0 , trục x cột khác x0 1mod5 , với trục z z0 1mod w Trong hình 2.3, ký hiệu tổng tính chẵn lẻ tức XOR tổng tất bit cột b Mơ tả ánh xạ 𝜌 Thuật tố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: Với z cho z w , có A '[0,0, z ] A[0,0, z] Cho ( x, y ) (1,0) Với t từ đến 23: a Với 𝑧 cho ≤ 𝑧 ≤ 𝑤, có A '[x, y, z ] A[ x, y,( z (t 1)(t 2) / 2) mod w] ; b Cho (𝑥, 𝑦)=(𝑦, (2𝑥 + 3𝑦)𝑚𝑜𝑑5) Trả lại A' Tác dụng xoay độ dài bit lane, gọi offset phụ thuộc vào trục tọa độ x y cố định lane Tương tự, với bit lane, tọa độ z thay đổi cách cộng offset theo mơ-đun kích thước lane Offset lane kết phép tính tốn bước 3a thuật tốn liệt kê bảng 17 x3 x4 x0 x 1 x2 y2 153 231 10 171 y 1 55 276 36 300 y0 28 91 190 y4 120 78 210 66 253 y 3 21 136 105 45 15 Bảng 2.2: Offset Một ví dụ minh họa cho với trường hợp w cho hình bên Quy ước ghi nhãn cho trục x y hình 2.4 cách rõ ràng hình 2.1, tương ứng với hàng cột bảng 2.2 Ví dụ, lane A[0,0] sheet lane A[2,3] nằm vị trí sheet ngồi bên phải Hình 2.4: Minh họa cho b 200 Đối với lane hình 2.4, chấm đen biểu thị bit có tọa độ z 0, khối màu xám biểu diễn vị trí bit sau thực Các bit khác lane dịch offset giống phép dịch phép dịch vịng Ví dụ, offset cho lane A[1,0] 1, nên bit cuối với tọa độ z 7, dịch chuyển sang vị trí trước với tọa độ z Do đó, offset giảm theo mơ-đun độ lớn lane; ví dụ: lane cho A[3,2] , vị trí sheet ngồi bên trái, có offset 153 mod 8, tức c Mơ tả ánh xạ 𝜋 Thuật tố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: Với ba (𝑥,𝑦,𝑧) cho ≤ 𝑥 < 5, ≤ 𝑦 < z w , có A '[x, y, z ] A[( x y ) mod5, x, z ] Trả lại A' 18 Tác dục xếp lại vị trí lane minh họa cho slice hình 10 bên Quy ước cho việc dán nhãn trục tọa độ mơ tả hình trên; ví dụ, bit với tọa độ x y nằm slice Hình 2.5: Minh họa cho áp dụng cho slice đơn d Mơ tả ánh xạ Thuật tố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: Với ba (𝑥,𝑦,𝑧) cho ≤ 𝑥 < 5, ≤ 𝑦 < z w , có A '[x, y, z ] A[ x, y, z ] (( A[( x 1) mod5, y, z ] 1) A[( x 2) mod5, y, z ]) Trả lại A' Dấu chấm phía bên phải cơng thức bước phép nhân số nguyên, mà trường hợp tương đương với phép “AND” cho liệu dạng Boolean Tác dụng XOR bit với hàm phi tuyến gồm hai bit khác cột minh họa hình 11 bên Hình 2.6: Minh họa cho áp dụng cho hàng đơn e Mô tả ánh xạ 19 Trong đặc tả thuật toán 7, ánh xạ bước tham số số vòng ir Trong đặc tả thuật toán 6, tham số xác định bit giá trị lane gọi số vòng, ký hiệu RC Mỗi bit bit tạo hàm số dựa ghi dịch tuyến tính có phản hồi Hàm ký hiệu rc mô tả thuật toán Thuật toán 5: rc (t ) Đầu vào: số nguyên t Đầu ra: bit rc (t ) Các bước: Nếu t mod 255 , trả lại Cho R 10000000 Với i từ đến t mod 255 , thực hiện: a R || 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] Trả lại R[0] Thuật toán 6: ( A, ir ) Đầu vào: mảng trạng thái A ; số vòng ir Đầu ra: mảng trạng thái A' Các bước: Với ba ( x, y, z ) cho x 5,0 y z w , có A '[x, y, z ] A[ x, y, z ] Cho RC w Với j từ đến j , có RC[2 1] rc( j 7ir ) Với z cho z w , có A '[0,0,z] A '[0,0, z ] RC[ z ] Trả lại A' Tác dụng thay đổi số bit Lane(0,0) phụ thuộc vào số vòng ir 24 lane khác khơng phụ thuộc vào 2.1.3.Hốn vị keccak-p[b,nr] Cho mảng trạng thái A số vòng ir , hàm vòng Rnd phép biến đổi lấy kết từ việc áp dụng ánh xạ bước , , , 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 Rnd mô tả cụ thể thuật toán 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: Chuyển S thành mảng trạng thái A mô tả mục c mục 2.1.1 Với ir từ 12 nr đến 12 , có A Rnd( A, ir ) Chuyển A thành chuỗi S ' có độ dài b mô tả mục d mục 2.1.1 Trả lại S ' 2.2.Cấu trúc sponge Cấu trúc sponge framework cho hàm cụ thể xử lý liệu nhị phân với độ dài đầu tùy ý Cấu trúc sử dụng ba thành phần sau đây: Một hàm với chuỗi có độ dài cố định, ký hiệu f , Một tham số gọi rate, ký hiệu r Một quy tắc đệm, ký hiệu pad Cấu trúc bọt biển cho hàm băm P i đầu vào, Z i đầu băm "Dung lượng" c không sử dụng phải gấp đôi khả chống va chạm 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 xây dựng từ thành phần này, ký hiệu SPONGE[ f ,pad, r ] gọi hàm sponge Tương tự với hàm sponge hàm “hấp thụ - absorb” số lượng bit đầu vào tùy ý thành trạng thái nó, sau số lượng bit đầu tùy ý “ép - squeeze” thành trạng thái Hàm f ánh xạ chuỗi có độ dài cố định ký hiệu b thành chuỗi có độ dài giống nhau, b gọi độ rộng f Các hàm SHA-3 mô tả tiếp sau trường hợp cụ thể cấu trúc sponge hàm f hàm nghịch đảo, tức phép hoán vị, cấu trúc sponge không yêu cầu f hàm nghịch đảo Rate r số nguyên dương nhỏ độ rộng b Hiệu suất (capacity) ký hiệu c số nguyên dương b r Do đó, r c b Quy tắc đệm pad hàm tạo phần đệm, tức chuỗi với độ dài phù hợp để nối với chuỗi khác Với cấu trúc sponge, phần đệm nối vào thơng báo nhằm đảm bảo phân chia thành loạt chuỗi r bit Nhìn chung, cho trước số nguyên dương x số nguyên không âm m , đầu pad( x, m) chuỗi với đặc điểm m len(pad( x, m)) bội số dương x Thuật tốn mơ tả quy tắc đệm cho hàm Keccak tương tự hàm SHA-3 Cho trước ba thành phần f , pad r mô tả trên, hàm SPONGE[ f ,pad, r ] mơ tả thuật tốn ( M , d ) M thơng báo đầu vào hàm sponge d độ dài mong muốn đầu tính theo bit Độ rộng b xác định lựa chọn 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 cho len( Z ) d Các bước: Cho P M || pad(r ,len( M )) 22 Cho n len( P) / r Cho c b r Cho P0 , , Pn1 dãy chuỗi có độ dài r cho P P0 || || Pn1 Cho S 0b c Với i từ đến n , cho S f ( S ( Pi || )) Cho Z chuỗi rỗng Cho Z Z || Truncr (S ) Nếu d Z , trả lại Truncd ( Z ) ; ngược lại tiếp tục 10 Cho S f ( S ) tiếp tục với bước Lưu ý đầu vào d xác định số lượng bit mà thuật tốn trả về, khơng ảnh hưởng đến giá trị Về nguyên tắc, đầu coi chuỗi vô hạn thực tế trình tính tốn bị dừng lại sau tạo số lượng bit đầu mong muốn Quy tắc đệm multi-rate ký hiệu 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 cho m len( Z ) bội số dương x Các bước: Cho j (m 2) mod x j Trả lại 1|| ||1 Như vậy, dấu hoa thị “pad10*1” bit “0” bị bỏ qua lặp lặp lại đến tạo chuỗi đầu có độ dài mong muốn 2.3.Mở rộng hàm băm SHA-3 2.3.1.Mô tả keccak(c) Keccak họ hàm sponge với phép hoán vị Keccak-𝑝[𝑏,2 +12], hàm sử dụng quy tắc đệm pad10*1 Họ hàm tham số hóa lựa chọn rate r hiệu suất c cho r c tập hợp {25,50,100,200,400,800,1600}, tức bảy giá trị b Khi giới hạn trường hợp b 1600 , họ Keccak ký hiệu Keccak[c]; trường hợp này, r xác định cách chọn c Cụ thể, Keccak[c] SPONGE[Keccak p[1600,24],pad10 *1,1600 c] Do đó, cho trước thông báo M độ dài đầu 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 định nghĩa từ hàm Keccak[c] cách nối thêm hai bit vào thông báo mô tả độ dài đầu 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 trường hợp, hiệu suất (capacity) gấp đôi độ dài tóm lược, tức c 2d Hai bit nối thêm vào thông báo (tức 01 ) hỗ trợ chia tách miền (domain separation); nghĩa phân loại thông báo cho hàm băm SHA-3 từ thông báo cho XOF SHA-3, lĩnh vực khác xác định tương lai 2.3.3.Các mở rộng đầu SHA-3 Hai hàm XOF SHA-3, SHAKE128 SHAKE256 định nghĩa từ hai hàm trung gian gọi RawSHAKE128 RawSHAKE256, định nghĩa từ hàm Keccak[c] Cụ thể, thông báo ký hiệu M độ dài đầu ký hiệu d , RawSHAKE128( M , d ) Keccak[256](M ||11, d ), RawSHAKE256(M , d ) Keccak[512](M ||11, d ) Hai bit nối thêm vào thông báo tức 11 trường hợp hỗ trợ cho việc chia tách miền (domain separation) Hai hàm XOF SHA-3 SHAKE128( M , d ) RawSHAKE128( M ||11, d ), SHAKE256( M , d ) RawSHAKE256( M ||11, d ) Trong trường hợp này, bit 11 nối thêm vào thông báo nhằm tương thích với lược đồ mã Sakura Lược đồ tạo thuận lợi cho trình phát triển phần mở rộng hàm số gọi băm dạng (tree hashing), q trình xử lý song song ứng dụng cho tính tốn cập nhật giá trị tóm lược thơng báo dài cách hiệu Hai hàm XOF SHA-3 định nghĩa trực tiếp từ Keccak 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 hàm băm SHA Với mức độ an tồn chống lại cơng tiền ảnh thứ hai lên thông báo M , hàm số L( M ) định nghĩa log (len( M ) / B) , B độ dài khối hàm số, tức 512 bit SHA-1, SHA-224 SHA-256, 1024 bit cho SHA512 24 Hàm Kích thước đầu Mức độ an tồn tính theo Bit Va chạm Tiền ảnh Tiền ảnh thứ hai SHA-1 160 < 80 160 160 L( M ) SHA-224 224 112 224 min(224,256 L( M )) SHA512/224 224 112 224 224 SHA-256 256 128 256 256 L( M ) SHA512/256 256 128 256 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ựa chọn thay cho hàm SHA-2 thiết kế nhằm kháng lại công tiền ảnh, tiền ảnh thứ hai va chạm tương đương lớn khả kháng mà hàm SHA-2 cung cấp Các hàm SHA-3 thiết kế để chống lại kiểu công khác cơng mở rộng độ dài, có khả chống lại với hàm ngẫu nhiên có độ dài đầu tương tự, cung cấp mức độ an toàn cao độ dài đầu tính bit hàm băm Hai hàm XOF SHA-3 thiết kế nhằm chống lại công va chạm, tiền ảnh, tiền ảnh thứ hai công khác, khả kháng lại với khả hàm ngẫu nhiên với độ dài đầu yêu cầu, có độ bảo mật cao 128 bit SHAKE128 256 bit SHAKE256 Một hàm ngẫu nhiên có độ dài đầu d bit cung cấp độ an toàn lớn d / bit chống lại công va chạm d bit chống lại công tiền ảnh tiền ảnh thứ hai, SHAKE128 SHAKE256 cung cấp độ an tồn tương ứng nhỏ 128 256 bit d đủ nhỏ mô tả 25 TỔNG KẾT Hiện SHA-3 coi an toàn sử dụng rộng rãi loại tiền điện tử đóng vài trị quan trọng q trình khai thác Có thể thấy vấn đề an tồn mạng ngày trọng, cần địi hỏi hàm bảo mật ngày tiên tiến,vì việc áp dụng hàm băm SHA-3 ý đến phát triển sử dụng nhiều 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”, giảng, Học Viện Cơng nghệ Bưu 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 Tổng quan hàm băm >Khái quát hàm băm >Cấu trúc ứng dụng >Giới thiệu số hàm SHA >Trạng thái keccak-p Kecak-p: >Ánh xạ bước >Hoán vị >Cấu trúc sponge >Độ bảo mật Mở rộng SHA-3 >Keccak ( c ) >Các hàm SHA-3 Cơng việc Thành viên Tìm tài liệu,work,silde, thuyết trình Nguyễn Mạnh Hùng Tìm tài liệu,work,silde, thuyết trình Nguyễn Đức Mạnh Tìm tài liệu,work,silde, thuyết trình Bùi Trọng Hồn Tìm tài liệu,work,silde, thuyết trình Nguyễn Duy Khánh Tìm tài liệu,work,silde, thuyết trình Đồn Khánh Linh 26 ... tiêu biểu số họ hàm băm SHA Bài báo cáo tìm hiểu rõ hàm băm SHA- 3 CHƯƠNG I: TỔNG QUAN VỀ HÀM BĂM MẬT MÃ 1.1.Khát quát chung hàm băm Trong nghành mật mã học, hàm băm mật mã hàm băm với số tính... báo cho hàm băm SHA- 3 từ thông báo cho XOF SHA- 3, lĩnh vực khác xác định tương lai 2 .3. 3.Các mở rộng đầu SHA- 3 Hai hàm XOF SHA- 3, SHAKE128 SHAKE256 định nghĩa từ hai hàm trung gian gọi RawSHAKE128... Họ Hàm băm SHA Thuật toán băm an toàn (SHA) NIST NSA thiết kế xây dựng Sau NIST đề xuất làm chuẩn hàm băm an tồn (SHS) bao gồm thuật tốn băm: SHA- 1, SHA- 224, SHA- 256, SHA- 38 4, SHA- 512 SHA- 3 Các