Bài giảng An ninh mạng - Bài 2: Các hệ mật mã. Những nội dung chính được trình bày trong chương này: Mật mã là gì? xây dựng mô hình (mật mã khóa đối xứng), một số nguyên lý chung của các hệ mật mã, lý thuyết Shannon, hệ mật mã khóa đối xứng, thám mã, mật mã dòng (stream cipher), những hạn chế của mật mã khóa đối xứng,…
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 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 1 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 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 Lưu trữ Truyền tin • Mật mã học (cryptography): ngành khoa học nghiên cứu phương pháp tốn học để mã hóa giữ mật thơng tin • Thám mã (cryptoanalysis): nghiên cứu phương pháp tốn học để phá vỡ hệ mật mã • Là cơng cụ hiệu giải tốn ATBM, sở cho nhiều chế khác (xác thực, nhận dạng) Nhưng không vạn CuuDuongThanCong.com https://fb.com/tailieudientucntt Truyền tin bí mật Google Mail • Bước 1: Trao đổi khóa • Bước 2: Mã hóa liệu 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” CuuDuongThanCong.com https://fb.com/tailieudientucntt 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õ) 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ã • 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ã Alice Bob Eve 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: Khóa K = Mã hóa: C = (M+3) mod 26 Giải mã: M = (C − 3) mod 26 • Dễ dàng bị phá K thay đổi Gaius Julius Caesar giá trị khác CuuDuongThanCong.com https://fb.com/tailieudientucntt 1.2 Một số nguyên lý chung hệ mật mã • Định luật Kerckhoffs: “Một hệ mật mã cần an tồn thơng tin hệ, trừ khóa bí mật, cơng khai” • Tại sao? Lý thuyết Shannon • Hệ mật hồn hảo: độ an tồn hệ mật khơng phụ thuộc vào số mã thời gian kẻ cơng sử dụng để thám mã (An tồn vơ điều kiện) • Lý thuyết Shannon: Một hệ mật mã hồn hảo Độ dài khóa tối thiểu độ dài tin rõ Khóa sử dụng lần Tại khó đạt thực tế? Điều kiện cần • An tồn theo tính tốn: thỏa mãn đồng thời điều kiện Thời gian để thám mã thành công lớn thời gian cần giữ mật thông tin Chi phí để thám mã thành cơng lớn giá trị thông tin thu 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 = ∀n: ngơn ngữ khơng có dư thừa Nếu p > 0: 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 11 Lý thuyết Shannon (tiếp) • Tính tố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 toàn sử dụng mật mã? 12 CuuDuongThanCong.com https://fb.com/tailieudientucntt Thơng tin tham khảo – Kích thước khóa • Khóa có kích thước bao nhiêu? Mật mã coi an toàn phương pháp vét cạn (brute-force) cách nhanh để bẻ khóa Mục tiêu: giảm thiểu nguy bị công vét cạn (đạt độ an tồn theo tính tốn) • Bạn nghe đâu đó, “dễ dàng” bẻ khóa mật mã DES có kích thước khóa 64 bit? Năm 1999, hệ thống phá mã EFF DES (trị giá 250K$) bẻ khóa DES khoảng ngày Năm 2008, hệ thống phá mã COPACOBANA (trị giá 10K$) bẻ khóa DES 6,4 ngày Sử dụng định luật Moore để tính thời gian bẻ khóa năm 2016 với chi phí 10K$? 13 Thơng tin tham khảo – Kích thước khóa • Chi phí để bẻ khóa DES (năm 2008) 64 bit: $10.000 87 bit: $10.000.000.000 (thời gian bẻ khóa khơng đổi) • Cần giữ thơng tin mật hệ thống phá mã COPACOBANA? (năm 2008) 64 bit: 6.4 ngày 128 bit: ? • Tuy nhiên, vét cạn phương pháp công tầm thường • Tham khảo kích thước khóa nên sử dụng tương lai địa http://www.keylength.com 14 CuuDuongThanCong.com https://fb.com/tailieudientucntt Hệ mật mã khóa đối xứng • Symmetric cryptography, Secret-key cryptography: sử dụng khóa mã hóa giải mã • Được phát triển từ sớm • Thuật tốn mã hóa: phối hợp tốn tử Thay Đổi chỗ XOR (Tại dùng XOR?) • Tốc độ thực thuật tốn nhanh, thực dễ dàng phần cứng • Một số hệ mật mã khóa đối xứng đại: DES, 2DES, 3DES, AES, RC4, RC5 Việc tìm hiểu đặc điểm hệ mật mã coi tập!!! 15 2.1 Sơ đồ chung • Hệ mật mã gồm: Bản rõ (plaintext-M): tin sinh bên gửi Bản mật (ciphertext-C): tin che giấu thông tin rõ, gửi tới bên nhận qua kênh khơng bí mật Khóa (key-KS): giá trị ngẫu nhiên bí mật chia sẻ bên trao đổi thông tin Bên thứ tin cậy tạo phân phối tới bên gửi bên nhận Hoặc, bên nguồn tạo chuyển cho bên nhận Mã hóa (encrypt-E): C = E(KS, M) Giải mã (decrypt): M = D(KS, C) = D(KS, E(KS, M)) 16 CuuDuongThanCong.com https://fb.com/tailieudientucntt Sơ đồ chung Khóa mã hóa giải mã giống KS KS M M Mã hóa Người gửi Giải mã C Người nhận C Kênh truyền Yêu cầu với KS : - Hoàn toàn ngẫu nhiên - Chia sẻ cách bí mật - Giữ bí mật hồn tồn trước kẻ cơng M* Thám mã Kẻ cơng KS* 17 Thám mã • Nhắc lại định luật Kerckhoffs “Một hệ mật mã cần an tồn thơng tin hệ, trừ khóa bí mật, cơng khai” Kẻ thám mã biết giải thuật mã hóa, giải mã • Tấn cơng biết mật: Kẻ thám mã có thêm mật C (ciphertext-only attack) Phương pháp phá mã: thử tất tổ hợp khóa để tìm tổ hợp khóa thích hợp Trong trường hợp khơng gian khóa lớn phương pháp không thực Đối phương cần phải phân tích văn mật, thực kiểm nghiệm thống kê để giảm số lượng trường hợp cần thử 18 CuuDuongThanCong.com https://fb.com/tailieudientucntt Thám mã (tiếp) • Tấn cơng biết rõ (known-plaintext attack): Kẻ thám mã có số cặp (M,C) phiên truyền tin trước Mục đích: đốn khóa mật K Phương pháp cơng: phân tích thuộc tính thống kê ngơn ngữ văn gốc • Tấn cơng chọn trước rõ (chosen-plaintext attack): kẻ thám mã lừa người gửi mã hóa số tin đặc biệt chọn • Tấn cơng chọn trước mật(chosen-ciphertext attack): kẻ thám mã lừa người nhận giải mã số tin đặc biệt chọn • Tấn cơng chọn trước rõ, mật Thuật toán thiết kế để chống lại dạng công 19 Mật mã one-time-pad •Vernam (1917) Key: 1 1 0 Plaintext: 1 0 1 0 Ciphertext: 0 1 1 • Kích thước khóa kích thước rõ • Khóa dùng lần • Shannon : mật mã one-time-pad hệ mật hoàn hảo 20 CuuDuongThanCong.com https://fb.com/tailieudientucntt 10 2.2 Mật mã dịng (stream cipher) • Xử lý văn rõ theo dòng byte, thời gian thực RC4 (900 Mbps), SEAL (2400 Mbps), RC5(450 Mbps) • Phù hợp với hệ thống truyền liệu thời gian thực mơi trường mạng máy tính • An tồn khóa hồn tồn ngẫu nhiên, dùng lần (one-time-pad) Trên thực tế: khóa giả ngẫu nhiên dùng nhiều lần (n-time-pad) số phương pháp mật mã dịng khơng cịn an tồn (RC4) 21 2.3 Mật mã khối • Chia văn gốc thành khối có kích thước • Xử lý mã hóa giải mã khối độc lập • ECB - Electronic Code Book (Chế độ mã từ điển) Bản rõ: m1 m2 Bản mã: c1 c2 • Hạn chế? 22 CuuDuongThanCong.com https://fb.com/tailieudientucntt 11 Ví dụ mật mã khối chế độ ECB Ảnh gốc Ảnh mã hóa chế độ ECB 23 Chế độ CBC - Cipher Block Chaining • Chế độ mã móc xích • Có thể thay mã dòng: Ưu điểm? Hạn chế? IV m[0] m[1] KS IV Mã hóa c[0] m[2] KS Mã hóa c[1] m[3] KS Mã hóa c[2] KS Mã hóa c[3] 24 CuuDuongThanCong.com https://fb.com/tailieudientucntt 12 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] 25 CBC – So sánh với ECB Ảnh gốc Mã hóa chế độ ECB Mã hóa chế độ CBC 26 CuuDuongThanCong.com https://fb.com/tailieudientucntt 13 2.4 Những hạn chế mật mã khóa đối xứng • Cần kênh mật để chia sẻ khóa bí mật bên Làm để chia sẻ cách an tồn cho lần • Số lượng khóa lớn: n(n-1)/2 • Khó ứng dụng hệ thống mở (E-commerce) • Khơng dễ dàng để xác thực thông tin quảng bá (Chúng ta quay trở lại vấn đề sau) 27 Hệ mật mã khóa bất đối xứng • Asymmetric key cryptography, Public key cryptography • Tháng 11/1976, Diffie Hellman giới thiệu ý tưởng kịch chia sẻ khóa bí mật (của hệ mật mã khóa đối xứng) mà không truyền trực tiếp giá trị khóa • Độ an tồn dựa độ khó giải số tốn: Phân tích số thành thừa số nguyên tố Tính logarit rời rạc • Các thuật tốn dựa hàm tốn học • Một số hệ mật mã khóa cơng khai: RSA, El-Gamal 28 CuuDuongThanCong.com https://fb.com/tailieudientucntt 14 3.1 Kịch trao đổi khóa bí mật Diffie-Hellman • Alice Bob chia sẻ khóa nhóm (q, a) Trong q số nguyên tố 1< a < q thỏa mãn: (ai mod q) ≠ aj mod q ∀ < i ≠ j < q A XA < q YA = aXA mod q B XB < q YB = aXB mod q YA YB KS = YB XA KS = YA XB mod q mod q 29 Ví dụ • Khóa chung nhóm q = 71, a = Hãy tự kiểm tra điều kiện thỏa mãn a • A chọn XA = 5, tính YA = 75 mod 71 = 51 B A XA = YA = 75 mod 71 = 51 KS = 45 mod 71 = 30 YA YB XB = 12 YB = 712 mod 71 = KS = 5112 mod 71 = 30 • Vấn đề an toàn sơ đồ xem xét đến sau Rút điều từ sơ đồ này? 30 CuuDuongThanCong.com https://fb.com/tailieudientucntt 15 3.2 Sơ đồ chung • Hệ mật mã gồm: Bản rõ (plaintext-M): tin sinh bên gửi Bản mật (ciphertext-C): tin che giấu thông tin rõ, gửi tới bên nhận qua kênh khơng bí mật Khóa: Bên nhận có cặp khóa: Khóa cơng khai KUB : cơng bố cho tất biết (trong có kẻ cơng) Khóa cá nhân KRB : bên nhận giữ bí mật, khơng chia sẻ Mã hóa (encrypt-E): C = E(KUB, M) Giải mã (decrypt): M = D(KRB, C) = D(KRB, E(KUB, M)) 31 3.2 Sơ đồ chung (tiếp) Khóa mã hóa giải mã khác KUB KRB M M Mã hóa Người Gửi (A) Giải mã C C Người nhận (B) Kênh truyền Làm để B gửi tin cách bí mật cho A? CuuDuongThanCong.com M* Kẻ công Thám mã K*RB https://fb.com/tailieudientucntt 32 16 3.2 Sơ đồ chung (tiếp) • Yêu cầu cặp khóa (KUB, KRB) Hồn tồn ngẫu nhiên Có quan hệ mặt tốn học 1-1, Nếu có giá trị KUB khơng thể tính KRB KRB phải giữ mật hồn tồn 33 Một ví dụ - Hệ mật RSA • Sinh khóa: Chọn p,q hai số nguyên tố Tính n = p q , (n) = (p-1)(q-1) Chọn e cho UCLN((n), e) = ;1< e < (n) Tính d cho (e d) mod (n) =1 Khóa cơng khai : KU = (e,n) Khóa riêng : KR = (d,n) • Mã hóa : C = Me mod n • Giải mã: M = Cd mod n 34 CuuDuongThanCong.com https://fb.com/tailieudientucntt 17 Một ví dụ - Hệ mật RSA • Sinh khóa: Chọn p = 5, q = 11 Tính n = p × q = 55, (n) =(p-1)×(q-1) = 40 Chọn e cho UCLN((n), e) = < e < (n) VD: e = Tính d cho (e × d) mod (n) = 1, < d < (n) d = 23 Cặp khóa : KU = (7,55), KR = (23,55) • Mã hóa: M = C = 41 • Giải mã: C = 41 M = Nếu kẻ cơng có KU, làm để tính KR? 35 3.3 Kết hợp mật mã khóa cơng khai mật mã khóa đối xứng • Ưu điểm mật mã khóa cơng khai: Khơng cần chia sẻ khóa mã hóa KUB cách bí mật Dễ dàng ứng dụng hệ thống mở Khóa giải mã KRB có B biết: An tồn Có thể sử dụng KRB để xác thực nguồn gốc thông tin (Chúng ta quay lại vấn đề sau) Số lượng khóa để mã mật tỉ lệ tuyến tính với số phần tử (n phần tử n cặp khóa) • Nhưng 36 CuuDuongThanCong.com https://fb.com/tailieudientucntt 18 3.3 Kết hợp mật mã khóa cơng khai mật mã khóa đối xứng • Vấn đề cần giải hệ mật mã khóa cơng khai Vẫn cần kênh an tồn để chia sẻ khóa VD: Tấn cơng vào sơ đồ Diffie-Hellman kỹ thuật man-in-themiddle 37 3.3 Kết hợp mật mã khóa cơng khai mật mã khóa đối xứng • Hạn chế mật mã khóa cơng khai so với mật mã khóa đối xứng: Kém hiệu hơn: khóa có kích thước lớn hơn, chi phí tính tốn cao Có thể bị cơng tốn học Kết hợp hệ mật mã 38 CuuDuongThanCong.com https://fb.com/tailieudientucntt 19 Sơ đồ “lai” • Phía gửi Thơng điệp (bản rõ) KUB KS Nguồn khóa bí mật Mã hóa KCK Khóa mã hóa Bản mã Thơng điệp mã hóa Mã hóa KĐX Tự suy luận cách thức xử lý phía nhận tập! 39 Kết luận • Những sai lầm sử dụng mật mã: Mật mã giải pháp vạn (những sau phân tích kỹ hơn) Khóa có kích thước lớn, mã hóa an tồn Sửa đổi/Thêm vài yếu tố bí mật vào giải thuật, hệ mật mã an tồn 40 CuuDuongThanCong.com https://fb.com/tailieudientucntt 20 Kết luận • Chỉ sử dụng thuật tốn chuẩn • Đừng tự thiết kế hệ mật mã cho riêng mình: Nếu khơng thể sử dụng hệ mật mã có, xem lại hệ thống Nếu bắt buộc phải sử dụng hệ mật mã hoàn toàn, đánh giá cách cẩn thận • Sử dụng khóa khác cho mục đích khác • Mật mã chưa đáp ứng yêu cầu toàn vẹn Khi sử dụng mật mã thêm vào sơ đồ đáp ứng tồn vẹn nội dung thơng tin xác thực nguồn gốc thông tin (sẽ đề cập đến sau) • Sinh khóa: Sử dụng hàm sinh số ngẫu nhiên cho mật mã Đừng sử dụng hàm sinh số ngẫu nhiên chuẩn rand(), srand() 41 CuuDuongThanCong.com https://fb.com/tailieudientucntt 21 ... máy tính • An tồn khóa hồn tồn ngẫu nhiên, dùng lần (one-time-pad) Trên thực tế: khóa giả ngẫu nhiên dùng nhiều lần (n-time-pad) số phương pháp mật mã dịng khơng cịn an tồn (RC4) 21 2. 3 Mật... one-time-pad •Vernam (1917) Key: 1 1 0 Plaintext: 1 0 1 0 Ciphertext: 0 1 1 • Kích thước khóa kích thước rõ • Khóa dùng lần • Shannon : mật mã one-time-pad hệ mật hoàn hảo 20 CuuDuongThanCong.com... 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 toàn sử dụng mật mã? 12 CuuDuongThanCong.com https://fb.com/tailieudientucntt