1. GIẢNG VIÊN PHỤ TRÁCH: TS. HOÀNG ĐỨC THỌ
HỌC VIÊN THỰC HIỆN: NGUYỄN THỊ HỒNG LÊ
HOÀNG VĂN LONG
TRẦN QUỐC HƯNG
NGUYỄN VIỆT NHẬT
2. Nội dung chính
Tổng quan mã xác thực thông điệp.
Mã xác thực thông điệp dựa trên hệ mật (CMAC).
Mã xác thực thông điệp dựa trên hàm băm (HMAC).
Cài đặt và thử nghiệm.
4. Mã xác thực thông điệp
Mã xác thực thông điệp (Message Authentication Code - MAC): là khối dữ liệu có kích thước nhỏ
cố định được tạo từ một thông điệp và một khoá bí mật. Chỉ có người gửi và người nhận biết. Độ
dài thông điệp có thể tùy ý còn độ dài của MAC là cố định (128 bit)
Mã xác thực thông điệp (MAC) có thể coi là một dạng checksum của mã hóa, được tính theo
công thức
MAC = C(M, K), trong đó:
1.M là thông điệp cần tính MAC
2.K là khóa bí mật được chia sẻ giữa người gởi và người nhận
3.C là hàm tính MAC
Vì MAC có khóa K bít mật giữa người gửi và người nhận nên chỉ có người gửi và người nhận mới
có thể tính được giá trị MAC tương ứng.
6. Ý nghĩa của Mã xác thực thông điệp
Xác nhận nguồn gốc của dữ liệu
Là cơ sở để kiểm tra chứng minh dữ liệu chưa bị sửa đổi hoặc giả mạo.
Là cơ chế quan trọng để duy trì tính toàn vẹn và không thể từ chối dữ liệu
7. Ứng dụng mã xác thực thông điệp
- Dùng để xác thực giữa các bên trong kênh liên lạc.
- Ứng dụng trong các giao thức SSL, TSL, IPsec.
- Được sử dụng rộng rãi và phổ biến trong nhiều ứng dụng yêu cầu bảo mật cao.
10. Ưu – Nhược điểm của Mã xác thực thông
điệp
Ưu điểm của MAC:
• MAC chỉ hỗ trợ xác thực, không hỗ trợ bảo mậtcó lợi trong nhiều trường hợp (các thông
báo công cộng,…)
• Có kích thước nhỏ, thời gian tạo ra nhanh hơn so với mã hóa toàn bộ thông điệp.
• Dễ dàng triển khai.
• Chú ý: MAC không phải là chữ ký điện tử
Nhược điểm của MAC:
• MAC mặc định không chống được tấn công phát lại.
• Phụ thuộc vào độ tin cậy của khóa bí mật, quản lý khóa bí mật.
11. Các hình thức tấn công vào MAC
Cryptanalytic Attacks: Đây là một phương pháp phân tích mật mã thống kê. Tấn
công này sử dụng sự khác biệt giữa các khối thông điệp để xác định các giá trị
của khóa, khai thác vài đặc tính của thuật toán MAC hoặc hàm hash
Khai thác vài đặc tính của thuận toán MACs hoặc hàm hash
◦ Tốt hơn vét cạn
◦ Có nhiều biến thể trong cấu trúc của MAC hơn hàm hash nên tấn công MAC
khó khăn hơn hàm hash.
11
12. Các hình thức tấn công vào MAC
Tấn công phát lại (Replay attack)
Kẻ tấn công phát lại bản tin M đã được chứng thực trong phiên trước đó.
Thiết kế MAC mặc định không chống được tấn công phát lại cần thêm các
yếu tố chống tấn công phát lại trong các giao thức truyền thông sử dụng MAC
Một số kỹ thuật chống tấn công phát lại:
◦ Giá trị ngẫu nhiên thêm vào thông điệp/OTP/session ID/
◦ Tem thời gian/thiết lập thời gian cho thông điệp.
12
14. Mã xác thực thông điệp dựa trên hệ mật
(CMAC)
Cipher-based Message Authentication Code (CMAC) là một thuật toán mã hóa
được sử dụng để tạo ra một mã xác thực thông điệp trên cơ sở khối mã hóa đối
xứng, như AES. CMAC là một phiên bản của MAC (Message Authentication
Code) được thiết kế để cung cấp tính năng xác thực và chống lại các cuộc tấn
công giả mạo dữ liệu.
CMAC được tạo ra bằng cách chia dữ liệu thành nhiều khối, từ khóa bí mật K
tạo ra 2 khóa con K1 và K2. Có 2 trường hợp của CMAC tương ứng với việc phân
chia các khối.
15. Mã xác thực thông điệp dựa trên hệ mật
(CMAC)
15
TH1-Thông điệp là bội số chẵn các khối TH2-Khối cuối cùng có kích thước nhỏ, thêm đệm
16. Bảo mật CMAC
Cách thức tấn công:
Lựa chọn ngẫu nhiên 1 chuỗi bit có cùng độ dài với Tlen, và sẽ có xác suất để kẻ tấn
công có thể đoán được MAC Tag.
Giải pháp:
Lựa chọn độ dài CMAC phù hợp (khuyến cáo là 64 bits):
- Ngắn quá thì kẻ tấn công dễ đoán.
- Dài quá thì ảnh hướng đến hiệu suất
Giới hạn số lần xác minh không thành công.
17. Mã xác thực thông điệp dựa trên hàm băm
(HMAC)
HMAC (Hash-based Message Authentication Code) là một thuật toán mã
hóa xác thực thông điệp HMAC kết hợp giữa một khóa bí mật và một hàm
băm để tạo ra một mã xác thực. Mã xác thực này được gửi cùng với thông
điệp qua kênh truyền và được sử dụng để xác thực thông điệp tại phía
đích.
HMAC được sử dụng để xác thực tính toàn vẹn và nguồn gốc của một
thông điệp được truyền qua một kênh bất đối xứng.
17
18. Mã xác thực thông điệp dựa trên hàm
băm (HMAC)
Đặc điểm
Dùng hàm băm nguyên mẫu (không chỉnh sửa)
Cho phép thay thế dễ dàng hàm băm được nhúng vào trong trường hợp
các hàm băm nhanh hơn hoặc nhiều bảo mật được tìm ra hoặc yêu cầu.
Duy trì hiệu năng ban đầu của hàm băm mà không mắc phải sự suy giảm
nghiêm trọng
Dùng và quản lý các khóa một cách dễ dàng.
Có một sự phân tích mật mã hiểu được về sức mạnh của sự chứng thực
19. Quá trình thực hiện
Khóa bí mật được sử dụng để tạo ra HMAC được chia
thành hai khóa con.
Hàm băm được áp dụng cho thông điệp, kết quả của
hàm băm được gọi là giá trị trung gian.
Một khóa con được sử dụng để tạo ra một chuỗi giá trị
bí mật.
Giá trị trung gian được kết hợp với chuỗi giá trị bí mật
sử dụng một phép toán XOR.
Khóa con còn lại được sử dụng để tạo ra một chuỗi giá
trị xác thực cuối cùng.
19
Mã xác thực thông điệp dựa trên hàm
băm (HMAC)
20. Mã xác thực thông điệp dựa trên hàm băm
(HMAC)
Bảo mật của HMAC
Dựa trên bảo mật của hàm băm
Các hình thức tấn công HMAC:
◦ Tấn công brute force trên khóa được dùng
◦ Tấn công ngày sinh nhật
Hàm băm được chọn sử dụng dựa trên ràng buộc về tốc độ và bảo
mật
20
Editor's Notes
Kỹ thuật này giả sử rằng 2 phía tham gia truyền thông là A và B chia sẻ một khoá bí mật K. Khi A có một thông điệp gửi đến B, A sẽ tính toán MAC như là một hàm của thông điệp và khoá: MAC=C(K, M), với
M: thông điệp đầu vào có kích thước biến đổi
C: hàm MAC
K: khoá bí mật chia sẻ giữa người gởi và người nhận
MAC: mã chứng thực thông điệp có chiều dài cố định
Thông điệp cộng với MAC được truyền tới người nhận.
Người nhận thực hiện các tính toán tương tự trên các thông điêp đã nhận sử dụng cùng một khóa bí mật, để tạo ra một MAC mới.
MAC vừa tạo sẽ được so với MAC nhận. Giả sử chỉ người nhận và người gửi biết khóa bí mật:
Nếu MAC nhận phù hợp với MAC vừa tính thì thông điệp không bị thay đổi trong quá trình truyền và chắc chắn được gởi tới từ người gởi đã biết.
Nếu MAC nhận khác với MAC vừa tính thì thông điệp đã bị thay đổi hoặc bị giả mạo và được gởi từ attacker.
tấn công trên MAC khó hơn trên hàm băm bởi vì đòi cần cần phải biết cặp M-MAC(M)
Để đảm bảo toàn vẹn thông điệp và xác nhận nguồn gốc thông điệp, chúng ta cần thay MDC thành MAC
MAC có thể được coi là một dạng checksum của mã hóa được tính theo công thức
MAC=C(M,K)
trong đó:
M là thông điệp cần tính MAC
K là khóa bí mật được chia sẽ giữa người gửi và người nhận
C là hàm tính MAC
Chỉ có người gửi và người nhận (có khóa K) mới có thể tính được MAC tương ứng
Để đảm bảo toàn vẹn thông điệp và xác nhận nguồn gốc thông điệp, chúng ta cần thay MDC thành MAC
MAC có thể được coi là một dạng checksum của mã hóa được tính theo công thức
MAC=C(M,K)
trong đó:
M là thông điệp cần tính MAC
K là khóa bí mật được chia sẽ giữa người gửi và người nhận
C là hàm tính MAC
Chỉ có người gửi và người nhận (có khóa K) mới có thể tính được MAC tương ứng
Các bước thực hiện
Thông điệp được chia thành N blocks, n-bit
Khóa bí mật là khóa b-bit được đệm thêm bên trái các bit 0 (trước khi dệm, khóa bí mật dài hơn n-bit, n là kích cở của HMAC)
Kết quả của bước 2 được exclusive-or với một hằng số được gọi là ipad (input pad) để tạo ra block có b-bit. Giá trị của ipad là b/8 lặp đi lặp lại một cách tuần tự 00110110
Block kết quả được suy gắn với N-block thông điệp (thành N+1 block)
Kết quả bước 4 được băm để tạo ra b-bit cốt. Chúng ta gọi HMAC bán thành phẩm
HMAC trung gian được left pad với các bit 0 để tạo ra khối b-bit
Bước 2 và 3 được lặp lại bởi hằng opad (output pad). Giá trị của opad là b/8 được lặp lại tuần tự 01011100 (5C trong hệ 16)
Kết quả bước 7 được gắn với khối ở bước 6
Kết quả bước 8 được băm với cùng thuật toán băm để tạo ra n-bit HMAC