Hello HN,<p>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.<p>The problem is, I'm not good at cryptography. I need to find a set of functions that one such function is<p>- is easy to evaluate in my head
- is possible for me to remember
- can be pre-calculated
- reasonably fast to use in ZKP<p>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".<p>I hope you hackers have a better idea of what types to use for `C`, `R`, and how to choose `generate_f`.<p>details in pseudo-code:<p>```idris2
-- this is public
-- the secret `f` generator
-- should discourage rainbow table
generate_f : (random_seed: Seed) -> P -> F<p>-- 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<p>-- 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
```