An toàn hệ thống thông tin

Tăng cường độ an toàn bằng kết hợp †Tăng cường độ an toàn bằng kết hợp „Hệmật mã khóa công khai „Hàm băm „Hàm băm †Thuật toán tạo chữký „Hàm mã hóa sửdụng khóa riêng „Hàm mã hóa sửdụng khóa riêng „Hàm băm †Thuật toán kiểm định chữký ậ ị ý „Hàm giải mã sửdụng khóa công khai „Hàm băm

pdf299 trang | Chia sẻ: lvcdongnoi | Lượt xem: 3302 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu An toàn hệ thống thông tin, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
mod 6 = 4 Số học đồng dư † a mod n „ Số dư của a chia n † a + b mod n „ Số dư của a + b chia n † a - b mod n „ Số dư của a - b chia n † * b d a mo n „ Số dư của a * b chia n † a ^ b mod n „ Thủ tục bình phương † a / b mod n „ Giải thuật Euclide mở rộng Thủ tục bình phương † Dựa vào tính chất „ a*b mod n = ((a mod n)*(b mod n)) mod n † Tính a^b „ a^25 = a^(11001) „ a^(11001) = a^(10000+1000+1) „ a^(10000+1000+1) = a^10000 * a^1000 * a^1 „ a^10000 * a^1000 * a^1 = a^16 * a^8 * a^1 † Độ hứ t (O(l b*(l )^2)) p c ạp og ogs † Hiệu quả hơn phương pháp tính lũy thừa bằng phép nhân đồng dư (O(b*(logs)^2)) Thủ tục bình phương ModExp1(a,b, s) † Vào: „ 3 số nguyên dương a,b,s sao cho a < s „ bn−1 ···b1b0 là biểu diễn nhị phân của b, n = [logb] † Ra: a^b mod s p[0] = a mod s for i = 1 to n−1 p[i] = p[i−1]^2 mod s r = 1 fo i 0 to n 1r = − if b[i] = 1 then r = r*p[i] mod s return r Bài tập † Tí h 6^73 d 100n mo „ 73 = 2^0 + 2^3 + 2^6 „ 6^73 6 * 6^(2^3)*6^(2^6)= „ 6 = 6 mod 100 „ 6^(2^3) 16 mod 100= „ 6^(2^6) = -4 mod 100 „ 6^73 = 6 * (16) * ( 4) = 16 mod 100 - Giải thuật Euclide mở rộng † Giải thuật Euclide „ Tính ƯSCLN(a,b) „ Dựa trên tính chất † Nếu a > b thì ƯSCLN(a,b) = ƯSCLN(a mod b,b) ả ậ ở ộ† Gi i thu t Euclide m r ng „ Tính 2 số x, y sao cho † a*x + b*y ƯSCLN(a b)= , „ Giải quyết bài toán tìm x sao cho † a*x = 1 mod s Giải thuật Euclide mở rộng Extended Euclid(a b)- , † Vào: 2 số nguyên dương a,b † Ra: 3 số nguyên x y d sao cho d = gcd(a b) , , , và ax+by = d 1. Nếu b = 0 thì trả về (1,0,a) 2. Tìm q, r sao cho a = b*q+r 3. (x’,y’,d) = Extended-Euclid(b, r) 4. Trả về (y’,x’−q*y’,d) Bài tập † Dùng giải thuật Euclide mở rộng để tìm ƯSCLN(120,23) a b q r x y d 120 23 5 5 -9 47 1 23 5 4 3 2 9 1- 5 3 1 2 -1 2 1 3 2 1 1 1 -1 1 2 1 1 0 0 1 1 1 0 _ _ 1 0 1 Bài tập † Dùng giải thuật Euclide mở rộng để tìm tìm x sao cho 51*x mod 100 = 1 „ Nếu a*x mod n = 1 thì tồn tại k trong đó a*x = 1 + n*k „ Ta có a*x – n*k = 1 „ Đặt k t đượ * + b* 1y = - , a c a x y = „ Tìm x,y bằng giải thuật Euclide mở rộng † x = -49, y = 25 Hệ Mật mã khóa công khai RSA † RSA „ 1978 Rivest, Shamir và Adlerman phát minh ra hệ mật mã RSA „ Hệ mật mã khóa công khai phổ biến và đa năng nhất trong thực tế „ Sử dụng các kết quả trong số học đồng dư „ Dựa trên độ phức tạp của bài toán † phân tích số nguyên ra thừa số nguyên tố RSA – Tạo khóa † Chọn ngẫu nhiên 2 số nguyên tố p q, „ n = p * q † Chọn e sao cho „ 1 < e < (p 1) * (q 1)- - „ ƯSCLN(e, (p-1) * (q-1)) = 1 † Chọn d sao cho „ 1 d ( 1) * ( 1)< < p- q- „ e*d = 1 mod (p-1) * (q-1) † Khóa công khai „ (n,e) † Khóa riêng „ (p,q,d) RSA – Tạo khóa † Ví dụ „ p = 11, q = 23 „ 11*23 253n = = „ (p-1)*(q-1) = 10*22=220 „ ƯSCLN(e 220) 1 , = † giá trị nhỏ nhất e = 3 „ áp dụng giải thuật Euclide mở rộng † d = 147 RSA – Mã hóa † Mã hó ử d khó ô kh ia s ụng a c ng a „ Tin m „ Khó ô kh i ( )a c ng a n,e „ M㠆 c = m^e mod n RSA – Mã hóa † Ví dụ „ p = 11, q = 23 „ n = 11*23 = 253 „ (p-1)*(q-1) = 10*22=220 „ e = 3 „ d = 147 „ Tin m = 165 „ M㠆 c = 165^3 mod 253 = 110 RSA – Giải m㠆 Ti n m † Khóa công khai (n,e) † Khóa riêng (p,q,d) † Mã c = m^e mod n † Giải m㠄 m = c^d mod n RSA – Giải mã Đị h lý Nến : u † (n,e) là khóa công khai † (p,q,d) là khóa riêng † 0 <= m < n thì (m^e)^d mod n = m RSA – Giải m㠆 Ví dụ „ p = 11, q = 23 „ n = 11*23 = 253 „ (p-1)*(q-1) = 10*22=220 „ e = 3 „ d = 147 „ M㠆 c = 165^3 mod 253 = 110 „ Tin † m = 110^147 mod 253 = 165 RSA- Độ an toàn † RSA và bài toán phân tích thừa số nguyên tố „ Khóa công khai (n,e) „ Khóa riêng (p,q,d) được giữ bí mật „ Độ an toàn của RSA dựa trên độ khó/phức tạp ủ bài t á tí h ( d) từ ( )c a o n n p,q, n,e † p,q là 2 số nguyên tố, † n = p*q † e,d được tính từ p,q „ Do đó bài toán trên qui về bài toán PTTSNT(n) RSA- Độ an toàn † Lự h a c ọn p,q „ Đảm bảo rằng bài toán PTTSNT(n) thực sự khó „ Tránh tình trạng p,q rơi vào những trường hợp đặc biệt mà bài toán trên trở nên dễ dàng † Ví dụ: p-1 có các thừa số nguyên tố nhỏ „ p,q phải có độ dài tối thiểu là 512 bít „ p,q xấp xỉ nhau RSA- Độ an toàn † Lự h a c ọn e „ e nhỏ nhất có thể „ khô hỏ á để t á h bị tấ ô e ng n qu r n n c ng theo dạng “low exponent” † Lựa chọn d „ d không nhỏ quá (d < n/4) để tránh tấn công dạng “low decryption” RSA – Hiệu năng † Nhâ hi ố dư hé hi n, c a, s p p c a † Tính lũy thừa modulo „ m^e mod n „ c^d mod n ố ộ ấ ậ ớ† T c đ r t ch m so v i DES RSA – Bài tập † Cho p = 7 q = 11 Giả sử Alice dùng khóa , . công khai (n,e) = (77,17). Tìm khóa riêng. Biết rằng các ký tự từ A đến Z được biểu diễn bằng các số nguyên từ 00 đến 25 Dấu cách . được biểu diễn bằng số 26. Bob muốn gửi cho Alice Tin “HELLO WORLD” sử dụng hệ mật mã RSA . Tính Mã tương ứng. RSA – Bài tập † Đá áp n „ (p,q,d) = (7,11,53) „ Tin † H E L L O W O R L D † 07 04 11 11 14 26 22 14 17 11 03 „ M㠆 28 16 44 44 42 38 22 42 19 44 75 Các Mật mã khóa công khai khác † M kl H ller e e man † ElGamal † Rabin † Đường cong êlip (Elliptic Curve) Mật mã & Ứng dụng Trần Đức Khánh Bộ môn HTTT – Viện CNTT&TT ĐH BKHN Chủ đề † Hệ Mật ã khô Khóm ng a † Hệ Mật mã khóa bí mật (đối xứng) † Hệ Mật mã khóa công khai (bất đối xứng) † Hàm băm, chữ ký số † Quản lý khóa, giao thức mật mã,… Hàm băm † Các ứng dụng chú trọng mục tiêu Toàn vẹn „ Tài liệu được sử dụng giống hệt tài liệu lưu trữ „ Các thông điệp trao đổi trong một hệ thống an toàn không bị thay đổi/sửa chữa † “Niêm phong” tài liệu/thông điệp ổ„ “Niêm phong” không bị sửa đ i/phá hủy đồng nghĩa với tài liệu/thông điệp toàn vẹn „ “Niêm phong”: băm (hash), tóm lược (message digest), đặc số kiểm tra (checksum) „ Tạo ra “niêm phong”: hàm băm Hàm băm † M tiê t àục u an o n „ Toàn vẹn (Integrity) Khái niệm Hàm băm † Đầu vào là một chuỗi có chiều dài biến thiên và đầu , ra có chiều dài cố định ∑∑ → nh *: † Tin: † Cốt (Di t) ∑n ∑* ges : † h là hàm một chiều (one way function) „ dễ dàng tính h nhưng rất khó tính 1−h † h có tính phi đụng độ cao (collision resistence) „ rất khó tìm được x /= y sao cho h(x) = h(y) Kỹ thuật tạo hàm băm † Dùng các hàm mã hóa „ CBC „ RMDP „ DM † Dùng các phép toán số học đồng dư „ QCMDC „ DP † Dù á hà thiết kế đặ biệtng c c m c „ MD4/5 „ SHA/SHS Kỹ thuật tạo hàm băm † Dùng các hàm mã hóa „ CBC „ RMDP „ DM † Dùng các phép toán số học đồng dư „ QCMDC „ DP † Dù á hà thiết kế đặ biệtng c c m c „ MD4/5 „ SHA/SHS CBC - Chaining Block Cipher † Hà ã hó E đối ứm m a x ng „ Khóa K † Hà bă Hm m „ M = M1M2…Mn ( )„ Hi = E K,Mi xor Hi-1 „ H = Hn RMDP – Rabin, Matyas, Davise, Price † Hà ã hó E đối ứm m a x ng „ Khóa là các khối của Tin † Hà bă Hm m „ M = M1M2..Mn ( ẫ h ê )„ H0 = r r ng u n i n „ Hi = E(Mi,Hi-1) H H„ = n DM – Davies, Meyer † Hà ã hó E đối ứm m a x ng „ Khóa là các khối của Tin † Hà băm m „ M = M1M2..Mn ( ẫ h ê )„ H0 = r r ng u n i n „ Hi = E(Mi,Hi-1) xor Hi-1 H H„ = n Kỹ thuật tạo hàm băm † Dùng các hàm mã hóa „ CBC „ RMDP „ DM † Dùng các phép toán số học đồng dư „ QCMDC „ DP † Dù á hà thiết kế đặ biệtng c c m c „ MD4/5 „ SHA/SHS QCMDC – Quadratic Congruential Manipulation Dectection Code † M M1M2 M= … n „ Mi khối n bit † N là ố ê tố hs nguy n sao c o „ N >= 2^(n-1) à ㆠH m b m „ H0 = r (r ngẫu nhiên) „ Hi = (Hi-1+Mi)^2 mod N „ H = Hn DP – Davies, Price † M M1M2 M= … n † N là số nguyên tố sao cho „ N = 2^r † Hàm băm „ H0 = 0 „ Hi = (Hi-1 xor Mi)^2 mod N „ H = Hn Kỹ thuật tạo hàm băm † Dùng các hàm mã hóa „ CBC „ RMDP „ DM † Dùng các phép toán số học đồng dư „ QCMDC „ DP † Dù á hà thiết kế đặ biệtng c c m c „ SHA/SHS „ MD4/5 SHA-1 † SHA S H h Al ith= ecure as gor m † Được đề xuất và bảo trợ bởi NIST † Dùng trong hệ DSS (Digital Signature Standard) của NIST † Được sử dụng rộng rãi „ SSL, PGP, SSH, S/MIME, IPSec SHA-1 † Đầ à bội ố ủ 512 bitu v o s c a † Giá trị băm 160 bit † 80 vòng lặp tính toán Vòng lặp SHA-1 Vòng lặp SHA-1 † A B C D E khối 32 bit, , , , † Kt hằng số của vòng lặp t † Wt được tính từ các khối của Tin † <<< dịch chuyển các bit † cộng modulo 32 † F là hàm kết hợp các phép toán logic „ not, and, or, xor MD5 † MD M Di t= essage ges † MD5 được đề xuất bởi Rivest vào năm 1991 † Được sử dụng rộng rãi „ Truyền tập tin „ Lưu trữ mật khẩu MD5 † Đầ à 512 bitu v o † Giá trị băm 128 bit † 64 vòng lặp tính toán Vòng lặp MD5 Vòng lặp MD5 † A B C D khối 32 bit, , , † Ki hằng số của vòng lặp i † Mi khối 32 bit của Tin † <<< dịch chuyển các bit † cộng modulo 32 † F là hàm kết hợp các phép toán logic „ not, and, or, xor Chữ ký số † 1976 Diffie & Hellman lần đầu tiên đề cập , đến khái niệm Chữ ký số † 1989 phiên bản thương mại Chữ ký số đầu , tiên trong Lotus Notes, dựa trên RSA † Ứng dụng „ Hợp đồng số „ Bầu cử điện tử Gi dị h â hà„ ao c ng n ng „ … Chữ ký số † M tiê t àục u an o n „ Xác thực (Authentication) „ Chố hủ hậ (N di ti )ng p n n on-repu a on Hệ chữ ký số † Thuật toán tạo chữ ký „ Ký hiệu S „ Đầu vào là một thông tin m „ Chữ ký S(m) † Thuật toán kiểm định chữ ký „ Ký hiệu V „ Đầu vào là thông tin m và chữ ký kèm theo s „ V(m,s) = true khi và chỉ khi s = S(m) Kỹ thuật tạo Chữ ký số † Mật ã khó ô kh im a c ng a † Hàm băm † Mật mã khóa công khai + Hàm băm „ RSA + Hàm băm „ ElGamal + Hàm băm „ DSA Chữ ký số dùng Mật mã khóa công khai † RSA „ Chọn ngẫu nhiên 2 số nguyên tố p, q † n = p * q „ Chọn e sao cho † 1 < e < (p-1) * (q-1) † ƯSCLN(e, (p-1) * (q-1)) = 1 „ Chọn d sao cho † 1 < d < (p-1) * (q-1) † e*d = 1 mod (p-1) * (q-1) „ Khóa công khai: (n e) , „ Khóa riêng: (p,q,d) „ Mã hóa: c = m^e mod n „ Giả mã: m = c^d mod n Chữ ký số dùng RSA † Tin m † Khóa công khai (n,e) † Khóa riêng (p q d), , † Tạo chữ ký „ s = m^d mod n † Kiểm định chữ ký „ m =? s^e mod n Chữ ký số dùng RSA † Đe dọa/mối nguy „ Tấn công dạng “tráo khóa” „ Tấn công dạng “chọn tin”, dựa trên đặc điểm “ hâ í h” ủ RSAn n t n c a † Nếu m1^d mod n là chữ ký của m1, m2^d mod n là chữ ký của m2, thì (m1*m2)^d mod n là hữ ký ủ 1* 2c c a m m „ Tấn công dạng “không Tin” † Lấy khóa công khai k của Alice † Tạo tin m và chữ ký s của m sao cho m và s được công nhận bởi thuật toán kiểm định sử dụng k Chữ ký số dùng Hàm băm † Hà băm m „ Đầu vào là một chuỗi có chiều dài biến thiên và đầu ra có chiều dài cố định, „ Hàm một chiều (one way function) † dễ dàng tính hàm nhưng rất khó tính hàm ngược „ Phi đụng độ cao (collision resistence) † gần như đơn ánh Chữ ký số dùng Hàm băm † Hà bă hm m † Tạo chữ ký „ Tin m „ s = h(m) ể ý† Ki m định chữ k „ Tin m „ Chữ ký s „ s = h(m) Chữ ký số dùng Hàm băm † Đe dọa/mối nguy „ Nghịch lý sinh nhật † Trong một nhóm 23 người, xác suất để có hai ười ó ù ột i h hật là khô hỏ hơ ng c c ng m s n n ng n n 1/2 „ Tấn công dạng “sinh nhật” í h á bă hờ à khô† T n N gi trị m trong t i gian v ng gian cho phép † Lưu trữ các giá trị băm để tìm ra đụng độ á ấ ộ† X c su t đụng đ „ Nếu N > 2^(n/2) giá trị băm, thì xác suất đụng độ là > 1/2, trong đó n là độ dài của chuỗi giá trị băm Chữ ký số dùng Mật mã khóa công khai + Hàm băm † Tăng cường độ an toàn bằng kết hợp „ Hệ mật mã khóa công khai „ Hàm băm † Thuật toán tạo chữ ký „ Hàm mã hóa sử dụng khóa riêng „ Hàm băm † Thuật toán kiểm định chữ ký „ Hàm giải mã sử dụng khóa công khai „ Hàm băm ẩChu n Chữ ký số - DSS Tạo chữ ký Kiểm định chữ ký Hàm băm Hàm băm Tin Tin Tóm lược Tóm lược Khóa riêng Sinh chữ ký Kiểm định chữ ký Khóa công khai Chữ ký Hợp lệ/ Khô h lệng ợp Chữ ký số RSA + Hàm băm † Cá thô ốc ng s „ Hàm băm h „ 2 ố ê tố s nguy n p,q Chữ ký số RSA + Hàm băm † Tạo khóa „ n = p*q „ Chọn e sao cho † 1 < e < (p 1) * (q 1)- - † ƯSCLN(e, (p-1) * (q-1)) = 1 „ Chọn d sao cho † 1 < d < ( 1) * ( 1)p- q- † e*d = 1 mod (p-1) * (q-1) „ Khóa công khai † ( )n,e „ Khóa riêng † (p,q,d) Chữ ký số RSA + Hàm băm † T hữ kýạo c „ Tin m „ Chữ ký † s = h(m)^d mod n Chữ ký số RSA + Hàm băm † Kiể đị h hữ kým n c „ Chữ ký s „ Tin m „ Kiểm định † h(m) = s^e mod n Chữ ký số ElGamal + Hàm băm † Cá thô ốc ng s „ Hàm băm h „ Số ê tố nguy n p „ Số nguyên g sao cho † g^c = b mod p trong đó b,p nguyên tố cùng nhau Chữ ký số ElGamal + Hàm băm † T khóạo a „ Chọn a sao cho 0 < a < p-1 † A g^a mod p= a được gọi là logarit rời rạc của A „ Khóa công khai † (p,g,A) „ Khóa riêng † a Chữ ký số ElGamal + Hàm băm † T hữ kýạo c „ Tin m „ Chọn k sao cho † 0 < k < p-1 † k nguyên tố cùng nhau với p-1 „ Chữ ký † r = g^k mod p † s = k^(-1) * (h(m) – a*r) mod (p-1) Chữ ký số ElGamal + Hàm băm † Kiể đị h hữ kým n c „ Chữ ký (r,s) „ Tin m „ Kiểm định † 0 < r < p † 0 < s < p-1 † A^r*r^s = g^h(m) mod p Chữ ký số DSA † Cá thô ốc ng s „ Hàm băm h „ Số ê tố nguy n q „ Số nguyên p sao cho † p 1 la bội số của q- „ Số nguyên g sao cho † g = x^((p-1)/q) mod p trong đó x < p Chữ ký số DSA † T khóạo a „ Chọn a < q † A g^a mod p= „ Khóa công khai † (p q g A), , , „ Khóa riêng † a Chữ ký số DSA † T hữ kýạo c „ Tin m „ Chọn k sao cho 0 < k < q „ Chữ ký † r = (g^k mod p) mod q † s = k^(-1) * (h(m) + a*r) mod q Chữ ký số DSA † Kiể đị h hữ kým n c „ Chữ ký (r,s) „ Tin m „ Kiểm định † 0 < r < q † 0 < s < q † r = ((g^(s^(-1)*h(m) mod q) A^(r*s^(-1) mod q)) mod p) mod q Mật mã & Ứng dụng Trần Đức Khánh Bộ môn HTTT – Viện CNTT&TT ĐH BKHN Chủ đề † Hệ Mật ã khô Khóm ng a † Hệ Mật mã khóa bí mật (đối xứng) † Hệ Mật mã khóa công khai (bất đối xứng) † Hàm băm, chữ ký số † Quản lý khóa, giao thức mật mã,… Quản lý khóa, giao thức mật mã,… † Quản lý khóa „ Khóa đối xứng „ Khóa công khai † PKI † Giao thức mật m㠆 Thống nhất khóa † Diffie-Hellman † Xác thực † Needham-Schroeder Quản lý khóa, giao thức mật mã,… † Quản lý khóa „ Khóa đối xứng „ Khóa công khai † PKI † Giao thức mật m㠆 Thống nhất khóa † Diffie-Hellman † Xác thực † Needham-Schroeder Quản lý khóa † Quản lý khóa là một vấn đề quan trọng „ Tính bí mật: khóa đối xứng „ Tính toàn vẹn: khóa đối xứng, khóa công khai † Giải pháp quản lý khóa „ Khóa đối xứng † Trọng tài (Trusted Third Party) „ Khóa công khai † PKI (P bli K I f t t )u c ey n ras ruc ure Quản lý khóa đối xứng † Mô hì h t đổi thô ti khó đối n rao ng n a xứng A2 A3 A1 A4 A6 A5 Quản lý khóa đối xứng † T tài (T t d Thi d P t )rọng rus e r ar y „ Thực thể được tất cả các thực thể tham gia khác tin tưởng „ Mỗi thực thể tham gia chia xẻ một khóa đối xứng với Trọng tài „ Hai thực thể trao đổi thông tin bằng khóa đối xứng được Trọng tài tạo ra Quản lý khóa đối xứng nhờ Trọng tài A2 A3 E(k2,k) E(k ) TTPA1 A4 Nguồn khóa k,m A6 A5 E(k6,k) Quản lý khóa đối xứng nhờ Trọng tài † Ưu điểm „ Dễ dàng thêm bớt các thực thể „ Mỗi thực thể chỉ cần lưu trữ một khóa đối xứng dài hạn † Nhược điểm „ Tất cảc các cuộc trao đổi thông tin đều cần tương tác ban đầu với Trọng tài „ Trọng tài phải lưu trữ nhiều khóa đối xứng dài hạn „ Trọng tài phải xử lý khối lượng lớn thông tin „ Nếu Trọng tài bị đe dọa, tất cả các trao đổi thông tin đều bị đe dọa Quản lý khóa công khai † Mô hì h t đổi thô ti khó ô n rao ng n a c ng khai A2: d2 A3: d3c = E(e6,m) Thư mục công cộng e6 A1: d1 A4: d4 A1: e1 A2 : e2 A3 : e3 A4 : e4 c A6 d6 A5 d5 A5 : e5 A6 : e6 m D(d6 c) : := , Quản lý khóa công khai nhờ PKI † H tầ khó ô kh i (PKI) ạ ng a c ng a „ Nối khóa công khai với thực thể thông qua một thực thể có thẩm quyền cấp phát chứng nhận số (Certificate Authority) Quản lý khóa công khai nhờ PKI † Mô hì h t đổi thô ti khón rao ng n a A2: d2 A3: d3 V(A6||e6,s6) c = E(e6 m) Certificate Authority A1 e1 s1 = S(A1||e1)A6||e6,s6 , A1: d1 A4: d4 , , A2 , e2, s2 = S(A2||e2) A3 , e3, s3 = S(A3||e3) A4 , e4, s4 = S(A4||e4) c A6: d6 A5:d5 A5 , e5, s5 = S(A5||e5) A6 , e6, s6 = S(A6||e6) m = D(d6 c), Quản lý khóa công khai nhờ PKI † Ưu điểm „ Chống tấn công chủ động „ CA chỉ cấp chứng nhận, không tham gia vào việc trao đổi thông tin giữa các bên „ Có thể giảm thiểu tương tác với CA bằng cách lưu các chứng nhận cục bộ † Nhược điểm „ Nếu thuật toán sinh chữ ký của CA bị đe dọa, tất cả các trao đổi thông tin đều bị đe dọa „ Độ tin cậy hoàn toàn dựa trên CA Quản lý khóa, giao thức mật mã,… † Quản lý khóa „ Khóa đối xứng „ Khóa công khai † PKI † Giao thức mật m㠆 Thống nhất khóa † Diffie-Hellman † Xác thực † Needham-Schroeder Giao thức † Gi thứao c „ Một chuỗi các bước thực hiện „ Cá bướ thự hiệ hải tườ i hc c c n p ng m n „ Tất cả các tình huống phải được dự tính và có các bước thực hiện trước „ Có ít nhất 2 bên tham dự „ Các bên tham dự phải hiểu biết và tuân thủ các bước thực hiện Giao thức mật m㠆 Gi thứ ật ã Gi thứ + Mật ao c m m = ao c mã học † Thô thườ ột i thứ ật ã ng ng m g ao c m m kết hợp các khía cạnh sau „ Thố hất khóng n a „ Xác thực „ Mã hóa „ Chống phủ nhận Giao thức mật m㠆 SSL/TLS „ Giao thức mật mã để trao đổi thông tin trên Internet „ SSL được phát triển bởi Netscape „ TSL kế thừa từ SSL phiên bản 3 0. „ Ứng dụng † Duyệt Web, Email, IM, VoIP,… † Thương mại điện tử: Visa, MasterCard, American Express,… Giao thức mật m㠆 SSL/TSL ồ 3 hg m p a 1. Thương lượng lựa chọn giải thuật † Thống nhất khóa: RSA Diffie Hellman, - ,… † Mã hóa khóa đối xứng: 3DES, AES,… † Chữ ký số: RSA, DSA,… † Hàm băm: SHA, MD5,… 2. Thống nhất khóa và xác thực 3. Mã hóa thông điệp Quản lý khóa, chia xẻ bí mật † Quản lý khóa „ Khóa đối xứng „ Khóa công khai † PKI † Giao thức mật m㠆 Thống nhất khóa † Diffie-Hellman † Xác thực † Needham-Schroeder Thống nhất khóa † T đổi thô ti bí ật ới tố độ rao ng n m v c nhanh „ Mật mã khóa đối ứngx † Thiết lập và trao đổi khóa Cá thự thể th i hải thố hất „ c c am g a p ng n khóa đối xứng „ Quá trình thống nhất khóa phải đảm bảo † Tính bí mật † Tính toàn vẹn Giao thức Diffie-Hellman † 1976 Diffie và Hellman phát minh , giao thức thống nhất khóa „ Hình thành và trao đổi khóa chung bí mật trên một kênh truyền tin không an toàn Sử d á kế ả lý h ế† ụng c c t qu trong t uy t nhóm số nguyên nhân tính đồng dư † Dựa t ên độ phức tạp của bài toánr „ Logarit rời rạc Diffie-Hellman 1. Alice (A) chọn và gửi cho Bob (B) số nguyên tố p và một phần tử nguyên thủy g thuộc nhóm nhân tính mod p † A -> B: p,g 2 Alice chọn một số tự nhiên ngẫu nhiên a và gửi g^a . mod p cho Bob † A -> B: g^a mod p 3. Bob chọn một số tự nhiên ngẫu nhiên b và gửi g^b mod p cho Alice † B -> A: g^b mod p 4. Alice tính (g^b mod p)^a mod p 5 Bob tính (g^a mod p)^b mod p. 6. Khóa chung bí mật g^(a*b) mod p Diffie-Hellman † Ví dụ: p = 23 g = 5 a = 6 b = 15, , , 1. Alice gửi Bob p=23, g=5 † A -> B: 23,5 2. Alice chọn a=6, và gửi Bob g^a mod p = 5^6 mod 23 = 8 † A -> B: 8 3. Bob chọn b=15, và gửi Alice g^b mod p = 5^15 mod 23 = 19 † B -> A: 19 4. Alice tính † 19^6 mod 23 = 2 b í h5. Bo t n † 8^15 mod 23 = 2 6. Khóa K = 2 Độ an toàn của Diffie-Hellman † Khóa bí mật „ Bài toán Diffie-Hellman † Biết g, g^a, g^b. Tìm g^(a*b)? „ Bài toàn Logarit rời rạc † Biết g^a. Tìm a? † Tính xác thực „ Tấn công dạng “Man-in-the-middle” † Alice và Bob muốn thống nhất khóa bí mật † E là kẻ ở iữve g a † Alice và Eve thống nhất g^(a*e) † Bob và Eve thống nhất g^(b*e) Quản lý khóa, giao thức mật mã,… † Quản lý khóa „ Khóa đối xứng „ Khóa công khai † PKI † Giao thức mật m㠆 Thống nhất khóa † Diffie-Hellman † Xác thực † Needham-Schroeder Xác thực † Rất hiề ứ d đòi hỏi á thự n u ng ụng c c c thể tham gia phải chứng minh danh tính „ Mô hình Client-Server an toàn † Quá trình các nhận danh tính của các thực thể phải đảm bảo „ Tính toàn vẹn † Chống mạo danh Giao thức Needham-Schroeder † 1978 Needham và Schroeder phát minh , giao thức xác thực trên mạng máy tính không an toàn ể ổ„ Chứng minh nhận dạng của các thực th trao đ i thông tin „ Ngăn chặn nghe lén, thay đổi thông tin † Ứng dụng „ Xác thực trong mô hình Client-Server: Kerberos † 2 loại giao thức „ Khóa đối xứng „ Khóa công khai Needham-Schroeder khóa đối xứng † Ali (A) ố t đổi thô ti ới ce mu n rao ng n v Bob (B) † Ali à B b ù ti tưở ột ce v o c ng n ng m Server (S) trung gian „ K khó đối ứ iữ A Sas a x ng g a va „ Kbs khóa đối xứng giữa B va S „ Na à Nb là các “nonce”v „ Kab là khóa đối xứng giữa A và B Needham-Schroeder khóa đối xứng 1 A gửi thông tin của mình và B cho S . † A -> S: A,B,Na 2. S gửi khóa Kab cho A, thông tin được mã hóa † S > A: {Na Kab B {kab A} Kbs} Kas- , , , , _ _ 3. A gửi khóa Kab cho Bob, thông tin được mã hóa † A -> B: {Kab,A}_Kbs 4 B t ả lời A đã hậ đượ khó K b thô ti đượ . r n n c a a , ng n c mã hóa † B -> A: {Nb}_Kab 5 A bá B ằ A ẵ à à đ iữ khó K b . o r ng s n s ng v ang g a a , thông tin được mã hóa † A -> B: {Nb-1}_Kab Needham-Schroeder khóa đối xứng † Tấ ô d “R l ”n c ng ạng ep ay † Giải pháp dùng trong Kerberos „ Tem thời gian (Timestamp) „ Nonce Needham-Schroeder khóa công khai † Ali (A) ố t đổi thô ti ới ce mu n rao ng n v Bob (B) † Ali à B b ù ti tưở ột ce v o c ng n ng m Server (S) trung gian „ K à k khó iê à ô kh i ủ Aa v a a r ng v c ng a c a „ Kb và kb khóa riêng và công khai của B „ Ks à ks khóa iêng à công khai của Sv r v „ Na và Nb là các “nonce” Needham-Schroeder khóa công khai 1. A yêu cầu S khóa công khai của B † A -> S: A,B 2. S gửi khóa công khai của B cho A † S -> A: {kb,B}_Ks 3 A ửi ủ ì h h B. g nonce c a m n c o † A -> B: {Na,A}_kb 4. B yêu cầu S khóa công khai của A † B -> S: B,A 5. S gửi khóa công khai của A cho B † S -> B: {ka,A}_Ks 6. B gửi nonce của mình và của A cho A † B > A: {Na Nb} ka- , _ 7. A khẳng định đã nhận được nonce của B † A ->B: {Nb}_kb Needham-Schroeder khóa công khai † Tấ ô d “M i th iddl ”n c ng ạng an- n- e-m e Bài tập Mật mã & Ứng dụng Trần Đức Khánh Bộ môn HTTT – Viện CNTT&TT ĐH BKHN Bài 1: Vòng lặp DES † Khóa dạng thập lục phân „ 133457799BBCDFF1 † Tin dạng thập lục phân „ 0123456789ABCDEF † Tính „ L0,R0 „ C0,D0 C1 1„ ,D „ K1 „ L1,R1 † L0 = 11001100000000001100110011111111 † R0 = 11110000101010101111000010101010 † C0 = 1111000011001100101010101111 † D0 = 0101010101100110011110001111 † C1 = 1110000110011001010101011111 † D1 1010101011001100111100011110= † K1 = 0001101100000010111011111111110001110 00001110010 † R1 = 11001111010010110110010101000100 Bài 2: Tính bù DES † Chứ i h ằng m n r ng „ |DES(m,k) = DES(|m,|k) † Từ đó iải th ật tì khó biết suy ra g u m a mã của tin và bù của tin, với độ phức tạp nhỏ hơn 2^56. † IP và FP không ảnh hưởng đến kết quả † E(|R) = | E(R) † Gọi KSi(k) là khóa vòng lặp i sinh ra từ khó b đầ k T óa an u . a c „ KSi(|k) = |KSi(k) † Đầu vào của S-boxes „ |E(R) xor |K † Ta có tính chất „ A xor B = |A xor |B † Từ đó suy ra đầu vào của S-boxes là „ E(R) xor K † Input: Tin x Mã DES(K x) Mã DES(K |x), , , , † Output: Khóa tương ứng với K 1 fo ll non te ted ke k do. r a - s y 2. c = DES(k,x) 3. if c == DES(K,x)then 4. return k 5. end if 6. if |c == DES(K,|x)then 7. return |k 8. end if 9. end for Bài 3: Khóa yếu DES † Ch biết K1 K2 K16o = = … = † Tìm tất cả các khóa thỏa mãn tính hất t êc r n † 4 khóa „ Tất cả các bit của C là 0 + tất cả các bit của D là 0 „ Tất cả các bit của C là 1 +tất cả các bit của D là 0 „ Tất cả các bit của C là 0 + tất cả các bit của D là 1 „ Tất cả các bit của C là 1 +tất cả các bit của D là 1 Bài 4: Tấn công RSA Tấn công dạng Common Moduli † Alice sử dụng khóa công khai RSA (n,ea) † Bob sử dụng khóa công khai RSA (n eb), † ƯSCLN(ea,eb) = 1 † Cho tin m † Eve biết mã ca của tin m mã hóa bởi Alice † Eve biết mã cb của tin m mã hóa bởi Bob † Eve có thể tính được m hay không? † Tính x y sao cho, „ x*ea + y*eb = 1 † Tính „ ca^x*cb^y † Ta biết „ ca^x*cb^y = m^(ea*x) * m^(eb*y) = m^(ea*x+eb*y) = m Bài 5: Tấn công Common Moduli † Ali ử d khó ô kh i (493 3)ce s ụng a c ng a , † Bob sử dụng khóa công khai (493,5) † Eve biết mã 293 của tin m mã hóa bởi Alice † Eve biết mã 421 của tin m mã hóa bởi Bob † Tính m Bài 6: Chứ ký số ElGamal † 2237p= † g = 2 † Khóa riêng là a = 1234 † Giá trị băm của tin m là h(m) = 111 † k = 2323 † Tạo chữ ký † Kiểm định chữ ký † 799r = † k^-1 = 1979 † s = 1339 Bài 7: Tấn công Needham- Schroeder † Trình bày 1 kịch bản tấn công giao thức Needham-Schroeder khóa công khai dạng “Man-in-the-middle” † Đưa ra một giải pháp chống tấn công Tấ ôn c ng † A -> E: {Na,A}_ke † E -> B: {Na,A}_kb † B -> E: {Na,Nb}_ka † E -> A: {Na,Nb}_ka † A -> E: {Nb} ke_ † E -> B: {Nb}_kb Giải háp p † Thay luật „ B -> A: {Na,Nb}_ka † bằng luật „ B -> A: {Na,Nb,B}_ka An toàn Phần mềm Trần Đức Khánh Bộ môn HTTT – Viện CNTT&TT ĐH BKHN An toàn Phần mềm † Phầ ề á tí hn m m c n „ Các phần mềm ác tính thường gặp „ Cá biệ há ă hặc n p p ng n c n † Lỗi phần mềm á lỗ hầ ề h ờ ặ„ C c i p n m m t ư ng g p „ Các biện pháp an toàn † Kiể thử (T ti )m es ng † Kiểm định hình thức (Formal Verification) † Lập trình an toàn (Secure Coding) An toàn Phần mềm † Phầ ề á tí hn m m c n „ Các phần mềm ác tính thường gặp „ Cá biệ há ă hặc n p p ng n c n † Lỗi phần mềm á lỗ hầ ề h ờ ặ„ C c i p n m m t ư ng g p „ Các biện pháp an toàn † Kiể thử (T ti )m es ng † Kiểm định hình thức (Formal Verification) † Lập trình an toàn (Secure Coding) Phần mềm ác tính † Chạy theo chủ định của người lập trình ra nó † Chạy và phản ứng theo cách bất thường, không trông đợi từ phía người dùng † Ẩn náu trong hệ thống, hoặc gắn vào các phần mềm không ác tính † Có thể làm được mọi thứ mà một phần mềm có thể làm Các phần mềm ác tính thường gặp † Vi rut (Virus) „ Gắn vào một chương trình, phát tán bản sao ra khác chương trình khác † Trojan horse „ Có các tính năng bất thường † Bom logic (Logic bomb) „ Phát động khi điều kiện được thỏa mãn † Bom thời gian (Time bomb) „ Phát động khi đến hạn thời gian † Trapdoor „ Cho phép truy nhập trái phép các tính năng † Sâu (Worm) „ Phát tán bản sao qua mạng † Thỏ (Rabbit) „ Nhân bản đến khi không còn tài nguyên Kích hoạt Virus † Vi hỉ â h i khi đượ kí h h t rus c g y ạ c c oạ „ Virus chạy cùng với một chương trình khác chạy bởi người dùng „ Virus chạy khi mở tệp đính kèm trong e- mails, tệp ảnh, tệp đồ họa Phát tán Virus † Mã i đí h à ã hươ t ì hv rus n v o m c ng r n „ Nối mã virus với mã chương trình „ Mã i b h ã hươ t ì hv rus ao quan m c ng r n „ Mã virus tích hợp vào mã chương trình † Vi tài liệrus u „ Tài liệu chứa cả dữ liệu và các lệnh ẩNơi n náu Virus † Vù B t (B t S t )ng oo oo ec or † Bộ nhớ (Memory-Resident) Ứ† ng dụng (Application Program) † Thư viện (Library) † … Dấu hiệu nhận biết Virus † Mã i ó kiể ẫ đặ biệtv rus c u m u c „ Có thể nhận biết các đoạn mã của từng loại virus † Mã đính kèm không thay đổi „ Chương trình đính kèm sẽ lớn hơn chương trình ban đầu † Vị trí đính kèm không thay đổi Các biện pháp ngăn chặn † Sử dụng phần mềm thương mại từ nguồn tin cậy † Kiểm thử phần mềm trên một máy tính/hệ thống tách biệt † Mở tệp đính kèm chỉ khi nào biết rõ nguồn gốc † Lưu ở nơi an toàn một phiên bản có thể tái ủ hệ hố đ ử dtạo c a t ng ang s ụng † Sử dụng phần mềm quét diệt virus Một số ngộ nhận về virus † Virus chỉ lây nhiễm trên các hệ thống MS Windows † Virus không thể thay đổi các file “hidden” hoặc “read only”- † Virus chỉ xuất hiện trong tệp dữ liệu, chương trình ỉ á á ô† Virus ch ph t t n th ng qua qua đĩa, e- mail † Virus không thể tồn tại trong bộ nhớ sau khi reboot power off/on † Virus lây nhiễm trên phần cứng An toàn Phần mềm † Phầ ề á tí hn m m c n „ Các phần mềm ác tính thường gặp „ Cá biệ há ă hặc n p p ng n c n † Lỗi phần mềm á lỗ hầ ề h ờ ặ„ C c i p n m m t ư ng g p „ Các biện pháp an toàn † Kiể thử (T ti )m es ng † Kiểm định hình thức (Formal Verification) † Lập trình an toàn (Secure Coding) An toàn Phần mềm † Phầ ề á tí hn m m c n „ Các phần mềm ác tính thường gặp „ Cá biệ há ă hặc n p p ng n c n † Lỗi phần mềm á lỗ hầ ề h ờ ặ„ C c i p n m m t ư ng g p „ Các biện pháp an toàn † Kiể thử (T ti )m es ng † Kiểm định hình thức (Formal Verification) † Lập trình an toàn (Secure Coding) ỗL i phần mềm † Lậ t ì h iê thườ ắ lỗip r n v n ng m c „ không cố ý „ khô á tí hng c n „ nhưng đôi khi gây hậu quả nghiêm trọng ỗCác l i phần mềm thường gặp † T à bộ đệ (B ff O fl )r n m u er ver ow „ Array Index Out of Bound † Khô đầ đủ (I l t M di ti )ng y ncomp e e e a on „ Format String l fl„ Imp icit Cast, Integer Over ow † Đồng bộ (Synchronization) „ File stat()/open() ỗL i tràn bộ đệm 1 char buf[80];. 2. void vulnerable() { 3. gets(buf); 4. } † Điều gì xảy ra nếu đầu vào có hơn 80 byte „ char buf[80]; int authenticated = 0; „ char buf[80]; int (*fnptr)(); ỗL i không đầy đủ 1 void vulnerable() {. 2. char buf[80]; 3. if (fgets(buf, sizeof buf, stdin) == NULL) 4. return; 5. printf(buf); 6. } † Điều gì sẽ xảy ra? ỗL i không đầy đủ 1. char buf[80]; 2. void vulnerable() { 3. int len = read_int_from_network(); 4. char *p = read_string_from_network(); 5 if (l > i f b f) {. en s zeo u 6. error("length too large, nice try!"); 7. return; 8. } 9. memcpy(buf, p, len); 10. } 11. void *memcpy(void *dest, const void *src, size_t n); 12 typedef unsigned int size t;. _ † Điều gì sẽ xảy ra? ỗL i đồng bộ 1 int openfile(char *path) {. 2. struct stat s; 3. if (stat(path, &s) < 0) 4 et n 1. r ur - ; 5. if (!S_ISRREG(s.st_mode)) { 6. error("only allowed to regular files; nice try!"); 7. return -1; 8. } 9. return open(path, O_RDONLY); 10.} † Điều gì sẽ xảy ra? An toàn Phần mềm † Phầ ề á tí hn m m c n „ Các phần mềm ác tính thường gặp „ Cá biệ há ă hặc n p p ng n c n † Lỗi phần mềm á lỗ hầ ề h ờ ặ„ C c i p n m m t ư ng g p „ Các biện pháp an toàn † Kiể thử (T ti )m es ng † Kiểm định hình thức (Formal Verification) † Lập trình an toàn (Secure Coding) An toàn Phần mềm † Phầ ề á tí hn m m c n „ Các phần mềm ác tính thường gặp „ Cá biệ há ă hặc n p p ng n c n † Lỗi phần mềm á lỗ hầ ề h ờ ặ„ C c i p n m m t ư ng g p „ Các biện pháp an toàn † Kiể thử (T ti )m es ng † Kiểm định hình thức (Formal Verification) † Lập trình an toàn (Secure Coding) ểKi m thử † M đí h ủ kiể thử là tì lỗi ục c c a m m ra của hệ thống „ Nế không tìm a lỗi chúng ta hi ọng u r , v rằng hệ thống là an toàn ểQuy trình ki m thử 1 Đơ ị (U it T ti ). n v n es ng 2. Tích hợp (Integration Testing) 3. Chức năng (Function Testing) 4. Hiệu năng (Performance Testing) 5. Công nhận (Acceptance Testing) 6. Cài đặt (Installation Testing) Một số loại hình kiểm thử đặc biệt † Hồi (R i T ti ) quy egress on es ng „ Nếu hệ thống có thay đổi, chỉnh sửa † X ắ (F T ti )o n uzz es ng „ Các trường hợp đặc biệt, dễ bị khai thác và tấn công ểCác tiếp cận trong ki m thử † Hộp đen (Black box)- „ Không có thông tin về cấu trúc bên trong của phần mềm Dù h ấ ả á ứ ủ ì h kiể hử„ ng c o t t c c c m c c a quy tr n m t † Hộp trắng (White-box) „ Biết cấu trúc bên trong của phần mềm „ Thường dùng cho kiểm thử đơn vị † Hộp xám (Grey-box) ỗ„ H n hợp † Đen: kiểm thử † Trắng: thiết kế ca kiểm thử An toàn Phần mềm † Phầ ề á tí hn m m c n „ Các phần mềm ác tính thường gặp „ Cá biệ há ă hặc n p p ng n c n † Lỗi phần mềm á lỗ hầ ề h ờ ặ„ C c i p n m m t ư ng g p „ Các biện pháp an toàn † Kiể thử (T ti )m es ng † Kiểm định hình thức (Formal Verification) † Lập trình an toàn (Secure Coding) ểKi m định hình thức † M đí h ủ kiể đị h hì h thứ là ục c c a m n n c chứng minh hệ thống an toàn Các tiếp cận trong kiểm định hình thức † Kiểm định mô hình (Model checking) „ Phần mềm được đặc tả bằng một mô hình „ Quá trình kiểm định thực hiện bằng cách duyệt ấ ả á hái hô ấ ả á t t c c c trạng t t ng qua t t c c c chuyển tiếp † Suy diễn logic (Logical Inference) „ Đầu vào của phần mềm bị ràng buộc bằng một biểu thức logic „ Tương tự với đầu ra „ Bản thân phần mềm cũng bị ràng buộc bằng một biểu thức logic Kiểm định hình thức sử dụng suy ễdi n logic Chương trìnhĐầu vào Đầu ra Đầu vào + Điều kiện trước Đầu ra +Điều kiện sau Chương trình + Điều kiện Điều kiện trước (Precondition) 1 /* Requires: n >= 1 */. 2. int fact(int n) { 3. int t; 4. if (n == 1) 5 return 1;. 6. t = fact(n-1); 7. t *= n; 8. return t; 9. } Điều kiện sau (Postcondition) 1 /* Ensures: returnvalue >= 0 */. 2. int fact(int n) { 3. int t; 4. if (n == 1) 5 return 1;. 6. t = fact(n-1); 7. t *= n; 8. return t; 9. } Điều kiện trong chương trình 1 int fact(int n) {. 2. int t; 3. if (n == 1) 4 et n 1. r ur ; 5. /* n>=2 */ 6. t = fact(n-1); 7. /* t>=0 */ 8. t *= n; 9. /* t>=0 */ 10. return t; 11.} Điều kiện 1 /* Requires: n >= 1; Ensures: returnvalue >= 0 */. 2. int fact(int n) { 3. int t; 4. if (n == 1) 5. return 1; 6. /* n>=2 */ 7. t = fact(n-1); 8. /* t>=0 */ 9. t *= n; 10. /* t>=0 */ 11. return t; 12. } An toàn Phần mềm † Phầ ề á tí hn m m c n „ Các phần mềm ác tính thường gặp „ Cá biệ há ă hặc n p p ng n c n † Lỗi phần mềm á lỗ hầ ề h ờ ặ„ C c i p n m m t ư ng g p „ Các biện pháp an toàn † Kiể thử (T ti )m es ng † Kiểm định hình thức (Formal Verification) † Lập trình an toàn (Secure Coding) Lập trình an toàn (Secure Coding) † N ê tắguy n c „ Mô đun (Modularity) „ Đó ói (E l ti )ng g ncapsu a on „ Giấu thông tin (Information Hiding) Mô đun † Thiết kế á hợ hầc c p p n „ Một mục tiêu/nhiệm vụ „ Nhỏ „ Đơn giản „ Độc lập Đóng gói † Giấu thông tin về cách thức cài đặt các hợp phần „ Ví dụ: lớp ảo C++ giao diện Java , † Giảm thiểu chia xẻ giữa các hợp phần „ Ví dụ: các thư viện † Các hợp phần tương tác thông qua các giao diện „ Ví dụ: tương tác giữa các đối tượng thông qua các phương thức Giấu thông tin † Một hợ hầ hư ột hộ đ hì p p n n m p en n n từ phía ngoài „ Ví d một lớp C++ Ja aụ: , v † Các phần tử bên ngoài không thể thay đổi sữa chữa thông tin một cách ác ý và trái phép „ Ví dụ: các thuộc tính private protected, Lập trình an toàn (Secure Coding) † Một số quy tắc thực hành „ Sử dụng một chuẩn lập trình „ Lập trình phòng thủ † Kiểm tra dữ liệu đầu vào/đầu ra † Sử dụng đặc quyền thấp nhất có thể „ Thiết kế theo chính sách an toàn „ Sử dụng các công cụ đảm bảo chất lượng † Kiểm thử † Kiểm định † Duyệt lại mã An toàn Hệ điều hành Trần Đức Khánh Bộ môn HTTT – Viện CNTT&TT ĐH BKHN Hệ điều hành † V i t òa r „ Giao diện giữa phần cứng và phần mềm „ Q ả lý tài êu n nguy n „ Cung cấp các phương tiện bảo vệ phần cứng và ứng dụng An toàn Hệ điều hành † Các vấn đề bảo vệ trong Hệ điều hành „ Bảo vệ bộ nhớ và địa chỉ „ Điều khiển truy nhập „ Bảo vệ tệp „ Xác thực người dùng † Nguyên tắc thiết kế Hệ điều hành „ Giám sát thẩm quyền (Reference Monitor) „ Phân hoạch (Separation)/Cách ly (Isolation) „ Thiết kế hâ tầ (L d D i )p n ng ayere es gn † Hệ điều hành tin cậy (Trusted Operating System) An toàn Hệ điều hành † Các vấn đề bảo vệ trong Hệ điều hành „ Bảo vệ bộ nhớ và địa chỉ „ Điều khiển truy nhập „ Bảo vệ tệp „ Xác thực người dùng † Nguyên tắc thiết kế Hệ điều hành „ Giám sát thẩm quyền (Reference Monitor) „ Phân hoạch (Separation)/Cách ly (Isolation) „ Thiết kế hâ tầ (L d D i )p n ng ayere es gn † Hệ điều hành tin cậy (Trusted Operating System) Bả ệ bộ hớ à đị hỉo v n v a c † Là thế à ă hặ ột hươ m n o ng n c n m c ng trình/người dùng can thiệp vào không gian bộ nhớ của chương trình/người dùng khác? „ Phân đoạn (Segmentation) „ Phân trang (Paging) Phân đoạn (Segmentation) † Phân chia chương trình thành các đoạn „ Tương ứng với các đoạn dữ liệu, các chương trình con Mỗi đ ó ề khá h (R W E)„ oạn c quy n c n au , , † Phân chia bộ nhớ vật lý thành các đoạn „ Tương ứng với, các mảng dữ liệu người dùng hoặc các đoạn mã chương trình † Mỗi đoạn có một tên duy nhất „ , † Hệ điều hành phải duy trì một bảng các đoạn Phân trang (Paging) † Phân chia chương trình thành các trang (page) cùng kích thước † Phân chia bộ nhớ vật lý thành các khung trang (page frame) cùng kích thước „ 512 đến 4096 byte † Mỗi trang có một tên duy nhất „ ệ ề à ả ì ộ ả ᆠH đi u h nh ph i duy tr m t b ng c c trang Kết hợp Phân đoạn và Phân trang † Ưu điểm của phân đoạn „ Bảo vệ bộ nhớ bằng cách phân quyền theo chương trình/người dùng „ Hệ điều hành kiểm soát việc quyền đọc/ghi/thực hiện trên bộ nhớ Ư ể ủ ↠u đi m c a ph n trang „ Tốc độ † T á hệ điề hà h hiệ đ irong c c u n n ạ „ Kết hợp Phân đoạn+Phân trang Điề khiể t hậu n ruy n p † Rât nhiều đối tượng được truy nhập „ Bộ nhớ „ Phần cứng „ Tệp „ Thông tin hệ thống: bảng, cơ chế bảo vệ, lệnh đặc quyền „ … † Vấ đề à đặ n an to n t ra „ Ai được truy nhập gì với đặc quyền nào? ế Điề khiể t hậCơ ch u n ruy n p † D h á h điề khiể t hậan s c u n ruy n p „ Danh sách các đối tượng truy nhập „ Mỗi đối tượ ó ột d h á h á hủ ng c m an s c c c c thể † Ma trận điều khiển truy nhập „ Một chiều là danh sách các chủ thể „ Một chiều là danh sách các đối tượng truy nhập tương ứng với các chủ thể Bả ệ tệo v p † Bả ệ hóo v n m „ Tất cả người dùng được phân thành nhóm „ Quyền sử dụng được một người dùng thiết lập cho mình và cả nhóm † Bảo vệ cá thể „ Mỗi người dùng có một số quyền † Quyền sử dụng lâu dài † Quyền sử dụng tạm thời Bả ệ tệo v p † Hệ thố tệ UNIX/LINUXng p „ Mỗi tệp có chủ sở hữu và nhóm sở hữu „ Q ề đượ thiết lậ bởi hủ ở hữuy n c p c s u † R,W,E † setid owner group other, , , „ Chỉ có chủ sở hữu và root mới được phép thay đổi quyền Xá thự ười dùc c ng ng † Hệ điề hà h ả lý hiề ười u n qu n n u ng dùng „ Ai là ai? † Giải pháp xác thực người dùng Mật khẩ„ u „ Một số đặc điểm sinh trắc học ằ ẩXác thực b ng mật kh u † Hệ điều hành lưu trữ một tệp người dùng/mật khẩu „ Tệp thông thường † Thông tin lưu dạng văn bản † Độ an toàn thấp „ Tệp mã hóa † Mã hó ả tệ h ặ hỉ ã hó ật khẩa c p o c c m a m u † Độ an toàn phụ thuộc vào hê mật m㠆 Để tăng cường độ an toàn „ Mật khẩu đủ dài, tránh chứa các thông tin đặc biệt „ Thay đổi mật khẩu đều đặn „ Đề phòng tấn công dạng “đăng nhập giả” ằ ắXác thực b ng sinh tr c học † Các đặc điểm sinh trắc học „ Vân tay, mắt, khuôn mặt, chữ viết… † Xác thực bằng sinh trắc học tương đối mới „ Phát triển nhanh trong những năm † Một số nhược điểm „ Giá thành „ Tốc độ/Độ chính xác „ Giả mạo An toàn Hệ điều hành † Các vấn đề bảo vệ trong Hệ điều hành „ Bảo vệ bộ nhớ và địa chỉ „ Điều khiển truy nhập „ Bảo vệ tệp „ Xác thực người dùng † Nguyên tắc thiết kế Hệ điều hành „ Giám sát thẩm quyền (Reference Monitor) „ Phân hoạch (Separation)/Cách ly (Isolation) „ Thiết kế hâ tầ (L d D i )p n ng ayere es gn † Hệ điều hành tin cậy (Trusted Operating System) ẩGiám sát th m quyền † Phần quan trọng nhất của hệ điều hành † Là một tập các điều khiển truy nhập các đối tượng „ Bộ nhớ, thiết bị, tệp, thông tin các tiến trình, … † Đặc điểm „ Không bao giờ bị suy yếu, tê liệt „ Luôn được gọi đến khi một đối tượng được yêu cầu sử dụng „ Nhỏ gọn, để có thể dễ dàng phân tích và kiểm thử và đảm bảo tính đầy đủ â áPh n hoạch/C ch ly † Phân hoạch vật lý „ Các tiến trình khác nhau sử dụng các thiết bị khác nhau â ờ† Ph n hoạch th i gian „ Các tiến trình với yêu cầu khác nhau thực hiện tại các thời gian khác nhau † Phân hoạch logic (Cách ly) „ Người dùng/tiến trình thực hiện nhiệm vụ của mình trong không gian của mình † Phân hoạch mật m㠄 Người dùng/tiến trình giấu thông tinh của mình Thiết kế phân tầng 1 Lõi an toàn (Security Kernel). 1. Phần cứng 2. An toàn 2 Lõi hệ điều hành. 1. Đồng bộ 2. Cấp phát 3 Hệ điều hành. 1. Sắp đặt, Chia xẻ, Quản lý bộ nhớ 2. Hệ thống tệp, Cấp phát thiết bị 3. Tính năng khác 4. Ứng dụng Thiết kế phân tầng † Một mô đun = nhiều mô đun hợp phần „ Mỗi mô đun hợp phần thuộc một tầng khác nhau của kiến trúc đa tầng † Ví dụ: Mô đun xác thực người dùng 1. Cập nhật thông tin người dùng 2. So sánh thông tin người dùng ì ế ờ ù3. T m ki m ngư i d ng 4. Giao diện xác thực người dùng An toàn Hệ điều hành † Các vấn đề bảo vệ trong Hệ điều hành „ Bảo vệ bộ nhớ và địa chỉ „ Điều khiển truy nhập „ Bảo vệ tệp „ Xác thực người dùng † Nguyên tắc thiết kế Hệ điều hành „ Giám sát thẩm quyền (Reference Monitor) „ Phân hoạch (Separation)/Cách ly (Isolation) „ Thiết kế hâ tầ (L d D i )p n ng ayere es gn † Hệ điều hành tin cậy (Trusted Operating System) Hệ điều hành tinh cậy † Xác thực người dùng † Điều khiển truy nhập „ Thường xuyên „ Tùy ý † Bảo vệ đối tượng sử dụng lại † Đầy đủ † Đường dẫn tin cậy † Kiểm tra log † Phát hiện đột nhập An toàn Cơ sở dữ liệu Trần Đức Khánh Bộ môn HTTT – Viện CNTT&TT ĐH BKHN Cơ sở dữ liệu † Tậ hợ á dữ liệ ó hệ đượ p p c c u c quan c lưu trữ (tập trung hoặc phân tán) để người dùng có thể truy nhập khi cần Mục tiêu an toàn CSDL † Bí ậtm „ Dữ liệu nhạy cảm † T à o n vẹn „ Vật lý „ Logic † Sẵn dùng † Điều khiển truy nhập † Xác thực người dùng An toàn CSDL † Cá ối đ d CSDLc m e ọa „ Cập nhật CSDL „ Dữ liệ h ảu n ạy c m „ Suy diễn „ SQL Injection † Thiết kế CSDL tin cậy CSDL đ tầ„ a ng An toàn CSDL † Cá ối đ d CSDLc m e ọa „ Cập nhật CSDL „ Dữ liệ h ảu n ạy c m „ Suy diễn „ SQL Injection † Thiết kế CSDL tin cậy CSDL đ tầ„ a ng Cập nhật CSDL † Sự ố hệ thốc ng „ Hệ thống bị sự cố khi đang cập nhật CSDL † Tương tranh „ Nhiều người dùng truy nhập sửa đổi cùng lúc vào cùng dữ liệu Cập nhật CSDL và sự cố hệ thống † Giải pháp 2 pha 1. Intent 1. Thu thập tài nguyên và thông tin, tính toán và chuẩn bị dữ liệu cho pha sau 2. Đánh dấu kết thúc pha Intent „ Set COMMIT FLAG - 2. Commit 1. Thực hiện cập nhật CSDL với các dữ liệu đã ẩchu n bị ở pha trước 2. Đánh dấu kết thúc pha Commit „ Unset COMMIT-FLAG Cập nhật CSDL và tương tranh † Cậ hật CSDL là ột th tá ơ p n m ao c c bản „ Chỉ một thao tác cập nhật thực hiện t ên r một dữ liệu „ Hệ quản trị CSDL sẽ bảo vệ dữ liệu đang được cập nhật „ Khi thao tác cập nhật một dữ liệu kết thúc, các thao tác khá mới có quyền thực hiện trên dữ liệu đó Dữ liệu nhạy cảm † Dữ liệ ô hú khô ê óu c ng c ng ng n n c † Thông tin nhạy cảm „ Bảng „ Bản ghi ờ„ Trư ng Dữ liệu nhạy cảm † Cá l i ò ỉ dữ liệ h ảc oạ r g u n ạy c m „ Dữ liệu chính xác „ Cận „ Kết quả âm „ Tồn tại „ Giá trị xác xuất Dữ liệu nhạy cảm † Hệ ả t ị CSDL ả lý t hậ qu n r qu n ruy n p dữ liệu nhạy cảm bằng điều khiển truy nhập ễSuy di n † S diễ dữ liệ h ả từ dữ liệ uy n u n ạy c m u không nhạy cảm ễSuy di n † Cá l i tấ ô diễc oạ n c ng suy n „ Trực tiếp (Direct) „ Giá tiế (I di t)n p n rec † Tổng (Sum) † Đếm (Count) † Trung bình (Mean) † … ễSuy di n † Cá biệ há ă hặc n p p ng n c n „ Phân tích câu truy vấn „ N t thô tigụy rang ng n „ Loại bỏ thông tin nhạy cảm SQL Injection † SQL „ Structured Query Language „ N ô ữ t ấ CSDLg n ng ruy v n SQL Injection † Tấ ô SQL I j tin c ng n ec on „ statement = “SELECT * FROM users WHERE name = ‘ “ + userName +” ‘;” Điều gì xảy ra nếu userName = a’ or ‘t’=‘t Điều gì xảy ra nếu userName = a';DROP TABLE users; SQL Injection † Biện pháp ngăn chặn „ Mức lập trình † Kiểm soát chặt chẽ đầu vào † Loại bỏ các ký tự đặc biệt „ Ở mức CSDL ể† Dùng lệnh prepare đ định dạng câu truy vấn „ Phân tích tĩnh câu truy vấn † Phát hiện điều kiện “t = t” „ Kiểm thử An toàn CSDL † Cá ối đ d CSDLc m e ọa „ Cập nhật CSDL „ Dữ liệ h ảu n ạy c m „ Suy diễn „ SQL Injection † Thiết kế CSDL tin cậy CSDL đ tầ„ a ng CSDL đa tầng † Các tầng CSDL tương ứng với mức độ nhạy cảm của dữ liệu † Các tiếp cận „ Phân ngăn (Partitioning) „ Mã hóa (Encryption) „ Khóa † Khóa toàn vẹn (Integrity Lock) † Khóa nhạy cảm (Sensitive Lock) „ Front-end tin cậy (Trusted Front-end) „ Bộ lọc giao hoán (Commutative Filter) „ Cửa sổ (Window/View) Phân ngăn † CSDL đượ hi thà h á CSDL khá c c a n c c c nhau ở mức độ nhạy cảm khác nhau † Ư điểu m „ Quản lý an toàn ở nhiều mức khác nhau ể† Nhược đi m „ Dư thừa „ Không kết hợp dữ liệu ở các mức nhạy cảm khác nhau Mã hóa † Mỗi dữ liệ h ả ẽ đượ ã hó u n ạy c m s c m a bằng một khóa tương ứng † Ư điểu m „ Quản lý an toàn ở nhiều mức khác nhau ể† Nhược đi m „ Tốc độ „ Không gian lưu trữ Khóa toàn vẹn † M tiê đả bả tí h t à à ục u m o n o n vẹn v giới hạn truy nhập † Khó a „ Checksum † Tí h t á bằ hà ã hó h ặ hà băn o n ng m m a o c m m † Giá trị phụ thuộc vào Data ID + Data + Sensitivity Label Khóa nhạy cảm † M tiê h iấ độ h ả ủ ục u c e g u n ạy c m c a dữ liệu † Khóa „ M㠆 Tí h t á bằ hà ã hó h ặ hà băn o n ng m m a o c m m † Giá trị phụ thuộc vào Data ID + Sensitivity Level Front-end tin cậy † Hoạt động giống “Giám sát thẩm quyền” † Điều khiển truy nhập CSDL 1 Xác thực người dùng. 2. Kiểm tra quyền người dùng 3. Gửi truy vấn cho hệ quản trị CSDL 4. Nhận kết quả truy vấn 5. Phân tích độ nhạy cảm của kết quả truy vấn, so sánh với quyền người dùng 6. Định dạng lại kết quả truy vấn 7. Gửi kết quả truy vấn cho người dùng Bộ lọc giao hoán † Hoạt động giống “Front end tin cậy”- † Điều khiển truy nhập CSDL 1. Xác thực người dùng 2. Kiểm tra quyền người dùng 3. Định dạng lại truy vấn 4 Gửi truy vấn cho hệ quản trị CSDL. 5. Nhận kết quả truy vấn 6. Phân tích độ nhạy cảm dữ liệu của kết quả truy vấn so sánh với quyền người dùng, 7. Định dạng lại kết quả truy vấn 8. Gửi kết quả truy vấn cho người dùng ổCửa s † M tiê iới h “tầ hì ” ủ ục u g ạn m n n c a người dùng theo quyền „ Q ền đọc ghiuy , † Mỗi cửa sổ là một tập con của CSDL Mỗi tậ tươ ứ ới dữ liệ à „ p con ng ng v u m người dùng có quyền sử dụng An toàn Mạng Trần Đức Khánh Bộ môn HTTT – Viện CNTT&TT ĐH BKHN Mạng máy tính † Môi trường sử dụng † Tôpô và kích thước † Phương tiện truyền thông „ Cáp Cáp quang Vi sóng Hồng ngọa Satellite, , , , † Giao thức „ 7 tầng OSI: Vật lý, Liên kết Dữ liệu, Mạng, Vận chuyển Phiên Trình diễn Ứng dụng , , , † Địa chỉ „ MAC, IP † Đị h t ến uy n † Loại mạng „ LAN, WAN, Internets An toàn Mạng † Các mối đe dọa „ Thăm dò „ Nghe trộm „ Mạo danh lừa đảo, „ Lỗ hổng trang Web „ Từ chối dịch vụ „ Mã lưu động † Các biện pháp ngăn chặn „ Mã hóa Xá thự„ c c „ Tường lửa „ Phát hiện đột nhập An toàn Mạng † Các mối đe dọa „ Thăm dò „ Nghe trộm „ Mạo danh lừa đảo, „ Lỗ hổng trang Web „ Từ chối dịch vụ „ Mã lưu động † Các biện pháp ngăn chặn „ Mã hóa Xá thự„ c c „ Tường lửa „ Phát hiện đột nhập Thăm dò † Q ét ổ (P t S )u c ng or can „ Thu thập thông tin đối tượng tấn công † dịch vụ cổng đang hoạt động (HTTP:80 , , POP:110, SMTP:25, FTP:21) † phiên bản hệ điều hành † phiên bản ứng dụng „ Tham khảo danh sách các lỗ hổng của á ê ảc c phi n b n „ Thực hiện tấn công Nghe trộm † Đườ t ề áng ruy n c p „ Sử dụng “packet sniffer” „ Lậ t ì h l i d p r n ạ car † Wireless í h ệ ấ dễ b h ộ„ T n i u r t ị ng e tr m † Sử dụng ăng ten Mạo danh, lừa đảo † Phỏng đoán thông tin xác thực của đối tượng tấn công „ Đoán mật khẩu † Nghe trộm thông tin xác thực của đối tượng tấn công „ Nghe trộm mật khẩu † Tận dụng lỗ hổng cơ chế xác thực „ Tràn bộ đệm † Thô ti á thự ô ộng n x c c c ng c ng „ Thiết bị mạng quản lý bởi SNMP † Man-in-the-middle † Phishing ỗ ổL h ng trang Web † Bôi ấ (D f t)x u e acemen † Tràn bộ đệm † Dot-Dot-Slash „ ../.. † Gọi phương thức phía máy chủ Từ chối dịch vụ † Tràn kết nối (Connection Flooding) „ Tấn công giao thức TCP, UDP, ICMP † Ping, Smurf, Syn Flood † DNS (Domain Name Server) „ Tận dụng lỗi Buffer Overflow để thay đổi thông tin định tuyến † DNS cache poisoning † Từ hối dị h hâ tá (DD S)c c vụ p n n o „ Dùng các Zombie đồng loạt tấn công Mã lưu động † Cookie „ Cookie lưu thông tin người dùng (phiên, lâu dài) † Scripts Tấ ô á t ASP JSP CGI PHP„ n c ng c c rang , , , † ActiveX † Mã Java „ Applet † Auto Exec „ exe doc. , . † Bot „ Trojan Horse An toàn Mạng † Các mối đe dọa „ Thăm dò „ Nghe trộm „ Mạo danh lừa đảo, „ Lỗ hổng trang Web „ Từ chối dịch vụ „ Mã lưu động † Các biện pháp ngăn chặn „ Mã hóa Xá thự„ c c „ Tường lửa „ Phát hiện đột nhập Mã hóa † Mã hóa liên kết „ Thông tin được mã hóa ở tầng Data Link của mô hình OSI † Mã hóa end-to-end „ Thông tin được mã hóa ở tầng Application của mô hình OSI † VPN (Virtual Private Network) „ Trao đổi thông tin giữa người dùng và Firewall thông qua kênh mã hóa † PKI „ Mật mã công khai và chứng nhận † Giao thức mật m㠄 SSH, SSL, IPSec Xác thực † Mật khẩ ột lầu m n „ Password Token † Hệ Ch ll Ra enge- esponse † Xác thực số phân tán † Kerberos Tường lửa † Cô để l thô ti di h ể ng cụ ọc ng n c uy n giữa “mạng bên trong” và “mạng bên ngoài” „ Ví dụ: Mạng LAN và Internet † Mục tiêu ngăn chặn nguy cơ đến từ mạng bên ngoài † Thự hiệ ă hặ thô hí h c n ng n c n ng qua c n sách an toàn Tường lửa Cá l i tườ lửc oạ ng a † Lọc gói (Packet Filtering Gateways) † Duyệt trạng thái (Stateful Inspection Firewalls) † Cổng ứng dụng (Application Proxies) † Gác (Guards) † Cá nhân (Personal Firewalls) Phát hiện đột nhập † Kiểm tra người dùng và hoạt động hệ thống † Ghi lại cấu hình hệ thống để phát hiện nguy cơ † Đá h iá tí h t à ủ hệ thố à dữ n g n o n vẹn c a ng v liệu † Phát hiện các dạng tấn công † Phát hiện các hoạt động bất thường thông qua phân tích thống kê † Sửa chữa lỗi cấu hình hệ thống † Cài đặt và vận hành các hệ thống bẫy đột nhập Phát hiện đột nhập Cá l i hệ thố hát hiệ đột hậc oạ ng p n n p † Hệ phát hiện đột nhập dựa trên mẫu † Hệ phát hiện đột nhập dùng Heuristics † Hệ phát hiện đột nhập hoạt động bí mật † Hệ Tripwire

Các file đính kèm theo tài liệu này:

  • pdfSlide An Toàn Hệ Thống Thông Tin.pdf