- Mộ ố ứng dụng chú trọng mục tiêu toàn vẹn:t s• Tài liệu được sử dụng giống hệt tài liệu lưu trữ • Các thông điệp trao đổi trong một hệ ống an toàn không bị thay đổi sửth a chữa - Tính
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HỒ CHÍ MINH
KHOA QUẢN TRỊ KINH DOANH
🙣🕮🙡🙣🕮🙡
TIỂU LUẬN
Đề tài: Tìm hiểu về hàm băm (Hash Funtion) mật mã.
Giảng viên hướng dẫn : Lê Trọng Hiền Nhóm thực hiện : Nhóm 5
Lớp: DHTD17ATT - 422000373501
Trang 2DANH SÁCH THÀNH VIÊN NHÓM 5
Trang 3MỤ LỤC C
1 Giới thiệu hàm Băm (HASH Function) 4
1.1 Nhu cầu toàn vẹn và bí mật thông tin 4
1.2 Giới thiệu hàm băm 4
1.3 Tính chất cơ bản của hàm Băm 5
1.4 Các hàm băm mật mã học 6
2 Ứng dụng của hàm băm 8
2.1 Chứng thực thông điệp 8
2.2 Nâng cao hiệu quả chữ kí số 10
2.3 Ứng dụng khác 11
2.3.1 Lưu trữ mật khẩu 11
2.3.2 Nhận diện xâm hại (intrusion detection) và nhận diện virus (virus detection) 12 2.3.3 Phát sinh số ẫu nhiên giả(pseudorandom number generator – PRNG)ng 13
2.3.4 Xây dựng hàm ngẫu nhiên giả 13
3 Thuật toán 13
3.1 SHA là gì ? 13
3.1.1 Khái niệm 13
3.1.2 Nguồn gốc lịch sử 13
3.1.3 Công dụng và cách dùng 14
3.1.4 Vai trò 15
3.2 MD5 16
3.3 So sánh MD5 và SHA1 16
4 Tổng kết 17
5 TÀI LIỆU THAM KHẢO 18
Trang 41 Giới thiệu hàm Băm (HASH Function)
1.1 Nhu cầu toàn vẹn và bí mật thông tin
- Tính toàn vẹn (Integrity): người tấn công không thể can thiệp chỉnh sửa nội dung thông điệp
- Mộ ố ứng dụng chú trọng mục tiêu toàn vẹn:t s
• Tài liệu được sử dụng giống hệt tài liệu lưu trữ
• Các thông điệp trao đổi trong một hệ ống an toàn không bị thay đổi sửth a chữa
- Tính bí mật thông tin: tránh lộ thông tin đến những đối tượng không được xác thực hoặc để lọt vào các hệ ống khác.th
Ví dụ: trong giao dịch bằng thẻ ngân hàng hay tín dụng, hệ ống sẽ cố gắng thực hiệth n tính bí mậ ằng cách mã hóa số ẻ trong suốt quá trình truyền thông tin, giới hạn nơi t b th
nó có thể xuất hiện
- “Niêm phong” tài liệu/thông điệp:
• “Niêm phong” không bị sửa đổi/phá hủy đồng nghĩa với tài liệu/thông điệp toàn vẹn
• “Niêm phong”: băm, tóm lư c, đặợ t số kiểm tra
• Tạo ra “niêm phong”: hàm băm
1.2 Giới thiệu hàm băm
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
Ví dụ: Trong trường đại học, mỗi sinh viên được chỉ định một mã sinh viên không giống nhau và qua mã sinh viên đó có thể truy xuất các thông tin của sinh viên đó hay trong thư viện, mỗi một cuốn sách một mã số riêng và mã số đó có thể được dùng để xác định các thông tin của sách, chẳng hạn như vị trí chính xác của sách trong thư viện hay thể loại của sách đó,…
Hàm băm (hash function) là hàm một chiều mà nếu đưa một lượng dữ ệu bất kì qua li hàm này sẽ cho ra một chuỗi có độ dài cố định ở đầu ra
Too long to read on your phone? Save
to read later on your computer
Save to a Studylist
Trang 5Ví 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
Input – M có kích thước bất kỳ
Output – giá trị h có kích thước cố định, ngắn
H(x) – hàm một chiều (“Khó để tính nghịch đảo”)
1.3 Tính chất cơ bản của hàm Băm
• Tính chống tiề ảnh (Preimage resistant – one-way property): Cho trước giá trị n băm h tìm x sao cho H(x)=h là rất khó
• Tính chống tiền ảnh thứ hai (second preimage resistant – weak collision resistant – Tính chống trùng yếu): Cho thông điệp đầu vào x, việc tìm một thông điệp x’ với (x # x’) sao cho h(x’)=h(x) là rất khó
Ví dụ: ả sử bạn đang ở trong một lớp học với Msinh viên Hỏi M tối thiểu là bao Gi nhiêu để tồn tại một bạn khác có cùng ngày sinh với bạn với xác suất (XS) lớn hơn 50%?
o XS để 1 người khác ngày sinh v i bớ ạn là 364/365
o XS để M ngườ ều khác ngày sinh vớ ạn là i đ i b (364 365/ )𝑀
o XS để tồn tại ít nhất một người có cùng ngày sinh với bạn là: 1-(364 365/ )𝑀
o Để XS này >50% M>=253 người
→ Tính chống trùng yếu
• Tính chống trùng mạnh (Strong Collision resistant): Không thể tính toán để tìm được hai thông điệp đầu vào # 𝑥1 𝑥2sao cho chúng có cùng gi trấ ị băm (Nghịch lý ngày sinh – Birthday paradox)
Trang 6Ví dụ: Giả sử trong phòng có M sinh viên Vậy xác suất để có hai SV có cùng ngày sinh
là bao nhiêu phần trăm? (1 năm 365 ngày khác nhau)
o Theo nguyên lý chuồng bồ câu Dirichlet: cần có 365+1 = 366 người để tìm thấy 2 người có cùng ngày sinh với xác suất 100% Vì vậy với 30 người thì xác xuất này rất nhỏ Rất nhỏ, đúng không
o Tính theo xác suất thống kê toán học thì M(M-1) >=2 x 365 x 𝑙𝑜𝑔𝑒 2 (*) chỉ cần 23 người là đủ để xác suất hơn 50% Vì vậy bài toán này gọi là nghịch lý ngày sinh Điều này muốn nói lên rằng, trong nhiều trường hợp xác suất để hai mẩu tin có cùng bản Hash là không nhỏ như chúng ta nghĩ
→Tính chống trùng mạnh
1.4 Các hàm băm mật mã học
1.4.1 Danh sách các hàm băm mật mã học:
Thuật
toán
thước trạng thái trong
Kích thước khối
Độ dài
Kích thước Word
Xung đột
MD2
năng lớn
RIPEMD-128/256
Trang 7RIPEMD-160/320
2.3.2 Các hàm băm mã học phổ biến
Trong đó hàm SHA-1 là một trong những hàm đượ ử dụng rộng rãi nhấ ở c s t Việt Nam
Trang 82 Ứ ng d ng c ụ ủa hàm băm
2.1 Chứng thực thông đi ệp
- Là một cơ chế cho phép chúng ta có thể kiểm soát tính toàn vẹn của thông điệp Tức
là chúng ta phải đảm bảo trong quá trình truyền thông, thông điệp tại đầu nhận phải y hệt như khi nó được gửi đi
- Đảm bảo rằng thông điệp được gửi đi có chính xác như khi gửi hay không (có bị sửa đổi, thêm bớt, tẩy xóa, hoặc lặp lại trong quá trình trao đổi trên đường truyền hay không)
- Trong nhiều trường hợp, có một yêu cầu là cơ chế ứng thực phải hỗ ợ nhận dạng ch tr người g i (sender) là hử ợp pháp
- Hàm băm dạng này, giá trị băm (h) được gọi là tóm tắt thông điệp hoặc cốt thông điệp (message digest)
*Xác thực bằng hàm băm
-Như đã trình bày ở trên, hàm băm là trường hợp đặc biệt của mã xác thực thông điệp MAC Hàm băm là hàm một chiều, được công bố công khai, sử dụng để “nén” một thông điệp M từ độ dài tùy ý thành giá trị có độ dài cố định Hàm băm được ký hiệu là H(M) Giá trị H(M) được gọi là bản tóm tắt (message digest) hoặc giá trị băm (hash value) của thông điệp M Khác với mã xác thực thông điệp MAC, hàm băm H(M) không
sử dụng khóa Hàm băm H(M) phụ thuộc vào tất cả các bit của M, có khả năng kiểm tra tính toàn vẹn củ M Độ dài của giá trị băm phải đủ lớn để ịu được các tấn công a ch Thông thường, độ dài của giá trị băm 64 bit được coi là quá nhỏ và giá trị khoảng 128 – 512 bit được coi là thích hợp Mô hình xác thực đơn giản sử dụng hàm băm như sau:
Trong mô hình trên, thông điệp M được băm thành một giá trị H(M) và giá trị này được gắn kèm với thông điệp M; tất cả được mã hoá bởi khoá bí mật K và được gửi cho người nhận B Sau khi nhận được thông điệp, B giải mã thông điệp bằng khoá K Từ đó, B tách ra thông điệp M, băm nó thành giá trị H và so sánh với giá trị H(M) được đính kèm trong thông điệp nhận được Nếu hai giá trị này bằng nhau thì thông điệp được xác định
là toàn vẹn và đồng thời chủ nhân của nó được xác thực Một biến thể quan trọng của
Trang 9việc sử dụng hàm băm trong xác thực thông điệp là sử dụng quy trình mật mã khoá công khai như minh hoạ trong sơ đồ sau:
Trong mô hình trên, giá trị băm H(M) được mã hoá bằng khoá cá nhân của người gửi
và sau đó gắn kèm với thông điệp M và được gửi cho người nhận B Sau khi nhận được thông điệp, B tách ra thông điệp M và giá trị EKRA(H(M) B băm phần thứ nhất thành giá trị H(M); phần thứ giải B giải mã bằng khoá KUA Tiếp theo, B so sánh hai kết quả tính được Nếu chúng bằng nhau thì thông điệp được xác định là toàn vẹn và đồng thời chủ nhân của nó cũng được xác thực Đây cũng là mô hình chữ ký số đơn giản mà ta sẽ xem xét kỹ hơn ở phần sau
*Mã xác thực thông điệp
Mã xác thực thông điệp (MAC) là một chuỗi bit được gửi kèm với thông điệp Chuỗi bit này được tạo ra bởi một hàm của thông điệp và khóa bí mật, chỉ có người gửi và người nhận biết Độ dài thông điệp có thể tùy ý, còn MAC thường có độ dài cố định (ví dụ 128 bit)
Để tạo ra MAC, người ta có thể sử dụng hàm băm (hash function) thu gọn thông điệp đến kích thước cần thiết và dùng giá trị băm này kiểm soát tính toàn vẹn của thông điệp Các hàm băm không sử dụng giá trị bí mật chia sẻ giữa người gửi và người nhận nên có ứng dụng rộng rãi hơn
Như vậy, mã xác thực thông điệp chính là một kỹ thuật sử dụng khóa bí mật để tạo ra một khối bit độ dài cố định, gọi là checksum hoặc MAC, sau đó, khối này được ghép vào thông điệp để gửi cho người nhận nhằm xác thực thông điệp đính kèm
Giả sử A và B có chung một khóa bí mật K Khi A cần gửi thông điệp xác thực M cho
B, A tính: MAC = CK(M), với CK là hàm công khai sử dụng khoá K Sau đó, MAC được gửi kèm với thông điệp M cho B B nhận được MAC và thông điệp M‟ B tính MAC‟ = CK(M‟); và so sánh, nếu MAC = MAC‟ thì B có thể khẳng định M = M‟, tức là M đã không bị thay đổi trên đường truyền và A là người gửi thông điệp M (Ở đây ta giả sử ỉ có A và B biết khóa K) Mô hình đơn giản sử dụng mã xác thựch c thông điệp được minh hoạ như sau:
Trang 10Trong trường hợp trên, nội dung của thông điệp M được truyền dưới dạng plaintext nên
có thể bị kẻ gian đọc được Để bảo đảm tính bí mật cho thông điệp, ta có thể ực hiệth n việc mã hoá toàn bộ giá trị thông điệp đính kèm với MAC bằng một khoá bí mật dùng chung gi a ngưữ ời gửi và người nhận Điều đó được minh hoạ trong hình dưới đây:
Trong mô hình trên có hai khoá bí mật chia sẻ giữa A và B đã được sử dụng: Khoá K1 dùng để tạo mã xác thực thông điệp, còn khoá K2 dùng để ữ bí mậgi t thông điệp và mã xác thực thông điệp đính kèm
2.2 Nâng cao hiệu quả ữ ch kí số
- Là một phương pháp mã hóa điện tử được sử dụng để xác nhận tính toàn vẹn, nguồn gốc và không thể ối bỏ của thông tin điện tử.ch
- Nó cung cấp một cơ chế để xác định rằng một tài liệu hoặc một thông điệp điện tử không bị thay đổi trong quá trình truyền tải và được gửi từ một nguồn đáng tin cậy
- Giá trị băm của thông điệp được mã hóa bằng private key(khóa riêng tư) của user, bất
kỳ ai biết public key( khóa công khai) của user thì có thể ẩm tra thông điệp mà đượth c gắn kết v i chớ ữ ký số
- Kẻ tấn công muốn hiệu chỉnh thông điệp thì sẽ cần phải bi t private key cế ủa user
Ví dụ:
*Chữ ký số RSA
Trang 11Mật mã khoá công khai RSA có thể được sử dụng để tạo nên một quy trình chữ ký số đơn giản Giả sử có các khoá của mật mã RSA: khoá công khai (e, N), và khoá cá nhân (d, N)
Để ký thông điệp M, ta sử dụng khoá cá nhân (d, N) Ta tính: S = Md mod
N Chữ ký là S sẽ được kèm thông điệp M để gửi cho người nhận: {M, S}
Để kiểm tra chữ ký, ta cần kiểm tra M và Se xem có bằng nhau không?
Se mod N = M mod N ?
Trên thực tế, người ta không ký trực tiếp lên thông điệp M mà ký lên hàm băm của nó,
ví dụ: SHA512(M) Lúc đó, quá trình trên sẽ là:
Tính H = SHA512(M); S = Hd mod N Chữ ký là S sẽ được kèm thông điệp M để gửi cho người nhận: {M, S}
Để kiểm tra chữ ký ta tính: H = SHA512(M); sau đó kiểm tra H và Se xem có bằng nhau không: Se mod N = H mod N ?
Quy trình này có thể được minh hoạ bằng sơ đồ sau (mật mã sử dụng ở đây có thể là RSA hoặc mật mã khoá công khai khác):
2.3 Ứng dụng khác
2.3.1 Lưu trữ mật khẩu
- Hàm băm được dùng để tạo one-way password file, trong cơ chế này giá trị băm của
password được lưu, điều này tốt hơn là lưu chính bản rõ password
->Password không bị truy xuất bởi kẻ tấn công nơi chưa password
- Khi user nhập vào 1 password, thì giá trị băm của password được so với giá trị băm được lưu để kiểm tra
- ểu một cách đơn giản, băm mật khẩu là việ ử dụng một thuật toán toán học (hàm Hi c s băm hay còn gọi là hàm hash) để chuyển đổi mật khẩu có độ dài tùy ý thành một chuỗi
Trang 12ký tự có độ dài cố định gần như là duy nhất (vẫn có khả năng xảy ra việc trùng lặp trong trường hợp sử dụng các thuật toán yếu) được gọi là giá trị băm Giá trị băm thường được biểu diễ ở định dạng thập lục phân (hệ đếm có 16 ký tự, từ 0 đến 9 và A đến F) Và n bạn không thể dễ dàng đảo ngượ ại quá trình này, tức đưa giá trị băm vào để ra lấy ra c l
dữ ệu ban đầli u
-Ý tưởng là lưu trữ mật khẩu băm thay vì mật khẩu ở dạng văn bản sẽ làm giảm đáng
kể khả năng tin tặc có thể truy xuất tất cả mật khẩu trong hệ ống ngay cả khi chúng th
có quyền truy cập vào cơ sở dữ li u ệ
2.3.2 Nhận diện xâm hại (intrusion detection) và nhận diện virus (virus detection)
- Tính, lưu và bảo mật giá trị băm H(F) của các tập tin trong hệ thống (thể lưu trên CD-R)
- Kẻ xâm hạ ần phải hiệu chỉnh F mà không thay đổi H(F).i c
- Hệ thống Nhận hiện Xâm nhập (IDS) có các chức năng quan trọng để giám sát và bảo
vệ mạng và hệ ống máy tính khỏi các hoạt động xâm nhập và đe dọa bảo mật Dướth i đây là những chức năng cơ bản của h thệ ống IDS:
+ Giám sát và Phát hiện: Chức năng chính của IDS là theo dõi lưu lượng mạng và hoạt động hệ ống để phát hiện các hoạt động bất thường hoặc đáng ngờ Nó kiểm tra dữ th
liệu truyền qua mạng, hoạt động trên hệ ống và so sánh chúng với các chữ ký hoặc th
mô hình hành vi đã biết
+ Phát hiện Các Cuộc Tấn Công: IDS có khả năng phát hiện các cuộc tấn công từ bên ngoài hoặc bên trong mạng Các tấn công như xâm nhập vào hệ ống, quét mạng, tấth n công từ ối dịch vụ (DoS), thử lỗ hổng bảo mật, và nhiều hình thức tấn công khác có ch
thể được phát hiện bởi hệ ống IDS th
+ Phát hiện Phần Mềm Độc Hại: IDS có thể ận biết sự hiện diện của phần mềm độnh c hại, chẳng hạn như virus, worm, trojan hoặc rootkit Nó cảnh báo khi phát hiện các hoạt động liên quan đến phần mềm độc hại, như việc cố gắng lây lan hoặc thực hiện các hoạt động không hợp pháp
+ Cảnh Báo và Báo Động: Khi hệ ống IDS phát hiện hoạt động không mong muốn th hoặc đáng ngờ, nó sẽ tạo ra cảnh báo hoặc báo động Cảnh báo này có thể được thông báo đến các quản trị viên hoặc nhóm bảo mật để họ có thể ực hiện các biện pháp cần th thi t.ế
+ Thu Thập Dữ ệu và Phân Tích: IDS thu thập và lưu trữ dữ ệu liên quan đến các sự Li li kiện và hoạt động trên mạng và hệ ống Dữ ệu này sau đó có thể được sử dụng để th li phân tích và xác định các mô hình tấn công hoặc xu hướng đe dọa
Trang 13+ Phản ứng và Ngăn Chặn: Mộ ố hệ ống IDS có khả năng tự động phản ứng, chẳng t s th hạn như ngăn chặn địa chỉ IP đáng ngờ hoặc cố gắng ngăn chặn các cuộc tấn công Tuy nhiên, việc thực hiện các biện pháp này cần cân nhắc kỹ ỡng để tránh làm hại đến lư hoạt động hợp pháp
- Đây là là một thuật toán để tạo một chuỗi số có thuộc tính gần đúng với các thuộc tính của chuỗi số ngẫu nhiên Như chúng ta đã biết là bởi mật mã khối đối xứng tạo ra một đầu ra ngẫu nhiên nó có thể được xem như cơ sở của bộ tạo số giả ẫu nhiên (RNG) ng Tương tự như vậy một thuật toán mã hóa không đối xứng tạo đầu ra ngẫu nhiên cũng
có thể sử dụng để xây dựng nên bộ RNG Tuy nhiên các thuật toán không đối xứng thường chậm hơn so với thuật toán đối xứng nên nó không được dùng đẻ tạo ra các luồng bit RNG có kết thúc mở Hơn nữa tiếp cận không đối xứng là hữu dụng với việc tạo ra hàm giả ngẫu nhiên RF để tạo ra chuỗi bit giả ngắn
2.3.4 Xây dựng hàm ngẫu nhiên giả
-Trong mật mã, họ hàm giả ngẫu nhiên, viết tắt PRF, là một tập hợp các hàm có thể tính toán hiệu quả mô phỏng một oracle ngẫu nhiên theo cách sau: không có thuật toán hiệu quả nào có thể phân biệt (với lợi thế đáng kể) giữa một hàm được chọn ngẫu nhiên từ
họ PRF và một hàm oracle ngẫu nhiên (một hàm có đầu ra được cố định hoàn toàn ngẫu nhiên) Hàm giả ngẫu nhiên là công cụ quan trọng trong việc xây dựng các nguyên tắc
mã hóa nguyên thủy, đặc biệt là các sơ đồ mã hóa an toàn
3 Thuật toán
3.1 SHA là gì ?
3.1.1 Khái niệm
- SHA là viết tắt của Secure Hash Algorithm (Thuật toán băm an toàn) Đây là một loạt các thuật toán băm đượ ử dụng để tạo ra một giá trị băm duy nhấ ừ dữ ệu đầu vào c s t t li Thuật toán SHA thường được sử dụng trong mã hóa và xác thực thông tin, đảm bảo tính toàn vẹn của dữ liệu và kiểm tra xem liệu dữ liệu đã được thay đổi hay không
- Các phiên bản phổ biến của SHA gồm SHA-1, SHA-256, SHA-384 và SHA-512 Hiểu đơn giản ( mã SHA đượ ối ưu cho khả năng bảo mậc t t)
3.1.2 Ngu n g c lịch sử ồ ố
Thuật toán SHA (Secure Hash Algorithm) ra đời lần đầu tiên vào năm 1993 Nó được phát triển bởi Cục An ninh Quốc gia Hoa Kỳ (NSA) và được thiết kế để tạo ra các giá
trị băm (hash values) duy nhất từ dữ ệu đầu vào Các phiên bản khác nhau của SHA li