Bài giảng An toàn an ninh thông tin: Chương 3 Xác thực thông điệp cung cấp cho người học những kiến thức như: Các vấn đề xác thực thông điệp; Mã xác thực thông điệp (MAC); Hàm băm và hàm băm mật HMAC. Mời các bạn cùng tham khảo!
BÀI XÁC THỰC THÔNG ĐIỆP Bùi Trọng Tùng, Viện Công nghệ thông tin Truyền thông, Đại học Bách khoa Hà Nội 1 Nội dung • Các vấn đề xác thực thơng điệp • Mã xác thực thơng điệp (MAC) • Hàm băm hàm băm mật HMAC 2 ĐẶT VẤN ĐỀ 3 Đặt vấn đề M Kênh truyền Alice Bob M’ Mallory Thay đổi nội dung M thành M’ Hoặc, tin M’’ M’’ giả danh Alice 4 Xác thực thơng điệp • Bản tin phải xác minh: Nội dung tồn vẹn: tin khơng bị sửa đổi Bao hàm trường hợp Bob cố tình sửa đổi Nguồn gốc tin cậy: Bao hàm trường hợp Alice phủ nhận tin Bao hàm trường hợp Bob tự tạo thông báo “vu khống” Alice tạo thông báo Đúng thời điểm Các dạng công điển hình vào tính xác thực: Thay (Substitution), Giả danh (Masquerade), công phát lại (Replay attack), Phủ nhận (Repudiation) 5 MÃ XÁC THỰC THÔNG ĐIỆP (MAC) 6 Message Authentication Code • Hai bên trao đổi cách an tồn khóa mật k • Hàm MAC = (S, V) cặp thuật tốn • Sinh mã: t = S(k, m) Đầu ra: kích thước cố định, khơng phụ thuộc kích thước M • Xác minh: V(k, m, t) Nếu t = S(k, m) V = true Ngược lại V = false M Alice t S V K K Bob 7 MAC – Ví dụ Khách hàng chuyển khoản Chia sẻ khóa k Xác thực thơng tin CK: t = S(k,SoTK||money) V (k, m t) = True M V Ngân hàng M’ Kẻ công t’ = S(?,SoTK’||money) t t' V (k, m’, t’) = False Mã MAC cho phép phát thông tin bị sửa đổi Thay đổi số tài khoản nhận tiền 8 MAC – Ví dụ 2: Phần mềm Tripwire • Khi cài đặt, tính giá trị MAC file cần bảo vệ file file F F’ t = S(k,F1) t = S(k, F1) V(k, F’, t) = False • Khi máy tính khởi động, file kiểm tra mã MAC Cho phép phát file bị sửa đổi (ví dụ nhiễm virus) 9 An toàn MAC Thử thách Sinh khóa k Tấn cơng m1, ,mq Chọn m1, , mq Tính ti = S(k, mi) t1, ,tq m, t Chọn m sinh t cho (m,t) {(m1,t1), ,(mq,tq)} b = V(k, m, t) b = {true,false} • MAC an tồn với thuật tốn cơng hiệu xác suất P(b = true) ≤ ε kẻ công tạo giá trị t hợp lệ khơng có khóa k 10 10 An tồn MAC MAC cịn an tồn khơng trường hợp sau: (1) Kẻ cơng tìm m* cho S(?, m*) = t với t chọn trước (2) Kẻ cơng tìm m* cho S(?, m*) = S(?, m) với m chọn trước (3) Kẻ cơng tìm m m* cho S(?, m*) = S(?, m) (4) Giá trị t có kích thước 10 bit 11 11 Độ an toàn MAC • Giả sử m1 m2 hai tin có mã MAC giống nhau: S(k, m1) = S(k, m2) S(k, m1||W) = S(k, m2||W) với W • Kịch cơng: Kẻ cơng tính tốn tx = S(k, mx) với x = 1, …, N Tìm cặp tin (mi, mj) có ti = tj Nếu khơng tìm thấy thực lại bước Chọn tin W tính t = S(k, mi ||W) Thay mi || W mj || W có lợi cho kẻ cơng 12 12 Ví dụ cơng vào tính đụng độ (1) Kẻ cơng(Mr Tung) chọn tin có mã MAC giống nhau: m1: ‘I will pay 1’ m2: ‘I will pay 2’ Chọn W = ‘000$ to Mr.Tung’ m1 || W = ‘I will pay 1000$ to Mr.Tung’ m2 || W = ‘I will pay 2000$ to Mr.Tung’ (2) Đánh lừa người dùng gửi tin ‘I will pay 1000$ to Mr.Tung’ || S(k, ‘I will pay 1000$ to Mr.Tung’) cho ngân hàng (3) Thay ‘I will pay 2000$ to Mr.Tung’ || S(k, ‘I will pay 1000$ to Mr.Tung’) Ngân hàng chấp nhận 13 13 Xây dựng MAC: CBC-MAC m[0] m[1] k1 Mã hóa m[2] k1 Mã hóa k = (k1, k2) m[3] k1 Mã hóa k1 k2 rawCBC Mã hóa tag Mã hóa Tại sao? t 14 14 rawCBC-Tấn cơng chọn trước rõ m m tm rawCBC S(k,) m rawCBC S(k,) rawCBC S(k,) t t Vấn đề: t S(k, m || tm ) = S(k, S(k,m)(tm) ) = S(k, t(tm) ) = S(k,m) = t 15 An tồn CBC-MAC • Khóa dùng nhiều lần giảm độ an tồn • Nếu gọi: q: số tin tính MAC với khóa khơng đổi |X|: Số lượng giá trị t • Xác suất cơng thành cơng ≤ 2*q2 / |X| • Để xác suất cơng khơng đáng kể (≤ 2-80) sau lần tính MAC phải đổi khóa? 16 Tấn cơng phát lại (Replay attack) • Kẻ cơng phát lại tin M chứng thực phiên truyền thông trước • Thiết kế MAC khơng chống cơng phát lại cần thêm yếu tố chống công phát lại giao thức truyền thông sử dụng MAC • Một số kỹ thuật chống cơng phát lại: Giá trị dùng lần(nonce): S(k, m || nonce) Tem thời gian: S(k, m || timestamp) 17 17 Tấn công phát lại Khách hàng chuyển khoản K = KeyGen(l) Xác thực thông tin CK: t = S(k, SoTK||money) Publish V Ngân hàng Kẻ công t = S(k, SoTK||money) Sao chép và phát lại yêu cầu chuyển khoản 18 18 Xây dựng MAC: CBC-MAC Kích thước thơng điệp khơng chia hết cho kích thước khối? m[0] m[1] k1 k1 Mã hóa Mã hóa m[3] padding m[2] k1 Mã hóa k1 k = (k1, k2) k2 Mã hóa tag Mã hóa t 19 19 Padding cho CBC-MAC • Ý tưởng 1: Thêm vào bit m[0] m[1] m[0] m[1] 00…0 • Khơng an tồn Ví dụ: $100 $10 00 000 Same Tag 10 20 Padding cho CBC-MAC • Yêu cầu: Mi ≠ Mj pad(Mi) ≠ pad(Mj) • Chuẩn ISO/IEC 9797-1: Sử dụng chuỗi padding bắt đầu bit Nếu kích thước thơng điệp bội số kích thước khối, ln thêm khối padding m[0] m[0] m[1] m[1] m[0] m[1] 1000 m[0] m[1] 1000000000 21 Tấn công CCA – Nhắc lại Thử thách Sinh khóa k mi = D(k, ci) cj = E(k, mj) Chọn b ∈ {0, 1} c* = E(k, mb) Tấn công ci, mj m i , cj m0, m1 Sinh m0, m1 c* c’i, m’j m’i = D(k, c’i) c’j = E(k, m’j) Sinh ci, mj m’i, c’j Sinh c’i, m’j (c’i ≠ c*) Đốn b’ ∈ {0, 1} • Hệ mật chống lại công CCA (độ an tồn IND-CCA) với thuật tốn cơng hiệu P(b’ = b) ≤ ½ + ε 22 11 22 Mật mã có xác thực • Các sơ đồ mật mã xem xét không chống lại cơng CCA(chosen-cipher attack) • Cách thức chung: kẻ công sửa mã c* thành c’i yêu cầu giải mã • Giải pháp: Mật mã có xác thực (E, D) Từ chối giải mã mã không hợp lệ Hàm mã hóa E: K x M x N C Hàm giải mã D: K x C x N M ∪ {⊥} • Trong N dấu hiệu sử dụng để xác thực • Giải pháp: Kết hợp mật mã mã MAC • Khóa mã hóa khóa xác thực phải khác 23 23 Một số sơ đồ sử dụng mã MAC k1 k2 m || m E t t S D m ’ k2 t’ S So sánh V(k1, m’,t’) k1 a) Xác thực MAC, bảo mật mật mã khóa đối xứng(SSL) K2 K2 E M S D || t t’ K1 S So sánh K1 b) Xác thực MAC, bảo mật mật mã khóa đối xứng (SSH) 24 12 24 Một số sơ đồ sử dụng mã MAC(tiếp) K1 K2 M E K2 S || t So sánh t’ True D M S K1 c) Xác thực MAC, bảo mật mật mã khóa đối xứng(IPSec) • Một số chuẩn: GCM: Mã hóa chế độ CTR sau tính CW-MAC CCM: Tính CBC-MAC sau mã hóa chế độ CTR (802.11i) EAX: Mã hóa chế độ CTR sau tính CMAC 25 25 Nhận xét Sơ đồ a • Xác thực tồn vẹn rõ • Khơng xác thực tồn vẹn mật(khơng phát cơng thay mật) • Khơng có thơng tin rõ từ MAC • Chỉ đảm bảo an toàn CCA mã chế độ rand-CBC rand-CTR • • • • Sơ đồ b Xác thực tồn vẹn rõ Khơng xác thực tồn vẹn khơng phát mật bị thay thế) MAC chứa thơng tin rõ Có thể giảm an tồn mã mật • • • • Sơ đồ c Xác thực toàn vẹn rõ Xác thực tồn vẹn mật(có thể phát mật bị thay thế) MAC không chứa thông tin rõ Luôn đảm bảo an toàn CCA 13 26 3.HÀM BĂM 27 27 Khái niệm • Hàm băm H: thực phép biến đổi: Đầu vào: tin có kích thước Đầu ra: giá trị digest h = H(m)có kích thước n bit cố định (thường nhỏ nhiều so với kích thước tin đầu vào) • Chỉ thay đổi bit đầu vào, làm thay đổi hồn tồn giá trị đầu • Ví dụ: Đầu vào: “The quick brown fox jumps over the lazy dog” Mã băm: 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12 Đầu vào: “The quick brown fox jumps over the lazy cog” Đầu ra: de9f2c7fd25e1b3afad3e85a0bd17d9b100db4b3 28 14 28 Một hàm băm đơn giản m1 m11 m12 khối có kích thước n- m m2 m21 m22 bit Padding cần ml ml1 ml • Thực XOR tất khối mã băm có kích thước n bit • Tất nhiên, hàm băm c1 c2 khơng đủ an tồn để sử dụng tốn xác thực thơng điệp • Chia thơng điệp thành m1n m2 n mln cn =H(m) 29 29 Yêu cầu hàm băm Có thể áp dụng với thơng điệp m với độ dài Tạo giá trị băm h có độ dài cố định H(m) dễ dàng tính với m Từ h khó tìm m cho h = H(m): tính chiều Biết trước m1 khó tìm m2 cho H(m1) = H(m2) tính chống đụng độ yếu Rất khó tìm cặp (m1, m2) cho H(m1)=H(m2) tính chống đụng độ mạnh 30 15 30 Một số hàm băm phổ biến • MD5 Kích thước digest: 128 bit Cơng bố thuật tốn cơng đụng độ (collision attack) vào 1995 Năm 2005 cơng thành cơng • SHA-1 Kích thước digest: 160 bit Cơng bố cơng thành cơng vào năm 2015 Hết hạn vào năm 2030 • SHA-2: 224/256/384/512 bit • SHA-3: 224/256/384/512 bit 31 31 MD5 • Bước 1: Padding liệu cho tin đầu vào có độ dài L cho L mod 512 = 448 • Bước 2: Biểu diễn độ dài liệu ban đầu dạng 64 bit Thêm giá trị độ dài vào khối liệu • Coi khối liệu chuỗi khối 512 bit: Y0, Y1, …, YK-1 • Hoặc chuỗi khối 32 bit : m0, m1, …,mN • Bước 3: Khởi tạo giá trị số A, B, C, D A = 0x67 45 23 01 B = 0xEF CD AB 89 C = 0x98 BA DC FE D = 0x10 32 54 76 16 32 MD5 • Bước 4: Thực vịng lặp xử lý khối 512 bit Xử lý khối liệu 512 bit thứ q: thực vòng lặp Mỗi vòng lặp áp dụng hàm nén với T[1 64] mảng số xác định trước Cộng modulo 232 khối với giá trị CVq để có CVq+1 • Bước 5: Kết xử lý khối 512 bit cuối giá trị băm thông điệp 33 Hàm nén MD5 • Đầu vào: • CV: Khối 128 bit Mi: khối liệu 32-bit Ti: Hằng số Cộng modulo 232 •