Ask HN: Building a ZKP Scheme for Humans Hello HN, I am looking to find a ZKP scheme for humans. Instead of remembering passwords, the user can remember a unique function that has a certain property. Services then probe the user to prove that they know such a function, without revealing the function to the service. The problem is, I'm not good at cryptography. I need to find a set of functions that one such function is - is easy to evaluate in my head - is possible for me to remember - can be pre-calculated - reasonably fast to use in ZKP One example of a function is to imaging a 3D cellular shape with holes. The challenge type is a list of "discrete movement through the space", and the response is a list of "crossing the boundary of the 3D shape". I hope you hackers have a better idea of what types to use for `C`, `R`, and how to choose `generate_f`. details in pseudo-code: ```idris2 -- this is public -- the secret `f` generator -- should discourage rainbow table generate_f : (random_seed: Seed) -> P -> F -- this is private -- the user remembers a function `f` with certain property in set `P` -- this function should be easy to remember and calculate for humans F : Type F = (challenge: C) -> (response: R) f : F -- this is public -- prove that the function is generated with `property` from its response -- this should be straight-forward to implement using ZKP verify : (property: P) -> (challenge: C) -> (response: R) -> bool ``` |