III. Mật mã khoá công khai (bất đối xứng)
3. Hệ mã khoá công khai RSA
RSA là tên viết tắt của ba tác giả Rivest, Sharmir, Adleman của trường MIT đã đề ra hệ mật mã công khai. Hệ mật này được đề xuất năm 1977, dựa trên cơ sở tính các luỹ thừa trong số học. Độ an toàn của hệ mật dựa trên độ khó của việc phân tích thành thừa số nguyên tố của các số nguyên lớn. Nhiều hệ mật khoá công khai sau này đã được phát triển nhưng đều thua kém hệ RSA. Các hệ balo cửa sập đã bị phá vỡ và cho đến nay, ngoài hệ RSA, chưa có một hệ nào khác cung cấp được cả độ an toàn và chữ ký số.
Để cài đặt RSA, ban đầu mỗi người dùng sinh khoá công khai và khoá bí mật của mình bằng cách:
- Chọn 2 số nguyên tố lớn ngẫu nhiên (cỡ gần 100 chữ số) khác nhau p và q
- Tính N = p * q
- Chọn một số e nhỏ hơn N và UCLN(e,Φ(n))=1, e gọi là số mũ lập mã
- Tìm phần tử ngược của e trên vành module Φ(n), d là số mũ giải mã
- Khoá công khai là KU = (e,N)
- Khoá bí mật là KR = K-1
U = (d, p, q)
Việc thiết lập khoá này được thực hiện một lần khi một người dùng thiết lập (hoặc thay thế) khoá công khai của họ. Mũ e thường là khá nhỏ (để mã hoá nhanh) và phải là số nguyên tố cùng nhau với Φ(n). Tuy nhiên khi e nhỏ thì d sẽ tương đối lớn. Khoá bí mật là (d, p, q), các số p q thường có giá trị xấp xỉ nhau nhưng không được bằng nhau. Chú ý là việc để lộ một trong các thành phần trên sẽ làm cho hệ mã hoá trở nên không an toàn.
Để mã hoá một thông điệp M, tính C = Me (mod N) Giải mã: M = Cd (mod N)