TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH
KHOA CÔNG NGHỆ THÔNG TIN
Giảng Viên: ThS.Dương Minh Tuấn
1
Chương V.
Các giải thuật mã hóa KHĨA BẤT ĐỐI XỨNG
1.
2.
3.
4.
Tổng quan
Lý thuyết nền tản hệ mật mã công khai
Các giải thuật mã hóa khóa bất đối xứng
RSA
2
1. Tổng quan
▪ Hệ mật mã khóa đối xứng khơng đáp ứng được 2 mục
tiêu an tồn
• Xác thực
- Alice và Bob trao đổi thơng tin bí mật
- Alice cần phải biết thông tin chắc chắn đến từ Bob, và ngược lại
• Chống phủ nhận
- Alice và Bob trao đổi thơng tin bí mật
- Nếu Alice đã gửi thơng tin nào đó cho Bob thì Alice khơng thể chối bỏ
thơng tin đó là của mình
▪ Quản lý khóa đối xứng là một vấn đề nan giải
• Trong các hệ khóa đối xứng, mỗi cặp người dùng phải có khóa riêng
• 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ố lượng người dùng tăng
3
1. Tổng quan
Khái niệm
Mỗi người dùng có 1 khóa riêng và 1 khóa cơng khai
• Khóa riêng bí mật
• Khóa cơng khai có thể chia sẻ
Quản lý khóa
• 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
4
1. Tổng quan
Khái niệm
Mã hóa dùng khóa cơng khai k
• C = E(k,M)
Giải mã dùng khóa riêng K
• M = D(K,C)
5
1. Tổng quan
Khái niệm
▪ Mã hóa dùng khóa riêng K
• C = E(K,M)
▪ Giải mã dùng khóa cơng khai k
• M = D(k,C)
6
1. Tổng quan
Khóa bí mật & khóa cơng khai
7
2. Lý thuyết nền tản Hệ mật mã khóa cơng khai
Độ phức tạp
Độ phức tạp tính tố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
•Số trường hợp phải xét đến là một hàm đa thức
Giải quyết các vấn đề NP
•Số trường hợp phải xét đến là hàm lũy thừa
“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”
8
2. Lý thuyết nền tản Hệ mật mã khóa cơng khai
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
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 mod n
• 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
9
2. Lý thuyết nền tản Hệ mật mã khóa cơng khai
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^25
• a^25 = a^(11001)
• a^(11001) = a^(10000+1000+1)
• a^(10000+1000+1) = a^10000 * a^1000 * a^1
• a^10000 * a^1000 * a^1 = a^16 * a^8 * a^1
Độ phức tạp (O(logb*(logs)^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*(logs)^2))
10
2. Lý thuyết nền tản Hệ mật mã khóa cơng khai
Thủ tục bình phương
ModExp1(a,b, s)
Vào:
• 3 số ngun dương a,b,s sao cho a < s
• bn-1 ···b1b0 là biểu diễn nhị phân của b, n = [logb]
Ra: a^b mod s
11
2. Lý thuyết nền tản Hệ mật mã khóa cơng khai
Ví dụ:
Tính 6^73 mod 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) = 16 mod 100
12
3.Các giải thuật mã hóa khóa bất đối xứng
❖Các giải thuật mã hóa khóa bất đối
xứng (asymmetric key encryption)
▪
Cịn gọi là mã hóa khóa cơng khai
(public key encryption):
▪
Sử dụng một cặp khóa (key pair):
• một khóa (public key) cho mã hóa
• một khóa (private key) cho giải mã.
13
3. Các giải thuật mã hóa khóa bất đối xứng
❖Đặc điểm:
Kích thước khóa lớn (1024 – 3072 bít)
Tốc độ chậm
▪
▪
• Phần lớn do khóa có kích thước lớn.
Độ an tồn cao
Thuận lợi trong quản lý và phân phối khóa:
▪
▪
• Do khóa mã hóa là cơng khai và có thể trao đổi dễ dàng.
❖ Các giải thuật mã hóa khóa bất đối xứng điển hình:
▪
▪
▪
▪
▪
RSA
Rabin
ElGamal
McEliece
Knapsack
14
4. Giải thuật mã hóa khóa bất đối xứng RSA
❖ Giải thuật mã hóa RSA được 3 nhà khoa học Ronald Rivest,
Adi Shamir và Leonard Adleman phát minh năm 1977;
▪ Tên giải thuật RSA lấy theo chữ cái đầu của tên 3 ơng.
❖ Độ an tồn của RSA dựa trên tính khó của việc phân tích số
ngun rất lớn:
▪ Khóa RSA là số nguyên rất lớn có hàng trăm chữ số thập phân
❖ RSA sử dụng một cặp khóa:
▪
Khóa cơng khai (Public key) dùng để mã hóa;
▪
Khóa riêng (Private key) dùng để giải mã.
▪
Chỉ khóa riêng cần giữ bí mật. Khóa cơng khai có thể cơng bố rộng rãi.
15
4. Giải thuật mã hóa khóa bất đối xứng RSA
❖ Kích thước khóa của RSA:
▪ Khóa < 1024 bít khơng an tồn hiện nay.
▪ Khuyến nghị dùng khóa >= 2048 bít với các ứng dụng mật mã dân sự hiện nay.
▪ Tương lai nên dùng khóa >=3072 bít.
❖Thủ tục sinh khóa RSA:
Tạo 2 số ngun tố p và q;
Tính n = p x q
Tính (n) = (p-1) x (q-1)
Chọn số nguyên tố e sao cho 0 < e < (n) và
gcd(e, (n)) = 1, hay e, (n) là 2 số nguyên tố cùng nhau
▪ Chọn số d sao cho d e-1 mod (n), hoặc (d x e) mod (n) = 1
(d là molulo nghịch đảo của e)
▪
▪
▪
▪
❖Ta có (n, e) là khóa cơng khai, (n, d) là khóa riêng
16
4. Giải thuật mã hóa khóa bất đối xứng RSA
❖Thủ tục mã hóa RSA:
▪
Thơng điệp m đã được chuyển thành số, m
▪
Bản mã c = me mod n
❖Thủ tục giải mã RSA:
▪
Bản mã c, c
▪
Bản rõ m = cd mod n
17
4. Giải thuật mã hóa khóa bất đối xứng RSA
❖Ví dụ 1:
▪ Chọn 2 số nguyên tố p=3 và q=11
▪ Tính n = p x q = 3 x 11 = 33
▪ Tính (n) = (p-1) x (q-1) = 2 x 10 = 20
▪ Chọn số e sao cho 0 < e < 20, và e và (n)
là số nguyên tố
cùng nhau ((n) không chia hết cho e).
Chọn e = 7
▪ Tính (d x e) mod (n) →(d x 7) mod 20 = 1
d = (20*k +1)/7 → d = 3 (k=1)
▪ Khóa cơng khai (33, 7)
▪ Khóa bí mật (33, 3)
▪ Mã hóa:
• Với m = 6,
• c = me mod n = 67 mod 33 = 279936 mod
33 = 30
• → c = 30
▪ Giải mã:
• m = cd mod n = 303 mod 33 = 27000 mod
33 = 6
•→ m=6
18
4. Giải thuật mã hóa khóa bất đối xứng RSA
❖Ví dụ 2:
▪ Chọn 2 số nguyên tố p=61 và q=53
▪ Tính n = p x q = 61 x 53 = 3233
▪ Tính (n) = (p-1) x (q-1) = 60 x 52 = 3120
▪ Chọn số e sao cho 0 < e < 3120 và e và (n)
là số nguyên tố cùng nhau ((n) không chia hết
cho e). Chọn e = 17
▪ Tính (d x e) mod (n) →(d x 17) mod 3120 = 1
d = (3120*k +1)/17 →d = 2753 (k=15)
▪ Khóa cơng khai (3233, 17)
▪ Khóa bí mật (3233, 2753)
▪ Mã hóa:
• Với m = 65,
• c = me mod n = 6517 mod 3233 = 2790
• → c = 2790
▪ Giải mã:
• m = cd mod n = 27902753 mod 3233
• → m = 65
19
4. Giải thuật mã hóa khóa bất đối xứng RSA
❖Một số u cầu với q trình sinh khóa RSA:
▪ Các số nguyên tố p và q phải được chọn sao cho việc phân
tích n (n = pq) là khơng khả thi về mặt tính tốn;
▪ p và q nên có cùng độ lớn (tính bằng bit) và phải là các số đủ lớn;
• Nếu n có kích thước 1024 bít thì p và q nên có kích thước khoảng 512 bít.
• Nếu n có kích thước 2048 bít thì p và q nên có kích thước khoảng 1024 bít
▪ Hiệu số p – q không nên quá nhỏ, do nếu p – q quá nhỏ, tức p q và
p √𝑛 → chọn các số nguyên tố ở gần √𝑛 và thử nhiều lần.
▪ Khi có được p → tính q, và tìm ra d là khóa bí mật từ khóa cơng
khai e và (n).
▪ Nếu p và q được chọn ngẫu nhiên và p – q đủ lớn, khả năng hai số
này bị phân tích từ n giảm đi
20
4. Giải thuật mã hóa khóa bất đối xứng RSA
❖Sử dụng số mũ mã hóa (e) nhỏ:
▪ Khi sử dụng số mũ mã hóa (e) nhỏ, chẳng hạn e=3 có thể tăng tốc độ mã
hóa;
▪ Kẻ tấn cơng có thể nghe trộm và lấy được bản mã, từ đó phân tích bản mã
để khơi phục bản rõ. Do số mũ nhỏ nên chi phí cho phân tích/vét cạn khơng
q lớn;
▪ Phịng chống:
• Sử dụng số mũ e lớn;
• Thêm chuỗi ngẫu nhiên vào khối rõ trước khi mã hóa.
❖Sử dụng số mũ giải mã (d) nhỏ:
▪ Khi sử dụng số mũ giải mã (d) nhỏ, có thể tăng tốc độ giải mã;
▪ Nếu d nhỏ và gcd(p-1, q-1) (gcd: ước số chung lớn nhất)
cũng nhỏ thì d có thể tính được tương đối dễ dàng từ khóa cơng khai (n, e);
▪ Phòng chống: Sử dụng số mũ d đủ lớn.
21
4. Giải thuật mã hóa khóa bất đối xứng RSA
❖Sử dụng số mũ mã hóa (e) nhỏ:
▪ Khi sử dụng số mũ mã hóa (e) nhỏ, chẳng hạn e=3 có thể tăng tốc độ
mã hóa;
▪ Kẻ tấn cơng có thể nghe trộm và lấy được bản mã, từ đó phân tích bản
mã để khơi phục bản rõ. Do số mũ nhỏ nên chi phí cho phân tích/vét cạn
khơng q lớn;
▪ Phịng chống:
• Sử dụng số mũ e lớn;
• Thêm chuỗi ngẫu nhiên vào khối rõ trước khi mã hóa.
22
TÓM TẮT CHƯƠNG
1. Lý thuyết nền tản hệ mật mã cơng khai
2. Các giải thuật mã hóa khóa bất đối xứng
23
Thanks.
24