Cho 𝒑 và 𝒒 là hai số nguyên tố lớn, ngẫu nhiên và phân biệt. Mô đun 𝒏 là tích của hai số nguyên tố này: 𝒏 = 𝒑. 𝒒. Hàm phi Euler (Euler's totient function) của n được xác định bởi:
∅(𝒏) = (𝒒 − 𝟏)(𝒑 − 𝟏)
Chọn số 𝒆 sao cho ước chung lớn nhất của 𝒆 và ∅(𝒏) bằng 1: 𝐠𝐜𝐝(𝒆, ∅(𝒏)) = 𝟏
hay 𝒆 nguyên tố cùng nhau với ∅(𝒏)
Chọn số 𝒅 sao cho: 𝒅 = 𝒆−𝟏𝒎𝒐𝒅∅(𝒏).
Cặp khóa công khai là (𝒆, 𝒏) và cặp khóa bí mật là (𝒅, 𝒏).
Sử dụng thuật toán Euclidean mở rộng. Ở đây, 𝒆 là số mũ công khai (public exponent) và 𝒅 là số mũ bí mật (private exponent). Thông thường người ta chọn số mũ công khai nhỏ, ví dụ 𝒆 = 𝟐𝟏𝟔+ 𝟏.
Mô đun 𝒏 và số mũ công khai 𝒆 được công bố. Giá trị 𝒅, các số nguyên tố 𝒑 và
𝒒 được giữ bí mật.
Mã hóa được thực hiện bằng cách tính: 𝑪 = 𝑴𝒆𝒎𝒐𝒅𝒏
M là bản rõ (Plaintext) sao cho 𝟎 ≤ 𝑴 < 𝒏. Số C là bản mã (ciphertext) tương ứng với bản rõ M, được tính bằng cách sử dụng 𝑴 = 𝑪𝒅𝒎𝒐𝒅𝒏. [1]
Tính đúng đắn của thuật toán RSA được chứng minh bằng định lý Euler như sau: Cho 𝒏 và 𝒂 là hai số nguyên dương nguyên tố cùng nhau. Khi đó:
𝒂∅(𝒏) = 𝟏(𝒎𝒐𝒅𝒏)
Do 𝒅𝒆 = 𝟏𝒎𝒐𝒅∅(𝒏) nên tồn tại một số nguyên K sao cho 𝒅𝒆 = 𝟏 + 𝑲∅(𝒏). Do đó ta có thể viết:
𝑪𝒅 = (𝑴𝒆)𝒅𝒎𝒐𝒅𝒏 = 𝑴𝒆𝒅𝒎𝒐𝒅𝒏 = 𝑴𝟏+𝑲∅(𝒏)𝒎𝒐𝒅𝒏 = 𝑴(𝑴∅(𝒏))𝑲𝒎𝒐𝒅𝒏
Vì 𝒈𝒄𝒅(𝑴, 𝒏) = 𝟏, suy ra: 𝑪𝒅 = 𝑴. 𝟏𝒎𝒐𝒅𝒏
Ngoại lệ 𝒈𝒄𝒅(𝑴, 𝒏) > 𝟏 có thể được giải quyết như sau. Theo định lý Carmichael 𝑴𝝀(𝒏) = 𝟏𝒎𝒐𝒅𝒏với 𝝀(𝒏) là hàm Carmichael có dạng đơn giản là 𝒏 = 𝒑𝒒, cụ thể:
𝝀(𝒑𝒒) = (𝒑 − 𝟏)(𝒒 − 𝟏) 𝐠𝐜𝐝(𝒑 − 𝟏, 𝒒 − 𝟏)
𝝀(𝒏) luôn là ước thật sự (proper divisor) của 𝝓(𝒏) khi 𝒏 là tích của các số nguyên tố lẻ phân biệt; trong trường hợp này, 𝝀(𝒏) nhỏ hơn 𝝓(𝒏). Giờ đây, quan hệ giữa 𝒆 và 𝒅 cho bởi 𝑴𝒆𝒅 = 𝑴𝒎𝒐𝒅𝒏 nếu 𝒆𝒅 = 𝟏𝒎𝒐𝒅𝝀(𝒏).
Do 𝒏 là tích của các số nguyên tố phân biệt nên điều trên đúng với mọi M, do đó nó giúp đối phó với ngoại lệ 𝒈𝒄𝒅(𝑴, 𝒏) > 𝟏 nêu trên trong định lý Euler. [1]
Hình 3.1: Sơ đồ mã và giải mã RSA
Nhận xét:
- Kiểu mã trên là mã không đối xứng, khóa công khai khác khóa bí mật, khóa công khai có thể gửi qua mạng.
- Cho dù biết khóa công khai cũng khó dò nhanh ra khóa bí mật d vì liên quan đến việc dò tìm số nguyên tố là ước của n, nếu n là 1 số lớn.
- Mã hóa bảo mật lại thay đổi liên tục (qua việc chọn cặp số nguyên tố khác và lại gửi khóa công cộng khác) qua từng cuộc gọi hay sau khoảng thời gian nhất định nên việc giải mã không theo kịp.