Bài giảng An toàn an ninh thông tin: Chương 2 Các hệ mật mã cung cấp cho người học những kiến thức như: Mật mã (cipher) là gì?Nguyên tắc chung của các hệ mật mã; Hệ mật mã khóa đối xứng; Hệ mật mã khóa bất đối xứng. Mời các bạn cùng tham khảo!
BÀI CÁC HỆ MẬT MÃ 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 • Mật mã (cipher) gì? • Ngun tắc chung hệ mật mã • Hệ mật mã khóa đối xứng • Hệ mật mã khóa bất đối xứng 2 MẬT MÃ LÀ GÌ? 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 3 1.1 Khái niệm mật mã • Mã hóa (code): biến đổi cách thức biểu diễn thơng tin • Mật mã (cipher): mã hóa để che giấu, giữ mật thơng tin • Mật mã học (cryptography): ngành khoa học nghiên cứu phương pháp toán học để mã hóa giữ mật thơng tin • Thám mã (cryptoanalysis): nghiên cứu phương pháp toán học để phá vỡ hệ mật mã • Là cơng cụ hiệu giải tốn AT-ANTT Nhưng khơng phải cơng cụ vạn • Trong học phần này, đề cập đến khái niệm cách thức sử dụng phương pháp mật mã 4 Truyền tin bí mật Google Mail • Bước 1: Trao đổi khóa • Bước 2: Mã hóa liệu 5 Lưu trữ thông tin mật Alice Alice Thiết bị lưu trữ Alice “hơm nay” truyền tin bí mật cho Alice “ngày mai” 6 Xây dựng mơ hình (mật mã khóa đối xứng) • Alice Bob chia sẻ thơng tin bí mật k gọi khóa • Alice cần gửi cho Bob thông điệp m (bản rõ-plain text) Nội dung thơng điệp cần giữ bí mật trước quan sát Eve (kẻ công, thám mã) Mã hóa: c = E(k, m) c: mã (cipher text) • Alice gửi mã lên kênh truyền Bob Eve thu thơng điệp Chỉ có Bob giải mã để thu rõ Giải mã: m = D(k, c) • Mật mã khóa đối xứng: dùng khóa k hai q trình mã hóa giải mã Bob Alice Eve 7 Ứng dụng mật mã • Giữ bí mật cho thơng tin, • …và khơng vậy… • Chữ ký số(Digital Signature) • Liên lạc ẩn danh (Anonymous Communication) • Tiền ẩn danh (Anonymous digital cash) • Bầu cử điện tử (E-voting) 8 Một ví dụ - Mật mã Caesar • Julius Caesar đưa vào kỷ thứ trước CN, sử dụng quan • Ý tưởng: thay ký tự (bản rõ) bảng chữ ký tự (bản mật) đứng sau (khóa) vị trí Sử dụng bảng chữ vịng A D, B E, C F, , X A, Y B, Z C • Mơ hình hóa tốn học(Mã dịch vịng) Khóa ≤ k ≤ 26 Mã hóa: c = (m + k) mod 26 Giải mã: m = (c − k) mod 26 • Dễ dàng bị phá K thay đổi Gaius Julius Caesar giá trị khác 9 Lịch sử phát triển mật mã học • Năm 300 TCN, Euclid phát số ngun tố, thuật tốn tìm UCLN số • Mật mã Hy Lạp • Năm 1640 đời định lý Fermat nhỏ: =1 ∀ ố ê số nguyên tố ố, ≤ < 10 10 Lịch sử phát triển mật mã học • Năm 1798, Gauss tiên đốn quan trọng việc phân tích hợp số thành thừa số nguyên tố • Năm 1874, William Stanley Jevons (Anh) đưa lời thách thức phân tích hợp số 8616460799 Năm 1903 Derrick Lehmer (Mỹ) có đáp án 11 11 Lịch sử phát triển mật mã học • Năm 1917, Vernam cipher đưa ý tưởng mật mã one-time-pad sử dụng phép XOR chưa ý • Chiến tranh TG lần 1: sử dụng biện pháp can nhiễu sóng radio trao đổi thơng tin • Chiến tranh giới lần 2: máy Enigma quân phát xít sử dụng Bị phá mã lực lượng đồng minh 12 12 Lịch sử phát triển mật mã học • Năm 1945, Claude Shannon xuất sách • • • • “Communication Theory of Secrecy Systems” Năm 1949, Claude Shannon công bố lý thuyết Shannon mật mã hoàn hảo Năm 1976 mật mã DES đời Tháng 11/1976 Diffie Hellman công bố báo “New Directions in Cryptography” đặt móng cho hệ mật mã khóa bất đối xứng Năm 1977, Ron Rivest, Adi Shamir, Len Adleman giới thiệu mật mã RSA Fun fact: Hai nhân vật Alice Bob giới thiệu 13 13 1.2 Một số nguyên lý chung hệ mật mã • Làm cách để ngăn cản kẻ khác giải mã? • Định luật Kerckhoffs: “Một hệ mật mã cần an toàn thơng tin hệ, trừ khóa bí mật, cơng khai” • Tại sao? 14 14 Hệ mật hồn hảo • Định nghĩa: Hệ mật hồn hảo ∀m ∀c mà Pr(C = c) > 0: Pr(M = m | C = c) = Pr(M = m) • Bổ đề: ∀ cặp m0, m1 có độ dài nhau, ∀c Pr(C = c | M = m0) = Pr(C = c | M = m1) • Bản mật hồn tồn khơng chứa thơng tin rõ • Định lý: Một hệ mật mã hồn hảo ||K|| ≥ ||M|| 15 15 Hệ mật hồn hảo • Thử thách cơng biết trước rõ Thử thách Sinh khóa k Tấn công m0, m1 Chọn b ∈ {0, 1} c* = E(k, mb) Sinh m0, m1 c* Đoán b’ ∈ {0, 1} • Kẻ cơng thắng đốn b’ = b • Hệ mật hồn hảo với thuật tốn, xác suất kẻ cơng đốn P = ½ khơng thể phân biệt rõ mã hóa 16 16 Lý thuyết Shannon • Định lý: Một hệ mật có ||M|| = ||K|| = ||C|| hoàn hảo khi: Xác suất xuất giá trị khóa k Tồn giá trị khóa k cho c = E(k, m) ∀m, ∀c 17 17 An tồn theo tính tốn • Hệ mật hồn hảo: An tồn vơ điều kiện • Định nghĩa 1: Kẻ cơng có xác suất phá mã thành công nhỏ ε thời gian t Có ý nghĩa thực tế, Phụ thuộc vào phát triển phần cứng tính tốn • Với thuật toán hiệu (độ phức tạp đa thức) xác suất phá mã thành cơng ε không đáng kể Không phụ thuộc vào phát triển phần cứng tính tốn Xác suất khơng đáng kể thực tế: ≤2-80 Xác suất đáng kể: ≥2-30 • Thử thách cơng biết trước rõ: P ≤ ½ + ε 18 18 Lý thuyết Shannon (tiếp) • Độ dư thừa ngơn ngữ: Sự xuất n ký tự (n- gram) cho phép đoán nhận ký tự xuất với xác xuất p Nếu p = 1/N : ngơn ngữ khơng có dư thừa N: số ký tự bảng chữ Nếu p > 1/N: ngơn ngữ có dư thừa (một số ký tự không cần thiết sau n ký tự xuất hiện) Định lượng: sử dụng lý thuyết thơng tin Ví dụ: tiếng Việt • Đối với thám mã: sử dụng phương pháp vét cạn, cần phải thu tối thiểu u ký tự mật mã để tìm xác khóa u: khoảng cách unicity (unicity distance) u lớn độ an toàn hệ cao 19 19 Lý thuyết Shannon (tiếp) • Tính toán khoảng cách unicity = ( ) − ( ) : Kích thước khóa , , : entropy ký tự Ví dụ = −∑ × )): entropy ký tự rõ 2( ( : xác suất xuất ký tự khơng gian rõ • Nếu khóa mật xuất hồn tồn ngẫu nhiên, chung bảng chữ cái: 2( ) = 2( ) − ( ) N: số ký tự bảng chữ • Làm để tăng độ an tồn sử dụng mật mã? 20 10 20 Cải tiến DES • DES trở nên khơng an tồn kích thước khóa ngắn • 2DES: Sử dụng khóa DES (k1,k2) = 112 bit E(k1,.) E(k2,.) Tuy nhiên, 2DES không an tồn đáng kể so với DES bị cơng meet-in-the-middle • 3DES: Sử dụng khóa DES: E(k1,.) D(k2,.) E(k1,.) Sử dụng khóa DES: E(k1,.) D(k2,.) E(k3,.) Sử dụng khóa khơng an tồn so với sử dụng khóa 55 55 Mật mã AES – Advanced Encryption Standard • Kích thước khóa: 128, 192, 256 bit • Kích thước khối: 128 bit • Số vịng lặp: 10, 12, 14 theo kích thước khóa invertible k1 ⋯ k2 key 16 bytes key expansion: 16 bytes ⟶176 bytes ⨁ (1) ByteSub (2) ShiftRow (3) MixColumn k9 (1) ByteSub (2) ShiftRow ⨁ k0 (1) ByteSub (2) ShiftRow (3) MixColumn ⨁ input ⨁ ⨁ 10 rounds k10 output 56 28 56 AES – Hàm lặp (Tham khảo) • ByteSub: • ShiftRows: • MixColumns: 57 57 Các chế độ mã khối • Electronic Code Book (ECB): Mã từ điển Plain text: m1 m2 Cipher text: c1 c2 • Hạn chế: ECB khơng chống lại công KPA ECB 58 29 58 Chế độ CBC - Cipher Block Chaining • Chế độ mã móc xích IV m[0] m[1] KS IV Mã hóa m[2] KS c[0] m[3] Mã hóa KS c[1] Mã hóa c[2] Mã hóa KS c[3] CBC chống lại công CPA IV (Initial Vector) ngẫu nhiên 59 59 Tấn cơng CPA đốn IV • Giả sử kẻ cơng đốn giá trị IV* Thử thách Sinh khóa k c = [IV, E(k, IV)] Tấn công m=0 c m0, m1 Chọn b ∈ {0, 1} b = c* = [IV*, E(k, IV)] b = c* = [IV*, E(k, m1 IV*)] Sinh m Sinh m0 = IV* IV m1 ≠ m0 c* Nếu c*[1] = c[1] b’ = Ngược lại b’ = 60 30 60 CBC – Giải mã IV c[0] KS IV Giải mã c[1] KS Giải mã c[2] KS c[3] Giải mã KS Giải mã m[0] m[1] m[2] m[3] 61 61 CBC – So sánh với ECB Ảnh gốc Mã hóa chế độ ECB Mã hóa chế độ CBC 62 31 62 CBC Padding • Khi kích thước tin gốc không chia hết cho khối: r = Len(message) mod Len(block) Phần đệm có kích thước Len(block) – r • Khi kích thước tin gốc chia hết cho khối: thêm phần đệm có kích thước khối • Giá trị phần đệm khác với chuẩn Không dùng chuỗi bit để làm phần đệm • Chuẩn PKCS#7: Nếu cần đệm n byte dùng phần đệm chuỗi byte có giá trị byte n Khối cuối n n … n Phần đệm: n byte 63 63 Chế độ CTR – Counter Mode • Initial Vector: phương pháp sử dụng Giá trị ngẫu nhiên Sử dụng giá trị dùng lần (nonce) n bits nonce n/2 bits • Mã hóa counter n/2 bits msg IV IV m[0] m[1] … m[L] E(k,IV) E(k,IV+1) … E(k,IV+L) c[0] c[1] … c[L] ciphertext Nếu IV lặp lại, chế độ CTR khơng an tồn 64 32 64 Độ an tồn chế độ mã • Khóa dùng nhiều lần giảm độ an tồn • Nếu gọi: q: số tin mã hóa với khóa khơng đổi L: số khối liệu có tin dài |X|: Số lượng giá trị khối liệu • Chế độ CBC an tồn trước cơng CPA q2*L2