Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình

Cơ chế hoạt động của thuật toán RSA

Thuật toán mã hóa Rivest-Shamir-Adleman (RSA) là thuật toán mã hóa bất đối xứng được sử dụng rộng rãi trong nhiều sản phẩm và dịch vụ. Mã hóa bất đối xứng yêu cầu một cặp khóa có liên quan toán học để mã hóa và giải mã dữ liệu.

Một cặp khóa riêng và công khai được sinh ra, khóa công khai công khai cho mọi người, khóa riêng giữ bí mật chỉ người tạo biết. Với RSA, khóa riêng hoặc công khai đều có thể mã hóa, khóa kia giải mã. Đây là lý do RSA thành thuật toán bất đối xứng phổ biến nhất.

Khả năng mã hóa bằng khóa công khai hoặc riêng hỗ trợ nhiều dịch vụ cho người dùng RSA. Nếu dùng khóa công khai mã hóa, khóa riêng giải mã. Điều này lý tưởng để gửi dữ liệu nhạy cảm qua mạng/Internet, nơi người nhận gửi khóa công khai cho người gửi. Người gửi mã hóa dữ liệu bằng khóa công khai và gửi đi. Chỉ chủ sở hữu khóa riêng mới giải mã được, nên chỉ người nhận dự định mới đọc được, ngay cả khi dữ liệu bị chặn giữa đường.

Cách tiếp cận thứ hai: mã hóa bằng khóa riêng. Người gửi mã hóa dữ liệu bằng khóa riêng của mình và gửi kèm khóa công khai. Người nhận dùng khóa công khai của người gửi để giải mã, từ đó xác thực danh tính người gửi. Với cách này, dữ liệu có thể bị đọc giữa đường, nhưng mục đích chính là xác thực người gửi. Nếu dữ liệu bị sửa đổi giữa đường, khóa công khai sẽ không giải mã được tin nhắn mới, người nhận sẽ biết dữ liệu đã bị thay đổi.

Khóa công khai và riêng được sinh từ hai số, trong đó một số là tích của hai số nguyên tố lớn. Cả hai dùng cùng hai số nguyên tố để tính giá trị. Khóa RSA thường dài 1024 hoặc 2048 bit, rất khó phân tích thừa số, tuy nhiên khóa 1024 bit được cho là sắp bị phá vỡ.

RSA được dùng cùng TLS (Transport Layer Security) để bảo mật kết nối giữa hai bên. Các sản phẩm/thuật toán nổi tiếng khác như Pretty Good Privacy (PGP) cũng sử dụng RSA hiện tại hoặc trước đây.

VPN, dịch vụ email, trình duyệt web và các kênh truyền thông khác đều dùng RSA. VPN có thể dùng TLS để thực hiện handshake giữa hai bên trao đổi dữ liệu.