Tải bản đầy đủ (.pdf) (22 trang)

BÁO cáo NGHIÊN cứu tìm HIỂU về HASH FUNCTIONS dựa TRÊN BLOCK CIPHERS

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 (736.84 KB, 22 trang )

BAN 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 tồ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
1


BAN 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 tồ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
2


MỤ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



MỞ ĐẦ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ằng
cá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ột
vò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 áp
dụ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óa
khối m-bit với 1 khóa 2m-bit được đề xuất.

4


5


PHẦ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ới
cá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ột
hà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ủa
việ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ủa

thô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 functions
based on block ciphers). Đặc biệt, ta sẽ xét đến các vấn đề xây dựng các vòng băm
m-bit và các vòng băm 2m-bit từ mật mã khối m-bit. Một ngun tắc được chính
thứ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ép
biến đổi đảo ngược đơn giản về mặt tính tố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ịng
bă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.

1


2. 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ỗi
nhị 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ương
trình chữ ký số và trong các chương trình cung cấp tính tồ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 tốn dễ dàng h (-,-) từ hai chuỗi nhị phân có độ dài tương ứng m và đến
một chuỗi nhị phân có độ dài m theo cách thông báo
M = ( M 1+ M 2 +… + 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 tố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 H 0. Hàm h sẽ được gọi là hàm băm
vòng. Việc xây dựng đệ quy các hàm băm như vậy đã được Merkle gọi là “phương
phá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 H 0 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 H 0 và M
tì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 H 0, 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 H 0, 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 H 0,
H '0 ,M và M’ sao cho ( H '0 ,M ) ≠ (H0 , M ) nhưng Hash( H '0 , M’) = Hash(H0 ,
M)

2


Nhận xét: Trong các ứng dụng mà H0 được chỉ định và cố định, các cuộc tấn
cô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 được
tính từ một giá trị ban đầu khác sẽ không được chấp nhận. Tuy nhiên, nếu người
gửi được tự do lựa chọn và / hoặc thay đổi H 0, 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ơn
cá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ầu khoả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 2 m với các tệp tin một khối, các cuộc tấn công
mục tiêu brute-force u cầu khoảng 2m tính tố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 2 m/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 tốn của hàm băm là lý tưởng khi
khơng có sự thiếu hụt nà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ữa
tí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ấn
cơ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ộc
tấn cơng mục tiêu trên hàm vịng h có nội dung: cho H 0 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àm
vịng tạo ra M '1 , sau đó, bằng cách 'đính kèm' các khối thơng báo M 2, ..., Mn của
thô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ông mụ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ông khá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ào
hà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ới
cùng độ phức tạp tính tốn.

3


Cầ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ấn
cơ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, cho
trướ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êu
xảy ra
2m
m/2
C= n + n nếu n ≤2
2× 2m /2 nếu n>2m /2

{

tính tốn hàm làm trịn ( về cơ bản kết quả trên cho n ≤ 2m /2 là do Winternitz.
Bằng chứng : Đầu tiên chúng ta xem xét trường hợp n ≤ 2m /2 . Với m đã cho,
chúng ta tính 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
2m
khi tính tốn các giá trị
cho H*, xác suất để H* = H với một số i, 1 ≤ i ≤ n là
n
m

2
n

1 – [(1 – 2 ) ¿ ¿ n] ¿ = 1 – (1 – 2−m )2 m ≈ 1 – e−1 ≈ 0.63 ,
−m

điều này cho thấy rằng thường sẽ đủ ít hơn


2m
phép tính của hàm làm trịn.
n

¿
Thơng báo M' = ( M 1, M i+1,…, M n ) băm đến cùng giá trị H với thông báo M và kết

2m
+ n. Xác suất để M’ = M là khơng đáng kể.
n
chúng ta tính toán và lưu trữ H 1, H 2,…, H 2 . Khi đó 2m /2 lựa

quả của hàm vịng là khoảng

Đối với n > 2m /2
¿
chọ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ố H i , 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 ln có thể thực hiện các cuộc tấn
cô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 = ( M 1, M 2) băm thành H với giá trị ban
đầu H 0. Sau đó, đối với giá trị ban đầu H 1 = h ( H 0, M 1 ), thông báo “bị bỏ bớt” M’
= M 2 băm cũng tới giá trị H = h ( H 1, M 2). Đó 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ự do
không đáng kể.
m /2

4



Ví 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ằng
cách nào đó người ta có thể tìm thấy (H, M) như vậy H = h (H, M), sau đó có một
cuộ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
H 0 = 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ông
thường và trong cuộc tấn công "tin nhắn dài" được mô tả trong ba ví dụ trên, một
cuộ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ác
cuộ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ài
khác với độ dài của thơng điệp chính hãng đã cho. Vấn đề này có thể được khắc
phụ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ột
cá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 = ( M 1, M 2 ,…, M n ) đượ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ần
khô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 va
chạm), một hàm băm lặp đi lặp lại với tăng cường MD, Hash MD, có độ bảo mật tính
tố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ột
hà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ấn
cơ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êu
khở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 2 m

tính tốn, khi đó ln 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ơn
cuộ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ệc
trở 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 2 n 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
5


ngẫ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
- 1 ≥ 2, thì sẽ tồn tại một cuộc tấn cơng mục tiêu vào Hash MD mất khoảng 2 x 2

m +5
2

lần tính tố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ên
là:
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ằng
một cuộc tấn công “gặp nhau ở giữa”. Sau đó thay thế hai khối đầu tiên (M 1,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.
Đầu tiên, chúng ta tính G1 = h (H0, M '1) cho 2
sau đó chúng ta tìm 2

m +3
2


m +5
2

M '1 được chọn ngẫu nhiên;

cặp (G'1, M '2) sao cho H2 = h (G'1, M '2) và G'1về cơ bản xuất

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 G 1 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
1 – [(1 – 2−m ) ¿ ¿ 2

m+ 5
2
2

]

m+ 3
2

−m 2 m
−1
¿ = 1 – (1 – 2 ) ≈ 1 – e ≈ 0.63 ,

như sau từ các dữ kiện cho thấy xác suất chọn M '1 sao cho G1 sẽ khơng bằng
G'1 là 1 – 2−m , có 2

m +5
2


cơ hội chọn M '1 sao cho G1 sẽ “ bỏ lỡ ”một G'1 cụ thể; và có

m+3
G'1 bỏ lỡ. Cả phép tính "chuyển tiếp" cho
giá
trị
được
lựa
chọn
độc
lập
của
2

các giá trị tính tốn của G1 và phép tính "ngược" cho các giá trị tính tốn của G'1,
m+3

thực hiện 2 phép tính hàm vòng h.
Phương pháp được sử dụng trong bằng chứng ở trên về việc tấn công một
hàm băm lặp lại bằng cách “làm việc ngược lại” đã được sử dụng để tấn công một
số hàm băm lặp lại được đề xuất. Kết quả trên cho thấy rằng nếu hàm băm vịng
khơng có bảo mật tính tốn lý tưởng chống lại một cuộc tấn cơng mục tiêu bắt đầu
tự do, khi đó hàm băm được phát lại không thể đạt được bảo mật tính tốn lý tưởng
chống lại một cuộc tấn cơng mục tiêu. Mệnh đề 2, cùng với lập luận được sử dụng
để chứng minh Mệnh đề 3, ngụ ý:
Mệnh đề 4. Giả sử rằng phần không bị giới hạn của thơng báo phải chứa ít
nhất hai khối, tức là, khi đó n - 1 ≥ 2 một hàm băm được lặp lại với sự tăng cường
MD, HashMD (.), có tính bảo mật tính tốn lý tưởng chống lại một cuộc tấn công
6



mục tiêu khi và chỉ khi hàm vòng băm h (.,.) của nó có bảo mật tính tố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 tốn lý tưởng chống lại một
cuộc tấn cơng mục tiêu bắt đầu tự do. Sau đó, Đề xuất 2 cho thấy rằng Hash MD (.)
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ơn
một cuộc tấn công mục tiêu bắt đầu tự do để Hash MD (.) cũng có khả năng bảo mật
tính tố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êu
và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ăm
lặp lại an tồn từ các hàm vịng an tồ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ài
trong 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ác
hà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ăm
lặp đi lặp lại được xem xét, chúng tơi ln muốn nói đến tính bảo mật của hàm
bă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ăm
vịng an tồn chống lại các cuộc tấn công khởi động tự do sẽ được xem xét trong
phần tiếp theo.

7



3. 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.

3.1 Một số hàm băm vòng m-bit
Lược đồ Davies-Meyer (DM) được đề xuất độc lập bởi Davies và Meyer.
Lược đồ này có thể được sử dụng với bất kỳ mật mã khối nào. Khối thông báo M i
được băm trong mỗi bước của lược đồ này có độ dài l bằng độ dài khóa k của mật
mã khối. Hàm băm vòng được đưa ra bởi công thức :
h(Hi-1,Mi) = EMi(Hi-1)⊕ Hi-1
Sơ đồ DM với tăng cường MD thường được coi là an toàn nếu mật mã khối
khơ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ấn
cô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 –bit
khố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ài
khó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(Hi-1, Mi) = EHi-1,Mi (Hi-1)
và được minh họa như sau

8



3.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ều
thự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-bit nà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 tồn. Điều này sẽ được xem xét trong cá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ào
hà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ướng
cho đầ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ới
bả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ài
khó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 
h(Hi-1, Mi) = EHi-1 (Mi)⊕ Mi
Hàm vòng băm này khác với hàm đó ở 2 chỉ bằng cách hốn đổi khối đầu
vào Hi-1 và Mi .

3.3.1 Sơ đồ PBGV (Preneel-Boselaers-Govaerts-vandewalle)
Trong lược đồ này, sử dụng khối m –bit mật mã với một khóa m-bit,  một
hàm băm 2m-bit giá trị H = (H n,Gn) được tính từ một bản tin 2 mn –bit (L1,
N1,...,Ln,Nn) và một giá trị 2m-bit ban đầu (H0,G0). Trong mỗi vịng, hai giá
trị m -bit mới H i và G i được tính từ hai giá trị trước đó
m -bit giá trị Hi-1 và Gi-1 và từ hai khối bản tin m -bit Li và Ni như sau
Hi = ELi⊕Ni(Hi-1+Gi-1)⊕Li⊕Hi-1⊕Gi-1
Gi = ELi⊕Hi-1(Ni⊕Gi-1)⊕ Ni⊕Hi-1⊕  Gi-1
Với i= 1, 2,... , n
Hàm vòng cho lược đồ PBGV tạo ra cặp đầu ra (h, g) từ các đầu

vào (h0,g0,l,n) theo cách
h = El⊕n( h0  ⊕g0)  ⊕l  ⊕h0  ⊕g0
g = El⊕h0(n⊕ g0) ⊕ n  ⊕h0⊕ g0 
9


Bằng cách áp dụng các phép biến đổi đảo ngược đơn giản ở đầu ra và đầu
vào, ta nhận được hàm làm trịn tính (h,f) từ đầu vào (h’0,g’0,l’,n’) bằng cách:
h = El’(h’0) ⊕l’⊕n’⊕h’0
f = El’⊕h’0⊕g’0(g’0) ⊕El’⊕ (h’0) ⊕ l’
Một cuộc tấn công mục tiêu bắt đầu tự do vào chức năng vòng PBGV
với độ phức tạp khoảng 2m/2: 
1. Chọn một hằng số c0 tùy ý .
2. Đối với h đã cho , tính a = El’(h’0)⊕l’ cho 2m/2 giá trị được chọn ngẫu
nhiên của h’0 và tương ứng l’ như vậy h’0⊕l’=c0
3. Đối với f đã cho , tính a* = Er(g’0)⊕f cho 2m/2 giá trị được chọn ngẫu
nhiên của g’0 và tương ứng r như vậy g’0⊕r=c0
Một cuộc tấn công mục tiêu vào chức năng vòng PBGV với độ phức tạp
khoảng
2 m : 
Chọn ngẫu nhiên l’ và tính:
a = El’(h’0)⊕l’
n’ = a⊕h’0⊕h
r = l’⊕h’0⊕g’0 = l’⊕h’0⊕g0⊕n’
g’0 = Dr(a⊕f)

3.3.2 Lược đồ Quisquater-Girault (QG-I) đầu tiên.
Chương trình QG-I được dựa trên một m -bit mã khối với một khóa mbit. Giá trị băm 2m –bit (Hn , Gn) được tính từ một bản tin 2mn-bit (Lj,Ni,i2,JV2, ...,Ln,Nn) và một giá trị 2m-bit ban đầu (H0,G0).  Trong mỗi vịng, hai giá
trị m -bit mới H i và G i được tính từ hai giá trị m -bit trước đó Hi-1 và Gi-1 và từ
hai thơng báo m –bit khối Li và Ni như sau:

Wi = ELi(Gi-1⊕Ni) ⊕Ni⊕Hi-1
Hi = Wi⊕Gi-1
Gi = ENi(Wi⊕Li) ⊕Hi-1⊕Gi-1⊕Li
Với i= 1,2,..., n
Hàm vòng của lược đồ QG-I tạo ra cặp đầu ra (h, g) từ đầu vào (h0,g0,l,n) 
theo cách
h = El⊕n(h0⊕g0) ⊕l⊕h0⊕g0
g =El⊕h0(n⊕g0) ⊕n⊕h0⊕g0
cặp (h,f) = (h,h⊕g) được xác định bởi
h = El(g0⊕n) ⊕n⊕h0⊕g0
f = h⊕g = En(El(g0⊕n) ⊕n⊕h0⊕l) ⊕El(g0⊕n)⊕l⊕n
10


Một cuộc tấn công mục tiêu bắt đầu tự do trên lược đồ QG-I với độ
phức tạp 2m/2
Gọi c là m-tuple cố định.
1. Chọn ngẫu nhiên các giá trị của a và chọn n sao cho a⊕ n = c. Sau đó, đối
với giá trị cho trước của f, tính h’ 0 = a ⊕Dn (a ⊕f): Lặp lại quá trình này 2m/2
lần để lấy 2m/2 giá trị cho (h’0, n) với các giá trị được chọn ngẫu nhiên cho
h’0.
2. Chọn ngẫu nhiên l và tính h*0 = h⊕ (l ⊕c) ⊕ Dl ⊕ (l ⊕c): Trong 2m = 2
phép tính, nhận được 2m/ 2 giá trị cho (h*0, l) với các giá trị được chọn ngẫu
nhiên cho h’0
Lưu ý rằng cả h*0 và h0 là các khối m-bit để một số h* 0 và một số h0 thu đượcnhư
trên sẽ nhận cùng một giá trị với xác suất khoảng 0,63. Do đó, chúng ta có thểtìm
được (h’0, h*0,l, n) sao cho h’0 = h*0

3.3.3 Hàm LOKI Double Block Hash (DBH).
Mật mã khối LOMI, được đề xuất trong [2], là mật mã khối 64 bit giống

DES với khóa 64 bit. Trong [2], một hàm itcratcd Double Block Ilash (DDII) 128
bit dựa trên mật mã LOKI đã được đề xuất, nhưng trên thực tế, lược đồ này có thể
được sử dụng cho bất kỳ mật mã khối m-bit nào có khóa n-bit. Trong LOKI TIHII,
giá trị băm 2mm bit (H ,,, G,) được tính từ thơng báo 2mn bit (Li, N1, Gz, Nzr .., L
,,, Nn) và giá trị ban đầu 2m bit ( Il0, Co). Trong mỗi vòng, hai giá trị m-bit mới / I
và G, được tính từ hai giá trị rn-bit trước đó 2 và G, -i và từ hai khối thông báo mbit hiện tại L và N, như sau: Hàm LOKI Double Block Hash (DBH).

11


for i = 1,2 ,..n.
Hàm vong LOKI DBH được bắt nguồn từ hàm roud băm của lược đồ QG-I
(8) bằng cách bổ sung bitwise 2 của các khối giá trị băm trước đó (H và G) vào các
khối thơng báo hiện tại (L và N) để thu được đầu vào chính cho hai mã hóa LOKI.
Điều này được thực hiện để tránh một số cuộc tấn công bắt nguồn từ "khóa yếu"
của mật mã cơ bản. Bằng cách áp dụng nguyên tắc đánh giá bảo mật của chúng tôi,
chúng tôi nhận được cuộc tấn công mục tiêu bắt đầu tự do sau trên hàm vịng OKI
DBH có độ phức tạp chỉ khoảng 2 ^ (m / 2).
Hàm vòng cho LOKI DBH tạo ra cặp đầu ra (h, g) từ đầu vào (ho, go, l, n)
theo cách.

Bằng cách áp dụng sự chuyển đổi

trên

cặp

đầu

ra


LOKI

DBH



áp

dụng

phép

chuyển

đổi

trên các đầu vào LOKI DBH (ho, go, I, n), chúng tơi nhận được hàm được
minh họa trong Hình 5 tính tốn (h, J) từ các đầu vào (ho, go, I ', n') theo cách

12


Một cuộc tấn công mục tiêu bắt đầu tự do trên LOKI DBH với độ phức tạp
về Sau đây, chúng tôi khẳng định rằng, đối với bất kỳ (h, f) nào cho trước, người ta
có thể tìm thấy, trong khoảng 2 2 "'' tính tốn mã hóa cho mật mã khối, một giải
pháp for (ho, go, I, n) thỏa mãn (10) bằng cách tấn công "gặp mặt ở giữa". Bởi vì
các phép biến đổi (13) và (14) đều dễ tính tốn và dễ đảo ngược, nó tn theo từ
Ngun tắc của chúng tơi rằng việc tìm một nghiệm ho, go, I, n) của (12) cho (h,
về mặt tính tốn cũng giống như việc tìm một nghiệm (ho, Z ', n') của (15) cho (h ,

f). Điều này có thể được thực hiện trong khoảng 2 lần mã hóa như chúng ta hiện
nay.
1. Chọn một giá trị tùy ý cho nó.
2. Đối với h đã cho và I 'đã chọn, ngôpute h, h n' E (n ') cho các giá trị được
chọn ngẫu nhiên của n',
3. Đối với h, f đã cho và f 'đã chọn, hãy tính NS; (h / ') h i' cho 2 giá trị "''
được chọn ngẫu nhiên của r n ho Xác suất để một số và một số 11; nhận cùng một
giá trị là khoảng 0,63.
Đối với ho hi, bằng tính tốn r n ' / i ,, chúng ta thu được một nghiệm (ho,
g0, f', n ') cho (15).
Nhận xét. Chúng ta đã đưa ra ba cuộc tấn công mục tiêu bắt đầu tự do trên
ba hàm băm vòng trong phần này. Các cuộc tấn công mục tiêu "thực" (với giá trị
ban đầu được chỉ định) thường sẽ khó khăn hơn. Ví dụ, khi rn là 64 bit, một cuộc
tấn công mục tiêu vào hàm băm 128 bit LOKI DBII thu được bằng cách kết hợp
cuộc tấn công trên với cuộc tấn công được sử dụng trong chứng minh của Định lý
3 sẽ mất khoảng 23 280 phép tính. Một kết luận tương tự cũng áp dụng cho hàm
băm QC-I schernc.

13


3.4 Sự phức tạp của các cuộc tấn công đã biết vào các
hàm băm 2m-bit.

Chúng tôi xem xét ở đây các hàm băm lặp lại 125 bit đã biết dựa trên hai
cách sử dụng mật mã khối 64 bit rn với độ dài khóa k 64 hoặc k 56 trong mỗi
vịng. Tất cả các những sơ đồ này có thể được coi là những sửa đổi nhỏ của hàm
băm vòng 64-bit sơ đồ DM. Những lời phàn nàn về các cuộc tấn công đã biết vào
các hàm băm này được liệt kê trong Bảng 1. Chúng tôi giả định rằng tất cả các hàm
băm lặp đi lặp lại đều được sử dụng với MD- củng cố và rằng mật mã khối cơ bản

đã biết về độ khó (chẳng hạn như khóa yếu).

14


3.5: Các phương án đề xuất cho mật mã khối có k = 2m
Nghiên cứu về hàm băm được đề xuất trước đây cho thấy rằng rất khónhưng khơng phải là khơng thể-để xây dựng một hàm vịng băm 2m-bit với bảo
mật theo thứ bậc lý tưởng có thể "tiêu hóa" trong mỗi vịng ít nhất m bit thơng báo
bằng hai lần sử dụng của mật mã khối m-bit với khóa m-bit. Tuy nhiên, nếu mật
mã khối m-bit với một khóa 2m bit là khả dụng, sau đó có nhiều khả năng hơn để
tạo ra một
hàm băm tròn 2m-bit an toàn. Sau đây, chúng em đề xuất hai hàm băm 2m
bit các hàm làm tròn sử dụng mật mã khối m-bit với khóa 2m-bit và được cho là
được an tồn.
Tandem DM: Chúng tôi gọi hàm băm 2m bit được đề xuất đầu tiên của chúng tôi
là sơ đồ Tandem DM vì nó dựa trên việc xếp tầng hai sơ đồ DM như trong (2).
Vòng chức năng của lược đồ Tandem DM được thể hiện trong Hình 6.

15


Hình 6: Hàm vịng băm 2m-bit của Tandem DM dựa trên mật mã khối m-bit với
khóa 2m bit. Các giá trị m-bit Hi và Gi, được lấy từ 2 giá trị m-bit trước đó của
IWO Hi-1 và G(i-1) và từ một khối thơng báo m-bit như sau:

trong đó G biểu thị bản mã từng bit của G.

Hình 7: Hàm băm tròn 2m-bit Abreast DM dựa trên mật mã khối m-bit
với khóa 2m bit. Hình trịn chỉ ra rằng đầu vào cho bộ mã hóa thấp hơn theo
chiều bit bổ sung.


Nhận xét 1: Đề án Tandem DM và Abreast DM được xây dựng trên
việc xem xét sau đây. Hàm tròn h bao gồm hai hàm con h1 và h2

Cả hai đều có đầu vào giống nhau, do đó, để tấn cơng h ngụ ý rằng người ta
phải tấn công đồng thời cả hi và h2. Nếu như các chức năng con h và h2 quá 'khác
nhau' đến mức một cuộc tấn cơng vào một chức năng con khơng giúp gì trong việc
tấn công chức năng con khác và nếu cả h1 và h2 đều tương đương nhau đối với
DM-scheme, thì chúng ta có thể mong đợi rằng một cuộc tấn cơng vào h sẽ có độ
phức tạp tương đương với sự độ phức tạp của cuộc tấn công vào h1 và trên h2.
16


Trong Tandem DM và Abreast DM đã đề xuất, chức năng phụ h1 và h2 vòng cung
được chọn càng “khác biệt” càng tốt.
Lược đồ Abreast DM cung cấp hàm băm 2m bit ít nhất là mạnhnhư DMscherne m-bit.
Các cuộc điều tra của chúng em cho đến thời điểm này không cho thấy điểm
yếu nào trong hai hàm vòng băm 2m-bit mới được đề xuất, tức là chúng em khơng
thể tìm thấy bất kỳ các cuộc tấn công tốt hơn các cuộc tấn công brute-force khi mật
mã cơ bản được giả định khơng có điểm yếu. Tuy nhiên, chúng ta nên chỉ ra rằng
DM Tandern và Abreast DM sử dụng hai mã hóa khối m-bit cho mỗi khối m bit
thơng báo để tính giá trị băm cuối cùng có độ dài 2m bit.

------------------------------END------------------------------

17




×