or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
A vote-buying attack prevention tactic in MACI
This idea comes from Kirill here: https://forum.clr.fund/t/making-contributions-to-a-funding-round/22/29
We would like to prevent the first-message vote-buying attack in MACI which looks like this:
pk
. Eve knows the corresponding private keysk
.pk
.sk
to vote for her preferred options and pays Alice the bribe.The tactic which helps to prevent the attack is as such:
pk
. Eve knows the corresponding private keysk
.pk
.Questions from WJ:
sk
? Without it, she can't sign the key-change message.Nonetheless, if there is a default UI which generates the keys, this method is still useful as most users will use it and will have access to their
sk
. A briber would have to force the victim to use an alternative UI, interact with the MACI contract directly, or use some other means to execute the attack.Double key signature?
K1
K2
. But Eve doesn't want Alice to knowK2
. How can we prevent Eve from succeeding?Attempt 1
K1
. We assume that Alice never sharesK1
with anybody.K2
. The public key isP2
. We assume that the coordinator cannot knowK2
, or they could cast fraud votes.d
usingK2
:eddsa_sig = eddsa_sign(K2, d)
hash(ecdsa_sig)
withK1
:ecdsa_sig = ecdsa_sign(K1, eddsa_sig)
ecdsa_sig
,eddsa_sig
, andP2
to the coordinator.Now the coordinator knows that Alice knows
K1
. But Eve could have asked Alice to hash and signeddsa_sig
. So the coordinator can't tell whether Alice really knowsK2
.A big piece of the problem is that Alice cannot directly share
K2
with the coordinator, and Eve could give Alice something to sign withK2
.