Điểm:2

Khóa công khai RSA không có kiến ​​thức

lá cờ us

Giả sử Bob có $k>1$ khóa công khai RSA $(e_i, n_i)$ mà không có bất kỳ kiến ​​thức nào về các khóa riêng tư tương ứng của họ. Alice cũng có tất cả các khóa công khai, nhưng cũng có một khóa riêng cho chỉ một trong số họ, chẳng hạn, $(d_j, n_j)$. Liệu cô ấy có thể chứng minh với Bob rằng cô ấy có ít nhất một trong các khóa riêng mà không tiết lộ $j$

CHỈNH SỬA: đã thay đổi ký hiệu theo đề xuất của fgrieu

Điểm:3
lá cờ cn
jjj

Có, thậm chí có thể thực hiện được mà không cần tương tác (Bob không cần gửi gì cho Alice). Phương pháp này được gọi là "chữ ký vòng".

Giả sử cô ấy muốn ký một tin nhắn như "Tôi là Alice, đây là bằng chứng cho Bob rằng tôi biết một trong các chìa khóa". Cô băm nó để có được $m$.

Alice hiện tạo ra một giá trị ngẫu nhiên $r_i$ cho mọi khóa công khai $k_i$ và mã hóa chúng để có được $y_i$.

Lưu ý rằng tất cả chúng $y_i$ là các giá trị giả ngẫu nhiên không thể đoán trước. Duy nhất $y_i$ cô ấy có thể chọn cái thuộc về chìa khóa của mình $k_j$, cô ấy chỉ cần chọn $y_j$ và ký tên để nhận $r_j$ ($r_j$ trông giống như mọi dữ liệu ngẫu nhiên khác)

Bây giờ cô ấy có thể chọn $y_j$ để xor của tất cả $y_i$ bằng $m$.

Cô gửi tin nhắn và tất cả các $r_i$ cho Bob (nếu thứ tự không rõ ràng, hãy thêm ghi chú $r_i$ thuộc khóa nào)

Để xác minh, Bob chỉ cần mã hóa mọi $r_i$ với khóa công khai $k_i$ để có được $y_i$, xors tất cả chúng và kiểm tra xem nó có bằng không $m$.

Khi tất cả $y_i$ giống như các số ngẫu nhiên, khi bạn không biết khóa, không có cách nào để giả mạo chữ ký mà không biết khóa riêng. Ngoài ra, không có cách nào để biết $y_i$$r_i$ không được tạo ngẫu nhiên, bởi vì tất cả chúng đều trông ngẫu nhiên.

CHỈNH SỬA quan trọng: Tôi đã quên bước mã hóa đối xứng trong chữ ký vòng. Giữa các bước xor mã hóa đối xứng nên được áp dụng. Điều này vẫn cho phép allice khôi phục $y_i$ cô ấy cần, nhưng làm cho các cuộc tấn công khó khăn hơn. Để biết thêm chi tiết nhìn vào Wikipedia

jjj avatar
lá cờ cn
jjj
@fgrieu Tôi đã đổi tên von $e$ thành $y$, cảm ơn vì điều đó. Bạn chỉ có thể chọn bằng cách xor-ing tất cả $y_i$ và $m$ khác để nhận được $y_j$. Không cần thử và sai khi bạn biết khóa riêng của $k_j$. Vấn đề về độ dài có thể dễ dàng được khắc phục bằng cách giới hạn các bit thành xor với số bit tính bằng m và bỏ qua các bit khác
fgrieu avatar
lá cờ ng
Có, việc che dấu đủ các bit có thứ tự cao (chỉ một bit nếu $n_i$ có cùng kích thước bit) giúp tránh mọi thử nghiệm và sai sót. Một lần nữa, cách chọn (các) bit bậc cao của $y_j$ cần phải xem xét cẩn thận.
fgrieu avatar
lá cờ ng
Khi hàm băm là $h$-bit, tôi [được thông báo](https://crypto.stackexchange.com/a/92216/555) là có [tấn công](https://doi.org/10.1007/ 3-540-45708-9_19) của chi phí $\mathcal O(2^{h/(1+\log_2(k))})$, điều này có thể gây lo lắng cho $k$ lớn. Mặt khác, tôi thấy việc ngăn đối thủ đạt được một số lợi thế (nhỏ) khi đoán $j$ là không tầm thường, đặc biệt là khi $h$ tiến gần đến độ rộng của $n_i$ nhỏ nhất.
jjj avatar
lá cờ cn
jjj
@fgrieu Ok, tôi đã kiểm tra và nhận thấy rằng tôi không nhớ chính xác thuật toán. Ý tưởng cơ bản vẫn đúng. Tôi đã thêm một ghi chú vào câu trả lời của mình. Cảm ơn vì đã kiểm tra. Tôi vẫn nghĩ chữ ký vòng thực sự tốt cho vấn đề này
fgrieu avatar
lá cờ ng
Có, chữ ký vòng hoạt động cho việc này. Nhưng một chi tiết quan trọng bị thiếu trong bài viết trên Wikipedia và câu trả lời: tên miền của $r_i$ và $y_i$ phải có cùng kích thước mặc dù $n_i$ khác nhau, để tránh rò rỉ thông tin về $j $. Vấn đề này được giải quyết trong phần [Mở rộng hoán vị cửa bẫy cho một miền chung](https://link.springer.com/content/pdf/10.1007/3-540-45682-1_32.pdf#page=6) của Giấy Rivest-Shamir-Tauman.
lá cờ us
@jjj đây chính xác là những gì tôi đang tìm kiếm. Cảm ơn mọi người!
Điểm:2
lá cờ ng

Đây là một đề xuất (ra khỏi đầu của tôi). Bức tranh lớn

  • Bob rút ngẫu nhiên $X$và gửi nó được mã hóa xác định dưới mỗi khóa công khai
  • Alice giải mã $X$ với khóa công khai mà cô ấy nắm giữ
  • Alice kiểm tra Bob đã làm như mong đợi với điều đó $X$
  • Alice tiết lộ $X$ gửi Bob

Chính xác hơn:

  • xác định một $8b$băm -bit (giả sử SHA-512) sao cho $\min(n_i)>2^{16b}$
  • Xác định chức năng tạo mặt nạ (chẳng hạn như MGF1 với hàm băm đó) để cho bytestring $X$, $\operatorname{MGF}(X,\ell)$ là một $\ell$-byte băm của $X$
  • Xác định độ dài byte $\ell_i=\left\lfloor\log_2(n_i)/8\right\rfloor$, đó là như vậy mà $2^{8\ell_i}<n_i<2^{8\ell_i+8}$ (để tránh các cuộc tấn công theo thời gian, điều mong muốn là $n_i$ có cùng kích thước bit, do đó $l_i$ công bằng)
  • Bob rút ngẫu nhiên $X\in\{0,1\}^{8b}$ (một $b$-byte chuỗi byte)
  • Cho mỗi $i$, Bob
    • tính toán $M_i=\operatorname{MGF}\bigl(X\mathbin\|H(n_i),l_i-b\bigr)$
    • tính toán $X_i=M_i\mathbin\|(X\oplus H(M_i\mathbin\|H(n_i)))$ (một $l_i$-byte chuỗi byte)
    • tính toán và đầu ra $C_i={X_i}^{e_i}\bmod n_i$
  • Alice được $C_i$, bao gồm $C_j$
  • Alice tính toán $f={C_j}^{d_j}\bmod n_j$
  • Alice bày tỏ $f$ dưới dạng chuỗi byte $M\mathbin\|G$ với $M$ của $l_i-b$ byte và $G$ của $b$ byte.
  • Alice hồi phục $X$ bằng máy tính $X=G\oplus H(M\mathbin\|J)$
  • Cho mỗi $i$, Alice
    • tính toán $M_i=\operatorname{MGF}\bigl(X\mathbin\|H(n_i),l_i-b\bigr)$, ở đâu $I$ là chỉ mục $i$ như một chuỗi byte.
    • tính toán $X_i=M_i\mathbin\|(X\oplus H(M_i\mathbin\|H(n_i)))$ (một $l_i$-byte chuỗi byte)
    • Séc ${X_i}^{e_i}\bmod n_i=C_i$ (khi nào $i=j$, cái này kiểm tra $M=\operatorname{MGF}\bigl(X\mathbin\|H(n_j),l_j-b\bigr)$ như một tác dụng phụ)
  • Chỉ khi tất cả các kiểm tra được thông qua và không tiết lộ (ví dụ: theo thời gian) nơi xảy ra lỗi nếu có hoặc lỗi nào $X_i$ đã được sử dụng để phục hồi $X$
    • Alice tiết lộ $X$
  • Bob kiểm tra Alice tiết lộ đúng $X$

lý do:

  • Alice chứng minh rằng cô ấy có thể giải mã một trong những mật mã $C_i$, do đó cô ấy giữ một khóa riêng
  • Cô ấy không tiết lộ cái nào, vì cô ấy đã xác minh tất cả các mật mã đều giống nhau $X$. Không có nguy cơ sai lệch trong các bit bậc cao ở một số lượng trong $[0,n_j)$ có thể mang lại lợi thế trong việc đoán $j$ (như có thể là trường hợp trong một triển khai ngây thơ của câu trả lời khác).
  • đại diện $X_i$ của $X$ được lan truyền trên $[0,n_i)$ như trong RSASSA-OAEP, với các chức năng đệm độc lập. Lưu ý rằng việc mã hóa trực tiếp $X_i=X$, hoặc $X_i=F(X)$ cho một số tiêm cố định $F$, sẽ khiến hệ thống dễ bị tấn công Cuộc tấn công phát sóng của HÃ¥stad; hơn nữa, không thể xác định chiều rộng chung an toàn cho $X_i$, ví dụ. nếu $n_0$ là 2048-bit, $n_1$ 8192-bit, $e_1=3$; phần đệm giải quyết điều đó.
  • Từ $X$ là một thử thách do Bob đưa ra, giao thức này không bị lặp lại: Alice không thể thoát khỏi dữ liệu mà cô ấy đã tính toán trước trước khi mất quyền truy cập vào khóa riêng tư của mình hoặc dữ liệu được tính toán trước đó bởi Amanda, người cũng nắm giữ khóa riêng tư.

Những cải tiến có thể có để bảo vệ Alice khỏi trở thành một nhà tiên tri giải mã, Bob khỏi việc điều chỉnh nó $X$, và có lẽ làm cho một bằng chứng dễ dàng hơn:

  • Alice lần đầu tiên vẽ $b$-byte $Y$ và gửi cam kết $H(Y\mathbin\|S_0)$
  • Bob vẽ nó $b$-byte $X$ và gửi cam kết $H(X\mathbin\|S_1)$
  • Alice tiết lộ $Y$, Bob kiểm tra lại $H(Y\mathbin\|0)$
  • giao thức trên được sửa đổi
    • nó được sử dụng $M_i=\operatorname{MGF}\bigl(X\mathbin\|Y\mathbin\|H(n_i),l_i-b\bigr)$
    • nó được sử dụng $X_i=M_i\mathbin\|(X\oplus H(M_i\mathbin\|Y\mathbin\|H(n_i)))$
    • Alice kiểm tra thêm $H(X\mathbin\|1)$ diêm
    • Alice tiết lộ $H(X\mathbin\|S_2)$ còn hơn là $X$
    • Bob kiểm tra điều đó. (ở đâu $S_i$ là các chuỗi phụ ngắn không trống tùy ý riêng biệt)

Cập nhật: Một phương pháp khác, được nêu trong câu trả lời khác này, là sử dụng một Chữ ký vòng dựa trên RSAvà yêu cầu Alice chứng minh cho Bob thấy khả năng ký vào một thông báo thách thức của cô ấy.

jjj avatar
lá cờ cn
jjj
Không cần Bob vẽ bất cứ thứ gì. Alice có thể làm được. Để ngăn Alice chọn thay vì vẽ, người ta chỉ có thể sử dụng hàm băm của tin nhắn mà cô ấy xuất bản.
fgrieu avatar
lá cờ ng
@jjj: đề xuất của bạn làm cho giao thức dễ bị phát lại. Xem gạch đầu dòng thứ tư mới trong lý do.
jjj avatar
lá cờ cn
jjj
Không nhất thiết, nó phụ thuộc vào tin nhắn được băm. Người ta chỉ có thể bao gồm một nonce.

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