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 (1.86 MB, 19 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<i><b>Đề tài: Tìm hiểu về hàm băm (Hash Funtion) mật mã.</b></i>
<i><b>Giảng viên hướng dẫn : Lê Trọng Hiền Nhóm thực hiện : Nhóm 5 </b></i>
<i><b>Lớp: DHTD17ATT - 422000373501 </b></i>
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2"><b>DANH SÁCH THÀNH VIÊN NHÓM 5 </b>
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3"><b>MỤ LỤCC </b>
<b>1 Giới thiệu hàm Băm (HASH Function)... 4 </b>
1.1 Nhu cầu tồ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
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4"><b>1 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 </b>
- Tính tồ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 tồ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 tồ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 q trình truyền thơng tin, giới hạn nơi t b thnó 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 tồ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
<b>1.2 Giới thiệu hàm băm </b>
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 lihàm này sẽ cho ra một chuỗi có độ dài cố định ở đầ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.
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”)
<b>1.3 Tính chất cơ bản của hàm Băm </b>
• 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 Ginhiê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/ )<small>𝑀</small>.
o XS để tồn tại ít nhất một người có cùng ngày sinh với bạn là: (364 365/ )<small>𝑀</small>.
1-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 tốn để tìm được hai thông điệp đầu vào # 𝑥<sub>1 </sub> 𝑥<sub>2</sub>sao cho chúng có cùng gi trấ ị băm.(Nghịch lý ngày sinh – Birthday paradox)
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">Ví 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ê tốn học thì M(M-1) >=2 x 365 x 𝑙𝑜𝑔<small>𝑒2</small> (*) 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.
<b>1.4 Các hàm băm mật mã học </b>
<b>1.4.1 Danh sách các hàm băm mật mã học: Thuật </b>
<b>tốn </b>
<b>thước trạng thái trong </b>
<b>Kích thước khối </b>
<b>Độ dài </b>
<b>Kích thước Word </b>
<b>Xung đột </b>
<b>MD2 </b>
năng lớn
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7"><b>160/320 </b>
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.
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8"><b>2Ứng d ng cụủa hàm băm 2.1 Chứng thực thông đi ệp</b>
- Là một cơ chế cho phép chúng ta có thể kiểm sốt tính tồn vẹn của thơng điệp. Tức là chúng ta phải đảm bảo trong q 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 u cầu là cơ chế ứng thực phải hỗ ợ nhận dạng ch trngườ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).
<b>*Xác thực bằng hàm băm </b>
-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 tồ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 chThô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ã hố bởi khố 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 khố 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
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">việ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ã khố 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à tồ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.
<b>*Mã xác thực thông điệp </b>
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 sốt tính tồ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 khố 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:
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">Trong 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ã hố tồn bộ giá trị thơng điệp đính kèm với MAC bằng một khố 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 khố 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 khố K2 dùng để ữ bí mậgi t thơng điệp và mã xác thực thơng điệp đính kèm.
<b>2.2 Nâng cao hiệu quả ữ ch kí số </b>
- Là một phương pháp mã hóa điện tử được sử dụng để xác nhận tính tồ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 q 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
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">Mật mã khố 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 khố của mật mã RSA: khố cơng khai (e, N), và khoá cá nhân (d, N).
Để ký thơng điệp M, ta sử dụng khố 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 đó, q 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ã khố cơng khai khác):
<b>2.3 Ứng dụng khác 2.3.1 Lưu trữ mật khẩu </b>
<b>- Hàm băm được dùng để tạo one-way password file, trong cơ chế này giá trị băm của </b>
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 tốn tốn học (hàm Hi c sbă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
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">ký 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 ldữ ệ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 thcó quyền truy cập vào cơ sở dữ li u. ệ
<b>2.3.2 Nhận diện xâm hại (intrusion detection) và nhận diện virus (virus detection) </b>
- 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 R).
CD-- 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ữ thliệ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 thmơ 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 ngồ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ó chthể đượ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 thhoặ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 ththi 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 likiện và hoạt động trên mạng và hệ ống. Dữ ệu này sau đó có thể được sử dụng để th liphân tích và xác định các mơ hình tấn cơng hoặc xu hướng đe dọa.
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="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 thhạ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 tố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). ngTương tự như vậy một thuật tố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 tốn khơng đối xứng thường chậm hơn so với thuật tố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.
<b>2.3.4 Xây dựng hàm ngẫu nhiên giả </b>
-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 tốn hiệu quả mơ phỏng một oracle ngẫu nhiên theo cách sau: khơng có thuật tố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 hồn tồ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 tồn.
- SHA là viết tắt của Secure Hash Algorithm (Thuật toán băm an tồn). Đây là một loạt các thuật tố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 liThuậ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)
<b>3.1.2 Ngu n g c lịch sử ồố</b>
Thuật toán SHA (Secure Hash Algorithm) ra đời lần đầu tiên vào năm <b>1993. </b>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
</div>