Câu hỏi đúng là bất kỳ khóa riêng nào nhỏ hơn 250 có thể được tìm thấy từ khóa chung và phương pháp mà nó mô tả sẽ khả thi. Tuy nhiên
- Có nhiều phương pháp tốt hơn, có thể tìm thấy khóa ít hơn k2 với nỗ lực tỷ lệ thuận với k (ví dụ. Pollard'd rho) và ít bộ nhớ, với xác suất khá lớn. Như vậy 250 hoạt động là đủ để tìm một khóa nhỏ hơn 2100 với xác suất khá lớn.
- 250 là một con số nhỏ đối với một số hoạt động để phá vỡ tiền điện tử. Vào những năm 1970, NSA đồng ý rằng DES có 256 phím, bởi vì họ biết rằng họ có thể phá vỡ điều đó nếu cần thiết. Đến năm 2000, mức cơ sở cho an ninh là 280. Đường cơ sở hiện đại có thể là 296, và thực hành cho các hệ thống mới theo thứ tự 2128 hoặc hơn. Đó là trước khi bình phương để giải thích cho các cuộc tấn công ở trên.
có giới hạn trên không?
Đúng. Đối với mọi phương pháp và đường cong chữ ký dựa trên Đường cong Elliptic, có một bộ quy định cho các khóa riêng. Vì ECDSA, đó là khoảng [1, N-1] ở đâu N là thứ tự của trình tạo (không phải là N
trong câu hỏi). Giá trị của N phụ thuộc vào đường cong. cho đường cong secp256k1, N thấp hơn 2 một chút256. Do đó, nỗ lực dự kiến để tìm khóa riêng bằng khóa chung bằng Pollard's rho (hoặc bất kỳ phương pháp đã biết nào khác) là theo thứ tự 2128 hoạt động (bổ sung trên Elliptic Curve), hoặc nhiều hơn nữa.
Nếu vượt quá giới hạn trên, khóa riêng tư sẽ bị phần mềm tuân thủ từ chối. Nếu nó không bị từ chối và phần mềm hoạt động chính xác từ quan điểm toán học và đối với các hệ thống chữ ký trong đó khóa riêng trực tiếp là thứ nhân trình tạo để tạo thành khóa chung (như trong câu hỏi và ECDSA), khóa sẽ hoạt động như nếu nó được giảm modulo N (thứ tự của trình tạo), cả để tạo khóa chung và ký.
Quy tắc tạo khóa riêng phụ thuộc vào hệ thống chữ ký; ví dụ. Ed25519 chỉ định một khoảng trống cho khóa riêng lớn hơn nhiều so với N, để cải thiện khả năng chống lại một số cuộc tấn công (nhưng không tìm thấy khóa riêng tạo chữ ký hợp lệ).
Loại bỏ các khóa có thể theo cách mà đối thủ đã biết giảm bảo mật, bởi vì đối thủ có ít khóa hơn để kiểm tra. Của nó chịu được để loại bỏ một vài phím có thể. Nó không phải là mong muốn trong bất kỳ cách nào.
Cách thông thường/được đề xuất/tốt nhất để chọn khóa riêng là ngẫu nhiên đều trong tập hợp các giá trị khóa riêng hợp lệ. Có thể chấp nhận loại trừ một số giá trị (chẳng hạn như giá trị nhỏ như trong câu hỏi), nhưng điều đó chỉ miễn là chỉ một phần nhỏ giá trị bị từ chối. Ví dụ. đối với ECDSA trên secp256k1, bạn có thể từ chối các khóa riêng nhỏ hơn 2192, bởi vì điều đó chỉ loại bỏ một tỷ lệ rất nhỏ khoảng 2-64 (0,000000000000000005%) của không gian khóa. Nhưng điều đó cũng vô nghĩa, bởi vì rất khó có khả năng một trong những khóa bị loại trừ được tạo ra. Và việc tăng giới hạn dưới để tỷ lệ này trở nên không đáng kể sẽ làm giảm đáng kể sự lựa chọn khóa của chúng ta, cho phép thuật toán tìm kiếm khóa được thiết kế đặc biệt tìm thấy nó dễ dàng hơn so với lựa chọn ngẫu nhiên thống nhất.
Khóa riêng ECDSA trên secp256k1 có thể được tạo bằng cách cuộn một xúc xắc lục giác 64 lần (nếu 23 lần ném đầu tiên đều có giá trị như nhau, hãy hỏi xúc xắc và dừng lại). Sử dụng trung thực 64 kết quả, theo thứ tự lớn-endian. Kết quả là một khóa riêng hợp lệ (thử nghiệm chúng tôi đã thực hiện đảm bảo kết quả nằm trong khoảng thời gian thích hợp).