Ví dụ về thuật toán bất đối xứng: Rsa ▷➡️ Dừng sáng tạo ▷➡️

. Có các thuật toán bất đối xứng khác nhau. Một trong những nổi tiếng nhất là(do các nhà phát triển của nó). Thuật toán này được sử dụng rộng rãi trong các trình duyệt, cho các trang web an toàn và mã hóa email. Nó ở trong miền công cộng

Để mã hóa tin nhắn, chúng tôi thực hiện: c = m^e mod n

Để giải mã nó: m = c^d mod nm = văn bản thuần túy

c = tin nhắn được mã hóa

(trong) = khóa công khai

(d,n) = khóa riêng

Không = là tích của hai số nguyên tố

^ = là phép toán lũy thừa (a ^ b: lũy thừa b)

mod = là phép toán modulo (phần còn lại của phép chia số nguyên)

Tạo một cặp chìa khóa

Nó rất đơn giản, nhưng hãy cẩn thận khi lựa chọn y, d y Không. Và biết rằng tính toán của ba số này là tinh tế.

Đây là cách thực hiện:

1. Thu thập hai số nguyên tố p y (kích thước xấp xỉ bằng nhau). Tính toán n = tại sao.

2. Thu thập một số y nó không có yếu tố chung với (p-1) (q-1).

3. Tính toán d như ed mod (p-1) (q-1) = 1.

Cặp (trong) Đây là khóa công khai. (d,n) Đây là khóa riêng.

Ví dụ:

Đầu tiên, hãy tạo cặp chìa khóa của chúng tôi:

Nhặt ngẫu nhiên hai số nguyên tố: p = 29, q = 37

Tính toán n = qq = 29 * 37 = 1073

y phải được chọn ngẫu nhiên để y không có yếu tố chung với (p-1) (q-1):

(p-1) (q-1) = (29-1) (37-1) = 1008

Đón e = 71

Để chọn d như 71 * d chế độ 1008 = 1

Hãy tìm d = 1079

Bây giờ chúng tôi có chìa khóa của chúng tôi:

  • Khóa công khai là (e, n) = (71.1073) (= khóa mã hóa)
  • Khóa riêng là (d, n) = (1079.1073) (= khóa giải mã)

Hãy mã hóa tin nhắn «Xin chào”. Hãy lấy Mã ASCII của mỗi chữ cái và đặt chúng cạnh nhau:

m = 7269767679

Vì vậy, chúng ta phải cắt tin nhắn thành các khối chứa ít chữ số hơn Không. Không Nó có 4 chữ số, vì vậy hãy cắt tin nhắn của chúng tôi thành ba khối chữ số:

726 976 767 900

(hoàn thành với số không)

Sau đó, chúng tôi sẽ mã hóa từng khối:

726^71 mod 1073 = 436

976^71 mod 1073 = 822

767^71 mod 1073 = 825

900^71 mod 1073 = 552

Tin nhắn được mã hóa là 436 822 825 552. Nó có thể được giải mã bằng gras> d:

436^1079 mod 1073 = 726

822^1079 mod 1073 = 976

825^1079 mod 1073 = 767

552^1079 mod 1073 = 900

Đó là, chuỗi số. 726976767900.

Chúng tôi tìm thấy tin nhắn của chúng tôi trong văn bản đơn giản 72 69 76 76 79: «HELLO».

Trong thực tế

Trong thực tế, không dễ để lập trình:

  • Bạn cần tìm số nguyên tố lớn (điều này có thể quá dài để tính toán)
  • Bạn cần lấy số nguyên tố p y ngẫu nhiên (điều này không dễ).
  • Bạn không sử dụng các khối nhỏ như trong ví dụ trên – bạn sẽ có thể tính toán các lũy thừa và mô-đun với số lượng rất lớn.

Trên thực tế, thuật toán bất đối xứng không bao giờ được sử dụng để mã hóa tất cả dữ liệu vì phải mất quá nhiều thời gian để tính toán: dữ liệu được mã hóa bằng thuật toán đối xứng có khóa được chọn ngẫu nhiên và chính khóa này được giải mã bằng thuật toán bất đối xứng như RSA.

Phần mềm mã hóa tập tin

Nếu bạn muốn mã hóa tập tin của mình, tôi khuyên bạn nên sử dụng phần mềm tuyệt vời PGP (Quyền riêng tư khá tốt) hoặc GPG (GNU Privacy Guard).

Có các thuật toán bất đối xứng khác, bao gồm ECC (Hệ thống mật mã đường cong Elliptic, bằng đường cong elliptic). Hệ thống này dựa trên một đường cong tham số vượt qua một số điểm tọa độ nguyên nhất định. Nó chưa được phát triển tốt, nhưng nó đầy hứa hẹn.

Ngoài ra còn có Diffie – Hellman , ngày càng được ưa chuộng hơn RSA. (Diffie-Hellman nhanh chóng được cộng đồng nguồn mở chấp nhận khi RSA chưa thuộc phạm vi công cộng.)