{"action":"created","issue":{"url":"https://api.github.com/repos/zcash/zcash/issues/570","repository_url":"https://api.github.com/repos/zcash/zcash","labels_url":"https://api.github.com/repos/zcash/zcash/issues/570/labels{/name}","comments_url":"https://api.github.com/repos/zcash/zcash/issues/570/comments","events_url":"https://api.github.com/repos/zcash/zcash/issues/570/events","html_url":"https://github.com/zcash/zcash/issues/570","id":124549889,"number":570,"title":"potential feature: diversified public keys","user":{"login":"daira","id":643204,"avatar_url":"https://avatars.githubusercontent.com/u/643204?v=3","gravatar_id":"","url":"https://api.github.com/users/daira","html_url":"https://github.com/daira","followers_url":"https://api.github.com/users/daira/followers","following_url":"https://api.github.com/users/daira/following{/other_user}","gists_url":"https://api.github.com/users/daira/gists{/gist_id}","starred_url":"https://api.github.com/users/daira/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/daira/subscriptions","organizations_url":"https://api.github.com/users/daira/orgs","repos_url":"https://api.github.com/users/daira/repos","events_url":"https://api.github.com/users/daira/events{/privacy}","received_events_url":"https://api.github.com/users/daira/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/zcash/zcash/labels/anonymity","name":"anonymity","color":"93b937"},{"url":"https://api.github.com/repos/zcash/zcash/labels/crypto","name":"crypto","color":"ff6b75"},{"url":"https://api.github.com/repos/zcash/zcash/labels/move%20to%20zips","name":"move to zips","color":"0052cc"},{"url":"https://api.github.com/repos/zcash/zcash/labels/not%20in%201.0","name":"not in 1.0","color":"a10d11"},{"url":"https://api.github.com/repos/zcash/zcash/labels/performance","name":"performance","color":"b495f9"},{"url":"https://api.github.com/repos/zcash/zcash/labels/SECURITY","name":"SECURITY","color":"e01010"},{"url":"https://api.github.com/repos/zcash/zcash/labels/selective%20transparency","name":"selective transparency","color":"b072cc"},{"url":"https://api.github.com/repos/zcash/zcash/labels/special%20to%20Daira","name":"special to Daira","color":"ffa480"},{"url":"https://api.github.com/repos/zcash/zcash/labels/use%20case","name":"use case","color":"e9e9ff"},{"url":"https://api.github.com/repos/zcash/zcash/labels/zkSNARK%20circuit","name":"zkSNARK circuit","color":"ff5b55"}],"state":"open","locked":false,"assignee":{"login":"daira","id":643204,"avatar_url":"https://avatars.githubusercontent.com/u/643204?v=3","gravatar_id":"","url":"https://api.github.com/users/daira","html_url":"https://github.com/daira","followers_url":"https://api.github.com/users/daira/followers","following_url":"https://api.github.com/users/daira/following{/other_user}","gists_url":"https://api.github.com/users/daira/gists{/gist_id}","starred_url":"https://api.github.com/users/daira/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/daira/subscriptions","organizations_url":"https://api.github.com/users/daira/orgs","repos_url":"https://api.github.com/users/daira/repos","events_url":"https://api.github.com/users/daira/events{/privacy}","received_events_url":"https://api.github.com/users/daira/received_events","type":"User","site_admin":false},"assignees":[{"login":"daira","id":643204,"avatar_url":"https://avatars.githubusercontent.com/u/643204?v=3","gravatar_id":"","url":"https://api.github.com/users/daira","html_url":"https://github.com/daira","followers_url":"https://api.github.com/users/daira/followers","following_url":"https://api.github.com/users/daira/following{/other_user}","gists_url":"https://api.github.com/users/daira/gists{/gist_id}","starred_url":"https://api.github.com/users/daira/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/daira/subscriptions","organizations_url":"https://api.github.com/users/daira/orgs","repos_url":"https://api.github.com/users/daira/repos","events_url":"https://api.github.com/users/daira/events{/privacy}","received_events_url":"https://api.github.com/users/daira/received_events","type":"User","site_admin":false}],"milestone":null,"comments":5,"created_at":"2016-01-01T16:39:12Z","updated_at":"2016-09-30T21:19:30Z","closed_at":null,"body":"It is an advantage of Zerocash that even when a payee uses a single address public key, some level of payer anonymity is retained. However the payers can compare the public keys they were given and determine that they are paying the same entity.\r\n\r\nIt would be nice if there were a way to diversify public addresses so that they cannot be linked, but retain a single private key for ease and efficiency of address management. In particular, the key-private decryption key would be the same for a given set of diversified addresses, so that it would be possible to scan the blockchain for buckets encrypted to any of the addresses in that set, simultaneously.\r\n\r\nOne way of doing that is:\r\n\r\nLet S_id be a diversifier, which must be long enough that it is unlikely to collide between two diversified addresses *in the same set* when chosen randomly.\r\nLet GH (\"group hash\") be a hash function that takes a diversifier into a random element in an elliptic curve group (with unknown exponent). Let CRH be a collision-resistant hash. \r\nLet a private key be (a_sk, sk_enc) generated as in the current Zerocash protocol.\r\nLet a public address be (S_id, a_pk_id, pk_enc_id) where  pk_enc = sk_enc . GH(S_id) and a_pk_id = CRH(S_id, a_sk).\r\n\r\nOther changes are obvious: we use GH(S_id) in place of the base point of the curve, and we include S_id in the plaintext of an encrypted bucket so that we can check the corresponding a_pk_id when given a_sk.\r\n\r\nAssume that GH is an ideal \"random\" hash into the group; then, the security is dependent on being unable to find sk_enc even when given multiple pairs (G, sk_enc . G) for random group elements G. This is a nonstandard assumption, but may be reasonable and is certainly not obviously bad."},"comment":{"url":"https://api.github.com/repos/zcash/zcash/issues/comments/250854911","html_url":"https://github.com/zcash/zcash/issues/570#issuecomment-250854911","issue_url":"https://api.github.com/repos/zcash/zcash/issues/570","id":250854911,"user":{"login":"ebfull","id":3794471,"avatar_url":"https://avatars.githubusercontent.com/u/3794471?v=3","gravatar_id":"","url":"https://api.github.com/users/ebfull","html_url":"https://github.com/ebfull","followers_url":"https://api.github.com/users/ebfull/followers","following_url":"https://api.github.com/users/ebfull/following{/other_user}","gists_url":"https://api.github.com/users/ebfull/gists{/gist_id}","starred_url":"https://api.github.com/users/ebfull/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ebfull/subscriptions","organizations_url":"https://api.github.com/users/ebfull/orgs","repos_url":"https://api.github.com/users/ebfull/repos","events_url":"https://api.github.com/users/ebfull/events{/privacy}","received_events_url":"https://api.github.com/users/ebfull/received_events","type":"User","site_admin":false},"created_at":"2016-09-30T21:19:30Z","updated_at":"2016-09-30T21:19:30Z","body":"We need something like this to solve a performance bottleneck in our system -- for every incoming transaction, we run `Receive` for each spending key."}}
{"actor":{"display_login":"ebfull"}}