想要做两个大数的乘法,但是这两个数不能输入计算机,怎么做到?

2019-04-28 10:53:14 +08:00
 fbxshit

为了安全性,这两个数不能存到内存中,也不能保存到 cpu 寄存器中。

对于两数 a 和 b 加法,我能想到的是,取一个随机数 c,把 a 加 c 的结果输入计算机,然后把 b 减 c 的结果输入计算机。

那么对于 a 乘 b,如何做到让计算机得出答案,但是没有办法推测出 a 和 b?

5481 次点击
所在节点    问与答
51 条回复
toyassb
2019-04-28 10:56:31 +08:00
fbxshit
2019-04-28 10:58:35 +08:00
@toyassb 两个大数乘法,可能有数百位。
dbw9580
2019-04-28 11:00:55 +08:00
同态加密
neon4o4
2019-04-28 11:03:05 +08:00
把数字截成两半,分别在两个 cpu 上算,算完汇总一下…
nutting
2019-04-28 11:04:54 +08:00
什么环境要求这么高,不联网也不行?干脆不能用计算机?树莓派可以吗?装到铁盒子里屏蔽也不行?
fbxshit
2019-04-28 11:09:12 +08:00
@neon4o4 怎么截?如果分两个 cpu 算,第三个 cpu 汇总,我希望第三个 cpu 也无法知道我原来的两个数 a 和 b。
yanaraika
2019-04-28 11:11:22 +08:00
只有同态加密是对的,你的方法一对方直接把 a+c 和 b-c 一减就能得到 a-b,一加得到 a+b 就能恢复出原来的数据
Raisu
2019-04-28 11:11:36 +08:00
不能保存到寄存器中,那 CPU 的 ALU 怎么拿到数据?
fbxshit
2019-04-28 11:12:00 +08:00
@nutting 为了从理论上防止一切安全漏洞,就是在完全不告诉计算机我要计算的原始数据的情况下,利用 cpu 的计算能力。
yanaraika
2019-04-28 11:12:15 +08:00
不论如何你总要信任最后得到结果的某个部件,如果不信任 cpu 可以用 tpm 之类的解决方案
yanaraika
2019-04-28 11:13:37 +08:00
@yanaraika 看错了 但我非常怀疑这个针对多次运算的密码学强度
fbxshit
2019-04-28 11:13:48 +08:00
@yanaraika 对于加法,你不知道我的随机数 c,你是无法推测出 a 和 b 的。
fbxshit
2019-04-28 11:19:54 +08:00
@yanaraika 我可以信任一个最小化的系统,由这个最小化的系统对数据进行预处理,然后把处理过的数据放入另一个真正进行计算的计算机。最初的那个预处理机器如果叫 x,真正计算的机器叫 y,那么我可以完全不用担心 y 机器的任何安全漏洞,因为就像加密过的数据一样,连要计算什么都是加密过的。
fbxshit
2019-04-28 11:22:00 +08:00
@Raisu 不能让 cpu 拿到我的乘数 a 和 b,但是要给我返回 a 乘 b,假设 a 和 b 是两个极大的素数。
fbxshit
2019-04-28 11:29:10 +08:00
@dbw9580 感谢
leo108
2019-04-28 11:39:21 +08:00
『我可以信任一个最小化的系统』,如果有 4 台这样的最小系统,分别计算 a^2 / b^2,然后人肉计算 c=a+b,第三台计算 c^2,第四台计算 (c^2-a^2-b^2)/2
lrigi
2019-04-28 11:43:38 +08:00
@dbw9580
@fbxshit
我有个问题
运行同态加密的时候就需要把数据输入计算机才能得出密文
如果数据可以输入计算机 那直接算不就行了?
感觉楼主提出了一个不可能事件?
lrigi
2019-04-28 11:46:05 +08:00
@leo108
第一台电脑 ab 不就输进去了吗……
第三台电脑里面甚至 c a b 都知道了……
leo108
2019-04-28 12:02:19 +08:00
@lrigi 第一台电脑只计算了 a^2,第四台确实一次性计算这些确实不妥,但是可以把这个公式拆分到更多的系统去计算。

这样可以保证没有任何一台电脑能同时拿到 a b 两个的原始值。
TomVista
2019-04-28 12:20:37 +08:00
也不能保存到 cpu 寄存器中 ??

不用讨论了吧,脱离 cpu 寄存器进行运算,虽然我机组挂科了,但我也知道冯诺依曼和图灵的棺材板都做不到这件事.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/559394

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX