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
299 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 3302 | Lượt tải: 3
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:
- Slide An Toàn Hệ Thống Thông Tin.pdf