Điểm:1

Sử dụng ElGamal thay vì RSA trong FDH

lá cờ bd

Trong RSA-FDH để ký một tin nhắn $m$, chúng tôi áp dụng hàm băm $H$ và sau đó "giải mã" nó bằng khóa riêng $d$, Vì thế $Sign(m) = H(m)^d \mod N =: \sigma$ và sau đó để xác minh, chúng tôi sử dụng khóa chung, kết quả là $H(m) = \sigma^e \mod N$ nếu mọi việc suôn sẻ.

Tại sao chúng ta phải sử dụng RSA cho việc này thay vì thứ khác, chẳng hạn như ElGamal? Có phải vì bản mã trong ElGamal dài gấp đôi bản rõ hay có thể có một số hành vi giả mạo của đối thủ mà không thể thực hiện được khi sử dụng RSA-FDH?

kelalaka avatar
lá cờ in
Bạn không nên sử dụng giải mã từ để ký và mã hóa để xác minh. Chúng là những khái niệm hoàn toàn khác nhau chỉ có một chút kết nối trên RSA!.
Điểm:4
lá cờ vu

Điều này đã được nhắc lại nhiều lần trước đây trong cộng đồng này.

Chữ ký số là KHÔNG PHẢI mã hóa bằng khóa riêng. RSA là phép loại trừ duy nhất mà chúng tôi biết trong đó cả hoạt động công khai và riêng tư đều là lũy thừa modulo một mô đun công khai.

Khóa chung và khóa riêng trong ElGamal phục vụ các vai trò khác nhau: khóa riêng là số mũ trong khi khóa chung là lũy thừa (và mô đun là tham số chung và chia sẻ).

fgrieu avatar
lá cờ ng
Chính xác hơn: Để thử những gì đã thử, chúng tôi phải xác định $H$ với đầu ra trên tập hợp tất cả các bản mã ElGamal. Điều này là khả thi. Nhưng vì mã hóa ElGamal được mã hóa ngẫu nhiên, không có lý do gì mã hóa chữ ký sẽ mang lại hàm băm.Do đó, hệ thống chữ ký được coi là không hợp lý. Lưu ý: đoạn cuối của câu trả lời hiện tại sẽ áp dụng nếu chúng tôi cố mã hóa bằng khóa riêng, nhưng câu hỏi thì không: đề xuất là _«⦠sau đó "giải mã" (hàm băm) bằng khóa riêng » _, trong ElGamal là có thể, để băm thích hợp.
Điểm:3
lá cờ ng

Để thử những gì đã cố gắng, chúng ta phải xác định $H$ với đầu ra trên tập hợp tất cả các bản mã ElGamal. Điều này là có thể, và tôi giả định điều này trong đoạn tiếp theo.

Trái ngược với RSA trong sách giáo khoa, mã hóa ElGamal không phải là một chức năng: mã hóa lặp đi lặp lại một bản rõ nhất định tạo ra (với xác suất áp đảo) các bản mã khác nhau. Do đó, khi chúng tôi cố gắng xác minh chữ ký như trong câu hỏi, không có lý do gì mã hóa chữ ký sẽ mang lại hàm băm ban đầu và (với xác suất áp đảo) việc xác minh chữ ký sẽ không thành công. Hệ thống chữ ký được xem xét trong câu hỏi không hợp lý.


Để đơn giản, hãy xem xét ElGamal trong nhóm nhân modulo $p$, lưu ý $\mathbb Z_p^*$, với $p$$(p-1)/2$ số nguyên tố và $G$ như vậy mà $G^{(p-1)/2}\bmod p\,=\,p-1$:

  • Khóa riêng là bí mật ngẫu nhiên $x\in[0,p-1)$, khóa công khai là $X:=G^x\bmod p\in[1,p)$.
  • Mã hóa bản rõ tùy ý $M\in[1,p)$ đi
    • tạo bí mật ngẫu nhiên phù du $y\in[0,p-1)$
    • tính toán $Y:=G^y\bmod n$
    • tính toán $Z:=M\cdot X^y\bmod n$
    • đầu ra bản mã $(Y,Z)$
  • Giải mã bản mã tùy ý $(Y,Z)\in[1,p)\times[1,p)$ đầu ra $M':=Y^{n-1-x}\cdot Z\bmod n$.

$M'=M$ bất kể $y$. Gợi ý bằng chứng: Định lý nhỏ Fermat.

Trái ngược với RSA trong sách giáo khoa, biến thể này của ElGamal gần giống như IND-CPA, nhưng không hoàn toàn. Gợi ý chứng minh: xét quan hệ giữa biểu tượng huyền thoại của $\left(\frac M p\right)$, $\left(\frac X p\right)$, $\left(\frac Y p\right)$. Chúng tôi bỏ qua vấn đề tương đối nhỏ này sau đây.

Một trong những nỗ lực đơn giản nhất để khắc phục sự cố được nêu trong đoạn thứ hai của câu trả lời này là khắc phục $y=1$, do đó $Y=G$. Lược đồ chữ ký của câu hỏi sau đó có thể sử dụng hàm băm $H$ với đầu ra $H(m)$ trong miền đầy đủ $[1,p)$ Như là $$H(m):=\big(\operatorname{SHAKE256}(m,b)\bmod p-1\big)+1\text{ với }b=64\left\lceil\log_2(p)/64 +2\right\ceil$$ và sau đó

  • Khóa riêng và khóa chung giống như trong mã hóa
  • Chữ ký của $m$$\sigma:=G^{n-1-x}\cdot H(m)\bmod n$
  • kiểm tra xác minh $\sigma\cdot X\bmod n=H(m)$.

Ít nhất, việc xác minh thành công mà không cần thay đổi, do đó sơ đồ chữ ký này là hợp lý. Nhưng nó không an toàn ngay cả theo tiêu chí đơn giản nhất UF-KOA.

Những nỗ lực đơn giản khác cũng thất bại, bao gồm

  • chế tạo $y$ một bí mật được thêm vào khóa riêng, với $Y:=G^y\bmod n$$Y':=X^y\bmod n$ được thêm vào khóa công khai
  • chế tạo $y$ một hàm băm của tin nhắn $m$
  • chế tạo $Y$ một hàm băm của tin nhắn $m$
  • rõ ràng, bất kỳ thứ gì hoạt động trong một nhóm tùy ý khi sử dụng mã hóa ElGamal và chữ ký là một thành phần nhóm dưới dạng đầu ra giải mã ElGamal.

Mặc dù điều này không áp dụng cho ElGamal, nhưng một vấn đề khác phát sinh khi cố gắng xây dựng chữ ký từ lược đồ mã hóa khóa công khai chung và hàm băm trên miền bản mã của nó: việc giải mã một bản mã tùy ý có thể không thành công (và đối với các hệ thống thực tế như RSA-OAEP, RSAES-OAEP, RSAES-PKCS1-v1_5). Đó thực sự là một tính năng vì lợi ích của IND-CCA Bảo vệ.

Không có cách chung để xây dựng chữ ký an toàn từ mã hóa khóa công khai an toàn. Ngay cả chữ ký RSA-FDH cũng không hoạt động theo cách đó: nó xây dựng chữ ký từ hoán vị cửa sập một chiều và hàm băm trên miền của hoán vị.

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