Tôi cần tạo khóa RSA công khai và riêng tư cho ứng dụng khách/máy chủ và tôi đang sử dụng JSch library để làm như vậy. Tôi đã tạo ra các khóa 4096 bit cho đến bây giờ, vì tôi muốn có bảo mật tốt nhất có thể. Tuy nhiên, điều này mất 3 ~ 5 phút, trong khi tạo ra một khóa 2048-bit mất một cái gì đó để điều chỉnh 10 giây. Có một sscce:Tạo khóa RSA 4096 bit chậm hơn 2048 bit bằng cách sử dụng Jsch
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.KeyPair;
public class KeyGenerator {
public static void main(String[] args) {
JSch jsch = new JSch();
System.out.println("Starting...");
try {
KeyPair keyPair = KeyPair.genKeyPair(jsch, KeyPair.RSA, 4096);
}
catch (JSchException e) {
e.printStackTrace();
}
System.out.println("Done.");
}
}
có sự khác biệt lớn này trong thời gian thế hệ được mong đợi? Tôi không siêu rõ ràng về cách các khóa RSA được tạo ra (do đó sử dụng một thư viện) nhưng tôi cho rằng thời gian cần thiết có thể là theo cấp số mũ? Có vẻ như ... quá mũ.
Đây là JSch API (do chính thư viện và trang web đến từ bên cạnh không có tài liệu).
Cập nhật: Tôi đã thực hiện một số hồ sơ. Dưới đây là một biểu đồ của thời gian keygen, bắt đầu từ 512 bit và đi lên đến 4096, với 30 mẫu cho mỗi kích thước khóa.
Và đây là một biểu đồ tương tự với các thử nghiệm 4096-bit loại trừ (cùng bộ dữ liệu):
Những trông khá giống nhau, biểu thị một sự gia tăng theo cấp số nhân khá trơn tru trong thời gian. Tôi đoán tôi chỉ thiếu kiên nhẫn!
Bạn đã cân nhắc sử dụng ECC thay vì RSA chưa? Việc tạo khóa là nhanh hơn nhiều cho các phím mạnh như nhau. – Hmmmmm