III. Mật mã RSA - thực hiện
1. Kiến thức chuẩn bị
1.1. Số nguyên tố
Số nguyên tố là một khái niệm toán học quen thuộc chúng ta đã được tiếp xúc ở thời THCS. Một số tự nhiên lớn hơn được gọi là số nguyên tố nếu nó chỉ có hai ước dương duy nhất là và chính nó. Chẳng hạn, số chỉ có hai ước dương là và nên là số nguyên tố, số chỉ có hai ước dương là và nên là số nguyên tố, số là hợp số (không phải số nguyên tố) vì nó có nhiều hơn ước dương là , , .
Định lý vô hạn số nguyên tố: Từ thế kỷ III trước Công nguyên, nhà toán học Hy Lạp Ơ-Clit (Euclide) đã chỉ ra và chứng minh rằng tập hợp các số nguyên tố là vô hạn. Cách chứng minh rất đơn giản bằng cách sử dụng phương pháp phản chứng:
Giả sử có hữu hạn số nguyên tố lần lượt với giá trị tăng dần . Xét số là một hợp số (do ), do đó phải có một ước nguyên tố nào đó. Mặt khác nên chia cho có số dư là . Điều này dẫn đến chia hết cho (mâu thuẫn). Như vậy có vô hạn số nguyên tố!
1.2. Hai số nguyên tố cùng nhau
Hai số tự nhiên được gọi là nguyên tố cùng nhau nếu chúng chỉ có duy nhất một ước chung là . Ví dụ: và là hai số nguyên tố cùng nhau, và không phải là hai số nguyên tố cùng nhau vì chúng có ước chung là .
Từ khái niệm trên, chúng ta có một hệ quả: Hai số nguyên tố khác nhau bất kỳ sẽ là hai số nguyên tố cùng nhau.
1.3. Hàm số Ơ-le (Euler)
Leonhard Euler (15 tháng 4 năm 1707 – 18 tháng 9 năm 1783) là một nhà toán học, nhà vật lý học, nhà thiên văn học, nhà lý luận và kỹ sư người Thụy Sĩ.
Hàm số Euler của số nguyên dương được ký hiệu là . Với định nghĩa là số các số nguyên dương thỏa mãn đồng thời hai điều kiện:
- Nhỏ hơn hoặc bằng .
- Nguyên tố cùng nhau với .
Chẳng hạn, vì có số từ đến nguyên tố cùng nhau với là: .
Công thức tính tổng quát hàm số Euler: Với là tất cả ước nguyên tố của , ta có:
Ví dụ: , .
1.4. Đồng dư Modular
Hai số nguyên và được gọi là đồng dư với nhau theo module , nếu hiệu của chúng chia hết cho , hay nói cách khác, và có cùng số dư khi chia cho . Ký hiệu:
Ví dụ:
1.5. Định lý Fermat nhỏ
Pierre de Fermat (17 tháng 8 năm 1607 tại Pháp – 12 tháng 1 năm 1665) là một học giả nghiệp dư vĩ đại, một nhà toán học nổi tiếng và cha đẻ của lý thuyết số hiện đại.
Định lý Fermat nhỏ phát biểu rằng: Nếu là một số nguyên tố, thì với số nguyên bất kỳ, sẽ chia hết cho . Ký hiệu bằng đồng dư thức, ta có:
Ví dụ, với , có .
Hệ quả: Nếu là một số nguyên tố, thì với số nguyên bất kỳ và không chia hết cho ( và nguyên tố cùng nhau), thì:
Như ví dụ trên chúng ta còn có: .
2. Sinh khóa
Trước khi có thể mã hóa và giải mã thuật toán RSA, chúng ta cần có bước tạo khóa, quá trình này đóng vai trò quan trọng vì ảnh hưởng trực tiếp tới tính an toàn trong toàn bộ giai đoạn truyền tin sau này. Yêu cầu cần tạo được cặp khóa public key và private key.
- Bước : Chọn ra hai số nguyên tố , phân biệt và đủ lớn.
- Bước : Tính
- Bước : Tính giá trị hàm Euler
- Bước : Chọn một số tự nhiên thỏa mãn , đồng thời và nguyên tố cùng nhau.
- Bước : Tính thỏa mãn:
Sau khi hoàn thiện các bước trên, chúng ta thu được khóa công khai (public key) bao gồm số (số module) và (số mũ công khai, hay số mũ mã hóa), khóa bí mật (private key) bao gồm số (xuất hiện ở cả hai khóa), số (số mũ bí mật, hay số mũ giải mã).
3. Mã hóa
Thuật toán mã hóa RSA sẽ mã hóa thông điệp dưới dạng các phép tính toán học, tức thực hiện với các con số. Giả sử A cần truyền tải một thông điệp cho B, trước hết, A cần chuyển thông điệp dưới dạng một số nguyên , với điều kiện dạng mã hóa này có thể giải mã lại thành thông điệp ban đầu (A và B đã thảo luận trước sẽ sử dụng loại mã hóa này). Tiếp theo A sử dụng bộ puclic key thực hiện tính số :
Số được tính bằng số dư của khi chia cho , cũng chính là thông điệp đã mã hóa cần truyền tải.
Khi B nhận được , B sử dụng bộ private key thực hiện tính lại số :
Vì sao chúng ta có công thức tính lại số như trên? Bạn đọc theo dõi chứng minh như sau, ta có:
Từ công thức có:
Tiếp theo, chúng ta sẽ chứng minh: , hay ( là ước của ). Nếu là bội của thì điều này là rõ ràng. Ngược lại, nếu và nguyên tố cùng nhau, theo định lý Fermat nhỏ ta có:
Vì nên , hay , suy ra . Đặt thì:
Tương tự ta cũng có: . Do và là hai số nguyên tố cùng nhau nên , hay . Từ đây kết hợp với ta có:
Xem xét một ví dụ cụ thể: giả sử cặp số nguyên tố , số , , chọn thỏa mãn và là hai số nguyên tố cùng nhau, số thỏa mãn . Thông điệp cần mã hóa ở dạng chuỗi số nguyên m=1289
. Tính thông điệp mã hóa c
:
Khi nhận được thông điệp mã hóa, người nhận có thể tính lại:
Bài tập dành cho bạn đọc:
- Bài : Với khóa công khai và , thông điệp mã hóa , số mũ bí mật hãy tìm ra thông điệp gốc ?
- Bài : Với khóa công khai và , thông điệp mã hóa , hãy tìm ra thông điệp gốc ?
Tài liệu tham khảo
- https://en.wikipedia.org/wiki/RSA_(cryptosystem)
- https://www.amsi.org.au/teacher_modules/pdfs/Maths_delivers/Encryption5.pdf
- https://sites.math.washington.edu/~morrow/336_09/papers/Yevgeny.pdf
- https://en.wikipedia.org/wiki/Modular_arithmetic
- https://vi.wikipedia.org/wiki/Pierre_de_Fermat
- https://vi.wikipedia.org/wiki/Leonhard_Euler