Nội dung của bài giảng trình bày về lý thuyết số, mã hóa công khai và RSA, định lý Fermat, phép logarit rời rạc, đặc điểm mật mã khóa công khai, ứng dụng mật mã khóa công khai và mô hình đảm bảo bí mật, mô hình ứng dụng xác thực, các điều kiện cần thiết và tính an toàn của trao đổi khóa.
Trang 1Trình bày:Ths Lương Trần Hy Hiếnhttp://hienlth.info/hutech/baomatthongtin
Trang 21. Lý thuyết số
2. Mã hóa công khai
3. RSA
2
Trang 3 Phép chia modulo: phép chia lấy dư
a mod n = r với a ≥ 0; n > 0 ; 0 ≤ r ≤ n-1
Đồng dư trong phép chia modulo cho n:
a ≡ b (mod n) hay a ≡ b mod n
Phép toán modulo phân hoạch tập số tự nhiên
N thành n lớp tương đương đồng dư - ứng với
các giá trị của r trong tập {0, 1, 2, 3, …, N-1}
VD: N = 4 có 4 lớp tương đương:
{0, 4, 8, 12, 16 …}, {1, 5, 9, 13, 17 …},
{2, 6, 1, 14, 18 …}, {3, 7, 11, 15, 19 …}
3
Trang 4Một số tính chất của modulo:
(a + b) mod n = [(a mod n) + (b mod n)] mod n
(a - b) mod n = [(a mod n) - (b mod n)] mod n
(a x b) mod n = [(a mod n) x (b mod n)] mod n
4
Trang 5 Ước số:
Nếu a mod n = 0 nghĩa là a chia hết cho n (𝒂 ⋮
𝒏), hay n là ước số của a (n | a)
gcd(a, b) : ước chung lớn nhất của 2 số, tìm
theo thuật toán Euclid
Trang 6 Phần tử nghịch đảo của phép nhân modulo:
Nếu a n thì: w sao cho a.w 1 (mod n)
w dgl phần tử nghịch đảo trong phép chia mod
n, kí hiệu a-1
Ví dụ: n = 10, a = 7 là hai số nguyên tố cùng
nhau, do đó tìm được a-1 = 3 (21 ≡ 1 mod 10)
6
Trang 7 Nếu p là số nguyên tố và a là số nguyên không chia hết cho p thì a p-1 ≡ 1 mod p
Ví dụ:
p = 5, a = 7 7 4 = 49.49 = 2401, 2401 ≡ 1 mod 5
p = 7, a = 4 4 6 = 64.64 = 4096, 4096 ≡ 1 mod 7
7
Trang 9 n = 19, a, x = 1 18
Nhận xét:
hàng a = 11 lặp lại theo chu kỳ 3 giá trị 11, 7, 1.
Cần quan tâm hàng nào đủ giá trị (không tạo
chu kỳ) hàng a = 2, 3, 10, 13, 14, 15
Như vậy chỉ có a = 2, 3, 10, 13, 14, 15 thì phép
lũy thừa modulo trên mới khả nghịch.
Tổng quát với mỗi n chỉ có một số trường hợp
của a thì phép lũy thừa là khả nghịch a được gọi là primitive root của n
9
Trang 1010
Trang 11 Còn gọi là mật mã hai khóa hay bất đối xứng
Các giải thuật khóa công khai sử dụng 2 khóa
Một khóa công khai
▪ Ai cũng có thể biết
▪ Dùng để mã hóa thông báo và thẩm tra chữ ký
Một khóa riêng
▪ Chỉ nơi giữ được biết
▪ Dùng để giải mã thông báo và ký (tạo ra) chữ ký
Có tính bất đối xứng
Bên mã hóa không thể giải mã thông báo
Bên thẩm tra không thể tạo chữ ký
Trang 12 Trao đổi khóa
▪ Cho phép chia sẻ khóa phiên trong mã hóa đối xứng
Một số giải thuật khóa công khai thích hợp cho
cả 3 loại ứng dụng; một số khác chỉ có thể dùng cho 1 hay 2 loại
Trang 13Kẻ phá mã
Trang 1414
Trang 16Alice Bob
Khóa công khai của Bob Khóa riêng của Bob
Trang 17 Bên B dễ dàng tạo ra được cặp (KUb, KRb)
Bên A dễ dàng tạo ra được C = EKUb(M)
Trang 19 Đề xuất bởi Ron Rivest, Adi Shamir và Len
Adleman (MIT) vào năm 1977
Hệ mã hóa khóa công khai phổ dụng nhất
Mã hóa khối với mỗi khối là một số nguyên < n
Thường kích cỡ n là 1024 bit ≈ 309 chữ số thập phân
Đăng ký bản quyền năm 1983, hết hạn năm
2000
An ninh vì chi phí phân tích thừa số của một số nguyên lớn là rất lớn
19
Trang 20 Mỗi bên tự tạo ra một cặp khóa công khai
-khóa riêng theo các bước sau:
1 Chọn ngẫu nhiên 2 số nguyên tố đủ lớn p q
2 Tính n = pq và (n) = (p-1)(q-1) – dùng ĐL
Trung Hoa để giảm bớt tính toán.
3 Chọn ngẫu nhiên khóa mã hóa e sao cho 1 < e
< (n) và gcd(e, (n)) = 1 ( nguyên tố cùng
nhau )
4 Tìm khóa giải mã d ≤ n thỏa mãn e.d ≡ 1 mod
(n) (ed – 1 chia hết cho (n))
5 Công bố khóa công khai KU = {e, n}
Giữ bí mật khóa giải mã riêng KR = {d, n}
▪ Các giá trị bí mật p và q bị hủy bỏ
Trang 21Cho biết (e,n) và (d,n)
1. Để mã hóa 1 thông báo nguyên bản M, bên gửi
Lưu ý là thông báo M phải nhỏ hơn n
Phân thành nhiều khối nếu cần
Trang 22 Theo ĐL Ole: aФ(n)mod N = 1 trong đó gcd(a, N)=1.
Ta có N=p.q, với Ф(N)=(p-1)(q-1), e.d=1 mod Ф(N) e.d=1+k.Ф(N) đối với một giá trị k nào đó
Suy ra: Cd = (Me)d = M1+k.Ф(N) = M1.(MФ(N))k
Nên Cd mod N = M1.(1)k modN
= M1 mod N = M mod N
22
Trang 24 Chọn 2 số nguyên tố p = 17 và q = 11
Tính n = pq = 17 11 = 187
Tính (n) = (p - 1)(q - 1) = 16 10 = 160
Chọn e: gcd(e, 160) = 1 và 1 < e < 160; lấy e = 7
Xác định d: de ≡ 1 mod 160 và d ≤ 187
Giá trị d = 23 vì 23 7 = 161 = 1 160 + 1
Công bố khóa công khai KU = {7, 187}
Giữ bí mật khóa riêng KR = {23, 187}
Hủy bỏ các giá trị bí mật p = 17 và q = 11
Trang 25Mã hóa Giải mã
Nguyên
bản
Nguyên bản Bản
mã
Trang 27 Khóa 128 bit là một số giữa 1 và một số rất lớn
Trang 2828
Trang 29 Phương pháp vét cạn
Thử tất cả các khóa riêng có thể
▪ Phụ thuộc vào độ dài khóa
Phương pháp phân tích toán học
Phân n thành tích 2 số nguyên tố p và q
Xác định trực tiếp (n) không thông qua p và q
Xác định trực tiếp d không thông qua (n)
Phương pháp phân tích thời gian
Dựa trên việc đo thời gian giải mã
Có thể ngăn ngừa bằng cách làm nhiễu
Trang 30 An ninh của RSA dựa trên độ phức tạp của việc phân tích thừa số n
Thời gian cần thiết để phân tích thừa số một số lớn tăng theo hàm mũ với số bit của số đó
Mất nhiều năm khi số chữ số thập phân của n vượt quá 100 (giả sử làm 1 phép tính nhị phân mất 1 s)
Kích thước khóa lớn đảm bảo an ninh cho RSA
Từ 1024 bit trở lên
Gần đây nhất năm 1999 đã phá mã được 512 bit (155 chữ số thập phân)
Trang 3131