CoderTools

Công Cụ Mã Hóa/Giải Mã RSA

Mã hóa khóa công khai, giải mã khóa riêng tư với tạo khóa và ký số

Về mã hóa RSA

RSA là một thuật toán mã hóa bất đối xứng được phát minh bởi Ron Rivest, Adi Shamir và Leonard Adleman vào năm 1977. RSA là một trong những thuật toán mã hóa khóa công khai được sử dụng rộng rãi nhất, được áp dụng trong mã hóa dữ liệu, chữ ký số và trao đổi khóa.

Bảo mật RSA dựa trên độ khó của việc phân tích thừa số nguyên lớn. Nó sử dụng một cặp khóa: khóa công khai để mã hóa và khóa riêng tư để giải mã. Khóa công khai có thể được phân phối công khai, trong khi khóa riêng tư phải được giữ bí mật.

Tính năng

  • Tạo cặp khóa: Hỗ trợ kích thước khóa 1024, 2048, 4096-bit
  • Mã hóa khóa công khai: Mã hóa dữ liệu nhạy cảm bằng khóa công khai
  • Giải mã khóa riêng tư: Giải mã dữ liệu đã mã hóa bằng khóa riêng tư
  • Ký số: Ký tin nhắn bằng khóa riêng tư
  • Xác minh chữ ký: Xác minh tính xác thực của chữ ký bằng khóa công khai
  • Nhiều thuật toán băm: SHA-1, SHA-256, SHA-384, SHA-512
  • Lựa chọn chế độ padding: Hỗ trợ OAEP (khuyến nghị) và PKCS#1 v1.5 (tương thích cũ)
  • Nhiều định dạng: Đầu vào/đầu ra hỗ trợ Text, Base64, Hex và nhiều hơn nữa

Lựa chọn kích thước khóa

Chọn kích thước khóa phù hợp là rất quan trọng cho bảo mật và hiệu suất:

  • 1024-bit: 1024-bit: Không khuyến nghị cho các hệ thống mới, có thể bị bẻ khóa trong vài năm
  • 2048-bit: 2048-bit: Mức tối thiểu được khuyến nghị hiện tại, phù hợp với hầu hết các ứng dụng
  • 4096-bit: 4096-bit: Cung cấp bảo mật cao nhất, nhưng mã hóa/giải mã chậm hơn

Chế độ Padding

Công cụ này hỗ trợ hai chế độ padding RSA. Chọn dựa trên yêu cầu bảo mật và nhu cầu tương thích:

  • OAEP: Optimal Asymmetric Encryption Padding, cung cấp bảo mật ngữ nghĩa và bảo vệ chống lại các cuộc tấn công bản mã chọn lọc. Khuyến nghị cho các hệ thống mới.
  • PKCS#1 v1.5: Chế độ padding cũ với lỗ hổng tấn công Bleichenbacher đã biết. Chỉ khuyến nghị để tương thích với các hệ thống cũ.

Tùy chọn định dạng

Công cụ này hỗ trợ nhiều định dạng dữ liệu để tích hợp dễ dàng với các hệ thống khác nhau:

  • Văn bản: Đầu vào/đầu ra văn bản UTF-8 trực tiếp, phù hợp cho các chuỗi thông thường
  • Base64: Định dạng mã hóa Base64, thường được sử dụng để truyền mạng và lưu trữ dữ liệu nhị phân
  • Hex: Định dạng thập lục phân, thuận tiện cho việc xem và gỡ lỗi dữ liệu nhị phân

Trường hợp sử dụng

  • Giao tiếp an toàn: Mã hóa dữ liệu nhạy cảm trước khi truyền
  • Chữ ký số: Xác minh tính xác thực và toàn vẹn của tin nhắn
  • Trao đổi khóa: Trao đổi khóa đối xứng một cách an toàn
  • Xác thực danh tính: Xác minh danh tính người gửi
  • Cấp phép phần mềm: Tạo và xác minh giấy phép

Khuyến nghị bảo mật

  • Sử dụng kích thước khóa ít nhất 2048-bit
  • Giữ khóa riêng tư an toàn, không bao giờ truyền qua các kênh không an toàn
  • Luân chuyển cặp khóa định kỳ
  • Xem xét khóa 4096-bit cho dữ liệu cực kỳ nhạy cảm
  • Sử dụng mã hóa lai (RSA + đối xứng) cho dữ liệu lớn

Hạn chế của RSA

  • RSA chỉ có thể mã hóa độ dài dữ liệu hạn chế (phụ thuộc vào kích thước khóa và padding)
  • Mã hóa/giải mã RSA chậm hơn nhiều so với mã hóa đối xứng
  • Thường được sử dụng để mã hóa khóa đối xứng, không phải dữ liệu lớn trực tiếp

Tài liệu tham khảo