1. Trang chủ
  2. » Giáo Dục - Đào Tạo

tìm hiểu về hàm băm SHA và ứng dụng của nó

14 2K 22

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 92,23 KB

Nội dung

Chuẩn mật mã nâng cao không chỉ đơn thuần là mã hóa và giải mã thông tin mà còn bao gồm nhiều vấn đề khác nhau cần được nghiên cứu và giải quyết như ứng dụng xây dựng các hàm băm phục vụ

Trang 1

MỤC LỤC

MỤC LỤC

DANH MỤC VÀ THUẬT NGỮ VIẾT TẮT

LỜI NÓI ĐẦU

CHƯƠNG I GIỚI THIỆU KHÁI QUÁT VỀ HÀM BĂM SHA VÀ SHA-2

1.1 Khái quát về hàm băm SHA.

1.2 HÀM BĂM SHA2.

1.3 Ưu nhược điểm HÀM BĂM SHA-2.

CHƯƠNG II GIẢI THUẬT THỰC HIỆN HÀM BĂM SHA-2

2.1 Các phiên và đặc điểm của các hàm băm SHA-2.

2.2 Thuật toán thực hiện hàm băm SHA-2.

CHƯƠNG III ỨNG DỤNG CỦA HÀM BĂM SHA-2

3.1 Một số ứng dụng điển hình băm SHA-2

3.2 Mô phỏng băm SHA-256

TỔNG KẾT

Trang 2

DANH MỤC THUẬT NGỮ VIẾT TẮT

TDES Triple Data Encryption Standard Gấp ba lần tiêu chuẩn mã hóa dữ

liệu

LỜI NÓI ĐẦU

Trang 3

Với sự phát triển ngày càng nhanh chóng của Internet và các ứng dụng giao dịch điện tử trên mạng, nhu cầu bảo vệ thông tin trong các hệ thống và ứng dụng điện tử ngày càng được quan tâm và có ý nghĩa hết sức quan trọng Vì thế việc nghiên cứu về chuẩn mật mã nâng cao và ứng dụng nó trong các lĩnh vực bảo mật thông tin là rất cần thiết

Ứng dụng của chuẩn mật mã nâng cao đang được sử dụng ngày càng phổ biến trong nhiều ứng dụng khác nhau Chuẩn mật mã nâng cao không chỉ đơn thuần là mã hóa và giải mã thông tin mà còn bao gồm nhiều vấn đề khác nhau cần được nghiên cứu

và giải quyết như ứng dụng xây dựng các hàm băm phục vụ việc chứng thực nguồn gốc nội dung thông tin (kỹ thuật chữ ký điện tử), xác thực tính nguyên vẹn dữ liệu

Một trong những hàm băm đang được sử dụng rộng rãi nhất hiện nay đó là hàm băm SHA được phát triển bởi cục an ninh quốc gia Mĩ (National Security Agency hay NSA) Với nhiều ưu điểm và cũng đã có nhiều phiên bản khác nhau được phát hành tiêu biểu trong số đó là họ hàm băm SHA-2 Bài báo cáo này chúng ta sẽ cùng nhau đi tìm hiểu về hàm băm SHA và ứng dụng của nó

CHƯƠNG I GIỚI THIỆU KHÁI QUÁT VỀ HÀM BĂM SHA VÀ SHA-2

Trang 4

1.1 Khái quát về hàm băm SHA.

SHA (Secure Hash Algorithm hay thuật giải băm bảo mật) gồm năm thuật giải được chấp nhận bởi FIPS dùng để chuyển một đoạn dữ liệu nhất định thành một đoạn

dữ liệu có chiều dài không đổi với xác suất khác biệt cao Những thuật giải này được gọi là "an toàn", theo chuẩn FIPS 180-2 phát hành ngày 1 tháng 8 năm 2002

Năm thuật giải SHA là SHA-1 (trả lại kết quả dài 160 bit), SHA-224 (trả lại kết quả dài 224 bit), SHA-256 (trả lại kết quả dài 256 bit), SHA-384 (trả lại kết quả dài

384 bit), và SHA-512 (trả lại kết quả dài 512 bit) Thuật giải SHA là thuật giải băm mật được phát triển bởi cục an ninh quốc gia Mĩ (National Security Agency hay NSA)

và được xuất bản thành chuẩn của chính phủ Mĩ bởi viện công nghệ và chuẩn quốc gia

Mĩ (National Institute of Standards and Technology hay NIST) Bốn thuật giải sau thường được gọi chung là SHA-2

Hiện nay, SHA-1 không còn được coi là an toàn bởi đầu năm 2005, ba nhà mật

mã học người Trung Quốc đã phát triển thành công một thuật giải dùng để tìm được hai đoạn dữ liệu nhất định có cùng kết quả băm tạo ra bởi SHA-1 Mặc dù chưa có ai làm được điều tương tự với SHA-2, nhưng vì về thuật giải, SHA-2 không khác biệt mấy so với SHA-1 Hiện này đã có thông tin về một hàm băm mới là SHA-3 nhưng còn ở dạng dự thảo Họ SHA-2 được coi là an toàn để sử dụng hiện nay

1.2 HÀM BĂM SHA2.

SHA-2 bao gồm bốn phiên bản SHA-224, SHA-256, SHA-384 và SHA-512 Ba giải thuật SHA-256, SHA-384 và SHA-512 được phát hành lần đầu năm 2001 trong bản phác thảo FIPS PUB 180-2 Năm 2002, FIPS PUB 180-2 SHA-2 được chuẩn hóa

và phát hành chính thức Năm 2004, FIPS PUB 180-2 bổ sung thêm một biến thể

SHA-2 đó là SHA-SHA-2SHA-24, với mục đích tạo ra một biến thể SHA-SHA-2 có độ dài khóa trùng với DES ba lần với 2 khóa (2TDES) - 112 bit Những biến thể SHA-2 này được đăng ký Bằng sáng chế Hoa Kỳ số 6.829.355

1.3 Ưu nhược điểm HÀM BĂM SHA-2.

Trang 5

Ưu điểm:

SHA-2 hay SHA nói chung được coi là họ hàm băm an toàn nhất bởi:

 Từ giá trị băm được tạo ra bởi một giải thuật băm SHA, việc tìm lại được đoạn

dữ liệu gốc là không khả thi

 Hai đoạn dữ liệu có cùng kết quả băm tạo ra bởi một trong những giải thuật SHA là không thể xảy ra Chỉ cần một sự thay đổi nào trên đoạn dữ liệu gốc, dù nhỏ, cũng sẽ tạo nên một giá trị băm khác hoàn toàn với xác hiệu ứng nở tuyết

Nhược điểm:

Hiện nay SHA-1 không còn được coi là an toàn tuyệt đối tuy SHA-2 vẫn an toàn tuy nhiên thuật toán của SHA-2 không khác biệt nhiều so với SHA-1 do đó việc phá được nó chỉ là không lâu nữa Do đó cần phải phát triển các thuật toán băm mới an toàn hơn cho tương lai

CHƯƠNG II GIẢI THUẬT THỰC HIỆN HÀM BĂM SHA-2.

2.1 Các phiên và đặc điểm của các hàm băm SHA-2.

Năm 2002 sự ra đời của một số phiên bản SHA mới trên cơ sở sử dụng thuật toán hàm băm SHA-1 chỉ có thay đổi đó là tăng chiều dài của mã băm nhằm tăng khả năng bảo mật, các phiên bản này được gọi chung là SHA-2 SHA-2 gồm có 4 phiên bản đó là SHA-256, SHA-384, SHA-512 được phát hành chính thức vào đầu năm 2002

và một phiên bản bổ sung cuối cùng cho đến tận bây giờ là SHA-224 được phát hành vào năm 2004 bởi FIPS PUB 180-2

Các phiên bản SHA-2 có chiều dài mã băm khác nhau cụ thể SHA-224 (mã băm dài 224 bit), SHA-256 (mã băm dài 256 bit), SHA-384 (mã băm dài 384 bit), SHA-512 (mã băm dài 512 bit) Tham số giá trị cụ thể của từng phiên bản được cho trong bảng :

Kích thước dữ liệu gốc (bit) <264 <264 <2128 <2128

Trang 6

Kích thước khối (bit) 512 512 1024 1024

Bảng: Giá trị tham số các phiên bản của hàm băm SHA-2.

2.2 Thuật toán thực hiện hàm băm SHA-2.

Thuật toán thực hiện hàm băm cho các phiên bản SHA-2 là giống nhau chỉ khác nhau ở các tham số Về cơ bản gồm có 2 quá trình chính đó là tiền xử lý và tính toán giá trị băm

Tiền xử lý

 Mở rộng khối dữ liệu gốc

 Phân tích khối dữ liệu đã mở rộng

Tính toán giá trị băm

 Khởi tạo giá trị băm

 Tính toán băm

Cụ thể từng bước của quá trình băm được thực hiện như sau:

Bước 1: Mở rộng khối dữ liệu gốc

Khối dữ liệu gốc đầu vào được tiến hành mở rộng bằng cách thêm các bit đệm

để đảm bảo khối tin này có chiều dài là bội số của 512 (với SHA-224 và SHA-256) hoặc 1024 (với SHA-384 và SHA-512) tùy vào thuật toán Bit đệm thêm được bắt đầu bằng bit 1 và theo sau đó toàn bộ bit 0 Việc thêm các bit tạo ra các khối bit có độ dài bằng nhau là 512/1024 và khối cuối cùng sẽ có độ dài là 448/896 bit Khối tin cuối cùng sau đó sẽ được gắn số bit để thể hiện chiều dài của khối tin đầu vào với khối 448

sẽ được gắn 64 bit, với khối 896 sẽ được gắn thêm 128 bit

Trang 7

 VD:

Đối với hàm băm SHA-224 và SHA-256:

Giả sử độ dài của khối dữ liệu vào là l bit, để mở rộng khối tin ta thêm bit 1 vào cuối của khối tin theo sau là k bit 0 (sao cho l + 1 + k = 448(mod 512) tức là thu được n khối 512 và còn dư khối cuối cùng có độ dài là 448 bit Sau đó thêm khối 64 bit là biểu diễn nhị phân độ dài của l vào khối 448 bit ta sẽ thu được khối cuối cùng cũng là

512 bit

Đối với SHA-384 và SHA-512:

Giả sử độ dài của khối dữ liệu vào là l bit, thêm bit 1 vào cuối khối tin theo sau

là k bit 0 (sao cho l + 1 + k = 896(mod 1024) sau đó thêm 128 bit là biểu diễn nhị phân

độ dài của l vào khối 896 bit ta sẽ thu được khối cuối cũng cũng là 1024 bit

Bước 2: Phân tích khối dữ liệu đã mở rộng

Sau khi khối dữ liệu vào đã được mở rộng, nó cần được phân tích thành N khối

512 hoặc 1024 bit tuy vào giải thuật sử dụng trước khi thực hiện băm

 VD:

Đối với băm SHA-224, SHA-256, khối dữ liệu mở rộng được phân tách thành N khối 512 bit từ M(1), M(2)…, M(N) Mỗi khối 512 bit lại được phân tích thành 16 nhóm

32 bit (16*32=512) 32 bit đầu tiên của khối i được kí hiệu là M0i, 32 bit tiếp theo là M1i

cứ tiếp tục cho đến M15i Mối khối 32 bit gồm có 64 từ (word) W[0-63] được tạo ra bằng cách:

- 16 từ đầu tiên có được bằng cách tách M thành các khối 32 bit

1 2 15 16

W || W || || W || W

M 

- 48 từ còn lại có được bằng cách tính theo công thức

1 2 7 0 15 16,

Wi  (W ) Wi  i  (Wi ) W i 17   i 64

Trang 8

Đối với băm SHA-384, SHA-512, khối dữ liệu mở rộng được phân tách thành N khối 1024 bit từ M(1), M(2)…, M(N)) Mỗi khối 1024 bit lại được phân tích thành 16 nhóm 64 bit (16*64=1024) 64 bit đầu tiên của khối i được kí hiệu là M0i, 64 bit tiếp theo là M1i cứ tiếp tục cho đến M15i

Bước 3: Khởi tạo giá trị băm

Giá trị băm là một chuỗi bit có độ dài bằng bộ đệm MD (message degist) gồm các word (từ) ghép lại Trong đó H i(j)

là word j trong giá trị băm ở lần lặp i với 0  j 

số word trong giá trị băm - 1 Trước khi thực hiện băm với mỗi thuật toán giá trị băm ban đầu H(0) phải được thiết lập Kích thước và số lượng từ (word) trong H(0) tùy thuộc vào kích thước của mã băm Giá trị băm ban đầu H(0) là trình tự của các từ 32 bit ( thu được bằng cách lấy căn bậc 2 của 8 số nguyên tố đầu tiên từ 1 đến 8)

Đầu tiên, tám biến được thiết lập với các giá trị ban đầu với mỗi phiên bản SHA-2 các biến này sẽ có những giá trị khác nhau:

Với SHA-224:

H10 = c1059ed8 0

2

H = 367cd507 0

3

H = 3070dd17 0

4

H = f70e5939

0 5

H = ffc00b31 0

6

H = 68581511 0

7

H = 64f98fa7 0

8

H = befa4fa4 Với SHA-225:

0 1

H := 0x6a09e667 0

2

H := 0xbb67ae85

0 5

H := 0x510e527f 0

6

H := 0x9b05688c

Trang 9

0 3

H := 0x3c6ef372 0

4

H := 0xa54ff53a

0 7

H := 0x1f83d9ab 0

8

H := 0x5be0cd19 Với SHA-384:

H10 = cbbb9d5dc1059ed8

0

2

H = 629a292a367cd507

0

3

H = 9159015a3070dd17

0

4

H = 152fecd8f70e5939

0 5

H = 67332667ffc00b31 0

6

H = 8eb44a8768581511 0

7

H = db0c2e0d64f98fa7 0

8

H = 47b5481dbefa4fa4 Với SHA-512:

H10 = 6a09e667f3bcc908

0

2

H = bb67ae8584caa73b

0

3

H = 3c6ef372fe94f82b

0

4

H = a54ff53a5f1d36f1

0 5

H = 510e527fade682d1 0

6

H = 9b05688c2b3e6c1f 0

7

H = 1f83d9abfb41bd6b 0

8

H = 5be0cd19137e2179

Bước 4: Các hàm và hằng số sử dụng

Với SHA-256

Các hàm logic được sử dụng:

0 1 0 1

( , , Z) (X Y) (X Z) (Y Z),

Maj X Y

Các ký hiệu phép toán được sử dụng:

 thực hiện phép toán XOR

 thực hiện phép toán AND

 thực hiện phép toán OR

 thực hiện phép bù

Trang 10

 cộng phần dư 232

n

R dịch phải n bit

n

S quay phải n bit

Chuỗi hằng số Ki có được bằng cách lấy căn bậc 3 của 64 số nguyên tố đầu tiên

K[0-63]

0x428a2f98

0xd807aa98

0xe49b69c1

0x983e5152

0x27b70a85

0xa2bfe8a1

0x19a4c116

0x748f82ee

0x71374491

0x12835b01

0xefbe4786

0xa831c66d

0x2e1b2138

0xa81a664b

0x1e376c08

0x78a5636f

0xb5c0fbcf 0x243185be 0x0fc19dc6 0xb00327c8 0x4d2c6dfc 0xc24b8b70 0x2748774c 0x84c87814

0xe9b5dba5 0x550c7dc3 0x240ca1cc 0xbf597fc7 0x53380d13 0xc76c51a3 0x34b0bcb5 0x8cc70208

0x3956c25b 0x72be5d74 0x2de92c6f 0xc6e00bf3 0x650a7354 0xd192e819 0x391c0cb3 0x90befffa

0x59f111f1 0x80deb1fe 0x4a7484aa 0xd5a79147 0x766a0abb 0xd6990624 0x4ed8aa4a 0xa4506ceb

0x923f82a4 0x9bdc06a7 0x5cb0a9dc 0x06ca6351 0x81c2c92e 0xf40e3585 0x5b9cca4f 0xbef9a3f7

0xab1c5ed5 0xc19bf174 0x76f988da 0x14292967 0x92722c85 0x106aa070 0x682e6ff3 0xc67178f2

Với SHA-512

Sáu hàm logic được sử dụng trong SHA-512 Mỗi hàm hoạt động trên một word 64-bit

và tạo ra một word 64-bit ở đầu ra Các hàm được định nghĩa như sau:

28 34 39 0

14 18 41 1

0

19 61 6 1

(x, y, z) (x y) ( x z) Maj(x, y, z) (x y) (x z) (y z) (x) (x) S (x) S (x) (x) (x) S (x) S (x) (x) S (x) S (x) (x) (x) S (x) S (x) (x)

Ch

S S

R R

    

Chuỗi hằng số K i được sử dụng trong SHA-512 K[0-79]

428a2f98d728ae22 7137449123ef65cd b5c0fbcfec4d3b2f e9b5dba58189dbbc 3956c25bf348b538 59f111f1b605d019 923f82a4af194f9b ab1c5ed5da6d8118 d807aa98a3030242 12835b0145706fbe 243185be4ee4b28c 550c7dc3d5ffb4e2 72be5d74f27b896f 80deb1fe3b1696b1 9bdc06a725c71235 c19bf174cf692694 e49b69c19ef14ad2 efbe4786384f25e3 0fc19dc68b8cd5b5 240ca1cc77ac9c65 2de92c6f592b0275 4a7484aa6ea6e483 983e5152ee66dfab 5cb0a9dcbd41fbd4 76f988da831153b5 a831c66d2db43210 b00327c898fb213f bf597fc7beef0ee4 c6e00bf33da88fc2 d5a79147930aa725 06ca6351e003826f 142929670a0e6e70 27b70a8546d22ffc 2e1b21385c26c926 4d2c6dfc5ac42aed

Trang 11

53380d139d95b3df 650a73548baf63de 766a0abb3c77b2a8 81c2c92e47edaee6 92722c851482353b a2bfe8a14cf10364 a81a664bbc423001 c24b8b70d0f89791 c76c51a30654be30 d192e819d6ef5218 d69906245565a910 f40e35855771202a 106aa07032bbd1b8 19a4c116b8d2d0c8 1e376c085141ab53 2748774cdf8eeb99 34b0bcb5e19b48a8 391c0cb3c5c95a63 4ed8aa4ae3418acb 5b9cca4f7763e373 682e6ff3d6b2b8a3 748f82ee5defb2fc 78a5636f43172f60 84c87814a1f0ab72 8cc702081a6439ec 90befffa23631e28 a4506cebde82bde9 bef9a3f7b2c67915 c67178f2e372532b ca273eceea26619c d186b8c721c0c207 eada7dd6cde0eb1e f57d4f7fee6ed178 06f067aa72176fba 0a637dc5a2c898a6 113f9804bef90dae 1b710b35131c471b 28db77f523047d84 32caab7b40c72493 3c9ebe0a15c9bebc 431d67c49c100d4c 4cc5d4becb3e42b6 597f299cfc657e2a 5fcb6fab3ad6faec 6c44198c4a475817

Bước 4: Tính toán băm

Đây là bước quan trọng nhất trong quá trình băm, nó thực hiện lặp nhiều lần để băm thông điệp ban đầu của hàm băm thành một chuỗi có chiều dài cố định nó được thực hiện bởi một hàm nén Thành phần chính của một hàm băm là một hàm nén và các hàm biến đổi khác

 Với SHA-225

 Tất cả các khối M(1), M(2), …, M(N) được xử lý cùng một lúc Với t chạy từ 1 đến N Xây dựng 64 khối Wi từ M t

được thực hiện như sau

( , , , , , , , ) ( a b c d e f g h Ht , Ht , Ht , Ht , Ht , Ht , Ht , Ht )

 Tổng số vòng lặp: gồm 64 vòng

 Tính toán giá trị mới của

t j

H

Trang 12

1 1

2 0

1

1 2

( ) ( , , ) W ( ) ( , , )

i i

h g

g f

f e

e d T

d c

c b

b a

a T T

 

 

 

( 1)

( 1)

( 1)

( 1)

( 1)

( 1)

( 1)

( 1)

t t

t t

t t

t t

t t

t t

t t

t t

 Kết thúc vòng lặp

 Tính toán kết quả cuối cùng:

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )

1N || 2N || 3N || 4N || 5N || 6N || 7N || 8N

 Với SHA-224

Quá trình thực hiện băm của SHA-224 hoàn toàn giống với SHA-256 chỉ khác duy nhất một điểm đó là kết quả băm xung đầu ra của SHA-256 là 8 nhóm 64 word 32 bit thì với SHA-224 chỉ sử dụng 7 nhóm 64 word 32 bit đầu tiên, bỏ đi nhóm 32 bit cuối cùng

( ) ( ) ( ) ( ) ( ) ( ) ( )

1N || 2N || 3N || 4N || 5N || 6N || 7N

 Với SHA-512 và 384:

Thuật toán băm của SHA-512 và 384 cũng giống như thuật toán của SHA-256 chỉ khác đó là số vòng lặp của 2 mã này nhiều hơn là 80 vòng so với 64 vòng của SHA-256 Bên cạnh đó SHA-384 còn có một điểm khác so với SHA-512 đó là với mã băm đầu ra của SHA-512 là 512 bit thì với SHA-384 chỉ là 384 bit, để có được băm

Trang 13

SHA-384 ta thực hiện tương tự như băm cho SHA-512 tuy nhiên khi mã ra ta trừ đi

128 bit cuối thì sẽ thu được băm cho SHA-384

CHƯƠNG III ỨNG DỤNG CỦA HÀM BĂM SHA-2

3.1 Một số ứng dụng điển hình băm SHA-2

Hàm băm SHA-2 được sử dụng rộng rãi trong một số ứng dụng bảo mật và các giao thức bao gồm TLS và SSL, PGP, SSH, S/MIME, và IPsec

SHA-256 được sử dụng như là một phần của quá trình xác thực các gói phần mềm Debian GNU/Linux và trong chuẩn DKIM (DomainKey Identified Mail);

SHA-512 là một phần của một hệ thống xác thực Video lưu trữ từ Tòa án Hình sự Quốc tế về nạn diệt chủng ở Rwanda SHA-256 và SHA-512 được đề xuất sử dụng trong DNSSEC Hai hệ điều hanh Unix và Linux cùng các nhà cung cấp dịch vụ đang chuyển sang sử dụng SHA-256 và SHA-512 cho băm mật khẩu bảo mật Một số hệ thống thanh toán tiền điện tử như Bitcoin sử dụng SHA-256 cho việc xác minh giao dịch và tính toán hóa đơn giao dịch

SHA-1 và SHA-2 là các thuật toán băm bảo mật đáp ứng được các yêu cầu để

sử dụng trong các ứng dụng nhất định Chính phủ Hoa Kỳ, kể cả sử dụng trong thuật toán mã hóa khác và các giao thức, để bảo vệ các thông tin không nhạy cảm FIPS PUB 180-1 cũng khuyến khích việc áp dụng và sử dụng SHA-1 do các tổ chức tư nhân

và thương mại Hiện nay SHA-1 đang được dần ngưng sử dụng cho hầu hết các chính phủ; Viện Quốc gia Hoa Kỳ Tiêu chuẩn và Công nghệ cho biết, "các cơ quan liên bang nên ngừng sử dụng SHA-1 cho ứng dụng đòi hỏi khả năng chống xúng đột càng sớm càng tốt, và phải sử dụng các họ hàm băm SHA-2 cho các ứng dụng này sau năm 2010"

Dù vậy SHA-2 đã không được thông qua một cách nhanh chóng, mặc dù an ninh tốt hơn so với SHA-1 Lý do có thể bao gồm thiếu sự hỗ trợ cho SHA-2 trên các

hệ thống chạy Windows XP SP2 trở lên và một nguy cơ xung đột hiện hữ trên SHA-1

Ngày đăng: 22/05/2017, 13:33

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w