Tải bản đầy đủ (.docx) (23 trang)

Tìm Hiểu Về Thuật Toán HMACSHA1 Đề tài nghiên cứu khoa học

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 (386.75 KB, 23 trang )

Tìm hiểu thuật toán HMAC-SHA1
HỌC VIỆN KỸ THUẬT MẬT MÃ
KHOA AN TOÀN THÔNG TIN

MẬT MÃ NÂNG CAO

AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 1


Tìm hiểu thuật toán HMAC-SHA1

ĐỀ TÀI :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.

Tìm Hiểu Về Thuật Toán
HMAC-SHA1
Hà nội ngày 17,tháng 3,năm 2015
Nhóm thực hiện

AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 2

Hà Nội, 17-3-2015



Giảng viên hướng dẫn:
Phạm Quốc Hoàng
Nguyễn Văn Nghị
Nhóm sinh viên:
Kiều Văn Tiến
Nguyễn Quốc Trung
Lưu Đình Nam
Lớp :AT8A


Tìm hiểu thuật toán HMAC-SHA1
MỤC LỤC

AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 3


Tìm hiểu thuật toán HMAC-SHA1

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

AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 4



Tìm hiểu thuật toán HMAC-SHA1
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 .

AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 5


Tìm hiểu thuật toán HMAC-SHA1
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.
Tính chất của hàm băm:
+ Tính chất 1: Hàm băm H là không va chạm yếu, nếu khi cho trước
một bức điện x, không thể tiến hành về mặt tính toán để tìm một bức điện x
# x’ sao cho H(x) = H(x’).
+ Tính chất 2: Hàm băm H là không va chạm mạng nếu không có khả
năng tính toán để tìm ra bức điện x và x’ sao cho x# x’ và H(x) = H(x’).
+ Tính chất 3: Hàm băm H là hàm 1 chiều nếu khi cho trước một bản
tóm lược thông báo z, không thể thực hiện về mặt tính toán để tìm bức điện
x sao cho H(x)= z

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

Nguyên lý Giải thuật SHA-1
Bước 1: nhồi thêm dữ liệu
1.1.2

AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 6


Tìm hiểu thuật toán HMAC-SHA1


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:


A = 01 23 45 67



B = 89 AB CD EF



C = FE DC BA 98



D = 76 54 32 10



E = C3 D2 E1 F0

Các giá trị này tương đương với các từ 32bit sau:


AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 7


Tìm hiểu thuật toán HMAC-SHA1


A = 01 23 45 67



B = 89 AB CD EF



C = FE DC BA 98



D = 76 54 32 10



E = C3 D2 E1 F0

Bước 4: xử lý các khối dữ liệu 512bit


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,
f4



Mỗi vòng có đầu vào gồm khối 512bit hiện thời và một bộ đệm 160bit
ABCDE. Các thao tác sẽ cập nhật giá trị bộ đệm



Mỗi bước sử dụng một hằng số K t (0 ≤ t ≤ 79)
o Kt = 5A827999 (0 ≤ t ≤ 19)
o Kt = 6ED9EBA1 (20 ≤ t ≤ 39)
o Kt = 8F1BBCDC (40 ≤ t ≤ 59)
o Kt = CA62C1D6 (60 ≤ t ≤ 79)



Đầu ra của 4 vòng (bước 80) được cộng với đầu ra của bước CVq để tạo ra
CVq+1

AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 8


Tìm hiểu thuật toán HMAC-SHA1


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

o

MD = CVl


= SUM 32 (CVq , ABCDEq )

Với

AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 9



Tìm hiểu thuật toán HMAC-SHA1
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:
A <= E + f(t, B, C, D) + S5 (A) + WT + kt

B <= A
C <= S30(B)
D <= C
E <= D
Trong đó :
AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 10


Tìm hiểu thuật toán HMAC-SHA1
A,B,C,D,E = các từ trong bộ đệm
t = số thứ tự của bước
F(t,B,C,D) = làm logic tại bước t
Sk = dịch vòng trái k bits
Wt = từ thứ t của khối dữ liệu
Kt = hằng số
+ = phép cộng modulo 232
Các hàm f

Hình3 : Các hàm f
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:


AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 11


Tìm hiểu thuật toán HMAC-SHA1
-

-

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 (x i,
Hk(xi)), không thể tính toán để tìm một cặp text-MAC bất kỳ (x, H k(x))
cho một đầu vào mới x # x i (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 sử dụng hàm hash một chiều có khóa mật và đưa nó thành thuật toán mã
xác thực thông báo (Mã xác thực thông báo sử dụng hàm một chiều)
-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.

AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 12


Tìm hiểu thuật toán HMAC-SHA1
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

và miễn phí



Cho phép dẽ dàng thay đổi những hàm băm thêm vào nếu có những hàm băm
nhanh hơn hoặc bảo mật hơn được tìm ra được yêu cầu



Để duy trì hiệu suất ban đầu của hàm băm mà không bị một sự suy thoái đáng
kể



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

AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ

Page 13


Tìm hiểu thuật toán HMAC-SHA1
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

AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 14



Tìm hiểu thuật toán HMAC-SHA1

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

AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 15


Tìm hiểu thuật toán HMAC-SHA1
vào của hàm băm để tạo một khóa n-bit.
K+
bit.

: là khóa K đã được bổ sung các số 0 vào bên trái để có độ dài là 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

AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 16


Tìm hiểu thuật toán HMAC-SHA1
-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 bbit 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

AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 17


Tìm hiểu thuật toán HMAC-SHA1
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
AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 18


Tìm hiểu thuật toán HMAC-SHA1
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 :
-HMAC-SHA1 là một loại thuật toán băm có khóa mà được xây dựng từ hàm bă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.
AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 19


Tìm hiểu thuật toán HMAC-SHA1
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 160bit từ một chuỗi dài tùy ý.

HMAC-SHA1 chấp nhận các phím có kích thước bất kỳ, và tạo ra chuỗi hash là
160 bit chiều dài.
2.3.2 Mô tả hoạt động của HMAC-SHA1
- 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

: là khối thứ i của M, 0 <=i <=(L - 1) .
: 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
vào của hàm băm để tạo một khóa n-bit.



K+
bit.

: là khóa K đã được bổ sung các số 0 vào bên trái để có độ dài là 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-SHA1 được thể hiện như sau :


HMAC-SHA1 (K,M) =H(K+ xor opad )|| H[ K+ xor ipad ) ||M ]]

AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 20


Tìm hiểu thuật toán HMAC-SHA1

Hình 6 : Thuật toán HMAC-SHA1
-Thuật toán HMAC –SHA1đượ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 bbit 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.

AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 21


Tìm hiểu thuật toán HMAC-SHA1
CHƯƠNG 3 : DEMO ĐÁNH GIÁ –KẾT LUẬN

3.1 Demo
3.2 Kết luận
Thuật toán xác thực (HMAC) được sử dụng nhiều trong việc cung cấp tính toàn
vẹn dữ liệu và các chức năng kiểm tra xác thực dữ liệu dùng trong các giao thức
bảo mật như IPsec, TLS/SSL, và các tiêu chuẩn chữ ký số như FIPS 186-3.
CENTIC cung cấp các IP core thực hiện thuật toán băm.
Các thuật toán băm thường được sử dụng trên HMAC là : SHA-1 & MD5, SHA224, SHA-256, SHA-384, SHA-512, MD5… Trong các thuật toán băm kể trên thì
MD5 được sử dụng từ khá lâu và cũng khá rộng rãi. Thuật toán băm SHA1 thường
được sử dụng như hàm một chiều với đầu vào là một file hoặc bản tin có chiều dài
bất kỳ và trả về ở đầu ra là giá trị băm có kích thước cố định. Giá trị băm là duy
nhất và không thể dùng nó để tính ngược được giá trị vào ban đầu, bất kỳ sự thay
đổi nào của bản tin đầu vào dù là 1 bit cũng sẽ làm thay đổi giá trị băm đầu ra.
Ngoài ra HMAC-SHA1 được ứng dụng vào các IP core để xác thực hoạt động với
tốc độ nhanh lên đến 4Gbps, dễ dàng sử dụng cũng như tiếu tốn ít tài nguyên và
năng lượng.
Với thời lượng và kiến thức còn hạn chế nên đề tài nghiên cứu của chúng em chắc
chắn sẽ không tránh khỏi thiếu sót ,rất mong nhận được sự đóng góp ý kiến của các
thầy cô các bạn để nhóm được hoàn thiện thêm .

AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 22


Tìm hiểu thuật toán HMAC-SHA1
TÀI LIỆU THAM KHẢO
-Để thực hiện bài báo cáo này, nhóm có tham khảo một số tài liệu sau:
A, Tài liệu Tiếng Việt
[1] TS.Dương Anh Đức – Ths.Trần Minh Triết , Mã Hóa và ứng dụng ,Khoa công
nghệ thong tin,Trường Đại Học Khoa Học Tự Nhiên,Đại Học Quốc Gia Thành Phố
Hồ Chí Minh,2005

[2]Phan Đình Diệu ,Lý thuyết mật mã và an toàn thong tin ,Đại học Quốc Gia Hà
Nội,1999
B, Tài liệu Internet :
[1] />[2] />[3] />
AT8A-HỌC VIỆN KỸ THUẬT MẬT MÃ
Page 23



×