Thuật toán mã hóa RSA

Chỉnh sửa lần cuối Jun 19, 2022
Thuật toán mã hóa RSA

Một cặp khóa RSA bao gồm một Khóa riêng tư (Private Key) và một Khóa công khai (Public Key). Thuật toán RSA thường được dùng cho bài toán xác minh chữ ký số và chuyển giao khóa (Key Exchange). Public Key được sử dụng để mã hóa dữ liệu còn Private Key dùng giải mã dữ liệu đã mã hóa.

Thuật toán Khởi tạo Khóa công khai RSA dựa trên độ khó của các tính toán phân tích nhân tử. Bài toán tổng quát là tìm tất cả các số nguyên tố của một số n cho trước. Khi n đủ lớn và là tích của một vài số nguyên tố lớn, các tính toán này được xem là khó giải. Đối với RSA, n thường có ít nhất 512-bits và là tích của hai số nguyên tố lớn.

Locker sử dụng RSA-2048, có 617 chữ số thập phân (2.048 bits) và là số lớn nhất trong các số RSA. RSA-2048 có thể không phân tích được nhân tử trong rất nhiều năm tới, trừ khi có những tiến bộ đáng kể trong quá trình phân tích nhân tử số nguyên hoặc sức mạnh tính toán trong tương lai gần.

 

Cặp khóa RSA được khởi tạo qua các bước sau:

  1. Chọn 2 số nguyên tố ppqq.
    1. ppqq nên có độ lớn và độ dài tương đương để chống kiểu tấn công brute-force.

  1. Tính n=pqn = p*q
  1. Tính λ(n)λ(n), với λ(n)λ(n) là hàm Carmichael. Tuy nhiên, vì ppqq là số nguyên tố, nên
    1. λ(n)=lcm(p1,q1)λ(n)=lcm(p-1,q-1)

      với lcm()lcm() là bội chung nhỏ nhất của 2 số.

  1. Chọn một số nguyên ee sao cho
    1. {1<e<λ(n)gcd(e,λ(n))=1\begin{cases} 1<e<λ(n)\\ gcd(e,λ(n))=1\end{cases}

      với gcd()gcd() là ước chung lớn nhất của 2 số.

  1. Tìm dd sao cho
    1. de1    (modλ(n))d ≡ e^{−1}\;\;(mod λ(n))

  1. Khóa công khai sẽ là cặp (n,e)(n,e), còn khóa bí mật sẽ là dd.