You are on page 1of 25

An toàn thông tin

Bài 4: Mã hóa khóa công khai

TS. Nguyễn Hiếu Cường


Bộ môn CNPM, Khoa CNTT, Trường ĐH GTVT
Email: cuonggt@gmail.com

Hà Nội, 2019
Mã hóa đối xứng

 Sử dụng cùng một khóa K


 Mã hóa: Y = E [K, X]
 Giải mã: X = D [K, Y]

 Nhược điểm của mã hóa đối xứng?


 Không có tính xác thực (authentication)
 Không có tính chống từ chối (non-repudiation)
 Khó khăn trong phân phối khóa (key distribution)

2
Câu hỏi

Alice và Bob có thể trao đổi tài liệu mật với nhau mà không cần
thỏa thuận trước một khóa không?

3
Giải pháp?

A A B
1
Alice Bob

A B

3
B

4
Mô tả hình thức

1. Alice mã hóa P: C1 = E(P, KA)

2. Gửi Bob và Bob mã C1: C2 = E(C1, KB)

3. Gửi lại Ailce và Alice giải mã: C1’ = D(C2, KA)

4. Gửi lại Bob và Bob giải mã: P’ = D(C1’, KB)

 Nhận xét?
 Trong mã hóa/giải mã không đơn giản như “khóa hòm” mà cần
tuân theo nguyên tắc nghịch đảo (mã hóa sau – giải mã trước)
 Kết quả Bob nhận được P’ ≠ P

5
Trao đổi khóa bí mật

 Trung tâm phân phối khóa (KDC)


 Mỗi thực thể có khóa chủ với KDC (KA, KB, …)
 KDC tạo các khóa phiên để các bên trao đổi
 Trao đổi khóa trong hệ mật mã khóa đối xứng

 Giao thức trao đổi khóa Diffie-Hellmann


 Đề xuất năm 1976 cùng khái niệm khóa công khai
 Dùng để thiết lập khóa bí mật giữa A và B

6
Trao đổi khóa Diffie-Hellman

 Giao thức trao đổi khóa bí mật giữa A (Alice) và B (Bob)


 A và B thống nhất với nhau các giá trị p, g (có thể công khai)
 p là một số nguyên tố lớn
 g là căn nguyên thủy của p
 g là số nguyên nhỏ nhất thỏa mãn gcd(g,p)=1
 A chọn a và giữ bí mật, B chọn b và giữ bí mật (với a, b < p)

 gab mod p là khóa bí mật để A và B trao đổi với nhau

7
Yêu cầu của giao thức DH

 Bài toán logarith tính a và b từ ga và gb: a = logg(ga), b = logg(gb)


 Để giao thức được an toàn, cần sử dụng giá trị rất lớn cho a, b, và p
 Ví dụ, nếu p = 23 thì chỉ cần thử hết 23 trường hợp là tìm ra khóa bí mật
 An toàn nếu số nguyên tố p có ít nhất 300 chữ số, còn a và b có ít nhất 100
chữ số
 Lưu ý: g không cần thiết là một căn nguyên thủy có giá trị lớn. Trong thực tế
người ta hay sử dụng các giá trị 2, 3 hoặc 5.

8
Ví dụ
1.Alice và Bob thỏa thuận sử dụng chung một số nguyên tố p=23 và căn nguyên thủy g=5.
2.Alice chọn một số nguyên bí mật a=6, và gửi cho Bob giá trị A = ga mod p
1. A = 56 mod 23
2. A = 15,625 mod 23
3. A = 8
3.Bob chọn một số nguyên bí mật b=15, và gửi cho Alice giá trị B = gb mod p
1. B = 515 mod 23
2. B = 30,517,578,125 mod 23
3. B = 19
4.Alice tính s = B a mod p
1. s = 196 mod 23
2. s = 47,045,881 mod 23
3. s = 2
5.Bob tính s = A b mod p
1. s = 815 mod 23
2. s = 35,184,372,088,832 mod 23
3. s = 2
6.Như vậy Alice và Bob cùng chia sẻ bí mật chung là số 2 vì 6*15 cũng bằng 15*6.
9
Tính an toàn của lược đồ Diffie-Helmann

 Đối phương có thể biết p, g, ga, gb nhưng nếu a, b, p rất lớn thì
sẽ rất khó tính ra được a và b

 Tuy nhiên, giao thức thất bại trước tấn công man-in-the-middle

 D dùng gab để đọc dữ liệu gửi từ A và gcd để đọc dữ liệu gửi từ B

 Giải pháp khắc phục?

10
Giao thức Station-to-Station

 Lược đồ DH có thể bị tấn công man-in-the-middle


 Giải pháp
 Các thông điệp gửi đi cần được ký để đảm bảo tính xác thực
 Giao thức Station-to-Station (STS)
 Yêu cầu mỗi bên phải có chữ ký riêng SigA, SigB

11
Nhược điểm của giao thức DH

 Vấn đề trao đổi khóa đã được giải quyết


 Còn có nhược điểm gì trong giao thức này?

 A và B phải “đợi nhau” để có thể tiến hành giao dịch


Ví dụ: A ở Việt Nam và B ở Mỹ; Khi A gửi (ga mod p) sang B, nhưng
nếu B chưa gửi (gb mod p) sang A thì giao dịch chưa thực hiện được

12
Các tiếp cận tính an toàn

 Thời sơ khai
 Che giấu thông tin nhờ thống nhất những qui ước bí mật chung
 Nguyên lý Kerckhoffs (thế kỷ 19)
 An toàn của một hệ mật mã chỉ dựa trên khóa bí mật
 Với các hệ mật mã khóa đối xứng
 Khó chia sẻ khóa
 Khóa công khai (từ 1970s)
 Làm sao tạo được cặp khóa (khóa công khai và khóa bí mật)
 Giải pháp: các hàm cửa lật một chiều (one-way trapdoor)
 Phân tích một số thành các thừa số nguyên tố  RSA
 Logarith rời rạc  ElGammal

13
Số học đồng dư

 Phép chia modulo

Ví dụ: 27 mod 8 = 3, 35 mod 9 = 8, -27 mod 8 = ?, -35 mod 9= ?


 Các phép toán theo modulo

 Phần tử nghịch đảo modulo:


 Nếu gcd(a,n)=1 thì tồn tại w là phần tử nghịch đảo của a, ký hiệu a-1
 Tính a-1 bằng thuật toán Euclid mở rộng

14
Số học đồng dư (2)

 n=10, a=7 nguyên tố cùng nhau  a-1 = 3 (mod 10)

 n=10, a=2 không nguyên tố cùng nhau  không tồn tại nghịch đảo

 Một số ví dụ khác…
 23-1 mod 206

 550-1 mod 1759

 2309-1 mod 1759

15
RSA

 Đề xuất bởi Rivest, Shamir và Adleman (1977)


 Là hệ mã khóa công khai được sử dụng nhiều nhất cho đến nay
 Dựa trên các phép toán lũy thừa theo modulo
 Độ an toàn phụ thuộc vào việc phân tích một số nguyên lớn ra
thành các thừa số nguyên tố

16
Thuật toán RSA

 Tạo cặp khóa


 Chọn hai số nguyên tố lớn p, q và tính n = p.q
 Tính φ(n) = (p-1)(q-1) [hàm Euler]
 Chọn e sao cho gcd(e, φ(n))=1 [để tồn tại nghịch đảo của e]
 Chọn d sao cho e.d = 1 mod φ(n) [d luôn tồn tại]
 Khóa công khai Ku là (e, n)
 Khóa bí mật KR là (d, n)

 Mã hóa
C = E(M, Ku) = Me mod n
 Giải mã
M = D(C, KR) = Cd mod n

17
Ví dụ

 Chọn 2 số nguyên tố: p=11, q=3  n = p.q = 33


 Tính φ(n) = (p-1)(q-1) = 20
 Chọn e: gcd(e, 20)=1  e = 3
 Chọn d: e.d = 1 mod 20  d = 7 [cách tính 3-1 mod 20 ?]
 Khóa công khai Ku = (3, 33), khóa bí mật KR = (7, 33)
 Mã hóa: C = Me mod n = 153 mod 33 = 9

 Giải mã: M = Cd mod n = 97 mod 33 = 15

18
Độ phức tạp tính toán của RSA

 Vấn đề
 Sinh số nguyên tố lớn?
 Mã hóa/ giải mã: Tính lũy thừa số lớn?

 Giải pháp?
 Sinh số nguyên tố lớn [Kiểm tra khả năng nguyên tố của nó (xác suất)]
 Thuật toán Miller-Rabin
 Thuật toán Solovay-Strassen
 Tính lũy thừa số lớn:
 Thuật toán bình phương liên tiếp

19
Thuật toán bình phương liên tiếp

 Ví dụ: Tính 97 mod 33= ? , 970 mod 33=?

20
Thuật toán bình phương liên tiếp (2)

Tính xy mod n một cách hiệu quả?

Input: x, y, n; y biểu diễn dạng nhị phân y = y1y2...yk


Output: xy mod n

21
Độ an toàn của RSA

 Tấn công vét cạn: với N lớn là không khả thi


 Phân tích N thành các thừa số nguyên tố
 An toàn tuyệt đối cần N lớn 1024 bit (309 chữ số)

22
Tóm tắt

 Nhược điểm của mã đối xứng và cách khắc phục

 Các tiếp cận tính an toàn

 Mã hóa khóa công khai

 Số học đồng dư

 Hệ mật mã khóa công khai RSA

 Bảo mật, chứng thực với khóa công khai

 Lược đồ trao đổi khóa Diffie-Hellmann

23
Bài tập

1. Bản rõ M = 88
 Chọn 2 số nguyên tố: p=17, q=11  n = p.q = 187
 Tính φ(n) = (p-1)(q-1) = 160
 Chọn e: gcd(e, 160)=1  e = ?
 Chọn d: e.d = 1 mod 160  d = ?
 Khóa công khai Ku = (e, 187), khóa bí mật KR = (d, 187)

 Mã hóa: C = Me mod n
 Giải mã: M = Cd mod n

24
Bài tập

2. Thực hiện mã hóa sử dụng RSA:


a) p=3, q=11, e=7, M=5
b) p=5, q=11, e=3, M=9
3. Trong RSA, ta gửi bản mã C=10 đến
một người có mã công khai (e=5, n=35)
thì bản rõ M=?
4. Lược đồ DH có p= 11, g=2.
a) Nếu khóa chung (công khai) của A là 9
thì khóa riêng (bí mật) của nó =?
b) Nếu B có khóa riêng là 3 thì khóa bí mật
(chia sẻ giữa A và B) =?
c) p=17, g=10, a=7, b=5Khóa bí mật= ?

25

You might also like