Điểm:2

Làm cách nào để lấy được số mũ công khai từ khóa riêng RSA?

lá cờ es

Tôi sẽ viết ra các công thức mà tôi biết và sử dụng để tạo khóa RSA.

  1. Chúng tôi chọn $p$, $q$
  2. $N = p\cdot q$
  3. $\varphi(n) = (p-1)\cdot(q-1)$
  4. chọn $e$ Như là
    • $1 < e < \varphi(N)$
    • $e$ là nguyên tố cùng với $N$, $\varphi(n)$
  5. chọn $d$ để có thể $d\cdot e\bmod\varphi(n)=1$

Đó là nó. Với những điều này, nếu chúng ta có $p=2$$q=7$, tôi nhận thành công $d=11$$e=5$ đó là chính xác.

Bây giờ hãy tưởng tượng rằng tôi chỉ có khóa riêng $(11,14)$ (đó là $d=11$, $N=14$). Làm sao tôi có thể lấy $e=5$. Tôi hiểu điều đó với $d$$N$, bạn không thể trực tiếp lấy $e$, nhưng khi RSA hoạt động, nó thử các biến thể khác nhau của $e$ , sau đó kiểm tra và nếu nó hợp lệ, đó là cách bạn lấy khóa chung từ khóa riêng.

Bất cứ ai có thể giải thích cho tôi những bước tôi nên thực hiện ở đây để tìm ra những gì $e$ có thể là và sau đó từ những cái đó $e$ tôi có nên chọn không?

fgrieu avatar
lá cờ ng
Lưu ý: Bạn đã quên $p\ne q$, điều này cần thiết nếu bạn xác định $\varphi(n) = (p-1)\cdot(q-1)$ hoặc muốn mã hóa/giải mã luôn hoạt động. Yêu cầu $e$ là nguyên tố cùng nhau với $N$ là bất thường. Yêu cầu $1
Maarten Bodewes avatar
lá cờ in
Nếu bạn có chữ ký, bạn có thể kiểm tra dự đoán của mình bằng cách xác minh nó. Tuy nhiên, điều đó sẽ không hoạt động đối với bản mã, ít nhất là không nếu bạn sử dụng sơ đồ đệm ngẫu nhiên. Với RSA trong sách giáo khoa vẫn có thể hoạt động. Tôi không chắc liệu bạn có thể tính được $e$ hay không nếu bạn không có gì để xác minh và *nếu $e$ được chọn ngẫu nhiên*. Có thể làm điều gì đó nếu nó được chọn một cách xác định [câu trả lời này](https://crypto.stackexchange.com/q/25907/1172): đoán $e$, tính toán $p$ và $q$, kiểm tra nếu nó phù hợp với thuật toán xác định.
Nika Kurashvili avatar
lá cờ es
Tôi sử dụng công thức nào để ít nhất tôi có thể bắt đầu viết `e` nếu tôi có `d` và `N` ? Trong các công thức trên của tôi, tôi vẫn không hiểu cách tôi viết một chương trình đoán `e`..
TonyK avatar
lá cờ us
Trong thực tế, khóa riêng bao gồm (ít nhất) $p,q,$ và $e$. $d$ và $N$ có thể dễ dàng được tính toán từ các giá trị này và thường được lưu trữ cùng với $p,q,$ và $e$; nhưng chúng không cần thiết. Nếu tất cả những gì bạn có là $d$ và $N$, thì bạn không thể tính $e$ mà không phân tích $N$.
Điểm:4
lá cờ ng

Người ta hỏi làm thế nào, trong RSA, người ta tìm thấy $e$ được cho $d$$N$. Tôi sẽ bỏ qua yêu cầu của câu hỏi rằng $e$ là nguyên tố cùng với $N$, điều này rất bất thường và không có liên quan đến toán học. Tôi cũng sẽ giả sử $p\ne q$, bởi vì nó là cần thiết cho đã nêu $\varphi(N)=(p-1)\cdot(q-1)$ để giữ.

Với định nghĩa của câu hỏi về RSA, phương pháp tìm $e$ đi

  • Hệ số $N$ để tìm $p$$q$
  • tính toán $\varphi=(p-1)\cdot(q-1)$
  • tính toán $e$ biết $e\cdot d\bmod\varphi=1$$1<e<\varphi$. Điều đó $e$ được xác định duy nhất và nghịch đảo mô-đun của $d$ bên trong nhóm nhân của modulo số nguyên $\varphi$. Đối với các số nhỏ, một phương pháp làm việc là thử và sai số lẻ nhỏ $e>1$. Một phương pháp mang tính xây dựng hơn là (một nửa)-thuật toán Euclide mở rộng, tính toán $e=d^{-1}\bmod \varphi$ trực tiếp. Đối với một thuật toán thực tế chỉ sử dụng các số nguyên không âm:
    1. $a\được d\bmod \varphi$ , $b\được \varphi$ , $x\gets0$$y\gets1$
      Ghi chú: $a\cdot x+b\cdot y=\varphi$ sẽ tiếp tục giữ
    2. nếu $a=1$, sau đó xuất "nghịch đảo mong muốn $e$ của $d$ modulo $\varphi$$y$" và dừng lại
    3. Nếu $a=0$, sau đó xuất "nghịch đảo mong muốn $e$ của $d$ modulo $\varphi$ không tồn tại" và dừng lại
    4. $r\gets\lfloor b/a\rfloor$
    5. $b\được b-a\cdot r$$x\được x+r\cdot y$
    6. nếu $b=1$, sau đó xuất "nghịch đảo mong muốn $e$ của $d$ modulo $\varphi$$\varphi-x$" và dừng lại
    7. Nếu $b=0$, sau đó xuất "nghịch đảo mong muốn $e$ của $d$ modulo $\varphi$ không tồn tại" và dừng lại
    8. $r\gets\lfloor a/b\rfloor$
    9. $a\được a-b\cdot r$$y\được y+r\cdot x$
    10. Tiếp tục lúc 2

Phương pháp tương tự này thường được sử dụng để tính toán $d$ từ $e$, từ $d$$e$ đối xứng trong $e\cdot d\bmod\varphi=1$. Tuy nhiên đó không phải là cách $d=11$ đã được tính toán trong câu hỏi; vì một số lý do kỳ lạ, câu hỏi yêu cầu $e<\varphi(N)$ nhưng không $d<\varphi(N)$, hoặc bình thường hơn $d<N$ hoặc $d<\operatorname{lcm}(p-1,q-1)$.


Vấn đề nghiêm trọng với phương pháp này đối với RSA như đã được thực hiện (do đó rất lớn $N$, ít nhất là hàng trăm chữ số thập phân): Nó sẽ không hoạt động, bởi vì $N$ sẽ lớn đến mức không thể tính được, do đó $\varphi$ không thể được tính toán theo cách này.

Ngoài ra, điều kiện của câu hỏi $e\cdot d\bmod\varphi(N)=1$ là điều kiện đủ, nhưng không phải là điều kiện cần để mã hóa RSA trong sách giáo khoa bằng cách sử dụng $(e,N)$ được hoàn tác bằng cách giải mã RSA bằng cách sử dụng $(d,N)$, và ngược lại. Điều kiện cần là $e\cdot d\bmod\lambda(N)=1$, ở đâu $\lambda(N)=\operatorname{lcm}(p-1,q-1)$. Điều kiện đó thường được sử dụng trong thực tế: nó được cho phép bởi PKCS#1, và được ủy quyền bởi FIPS 186-4. Ví dụ nhỏ nhân tạo: $N=341$, $e=7$, $d=13$ vẫn hoạt động tốt đối với mã hóa/giải mã RSA trong sách giáo khoa $e\cdot d\bmod\varphi(N)=1$ không giữ (trong ví dụ này $p=11$, $q=31$, $\varphi(N)=300$, $\lambda(N)=30$ ).

Tuy nhiên, trong RSA như thực tế, $e$ là nhỏ, thường đủ nhỏ để $e$ có thể được tìm thấy bằng cách liệt kê. Do đó, một phương pháp có thể là:

  • tính toán $c\gets2^d\bmod N$
  • tính toán $c_2\được c^2\bmod N$
  • bộ $e\gets1$
  • nói lại
    • bộ $e\được e+2$
    • bộ $c\được c\cdot c_2\bmod N$; lưu ý $c=2^{d\cdot e}\bmod N$
    • nếu $c=2$
      • $m$ hàng trăm số nguyên tố lẻ đầu tiên (lưu ý: đối với số nguyên tố nhỏ $N$, chúng tôi muốn dừng lại ngay khi $m^2>N$ )
        • nếu $m^{e\cdot d}\bmod N\ne m$, tiếp tục tại nói lại ở trên
      • đầu ra $e$ và dừng lại.

Gần như chắc chắn rằng nếu một $e$ là đầu ra, nó hợp lệ theo nghĩa mã hóa RSA trong sách giáo khoa bằng cách sử dụng $(e,N)$ được hoàn tác bằng cách giải mã RSA bằng cách sử dụng $(d,N)$, và (tương đương) $e\cdot d\bmod\lambda(N)=1$. Nó không hoàn toàn chắc chắn $e\cdot d\bmod\varphi(N)=1$, nhưng biết $e\cdot d$$N$ nó có thể yếu tố $N$ (dùng cái này thuật toán), rồi tính toán các $e$ với $e\cdot d\bmod\varphi(N)=1$$1<e<\varphi(N)$, nếu vì lý do nào đó được mong muốn.


Ngoài ra: Ở trên là xa tối ưu. Khi nào $\delta=\ln(e)/\ln(N)$ dưới một ngưỡng nhất định, theo thứ tự $0.292$, có nhiều cách để phân tích $N$ (và do đó giải quyết vấn đề bằng phương pháp đầu tiên được thảo luận). Về cơ bản, chúng tôi trao đổi $d$$e$ trong Dan Boneh và Glenn Durfee's Phân tích mật mã RSA bằng khóa riêng $d$ Ít hơn $N^{0,292}$, Trong thủ tục tố tụng của Eurocrypt 1999. Nhìn thấy ở đó để biết thêm.

Hagen von Eitzen avatar
lá cờ rw
Tất nhiên, $p-1$ và $q-1$ nên *không* có bất kỳ yếu tố *lớn* chung nào, nếu không, phương pháp tạo số nguyên tố của bạn rất tệ và khiến các cuộc tấn công trở nên khả thi ngoài ý muốn (trên thực tế, một mối quan hệ đơn giản hơn rất nhiều giữa $p,q$ phải tránh)). Vì vậy, tốt nhất là $\lambda(p-1,q-1)$ giống như $\frac12\phi(N)$. - Hơn nữa, trong thực tế, người ta thường chọn một $e$ đẹp (công khai) chẳng hạn như một số nguyên tố nhỏ nhưng không quá nhỏ gần lũy thừa $2$; điều này làm cho việc tính toán mã hóa nhanh hơn đồng thời không có vấn đề gì lớn khi tránh các số nguyên tố $\equiv 1\pmod e$ trong chính quá trình tạo chúng

Đă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.