Tải bản đầy đủ (.docx) (11 trang)

ĐỀ TÀI : TÌM HIỂU HÀM BĂM MẬT MÃ SHA-3

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (150.38 KB, 11 trang )

Đề cương đồ án thực tập tốt nghiệp
ĐỀ TÀI : TÌM HIỂU HÀM BĂM MẬT MÃ SHA-3
LỜI NÓI ĐẦU


CHƯƠNG I : TÌM HIỂU HÀM BĂM MẬT MÃ
1.1. Giới thiệu sơ lược về hàm băm mật mã
Hiểu theo nghĩa đơn giản, hàm băm là hàm cho tương ứng một mảng dữ
liệu lớn với một mảng dữ liệu nhỏ hơn mà được dùng rộng rãi trong nhiều ứng
dụng tin học, không chỉ thuộc phạm vi mật mã. Ở đây, chúng ta chỉ xét đến các
hàm băm trong phạm vi các hàm băm mật mã, xem xét cụ thể đến các ứng dụng
của chúng trong việc đảm bảo tính toàn vẹn của dữ liệu.
Các hàm băm nhận đầu vào là một chuỗi bit có chiều dài hữu hạn tùy ý và
tạo ra một chuỗi bit có chiều dài cố định bằng n bit (n > 0) gọi là mã băm (hash
code).
Trong mã hóa, mã băm được xem như là ảnh đại diện thu gọn (compact
representative image) của một chuỗi bit có độ dài hữu hạn tùy ý và được dùng
để nhận diện cho chuỗi bit đó. Kết hợp với công cụ tạo chữ ký số, các hàm băm
được dùng cho việc đảm bảo tính toàn vẹn của dữ liệu. Trong lược đồ chữ ký số,
mã băm của chuỗi bit được tính ở thời điểm T1 và được bảo vệ để chống lại mọi
sự thay đổi bất hợp pháp. Tại thời điểm T2 sau đó, để kiểm tra xem chuỗi bit x có
bị thay đổi hay không, người ta thường tính giá trị hàm băm của chuổi bit này tại
thời điểm T2, mà ta ký hiệu là xT2, sau đó so sánh giá trị vừa tính với mã băm tại
thời điểm T1. Nếu 2 giá trị bằng nhau thì người ta chấp nhận chuổi bit tại thời
điểm T2 trùng khớp với chuổi bit tại thời điểm T1, tức chuỗi bit x vẫn chưa bị
thay đổi. Như vậy vấn đề bảo đảm tính toàn vẹn của chuỗi bit có chiều dài tùy ý
được thay bằng việc bảo vệ sự toàn vẹn của chuỗi bit có chiều dài cố định.
1.1.1 Định nghĩa tổng quát của hàm băm
* Sơ đồ cơ bản của 1 hàm băm mật mã :

Thông điệp M



P,L


Hàm băm h = H(M)

giá trị băm h (fixed length)
* Đị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 (tuỳ thuộc vào thuật toán 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.
Page 2


- 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 sẽ cho ra một chuỗi có độ dài cố định ở đầu ra.
- Hàm h(x) được gọi là một hàm băm nếu nó thoã mãn hai tính chất sau:
 Nén gọ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
 Dễ 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
1.1.2 Hoạt động của 1 hàm băm:

có chiều  Nén gọn (Compression): Hàm h(x) tương ứng chuỗi bit đầu vào x có
1.2 Các chức năng của hàm băm mật mã
Một hàm băm mật mã lý tưởng có các tính chất sau :
3.1. Tính kháng tiền ảnh (Preimage resistance)
Với mọi đầu ra y cho trước, không thể tìm được bất kỳ 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).
3.2. Tính kháng tiền ảnh thứ hai (2nd - Preimage resistance)
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 giá trị x’  x sao cho h(x’)=h(x) (hay không thể tìm ra 2 thông điệp
khác nhau mà có cùng giá trị băm).
3.3. Tính kháng xung đột (Collision resistance)
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ó cùng giá trị băm h(x)=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ó).
Page 3


4. Phân loại hàm băm mật mã
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ã được
phân thành hai lớp:
 Lớp các hàm băm sử dụng khoá (keyed hash functions), chẳng hạn như
MAC (Message Authentication Codes): nhận hai giá trị đầu vào
 Thông điệp cần tính giá trị băm
 Khoá bí mật để băm văn bản theo đúng chuẩn quy định
 Lớp các hàm băm không sử dụng khoá (unkeyed hash functions): chỉ
nhận duy nhất một giá trị đầu vào là Thông điệp (message).
Trong lớp các hàm băm không sử dụng khoá thì MDCs
(Modification Detection Codes – mã nhận diện sự thay đổi) là lớp con của lớp
này. Lớp hàm này lại tiếp tục phân thành các lớp con nhỏ hơn
 Hàm băm một chiều (One-Way Hash Functions - OWHFs): các
hàm trong lớp này đều thoã tính chất là với mọi mã băm biết trước, không thể
tính toán để tìm được chuỗi bit đầu vào có mã băm bằng với mã băm đã cho.
 Hàm băm kháng xung đột (Collision Resistant Hash Functions CRHFs): các hàm trong lớp này thoã mãn tính chất không thể tính toán để tìm
ra hai chuỗi bit có cùng giá trị băm.

5. Cấu trúc của thuật toán hàm băm
Khối dữ liệu đầu vào x có chiều dài tuỳ ý sẽ được phân thành các khối
con liên tiếp x1, x2, …, xm (với xi có chiều dài cố định là r). Tuy nhiên do
chiều dài khối ban đầu là tùy ý nên ta cần thêm vào dữ liệu ban đầu một số
bit phụ sao cho tổng số bit của khối dữ liệu x sau khi thêm vào sẽ là bội số
của r. Ngoài ra số bit phụ thêm vào thường chứa một khối bit xác định
chiều dài thực sự của khối dữ liệu khi chưa thêm các bit phụ. Sau đó ta lần
lượt cắt từng khối con r bit từ khối x.
Mỗi khối con r bit xi ta thực hiện một hàm nén của hàm băm h(x) được ký
hiệu là f. Tại bước thứ i, hàm nến f nhận dữ liệu đầu vào là xi và kết quả trung
gian của bước trước đó để tạo đầu ra là kết quả trung gian bước thứ i, ký hiệu là
Hi. Kết quả trung gian tại mỗi bước Hi là một chuổi bit có độ dài cố định bằng
n>0. Nếu ký hiệu IV (init value) là giá trị khởi tạo ban đầu cho H0, thì quá trình
lặp xử lý dãy các khối con được mô tả như sau:
H0=IV
H1= f(Hi-1,xi), (i=1,…,m)
h(x) = g(Hm)
Hi là kết quả trung gian sau bước thứ i, là các biến dây chuyền. Hàm g(x)
ánh xạ biến dây chuyền cuối cùng để tạo ra mã băm kết quả. Và thông thường,
Page 4


g(x) được chọn là ánh xạ đồng nhất: g(Hm)0Hm. Khâu then chốt trong xây dựng
hàm băm là thiết kế hàm nén f.
6. Ứng dụng của hàm băm mật mã
6.1. Xác thực thông điệp
Một ứng dụng điển hình của một hàm băm mật mã học như sau: Alice đưa
cho Bob một câu đố khó và tuyên bố rằng cô ấy đã giải được rồi. Bob muốn tự
giải, nhưng cũng muốn chắc chắn là Alice đúng là đã giải được. Do đó, Alice
viết đáp án, gắn thêm một nonce ngẫu nhiên, tính giá trị băm của nó, và đưa kết

quả băm cho Bob (trong khi vẫn giữ bí mật đáp án và nonce). Bằng cách này,
khi Bob tự giải xong, Alice có thể chứng minh rằng cô đã có đáp án từ trước
bằng cách đưa nonce cho Bob. Trong thực tiễn, Alice và Bob thường là
các chương trình máy tính, và bí mật thường là cái gì đó không dễ lừa bằng một
lời giải cho câu đó. Ứng dụng trên được gọi là một hệ thống tin cậy
(commitment scheme).
Một ứng dụng quan trọng khác của các hàm băm bảo mật là sự kiểm tra
tính toàn vẹn của thông điệp. Ví dụ, việc xác định xem một file hay một thông
điệp có bị sửa đổi hay không có thể thực hiện bằng cách so sánh tóm tắt
được tính trước và sau khi gửi (hoặc một sự kiện bất kỳ nào đó). Còn có thể
dùng tóm tắt thông điệp làm một phương tiện đáng tin cậy cho việc nhận
dạng file.
6.2. Chữ ký số
Một ứng dụng có liên quan là kiểm tra mật khẩu. Mật khẩu thường không
được lưu dưới dạng văn bản rõ (clear text), mà ở dạng tóm tắt. Để xác thực một
người dùng, mật khẩu do người đó nhập vào được băm và so sánh với kết quả
băm được lưu trữ.
Do các lý do cả về bảo mật và hiệu năng chương trình, đa số các thuật
toán chữ ký số nói rằng chỉ có tóm lược của thông điệp, chứ không phải toàn
văn thông điệp, được "ký". Các hàm băm còn có thể được dùng để tạo các bit
giả ngẫu nhiên (pseudorandom).
6.3. Các ứng dụng khác

Page 5


7. Các hàm băm mật mã sử dụng phổ biến hiện nay
Thuật
toán


MD5
SHA - 0
SHA - 1
SHA 256/224
SHA 512/384

Kíc
h
thư
ớc
đầu
ra
128
160
160
256/
224
512/
384

Kích
thước
trạng thái
trong

Kích
thước
khối

Độ dài


Kích
thước
Word

Xung
đột

128
160
160
256

512
512
512
512

64
64
64
64

32
32
32
32


không

có lỗi
không

512

1024

128

64

không

Trong danh sách dài các hàm băm mật mã trên, có một số hàm băm được
cho là dễ bị tổn thương và không nên sử dụng. Ngay cả khi một hàm băm chưa
bị phá vỡ, một tấn công thành công đối với một biến thể yếu đó có thể làm giảm
sự tự tin của các chuyên gia và dẫn đến loại bỏ nó. Ví dụ, vào tháng 8 năm 2004
người ta đã tìm ra những điểm yếu của một vài hàm băm phổ biến vào thời đó,
bao gồm SHA-0, RIPEMD, và MD5. Điều này đã đặt ra câu hỏi an ninh lâu dài
của các thuật toán sau này được bắt nguồn từ những hàm băm này - đặc biệt,
SHA-1 (một phiên bản mạnh của SHA-0), RIPEMD-128, và RIPEMD-160 (cả
hai phiên bản mạnh của RIPEMD). Vì vậy, cả SHA-0 và RIPEMD đều không
được sử dụng rộng rãi kể từ khi chúng được thay thế bởi các phiên bản mạnh.
Đến năm 2009, hai hàm băm mật mã được sử dụng thông dụng nhất vẫn
là MD5 và SHA-1. Tuy nhiên, MD5 đã bị phá vỡ do có một tấn công lên nó để
phá vỡ SSL trong năm 2008.
SHA-0 và SHA-1 là các thành viên của họ hàm băm SHA được phát triển
bởi NSA. Vào tháng 2 năm 2005, đã tấn công thành công trên SHA-1, việc tìm
kiếm va chạm trong khoảng 269 phép toán băm, thay vì 280 theo dự kiến cho
hàm băm 160-bit. Vào tháng 8 năm 2005, có một tấn công thành công

trên
SHA-1 trong đó việc tìm kiếm va chạm chỉ cần 263 phép toán băm.
Điểm yếu lý thuyết của SHA-1 tồn tại vốn có, nhưng về mặt thực tế để phá
vỡ nó cũng phải mất vài năm. Các ứng dụng mới có thể tránh được những
vấn đề này bằng cách sử dụng thêm các thành viên tiên tiến của họ SHA,
như SHA-2, hoặc sử dụng các kỹ thuật như băm ngẫu nhiên hóa sẽ không
quan tâm đến kháng va chạm. Tuy nhiên, để đảm bảo tính chất mạnh lâu
dài của các ứng dụng có sử dụng hàm băm, hiện có một cuộc thi nhằm thiết
Page 6


kế hàm băm thay thế cho SHA-2, nó sẽ có tên là SHA-3 và trở thành một
tiêu chuẩn FIPS vào năm 2012.

Page 7


CHƯƠNG II : GIỚI THIỆU VỀ HOÁN VỊ KÉT SẮT (KECCAK)
1.
2. Chức năng

Page 8


CHƯƠNG III : CẤU TRÚC SPONGE

Cấu trúc Sponge

Page 9



CHƯƠNG IV : KẾT LUẬN

Page 10


CHƯƠNG V : TÀI LIỆU THAM KHẢO
- Chapter 11 (Cryptography and Network Security - Principles and
Practice, 6th edition - William Stallings)

Page 11



×