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
299 trang |
Chia sẻ: netpro | Lượt xem: 2922 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Bài giảng 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
ể 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
Các file đính kèm theo tài liệu này:
- Slide An Toàn Hệ Thống Thông Tin.pdf