Say Bob and Alice are trying to figure out the fruits they like, but don't want to reveal the fruits they dislike. How could they compare their list of liked fruits and reveal only the common set to the other person?
In this scenario, each party knows the full list of possible fruits to pick from. (It's shared information.) But if one person likes a fruit and the other doesn't, the person who doesn't like the fruit shouldn't know that the other does like it. There can't be a third party involved, so this operation needs to happen without sharing information outside of these two people.
Example fruit set: [apple, banana, grape]. (1 indicates interest, 0 indicates disinterest.)
Bob's selection: [1, 1, 0].
Alice's selection: [0, 1, 0].
In this case, how can Bob and Alice figure out that the shared answer set is [0, 1, 0]?
Bob doesn't want to share that he likes apples, because it wasn't a shared interest. (An odd scenario, but it works for the sake of this example...) And from Alice's perspective, she doesn't know anything about Bob's preference for apples or grapes, because she indicated that she doesn't like those. Similarly, Bob doesn't know anything about Alice's preference for grapes, because he indicated that he's not interested in grapes.
Because they don't want to share their preferences with a third party, they want to find a way to find the common set themselves without revealing disinterest. Is this possible?
I'm not well versed in cryptography, but it seems like private set intersection may be what I'm looking for? Is this the right direction?