Hệ mật RSA | An ninh mạng

Hệ mật mã RSA

Giải thuật RSA là một giải thuật mật mã công khai được phát triển bởi Ron Rivest, Adi Shamir và Leonard Adleman có thể được sử dụng trong công tác mã hoá và công nghệ chữ ký điện tử.

Hoạt động

Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) và khóa bí mật (hay khóa cá nhân). Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã. Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa. Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng. Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được.

Trước hết chúng ta sẽ xem xét cách làm việc của giải thuật này khi áp dụng trong mã hoá. Giả sử rằng Bob muốn nhận được các bản tin được mã hoá như trong hình sau :

Hệ mật RSA

Mô hình hệ mật mã khóa công khai

Tạo khóa

  1. Chọn 2 số nguyên tố lớn p và q với{\displaystyle p\neq q} Hệ mật RSA, lựa chọn ngẫu nhiên và độc lập.

    , lựa chọn ngẫu nhiên và độc lập.

  2. Tính: {\displaystyle n=pq\,} Hệ mật RSA
  3. Tính: giá trị hàm số Ơle{\displaystyle \phi (n)=(p-1)(q-1)\,} Hệ mật RSA
  4. Chọn một số tự nhiên{\displaystyle e} Hệ mật RSA{\displaystyle 1<e<\phi (n)\,} Hệ mật RSA{\displaystyle \phi (n)\,} Hệ mật RSA
  5. Tính: d Hệ mật RSA{\displaystyle de\equiv 1{\pmod {\phi (n)}}} Hệ mật RSA

Mã hóa

Giả sử Bob muốn gửi đoạn thông tin M cho Alice. Đầu tiên Bob chuyển M thành một số m < n theo một hàm có thể đảo ngược (từ m có thể xác định lại M) được thỏa thuận trước. Quá trình này được mô tả ở phần #Chuyển đổi văn bản rõ.

Lúc này Bob có m và biết n cũng như e do Alice gửi. Bob sẽ tính c là bản mã hóa của m theo công thức:

{\displaystyle c=m^{e}\mod {n}} Hệ mật RSA

Hàm trên có thể tính dễ dàng sử dụng phương pháp tính hàm mũ (theo môđun) bằng (thuật toán bình phương và nhân) Cuối cùng Bob gửi c cho Alice.

Giải mã

Alice nhận c từ Bob và biết khóa bí mật d. Alice có thể tìm được m từ c theo công thức sau:

{\displaystyle m=c^{d}\mod {n}} Hệ mật RSA

Tạo chữ ký số cho văn bản

Thuật toán RSA còn được dùng để tạo chữ ký số cho văn bản. Giả sử Alice muốn gửi cho Bob một văn bản có chữ ký của mình. Để làm việc này, Alice tạo ra một giá trị băm (hash value) của văn bản cần ký và tính giá trị mũ d mod n của nó (giống như khi Alice thực hiện giải mã). Giá trị cuối cùng chính là chữ ký điện tử của văn bản đang xét. Khi Bob nhận được văn bản cùng với chữ ký điện tử, anh ta tính giá trị mũ e mod n của chữ ký đồng thời với việc tính giá trị băm của văn bản. Nếu 2 giá trị này như nhau thì Bob biết rằng người tạo ra chữ ký biết khóa bí mật của Alice và văn bản đã không bị thay đổi sau khi ký.