You are on page 1of 299

An toàn Hệ thống Thông tin

Trần Đức Khánh


Bộ môn HTTT – Viện CNTT&TT
ĐH BKHN
Thông tin chung
† Tên học phần:
An toàn Hệ thống Thông tin
† Thời lượng: 12 buổi (x 4 tiết)
† Thời khóa biểu: sáng Thứ năm, 4 tiết cuối
† Giảng viên
„ Trần Đức Khánh
„ Bộ môn HTTT, Khoa CNTT, P. 325, nhà C1
„ khanhtd@it-hut.edu.vn
Tài liệu tham khảo
† Introduction to Computer Security.
Security
Matt Bishop
† Security in Computing, Fourth Edition.
Charles P. Pfleeger,Shari Lawrence Pfleeger
† Handbook of Applied Cryptography.
A Menezes,
A. Menezes P.
P van Oorschot and S.
S Vanstone
† Chuyên đề An toàn & Bảo mật.
Nguyễn Khánh Văn
† Các Bài giảng về An toàn Máy tính.
ĐH Berkerley, MIT, ĐH Edinburgh
Mục đích
† Nắ
Nắm vững
ữ các
á vấn
ấ đề trong
t an toàn:
t à
mối đe dọa, biện pháp ngăn chặn
† Đánh
Đá h giá
iá độ an toàn
t à của
ủ các
á hệ thố
thống
thông tin
† Hướng
H ớ đế
đến quy tắc
ắ xây
â dựng
d chính
hí h
sách an toàn cho các hệ thống thông
tin
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
Sự cần thiết của An toàn HTTT
Thiệt hại an toàn HTTT
† Thiệt hại thời gian: theo viện SANS, máy
tính không được bảo vệ chỉ “sống
sống sót
sót” <
20’ trên internet
† Thiệtệ hại
ạ kinh tế: ~ tỷ
ỷ USD hàngg năm
1. Vi rút
2. Từ chối dịch vụ
3. ………
4. ………
[CERT]: Mối nguy
[CERT]: Sự cố
[CERT]: Quy mô, Tính phức tạp
Hỏi/Đáp
Những năm
Nhữ ă về ề trước,
t ướ mộtột số
ố tin
ti tặc
tặ
được tuyển dụng vào các công ty hay
tổ chức mà họ phá hoại.
hoại Gần đây
khuynh hướng này giảm rõ rêt. Bạn
nghĩ gì về sự thay đổi này? Nó tốt hay
xấu? Vì sao?
An toàn
Mục tiêu
M tiê của
ủ an toàn
t à là bả
bảo vệệ “tài
sản” tránh khỏi các “mối đe dọa”, sử
dụng các “biện
biện pháp ngăn chặn
chặn”

† 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

† 2004,, các nhà nghiên


g cứu của ĐH Johns Hopkins
p đã
bẻ được khóa của một số xe đời mới
„ Texas Instruments, nhà sản xuất chip RFID, bỏ qua
lời cảnh báo của nhóm nghiên cứu
Giải mã Enigma
† Enigma là máy mã hóa và giải mã
được sử dụng trong quân đội Đức
Quốc xã
† Công trình giải mã Enigma của quân
Đồng g minh được
ợ các sử g
gia đánh ggiá
là rút gọn 2 năm thời gian thế chiến
† Một trong những lực lượng giải mã nổi
tiếng
ế là
à nhóm
ó HUT 8 của
ủ Anh, do
Alain Turing dẫn đầu
Các chủ đề (1)
† Mật mã
ã học
h
„ Hệ Mật mã không khóa
„ Hệ Mật mãã khóa
khó bí mậtật
„ Hệ Mật mã khóa công khai
„ Hàm băm,
băm chữ ký số
„ Quản lý khóa, giao thức mật mã,…
Tấn công iPhone
† 2007
2007, các nhà nghiên cứu của Independent Security
Evaluators phát hiện một lỗ hổng tạo điều kiện cho kể
đột nhập kiểm soát iPhone
† Trình duyệt Safari của iPhone chạy với đặc quyền
admin
dmin -> > phần mềm ác
á tính chạy
h với
ới đặ
đặc quyền
q ền
admin
† Đột nhập thông qua
„ Điểm truy nhập không dây (wireless access point)
„ Các trang Web
„ Email, SMS có chứa các đường dẫn đến các trang ưeb
bị chiếm đoạt

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

Nguồn: Washington Post


Các chủ đề (5)
† An
A toàn
t à mạng, Web
W b
„ Các mối đe dọa
„ Tấ công
Tấn ô từ chối
hối dịch
dị h vụ
„ Spam
„ Phần mềm ác tính
„ Các công cụ bảo vệ
Mật mã & Ứng dụng

Trần Đức Khánh


Bộ môn HTTT – Viện CNTT&TT
ĐH BKHN
Mật mã học
† Mật mã học (Cryptology)
„ Mật mã (Cryptography)
„ Mã thám (Cryptanalysis)
† Mật mã
„ Tăng cường các tính chất Bí mật và Toàn vẹn
thông tin: các phép mã hóa
„ Xây dựng các kỹ thuật trao đổi thông tin bí mật:
các
á giao
g ao thức
ứ mậtậ mãã
† Mã thám
„ Phá mã
Lịch sử ngành Mật mã
† Giai đoạn “Tiền
Tiền sử
sử” (~
( 2000,
2000 TCN)
„ Những dấu hiệu đầu tiên của Mật mã xuất hiện ở bên
bờ sông Nile, Ai Cập
† Giai đoạn “Mật mã thủ công” (~ 50, TCN)
„ Phép mã hóa Ceasar
† Giai đoạn “Mật mã cơ học” (cho đến Thế chiến 2)
„ Máy Enigma ở Đức
„ Cácá nghiên
h ê cứuứ về ề Giải
ả mãã ở Anh
h
† Giai đoạn “Mật mã điện tử”
„ Dựa vào Toán học và Tin học
„ Được đặt nền móng bởi Shanon
Shanon, Diffie và
à Hellman
„ Khóa bí mật (DES, AES,…), Khóa công khai (RSA,
ElGamal, …)
Trao đổi
ổ thông tin bí mật
† Ali
Alice và
à Bob
B b trao
t đổi thông
thô tin
ti bí mật,
ật
được mã hóa
† Eve
E và
à Ch
Charlie
li tấn
tấ công
ô bằng
bằ giải
iải mãã
Eve Tấn công thụ động

Alice Bob

Charlie Tấn công chủ động


Mục tiêu An toàn
† Bí mật
ật (C
(Confidentiality)
fid ti lit )
† Toàn vẹn (Integrity)
† Xác thực (Authentication)
† Chống phủ nhận (Non-repudiation)
† …
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ã
Hệ Mật mã = Bộ 5 (K,M,C,E,D)
(K M C E D)
† Không gian Khóa (Key): K
† Không gian Tin (Message/Plaintext): M
† Không gian Mã (Cipher): C
† Hàm mã hóa (Encryption)
„ E: K x M -> C
† Hàm giải mã (Decryption)
„ D: K x C -> 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ó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

Khóa mã hóa Khóa giải mã

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

† Nối dài Khóa


„ B ENCHBENC HBENC HBENCH BENCHBENCH

† 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

Tin Mã hóa DES Mã


Mã hóa DES
TIN 64
64-bit
bit KHÓA 64
64-bit
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

† KS1 chuyển khối 64 bit thành khối 2 khối 28 bit


„ KS1(b1b2…b64) = b57b49…b36 b63b55…b4
† KS2 chuyển 2 khối 28 bit thành khối 48 bit
„ KS2 (b1b2…b56) = b14b17…b32
KS
† Khóa
Khó ban
b đầ K
đầu
† (C0,D0) = KS1(K)
† Ki = KS2 (Ci,Di)
„ Ci
† Dịch chuyển vòng tròn sang trái 1 bit Ci-1
nếu i = 1,2,9,16
† Dịch chuyển vòng tròn sang trái 2 bit Ci-1
Ci 1
trong các trường hợp khác
„ Tương tự cho Di
Vòng lặp DES
32 bit trái
t ái 32 bit phải
hải

xor khóa 48-bit

S-boxes

xor

32 bit trái 32 bit phải


E, P
E P

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

5 (Thập phân) = 0101 (Nhị phân)


Giải mã DES
† Sử dụng
d cùng
ù một
ột dã
dãy khó
khóa
† Thứ tự các khóa đảo ngược
† Hoán đổi
ổ 2 nửa trái, phải
† Thực hiện cùng số vòng lặp
Điểm
ể yếu DES
† Tìm khóa bằng vét cạn
„ 2^56 khả năng
† Sử dụng tính bù để loại trừ số khả năng khóa
„ c = DES(k,m)
DES(k m) ->> |c = DES(|k,|m)
DES(|k |m)
„ |(1011) = 0100
† Khóa yếu
„ c = DES(k,
DES(k m)) vàà m = DES(k,
DES(k c))
„ c = DES(k1,m) and c = DES(k2,m)
† Mã thám
„ Vi sai
„ Tuyến tính
„ Davies
3DES
† Mã hóa

„ c = E(k3,(D(k2,E(k1,m)))
† Giải mã
ã
„ m = D(k1,(E(k2,D(k3,c)))
† Lựa chọn khóa
ó
„ k1,k2,k3 độc lập
„ K1,k2 độc lập và k3 = k1
„ k1=k2=k3
Advanced Encryption Standard
(AES)
† 1997
1997, NIST kêu gọi xây dựng một hệ mật mã mới để
thay thế DES
† Hệ Rijndael của Daemen và Rijmen được lựa chọn
† 2001,
2001 hệ Rijndael được chuẩn hóa thành AES
„ Dựa trên lý thuyết “Trường Galois”
„ Khối 128 bit
„ Khóa 128,
128 192,
192 256 bit
„ n vòng lặp mã hóa, phụ thuộc vào chiều dài khóa
† Khóa 128 bit, n = 10
† Khóa 192 bit,
bit n = 12
† Khóa 256 bit, n = 14
„ Mỗi vòng kết hợp Hoán vị + Thay thế
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 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ã,…
,
Tại sao Hệ mật mã khóa công khai
† Quản lý khóa đối xứng là một vấn đề
„ Trong các hệ Khóa đối xứng, mỗi cặp
người
gườ dùng
dù g phải
p ả có khóa
óa riêng
ê g
„ N người dùng cần N * (N-1)/2 khóa
„ Việc quản lý khóa trở nên phức tạp khi
số
ố llượng người
ờ dùng
dù tăng
ă
† Mục tiêu an toàn
„ Xác
Xá thực
thự
„ Chống phủ nhận
Hệ mật mã khóa công khai
† Mỗi người
ười dù
dùng có
ó 1 khó
khóa riêng
iê và
à1
khóa công khai
„ Khóa riêng
iêng bí mật
„ Khóa công khai có thể chia xẻ
† Quản
Q ả lý khóa
khó
„ N người dùng cần N khóa công khai được
xác thực
„ Hạ tầng khóa công khai PKI
Hệ Mật mã khóa công khai
† Mã hóa
hó dùng
dù khóa
khó công
ô khai
kh i k
„ C = E(k,M)
† Giải mã
ã dùng
dù khóa
khó riêng
iê K
„ M = D(K,C)
Khóa công khai Khóa riêng

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

Bảo vệ khóa Khóa được giữ bí 1 khóa bí mật


mật
ật 1 khóa
ó công
ô khai
Ứng dụng Bí mật và toàn vẹn Trao đổi khóa
dữ liệu Xác thực
Tốc độ Nhanh Chậm
Hệ Mật mã khóa công khai
† Lý thuyết nền tảng
„ Độ phức tạp
„ Số học đồng dư (Modular Arithmetic)
† Các hệ Mật mã khóa công khai
„ RSA
„ MerkleHellman
„ ElGamal
„ Rabin
„ Đường cong êlip (Elliptic Curve)
Độ phức tạp
† Độ phức tạp tính toán (thời gian)
„ Vấn đề “dễ”: lớp P
„ Vấn đề “khó”: lớp NP
† Giải quyết các vấn đề P
„ O(n) trường hợp phải xét đến
† Giải quyết các vấn đề NP
„ 2^O(n) trường hợp phải xét đến

Các hệ mật mã khóa công khai dựa trên


độ khó/phức tạp của giải thuật bẻ khóa
Số học đồng dư
† Số học đồng dư
„ a mod n
„ a op b mod n
† op = +, -, *, /, ^
† Ví dụ:
„ 40 mod 6 = 4
„ 5 + 2 mod 6 = 1
„ 9 – 4 mod 3 = 2
„ 5 * 3 mod 6 = 3
„ 4/2 mod 3 = 2
„ 2^4 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
† a * b moddn
„ 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
a^(10000+1000+1)
(10000+1000+1) = aa^10000
10000 * a^1000
a 1000 *
a^1
„ a^10000 * a^1000 * a^1 = a^16 * a^8 * a^1
† Độ phức
hứ tạp
t (O(logb*(logs)^2))
(O(l b*(l )^2))
† 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
(O(b*(logs)^2))
(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ịị p
phân của b,, n = [logb]
[ g ]
† 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−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

1. Nếu b = 0 thì trả về (1,0,a)


2. Tìm q, r sao cho a = b*q+r
b q r
3. (x’,y’,d) = Extended-Euclid(b, r)
4. Trả về (y’,x’−q*y’,d)
(y , q y, )
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
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ự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).

Tìm khóa riêng.


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 2525. 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.
RSA

Tính Mã tương ứng.


RSA – Bài tập
† Đáp
Đá án
á
„ (p,q,d) = (7,11,53)
„ Tin
Ti
† 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
† MerkleHellman
M kl H ll
† 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 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 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 pphong”:
o g bămbă (hash),
( a ), tóm
ó lược
ượ ((message
ag
digest), đặc số kiểm tra (checksum)
„ Tạo ra “niêm phong”: hàm băm
Hàm băm
† Mục
M tiêu
tiê an toàn
t à
„ 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
thiên, và đầu
ra có chiều dài cố định
h : ∑* → ∑ n
† Tin: ∑ *

† Cốt (Digest):
(Di t) ∑ n

† h là hàm một chiều (one way function)


„ dễ dàng tính h nhưng rất khó tính h−1
† 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ùng
Dù các
á hàm
hà thiết kế đặc
đặ biệt
„ 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ùng
Dù các
á hàm
hà thiết kế đặc
đặ biệt
„ MD4/5
„ SHA/SHS
CBC - Chaining Block Cipher
† Hàm
Hà mã
ã hóa
hó E đối xứng

„ Khóa K
† Hàm
Hà bă
băm H
„ M = M1M2…Mn
„ Hi = E(K,Mi
( xor Hi-1))
„ H = Hn
RMDP – Rabin, Matyas, Davise,
Price
† Hàm
Hà mã
ã hóa
hó E đối xứng

„ Khóa là các khối của Tin
† Hàm
Hà bă
băm H
„ M = M1M2..Mn
„ H0 = r (r
( ngẫu
ẫ nhiên)
hê )
„ Hi = E(Mi,Hi-1)
„ H H
H= Hn
DM – Davies, Meyer
† Hàm
Hà mã
ã hóa
hó E đối xứng

„ Khóa là các khối của Tin
† Hàm
Hà bă
băm
„ M = M1M2..Mn
„ H0 = r (r
( ngẫu
ẫ nhiên)
hê )
„ Hi = E(Mi,Hi-1) xor Hi-1
„ H = Hn
H
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ùng
Dù các
á hàm
hà thiết kế đặc
đặ biệt
„ MD4/5
„ SHA/SHS
QCMDC – Quadratic Congruential
Manipulation Dectection Code
† M = M1M2…Mn
M1M2 M
„ Mi khối n bit
† N là số
ố nguyên
ê tố sao cho
h
„ 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…Mn
M1M2 M
† 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ùng
Dù các
á hàm
hà thiết kế đặc
đặ biệt
„ SHA/SHS
„ MD4/5
SHA-1
† SHA = SSecure H
Hash
h Al
Algorithm
ith
† Đượ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
† Đầu
Đầ vàoà bội sốố của
ủ 512 bit
† 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
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 = Message
M Digest
Di t
† 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
† Đầu
Đầ vàoà 512 bit
† 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
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
1976, Diffie & Hellman lần đầu tiên đề cập
đến khái niệm Chữ ký số
† 1989,
1989 phiên bản thương mại Chữ ký số đầu
tiên trong Lotus Notes, dựa trên RSA
† Ứngg dụng
ụ g
„ Hợp đồng số
„ Bầu cử điện tử
„ Gi
Giao dị
dịch
h ngân
â hàng

„ …
Chữ ký số
† Mục
M tiêu
tiê an toàn
t à
„ Xác thực (Authentication)
„ Chống
Chố phủ
hủ nhận
hậ (N
(Non-repudiation)
di ti )
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 mã
ã khóa
khó công
ô khai
kh i
† 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)
(n e)
„ Khóa riêng: (p,q,d)
„ Mã hóa: c = m^e mod n
„ Giả mã: m = c^d
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)
(p q d)
† Tạo chữ ký
„ s = m^d
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â tính”
“nhân í h” của
ủ RSA
† 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à
chữ
hữ ký của
ủ m1*m2
1* 2
„ 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àm
Hà bă
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
thiên,
„ 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
ụ g độ
ộ cao (collision
( resistence))
† gần như đơn ánh
Chữ ký số dùng Hàm băm
† Hàm
Hà băbăm h
† 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
người
ười có
ó cùng
ù một
ột sinh
i h nhật
hật là không
khô nhỏ
hỏ hơn

1/2
„ Tấn công dạng “sinh nhật”
† Tính
í h N giáá trị bă
băm trong thời
hờ gian và à không
khô 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ý
ý
Tin Tin

Hàm băm Hàm băm

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

Trần Đức Khánh


Bộ môn HTTT – Viện CNTT&TT
ĐH BKHN
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ã,…
,
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 (Public
(P bli KKey Infrastructure)
I f t t )
Quản lý khóa đối xứng
† Mô hình
hì h trao
t đổi thông
thô tin
ti khóa
khó đối
xứng
A2 A3

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

Thư mục công cộng


e6
A1: d1 A1: e1
A4: d4
c A2 : e2
A3 : e3
A4 : e4
A5 : e5
A6 : e6

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

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
C1,D1
„ 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ứng
Chứ minh
i h rằng

„ |DES(m,k) = DES(|m,|k)
† Từ đó suy ra giải
iải thuật
th ật tì
tìm khóa
khó biết
mã của tin và bù của tin, với độ phức
tạp nhỏ hơn 2^56.
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ó ban
khóa b đầ
đầu kk. Ta
T 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,
x Mã DES(K,x),
DES(K x) Mã DES(K,|x)
DES(K |x)
† Output: Khóa tương ứng với K

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

† 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ầ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)
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)
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
g
người dùngg
† Ẩ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
† Virus
Vi chỉ
hỉ gây
â hại
h i khi được
đượ kích
kí h hoạt
h t
„ 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ã virus
i đí h vào
đính à mã
ã chương
hươ t ì h
trình
„ Nối mã virus với mã chương trình
„ Mã virus
i bao
b quanh
h mãã chương
hươ ttrình
ì h
„ Mã virus tích hợp vào mã chương trình
† Virus
Vi tài liệ
liệu
„ Tài liệu chứa cả dữ liệu và các lệnh
Nơi ẩn
ẩ náu Virus
† Vùng Boot
Vù B t (Boot
(B t Sector)
S t )
† Bộ nhớ (Memory-Resident)
† Ứ
Ứng dụng (Application Program)
† Thư viện (Library)
† …
Dấu hiệu nhận biết Virus
† Mã virus
i có
ó kiểu
kiể mẫu
ẫ đặc
đặ biệt
„ 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
ệp đính kèm chỉ khi nào biết rõ nguồn
g
gốc
† Lưu ở nơi an toàn một phiên bản có thể tái
tạo của
ủ hệ thống
hố đ
đang sửửddụ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
read-only
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ầ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)
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ỗi
ỗ phần mềm
† Lập
Lậ trình
t ì h viên
iê thường
thườ mắc
ắ lỗi
„ không cố ý
„ không
khô ác
á tính
tí h
„ 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
† Tràn
T à bộ đệm
đệ (B
(Buffer
ff O Overflow)
fl )
„ Array Index Out of Bound
† Không
Khô đầ đủ (I
đầy (Incomplete
l t Mediation)
M di ti )
„ Format String
„ Implicit
l Cast, Integer Overflow
fl
† Đồng bộ (Synchronization)
„ File stat()/open()
Lỗi
ỗ tràn bộ đệm
1. char buf[80];
1
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() {
1
2. char buf[80];
3. if (fgets(buf, sizeof buf, stdin) == NULL)
4. return;
5. p
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
5. if (len
(l > sizeof
i f buf)
b f) {
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
12. typedef unsigned int size
size_t;
t;

† Điều gì sẽ xảy ra?


Lỗi
ỗ đồng bộ
1. int openfile(char *path)
1 path) {
2. struct stat s;
3. if (stat(path, &s) < 0)
4
4. return
et n -1;
1
5. if (!S_ISRREG(s.st_mode)) {
6. error("only allowed to regular files; nice try!");
7. return -1;
8. }
9. return open(path,
p (p O_RDONLY); )
10. }

† Điều gì sẽ xảy ra?


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)
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)
Kiểm
ể thử
†M
Mục đích
đí h của
ủ kiểm
kiể thử là tì
tìm ra lỗi
của hệ thống
„ Nế
Nếu không tìm raa lỗi,
lỗi chúng ta hi vọng
ọng
rằng hệ thống là an toàn
Quy trình kiểm
ể thử
1.
1 Đơn vịị (Unit
Đơ (U it Testing)
T ti )
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 quy (Regression
(R i T
Testing)
ti )
„ Nếu hệ thống có thay đổi, chỉnh sửa
† Xoắn
X ắ (F
(Fuzz T
Testing)
ti )
„ 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)
(Black box)
„ Không có thông tin về cấu trúc bên trong của
phần mềm
„ Dùng
Dù cho
h tất
ấ cả
ả các
á mứcứ của
ủ quy trình
ì h kiể
kiểm thử
hử
† 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:
g thiết kế ca kiểm thử
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)
Kiểm
ể định hình thức
†M
Mục đích
đí h của
ủ kiểm
kiể định
đị h hình
hì h thức
thứ là
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
tất
ấ cả
ả các
á trạng thái
hái thông
hô qua tất
ấ cả
ả các
á
chuyển tiếp
† Suy
y diễn logic
g ((Logical
g 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

Đầu vào Chương trình


Đầu ra

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

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

Trần Đức Khánh


Bộ môn HTTT – Viện CNTT&TT
ĐH BKHN
Hệ điều hành
† Vai
V i trò
t ò
„ Giao diện giữa phần cứng và phần mềm
„ Quản
Q ả lý tài 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ế phân
hâ tầng
tầ (Layered
(L dDDesign)
i )
† 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ế phân
hâ tầng
tầ (Layered
(L dDDesign)
i )
† Hệ điều hành tin cậy (Trusted Operating
System)
Bả vệ
Bảo ệ bộ nhớ
hớ và
à đị
địa chỉ
hỉ
† Là
Làm thế nào
à ngăn
ă chặn
hặ một ột chương
hươ
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 đoạn
đ có
ó quyền
ề khác
khá nhau
h (R,W,E)
(R W E)
† 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
„ <Name,Offset>
<Name Offset>
† 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
„ <Page,Offset>
† 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
eo chương
c ươ g trình/người
/ gườ dùng
dù g
„ 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 độ
† Trong
T các
á hệ điề
điều hành
hà h hiện
hiệ đđạii
„ Kết hợp Phân đoạn+Phân trang
Điề khiể
Điều khiển ttruy nhập
hậ
† Rât nhiều đối tượng được truy nhập
„ Bộ nhớ
„ Phần cứng
„ Tệp
„ Thôngg tin hệ
ệ thống:
g bảng,
g, cơ chế bảo vệ,
ệ,
lệnh đặc quyền
„ …
† Vấn
Vấ đề an toàn
à đặt
đặ ra
„ Ai được truy nhập gì với đặc quyền nào?
ế Điều
Cơ chế Điề khiể
khiển truy
t nhập
hậ
† Danh
D h sách
á h điề
điều khiển
khiể ttruy nhập
hậ
„ Danh sách các đối tượng truy nhập
„ Mỗi đối tượng
tượ có
ó một
ột danh
d h sách
á h các
á chủ
hủ
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ả vệ
Bảo ệ tệp
tệ
† Bảo
Bả vệ
ệ nhó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ả vệ
Bảo ệ tệp
tệ
† Hệ thống
thố tệp
tệ UNIX/LINUX
„ Mỗi tệp có chủ sở hữu và nhóm sở hữu
„ Quyền
Q ề đượđược thiết lậ
lập bởi chủ
hủ sở
ở hữ
hữu
† R,W,E
† setid,
setid owner
owner, group
group, other
„ Chỉ có chủ sở hữu và root mới được phép
thay
y đổi quyền
q y
Xá thực
Xác thự người
ười dù
dùng
† Hệ điều
điề hành
hà h quản
ả lý nhiều
hiề người
ười
dùng
„ Ai là ai?
† Giải pháp xác thực người dùng
„ Mật khẩu
khẩ
„ 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óa
hó cảả tệ
tệp h
hoặc
ặ chỉ
hỉ mã
ã hóa
hó mật
ật khẩ
khẩ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òngg tấn công
g dạngg “đăng
g nhập g
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ế phân
hâ tầng
tầ (Layered
(L dDDesign)
i )
† 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
g 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.
1. Phần cứng
2. An toàn
2 Lõi hệ điều hành
2.
1. Đồng bộ
2. Cấp phát
3 Hệ điều hành
3.
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ế phân
hâ tầng
tầ (Layered
(L dDDesign)
i )
† 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
ợ g sử dụng
ụ g lại

† Đầy đủ
† Đườngg dẫn tin cậy
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ậ
Tập hợp
hợ cácá dữ liệu
liệ có
ó quan hệ đượ
đượ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í mật
ật
„ Dữ liệu nhạy cảm
† Toàn
T à vẹn
„ Vật lý
„ Logic
† Sẵn dùng
† Điều khiển truy nhập
g
† Xác thực người dùngg
An toàn CSDL
† Các
Cá mối
ối đe
đ dọa
d CSDL
„ Cập nhật CSDL
„ Dữ liệu
liệ nhạy
h cảm

„ Suy diễn
„ SQL Injection
† Thiết kế CSDL tin cậy
„ CSDL đa
đ tầ
tầng
An toàn CSDL
† Các
Cá mối
ối đe
đ dọa
d CSDL
„ Cập nhật CSDL
„ Dữ liệu
liệ nhạy
h cảm

„ Suy diễn
„ SQL Injection
† Thiết kế CSDL tin cậy
„ CSDL đa
đ tầ
tầng
Cập nhật CSDL
† Sự cố
ố hệ thống
thố
„ 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
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
„ U
Unset
set COMMIT-FLAG
CO G
Cập nhật CSDL và tương tranh
† Cậ
Cập nhật
hật CSDL là một
ột thao
th tác
tá cơ
ơ
bản
„ Chỉ một thao tác cập nhật thực hiện trên
t ên
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
ậ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ệu
liệ công
ô chúng
hú khô
khô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ác
Cá lloạii rò
ò gỉỉ dữ liệ
liệu nhạy
h cảm

„ Dữ liệu chính xác
„ 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ệ quản
ả trị
t ị CSDL quản
ả lý truy
t nhập
hậ
dữ liệu nhạy cảm bằng điều khiển
truy nhập
Suy diễn

†S
Suy diễn
diễ dữ liệu
liệ nhạy
h cảm
ả từ dữ liệu
liệ
không nhạy cảm
Suy diễn

† Các
Cá lloạii tấn
tấ công
ô suy diễn
diễ
„ Trực tiếp (Direct)
„ Gián
Giá tiếp
tiế (Indirect)
(I di t)
† Tổng (Sum)
† Đếm (Count)
† Trung bình (Mean)
† …
Suy diễn

† Các
Cá biện
biệ pháp
há ngăn
ă chặn
hặ
„ Phân tích câu truy vấn
„ Ngụy
N trang
t thô
thông tin
ti
„ Loại bỏ thông tin nhạy cảm
SQL Injection
† SQL
„ Structured Query Language
„ Ngôn
N ô ngữ ữ ttruy vấn
ấ CSDL
SQL Injection
† Tấn
Tấ công
ô SQL IInjection
j ti
„ statement = “SELECT * FROM users
WHERE name = ‘ “ + userName +”
+ ‘;”
;

Điều gì xảy ra nếu userName = a


a’ or ‘t’=‘t
t=t

Điều gì xảy ra nếu userName = a';DROP


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ác
Cá mối
ối đe
đ dọa
d CSDL
„ Cập nhật CSDL
„ Dữ liệu
liệ nhạy
h cảm

„ Suy diễn
„ SQL Injection
† Thiết kế CSDL tin cậy
„ CSDL đa
đ tầ
tầ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
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)
( do / e )
Phân ngăn
† CSDL được
đượ chia
hi thành
thà h các
á CSDL khác
khá
nhau ở mức độ nhạy cảm khác nhau
† Ưu
Ư điểm
điể
„ 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ệu
liệ nhạy
h cảm
ả sẽẽ được
đượ mã
ã hóa

bằng một khóa tương ứng
† Ưu
Ư điểm
điể
„ 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
†MMục tiêu
tiê đảm
đả bảo
bả tính
tí h toàn
t à vẹn và
à
giới hạn truy nhập
† Khóa
Khó
„ Checksum
† Tí
Tính
h ttoán
á bằng
bằ hà
hàm mã ã hóa
hó hoặc
h ặ hà
hàm băm

† Giá trị phụ thuộc vào Data ID + Data +
y Label
Sensitivity
Khóa nhạy cảm
†MMục tiêu
tiê che
h giấu
iấ độ nhạy
h cảm
ả của

dữ liệu
† Khóa
Khó
„ Mã
† Tí
Tính
h ttoán
á bằng
bằ hà
hàm mã ã hóa
hó hoặc
h ặ hà
hàm bă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.
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
Front-end
end tin cậy
cậy”
† Điều khiển truy nhập CSDL
1. Xác thực
ự người
g dùngg
2. Kiểm tra quyền người dùng
3. Định dạng lại truy vấn
4
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
vấn,
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
Mục tiêu
tiê giới
iới hạn
h “tầ nhìn”
“tầm hì ” của

người dùng theo quyền
„ Quyền
Q ền đọc
đọc, ghi
† Mỗi cửa sổ là một tập con của CSDL
„ Mỗi tập
tậ con tương
tươ ứ
ứng với
ới dữ liệu
liệ 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 Cáp quang
quang, Vi sóng
sóng, Hồng ngọa,
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
chuyển, Phiên, Trình diễn,
diễn Ứng dụng
† Địa chỉ
„ MAC, IP
† Định
Đị h tuyến
t ế
† 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,
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ác
Xá thực
thự
„ 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,
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ác
Xá thực
thự
„ Tường lửa
„ Phát hiện đột nhập
Thăm dò
† Quét
Q ét cổng
ổ (P
(Portt Scan)
S )
„ Thu thập thông tin đối tượng tấn công
† dịch vụ,
vụ cổng đang hoạt động (HTTP:80,
(HTTP:80
POP:110, SMTP:25, FTP:21)
† p
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
† Đường
Đườ t
truyền
ề cáp
á
„ Sử dụng “packet sniffer”
„ Lập
Lậ trình
t ì h lại
l i card
d
† Wireless
„ Tín
í hhiệu
ệ rất
ấ dễ b
bị nghe
h 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ông
Thô tin
ti xác
á thực
thự 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 xấu
ấ (Defacement)
(D f t)
† 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
ụ g lỗi Buffer Overflow để thay
y đổi
thông tin định tuyến
† DNS cache poisoning
† Từ chối
hối dịch
dị h vụ phân
hâ tán
tá (DDoS)
(DD S)
„ 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ấn
Tấ công
ô các
á trang
t ASP,
ASP JSP,
JSP CGI,
CGI PHP
† ActiveX
† Mã Java
„ Applet
† Auto Exec
„ .exe,
exe .doc
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,
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ác
Xá thực
thự
„ 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
end-to-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ẩu
khẩ một
ột lầ
lần
„ Password Token
† Hệ Challenge-Response
Ch ll R
† Xác thực số phân tán
† Kerberos
Tường lửa
† Cô
Công cụ để lọc
l thông
thô tin
ti di chuyển
h ể
giữa “mạng bên trong” và “mạng bên
ngoài
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ực
Thự hiện
hiệ ngănă chặn
hặ thô
thông qua chính
hí h
sách an toàn
Tường lửa
Các lloạii tường
Cá tườ lử
lử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

† Đánh
Đá h giáiá tính
tí h toàn
t à vẹn của
ủ hệ thống
thố và
à dữ
liệu
† Phát hiện
ệ các dạng
ạ g tấn công
g
† 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ác lloạii hệ thống
Cá thố phát
hát hiện
hiệ đột nhập
hậ
† 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

You might also like