上周跟@lego 和小霖(我找不到你论坛ID啊)吹水的时候聊到一个称体重的问题:
Q:小霖在实验室里有个某米的智能电子秤,在上面称过数据会同步到小霖的手机里,某一天lyy想要称自己的体重,但是不想让小霖知道,那要怎么做?
A:
- 随便找几样实验室里的东西分别称重
- 在1称过的东西中随机挑几个拿在手里,然后站在某米电子秤上
- 把2中称出来的结果减去手里拿着的东西的重量就是实际体重
这个方法是基于背包加密(Knapsack Cryptosystem/Subset-Sum Cryptosystem)改的,不同的地方是把明文M也加到和S中,然后M是不公开的(废话)。M放在不同位置的话Subset-Sum的攻击方法好像就用不了了(当时吹完水后就没有深究了)
应用的话可以把称重这个过程抽象称一个在公开信道上的API,用户调用这个API但是不想泄露输入数据是可以这样搞(不过只能用在可以做加减法的就是了)
PS:站长加个密码学tag!