a) Tạo khóa:
• Tạo hai số nguyên tố phân biệt p và q lớn, sao cho bài toán phân tích thật sự là khó giải (kích cỡ mỗi số khoảng 512 bits → 1024 bits).
• Tính N = p* q và φ(N) = (p - 1) * (q - 1).
• Chọn số nguyên ngẫu nhiên e sao cho 1 < e < φ(N) và gcd(e, φ(N)) = 1 • Sử dụng thuật toán Euclid mở rộng, để tính số nguyên d duy nhất, sao cho 0 < d < φ(N) và e * d ≡ 1 mod φ(N) (d là nghịch đảo của e modulo N)
• Hai số (e, N) làm khóa công khai, còn (d, N) làm khóa riêng. • Các số nguyên tố p, q sẽ bị xóa khi kết thúc quá trình tạo khóa.
b) Mã hóa:
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
• Lấy khóa công khai của ngƣời nhận B: (e, N).
• Biến đổi thông điệp M thành những số nguyên Mi tƣơng ứng sao cho Mi< N, (i = 1,…, k). Theo phép biến đổi sau:
- Biến đổi các ký tự trong thông điệp M thành các số nguyên tƣơng ứng, thí dụ theo qui tắc: Dấu cách ↔ 00, A ↔ 01, B ↔ 02,..., Z ↔ 26.
- Chia thông điệp vừa biến đổi thành k nhóm có chiều dài bằng nhau, mỗi nhóm biểu diễn một số nguyên Mi ∈{0,…, N - 1} (với 1 ≤ i ≤ k).
• Thực hiện mã hóa lần lƣợt cho từng số Mi → Ci bằng cách: Ci = Eke(Mi) = Mie (mod N).
Tập các số nguyên {C1, C2,...,Ck} là bản mã để gửi đến ngƣời nhận B.
c) Giải mã:
Ngƣời nhận B thực hiện các bƣớc sau:
• Thực hiện giải mã lần lƣợt từng số nguyên Ci → Mi bằng cách: Mi = D(Ci) = Ci
d
(mod N) với 0 ≤ Mi < N, (d là khoá bí mật của B). • Thực hiện phép biến đổi ngƣợc lại từ các số Mi thành các chuỗi ký tự tƣơng ứng để khôi phục lại nội dung thông điệp M ban đầu.
Các bƣớc tạo khóa, mã hóa, giải mã có thể tóm tắt nhƣ sau
Tạo khoá: Tạo 2 số nguyên tố lớn p và q * Tính N = p * q và Tính φ(N) = (p-1) * (q-1). * Chọn 1< e < φ(N): gcd(φ(N), e) = 1.
* Tính d = e-1 mod φ(N) (dùng thuật toán Euclid mở rộng). Khóa công khai: (e, N) Khóa riêng: (d, N)
Mã hóa: Khối bản rõ M < N * Tính: C = Me mod N
* Gửi khối bản mã (số nguyên) C đến ngƣời nhận
Giải mã: Khối bản mã C < N * Tính: M = Cd mod N
* Khôi phục lại khối bản rõ (số nguyên) M ban đầu
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/