I am trying to design a lightweight identity schema for ipfs (an similar) objects, and need an advice on cryptography. The basic idea is such: a person creates an object A including payload and some sort of signature. Then they create object B including proof that they created object A, too. One way it could work is such: the person have private identity token. The system has universally known "magic" constant. When creating object A, they compute hash(identity_token, A.payload) - this will be proof(A). They then use it to symmetrically encrypt the constant, the result becoming A.signature. When they create B, they can include proof(A) in it. Anyone then can use proof to decrypt A.signature, revealing the constant. The big downside of this schema is that it can be used only once for given A object, after which anybody and not just creator of A can use the same proof. So I about including B.payload in proof somehow. Then different B.payload results is different proof value (and same B.payload results in the same proof value, so resulting object will be identical). I guess zero knowledge authentication (https://courses.csail.mit.edu/6.857/2014/files/15-cheu-jaffe-lin-yang-zkp-authentication.pdf) allows just that, with substitutions: identity_token <- password, A.payload <- username; A.signature <- Y; B.payload <- a; proof(A, B) <- (c, z_x) (and the magic constant is not needed) So if anyone here have experience in crypto, can you have a look and find vulnerabilities in the schema?