Edit: My goal is to create a voting scheme that doesn't require a lot of crypto infrastructure to be deployed on the client side. Smartcards, and tokens are impractical for these purposes. I envision a user typing a "code" into a web browser (which is imperfect) and submitting the inputs. The code is either static, or with minimal circuitry that can be covered in epoxy and embedded in a card.
Ideally this code could manifest itself in a way that is non-linkable to the original voter. I would like these anonymised ballots to be publicly acessible for verification.
If I can somehow "convert" a human typeable code into Microsoft's UProve, then all my requirements would be solved.
Is it possible to create a ZKP (or comparable MAC scheme) that can be typed by a human with relative ease? What would that crypto system look like?
If I were to design a crypto system around what can be typed easily by a human, say 26 uppercase ASCII letters, or 16 mixed case letters I believe that leaves me with security of 2^92 bits of security.
- How should I take this design detail and turn it into something that can be used into a ZKP?
For example, take an ECC key with n bits and simply sign data with my key. Or use that crypto material in a comparable standard such as UProve or PGP.