ZKP Zero Knowledge Proofs, Selective Presentations

Key Points

  1. ZKP allows proof the party has knowledge of private facts or has control of a private resource - NOT direct proof of ownership
  2. commonly used in SSI for selective presentation of credentials or verification of access to a digital asset


References

Reference_description_with_linked_URLs_______________________Notes______________________________________________________________
m SSI / DID / VC - Self Sovereign Identity
m Hyperledger Aries - identity, data management tools
m TOIP Trust Over IP




How ZKP - Zero Knowledge Proofs work - video  









Key Concepts




Image result for hyperledger fabric zkp
These “zero-knowledge proofs”prove that the signature on some attributes is valid and the user is in possession of the corresponding credential secret key. Such proofs, like the X. 509 certificates, can be verified with the public key of the authority that originally signed the credential and cannot be forged.

Zero-Knowledge Proof: Verifying Blockchain Transactions with Less Risk

https://wiki.hyperledger.org/display/CP/Zero-Knowledge+Proof%3A+Verifying+Blockchain+Transactions+with+Less+Risk



How ZKP - Zero Knowledge Proofs work - video  

trust goals

  1. prove that the PII data has not changed since it was last recorded by a valid transaction ( data provenance )
  2. protect PII data > don't share PII data with other parties ( data protection )
  3. prove to a relying party ( verifier ) that the holder of PII data knows the data without sharing the data ( ZKP )

trust solution

  1. data provenance
    1. create a hash of the data > normal data hash
    2. record the data hash and surrogate key on blockchain 
    3. when accessing the data verify the current data hash matches the data hash of the last recorded transaction on the blockchain
  2. data protection
    1. don't share the PII data directly with other parties ( several options including recording obfuscated data on the blockchain as a reference )
  3. data knowledge



Example

using ZKP, prove that ( as holder of my age document ) I am over 21 to a bar tender ( relying party ) to drink at a bar without revealing my age

create an indirect proof that my age is over 21 using my birth date > today my DOB > 21 years old

  • for speed, the proof could be pre-calculated for a specific date and then the current date days since could be added to prove I ma over 21

relying party ( bar tender ) challenges me on my age > 21

  • holder presentation generates a current ZKP result for the challenge
  • relying party sees the ZKP result is true and allows the holder to purchase alcohol


Other examples

  • income is within a range
  • hash of salary is Y




create a hash of the data > normal data hash

define facts and answers that uniquely identify the data item > fact info set

hash the fact info set  AND the data hash > fact info data hash

verifier credential challenge > ask client for the fact set answers

hash the answers with the issuer data and compare to the fact set hash to see if the client has proven the information correctly



Potential Value Opportunities



Potential Challenges



Candidate Solutions



Step-by-step guide for Example



sample code block

sample code block
 



Recommended Next Steps