<div>Just a random thought I had... I'm sure there's probably a better way to do this...</div><div><br></div>Alice wants to share her contact list in a public directory without revealing specifically who her contacts are.<div><br></div><div>Each contact is represented by an ECC public key.</div><div><br></div><div>For each contact, Alice picks a large random scalar, and multiplies the contact by that scalar, and publishes both the scalar and the resulting curve point in the directory.</div><div><br></div><div>Bob is authorized in the directory to view Alice's contacts. For each of Alice's masked contacts, Bob tries multiplying the ECC private keys of each of his contacts and seeing if any of the resulting curve points are a match for the one Alice published for a given scalar.</div><div><br></div><div>Bob can now learn which contacts he has in common with Alice.<span></span></div><br><br>-- <br>Tony Arcieri<br><br>