Một số phương pháp xây dựng hàm băm

Một phần của tài liệu TỔNG QUAN VỀ MẬT MÃ HỌC (Trang 46)

7. Ý NGHĨA KHOA HỌC VÀ THỰC TIÊN CỦA ĐỀ TÀI

1.4.3.Một số phương pháp xây dựng hàm băm

1.4.3.1. Các hàm băm không có khoá

Định nghĩa 1.7 [4]:

Mật mã khối (n, r) là một mã khối xác định một hàm khả nghịch từ các bản rõ n bit sang các bản mã n bit bằng cách sử dụng một khoá r bit. Nếu E là một phép mã hoá như vậy thì E xk( ) ký hiệu cho phép mã hoá x bằng khoá k.

Định nghĩa 1.8 [4]:

Cho h là một hàm băm có lặp được xây dựng từ một mật mã khối với hàm nén  thực hiện s phép mã hoá khối để xử lý từng khối bản tin n bit. Khi đó tốc độ của h là 1/s.

a) MDC độ dài đơn.

Ba sơ đồ hình 1.10 dưới đây có liên quan chặt chẽ với các hàm băm độ dài đơn, xây dựng trên các mật mã khối. Các sơ đồ này có sử dụng các thành phần được xác định trước như sau:

- Một mật mã khối n bit khởi sinh Ek được tham số hoá bằng một khoá đối xứng k.

- Một hàm g ánh xạ n bit vào thành khoá k sử dụng cho E (Nếu các khoá cho E cũng có độ dài n thì g có thể là hàm đồng nhất)

- Một giá trị ban đầu cố định IV thích hợp để dùng với E.

Hình 1.10.Các sơ đồ hàm băm đơn a) Matyas-Mayer–Oseas; b) Davies-Mayer và c) Miyaguchi – Preneel c) g E Hi-1 xi Hi b) E xi Hi Hi-1 i x E Hi-1 xi Hi g a)

* Thuật toán băm Matyas - Mayer - Oseas.

Vào: Xâu bit x

Ra: Mã băm n bit của x

(1) Đầu vào x được phân chia thành các khối n bit và được độn nếu cần thiết nhằm tạo khối cuối cùng hoàn chỉnh. Ta được t khối n bit: x x1 2...xt . Phải xác định trước một giá trị ban đầu n bit (ký hiệu IV).

(2) Đầu ra là Ht được xác định như sau:

1 0 , ( )( ) , 1 i i g H i i H IV H E x x i t      

* Thuật toán băm Davies - Mayer

Vào: Xâu bit x

Ra: Mã băm n bit của x

(3) Đầu vào x được phân thành các khối k bit (k là kích thước khoá) và được độn nếu cần thiết để tạo khối cuối cùng hoàn chỉnh. Biểu thị thông báo đã độn thành t khối n bit: x x1 2...xt. Xác định trước một giá trị ban đầu n bit (ký hiệu IV).

(4) Đầu ra là Ht được xác định như sau:

0 , ( 1) , 1

i

i x i i

HIV HE H  x  i t * Thuật toán băm Miyaguchi - Preneel

Sơ đồ này tương tự như sơ đồ M-M-O ngoại trừ Hi1 (đầu ra ở giai đoạn trước) được cộng mod2 với tín hiệu ra ở giai đoạn hiện thời. Như vậy:

1 0 , ( )( ) H , 11 i i g H i i i H IV H E x x i t        

Nhận xét: Sơ đồ D_M có thể coi là sơ đồ đối ngẫu với sơ đồ M - M - O theo nghĩa xiHi1 đổi lẫn vai trò.

b) MDC độ dài kép: MDC -2 và MDC - 4.

MDC -2 và MDC - 4 là các mã phát hiện sự sửa đổi yêu cầu tương ứng là 2 và 4 phép toán mã hoá khối trên mỗi khối đầu vào hàm băm. Chúng sử dụng 2 hoặc 4 phép lặp của sơ đồ M - D - O để tạo ra hàm băm có dộ dài kép. Khi dùng DES chúng sẽ tạo ra mã băm 128 bit. Tuy nhiên trong cấu trúc tổng quát có thể

dùng các hệ mật mã khối khác MDC-2 và MDC4 sử dụng các thành phần xác định như sau:

- DES được dùng làm mật mã khối Ek có đầu vào/ ra 64 bit và được tham số hoá bằng khoá k 56 bit.

- Hai hàm g và g ánh xạ các giá trị 64 bit U thành các khoá DES 56 bit như sau:

ChoUu u1 2...u64, xoá mọi bit thứ 8 và đặt các bit thứ 2 và thứ 3 về "10" đối với g và "01" đối vớig.

1 4 5 6 7 9 10 63 1 4 5 6 7 9 10 63 ( ) 10 ... ( ) 01 ... g U u u u u u u u u g U u u u u u u u u  

Đồng thời điều này cũng phải đảm bảo rằng chúng không phải là các khoá DES yếu hoặc nửa yếu vì các khoá loại này có bit thứ hai bằng bit thứ ba. Đồng thời điều này cũng đảm bảo yêu cầu bảo mật là (g IV)g U( ).

Thuật toán MDC -2 có thể được mô tả theo sơ đồ hình 1.11:

Hình 1.11.Thuật toán MDC-2

* Thuật toán MDC - 2

Vào: Xâu bit x có độ dài r 64t với t2 . Ra: Mã băm 128 bit của x

(1) Phân x thành các khối 64 bit x x xi : ,1 2,...,x64.

(2) Chọn các hằng số không bí mật IVIV từ một tập các giá trị khuyến nghị đã được mô tả trước. Tập ngầm định các giá trị cho trước này là (ở dạng HEXA)

0 5252525252525252 0 2525252525252525 IV IV    

(3) Ký hiệu  là phép ghép và C CiL, iR là các nửa 32 bit phải và trái của Ci Đầu ra ( )h xHt ||Ht được xác định như sau: (với 1 i t)

0 1 0 1 , ( ), ( ) , || , ( ), ( ) , || i i R L i i i i k i i i i L R i i i i i i i i k H IV k g H C E x H C C H IV k g H C E x H C C            

Thuật toán MDC - 4 có thể được mô tả theo sơ đồ sau:

Hình 1.12.Thuật toán MDC-4

1.4.3.2. Các hàm băm có khoá (MAC)

Các hàm băm có khoá được sử dụng để xác thực thông báo và thường được gọi là các thuật toán tạo mã xác thực thông báo (MAC).

MAC dựa trên các mật mã khối. Thuật toán [4]

Vào: Dữ liệu x, mật mã khối E, khoá MAC bí mật k của E. Ra: n bit MAC trên x (n là độ dài khối của E)

(1) Độn và chia khối: Độn thêm các bit vào x nếu cần. Chia dữ liệu đã độn thành từng khối n bit: x x1, 2,...,xt.

(2) Xử lý theo chế độ CBC.

Tính khối Ht như sau: 1 1 1 1 1 ( ) ( ) 2 k k i H E x H E Hx i t     

(3) Xử lý thêm để tăng sức mạnh của MAC

Dùng một khoá bí mật thứ haik k. Tính 1

( ), ( )

t k t t k t

HE H HE H (4) Kết thúc: MAC là khối n bit Ht

Hình 1.13.Sơ đồ Miyaguchi – Preneel 1.4.4. Các loại tấn công hàm băm cơ bản

1.4.4.1. Tấn công vào độ dài MDC

Cho trước một thông báo m cố định và mã băm ( )h m có độ dài n bit, phương pháp vét cạn để tìm một xung đột với m chọn ngẫu nhiên một chuỗi m và tính thử xem (h m ) h m( ) hay không. Giả sử mã băm là một biến ngẫu nhiên có phân phối chuẩn thì xác suất để tìn được mxung đột là 1 2n.

1.4.4.2. Tấn công vào không gian khóa của MAC

Khóa bí mật của MAC có thể xác định bằng cách tìm trên toàn bộ không gian khóa. Với một cặp đầu vào/ đầu ra (thông báo/ MAC) cho trước, ta có thể thử tất cả các khóa có thể để tính MAC từ thông báo đã cho, và kiểm tra giá trị MAC có trùng với đầu ra ban đầu. Khi đó sẽ xác định được khóa bó mật của MAC. Nếu

chiều dài khóa của MAC là t bit thì khóa bí mật có thể tìm được với xác suất 1 2 ;t t n

  .

1.4.4.3. Tấn công vào độ dài MAC

Với một hàm băm MAC n bit, việc tìm được giá trị hàm băm MAC của một thông báo cho trước hoặc tìm tiền ảnh có xác suất thành công là khoảng 1 2n

. Tuy nhiên, các giá trị băm tìm thấy không thể kiểm chứng được nếu không biết trước cặp đầu vào/ đầu ra (thông báo/mã băm), hoặc biết trước khóa bí mật của MAC. Mục tiêu xây dựng các hàm băm MAC là không thể tìm được chính xác một cặp (thông báo/mã băm) mới với xác suất thành công lơn hơn (1 2 ,1 2 )t n , nghĩa là lớn hơn xác suất tìm được khóa bí mật và xác suất tìm mã băm MAC.

1.4.4.4. Tấn công bằng các kết quả tính toán được

Việc tính toán trước một số lượng các cặp đầu vào/ đầu ra của hàm băm sẽ giúp nhanh chóng tìm được tiền ảnh cũng như tiền ảnh thứ hai của một mã băm. Ở đây, ta đánh đổi chi phí tính toán và không gian lưu trữ để đạt mục tiêu trong thời gian ngắn. Chẳng hạn với mã băm 64 bit, người ta sẽ chọn ngẫu nhiên 2 thông 40 báo đầu vào và tính mã băm của chúng, sau đó lưu trữ kết quả thành các cặp đầu vào/ đầu ra. Việc tốn thời gian và không gian để tính toán trước giúp tăng khả năng tòm được một tiền ảnh của một mã băm đó từ 64

1 2 lên 1 224 . Tương tự, xác suất để tìm một tiền ảnh thứ hai tăng lên rlần nếu có r cặp đầu vào/ đầu ra của hàm OWHF đã được tính trước.

1.4.4.5. Tấn công đa mục tiêu

Để tấn công kháng tiền ảnh thứ hai của một hàm băm, người ta thường cố định một mục tiêu (mã băm của tiền ảnh thứ hai) rồi tìm một tiền ảnh khác thỏa mãn mục tiêu đó. Nhưng nếu có r mục tiêu, ta chỉ cần tìm một tiền ảnh khác thỏa mãn một trong các mục tiêu đó. Như vậy xác suất để tìm được tiền ảnh thứ hai tăng lên r lần so với phương pháp sử dụng một mục tiêu. Điều này có nghĩa là khi sử dụng các hàm băm có khóa, việc sử dụng nhiều lần một khóa duy nhất sẽ giảm

độ an toàn của chính hàm băm. Nếu có r thông báo kèm theo mã băm, khả năng xuất hiện một xung đột của hàm băm tăng lên r lần.

1.4.4.6. Tấn công bằng các thông báo dài

Giả sử h là một hàm băm n bit có hàm nén là f và không áp dụng thuật toán mở rộng thông báo. Đặt m là một thông báo được chia thành t khối thông báo con. Khi đó, tiền ảnh thứ hai của ( )h m có thể được tìm thấy trong khoảng thời gian tương đương với việc thực hiện (2n s)s hàm nén f và cần không gian lưu trữ (n slg( ))s bit, với mọi s trong khoảng 1 s min( , 2t n2).

Như vậy, đối với các thông báo có chiều dài lớn, việc tìm tiền ảnh thứ hai nhìn chung dễ dàng hơn tìm tiền ảnh của một mã băm (trường hợp xấu nhất là phải thực hiện hàm nén f đến 2n lần). Với t 2n2, chi phí tính toán sẽ thấp nhất nếu chọn s2n2, khi đó ta sẽ phải thực hiện khoảng 2

2n hàm nén f để tìm một tiền ảnh thứ hai.

1.4.5. Độ an toàn mục tiêu

Để đánh giá độ an toàn tính toán của các hàm băm, chúng ta cần xác định mục tiêu của cả người thiết kế hàm băm lẫn người muốn tấn công hàm băm đó. Bảng 1.4 cho biết độ an toàn mục tiêu của một số hàm băm thông dụng.

Bảng 1.4.Độ an toàn mục tiêu của hàm băm

Hàm băm Mục tiêu thiết kế Độ an toàn Mục tiêu tấn công

OWHF Kháng tiền ảnh Kháng tiền ảnh thứ hai 2n 2n Tìm tiền ảnh Tìm tiền ảnh khác CRHF Kháng xung đột 2 2n Tìm xung đột

MAC Không thể tìm khóa Kháng tính toán 2t max(1 2 ,1 2 )t n f P  Tìm khóa MAC Tìm cặp ( ,m MAC) khác

Trong thực tế, ta có thể xem việc thực hiện 2 phép toán là giới hạn tính 80 toán của các hệ thống máy tính hiện tại, Do đó đối với hàm băm n bit, ta đặt độ an toàn mục tiêu thực tế dựa trên n như sau:

 Hàm băm một chiều có n80: Để hàm băm thỏa mãn kháng tiền ảnh thứ nhất và thứ hai, cần nhiều nhất là 2n 280phép toán.

 Hàm băm kháng xung đột (n160). Dựa vào bảng 1.4, một xung đột của hàm băm kháng xung đột chỉ có thể được tìm thấy trong khoảng thời gian tương đương với việc thực hiện 2n2 280phép toán.

 Hàm MAC (n64) và khóa bí mật có chiều dài 64 đến 80 bit. Với thuật toán MAC tiêu biểu, tính kháng tiền ảnh và kháng tiền ảnh thứ hai phụ thuộc trực tiếp vào khóa bí mật của hàm MAC, do đó độ an toàn của MAC phụ thuộc vào chiều dài của khóa bí mật.

1.5.TÍNH TOÀN VẸN CỦA DỮ LIỆU VÀ XÁC THỰC THÔNG BÁO

Định nghĩa 1.9 [4]

Tính toàn vẹn của dữ liệu là tính chất đảm bảo dữ liệu không bị sửa đổi một cách bất hợp pháp kể từ khi dữ liệu được tạo ra, được phát hoặc được lưu giữ bởi một nguồn được xác định.

1.5.1. Các phương pháp kiểm tra tính toàn vẹn dữ liệu

Toàn vẹn dữ liệu chú trọng chủ yếu ở các khối dữ liệu nhị phân. Các thao tác cho khối dữ liệu không còn toàn vẹn nữa bao gồm: chèn thêm một số bit, xoát bớt một số bit, thay đổi trật tự một số bit, thay thế một số bit và tất cả các thao tác kết hợp khác.

Có ba phương pháp cung cấp tính toàn vẹn của dữ liệu bằng cách dùng các hàm băm.

Hình 1.14.Kiểm tra tính toàn vẹn bằng MAC

b) Dùng MDC và mã hoá

Hình 1.15.Kiểm tra tình toàn vẹn dùng MDC và thuật toán mã hóa

Hình 1.16.Kiểm tra tính toàn vẹn dùng MDC và kênh an toàn 1.5.2. Chữ ký số

Định nghĩa 1.10 [4], [34]:

Xác thực tính nguyên bản của dữ liệu là một kiểu xác thực đảm bảo một bên liên lạc được chứng thực là nguồn thực sự tạo ra dữ liệu đó ở một thời điểm nào đó trong quá khứ.

Xác thực thông báo là một thuật ngữ được dùng tương đương với xác thực nguyên gốc của dữ liệu.

Một dạng cụ thể của xác thực nguồn gốc dữ liệu được sử dụng khá phổ biển là chữ ký điện tử. Chữ ký điện tử hay chữ ký số (electronic signature, digital signature) là thông tin đi kèm theo dữ liệu nhằm mục đích xác định nguồn gốc của dữ liệu đó. Nguồn gốc dữ liệu ở đây chính là chủ của dữ liệu đó, và chữ ký số chính là khóa bí mật riêng mã chỉ người sở hữu dữ liệu mới có.

Chữ ký số cũng đảm bảo các chức năng như xác định được người chủ của một dữ liệu (xác thực chủ thể nội dung) và xác định dữ liệu có bị thay đổi không (xác thực nội dung). Trước khi gửi dữ liệu đến các bên, người chủ dữ liệu sẽ tiến hành ký vào dữ liệu đó. Quá trình ký bao gồm tính toán mã băm của dữ liệu và mã hóa giá trị băm bằng khóa bí mật của người ký. Khi cần kiểm tra, bên nhận tiến hành giải mã (với khóa công khai của bên gửi) để lấy lại mã băm và kiểm tra với mã băm tính toán độc lập từ văn bản nhận được. Nếu hai giá trị này khớp nhau thì bên nhận có thể tin rằng văn bản xuất phát từ người sở hữu khóa bí mật. Cả hai bên tham gia vào quá trình thông tin đều có thể tin tường là văn bản không bị sửa đổi trong khi truyền vì nếu văn bản bị thay đổi thì mã băm sẽ thay đổi và lập tức bị phát hiện.

Các bước tạo chữ ký và kiểm tra chữ ký được mô tả trên hình sau:

Hình 1.17.Quá trình tạo chữ ký số và kiểm tra chữ ký số

Ví dụ 1.6: Sơ đồ chữ ký số sử dụng RSA như hình 1.18.

Quá trình ký:

 Băm thông báo M để có mã băm: HMDCH M( )

 Mã hóa mã băm HMDC bằng hệ mật RSA với khóa bí mật của A (dA): ( )dA mod

A A

DSH M n được chữ ký số của DSA.

 Ghép chữ ký số DSA với thông báo: M DS|| A và truyền đi. Quá trình kiểm tra:

 Tách thông báo M và chữ ký số DSA.

 Giải mã RSA chữ ký số bằng khóa công khai của A (eA) để thu được mã băm của bên phát.

 Tiến hành băm M để tạo mã băm độc lập: HMDC và so sánh với mã băm bên phát.

Nhận xét: Sơ đồ này không bảo mật thông báo M.

Để bảo mật thông báo người ta sử dụng sơ đồ chữ ký số dạng như hình 1.19.

1.6.KẾT LUẬN CHƯƠNG 1

Trong chương 1, luận văn tập trung tìm hiểu các vấn đề chung nhất về mật mã khóa bí mật (hay còn gọi là mật mã cổ điển); mật mã khóa công khai (hay mật mã hiện đại) và hàm băm, từ đó phân tích các ưu và nhược điểm của từng hệ mật.

Một phần của tài liệu TỔNG QUAN VỀ MẬT MÃ HỌC (Trang 46)