You are on page 1of 39

XÁC THỰC THÔNG ĐIỆP

Trần Quang Đức


ĐẶT VẤN ĐỀ
M

Kênh truyền

Alice Bob

M’ Thay đổi nội dung M

Eve
M’’ Bản tin M’’ giả danh Alice
Xác thực thông điệp
• Xác thực tính toàn vẹn: Bản tin không bị sửa đổi bao
hàm cả trường hợp Bob cố tình sửa đổi.

• Xác thực danh tính: Bao hàm (1) Trường hợp Alice phủ
nhận bản tin và (2) Trường hợp Bob tự tạo thông báo và
“vu khống” Alice tạo ra thông báo này.

• Xác thực thời điểm: Ngăn chặn tấn công phát lại.
Xác thực bằng mật mã khóa đối xứng?
kS kS

m m’
Mã hóa Giải mã

Người c c’ Người
gửi nhận
Kênh truyền

c c’
CH1: Người nhận có nhận ra
được m’ là thông điệp bị thay thế?
CH2: Mức độ an toàn xác thực Kẻ tấn
của sơ đồ này? công
Xác thực bằng mật mã khóa công khai?
kRA kUA

m m’
Mã hóa Giải mã

Người c c’ Người
gửi nhận
Kênh truyền

c c’
CH1: Người nhận có nhận ra
được m’ là thông điệp bị thay thế?
CH2: Mức độ an toàn xác thực Kẻ tấn
của sơ đồ này? công
MESSAGE AUTHENTICATION CODE
Trần Quang Đức
Xác thực thông điệp
• Xây dựng trên cơ sở hệ mật mã khóa đối xứng: (1) Hai
bên trao đổi một cách an toàn khóa mật k; (2) Sử dụng
các thuật toán mã hóa khối ở chế độ CBC-MAC.

• Bên gửi: Tính toán t = MAC (k, m), t có kích thước cố


định, không phụ thuộc vào kích thước của m. Bên gửi gửi
(m||t).

• Bên nhận: Tính t’ = MAC(k, m) và so sánh nếu t’ = t thì


xác thực thành công, ngược lại xác thực thất bại.
CBC-MAC

m[0] m[1] m[2] m[3]

IV
    CBC

k Mã k Mã k Mã k Mã
hóa hóa hóa hóa

t
CBC-MAC

m[0] m[1] m[2] m[3]

IV
    CBC

k1 Mã k1 Mã k1 Mã k1 Mã
hóa hóa hóa hóa

k = (k1,k2) k2 Mã
hóa

t
Độ an toàn của MAC
• Giả sử Lm là kích thước bản tin và Lt kích thước mã MAC.
▪ Nếu Lm ≤ Lt và Lm không đổi: Mã MAC an toàn.
▪ Nếu Lm thay đổi: |m| > |t| nên tồn tại m2 ≠ m1 sao cho MAC(m2) =
MAC (m1).

• Yêu cầu với giải thuật tạo MAC có đầu ra n bit:


▪ Nếu biết trước (m1, t1), xác suất tìm m2 sao cho MAC(m2) = t1
không lớn hơn đáng kể 2-n
▪ Xác suất tìm được cặp bản tin m1 và m2 sao cho t1 = t2 không lớn
hơn đáng kể 2-n
▪ Giả sử m’ là một dạng biến đổi của m, xác suất để t’ = t không lớn
hơn đáng kể 2-n
Tấn công phát lại
• Kẻ tấn công phát lại bản tin m đã được chứng thực trong
phiên truyền thông trước đó.

• Thiết kế MAC không chống được tấn công phát lại. Vì thế
cần bổ sung 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 như sử dụng giá
trị ngẫu nhiên hoặc nhãn thời gian.

MAC[(MAC(m, k1) || Random), k2]


Padding cho MAC
m[0] m[1] m[3] m[4] M[5]

  

F(k,) F(k,) F(k,) F(k,)

Xử lý thế nào nếu kích thước thông điệp


tag
không chia hết cho kích thước một khối? F(k1,)
Padding cho MAC
• Bổ sung để đảm bảo đủ số bit cần thiết.

• Yêu cầu: mi ≠ mj thì pad(mi) ≠ pad(mj)

• Chuẩn ISO khuyến nghị sử dụng chuỗi padding bắt đầu


bằng bit 1. Nếu kích thước thông điệp là bội số kích thước
của khối, luôn thêm 1 khối Padding.
MÃ HÓA CÓ XÁC THỰC
Trần Quang Đức
Khái niệm
• Một hệ mật mã có xác thực (E, D) là một hệ mật mã mà,
Hàm mã hóa E: k x m x n → c và Hàm giải mã D: k x c x
n → m ∪ {⊥} với n là một dấu hiệu sử dụng để xác thực.

• Yêu cầu: (1) Chống tấn công chọn trước bản rõ và (2)
Kiểm tra được tính toàn vẹn của bản mật (Xác suất kẻ
tấn công tạo ra được một bản mật có thể giải mã là rất
nhỏ).

• Giải pháp: Kết hợp mật mã và MAC.


Một số sơ đồ sử dụng mã MAC
k2 k1

m || m E D m’ C So
t sánh
t
C k2 t’

k1
a) Xác thực bằng MAC, bảo mật bằng mật mã khóa đối xứng (SSL)
Một số sơ đồ sử dụng mã MAC
k2 k2 k1

E || D C So
m
sánh
t t’
C

k1
b) Xác thực bằng MAC, bảo mật bằng mật mã khóa đối xứng (SSH)
Một số sơ đồ sử dụng mã MAC
k1
k2 k2

C So True
m E || D
sánh
t t’
C

k1
c) Xác thực bằng MAC, bảo mật bằng mật mã khóa đối xứng (IPSec)
Bài tập
• Nhận xét ưu/nhược điểm của sơ đồ (a), (b) và (c) (Xác
thực toàn vẹn bản rõ? Xác thực toàn vẹn bản mật? MAC
có thông tin về bản rõ?)
HÀM BĂM
Trần Quang Đức
Khái niệm
• Hàm băm H: thực hiện phép biển đổi với đầu vào là bản
tin có kích thước bất kỳ, đầu ra là giá trị digest h = H(M)
có kích thước n bit cố định (thường nhỏ hơn rất nhiều so
với kích thước bản tin đầu vào).

• Với hàm băm, chỉ thay đổi 1-bit đầu vào, làm thay đổi
hoàn toàn giá trị đầu ra.
Một hàm băm đơn giản
• Chia thông điệp thành  m1   m11 m12  m1n 
các khối có kích thước n- m  m m22  m2 n 
bit. m =  2  =  21
 ...       
   
• Thực hiện XOR tất cả các  ml   ml1 ml 2  mln 
khối để tạo thành mã
   
băm có kích thước n-bit.
   
• Hàm băm trên không đủ
an toàn để sử dụng trong
c1 c2 ... cn  =H(m)
bài toàn xác thực thông
điệp.
Yêu cầu đối với hàm băm
• Có thể áp dụng với thông điệp m với độ dài bất kỳ.

• Tạo ra giá trị băm h có độ dài cố định.

• H(m) dễ dàng tính được với bất kỳ m nào.

• Từ h rất khó tìm được m sao cho h = H(m): Tính một chiều.

• Biết trước m1 rất khó tìm được m2 sao cho H(m1) = H(m2).

• Rất khó tìm được cặp (m1,m2) sao cho H(m1)=H(m2).


Một số hàm băm phổ biến
• MD5: Kích thước digest 128-bit.

• SHA1: Kích thước digest 160-bit.

• SHA-2: 224/256/384/512 bit.

• SHA-3: 224/256/384/512 bit.


SHA-1
• Bước 1: Padding dữ liệu sao cho bản tin đầu vào có độ dài L và
L mod 512 = 448

• Bước 2: Biểu diễn độ dài của dữ liệu ban đầu dưới dạng 64-bit.
Thêm giá trị độ dài này vào khối dữ liệu. Coi khối dữ liệu là
một chuỗi các khối 512 bit: Y0, Y1, …, YK-1 hoặc là một chuỗi các
khối 32 bit : M0, M1, …,MN.

• Bước 3: Khởi tạo các giá trị hằng số A, B, C, D, E


▪ A = 0x67 45 23 01
▪ B = 0xEF CD AB 89
▪ C = 0x98 BA DC FE
▪ D = 0x10 32 54 76
▪ E = 0xC3 D2 E1 F0
SHA-1
• Bước 4: Thực hiện vòng
lặp xử lý các khối 512-bit
▪ Xử lý các khối 512-bit thứ q:
Thực hiện 4 vòng lặp. Mỗi
vòng lặp áp dụng hàm nén
với K là hằng số xác định
trước.
▪ Cộng modulo 232 mỗi khối
với giá trị CVq để có CVq+1

• Bước 5: Kết quả xử lý khối


512-bit cuối cùng là giá trị
băm của thông điệp
Hàm nén trong SHA-1
• Đầu vào:
▪ CV: Khối 160 bit
▪ Wt: Khối dữ liệu mở rộng 32 bit
▪ Kt: Hằng số

• Cộng modulo 232


• <<<5(30): Dịch trái 5(30) bit
• ˄: AND, ˅: OR, ¬: NOT
• F1 = (B˄C)˅(¬B˄D)
• F2 = BCD
• F3 = (B˄C)˅(B˄D)˅(C˄D)
• F4 = BCD
• Thực hiện vòng lặp 20 bước
Tấn công vét cạn
• h = H(m): kích thước n bit. Do n << Lm nên luôn tồn tại
m2 ≠ m1 sao cho H(m2) = H(m1). Nói cách khác, kẻ tấn
công có thể tìm được bản tin m2 có lợi để thay thế m1 đã
được xác thực.

• Sử dụng phương pháp vét cạn để tìm kiếm bản tin m2.
Cần tính tối thiểu bao nhiêu bản tin để chắc chắn thành
công?
Tấn công ngày sinh
• Bài toán 1: Ngày sinh của Nam là mùng 1 tháng 12. Cần
tối thiểu bao nhiêu người trong phòng để tìm được một
người có cùng ngày sinh mùng 1 tháng 12 với xác suất >
1/2.

• Bài toán 2: Giả sử một năm có d ngày. Cần tối thiểu bao
nhiêu người trong phòng để tìm được hai người có cùng
ngày sinh với xác suất > 1/2.
Tấn công ngày sinh

n p(n)
1 0,0%
5 2,7%
10 11,7%
20 41,1%
23 50,7%
30 70,6%
40 89,1%
50 97%
Tấn công ngày sinh
• Nếu h có kích thước n-bit, 𝑑 = 2𝑏 và 𝑑 = 2𝑏/2

• Cần thử tối thiểu 2𝑏/2 thông điệp để có được một thông
điệp có cùng mã băm với xác suất ~ 50%.

• Nếu mã băm có kích thước 64-bit, thì cần thử 232 biến
thể khác nhau.
Sử dụng mã băm
• Xác thực toàn vẹn bản tin: Chỉ phát hiện được lỗi ngẫu
nhiên trong quá trình truyền.

truyền
Kênh
m || m m’ H
So sánh
h
h’

H
Tấn công:
Bản tin
m → m’
toàn vẹn?
Tính lại h’ = H(m’)

Bên gửi Bên nhận


Hàm băm Merkle-Damgard

m[0] m[1] m[2] m[3] || PB

IV
(fixed) H(m)
h h h h
h0 h1 h2 h3 h4
HMAC
• Keyed-Hash MAC: Kết hợp MAC và hàm băm để tăng
cường an toàn cho hàm băm.

HMAC(K, m) = H((K’  opad))||H((K’  ipad) || m))


HMAC
• Keyed-Hash MAC: Kết hợp MAC và hàm băm để tăng
cường an toàn cho hàm băm.
k ⨁ ipad m[0] m[1] m[2] || PB

IV
(fixed)
h h h h
h0 h1 h2 h3 h4

tag
PB: Padding Block K ⨁ opad
h
h
IV
Sử dụng hàm băm để xác thực
ks

m || m E D m’ H So
h sánh
t
H ks h’

a) Xác thực thông điệp và bảo mật bằng mật mã khóa đối xứng
Một số sơ đồ sử dụng mã MAC

|| m m’ H So
m
D sánh
H E
kS
kS

b) Xác thực thông điệp, mã băm được bảo vệ bằng mật mã khóa đối xứng
Một số sơ đồ sử dụng mã MAC

ks

m || m m’ H So
sánh
h h’
H
ks
c) Xác thực thông điệp sử dụng HMAC
Bài tập
• Kết hợp sử dụng mật mã khóa công khai để tạo ra một số
sơ đồ mới.

You might also like