Trong phần 2, chúng ta sẽ xem xét các cuộc tấn công có thể xảy ra đối vớicác hàm băm lặp đi lặp lại, xem xét các mối quan hệ giữa tính bảo mật của mộthàm băm được lặp lại và tính bảo mật
Trang 1BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
BÁO CÁO NGHIÊN CỨU
TÌM HIỂU VỀ HASH FUNCTIONS DỰA
TRÊN BLOCK CIPHERS
Ngành: An toàn thông tin
Nhóm 6
Sinh viên thực hiện:
Trương Văn Tâm
Đào Văn Thạo
Phạm Văn Ngọc Tuấn
Lê Văn Tiền
Nguyễn Văn Trường
Trang 2BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
BÁO CÁO NGHIÊN CỨU
TÌM HIỂU VỀ HASH FUNCTIONS BASE ON
BLOCK CIPHERS
Ngành: An toàn thông tin
Nhóm 6
Sinh viên thực hiện:
Trương Văn Tâm
Đào Văn Thạo
Phạm Văn Ngọc Tuấn
Lê Văn Tiền
Nguyễn Văn Trường
Nguyễn Đức Anh
Người hướng dẫn:
GV.Hoàng Thu Phương
Hà Nội, 2021
Trang 3MỤC LỤC
MỤC LỤC .iii
LỜI MỞ ĐẦU vi
Chương 1. Giới thiệu 1
Chương 2: Các hàm băm và tấn công phát lại 2
Chương 3:Hàm Băm dựa trên Mã Khối 8
3
Trang 4MỞ ĐẦU
Tổng quan, các hàm băm được lặp lại dựa vào mã hóa khối đã được xử lý.Năm cuộc tấn công vào một hàm băm lặp đi lặp lại và vòng băm của chúng đãđược xây dựng Sự khôn ngoan của việc tăng cường các hàm băm như vậy bằngcách hạn chế block cuối cùng của thông điệp được băm được nhấn mạnh Các sơ
đồ để xây dựng các vòng băm m-bit và 2m-bit đã được nghiên cứu Cách chủ yếu
để để đánh giá sức mạnh của các vòng băm là dùng phép toán đơn giản (trong cảhai phân đoạn) cho phép biến đổi có thể đảo ngược cho đầu vào và đầu ra của mộtvòng băm tạo ra một vòng băm mới với cùng một cấp độ bảo mật Bằng cách ápdụng nguyên tắc này, bốn cuộc tấn công vào ba chức năng vòng băm 2m bit đã đềxuất trước đó được triển khai Cuối cùng, ba vòng băm mới trên một bộ mã hóakhối m-bit với 1 khóa 2m-bit được đề xuất
Trang 6PHẦN 1: GIỚI THIỆU
Bản báo cáo này sẽ cung cấp cho người đọc thông tin một cách khá đầy đủ
về các hàm băm có được bằng cách lặp lại một hàm vòng
Trong phần 2, chúng ta sẽ xem xét các cuộc tấn công có thể xảy ra đối vớicác hàm băm lặp đi lặp lại, xem xét các mối quan hệ giữa tính bảo mật của mộthàm băm được lặp lại và tính bảo mật vòng băm của nó nhằm chỉ ra tinh hoa củaviệc tăng cường sức mạnh cho hàm băm bằng cách cuộn block cuối cùng củathông điệp để băm
Trong phần 3, ta xem xét các hàm băm dựa vào mã hóa khối (hash functionsbased on block ciphers) Đặc biệt, ta sẽ xét đến các vấn đề xây dựng các vòng bămm-bit và các vòng băm 2m-bit từ mật mã khối m-bit Một nguyên tắc được chínhthức hóa để đánh giá sức mạnh của các hàm vòng băm là việc áp dụng các phépbiến đổi đảo ngược đơn giản về mặt tính toán (trong cả hai phân đoạn) cho đầu vào
và đầu ra của vòng băm tạo ra một vòng băm mới với cùng mức độ bảo mật Đểchứng minh nguyên tắc này, chúng tôi thực hiện bốn cuộc tấn công vào ba vòngbăm 2m-bit được đề xuất trước đó Cuối cùng, các vòng băm mới dựa trên mật mãkhối m-bit với khóa 2m-bit được đề xuất
Trang 72 Các hàm băm và tấn công phát lại
Hàm băm là một ánh xạ có thể thực hiện dễ dàng từ tập hợp tất cả các chuỗinhị phân có độ dài tối thiểu nhất định hoặc lớn hơn đến tập hợp các chuỗi nhị phân
có độ dài cố định nào đó
Trong các ứng dụng mật mã, các hàm băm được sử dụng trong các chươngtrình chữ ký số và trong các chương trình cung cấp tính toàn vẹn của dữ liệu (vídụ: để phát hiện việc sửa đổi một thông báo)
Hàm băm phát lại là một hàm băm Hash (-) được xác định bởi một hàm cóthể tính toán dễ dàng h (-,-) từ hai chuỗi nhị phân có độ dài tương ứng m và đếnmột chuỗi nhị phân có độ dài m theo cách thông báo
M = ( M1+ M2 +… + M n ) trong đó Mi có độ dài l, được băm thành giá trị băm
H = Hn có độ dài m bằng tính toán đệ quy
Hi = h(Hi-1 , Mi ) i = 1,2, ,n (1)
trong đó h là một giá trị ban đầu được chỉ định Chúng ta sẽ viết M = Hash(H0, M) để thể hiện rõ ràng sự phụ thuộc vào H0 Hàm h sẽ được gọi là hàm bămvòng Việc xây dựng đệ quy các hàm băm như vậy đã được Merkle gọi là “phươngpháp meta” Đối với dữ liệu thông báo có tổng độ dài tính bằng bit không phải làbội số của l, người ta có thể áp dụng "Padding" (hiểu nôm na là khoảng đệm) xácđịnh cho thông báo được băm bởi (1) để tăng tổng độ dài lên bội số của l
Đối với các hàm băm phát lại, chúng ta phân biệt 5 cuộc tấn công sau:
1 Tấn công mục tiêu ( Target attack ): Cho H0 và M tìm M’ sao M’ ≠ M nhưng Hash(H0 , M’) = Hash(H0 , M)
2 Tấn công mục tiêu khởi động tự do (Free-start target attack ): Cho H0 và Mtìm H '0 và M’ sao cho ( H '0 ,M ) ≠ (H0 , M ) nhưng Hash(H '0 , M’) = Hash(H0 , M)
3 Tấn công va chạm ( Collision attacks): Cho H0, tìm M và M’ sao cho M’ ≠
M nhưng Hash(H0 , M’) = Hash(H0 , M)
4 Tấn công va chạm bán tự do ( Semi-free-start collision attack ): Tìm H0, M
và M’ sao cho M’ ≠ M nhưng Hash(H0 , M’) = Hash(H0 , M)
5 Tấn công va chạm khởi động tự do ( Free-start collision attack ): Tìm H0,
H '0 ,M và M’ sao cho ( H '0 ,M ) ≠ (H0 , M ) nhưng Hash(H '0 , M’) = Hash(H0 ,M)
2
Trang 8Nhận xét: Trong các ứng dụng mà H0 được chỉ định và cố định, các cuộc tấncông 2, 4 và 5 không phải là “các cuộc tấn công thực sự” Điều này là do giá trịban đầu H0 sau đó là một phần tích hợp của hàm băm nên một giá trị băm đượctính từ một giá trị ban đầu khác sẽ không được chấp nhận Tuy nhiên, nếu ngườigửi được tự do lựa chọn và / hoặc thay đổi H0, thì các cuộc tấn công 2, 4 và 5 cóthể là các cuộc tấn công thực sự, tùy thuộc vào cách mà hàm băm được sử dụng.Lưu ý rằng các cuộc tấn công khởi động tự do và nửa tự do không bao giờ khó hơncác cuộc tấn công mà H0 được chỉ định trước.
Đối với hàm băm m-bit, các cuộc tấn công mục tiêu brute-force, trong đóngười ta chọn ngẫu nhiên một M ’cho đến khi một người chạm vào “ mục tiêu ” H
= Hash (H0, M), yêu cầu khoảng 2m phép tính các giá trị băm Nó theo sau từ "birthday argument" thông thường rằng các cuộc tấn công va chạm bruteforce yêu cầukhoảng 2m/2 phép tính giá trị băm Đặc biệt, đối với các hàm băm tròn l ≥ m để có thểđạt được tất cả các giá trị băm 2m với các tệp tin một khối, các cuộc tấn công mục tiêubrute-force yêu cầu khoảng 2m tính toán của hàm vòng h trong khi các cuộc tấn công
va chạm brute-force yêu cầu khoảng 2m/2 các phép tính của hàm vòng h Chúng ta sẽnói rằng tính bảo mật tính toán của hàm băm là lý tưởng khi không có sự thiếu hụtnào về cơ bản tốt hơn brute force
Trong phần thảo luận sau đây, chúng tôi xem xét một số mối quan hệ giữatính bảo mật của một hàm băm được lặp lại và độ mạnh của hàm vòng băm của nó.Bằng một cuộc tấn công vào hàm vòng băm, chúng ta có nghĩa là một cuộc tấncông trong đó tất cả các thông điệp liên quan chỉ chứa một khối Ví dụ, một cuộctấn công mục tiêu trên hàm vòng h có nội dung: cho H0 và M1, tìm M '1 sao cho M '1
≠ M1 nhưng h (H0, M '1) = h (H0, M1) Khi một cuộc tấn công mục tiêu vào hàmvòng tạo ra M '1 , sau đó, bằng cách 'đính kèm' các khối thông báo M2, , Mn củathông báo đã cho vào M '1 , người ta sẽ đạt được thành công trong một cuộc tấn côngmục tiêu vào hàm băm được phát lại.Tương tự đối số cũng giữ cho các kiểu tấn côngkhác
Mệnh đề 1 Đối với một hàm băm phát lại, bất kỳ cuộc tấn công nào vàohàm vòng của nó đều ngụ ý một cuộc tấn công cùng loại vào hàm băm đã lặp vớicùng độ phức tạp tính toán
Trang 9Cần lưu ý rằng ngược lại của phát biểu Định lý 1 nói chung là không đúng.
Có thể có các cuộc tấn công vào hàm băm được lặp lại dễ dàng hơn các cuộc tấncông vào hàm vòng một mình, như các ví dụ sau đây cho thấy:
Ví dụ 1 (Tấn công thông điệp dài.) Đối với một hàm băm phát lại m-bit, chotrước một thông báo khối n M = (M1, M2, , Mn), có một cuộc tấn công mục tiêuxảy ra
Hi = h (Hi-1, Mi) cho i = 1,…,n và lưu trữ các giá trị này Sau đó chúng ta tính H* =
h (H0, M¿ 1 ) lặp đi lặp lại với M¿ 1 được lựa chọn ngẫu nhiên Sau
Đối với n > 2m /2 chúng ta tính toán và lưu trữ H1, H2,…, H2m /2 Khi đó 2m /2 lựachọn ngẫu nhiên M¿ 1 sẽ tạo ra một “trận đấu” của một số H* với một số Hi , 1 ≤ i ≤
2m /2 với xác suất khoảng 0,63
Đối với một hàm băm phát lại, người ta luôn có thể thực hiện các cuộc tấncông khởi động tự do "Không đáng kể" sau đây
Ví dụ 2 Trivial free-start attacks (Các cuộc tấn công khởi động tự do khôngđáng kể ): Hãy xem xét một thông báo M = (M1, M2) băm thành H với giá trị banđầu H0 Sau đó, đối với giá trị ban đầu H1 = h (H0, M1 ), thông báo “bị bỏ bớt” M’
= M2 băm cũng tới giá trị H = h (H1, M2) Đó là một cuộc tấn công mục tiêu khởiđộng tự do luôn có thể được thực hiện nếu thông báo chứa nhiều hơn một khối.Tương tự, người ta có thể thực hiện một cuộc tấn công va chạm khởi động tự dokhông đáng kể
4
Trang 10Ví dụ 3 A trivial semi-free-start collision attack based on a ‘ fixed point’( Một cuộc tấn công va chạm bán tự do không đáng kể dựa trên một điểm cốđịnh ): Nếu hàm băm vòng h có một "điểm cố định" dễ nhận biết, tức là nếu bằngcách nào đó người ta có thể tìm thấy (H, M) như vậy H = h (H, M), sau đó có mộtcuộc tấn công va chạm bán tự do không đang kể từ đó, bắt đầu với giá trị ban đầu H0
= H, các thông báo "khác biệt" M = M và M'= (M, M) đều được băm ở cùng giá trịH
Lưu ý rằng trong các cuộc tấn công khởi động tự do và bán tự do thôngthường và trong cuộc tấn công "tin nhắn dài" được mô tả trong ba ví dụ trên, mộtcuộc tấn công phá vỡ hàm băm đã lặp lại mà không phá vỡ hàm vòng của nó Cáccuộc tấn công như vậy dựa trên thực tế là, đối với một hàm băm phát lại có dạng(1), kẻ tấn công có thể lợi dụng thực tế là một thông báo giả mạo có thể có độ dàikhác với độ dài của thông điệp chính hãng đã cho Vấn đề này có thể được khắcphục bằng cách tăng cường các hàm băm lặp đi lặp lại sau đây, được đề xuất mộtcách thận trọng bởi Merkle và bởi Damgaard :
Tăng cường Merkle-Damgaard (Tăng cường MD) Đối với hàm băm phát lại,chỉ định rằng khối cuối cùng M n của "thông báo" M = (M1, M2 ,…, Mn ) được bămđại diện cho Chiều dài của "thông báo đúng " tính bằng bit, tức là độ dài của phầnkhông được đánh dấu của n-1 khối đầu tiên
Đề xuất 2 Chống lại một cuộc tấn công bắt đầu tự do (mục tiêu hoặc vachạm), một hàm băm lặp đi lặp lại với tăng cường MD, HashMD, có độ bảo mật tínhtoán gần giống như hàm băm vòng của nó
Trong các cuộc thảo luận trước, chúng ta đã xem xét tính bảo mật của mộthàm băm được phát lại và tính bảo mật của hàm vòng của nó trước một cuộc tấncông cùng loại Bây giờ chúng ta xem xét cách liên hệ các cuộc tấn công mục tiêukhởi động tự do "không thực" với các cuộc tấn công mục tiêu "thực" Kết quả sauđây cho thấy rằng, đối với một hàm băm lặp phát lại, khi “ nghịch đảo ngẫu nhiên
”của hàm băm vòng có thể được tìm thấy với ít hơn mức tối đa lý tưởng khoảng 2m
tính toán, khi đó luôn tồn tại một cuộc tấn công mục tiêu trên hàm băm tốt hơncuộc tấn công mục tiêu brute-force
Đề xuất 3 ( Cuộc tấn công mục tiêu gặp nhau ở giữa bằng cách “làm việctrở lại”.) Cho HashMD là một hàm băm được phát lại m-bit với tăng cường MD vàvới hàm vòng h Nếu hầu hết H trong khoảng h, cần khoảng 2n phép tính h để tìm
ra nghiệm mới (H', M') của H = h (H', M') mà H' xuất hiện về cơ bản được chọn
Trang 11ngẫu nhiên và nếu phần thông báo không bị giới hạn chứa ít nhất hai khối, tức là n
m +5
- 1 ≥ 2, thì sẽ tồn tại một cuộc tấn công mục tiêu vào HashMD mất khoảng 2 x 2 2
lần tính toán h
Bằng chứng Với M và H0 đã cho, hãy cho kết quả của hai lần lặp đầu tiênlà:
H1 = h(H0, M1) H2 = h(H1, M2)Chúng ta chỉ ra cách tìm hai khối thông báo (M '1, M '2) băm thành H2 bằngmột cuộc tấn công “gặp nhau ở giữa” Sau đó thay thế hai khối đầu tiên (M1,M2)trong thông điệp M đã cho bởi (M '1, M '2) , chúng ta thu được thông điệp M’có cùng
độ dài, nhưng M băm tới cùng H
m +5
M1' được chọn ngẫu nhiên;Đầu tiên, chúng ta tính G1 = h (H0, M1') cho 2 2
m +3
cặp (G1', M2') sao cho H2 = h (G1', M2') và G1'về cơ bản xuất
sau đó chúng ta tìm 2 2
hiện được chọn ngẫu nhiên Cuộc tấn công không thành công nếu một vài G1 và G '1
nhận cùng một giá trị Do đó, cuộc tấn công thành công với xác suất
m+ 5
m + 3
cơ hội chọn M1' sao cho G1 sẽ “ bỏ lỡ ”một G1' cụ thể; và có
Trang 126
Trang 13mục tiêu khi và chỉ khi hàm vòng băm h (.,.) của nó có bảo mật tính toán lý tưởng chống lại mục tiêu khởi động tự do tại thời điểm bắt đầu.
Bằng chứng Giả sử hàm vòng h có bảo mật tính toán lý tưởng chống lại mộtcuộc tấn công mục tiêu bắt đầu tự do Sau đó, Đề xuất 2 cho thấy rằng HashMD (.)
có cùng mức bảo mật lý tưởng chống lại một cuộc tấn công mục tiêu bắt đầu tự do.Nhưng một cuộc tấn công mục tiêu mà không bắt đầu tự do là không dễ dàng hơnmột cuộc tấn công mục tiêu bắt đầu tự do để HashMD (.) cũng có khả năng bảo mậttính toán lý tưởng chống lại một cuộc tấn công mục tiêu
Ngược lại, nếu đối với hàm băm m-bit h, một cuộc tấn công mục tiêu bắtđầu tự do cần ít hơn 2m phép tính, thì Mệnh đề 3 ngụ ý một cuộc tấn công mục tiêuvào HashMD với ít hơn 2m phép tính
Từ hai mệnh đề trên, chúng ta thấy rằng tăng cường MD tạo ra các hàm bămlặp lại an toàn từ các hàm vòng an toàn Đặc biệt, sự khởi động tự do không đáng
kể v, các cuộc tấn công khởi động bán tự do và cuộc tấn công mục tiêu tin nhắn dàitrong các ví dụ trên không thể được sử dụng để tấn công một hàm băm phát lại cótăng cường MD Những cân nhắc như vậy gợi ý một nguyên tắc hiển nhiên cho cáchàm băm phát lại, rằng các hàm băm phát lại chỉ nên được sử dụng với tăng cường
MD Trong cuộc thảo luận sau đây, bất cứ khi nào tính bảo mật của một hàm bămlặp đi lặp lại được xem xét, chúng tôi luôn muốn nói đến tính bảo mật của hàmbăm với tăng cường MD
Do Đề xuất 4 và Đề xuất 2 và vì người ta thường mong muốn rằng hàm băm
đủ mạnh để cung cấp khả năng bảo vệ chống lại các cuộc tấn công bắt đầu tự do,vấn đề xây dựng các hàm băm an toàn giảm xuống vấn đề xây dựng các hàm bămvòng an toàn chống lại các cuộc tấn công khởi động tự do sẽ được xem xét trongphần tiếp theo
7
Trang 143 Hàm Băm dựa trên mã khối
Trong cuộc thảo luận sau đây, chúng em xem xét sơ đồ để xây dựng các vòng băm
từ một mật mã khối Theo cách sau, chúng tôi viết Y = Ez (, Y), cho mật mã khối m-bit E với khóa k-bit, nghĩa là bản mã m-bit Y được tính từ m-bit plaintext X và k-bit key Z Dựa trên thảo luận trong phần trước, chúng em xem xét chỉ các cuộc tấn công vào hàm băm vòng hoặc tương đương, các cuộc tấn công vào hàm băm nghiêng chức năng tăng cường MD
h(H i-1 ,M i ) = E Mi (Hi-1) H i-1
Sơ đồ DM với tăng cường MD thường được coi là an toàn nếu mật mã khốikhông có điểm yếu đã biết, thì không có cuộc tấn công nào tốt hơn các cuộc tấncông brute- force đã biết, tức là, cuộc tấn công mục tiêu bắt đầu tự do vào h có độphức tạp là 2m và cuộc tấn công va chạm bắt đầu tự do trên h có độ phức tạp 2m/2
Một hàm vòng băm m -bit được đề xuất sử dụng mật mã khối với m –bitkhối và khóa 2m -bit:
Phương pháp này dựa trên mật mã khối với chiều dài khối m và chiều dàikhóa k = 2m Đối với mật mã như vậy với k = 2 m , chúng ta sẽ viết Y = EZa,Zb(X)nghĩa là bản mã m -bit được tính từ bản rõ m –bit X và hai khóa con m –bit Za và
Zb Hàm vòng băm được đề xuất được đưa ra bởi
h(H i-1 , M i ) = E Hi-1,Mi (H i-1 )
và được minh họa như sau
8
Trang 153.2 Xây dựng các hàm vòng băm 2m-bit
Khi chiều dài khối m của một mật mã khối là 64, đó là trường hợp của nhiềuthực tế mật mã khối, người ta có thể lấy một hàm băm lặp lại 64 bit bằng cách sửdụng sơ đồ DM Tấn công va chạm brute- force "đối với bất kỳ hàm băm 64-bitnào có độ phức tạp là 232 quá nhỏ trong nhiều ứng dụng Vì vậy, một số nỗ lực đãđược thực hiện để xây dựng một hàm băm 2 m -bit dựa trên một khối m –bit mật
mã bằng cách sửa đổi lược đồ DM có vẻ an toàn Điều này sẽ được xem xét trongcác phần sau
3.3 Một nguyên tắc để đánh giá các hàm vòng băm và 4 cuộc tấn công vàohàm băm 2m-bit
Áp dụng bất kỳ phép biến đổi đảo ngược đơn giản nào theo cả hai hướngcho đầu vào và đến đầu ra của hàm vòng băm tạo ra một hàm vòng băm mới vớibảo mật giống như bản gốc Đối với một mật mã khối có độ dài khối bằng độ dàikhóa, nó theo sau từ nguyên tắc rằng hàm vòng băm 2 của lược đồ DM có cùng độbảo mật như hàm vòng băm sau được đề xuất trong
m -bit mới H i và G i được tính từ hai giá trị trước đó
m -bit giá trị H và G và từ hai khối bản⊕ m -bit⊕L và N như sau
i Li Ni i-1⊕ i-1 ⊕ i ⊕i-1 ⊕i-1
G i = E Li⊕Hi-1 (N i G i-1 ) N i H i-1 Gi-1