1. Trang chủ
  2. » Công Nghệ Thông Tin

Nghiên cứu HMAC SHA1 và cài đặt mô phỏng trên Java

23 389 4

Đ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

Tiêu đề Tìm Hiểu Về Thuật Toán HMAC-SHA1
Tác giả Kiều Văn Tiến, Nguyễn Quốc Trung, Lưu Đình Nam
Người hướng dẫn Phạm Quốc Hoàng, Nguyễn Văn Nghị
Trường học Học Viện Kỹ Thuật Mật Mã
Chuyên ngành Mật Mã
Thể loại Nâng cao
Năm xuất bản 2015
Thành phố Hà Nội
Định dạng
Số trang 23
Dung lượng 907,01 KB
File đính kèm JavaApplication1.rar (23 KB)

Nội dung

Việc đòi hỏi an toàn thông tin trong giao dịch cũng như trao đổi thông điệp được đặt lên hàng đầu vì vậy việc xác thực thông điệp là một vấn đề quan trọng trong giao dịch hiện nay.Để tìm hiểu một cách rõ hơn trong đề tài nghiên cứu này chúng em xin giới thiệu về thuật toán HMACSHA1 để hiểu rõ hơn trong việc xác thực thông điệp của thông tin .

Trang 1

- Kiều Văn Tiến

- Nguyễn Quốc Trung

- Lưu Đình Nam Lớp :AT8A

Trang 2

LỜI CẢM ƠN

- Trước hết nhóm nghiên cứu xin gửi lời cám ơn đặc biệt nhất đến giảng viên Thạc

sĩ Phạm Quốc Hoàng, Khoa Mật Mã - Trường Học Viện Kỹ Thuật Mật Mã, người

đã định hướng đề tài, cung cấp tài liệu và tận tình chỉ bảo chúng em trong suốt quá trình thực hiện nghiên cứu

Chúng em cũng xin được gửi lời cám ơn sâu sắc tới Khoa Công nghệ thông tin, Khoa An toàn thông tin và Trưởng ban nghiên cứu khoa học, cùng các thầy cô giáo trong trường đã tận tình giảng dạy và luôn động viên chúng em trong học tập và nghiên cứu

Hà nội ngày 17,tháng 3,năm 2015

Nhóm thực hiện

Trang 3

MỤC LỤC

LỜI CẢM ƠN 1

Danh Mục Hình Ảnh Error! Bookmark not defined LỜI NÓI ĐẦU 5

CHƯƠNG1 : Tìm Hiểu hàm băm SHA-1 Error! Bookmark not defined 1 .Khái quát về hàm băm 6

1.1 Tìm hiểu hàm băm SHA-1 6

1.1.1 Giải thuật SHA1 6

1.1.2Nguyên lý giải thuật SHA1 6

1.1.3 Hàm nén SHA1 10

CHƯƠNG 2 :Tìm hiểu thuật toán HMAC-SHA1 12

2.1 Định nghĩa mã xác thực thông báo (MAC) 14

2.2 HMAC Design Objectives (Mục đích thiết kế HMAC) 15

2.2.1 Thiết kế HMAC 18

2.2.2 : Thuật toán HMAC 15

2.2.3 Sự an toàn của HMAC 18

2.3 Tìm hiểu về thuật toán HMAC-SHA1 19

2.3.1 Khái niệm 19

2.3.2 Mô tả hoạt động của thuật toán 20

CHƯƠNG 3: DEMO đánh giá – kết luận Error! Bookmark not defined 3.1 Demo 22

3.2 Kết luận 22

TÀI LIỆU THAM KHẢO 23

Trang 4

Hình 1 :xử lý khối dữ liệu

Hình 2 :hàm nén

Hình 3 :Các hàm f

Hình 4: Sơ đồkhối HMAC

Hình 5 :Thuật toán HMAC

Hình 6 :Thuật toán HMAC-SHA1

Trang 5

LỜI NÓI ĐẦU

-Ngày nay internet cùng với dịch vụ phong phú của nó có khả năng cung cấp cho con người cá phương tiện hết sức thuận lợi để trao đổi , tổ chức , tìm kiếm và cung cấp thông tin

Tuy nhiên , cũng như trong các phương thức truyền thông , việc trao đổi thông tin trong nhiều lĩnh vực đòi hỏi tính bí mật , tính toàn vẹn , tính xác thực cũng như trách nhiệm về các thông tin trao đổi

Bên cạnh đó , tốc độ xử lí của máy tính ngày càng được nâng cao ,do đó cùng với

sự giúp đỡ của các máy tính tốc độ cao , khả năng tấn công hệ thống thông tin có

độ bảo mật kém rất dễ xảy ra.Chính vì vậy người ta không ngừng nghiên cứu các vấn đề an toàn và bảo mật thông tin.Cho đến nay với sự phát triển của công nghệ

mã hóa phi đối xứng , người ta nghiên cứu và đưa ra nhiều kỹ thuật ,nhiều mô hình cho phép chúng ta áp dụng xây dựng các ứng dụng đòi hỏi tính an toàn thông tin cao

Việc đòi hỏi an toàn thông tin trong giao dịch cũng như trao đổi thông điệp được đặt lên hàng đầu vì vậy việc xác thực thông điệp là một vấn đề quan trọng trong giao dịch hiện nay.Để tìm hiểu một cách rõ hơn trong đề tài nghiên cứu này chúng

em xin giới thiệu về thuật toán HMAC-SHA1 để hiểu rõ hơn trong việc xác thực thông điệp của thông tin

Trang 6

CHƯƠNG 1 :TÌM HIỂU VỀ HÀM BĂM SHA-1

1 Khái quát về hàm băm:

Hàm băm là các thuật toán không sử dụng khóa để mã hóa, nó có nhiệm vụ “lọc” (băm) thông điệp, file được đưa vào theo một thuật toán H một chiều nào đó, rồi đưa ra một văn bản băm hay còn gọi là văn bàn đại diện, văn bản này có kích thước cố định Người nhận không biết được nội dung hay độ dài ban đầu của thông điệp đã được băm bằng hàm băm.Giá trị của hàm băm là duy nhất và không thể suy ngược lại nội dung của thông điệp từ giá trị băm này

1.1 Tìm hiểu về hàm băm sha-1

1.1.1 Giải thuật SHA-1

 Secure Hash Algorithm (SHA) phát triển bởi National Institute of Standard and Technology (NIST)

 Đầu vào: thông điệp với độ dài tối đa 264 bits

 Đầu ra: giá trị băm (message digest) có độ dài 160 bits

 Giải thuật gồm 5 bước thao tác trên các khối 512 bits

1.1.2 Nguyên lý Giải thuật SHA-1

Bước 1: nhồi thêm dữ liệu

Trang 7

 Thông điệp được nhồi thêm các bits sao cho độ dài l ≡ 448 mod 512 hay l =

n * 512 + 448 (n,l nguyên)

 Thông điệp luôn luôn được nhồi thêm dữ liệu

 Số bits nhồi thêm nằm trong khoảng 1 đến 512

 Phần dữ liệu nhồi thêm bao gồm một bit 1 và theo sau là các bit 0

Bước 2: thêm vào độ dài

 Độ dài của khối dữ liệu ban đầu được biểu diễn dưới dạng nhị phân 64bit và được thêm vào cuối chuỗi nhị phân kết quả của bước 1

 Độ dài được biểu diễn dưới dạng nhị phân 64bit không dấu

 Kết quả có được từ 2 bước đầu là một khối dữ liệu có độ dài là bội số của

512 Khối dữ liệu được biểu diễn:

 Bằng một dãy L khối 512bit Y0 , Y1 ,…, Yl-1

 Bằng một dãy N từ (word) 32bit M0 , M1 , M n-1 Vậy N = L x 16

Bước 3: khởi tạo bộ đệm MD (MD buffer)

 Một bộ đệm 160bit được dùng lưu trữ các giá trị băm trung gian và kết quả

Bộ đệm được biểu diễn bằng 5 thanh ghi 32 bit với các giá trị khởi tạo ở dạng bigendian (byte có trọng số lớn nhất trong từ nằm ở địa chỉ thấp nhất) như sau:

Trang 8

 Trọng tâm của giải thuật bao gồm 4 vòng lặp thực hiện tất cả 80 bước

 4 vòng lặp có cấu trúc như nhau, chỉ khác nhau ở các hàm logic f1 , f2 , f 3,

Trang 9

Hình1 : xử lý khối dữ liệu Bước 5: xuất kết quả

 Sau khi thao tác trên toàn bộ L blocks Kết quả của khối thứ L là bảng băm 160bit

 Giải thuật được tóm tắt như sau:

o CV0 = IV

o CVq+1 = SUM 32 (CVq , ABCDEq )

o MD = CVl

 Với

Trang 10

o IV = giá trị khởi tạo của bộ đệm ABCDE

o ABCDEq = đầu ra của hàm nén trên khối thứ q

o L = số khối 512bit của thông điệp

o SUM32 = phép cộng modulo 232 trên từng từ (32 bits) của đầu vào

o MD = giá trị băm

1.1.3 Hàm nén SHA-1

Hình 2 :hàm nén Giải thuật thực hiện tất cả 80 bước, mỗi bước được mô tả như sau:

Trang 11

Từ 16 từ 32-bit từ khối dữ liệu đầu vào, mở rộng thành 80 từ Wt

– Với 0 ≤ t ≤ 15, giá trị Wt lấy trực tiếp từ khối dữ liệu

– Với t >15 : Wt = S1 (Wt-16 xor Wt-14 xor Wt-8 xor Wt-32)

CHƯƠNG 2 : TÌM HIỂU VỀ THUẬT TOÁN HMAC-SHA1

2.1 Định nghĩa mã xác thực thông báo: MAC

Thuật toán mã xác thực thông báo (MAC- Message Authentication Code) là

một họ các hàm Hk được tham số hóa bởi một khóa bí mật k, với các tính chất sau:

Trang 12

- Tính chất dễ tính toán : với một hàm Hk đã biết, cho trước một giá trị k và một đầu vào x, Hk(x) là dễ tính toán Kết quả này gọi là gia strij MAC hoặc HMAC

- Tính chất nén : Hk ánh xạ một đầu vào x có độ dài bit tùy ý hữu hạnthành một đầu ra Hk(x) có độ dài bit cố định n

- Tính chất kháng tính toán: cho trước không hoặc nhiều cặp text-MAC (xi,

Hk(xi)), không thể tính toán để tìm một cặp text-MAC bất kỳ (x, Hk(x)) cho một đầu vào mới x # xi (bao gồm cả khả năng Hk(x) = Hk(xi) với i nào đó)

Kỹ thuật xác thực bằng thuật toán MAC được mô tả chung như sau: Giả sử

có hai thực thể tham gia liên lạc được gọi là A và B Hai thực thể A và B phải chia

sẻ một khóa bí mật chung k Khi A cần gửi một thông báo cho B thì A tính mã xác thực thông báo như một hàm của thông báo và khóa:

MAC = MAC(k,x)

Trong đó: x là thông báo đầu vào, k là khóa bí mật đã chia sẻ, MAC là mã

xác thực thông báo Thông báo được nối với giá trị MAC và được truyền cho người nhận Người nhận xác thực thông báo này bằng cách tính lại MAC từ thông

báo x nhận được bằng khóa bí mật k đã chia sẻ, sau đó so sánh với MAC nhận

được kèm theo thông báo Nếu hai giá trị này giống nhau thì thông báo được xác

thực Do chỉ có người gửi và người nhận biết khóa bí mật k, do đó không aikhác có

thể tạo được MAC hợp lệ Hơn nữa, bất kỳ việc sửa đổi thông báo ban đầu cũng sẽ tạo ra một MAC khác và nó sẽ không được xác thực

Ngoài ra, còn có thể sử dụng hàm MAC kết hợp với các hàm mã hóa E để

bảo đảm cả tính xác thực và tính bí mật của thông báo

2.2HMAC Design Objectives (Mục đích thiết kế HMAC)

-HMAC thường được thiết kế dựa trên NMAC (Nested MAC), sử dụng hàm giả ngẫu nhiên – PRF (pseudo random function ) để tạo hàm MAC với giới hạn an toàn chứng minh được

Trang 13

tag = hash(key1 || hash(key2 || message))

PRF ở đây có dạng Hash(key2||message) NMAC yêu cầu 2 khóa, một cho hash trong (inner) một cho hash ngoài (outer) Hai khóa độc lập với nhau HMAC dựa trên NMAC với sự khác biệt là hai khóa phụ thuộc tuyến tính, chỉ yêu cầu hàm PRF là an toàn [,không yêu cầu nó kháng va chạm đối với một số hàm hash

(Chứng minh mới về NMAC và HMAC: An toàn không cần kháng va chạm)

,nhưng nó cần chống được tấn công phương sai

-HMAC có thể được sử dụng kết hợp với bất kỳ băm mật mã lặp chức năng

HMAC cũng sử dụng một khóa bí mật để tính và xác minh của các giá trị xác thực thông điệp Các mục tiêu chính xây dựng là

 Sử dụng (không cần cải tiến ) những hàm băm có sẵn Cụ thể , có những hàm băm hoạt động tốt trong trong phần mềm ,và những mã có khả năng mở rộng

 Sử dụng và điều khiển các khóa theo một cách dẽ dàng

 Để có một bản phân tích mã hóa của sức mạnh cơ chế xác thực dựa trên sự giả định hợp lý về hàm băm thêm vào

-Hai tiêu chí đầu quan trọng cho một hàm HMAC có thể chấp nhận được

,HMAC xem hàm băm như là một hộp đen Điều này thì có hai lợi ích thứ nhất , việc sử dụng một hàm băm đã có thể được sử dụng như là một modul trong việc thực thi một HMAC Bằng cách này ,kích thước mã HMAC được gói lại

và sẵn sàng để sử dụng mà không cần hiểu chỉnh Thứ hai , nếu có bất kỳ sự mong muốn thay đổi một hàm băm trong việc thực thi một HMAC nào , chỉ cần thay thế hàm băm củ bằng một modul mới khi có một hàm băm nhanh hơn đươc mong muốn Quan trọng hơn , nếu tính an toàn của hàm băm được nhúng

Trang 14

Vào bị suy giảm ,thì tính an toàn của HMAC có thể được giữ lại bằng cách thay hàm băm củ bằng một hàm băm mới an toàn hơn ( ví dụ thay thế SHA bằng Whirlpool )

2.2.1 Thiết kế HMAC

-Ban đầu HMAC được thiết kế để sử dụng với SHA-1, trên thực tế có thể sử dụng

nó an toàn với các hàm hash an toàn khác như SHA-256 và SHA-512 HMAC sinh hai khóa từ một khóa mật duy nhất bằng cách XOR hai hằng số với nó

- Chú ý là khóa có kích thước bằng kích thước của khối sử dụng trong hàm hash (SHA-1 và SHA-256 khối nén 64-byte, SHA-512 khối nén 128-byte) Nếu khóa lớn hơn kích thước khối nén, thì khóa trước hết phải được hash, đầu ra của nó coi như là khóa mật Khóa mật được gán thêm các byte zero đảm bảo là độ dài của nó bằng độ dài khối nén Khóa được sao thành hai bản, bản thứ nhất được XOR với 0x36 tạo khóa ngoài (outer), bản thứ hai XOR với 0x5C tạo khóa trong (inner)

- Xâu gồm các byte 0x36 gọi là opad, xâu gồm các byte 0x5C là ipad Khóa phải được bổ sung thêm (padded) để có độ dài bằng độ dài của khối nén để có thể thực hiện hash có khóa (keyed hash) thay cho hash thông qua việc tạo trạng thái hash khởi tạo phụ thuộc khóa HMAC tương đương với việc lấy trạng thái khởi tạo hash một cách ngẫu nhiên trên khóa bí mật

Trang 15

Hình 4: Sơ đồ khối HMAC

2.2.2 HMAC Algorithm (Thuật toán HMAC)

-Mô tả hoạt đọng của HMAC

- Các ký hiệu:

H : là hàm băm nhúng (như MD5, SHA-1, )

IV : là vector khởi tạo đầu vào của hàm băm

M : là thông báo đầu vào của HMAC (bao gồm padding cụ thể trong hàm băm nhúng)

Yi : là khối thứ i của M, 0 <=i <=(L - 1)

L : là số khối trong M

b : là số bits trong một khối

n : là độ dài của mã băm được tạo ra bởi hàm băm nhúng

K : là khóa bí mật, độ dài >=n Nếu độ dài khó lớn b, khóa là đầu

Trang 16

vào của hàm băm để tạo một khóa n-bit

K + : là khóa K đã được bổ sung các số 0 vào bên trái để có độ dài là bit

b-ipad : = 00110110 (36 trong hệ hexa) được lặp lại b / 8 lần

opad : = 01011100 (5C trong hệ hexa) được lặp lại b / 8 lần

-HMAC được thể hiện như sau :

Hình 5 : Thuật toán HMAC

Trang 17

-Thuật toán HMAC được mô tả như sau:

1 Bổ sung các số 0 vào phần cuối bên trái của khóa K để tạo một dãy b- bit K+

2 Thực hiện phép XOR K+ với ipad để tạo khối b-bit Si

3 Nối thông báo M vào Si

4 Áp dụng hàm băm H vào dòng bit đã tạo ở bước 3

5 Thực hiện phép XOR K+ với opad để tạo khối b-bit So

6 Nối kết quả băm ở bước 4 vào So

7 Áp dụng hàm băm H vào dòng bit đã tạo ở bước 6 và có kết quả đầu

ra

-Chú ý rằng phép XOR với ipad cho kết quả chỉ một nửa bit chiều dài của K

.Tương tự ,phép XOR với opad cũng cho kết quả chiều dài nửa bit khóa K nhưng

là một bộ bit khác In effect, bằng cách cho Si và S0 đi qua hàm nén của thuật toán băm , chúng ta ẽ có hai khóa giả định ngẫu nhiên từ K

HMAC có hệ thực những thông điệp dài với cùng một khoảng thười gian với cùng một hàm băm HMAC them vào ba việc thực hiện hàm nén (compression function ) (cho SI ,S0, và khối trong hàm băm )

Một thực thi hiệu quả hơn được đưa ra trong ví dụ sau : Hai đại lượng được tính trước

Trong đó ,f(cv,block ) là hàm nén cho hàm băm , nhận một tham số là biến dây chuyền cho n bit và một tham số là một khoois b bit và cho ra một biến dây chuyền

Trang 18

n bit Những đại lượng này chỉ cần được tính lần đầu và mỗi lần khóa thay đổi Để tăng thêm tính hiệu quả ,những đại lượng được tính trước sẽ thay thế cho giá trị ban đầu (IV) để trong hàm băm Với sự thực thi này , chỉ một thời điểm them vào của hàm nén được thêm vào quá trình một cách bình thường được tạo boeir hàm băm Việc thực thi hiệu quả hơn này đặc biệt có giá trị nếu hầu hết các thông điệp ngắn được dùng cho MAC tính toán

2.2.3 Security of HMAC (Sự an toàn của HMAC )

-Tính an toàn của bất cứ hàm MAC đều dựa trên hàm băm thêm vào ,phụ thuộc vào sức mạnh mã hóa của hàm băm cơ sở The appeal của HMAC là người thiết kế cần chứng minh được mối quan hệ chính xác giữa sức mạnh của hàm băm thêm vào và sức mạnh cửa HMAC

-Tính an toàn của một MAC nhìn chung được diễn đạt dựa vào khả năng giả mạo thành công với thời gian sử dụng của người giả mạo và số lượng cặp thông điệp MAC được tạo ra với cùng một khóa Về bản chất , nó được chứng minh trong [BELLA96a] rằng với mức độ sự nỗ lưc cho trước ( về thời gian , các cặp thông điệp MAC ) trong thông điệp được tạo ra bởi người dùng chính đáng và cả người tấn công , thì khả năng có thể tấn công thành công tương đương với một trong hai cách tấn công vào hàm băm sau :

 Người tấn công có khả năng tính toán được một kết quả của hàm nén ngay

cả với một giá trị đầu vào IV không biết , hoặc ngẫu nhiên hoặc bí mật

 Người tấn công tìm được những sự đụng độ trong hàm băm ngay cả khi không giá trị đầu vào là bí mật và ngẫu nhiên

-Trong lần tấn công đầu tiên , chúng ta có thể xem hàm nén tương đương với hàm băm được sử dụng cho thông điệp một khối đơn n bit Trong lần tấn công này , giá trị đầu vào của hàm băm được thay thế bằng một giá trị n bit ngẫu nhiên bí mật Một lần tấn công vào hàm băm này yêu cầu tấn công Birthay, được giới thiệu ở phần tấn công thứ hai

Trong lần tán công thứ hai , kẻ tấn công cần tìm hai thông điệp M và M’ có cùng H(M)=H(M’) Được gọi là tấn công Brithday chúng ta đã biết sự phức tạp của nó

là 2n/2 cho giá trị băm chiều dài n (requires a level of effort of 2n/2 for a hash length

Trang 19

of n ) Vì vậy ,độ an toàn của MD5 bị nghi ngờ ,bởi vì độ phức tạp 264 có thể giải

mã với công nghệ ngày nay Điều này có nghĩa rằng một hàm băm 128 bit như MD5 không phù hợp với HMAC ?.Câu trả lời là phù hợp vì để tấn công MD5 , người tấn công có thể chọn một bộ thông điệp bất kỳ và cố gắng tìm ra sự đụng độ Bởi vì khi biết thuật toán băm và giá trị đầu vào thì người tấn công có thể sinh ra hàm băm cho mỗi thông điệp mà người tấn công tạo ra

Tuy nhiên khi tấn công HMAC ,người tấn công không nên tạo ra cặp thông báo điệp /mã off line vì không biết khóa K.Vì vậy, người tấn công phải quan sát một dãy thông điệp được sinh ra bởi HMAC sử dụng cùng một khóa và thực hiện việc tấn công trên thông điệp đã biết Với một mã băm 128 bit ,điều này cần phải quan sát 264 khối (272 bit ) được sinh ra với cùng một khóa Với một đường truyền 1Gbps ,một người càn phải quan sát một luồng thông điệp liên tục với cùng một khóa trong 150.000 năm để thành công Vì vậy ,có thể dụng MD5 thay cho SHA-1 như

là hàm băm được dùng cho HMAC

2.3 TÌM HIỂU VỀ THUẬT TOÁN HMAC-SHA1

2.3.1 Khái Niệm :

SHA1 và sử dụng như một HMAC, hoặc mã xác thực thông điệp băm dựa trên Quá trình HMAC trộn một khóa bí mật với các thông điệp dữ liệu, băm kết quả với hàm băm, trộn bằng giá trị hash với khóa bí mật một lần nữa, và sau đó áp dụng các hàm băm một lần thứ hai Băm đầu ra là 160 bit chiều dài

Một HMAC có thể được sử dụng để xác định xem một thông điệp được gửi qua một kênh không an toàn đã bị giả mạo, cung cấp mà người gửi và người nhận đều

có một khóa bí mật Người gửi tính giá trị băm cho các dữ liệu ban đầu và gửi cả các dữ liệu ban đầu và giá trị băm là một tin nhắn đơn Người nhận sẽ tính toán lại giá trị hash trên tin nhắn đã nhận và kiểm tra rằng các HMAC tính toán phù hợp với HMAC truyền

-Bất kỳ thay đổi các dữ liệu hoặc kết quả giá trị băm trong một không phù hợp, bởi

vì kiến thức của khóa bí mật là cần thiết để thay đổi các thông điệp và tái tạo các giá trị hash chính xác Vì vậy, nếu các giá trị băm ban đầu và tính toán phù hợp, tin nhắn được xác thực

SHA-1 (Secure Hash Algorithm, cũng gọi là SHS, Hash mật Standard) là một thuật toán hash mật mã công bố bởi Chính phủ Hoa Kỳ Nó tạo ra một giá trị băm 160-bit từ một chuỗi dài tùy ý

Ngày đăng: 08/11/2017, 06:43

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w