Professional Documents
Culture Documents
Tài sản
ả nào?
à ?
Mối đe dọa nào?
Biện pháp ngăn chặn gì?
An toàn HTTT
Tài sản:
ả phần
hầ cứng,
ứ phần
hầ mềm,
ề dữ
liệu
Mối đe
đ dọa:
d phá
há hoại,
h i can thiệp,
thiệ sửaử
đổi
Biện
Biệ pháp
há ngănă chặn:
hặ mã ã hóa,
hó kiểm
kiể
soát thông qua phần mềm/phần
cứng/các chính sách
An toàn HTTT
3 Mục tiêu:
Bí mật (Confidentiability): tài sản chỉ
được truy nhập bởi những người có
quyền
Toàn vẹn (Intergrity): tài sản chỉ
được tạo/xóa/sửa đổi bởi những người
có quyền
Sẵn dùng (Availability): tài sản sẵn
sàng để đáp ứng sử dụng cho những
người
ười có
ó quyền
ề
Hỏi/Đáp
Những biện
Nhữ biệ pháp
há ngănă chặn
hặ nào
à đđang
được sử dụng trên máy tính cá nhân
của bạn? Các biện pháp này nhằm
ngăn chặn những đe dọa nào?
An toàn HTTT - Mối đe dọa
Phần mềm ác tính (Malware)
Phishing
Pharming
Sp m
Spam
Từ chối dịch vụ (Denial of service)
Truy nhập trái phép (Unauthorized access)
Giao dịch gian lận (Fraudulent transaction)
…
An toàn HTTT - Biện pháp
Giao thức mã hóa
Kiểm tra người sử dụng + mật khẩu
Quét/diệt phần mềm ác tính
Giới hạn
h n ttruy nhập
Phân quyền trong hệ điều hành
Tường lửa
Hệ thống phát hiện đột nhập
Thẻ thông minh mã hóa
Khóa
…
Các chủ đề
Mật mãã học
h
An toàn phần mềm
An toàn hệ điều hành
An toàn cơ sở dữ liệu
An toàn mạng, Web
Trộm ôtô bằng máy tính xách tay
2007
2007, chiếc BMW X5 của David Beckham bị đánh cắp
Kẻ cắp sử dụng máy tính xách tay, ăng ten và phần
mềm để bẻ khóa
Ăng ten để thu sóng phát ra từ các chíp RFID được
cài
à trong khóa
khó
Phần mềm được dùng để thử tất cả các khả năng mã
hóa (hàng nghìn tỷ)
Nguồn:
http://www.msnbc.msn.com/id/13507939
Nguồn:
http://securityevaluators.com/content/case-studies/iphone//
Các chủ đề (2) & (3)
An toàn phần mềm
Các mối đe dọa
Các biện pháp an toàn
Soát lỗi
ỗ
Kiểm định
Lập
ập trình an toàn
An toàn hệ điều hành
Các mối đe dọa
Các
Cá biện
biệ pháp
há an toàn
t à
Phân quyền, Điều khiển truy nhập, Sandbox
Trusted computing
500 000 trang Web bị tấn công
2008
2008, hơn nửa triệu trang Web,
Web trong đó có
cả các trang của Liên Hợp Quốc bị tấn công
Tấn công dạng “SQL
SQL injection”
injection
Khai thác lỗ hổng trong SQL Server của
Microsoft
Nguồn:
http://www.computerworld.com/s/article/9080580/Huge
_Web_hack_attack_infects_500_000_pages
Các chủ đề (4)
An
A toàn
t à cơ
ơ sở
ở dữ liệu
liệ
Các mối đe dọa
Các
Cá biện
biệ pháp
há an toàn
t à
Giải pháp đa tầng
Đột nhập hộp thư Gmail
2008
2008, tại hội nghị Defcon hacker một nhà
nghiên cứu demo một công cụ cho phép đột
nhập vào hộp thư Gmail, ngay cả khi các phiên
truy
y nhập
ập hộp
ộp thư được
ợ mã hóa ((https://
p // thay
y
vì http:// )
Đột nhập thông qua việc đánh cắp Session
Cookie
Session Cookie chứng nhận máy tính đã đăng nhập
thành công
Session Cookie bị đánh cắp sẽ được sử dụng như một
chứng nhận hợp lệ để truy nhập hộp thư Gmal
Alice Bob
Mã hóa Giải mã
Tin Mã Tin ban đầu
Hệ Mật mã khóa bí mật
Khóa
ó duy nhất
ấ
Mã hóa Giải mã
Tin ã
Mã Tin ban đầu
ầ
Hệ Mật mã khóa công khai
Mã hóa Giải mã
Tin ã
Mã Tin ban đầu
ầ
Chủ đề
Hệ Mật mãã không
khô khóa
khó
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ố
QQuản lý
ý khóa,, giao
g thức mật
ậ mã,…
,
Hệ Mật mã không khóa
Mã hóa Giải mã
Tin Mã Tin ban đầu
Hệ Mật mã không khóa
Mã hoán
h á vịị
Các ký tự trong Tin được hoán vị cho
nhau
Mã hoán vị
Hoán vị cột
c1 c2 c3 c4 c5
c6 c7 c8 c9 c10
c11 c12 …
chuyển thành
c1
1 c6
6 c11
11 c2
2 c7
7
c12 c3 c8 …. .…
….. …. ….
Hoán vị cột
Tin
T H I S I
S A M E S
S A G E T
O S H O W
H O WA C
O L U M N
A R T R A
N S P O S
I T I O N
WOR K S
Hoán vị cột
Tin Mã
T H I S I t s s o h
S A M E S oa n i w
S A G E T ha a s o
O S H O W l r s t o
H O WA C i m g h w
O L U M N u t p i r
A R T R A s e e o a
N S P O S mr o o k
I T I O N i s t w c
WOR K S n a s n s
Chủ đề
Hệ Mật mãã không
khô khóa
khó
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ố
QQuản lý
ý khóa,, giao
g thức mật
ậ mã,…
,
Hệ Mật mã khóa đối xứng
D
Duy nhất
hất mộtột khó
khóa cho
h quá
á trình
t ì h mã
ã
hóa và giải mã
C = E(K,M)
E(K M)
M = D(K,C)
Khóa
Khó phải
hải được
đượ giữ
iữ bí mật
ật
Hệ Mật mã khóa đối xứng
Khóa
ó duy nhất
ấ
Mã hóa Giải mã
Tin ã
Mã Tin ban đầu
ầ
Các Hệ Mật mã khóa đối xứng
Mã luồng
l ồ
Mã Ceasar
Mã Vi
Vigenère
è
Mã Vernam
Mã khối
DES
AES
Mã luồng
Đơn
Đơ vịị mã
ã hóa
hó cơ
ơ bản
bả là các
á ký tự
Các ký tự trong Tin được mã hóa tách
biệt
Mã Ceasar
c=m+n
m: ký tự trong Tin
c: ký tự tương ứng trong Mã
n: độ dịch chuyển
+: phép cộng modulo 26
Ví dụ: n = 3
Tin: ABCDEFGHIJKLMNOPQRSTUVWXYZ
C G O Q S
Mã: defghijklmnopqrstuvwxyzabc
Mã Ceasar
Tin
TREATY
IMPOSSIBLE
Mã Ceasar
Tin Mã
TREATY WUHDWB
IMPOSSIBLE LPSRVVLEOH
Mã Vigenère
Khóa
Tin
Mã Vigenère
Khóa
BENCH
Tin
A LIMERICK PACKS LAUGHS ANATOMICAL
Mã hóa
Khóa: B ENCHBENC HBENC HBENCH BENCHBENCH
Tin: A LIMERICK PACKS LAUGHS ANATOMICAL
Mã: B PVOLSMPM WBGXU SBYTJZ BRNVVNMPCS
Mã Vernam
Ký tự là các bit
Khóa Ki Mi Ci = Ki
K = K1K2K3…Kn xor Mi
Số ngẫu nhiên 0 0 0
Tin
M = M1M2M3…Mn
M1M2M3 Mn 0 1 1
Mã
C = C1C2C3…Cn 1 0 1
trong đó Ci = Ki xor Mi
1 1 0
Mã khối
Đơ
Đơn vịị mã
ã hóa
hó cơơ bản
bả là các
á khối ký
tự
Các
Cá tham
th số
ố bao
b gồm
ồ kíkích
h thước
thướ khối
và chiều dài khóa
Kí
Kích
h thướ
thước khối lớ
lớn để chống
hố tấ
tấn công
ô
bằng thống kê
Chiều dài khóa lớn để chống tấn công
vét cạn
Data Encryption Standard (DES)
Lịch sử
~ 1970, NIST kêu gọi xây dựng hệ mật mã dành cho
công chúng
1974, IBM xây dựng DES trên nền tảng của hệ
L if
Lucifer
1979, chuẩn hóa
Mục tiêu
Mục đích sử dụng rộng rãi
Độ an toàn cao
Không phụ thuộc vào tính bí mật của thuật toán
Ứng dụng
ATM
Truy nhập từ xa
…
Data Encryption Standard (DES)
DES
Khối 64 bit
Khó 56 bit
Khóa
16 vòng lặp mã hóa
Mỗi vòng kết hợp Hoán vị + Thay thế
Khóa 56 bit
Hoán vị đầu IP KS
K1 48-bit
Vòng 1
K2 48-bit
Vòng 2
...... K16 48-bit
Vòng 16
Hoán vị cuối FP
MÃ 64
64-bit
bit
IP, FP
IP FP
58 50 42 34 26 18 10 2 40 8 48 16 56 24 64 32
60 52 44 36 28 20 12 4 39 7 47 15 55 23 63 31
62 54 46 38 30 22 14 6 38 6 46 14 54 22 62 30
64 56 48 40 32 24 16 8 37 5 45 13 53 21 61 29
57 49 41 33 25 17 9 1 36 4 44 12 52 20 60 28
59 51 43 35 27 19 11 3 35 3 43 11 51 19 59 27
61 53 45 37 29 21 13 5 34 2 42 10 50 18 58 26
63 55 47 39 31 23 15 7 33 1 41 9 49 17 57 25
IP(b1b2…b64) = b58b50…b7
FP(b1b2…b64) = b40b8…b25
KS
KS1 KS2
57 49 41 33 25 17 9 14 17 11 24 1 5
1 58 50 42 34 26 18 3 28 15 6 21 10
10 2 59 51 43 35 27 23 19 12 4 26 8
19 11 3 60 52 44 36 16 7 27 20 13 2
63 55 47 39 31 23 15 41 52 31 37 47 55
7 62 54 46 38 30 22 30 40 51 45 33 48
14 6 61 53 45 37 29 44 49 39 56 34 53
21 13 5 28 20 12 4 46 42 50 36 29 32
S-boxes
xor
32 1 2 3 4 5 16 7 20 21
4 5 6 7 8 9 29 12 28 17
8 9 10 11 12 13 1 15 23 26
12 13 14 15 16 17 5 18 31 10
16 17 18 19 20 21 2 8 24 14
20 21 22 23 24 25 32 27 3 9
24 25 26 27 28 29 19 13 30 6
28 29 30 31 32 1 22 11 4 25
E(b1b2…b32) = b32b1…b1
P(b1b2…b32) = b16b7…b25
S-Boxes
Chuyển khối 48 bit thành khối 32 bit
8 khối 6 bit: S1, S2,…,S8 (b1b2b3b4b5b6)
Chuyển S1 thành khối 4 bit
b1b6 cho
h giá iá trị
t ị thập
thậ phân
hâ i
b2b3b4b5 cho giá trị thập phân j
kết quả tại dòng i cột j của bảng S1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
Tương
ươ g tự
ự đối
đố với
ớ S2,S3,…,S8
S ,S3, ,S8 (có
( ó bảng
bả g riêng)
ê g)
S-Boxes
Chuyển S1 (110001) thành khối 4 bit
b1b6 (11) cho giá trị thập phân i (3)
b2b3b4b5 (1000) cho giá trị thập phân j (8):
kết quả (5) tại dòng i (3) cột j (8) của bảng S1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
Mã hóa Giải mã
Tin Mã Tin ban đầu
Khóa bí mật vs. Khóa công khai
Khóa bí mật Khóa công khai
Số khóa 1 2
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−1
for n 1
if b[i] = 1 then r = r*p[i] mod s
return r
Bài tập
Tính
Tí h 6^73 mod
d 100
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)
( 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
ƯSCLN(a,b)
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)
Extended Euclid(a b)
Vào: 2 số nguyên dương a,b
Ra: 3 số nguyên x,y,d
x y d sao cho d = gcd(a,b)
gcd(a b)
và ax+by = d
120 23 5 5 -9 47 1
23 5 4 3 2 -9
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
ếu a*x
a mod
od n = 1 thì
t tồn
tồ tạ
tại k ttrong
o g đó a*x
a =
1 + n*k
Ta có a*x – n*k = 1
Đặt y = -k,
k tat đượ
được a*x
* + b*b*y = 1
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,
p q
n=p*q
Chọn e sao cho
1 < e < (p-1)
(p 1) * (q-1)
(q 1)
ƯSCLN(e, (p-1) * (q-1)) = 1
Chọn d sao cho
1 < d < (p-1)
( 1) * (q-1)
( 1)
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ụ
d
p = 11, q = 23
n = 11*23 = 253
(p-1)*(q-1) = 10*22=220
ƯSCLN(e 220) = 1
ƯSCLN(e,220)
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óa
hó sử
ử dụng
d khó công
khóa ô khai
kh i
Tin m
Khóa
Khó công
ô khai
kh i (n,e)
( )
Mã
c = m^e mod n
RSA – Mã hóa
Ví dụ
p = 11, q = 23
n = 11*23
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ã
Tin m
Ti
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ã
Định
Đị h lý:
lý Nếu
Nế
(n,e) là khóa công khai
(p,q,d) là khóa riêng
0 <= m < n
thì
(m^e)^d
(m e) d mod n = m
RSA – Giải mã
Ví dụ
p = 11, q = 23
n = 11*23
11 23 = 253
(p-1)*(q-1) = 10*22=220
e=3
d = 147
Mã
c = 165^3
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
óa công
cô g khaia (n,e)
( ,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
của
ủ bài ttoán
á tí
tính
h ((p,q,d)
d) từ (n,e)
( )
p,q là 2 số nguyên tố,
n = p*q
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ựa
Lự chọn
h 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ựa
Lự chọn
h e
e nhỏ nhất có thể
e khô
không nhỏ
hỏ quáá để tránh
t á h bị tấ
tấ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
low decryption”
decryption
RSA – Hiệu năng
Nhân,
Nhâ chia,
hi sốố dư phép
hé chia
hi
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
7, q = 11.
11 Giả sử Alice dùng khóa
công khai (n,e) = (77,17).
Cốt (Digest):
(Di t) ∑ n
Tóm lược
ợ Tóm lược
Khóa công khai
Khóa riêng
Sinh chữ ký
ý Kiểm định
ị chữ ký
ý
Chữ ký
Hợp lệ/
Khô
Không h
hợp lệ
Chữ ký số RSA + Hàm băm
Các
Cá thô
thông số
ố
Hàm băm h
2 số
ố nguyên
ê tố 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)
(p 1) * (q-1)
(q 1)
ƯSCLN(e, (p-1) * (q-1)) = 1
Chọn d sao cho
1 < d < (p-1)
( 1) * (q-1)
( 1)
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ạo
T chữ
hữ ký
Tin m
Chữ ký
s = h(m)^d mod n
Chữ ký số RSA + Hàm băm
Kiểm
Kiể định
đị h chữ
hữ ký
Chữ ký s
Tin m
Kiểm định
h(m) = s^e
s e mod n
Chữ ký số ElGamal + Hàm băm
Các
Cá thô
thông số
ố
Hàm băm h
Số nguyên
ê tố 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ạo
T khó
khó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
g
a
Chữ ký số ElGamal + Hàm băm
Tạo
T chữ
hữ ký
Tin m
Chọn k sao cho
0 < k < p-1
guyê tố cù
k nguyên cùng
g nhau
au với
ớ p-1
p
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ểm
Kiể định
đị h chữ
hữ ký
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ác
Cá thô
thông số
ố
Hàm băm h
Số nguyên
ê tố q
Số nguyên p sao cho
p-1
p 1 la bội số của q
Số nguyên g sao cho
g=x x^((p-1)/q)
((p 1)/q) mod p
trong đó x < p
Chữ ký số DSA
Tạo
T khó
khóa
Chọn a < q
A = g^a mod p
Khóa công khai
(p,q,g,A)
(p q g A)
Khóa riêng
a
Chữ ký số DSA
Tạo
T chữ
hữ ký
Tin m
Chọn k sao cho 0 < k < q
Chữ ký
r = (g
(g^k
k mod p) mod q
s = k^(-1) * (h(m) + a*r) mod q
Chữ ký số DSA
Kiểm
Kiể định
đị h chữ
hữ ký
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
A1 A4
A6 A5
Quản lý khóa đối xứng
Trọng
T tài (Trusted
(T t d Third
Thi d Party)
P t )
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)
A1 E(k )
E(k,m) k TTP
A4
Nguồn
khóa
E(k6,k)
A6 A5
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ình
hì h trao
t đổi thông
thô tin
ti khóa
khó công
ô
khai
c = E(e6,m) A2: d2 A3: d3
m = D(d6,c)
D(d6 c) A6
A6: d6 A5 d5
A5:d5
Quản lý khóa công khai nhờ PKI
Hạ
H tầng
tầ khó công
khóa ô khai
kh i (PKI)
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)
y)
Quản lý khóa công khai nhờ PKI
Mô hình
hì h trao
t đổi thông
thô tin
ti khóa
khó
V(A6||e6,s6)
A2: d2 A3: d3
c = E(e6,m)
E(e6 m)
Certificate Authority
A6||e6,s6 A1
A1, e1,
e1 s1 = S(A1||e1)
A1: d1 A4: d4
A2 , e2, s2 = S(A2||e2)
c A3 , e3, s3 = S(A3||e3)
A4 , e4, s4 = S(A4||e4)
A5 , e5, s5 = S(A5||e5)
A6 , e6, s6 = S(A6||e6)
m = D(d6
D(d6,c)
c) A6: d6 A5:d5
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ếuu thuật
uậ toán
oá sinh chữữ kýý của
ủ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
Giao
Gi thứ
thức
Một chuỗi các bước thực hiện
Các
Cá bướ
bước thự
thực hiệ
hiện phải
hải tườ
tường minh
i h
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
Giao thứ
thức mật
ật mãã = Giao
Gi thức
thứ + Mật
mã học
Thông
Thô thường
thườ một
ột giao
i thứ mật
thức ật mã
ã
kết hợp các khía cạnh sau
Thống nhất
Thố hất khó
khó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
30
Ứ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 gồm
ồ 3 pha
h
1. Thương lượng lựa chọn giải thuật
Thống nhất khóa: RSA,
RSA Diffie-Hellman,…
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
Trao đổi thông
thô tin
ti bí mật
ật với
ới tốc
tố độ
nhanh
Mật mã khóa đối xứng
ứng
Thiết lập và trao đổi khóa
Cá
Các thực
thự thể th
tham gia
i phải
hải thố
thống nhất
hất
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
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ụng
d các
á kết
kế quả
ả trong lý thuyết
h ế
nhóm số nguyên nhân tính đồng dư
Dựa ttrên
ên độ phức tạp của bài toán
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
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
g nhiên b và gửi
g g g^b mod
p cho Alice
B -> A: g^b mod p
4. Alice tính (g^b mod p)^a mod p
5
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,
23 g = 5,
5 a=6 6, b = 15
1. Alice gửi Bob p=23, g=5
A -> B: 23,5
2. Alice chọn a=6, và g
gửi Bob g^a
g 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
5. Bob
b tính
í h
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
Eve
E là kẻ ở giữa
iữ
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 nhiều
hiề ứng
ứ d
dụng đòi hỏi các
á thực
thự
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
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ôngg khai
Needham-Schroeder khóa đối xứng
Ali
Alice (A) muốn
ố trao
t đổi thông
thô tin
ti với
ới
Bob (B)
Alice
Ali và à Bob
B b cùng
ù tin
ti tưởng
tưở một
ột
Server (S) trung gian
Kas khóa
K khó đối xứng
ứ giữa
iữ A va S
Kbs khóa đối xứng giữa B va S
Na và
à Nb là các “nonce”
Kab là khóa đối xứng giữa A và B
Needham-Schroeder khóa đối xứng
1
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
{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
4. B trả
t ả lời A đã nhận
hậ được
đượ khóa
khó Kab,
K b thông
thô tin
ti đượ
được
mã hóa
B -> A: {Nb}_Kab
5
5. A báo
bá B rằngằ A sẵn
ẵ sàng
à vààđ
đang giữ
iữ khó
khóa Kab,
K b
thông tin được mã hóa
A -> B: {Nb-1}_Kab
Needham-Schroeder khóa đối xứng
Tấ
Tấn công
ô dạng
d “R
“Replay”
l ”
Giải pháp dùng trong Kerberos
Tem thời gian (Timestamp)
Nonce
Needham-Schroeder khóa công
khai
Ali
Alice (A) muốn
ố trao
t đổi thông
thô tin
ti với
ới
Bob (B)
Alice
Ali và à Bob
B b cùng
ù tin
ti tưởng
tưở một
ột
Server (S) trung gian
Ka và
K à ka
k khóa
khó riêng
iê và
à công
ô khai
kh i của
ủ A
Kb và kb khóa riêng và công khai của B
Ks và
à ks khóa riêng
iêng và
à công khai của S
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
3. A gửi
ửi nonce của
ủ mình
ì h cho
h B
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
{Na,Nb}_ka
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ấn
Tấ công
ô d
dạng “Man-in-the-middle”
“M i th iddl ”
Bài tập Mật mã & Ứng dụng
1. fo
1 for all
ll non-tested
non te ted key
ke k do
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
Cho biết K1 = K2 = … = K16
Tìm tất cả các khóa thỏa mãn tính
chất
hất trên
t ê
4 khóa
khó
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)
(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
x,y
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)
( y)
= m^(ea*x+eb*y)
=m
Bài 5: Tấn công Common Moduli
Ali
Alice sử
ửd dụng khó
khóa công
ô khai
kh i (493,3)
(493 3)
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
p= 2237
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ý
r = 799
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”
Man in the middle
Đưa ra một giải pháp chống tấn công
Tấn công
Tấ ô
A -> E: {Na,A}_ke
E -> B: {Na,A}_kb
B -> E: {Na,Nb}_ka
E -> A: {Na,Nb}_ka
A ->
> E: {Nb}_ke
{Nb} ke
E -> B: {Nb}_kb
Giải pháp
há
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
Chương trình
Đầu vào + Điều kiện Đầu ra
+ Điều kiện trước
+Điều kiện sau
Điều kiện trước (Precondition)
1 //* Requires: n >= 1 *//
1.
2. int fact(int n) {
3. int t;
4. if (n == 1)
5
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 *//
1.
2. int fact(int n) {
3. int t;
4. if (n == 1)
5
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) {
1
2. int t;
3. if (n == 1)
4
4. return
et n 1;
1
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
1. //* Requires: n >=
> 1; Ensures: returnvalue >=
> 0 *//
2. int fact(int n) {
3. int t;
4. if (n == 1)
5. return 1;
6. //* n
n>=22 *//
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ần
Phầ mềm
ề ác
á tính
tí h
Các phần mềm ác tính thường gặp
Các
Cá biện
biệ pháp
há ngăn
ă chặn
hặ
Lỗi phần mềm
Các
á lỗi
lỗ phần
hầ mềmề thường
h ờ gặp
ặ
Các biện pháp an toàn
Kiể
Kiểm thử (Testing)
(T ti )
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)
Nguyên
N ê tắc
tắ
Mô đun (Modularity)
Đóng
Đó gói
ói (Encapsulation)
(E l ti )
Giấu thông tin (Information Hiding)
Mô đun
Thiết kế các
á hợp
hợ phần
hầ
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++,
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 g
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ợp
hợ phần
hầ như
hư một
ột hộp
hộ đđen nhìn
hì
từ phía ngoài
Ví dụ:
d một lớp C++,
C++ Java
Ja a
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,
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
yệ lại
ạ mã
An toàn Hệ điều hành