Điểm:2

Chứng minh rằng hai lần mã hóa lại của cùng một cặp ElGamal có cùng cách giải mã

lá cờ br

Tôi đang làm việc trên một hệ thống bầu cử qua internet yêu cầu xáo trộn các lá phiếu kèm theo bằng chứng tương tác về tính hợp pháp của việc xáo trộn. tôi đang làm việc trên tờ giấy này và tôi bị mắc kẹt ở phần được nêu dưới đây:

Bằng cách giải phóng giá trị duy nhất $(r'-r'')\mod(p-1)$, hai cặp ElGamal $(x',y')$$(x'',y'')$ có thể được chứng minh là có cùng cách giải mã mà không có bất kỳ liên kết hoặc liên kết nào với cặp ElGamal ban đầu $(x,y)$.

Tôi quản lý để có được giá trị $(r'-r'')\mod(p-1)$ nêu ở trên nhưng tôi không chắc cách sử dụng giá trị này để chứng minh rằng cả hai lần mã hóa lại đều có cùng cách giải mã.

Cảm ơn vì đã dành thời gian cho tôi ,

Andrei.

Điểm:2
lá cờ ru

Viết bằng ký hiệu cộng, giả sử rằng chúng ta có một trình tạo $G$ và khóa công khai $A$. Hai cặp của chúng tôi là $(xâ,yâ)=(M+râA,râG)$$(xââ,yââ)=(M+rââA,rââG)$. Được cho $râ-rââ$, chúng ta có thể kiểm tra xem $yâ-yââ=(râ-rââ)G$$xâ-xââ=(râ-rââ)A$

Trong phép nhân ta có $(xâ,yâ)=(MA^{râ},G^{râ})$ v.v., chúng tôi kiểm tra xem $yâ/yââ=G^{râ-rââ}$$xâ/xâ=A^{râ-rââ}$.

Có phải các thông điệp đã khác nhau nhưng với cùng một phù du $r$ các giá trị, lần kiểm tra đầu tiên sẽ vượt qua, nhưng lần kiểm tra thứ hai thì không.

Andrei Florian avatar
lá cờ br
Xin chào, cảm ơn vì đã phản hồi và xin lỗi vì sự chậm trễ từ phía tôi. Tôi đã xem qua các công thức được cung cấp và chúng có vẻ đúng với (xâ²,yâ²)=(M+râ²A,râ²G). Tuy nhiên, trong trường hợp của tôi, (xâ²,yâ²)=(MA^r', G^r'). Bạn có biết làm thế nào để điều chỉnh bằng chứng để phù hợp với điều này?
Daniel S avatar
lá cờ ru
Vâng, đây là ký hiệu phép nhân như trong đoạn thứ hai. Tôi đã chỉnh sửa để làm cho điều này rõ ràng hơn.
Andrei Florian avatar
lá cờ br
Cảm ơn vì điều đó, xin lỗi vì đã làm phiền, tôi đã thử triển khai nó thông qua mã (javascript, sử dụng thư viện jsbn để tính toán trên các số nguyên lớn) nhưng dường như tôi không thể làm cho nó hoạt động được. Tôi đang cố gắng tìm ra vế trái và vế phải của phương trình rồi đánh đồng chúng như sau: `const left = y1.divide(y2);` `const right = g.pow(bằng chứng);` `console.log(left.equals(right));` y1 là y', y2 là y'', và bằng chứng là (r'-r''). Bất cứ khi nào tôi nâng g lên lũy thừa của (r'-r''), tôi nhận được 1 và khi tôi chia y' cho y'', tôi nhận được 0 là y1y2. Bạn có biết những gì tôi đang làm sai?
Daniel S avatar
lá cờ ru
Có vẻ như bạn đang làm số học ngây thơ hơn là số học modulo $p$. Bạn nên có `left=(y1*modInverse(y2,p))%p` để có hàm modInverse phù hợp (tôi không biết javascript đã tích hợp sẵn cái gì) và `right=modPower(g,proof,p)` cho một chức năng modPower phù hợp.
Andrei Florian avatar
lá cờ br
Đó là vấn đề! Cảm ơn bạn. Tôi đang đối mặt với một vấn đề với nó mặc dù. Tôi đang tạo (r' - r'') là r' - r'' % p. Bằng chứng hoạt động được cung cấp r'>r'', nhưng ngược lại thì không trừ khi tôi thay đổi left=(y1*modInverse(y2, p))%p thành left=(y2*modInverse(y1, p))%p. Có cách nào để giải quyết vấn đề đó bằng toán học để tôi có thể làm cho r'-r'' hoạt động bất kể sự bất bình đẳng không?
Daniel S avatar
lá cờ ru
Đúng. Thay vào đó, hãy sử dụng `(r'-r'')%(p-1)`
Andrei Florian avatar
lá cờ br
Vâng đó là nó. Cảm ơn rất nhiều vì tất cả sự giúp đỡ.

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