Skip to content

feedback #2

@hackergrrl

Description

@hackergrrl

Really cool idea! Some comments below on the overview doc. I also may be looking at this from a more peer-to-peer angle, though I think(?) you're aiming to have this be a centralized service? In any case, I'm erring on the side of minimizing trust between machines. Disclaimer: I am most certainly not a real crypto authority. :D

opinion = an exact text statement of up to 140 characters, expressing a belief, desire or opinion in the context of a voters' authority as a member of a democracy, for example:
screed = a list of opinions a voter has chosen to express, with each opinion on its own line

Are opinions signed, or are sceeds? My understanding is that users publish opinions as they wish (each signed with their pubkey), and then screeds are aggregated by latter-mentioned spiders. Signing at the opinion level has the nice property that any subset of a user's screed can be verified independently.

signed screed = a voter's screed, signed using their private key, and posted publicly along with their public key (for verification of their screed) and the registrar's (likely detached) signature of their public key

What if "screed" simply meant "signed screed"? i.e. opinions only exist if they are signed. Otherwise they're just trustless data that has no value.

tally list = a list of opinions found by a tally spider, sorted in order of popularity, and presented with a percentage indicating how many signed screeds included it

How could the list be trusted? What if users instead ran a "tally list viewer" that just downloaded the list of signed opinions, verified all the signatures locally, and then displayed the computed results (desired percentages)? Since the crypto verification step would be happening on each user's local machine, the data would be more trust-worthy than some blob coming down from an external server.

screed editor = a computer program used by voters to edit their screed, and to sign it and upload it to their web page so it can be found by tally spiders

As per above: if signing happened on the opinion level, users wouldn't even need to have a full list of their opinions present. i.e. I can plug in my GNUK into a stranger's computer, write up an opinion, sign it, publish it, and walk away without needing the rest of my screed.

gives each voter total control over what they say and when they say it

How does it provide the "when"? Signing certainly lets them verifiably say things, but not when the signing happened.

allows voters to change their opinions and endorsements as often as they like

Nefarious tally spiders could misrepresent by using old user screeds that contain opinions that the user has since revoked! :)

anyone can count the number of people agreeing with each opinion, at any time and with independant verification
anyone can use a tally spider (written in Golang) to curl all the signed screeds they can find on the net, and collate them by pubkey
tally spider lists produced by spiders are shared publicly for people who don't want to run a tally spider for themselves.

Awesome properties. :D

voters use a program (in javascript, immobilized by hyperboot to prevent changes)

woo hyperboot!

signing causes numeric counter to increment, preventing fraud

How will you secure the counter bits from being spoofed/modified?

each screed record includes the time it was accessed

Why? Someone could modify the the timestamp in the file -- it can't be trusted.

an indication of whether both its signatures was verified

Again, you couldn't trust this: someone could just modify the file to say "yep, sure, all verified". Best to actually have anything that reads the tally file verify the screeds each time.

and an MD5 or SHA1 checksum of the record (so that pages which have not changed don’t have to be verified again if the MD5 matches).

Scary. You can't skip the verification step: I could modify the tally file to include false screeds and then generate each one's MD5/SHA1. Since you don't verify the signatures, I can just use bogus ones.

The record also includes the fingerprint of the voter’s public key

This step is unnecessary: a signed PGP message implicitly includes the fingerprint.

since this is how we watch for uniqueness of screed authors and merge screeds appearing with the same pubkey.

Overall, it's much more secure / simpler to just keep a list of all verbatim signed screeds, and verify each screed+signature on-demand each time you want to work with the data.


Awesome project! Can't wait to see more. :D

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions