Điểm:0

SSH tạo khóa cho thuật toán RSA như thế nào?

lá cờ nz

Theo như tôi hiểu, cốt lõi của thuật toán RSA là có 2 số nguyên tố (lớn) âpâ và âqâ, sao cho ân=pqâ. Sau đó, ânâ là khóa chung và âpâ là khóa riêng. Tính bảo mật xuất phát từ thực tế là không dễ dàng để có được ânâ đã cho âpâ và âqâ, trong khi việc kiểm tra xem âpâ có phân tích thành thừa số hay không là chuyện nhỏ ânâ.

Câu hỏi của tôi là, làm cách nào để SSH có được những con số này trong vòng chưa đầy một giây? Nó có âthư viện số nguyên tốâ không? Làm cách nào để đảm bảo rằng âpâ và âqâ của bạn là duy nhất đối với bạn? Có bao nhiêu âsố nguyên tố lớnâ đáp ứng các yêu cầu của thuật toán mà không có xung đột obvios?

kelalaka avatar
lá cờ in
https://github.com/openssl/openssl/blob/4cedf30e995f9789cf6bb103e248d33285a84067/crypto/bn/bn_prime.c
kelalaka avatar
lá cờ in
Đối với vụ va chạm [Proff Lindell đã đưa ra câu trả lời tiêu chuẩn tại đây](https://crypto.stackexchange.com/a/76766/18298)
Điểm:3
lá cờ mu
Dan

Giả sử bạn muốn "n" là 2048 bit (RSA 2048). Sau đó, "p" và "q" mỗi cái sẽ là 1024 bit.

Máy tính tạo ra một số 1024 bit ngẫu nhiên (gần như tức thời) và kiểm tra tính nguyên tố của nó. Có nhiều loại khác nhau của kiểm tra tính nguyên tố, hầu hết trong số họ là thống kê. Chúng rất nhanh (tôi biết điều này không được định lượng, nhưng tôi làm việc trên các bộ vi điều khiển nhúng chạy ở tốc độ 100MHz mà không có bộ đệm, vì vậy tôi không biết gì về tốc độ trên máy tính để bàn).

Vì vậy, tạo ra một loạt các số 1024 bit, cuối cùng bạn sẽ đạt được một số vượt qua nhiều lần lặp lại các bài kiểm tra tính nguyên tố. (không đi vào chi tiết ở đây về số liệu thống kê và thế nào là "đủ tốt", tất cả đều đủ dễ tìm). Làm tương tự để lấy "q" của bạn, nhân chúng lên, bạn có mô đun "n". "n" cộng với "e" của bạn (có thể là 65537) là khóa chung của bạn.

Như bạn có thể tưởng tượng, mật độ nguyên tố giảm khi các số lớn hơn; có nhiều cách để ước tính mật độ nguyên tố dựa trên kích thước của số nguyên tố mà bạn đang cố tạo. 40% các số dưới 10 là số nguyên tố, nhưng mật độ chỉ 25% đối với các số dưới 100 và thậm chí ít hơn đối với các số 1024 bit. Nếu tôi nhớ chính xác, Trung bình, bạn sẽ phải thử chu kỳ kiểm tra tạo/kiểm tra tính nguyên tố ~360 lần để tìm số 1024 bit kiểm tra là số nguyên tố. Nó không phải là hàng ngàn hay hàng triệu. Và đối với các số 512 bit, có thể dưới 100 lần thử.

Vì không gian số 2^1024 là rất lớn, rất khó có khả năng p & q của bạn khớp với p & q của bất kỳ ai khác. Trên thực tế, mỗi chuỗi 1024 bit đó có lẽ chưa từng tồn tại trên bất kỳ máy tính nào trong lịch sử trái đất.

Tôi hy vọng điều đó mang lại cho bạn đủ cảm giác về cách thức hoạt động của nó. Nó về cơ bản là đơn giản. Tôi đã bỏ qua một số chi tiết, thảo luận về các số nguyên tố mạnh, v.v. vì nó đi vào các chi tiết nằm ngoài phạm vi câu hỏi của bạn.

kelalaka avatar
lá cờ in
Đầu tiên, điều này: [GCD đình công trở lại RSA vào năm 2019 - Tính ngẫu nhiên tốt là giải pháp duy nhất?](https://crypto.stackexchange.com/q/76757/18298) và thứ hai, OP hỏi ssh, câu trả lời của bạn là chung chung , không cung cấp thông tin chi tiết trong ssh!
lá cờ mu
Dan
Điểm tốt. Nhưng liên quan đến vấn đề đầu tiên, còn rất nhiều điều để nói về việc tạo khóa và bạn có thể đi xuống hố thỏ, nhưng tôi đã cố gắng trả lời những gì tôi tin là bản chất của câu hỏi của OP. Và tôi đã xem xét rất nhiều mã keygen RSA trong nhiều ngăn xếp TLS, tất cả chúng đều rất giống nhau, tôi không có lý do gì để tin rằng việc triển khai SSH sẽ làm điều đó khác đi. Bạn có thông tin ngược lại?
kelalaka avatar
lá cờ in
ví dụ: theo thông lệ, trước tiên hãy chọn $e$ sau đó chọn số nguyên tố và nếu $\gcd(\lambda(pq),e) \neq 1$ thì các số nguyên tố mới sẽ được chọn. một số q cũ [1](https://crypto.stackexchange.com/a/27294/18298)
Pythonist avatar
lá cờ nz
Cảm ơn, đây chính xác là mức độ chi tiết mà tôi đang tìm kiếm. Tôi sẽ phải tìm kiếm các phép thử nguyên tố đó... Tôi thấy việc tìm các số nguyên tố ngẫu nhiên thật quá dễ dàng phản trực giác. Tôi đã đoán rằng cơ hội tìm thấy số nguyên tố bằng cách tạo các số ngẫu nhiên có kích thước 1024 gần như bằng không. Chỉ cần khoảng 360 lần thử đã khiến tôi suy nghĩ.Ngoài ra, tôi hoàn toàn bối rối khi bạn có thể kiểm tra tính nguyên tố với chi phí rẻ như vậy, trong khi việc tìm các thừa số của một số trong thực tế là không thể đọc được. Những thứ thực sự phản trực giác đang diễn ra ở đây!
kelalaka avatar
lá cờ in
Vì họ sử dụng OpenSSL https://github.com/openssl/openssl/blob/4cedf30e995f9789cf6bb103e248d33285a84067/crypto/bn/bn_prime.c
Swashbuckler avatar
lá cờ mc
SSH nào? OpenSSH? Bột trét? CTCPh? Paramiko? Hoặc bất kỳ của hàng chục người khác?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.