Bài giảng An toàn mạng máy tính - Bài 5: Mã hoá khoá công khai & Quản lý khoá - Tô Nguyễn Nhật Quang

Mã hoá khoá công khai và quản lý khoá

1. Số nguyên tố

2. Hệ mã hoá khoá công khai

3. Giao thức trao đổi khoá Diffie-Hellman

4. Hệ RSA

5. Quản lý khoá

6. Bài tập

pdf 53 trang yennguyen 5580
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng An toàn mạng máy tính - Bài 5: Mã hoá khoá công khai & Quản lý khoá - Tô Nguyễn Nhật Quang", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng An toàn mạng máy tính - Bài 5: Mã hoá khoá công khai & Quản lý khoá - Tô Nguyễn Nhật Quang

Bài giảng An toàn mạng máy tính - Bài 5: Mã hoá khoá công khai & Quản lý khoá - Tô Nguyễn Nhật Quang
AN TOÀN 
MẠNG MÁY TÍNH 
ThS. Tô Nguyễn Nhật Quang
Trường Đại Học Công Nghệ Thông Tin
Khoa Mạng Máy Tính và Truyền Thông
ATMMT - TNNQ 2
NỘI DUNG MÔN HỌC
1. Tổng quan về an ninh mạng
2. Các phần mềm gây hại
3. Các giải thuật mã hoá dữ liệu
4. Mã hoá khoá công khai và quản lý khoá
5. Chứng thực dữ liệu
6. Một số giao thức bảo mật mạng
7. Bảo mật mạng không dây
8. Bảo mật mạng ngoại vi
9. Tìm kiếm phát hiện xâm nhập
MÃ HOÁ 
KHOÁ CÔNG KHAI 
& QUẢN LÝ KHOÁ
BÀI 5
ATMMT - TNNQ 4
Mã hoá khoá công khai và quản lý khoá
1. Số nguyên tố
2. Hệ mã hoá khoá công khai
3. Giao thức trao đổi khoá Diffie-Hellman
4. Hệ RSA
5. Quản lý khoá
6. Bài tập
ATMMT - TNNQ 5
1. Số nguyên tố
 Giới thiệu
– Bất kỳ số nguyên a > 1 đều có thể viết dưới 
dạng:
a = p1
a1p2
a2p3
a3pt
at
trong đó p1 < p2 <  < pt là các số nguyên tố.
Ví dụ:
85 = 5 x 17
91 = 7 x 13
1200 = 24 x 3 x 52
11011 = 7 x 112 x 13
ATMMT - TNNQ 6
1. Số nguyên tố
 Giới thiệu
– Một số nguyên p> 1 là số nguyên tố nếu và 
chỉ nếu ước duy nhất của nó là ± 1 và ± p. 
– Số nguyên tố đóng vai trò quan trọng trong lý 
thuyết số và trong các kỹ thuật mã hoá khoá 
công khai thảo luận trong chương này. 
– Bảng dưới đây trình bày các số nguyên tố 
nhỏ hơn 2000.
ATMMT - TNNQ 7
1. Số nguyên tố
ATMMT - TNNQ 8
1. Số nguyên tố
 Thuật toán tìm dãy số nguyên tố nhỏ hơn n - dùng 
thuật toán của nhà toán học Hy lạp Eratosthenes.
- Liệt kê tất cả các số nguyên từ 2 đến n.
- Số đầu tiên (2) là số nguyên tố.
- Loại tất cả các bội của 2 ra khỏi bảng.
- Số nguyên ngay sau số 2 sau khi loại (sàng) là số 
nguyên tố (số 3).
- Loại bỏ tất cả các bội của 3.
- ...
- Khi tìm được một số nguyên tố lớn hơn căn bậc 2 của 
n, tất cả các số còn lại không bị loại ra đều là số 
nguyên tố.
ATMMT - TNNQ 9
1. Số nguyên tố
 Thuật toán tìm dãy số nguyên tố nhỏ hơn n:
L = {2, 3, ..., n};
i = 1;
While (L[i]2 <= n) Do {
If (L[i] 0)
k = i2 + 2i;
While (k <= n) Do {
L[k] = 0;
k = k + i;
}
i++;
}
ATMMT - TNNQ 10
2. Hệ mã hoá khoá công khai
 Được xây dựng trên ý tưởng hàm một chiều.
ATMMT - TNNQ 11
2. Hệ mã hoá khoá công khai
Các bước chủ yếu khi thực hiện mã hoá khoá công 
khai:
1. Mỗi user tạo ra một cặp khoá được sử dụng cho việc mã 
hoá và giải mã thông điệp.
2. Mỗi user đặt một trong hai khoá trong một đăng ký công 
cộng. Đây là khoá công khai. Khoá còn lại được giữ kín. 
3. Nếu Bob muốn gửi một tin nhắn bí mật cho Alice, Bob mã 
hoá tin nhắn này bằng cách sử dụng khoá công khai của 
Alice.
4. Khi Alice nhận được tin nhắn, cô giải mã nó bằng cách sử 
dụng khoá riêng của mình. Không có ai khác có thể giải mã 
thông điệp bởi vì chỉ có Alice biết khoá riêng của Alice. 
ATMMT - TNNQ 12
2. Hệ mã hoá khoá công khai
 Lịch sử hình thành:
 Năm 1976, Whitfield Diffie và Martin 
Hellman công bố một hệ thống mật mã 
hoá khoá bất đối xứng trong đó nêu ra 
phương pháp trao đổi khóa công khai. 
 Trao đổi khoá Diffie-Hellman là phương 
pháp có thể áp dụng trên thực tế đầu tiên 
để phân phối khoá bí mật thông qua một 
kênh thông tin không an toàn.
ATMMT - TNNQ 13
2. Hệ mã hoá khoá công khai
 Lịch sử hình thành:
 Thuật toán đầu tiên được Rivest, Shamir và 
Adleman tìm ra vào năm 1977 tại MIT. Công 
trình này được công bố vào năm 1978 và thuật 
toán được đặt tên là RSA. 
 RSA sử dụng phép toán tính hàm mũ môđun 
(môđun được tính bằng tích số của 2 số nguyên 
tố lớn) để mã hóa và giải mã cũng như tạo chữ 
ký số. An toàn của thuật toán được đảm bảo 
với điều kiện là không tồn tại kỹ thuật hiệu quả 
để phân tích một số rất lớn thành thừa số 
nguyên tố. 
ATMMT - TNNQ 14
2. Hệ mã hoá khoá công khai
 Ứng dụng:
– Ứng dụng thông dụng nhất của mật mã 
hoá khoá công khai là bảo mật (mã 
hoá/giải mã): một văn bản được mã hoá 
bằng khoá công khai của một người sử 
dụng thì chỉ có thể giải mã với khoá bí 
mật của người đó.
ATMMT - TNNQ 15
2. Hệ mã hoá khoá công khai
Encryption
ATMMT - TNNQ 16
2. Hệ mã hoá khoá công khai
Y = E(PUb, X)
X = D(PRb, Y)
Secrecy
ATMMT - TNNQ 17
2. Hệ mã hoá khoá công khai
 Ứng dụng:
– Các thuật toán tạo chữ ký số khoá công 
khai có thể dùng để chứng thực: Một 
người sử dụng có thể mã hoá văn bản 
với khoá bí mật của mình. Nếu một 
người khác có thể giải mã với khoá 
công khai của người gửi thì có thể tin 
rằng văn bản thực sự xuất phát từ người 
gắn với khoá công khai đó.
ATMMT - TNNQ 18
2. Hệ mã hoá khoá công khai
Authentication
ATMMT - TNNQ 19
2. Hệ mã hoá khoá công khai
Authentication
ATMMT - TNNQ 20
2. Hệ mã hoá khoá công khai
 Ứng dụng:
– Trao đổi khoá: Hai bên hợp tác để trao đổi session 
key. Có một số phương pháp tiếp cận khác nhau liên 
quan đến các khóa bí mật của một hoặc cả hai bên. 
Trước tiên, mã hoá thông điệp X sử dụng khoá 
secret của người gởi (cung cấp chữ ký số) để được 
Y.
Kế đó, mã hoá tiếp Y với khoá public của người 
nhận.
Chỉ có người nhận đã xác định trước mới có khoá 
secret của người nhận và khoá public của người 
gởi để giải mã hai lần để được X.
ATMMT - TNNQ 21
2. Hệ mã hoá khoá công khai
Authentication và Secrecy
Z = E(PUb, E(PRa, X))
X = D(PUa, D(PRb, Z))
ATMMT - TNNQ 22
2. Hệ mã hoá khoá công khai
 Một số giải thuật hệ mã hoá khoá công khai
Algorithm Encryption/
Decryption
Digital
Signature
Key
Exchange
RSA x x x
Elliptic Curve x x x
Diffie-Hellman x
DSS x
ATMMT - TNNQ 23
2. Hệ mã hoá khoá công khai
 Định nghĩa:
Cho các tập hữu hạn S và T.
Hàm một chiều f: S T là hàm khả nghịch thoả:
 f dễ thực hiện; cho x S, dễ dàng tính được y = 
f(x).
 f-1 là hàm ngược của f, khó thực hiện; cho y T, 
rất khó tính được x = f-1(y).
 f-1 chỉ có thể tính được khi biết thêm một số 
thông tin cần thiết.
ATMMT - TNNQ 24
2. Hệ mã hoá khoá công khai
 Ví dụ:
f: pq n là hàm một chiều với p và q là 
các số nguyên tố lớn.
 Có thể dễ dàng thực hiện phép nhân pq 
(độ phức tạp đa thức).
 Tính f-1 (phân tích ra thừa số nguyên tố -
độ phức tạp mũ) là bài toán cực kỳ khó.
ATMMT - TNNQ 25
3. Giao thức trao đổi khoá Diffie-Hellman
Mục đích của thuật toán là cho phép hai 
người dùng trao đổi khóa bí mật dùng 
chung trên mạng công cộng, sau đó có thể 
sử dụng để mã hóa các thông điệp. 
Thuật toán tập trung vào giới hạn việc trao 
đổi các giá trị bí mật, xây dựng dựa trên 
bài toán khó logarit rời rạc.
26
Giao thức trao đổi khoá Diffie-Hellman
ATMMT - TNNQ 27
3. Giao thức trao đổi khoá Diffie-Hellman
ATMMT - TNNQ 28
3. Giao thức trao đổi khoá Diffie-Hellman
29
Giao thức trao đổi khoá Diffie-Hellman
Ví dụ: 
– A và B chọn số nguyên tố chung là p=353 và 
phần tử sinh g là 3.
– A chọn a=97 rồi gởi cho B giá trị kết quả của 
397 mod 353 = 40.
– B chọn b=233 rồi gởi cho A giá trị kết quả của 
3233 mod 353 = 248.
– Cả A và B đều tính được K = 24897 mod 353 
= 160 = 40233 mod 353.
ATMMT - TNNQ 30
4. Hệ RSA
Giải thuật được phát triển bởi Rivest, Shamir và 
Adleman, sử dụng một biểu thức với hàm mũ. 
Văn bản rõ được mã hóa ở dạng khối, kích cỡ 
của khối phải nhỏ hơn hoặc bằng log2(n).
Trong thực tế, kích thước khối là i bit, với 2i
<n<= 2i +1. 
Mã hóa và giải mã được thực hiện với một số 
khối rõ M (plaintext) và khối mã C (cyphertext): 
C = Me mod n
M = Cd mod n = (Me)d mod n = Med mod n
ATMMT - TNNQ 31
4. Hệ RSA
Giải thuật: 
– Mã hoá:
Từ khoá công khai (n, e) và thông điệp là 
plaintext dưới dạng số nguyên M [0, n).
Tính cyphertext C = Me mod n
– Giải mã:
M = Cd mod n, với d là khoá bí mật.
ATMMT - TNNQ 32
4. Hệ RSA
Cả người gửi và người nhận phải biết giá trị của n. Người gửi 
biết giá trị của e, và chỉ người nhận mới biết giá trị của d. 
Như vậy, đây là một thuật toán mã hoá khoá công khai với 
một khóa công khai PU={n, e} và một khoá riêng PR={d, n}. 
Các yêu cầu sau đây phải được đáp ứng:
– Phải có khả năng tìm được giá trị của e, d, n sao cho Med
mod n = M, với M < n.
– Phải dễ dàng tính toán được mod Me mod n và Cd cho tất 
cả các giá trị của M < n.
– Không khả thi để xác định d khi cho e và n.
– Để an toàn, RSA đòi hỏi p và q phải là các số nguyên tố 
rất lớn để không thể phân tích được n=pq.
ATMMT - TNNQ 33
4. Hệ RSA
ATMMT - TNNQ 34
4. Hệ RSA
ATMMT - TNNQ 35
4. Hệ RSA
Ví dụ:
ATMMT - TNNQ 36
4. Hệ RSA
Tính 887 mod 187
– 887 mod 187 = [(884 mod 187) x (882 mod 187) 
x (881 mod 187)] mod 187
– 881 mod 187 = 88
– 882 mod 187 = 7744 mod 187 = 77
– 884 mod 187 = 59,969,536 mod 187 = 132
– 887 mod 187 = (88 x 77 x 132) mod 187 = 
894,432 mod 187 = 11
ATMMT - TNNQ 37
4. Hệ RSA
Tính 1123 mod 187
– 1123 mod 187 = [(111 mod 187) x (112 mod 187) x 
(114 mod 187) x (118 mod 187) x (118 mod 187)] 
mod 187
– 111 mod 187 = 11
– 112 mod 187 = 121
– 114 mod 187 = 14,641 mod 187 = 55
– 118 mod 187 = 214,358,881 mod 187 = 33
– 1123 mod 187 = (11 x 121 x 55 x 33 x 33) mod 187 
= 79,720,245 mod 187 = 88
ATMMT - TNNQ 38
4. Hệ RSA
Ví dụ:
Cho các số nguyên tố p=2357 và q=2551.
Tính được: 
n = pq = 6012707
(n) = (p-1)(q-1) = 6007800
Chọn số nguyên e (1, (n)) là 3674911
d  e-1 mod (n) = 422191
(d được tính bằng cách dùng thuật toán Euclide mở rộng, tìm
số tự nhiên x sao cho d=(x*(n)+1)/e cũng là số tự nhiên).
Khoá công khai: (n, e) = (6012707, 3674911)
Khoá bí mật: d = 422191
ATMMT - TNNQ 39
4. Hệ RSA
Ví dụ:
Để mã hoá bản rõ 
M = 5234673 [0, 6012707)
tính C = Me mod n = 3650502
Để giải mã
tính Cd mod n = 5234673
ATMMT - TNNQ 40
4. Hệ RSA
Ví dụ:
– p = 61 — số nguyên tố thứ nhất (giữ bí mật hoặc hủy sau khi tạo khóa) 
– q = 53 — số nguyên tố thứ hai (giữ bí mật hoặc hủy sau khi tạo khóa) 
– n = pq = 3233 — môđun (công bố công khai) 
– e = 17 — số mũ công khai 
– d = 2753 — số mũ bí mật 
– Khóa công khai là cặp (e, n). Khóa bí mật là d. Hàm mã hóa là:
encrypt(m) = me mod n = m17 mod 3233 với m là văn bản rõ. Hàm giải mã là:
decrypt(c) = cd mod n = c2753 mod 3233 với c là văn bản mã.
– Để mã hóa văn bản có giá trị 123, ta thực hiện phép tính:
encrypt(123) = 12317 mod 3233 = 855 
– Để giải mã văn bản có giá trị 855, ta thực hiện phép tính:
decrypt(855) = 8552753 mod 3233 = 123 
– Cả hai phép tính trên đều có thể được thực hiện hiệu quả nhờ giải thuật bình 
phương và nhân.
ATMMT - TNNQ 41
5. Quản lý khoá
1. Thẩm quyền thu hồi khoá
– Thu hồi khoá khi khoá bị sai sót hoặc có tính phá 
hoại.
– Thường được tham gia bởi từ hai thực thể trở lên. 
Ví dụ: cả Alice và Bob cùng thoả thuận thu hồi 
khoá.
– Cần đảm bảo:
Càng nhiều bên tham gia càng tốt (chống phá 
hoại).
Càng ít bên tham gia càng tốt (thu hồi nhanh).
ATMMT - TNNQ 42
5. Quản lý khoá
2. Phân phối khoá mới
– Phải phân phối khoá mới sau khi khoá cũ bị thu 
hồi nhằm đảm bảo hệ thống tiếp tục hoạt động 
một cách an toàn.
– Cần giảm thời gian giữa thời điểm thu hồi khoá 
và thời điểm phân phối khoá mới tới mức tối 
thiểu.
– Phải đảm bảo yêu cầu về an ninh và yêu cầu về 
tính sẵn sàng của hệ thống.
ATMMT - TNNQ 43
5. Quản lý khoá
3. Thông báo thông tin về thu hồi khoá
– Thông báo về một khóa nào đó bị thu hồi cần 
đến được tất cả những người đang sử dụng nó 
trong thời gian ngắn nhất có thể. 
– Hai cách:
Thông tin được chuyển từ trung tâm tới 
người dùng.
Người dùng lấy thông tin từ trung tâm.
– Cung cấp các chứng thực có thời hạn.
ATMMT - TNNQ 44
5. Quản lý khoá
4. Các biện pháp thực hiện khi lộ khoá
– Hầu hết các trường hợp thu hồi khoá xảy ra khi 
khoá bí mật đã bị lộ. Hai khả năng xảy ra:
Các văn bản mã hóa với khóa công khai sau 
thời điểm T không còn được xem là bí mật.
các chữ ký số thực hiện với khóa bí mật sau 
thời điểm T không còn được xem là thật.
– Cần xác định người có quyền thu hồi khóa, 
cách thức truyền thông tin tới người dùng, cách 
thức xử lý các văn bản mã hóa với khóa bị lộ. 
ATMMT - TNNQ 45
6. Bài tập
1. Viết chương trình nhập vào một số nguyên 
dương n, xuất ra:
– n có phải là số nguyên tố hay không?
– Dãy số nguyên tố nhỏ hơn hoặc bằng n.
– n số nguyên tố đầu tiên.
2. Cho p là một số nguyên tố và n < p là một số 
nguyên dương. Chứng minh rằng a2 mod p = 1 
nếu và chỉ nếu a mod p = 1 hoặc a mod p = -1.
ATMMT - TNNQ 46
6. Bài tập
3. Hacker có thể lợi dụng điểm yếu trong 
giao thức trao đổi khoá Diffie-Hellman 
để thực hiện một cuộc tấn công Man-in-
the-Middle.
 Mô tả cuộc tấn công này. 
 Vẽ hình minh hoạ.
ATMMT - TNNQ 47
6. Bài tập
4. Nếu cho số nguyên tố p = 353 thì a = 3 là 
một primitive root modulo p. Sử dụng hai 
số này để xây dựng một hệ thống trao đổi 
khoá Diffiel-Hellman. 
a. Nếu Alice chọn một private key XA = 97, 
giá trị public key YA của Alice là?
b. Nếu Bob chọn một private key XB = 233, 
giá trị public key YB của Bob là?
c. Giá trị của khoá bí mật thống nhất giữa 
cả Alice và Bob là bao nhiêu?
ATMMT - TNNQ 48
6. Bài tập
5. Cho p = 13.
a. Chứng minh rằng a = 2 là một primitive 
root modulo p. Sử dụng hai tham số này 
để xây dựng một hệ thống trao đổi khoá 
Diffie-Hellman.
b. Nếu public key của Alice là YA = 7, giá 
trị private key XA của cô ấy là bao 
nhiêu?
c. Nếu public key của Bob là YB = 11, giá 
trị private key XB của anh ấy?
ATMMT - TNNQ 49
6. Bài tập
6. Cho n = 187 = 11 x 17.
a. Cho e = 7, M = 89. Tính giá trị RSA 
ciphertext C.
b. Từ C tính được ở (a), tính toán plaintext 
M.
c. Cho e = 7, M = 88. Tính toán giá trị RSA 
ciphertext C. C có thể sử dụng n = 187? 
Giải thích.
ATMMT - TNNQ 50
6. Bài tập
7. Alice sử dụng phương pháp dưới đây để 
mã hoá văn bản rõ (plaintext messages) 
tiếng Anh với toàn các ký tự viết hoa: 
 Ánh xạ mỗi ký tự viết hoa đến các số từ 
100 đến 125; cụ thể là, ánh xạ A thành 
100, B thành 101, ..., và Z thành 125. 
 Sau đó cô ấy mã hoá các số nguyên này 
sử dụng các giá trị lớn của n và e. 
 Phương pháp này có an toàn? Giải thích.
ATMMT - TNNQ 51
6. Bài tập
8. Giả sử rằng Alice mã hoá một thông 
điệp M sử dụng RSA với public key n = 
437, e = 3, ciphertext C = 75. 
Nếu ai đó nói với Malice rằng M {8,9}, 
thì Malice có thể xác định giá trị đúng 
của M mà không cần n. 
Malice thực hiện điều này như thế nào?
ATMMT - TNNQ 52
6. Bài tập
9. Viết một ứng dụng client-server sử 
dụng socket API để thực hiện giao 
thức trao đổi khoá Diffie-Hellman.
10. Viết một ứng dụng client-server sử 
dụng để thực hiện mã hoá và giải 
mã RSA, với các tham số của RSA 
được cho trước.
----------------
ATMMT - TNNQ 53

File đính kèm:

  • pdfbai_giang_an_toan_mang_may_tinh_bai_5_ma_hoa_khoa_cong_khai.pdf