让我们说有爱丽丝,鲍勃,夏娃和仲裁员。
让我们说
Alice有一张记录表
| id | pet type | birth date |
|----------------------------------
| 1 | cat | 2010-03-03 |
| 2 | dog | 2011-06-12 |
Bob有一个记录表
| id | pet type | color |
|-------------------------------|
| 2 | dog | white |
| 3 | bird | green |
Eve有一个记录表
| id | pet type | size |
|--------------------------------
| 1 | cat | small |
| 3 | bird | small |
现在每个人都希望通过相邻ID的邻居数据来丰富自己的数据,但是没有披露此ID,例如,
Alice希望她的数据如下所示
| id | pet type | birth date | color | size |
|------------------------------------------------------
| 1 | cat | 2010-03-03 | | small |
| 2 | dog | 2011-06-12 | white | |
鲍勃希望他的数据如下所示
| id | pet type | birth date | color | size |
|------------------------------------------------------
| 2 | dog | 2011-06-12 | white | |
| 3 | bird | | green | small |
等等。
仲裁员协调各方之间的所有交换操作,并使用来自各方数据集的相应加密id字段匹配数据,因此各方必须通过仲裁员进行沟通,但不能直接相互沟通。
仲裁员也必须能够确保
hash(Alice's id = 2) = hash(Bob's id = 2), hash(Bob's id = 3) = hash(Eve's id = 3)
等等,但一定不能恢复原始标识符,仲裁员也不能强制加密标识符(所以如果谈论某种哈希 - 它们必须被腌制)
为了简化Alice,Bob和Eve的事情 - 他们希望只有一个密钥来加密自己的标识符,但每个方的密钥应该不同,即
F1(alive_key(alice_id)) = F2(bob_key(bob_id)) = F3(eve_key(eve_id))
其中,F1,F2,F3-是仲裁者应用于Alice,Bob和Eve的加密标识符的一些功能,并且这些功能不解密原始标识符,但导致加密的标识符相同。
所以问题是 - 是否有任何算法可以帮助解决这样的问题?