Professional Documents
Culture Documents
B9 BTL Atmtt
B9 BTL Atmtt
Hà Nội – 2022
An toàn mạng thông tin
Mục lục
Bảng phân chia công việc 3
Danh mục hình ảnh 4
Lời mở đầu 5
I. Đặt vấn đề 6
1.1. Yêu cầu 6
1.2. Mục tiêu 6
II. Tổng quan về hàm băm mật mã 6
II.1. Khái quát về hàm băm mật mã 6
II.1.1. Lịch sử phát triển 6
II.1.2. Định nghĩa 7
Nhóm 9 2
An toàn mạng thông tin
VIII. Tổng kết 20
IV. Tài liệu tham khảo 21
Nhóm 9 3
An toàn mạng thông tin
Hình 5.1 Cấu trúc bọt biển của hàm băm SHA3 14
Nhóm 9 4
An toàn mạng thông tin
Lời mở đầ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 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ã hoá và giải mã
thông tin mà cong 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 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
dược phát triển bởi cục an ninh quốc gia Mỹ. 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. Với bài tiểu luận với đề tài “Tìm hiểu hàm băm SHA3”
chúng ta sẽ cùng tìm hiểu về hàm băm SHA3 để rõ hơn cách thức hoạt động và các dụng
của nó nhé
Nhóm 9 5
An toàn mạng thông tin
I. Đặt vấn đề
1.1. Yêu cầu
-Làm rõ định nghĩa về hàm băm
- Nêu các tính chất, thuộc tính của hàm băm
-Phân tích cấu trúc và phương thức hoạt động của hàm băm
- Nêu các ưu nhược điểm hàm băm
- Nêu ứng dụng của hàm băm
Nhóm 9 6
An toàn mạng thông tin
đó, Google đã thông báo về cuộc tấn công vào SHA-1 thành công vào tháng 2 năm 2017
và kể từ đó, SHA-1 không còn được coi là an toàn nữa và việc sử dụng nó không còn
được khuyến khích. Hàm băm SHA-3 bắt đầu được phát triển vào khoảng 2007 sau khi
NIST công bố quy trình kiểm tra và cạnh tranh công khai, nhằm tìm kiếm một hàm băm
mật mã mới có thể khắc phục những sai sót tiềm ẩn của SHA-1 và SHA-2 trước đó. Năm
2012, NIST tuyên bố Keccack là thuật toán chiến thắng của cuộc thi và nó được tiêu
chuẩn hóa là thành viên mới nhất của gia đình SHA (đó chính là SHA-3).
II.1.2. Định nghĩa
● Sơ đồ cơ bản của 1 hàm băm mật mã:
Luồng dữ liệu gốc đi qua hàm băm sẽ cho ra giá trị băm có độ dài cố định.
● Định nghĩa:
Hàm băm( Hash function) là một hàm toán học chuyển đổi một thông điệp đầu vào
có độ dài bất kỳ thành một dãy bit có độ dài cố định (tùy thuộc vào thuật toán
Nhóm 9 7
An toàn mạng thông tin
băm). Dãy bit này được gọi là thông điệp rút gọn( message digest) hay giá trị băm
(hash value), đại diện cho thông điệp ban đầu.
● Hàm băm(hash function) là hàm một chiều mà nếu đưa một lượng dữ liệu
bất kì qua hàm này cho ra một chuỗi có độ dài cố định ở đầu ra.
Dựa trên tham biến đầu vào của các hàm băm , các hàm băm mật mã chia thành hai
lớp: gồm lớp hàm băm có khoá và lớp hàm băm không có khoá
Nhóm 9 8
An toàn mạng thông tin
Nhóm 9 9
An toàn mạng thông tin
SHAKE sẽ tạo ra bao nhiêu bit từ miếng bọt biển của nó theo yêu cầu, được gọi là XOFs
(Chức năng đầu ra có thể mở rộng). Ví dụ: SHAKE128 (M, 256) có thể được sử dụng như
một hàm băm với dòng bit 256 ký tự với độ bền bảo mật 128 bit. Độ dài lớn tùy ý có thể
được sử dụng làm trình tạo số giả ngẫu nhiên. Ngoài ra, SHAKE256 (M, 128) có thể được
sử dụng như một hàm băm với độ dài 128 bit và khả năng kháng 128 bit.
Tất cả các trường hợp đều thêm một số bit vào thông báo, ngoài cùng bên phải đại diện
cho hậu tố phân tách miền. Mục đích của việc này là để đảm bảo rằng không thể xây dựng
các thông báo tạo ra cùng một đầu ra băm cho các ứng dụng khác nhau của hàm băm
Keccak.
Việc triển khai tối ưu hóa bằng cách sử dụng AVX-512VL (tức là từ OpenSSL , chạy trên
CPU Skylake-X ) của SHA3-256 đạt được khoảng 6,4 chu kỳ mỗi byte cho các thư
lớn, và khoảng 7,8 chu kỳ mỗi byte khi sử dụng AVX2 trên CPU Skylake . Hiệu suất trên
các CPU x86, Power và ARM khác tùy thuộc vào lệnh được sử dụng và kiểu CPU chính
xác thay đổi từ khoảng 8 đến 15 chu kỳ mỗi byte, với một số CPU x86 cũ hơn lên đến 25–
40 chu kỳ mỗi byte.
Nhóm 9 10
An toàn mạng thông tin
IV. Các tính chất và thuộc tính của hàm băm
IV.1. Các tính chất của hàm băm
Hàm băm được đặc trưng bởi hai tính chất sau đây:
● Tính chất nén(compression): Hàm h(x) tương ứng chuỗi bit đầu vào x có chiều
dài hữu hạn tùy ý vào chuỗi bit y = h(x) có chiều dài cố định n>0 cho trước (tuỳ
vào thuật toán băm được sử dụng)
● Tính chất dễ dàng tính toán (easy of computation): với mọi chuỗi bit đầu vào x
có chiều dài hữu hạn tùy ý, h(x) được tính toán dễ dàng.
Ngoài 2 tính chất cơ bản trên còn thoả mãn 3 tính chất an toan dưới đây
● Tính kháng tiền ảnh (tính một chiều): Với mọi đầu ra y cho cho trước, không thể
tìm được dữ liệu đầu vào x sao cho h(x)=y (Hay không thể tìm được một thông
điệp từ một giá trị băm cho trước)
● Tính kháng tiền ảnh thứ 2: Với mọi dữ liệu đầu vào x cho trước và y=h(x),
không thể tính toán để tìm ra được x’ khác x sao cho h(x’)=h(x) (Hay không thể
tìm ra hai thông điệp khác nhau mà có cùng giá trị băm)
● Tính kháng va chạm: Không thể tính toán để tìm được hai dữ liệu đầu vào x và x’
phân biệt sao cho chúng cùng giá trị băm h(x0=h(x’) (Hay không thể sửa được một
thông điệp mà không làm thay đổi giá trị băm của nó)
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ỏ 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 rất khó khan về
mặt thời gian và tính toán
Nhóm 9 11
An toàn mạng thông tin
Nhóm 9 12
An toàn mạng thông tin
Điều đó có nghĩa là hai thông báo khác nhau sẽ không thể tạo ra cùng một giá trị băm. Vì
giá trị băm có độ dài cố định, điều này có nghĩa là có giới hạn kết hợp đầu ra. Mặt khác,
các đầu vào là một số vô hạn. Vì vậy, về lý thuyết, có khả năng hai thông điệp khác nhau
có thể tạo ra cùng một hàm băm.
Tuy nhiên, hàm băm trong mật mã làm cho tỷ lệ xảy ra va chạm băm trên thực tế không
đáng kể.
Tất cả các thuộc tính này đảm bảo tính bảo mật và khả năng sử dụng của một băm mật
mã. Vì vậy, đáp ứng các hàm băm mật mã khác nhau.
Trong đó:
- S được chia thành phần: một phần có kích thước r(tốc độ bít) và phần còn lại có
kích thước c (dung lượng). Các phần này được kí hiệu R và C tương ứng.
- f tạo ra một hoán vị giả ngẫu nhiên của 2b trạng thái từ S.
- P nối đủ các bít vào chuỗi đầu vào sao cho độ dài của đầu vào được đệm là bội số
của toàn bộ tốc độ bít r. Điều này có nghĩa là đầu vào được phân đoạn thành các
khối r bít.
Nhóm 9 13
An toàn mạng thông tin
Hàm bọt biển "hấp thụ"tất cả các khối của một chuỗi đầu vào được đệm như sau:
Lưu ý rằng các bit đầu vào không bao giờ được XOR vào phần C của bộ nhớ trạng
thái, cũng như không có bất kỳ bit nào của C được xuất trực tiếp. Mức độ mà C bị
thay đổi bởi đầu vào phụ thuộc hoàn toàn vào hàm biến đổi f. Trong các ứng dụng
băm, khả năng chống va chạm hoặc các cuộc tấn công preimage phụ thuộc vào C và
kích thước của nó (dung lượng c) thường gấp đôi mức kháng mong muốn.
Hình 5.1: Cấu trúc bọt biển của hàm băm SHA3
Nhóm 9 14
An toàn mạng thông tin
Trong phiên đưa dữ liệu vào (absorbing), khối tin đầu vào P i được thực thi phép cộng mô-
đun (XOR) thành một tập hợp con của trạng thái, sau đó được chuyển đổi thành một tập
hợp tổng bằng việc sử dụng hàm hoán vị f.
Trong phiên đưa dữ liệu ra (squeezing), các đầu ra Z i được đọc từ cùng một tập con của
trạng thái, xen kẽ với hàm hoán vị f.
Nhóm 9 15
An toàn mạng thông tin
có độ dài r-1 bit, khi đó khối tin cuối sẽ có độ dài sau khi thêm là (r-1) + (r-1) +
1 + 1 = 2r – thỏa mãn điều kiện chia hết cho r. Trong hàm đệm, bit khởi tạo là
bit 1 bắt buộc nên các khối tin chỉ khác nhau ở số bit 0 được bổ sung nên sẽ
không tạo ra cùng một hàm băm.
Ví dụ:
Input: 01 -> Output: 0110*1
Input: 11 -> Output: 1110*1
Input: 1111 -> Output: 111110*1
Nhóm 9 16
An toàn mạng thông tin
VII. Ứng dụng
● Lưu trữ và xác minh mật khẩu: Việc xác minh mật khẩu thường dựa vào các
hàm băm mật mã. Mật khẩu người dùng nếu được dưới dạng bản rõ có thể dẫn đến
những lỗ hổng bảo mật nghiêm trọng khi tệp mật khẩu bị xâm phạm. Do đó, để
làm giảm nguy cơ này, chúng ta thường chỉ lưu trữ giá trị băm của mỗi mật khẩu.
Để xác thực người dùng, mật khẩu do người dùng nhập vào được băm và so sánh
với giá trị băm được lưu trữ tương ứng. Mật khẩu ban đầu không thể được tính
toán lại từ giá trị băm được lưu trữ trong cơ sở dữ liệu.
Nhóm 9 17
An toàn mạng thông tin
tại máy khách (client) khác với file trên máy chủ (server). Hàm băm có thể giúp
chúng ta phát hiện ra những trường hợp bị lỗi như vậy.
Note: Trong hình là quá trình download file của hàm băm SHA2 nhưng đối với
SHA3 cũng tương tự.
● Đảm bảo tính toàn vẹn và xác thực: Đảm bảo tính toàn vẹn là đảm bảo thông tin,
dữ liệu nhận được được 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). Đặc biệt, khi hai bên thực hiện truyền thông trên một
kênh truyền thông không an toàn, đòi hỏi một phương pháp để hai bên truyền
thông có thể xác thực lẫn nhau..
Xác thực và toàn vẹn thông báo có thể được thực hiện bằng nhiều cách trong đó có
cả việc sử dụng mật mã khóa đối xứng nhưng đơn giản nhất là sử dụng hàm MAC
và hàm băm.
● Nâng cao hiệu quả chữ ký số: Hầu như tất cả các lược đồ chữ ký số đều yêu cầu
tính toán bản tóm lược của thông điệp bằng các hàm băm mật mã. Điều này cho
phép việc tính toán và tạo chữ ký được thực hiện trên một khối dữ liệu có kích
thước tương đối nhỏ và cố định thay vì trên toàn bộ văn bản dài. Tính chất toàn
vẹn thông điệp của hàm băm mật mã được sử dụng để tạo các lược đồ chữ ký số an
toàn và hiệu quả.
Nhóm 9 18
An toàn mạng thông tin
Khi bạn cần bảo mật và quyền riêng tư, hàm băm mật mã sẽ phát huy tác dụng. Nhược
điểm của băm mật mã là nó thường chậm hơn các loại băm khác. Nếu bạn cần băm nhanh
và không cần bảo mật cấp cao - thì tốt hơn là băm không phải mã hóa. Ví dụ - nếu bạn
đang tạo chỉ mục của một số dữ liệu không nhạy cảm.
Sự khác biệt chính giữa băm không mật mã và mã hóa là băm cực kỳ khó bị phá vỡ. Lưu
ý rằng nó không phải là không thể. Tuy nhiên, băm mật mã làm cho việc bẻ khóa một
hàm gần như không thể.
Hàm băm là một trong những khối xây dựng chính cơ bản của công nghệ. Đó là lý do tại
sao bạn cần hiểu về băm và các khái niệm liên quan của nó - những thứ như tốc độ băm
và chức năng và sau đó thảo luận về những gì mới về thuật toán Keccak.
Hash là quá trình lấy bất kỳ dữ liệu đầu vào nào và chạy nó thông qua một thuật toán, sau
đó tạo ra dữ liệu đầu ra có kích thước cụ thể và nhất quán.
Dữ liệu đầu ra là một hàm băm. Thuật toán được sử dụng trong quá trình này được gọi là
hàm băm. Và cuối cùng, tốc độ mà bạn có thể đẩy dữ liệu thông qua hàm băm để tạo ra
một hàm băm mới là tốc độ băm của bạn.
Nhóm 9 19
An toàn mạng thông tin
[ H. Q. Tran, "Nghiên cứu hàm băm SHA3 và cài đặt chương trình giao diện thực
3 hiện," 123docz.net, [Online]. Available: https://123docz.net//document/4573985-
] nghien-cuu-ham-bam-sha3-va-cai-dat-chuong-trinh-giao-dien-thuc-hien.htm.
Nhóm 9 20