Giới thiệu

Một phần của tài liệu đề tài nghiên cứu một số vấn đề bảo mật và an toàn thông tin cho các mạng dùng giao thức liên mạng máy tính ip (Trang 50 - 53)

Nhiều hàm băm phổ biến ngày nay đều dựa trờn MD4 [8]. MD4 được xõy dựng cho cỏc cài đặt phần mềm nhanh trờn cỏc mỏy 32-bit và cú đầu ra 128 bit. Vỡ kết quả của Dobbertin [5,4] người ta khụng cũn sử dụng MD4 để băm (một cỏch an toàn) nữa, vỡ cỏc va chạm được tỡm thấy trong khoảng 220 tớnh toỏn hàm nộn. Năm 1991 MD5 đó được giới thiệu như là là một phiờn bản mạnh hơn của MD4. Cỏc dạng khỏc bao gồm RIPEMD-128, và RIPEMD-160. SHA được cụng bố như chuẩn FIPS năm 1993.

SHA được giới thiệu bởi Viện Tiờu chuẩn và Cụng nghệ Quốc gia Mỹ (NIST) năm 1993, với tờn gọi là SHA-0. Năm 1995 cú một thay đổi nhỏ với SHA-0, dẫn tới SHA-1. Chỳng ta sẽ núi tới chuẩn này trong phần mụ tả chi tiết của thuật toỏn [10].

Tấn cụng tốt nhất đó biết với SHA-0 khi sử dụng làm hàm băm là của Chabaud và Joux [3]. Họ chỉ ra rằng trong khoảng 261ước lượng của hàm nộn, người ta cú thể tỡm được 2 thụng điệp cú cựng giỏ trị băm. Tấn cụng brute-force khai thỏc nghịch lý ngày sinh cũng yờu cầu khoảng 280ước lượng. Hiện chưa cú tấn cụng nào thụng bỏo trờn SHA-1 trong cỏc tài liệu mở. Trong bài bỏo này chỳng tụi chỉ xột tới SHA-1.

1.1 Sử dụng SHA trong chếđộ mó hoỏ

SHA chưa khi nào được dựng cho mó hoỏ. Dự sao, hàm nộn cú thểđược dựng cho mó hoỏ. Mỗi bước trong 80 bước của SHA-1 (được chia thành 4 vũng, mỗi vũng 20 bước) đều cú thể tớnh ngược được theo năm biến A, B, C, D, E được dựng để nộn. Do đú, nếu ta đưa khoỏ bớ mật vào trong message và bản rừ như là giỏ trị khởi đầu, ta thu được một hàm cú ngược từ hàm nộn đơn giản bằng việc bỏ qua phộp cộng ngược cuối cựng với đầu. Đõy là chế độ mó hoỏ của SHA được xột đến ở đõy. Mó khối thu được cú tờn là SHACAL và đó được đề nghị với NESSIE bởi Naccache và Helena Handschuh. Do đú SHACAL-1 là mó khối 160 bit sử dụng 512 bit khoỏ và SHACAL-2 là mó khối 256 bit sử dụng 512 bit khoỏ. Cỏc khoỏ ngắn hơn cú thể sử dụng bằng cỏch thờm vào khoỏ cỏc số 0 để thành xõu 512 bit. Tuy nhiờn SHACAL khụng sử dụng khoỏ ngắn hơn 128 bit.

Mó khối SHACAL là một trong cỏc ứng cửđược đệ trỡnh cho dự ỏn NESSIE, gồm 2 phiờn bản SHACAL-1 và SHACAL-2. Thuật toỏn này dựa trờn chuẩn hàm băm

SHA được dựng trong chếđộ mó hoỏ. Sức mạnh chớnh của họ mó khối này là sự thừa hưởng từ phõn tớch kỹ lưỡng trờn chớnh bản thõn hàm băm này. Chỳng tụi khẳng định rằng khụng cú điểm yếu tiềm ẩn nào được cài vào trong mó khối này, và chỳng tụi tin rằng cỏc nguyờn tắc thiết kế là mạnh. Những gỡ mà chỳng tụi đó biết là SHACAL chưa được đăng ký bản quyền.

SHA được NIST đưa ra năm 1993, và được gọi là SHA-0. Năm 1995 SHA-0 cú sự thay đổi rất nhỏ và được gọi là SHA-1. Năm 2000, NIST đó cụng bố một thuật toỏn mới với tờn gọi là SHA-2; 3 hàm băm mới được mụ tả tương ứng với việc tạo bản túm lược cú độ dài 256, 384 và 512 bit. Người ta chọn ra 2 primitive trong số 5 primitive trờn cho thuật toỏn SHACAL, đú là SHA-1 và SHA-2 với 256 bit túm lược. Tuy rằng SHACAL được mụ tảở 2 dạng với NESSIE, nhưng nú vẫn đỳng để tạo SHACAL cho cỏc khối 384 và 512 bit.

Ở đõy chỳng ta chỉ quan tõm đến SHACAL-1 (SHACAL-1 được xõy dựng từ SHA-1, cũn SHACAL-2 được xõy dựng từ SHA-256). Tớnh hiệu quả tớnh toỏn được đỏnh giỏ cho SHACAL-1 là 2480 cycles cho phộp mó 20 byte, 2320 cycles cho phộp giải mó 20 byte và 2280 cycles để thiết đặt một khoỏ 64 bit. Cỏc phộp đo thời gian đó được thực hiện cho mỏy PC dựng bộ xử lý Pentium III tốc độ 800 Mhz. Với SHACAL-1 thỡ 20 triệu lần mó mất 62 giõy, 20 triệu lần dịch mất 58 giõy và 20 triệu lần thiết đặt khoỏ mật 57 giõy.

1.2 Mụ tả SHACAL

Như vậy ta cú thể mụ tả thuật toỏn SHACAL như sau: Cỏc ký hiệu:

+ Phộp cộng modulo 232 của cỏc từ 32 bit. ROTLi(W) Quay từ 32 bit W sang trỏi i vị trớ. Si(W) Quay từ 32 bit W sang phải i vị trớ. Ri(W) Dịch từ 32 bit W sang phải i vị trớ.

⊕ Phộp toỏn XOR theo bit & Phộp toỏn AND theo bit. | Phộp toỏn OR theo bit ~ Phộp toỏn NOT theo bit Cỏc hàm được định nghĩa trong hàm nộn của SHA-1:

ƒif(X,Y,Z) = (X & Y) | (~ X & Z)

ƒxor(X,Y,Z) = (X ⊕ Y ⊕ Z)

ƒmaj(X,Y,Z) = ((X & Y) | (X & Z) | (Y & Z))

Thuật toỏn mó hoỏ

1. Đầu vào (bản rừ) gồm 160 bit được chia thành 5 khối 32bit và lần lượt gỏn cho 5 thanh ghi (32 bit) A, B, C, D và E. Khoỏ K = [W0 || W1 || W2 || ... ||

W15] - gồm 15 word. 2. Thực hiện mó hoỏ như sau:

• Mở rộng 512 bit khoỏ thành 2560 bit khoỏ:

Wi = ROTL1(Wi-3⊕ Wi-8⊕ Wi-14⊕ Wi-16), 16 ≤ i ≤ 79.

• for (i=0; i<80; i++) thực hiện

Ai+1 = Wi + ROTL5(Ai) + ƒi(Bi, Ci, Di) + Ei + Ki. Bi+1 = Ai. Ci+1 = ROTL30(Bi) Di+1 = Ci. Ei+1 = Di. Trong đú: ƒi = ƒif, với 0 ≤ i ≤ 19 ƒi = ƒxor, với 20 ≤ i ≤ 39 và 60 ≤ i ≤ 79 ƒi = ƒmaj, với 40 ≤ i ≤ 59 Cỏc hằng số Kiđược định nghĩa như sau: Ki = 0x5A827999, với 0 ≤ i ≤ 19 Ki = 0x6ED9EBA1, với 20 ≤ i ≤ 39 Ki = 0x8F1BBCDC, với 40 ≤ i ≤ 59 Ki = 0xCA62C1D6, với 60 ≤ i ≤ 79.

3. Đầu ra (bản mó) là giỏ trị của 5 thanh ghi A, B, C, D, E sau 80 bước.

Thuật toỏn giải mó

1. Đầu vào (bản mó) gồm 160 bit được chia thành 5 khối 32bit và lần lượt gỏn cho 5 thanh ghi (32 bit) A, B, C, D và E. Khoỏ K = [W0 || W1 || W2 || ... || W15] - gồm 15 word.

2. Thực hiện giải mó như sau:

• Mở rộng 512 bit khoỏ thành 2560 bit khoỏ:

Wi = ROTL1(Wi-3⊕ Wi-8⊕ Wi-14⊕ Wi-16), 16 ≤ i ≤ 79.

• for (i=80; i>0; --i) thực hiện Ai = Bi+1,

Bi = ROTL2(Ci+1), Ci = Di+1, (adsbygoogle = window.adsbygoogle || []).push({});

Di = Ei+1,

Ei = Ai+1 – Wi – ROTL5(Ai) - ƒi(Bi, Ci, Di) – Ki.

3. Đầu ra (bản rừ) là giỏ trị của 5 thanh ghi A, B, C, D, E sau 80 bước.

1.3 Tấn cụng SHA trong chếđộ mó hoỏ

Hai tấn cụng tốt nhất đó biết trờn cỏc hệ thống tương tự với SHA trong chếđộ mó hoỏ là thỏm mó tuyến tớnh [7] và thỏm mó vi sai [1]. Cú rất nhiều cỏc dạng khỏc nhau của 2 tấn cụng này được đề nghị trong cỏc tài liệu nhưng nguyờn lý cơ bản là gần giống nhau. Cũng vậy, nhiều tấn cụng khỏc với cỏc lược đồ mó hoỏ đó được

gợi ý nhưng chỳng đều ớt thụng dụng hơn 2 tấn cụng ở trờn. Hơn nữa chỳng tụi cho rằng cỏc thuộc tớnh khoỏ yếu tiềm ẩn, cỏc tấn cụng khoỏ liờn quan (related key attacks) [2] hoặc cỏc tấn cụng tương tự cú thể chuyển thành cỏc tấn cụng va chạm (collision attacks) một cỏch hiệu quả trờn hàm nộn; do đú chỳng ta kết luận rằng khụng cú biện phỏp trực tiếp nào tấn cụng SHA trong chế độ mó hoỏ. Trong bỏo cỏo này chỳng tụi chỉ xột thỏm mó tuyến tớnh và thỏm mó vi sai. Cỏc tấn cụng này được ỏp dụng với SHACAL, nhưng như chỳng ta sẽ thấy, độ phức tạp tấn cụng dựa trờn những tiếp cận này là hoàn toàn khụng thực tế.

SHA sử dụng xen lẫn 2 nhúm toỏn tử, phộp cộng modular 232 và XOR (cộng từng bit theo modulo 2). Nếu chỳng ta sử dụng biểu diễn cỏc từ theo nhị phõn, vớ dụ: A = aw-12w-1 + ... + a12 + a0, và tương tự với S, biểu diễn nhị phõn của tổng Z = A + S được tớnh bằng cụng thức sau:

zj = aj + sj + σj-1 và σj = ajsj + ajsj-1 + sjσj-1, (1) mà σj-1 ký hiệu bit nhớ và σ-1= 0 ([9]). Cụng thức này sẽ được dựng trong phần tiếp theo nhiều lần.

Một phần của tài liệu đề tài nghiên cứu một số vấn đề bảo mật và an toàn thông tin cho các mạng dùng giao thức liên mạng máy tính ip (Trang 50 - 53)