Chương 4
Mã hóa công khai RSA
Nội dung
Mô hình mã hóa công khai
Mã hóa công khai RSA
Bảo mật, chứng thực, không thể từ chối trong
RSA
Phương pháp trao đổi khóa
Đặt vấn đề
Mã hóa đối xứng dù phát triển từ cổ điển đến
hiện đại, vẫn tồn tại 2 điểm yếu sau:
◦ Vấn đề trao đổi khóa giữa người gởi và người nhận:
cần có một kênh an toàn để trao đổi khóa bí mật.
◦ Tính bí mật của khóa: không có cơ sở để quy trách
nhiệm nếu khóa bị tiết lộ.
Năm 1976 Whitfield Diffie và Martin Hellman đưa
ra giải pháp giải quyết vấn đề trên: mã hóa công
khai
Ý tưởng
Khóa mỗi người dùng được chia ra làm hai phần:
◦
Khoa chung: để mã hóa công khai với mọi người
◦
Khóa bí mật: để giải mã thì được giữ bí mật chỉ được
biết bởi chủ nhân của nó.
Nếu khóa bí mật ở người nhận thì bộ sinh khóa
nằm ở người nhận.
Các giai đoạn mã hóa công khai
Định nghĩa hệ mã công khai
PP mã hóa RSA
Là PP mã hóa công khai được xây dựng bởi Ron
Rivest, Adi Shamir và Len Adleman tại viện MIT
năm 1977.
Là PP mã hóa theo khối, bản rõ M và bản mã C là
các số nguyên từ 0 đến 2i với I là số bit của khối
(i thường là 1024).
Sử dụng hàm một chiều: phân tích một số
thành thừa số nguyên tố
Nguyên tắc thực hiện RSA
Ví dụ RSA
Ví dụ mã RSA (tt)
Độ phức tạp tính toán trong
RSA
Phép mã hóa/giải mã: dùng phép lũy thừa
modular. Để an toàn, chọn N, e, M lớn.
Dùng phép “bình phương liên tiếp” tránh việc tính
lũy thừa lớn, nâng cao tốc độ tính toán.
Phép tính sinh khóa: chọn p và q đủ lớn để việc
thử là không khả thi
Ví dụ sinh khóa trong RSA
Độ an toàn của RSA
1. Vét cạn khóa: thử tất cả các khóa d có thể để
tìm bản rõ có nghĩa, N lớnbất khả thi.
2. Phân tích N thành thừa số nguyên tố p.q : việc
phân tích này là bất khả thi vì đây là hàm một
chiều, là nguyên tắc hoạt động của RSA.
3. Đo thời gian: đây là PP phá mã không dựa vào
toán học mà dựa vào “hiệu ứng lề” sinh ra bởi
quá trình giải mã RSA
Tính bảo mật, chứng thực,
không từ chối trong mã hóa
Giả sử Alice và Bob dùng mã hóa công khai để gởi
công khai
dữ liệu cho nhau, khóa (KRA , KUA), (KRB, KUB)
Gởi dữ liệu cho Bob: C=E(M, KUB)
Bob giải mã: M= D(C, KRB)
Để đảm bảo tính chứng thực, Alice không từ chối
tránh nhiệm gởi dữ liệu, Alice dùng khóa riêng để
mã hóa
C=E(M, KRA)
M=D(C, KUA)
Nếu bản giải mã có nghĩa, tức Alice là người gởi dữ
liệu. Nếu Trudy can thiệp chỉnh sửa thì bản giải mã
không có nghĩa, nếu Trudy có khóa KRA thì Alice
không thể thoái tránh nhiệm làm lộ khóa.
Tuy nhiên mô hình CT không bảo mật. Để giải
quyết, người ta đưa ra mô hình:
Trao đổi khóa công khai
Khi hai người dùng muốn truyền dữ liệu cho nhau
bằng mã hóa công khai, trước tiên họ phải trao
đổi khóa với nhau.
Khóa có thể truyền công khai trên đường truyền
thường.
Vấn đề: tính chứng thực của khóa KU mô
hình chứng chỉ khóa công khai –CA (certificate
Authority )
Trao đổi khóa công khai dùng
CA
Dùng khóa công khai trao đổi
khóa bí mật
Do đặc điểm toán học của mã hóa công khai
chậm hơn so với mã hóa đối xứng nên trong thực
tế, để đảm bảo bí mật, người ta dùng mã hóa đối
xứng, mã hóa công khai được dùng để thiết lập
khóa bí mật cho mỗi phiên trao đổi dữ liệu.
Dùng khóa công khai trao đổi
khóa bí mật (tt)
A trao đổi khóa phiên Ks mã hóa bằng khóa riêng,
sau đó mã hóa bằng khóa công khai của B
Kết thức phiên trao đỗi DL, Ks được hủy để đảm
bảo tính bí mật.
Phương pháp trao đổi khóa
Diffie – Hellman
Dùng để thiết lập khóa bí mật giữa người gởi và
người nhận mà không cần đến giải pháp mã hóa
công khai hay chuyển chìa trên kênh truyền an
toàn.
Giải pháp của DiffieHellman
Alice
Bob
1. Chọn số ngto p và số g nhỏ hơn p và là primitive root
của p. hai số p và g không cần giữ bí mật.
2. Chọn và giữ bí mật số a
Chọn và giữ bí mật số b
3. Tính A= ga mod p
Tính B = gb mod p
4. Alice và Bob trao đổi A và B với nhau
5. Tính (gb)a mod p = gab
mod p
Tính (ga)b mod p = gab mod
p
Giá trị này được dùng làm khóa cho mã hóa đối xứng
Nhận xét
thuật toán DiffieHellman lại thất bại đối với cách
tấn công kẻđứnggiữa.
Để an toàn, quá trình thiết lập khóa DiffieHellman
vẫn phải được mã hóa bằng một khóa công khai.
Nếu đã được bảo vệ bằng khóa công khai, thì
Bảo vệ khóa DiffieHellman
bằng khóa công khai