I need to design some protocol where actors will leverage Zero Knowledge Proofs (ZKP) to prove that they know the pre-image of some specific SHA256 hash without revealing the pre-image itself.
Ideally, they should also be able to batch proofs of multiple hashes into a single ZKP.
SHA-256 hashing is not a ZK friendly operation, so (unless I introduce hardware optimization), I should expect long times for generating those ZKPs. Unfortunately, I don't have the option of replacing SHA-256 in favor of some ZK-friendly hash function.
So my questions are:
- What ZK scheme is the most adequate for this use case? Would ZK-SNARKs do the job?
- Given some average consumer hardware, what is the order of magnitude for the time taken to generate such ZKP (seconds, minutes, hours)? How does that grow in relationship to batch size?