1、百万富翁问题甲有a亿资产乙有b亿资产甲乙两人想在对方不知道自己具体资产的情况下比较两人资产大小其中 ab∈12310。加密盒子模型解决该问题步骤如下1甲将a假设a=6与1234567910十个数依次进行比较得到数组=_并对元素进行加密将结果发给乙。2乙假设b=5得到标签为12345678910的加密数组=保留5号删除其他密文元素。3双方同时解密5号得到得出结论ab。请使用具体的加密技术实现加密
该协议可以使用同态加密技术实现,具体步骤如下:
-
选择两个大质数p和q,并计算n=pq和λ=lcm(p-1,q-1)。
-
选择一个随机数g,使得g的阶为λ,即对于任意整数a,满足g^a mod n ≠ 1且g^(a*λ) mod n = 1。
-
甲将自己的资产a=6加密为c1=g^6 mod n,并将[12,3456,7910]十个数分别加密为c2i=g^(2^i) mod n,其中i∈{0,1,2,...,9}。
-
甲将比较结果数组[<,<,<,<,<=_>.>.>]中的每个元素加密为c3i=g^bi mod n,其中b∈{0,1}表示比较结果。
-
甲将所有加密结果c1、c2i和c3i发送给乙。
-
乙选择自己的资产b=5,并将标签为[1,2,3,4,5,6,7,8,9,10]的加密数组[<,<<,<,<,=,>,>,>,>]中的第5个元素加密为c4=g^5 mod n。
-
乙将加密结果c4发送给甲。
-
双方同时解密c1、c2i、c3i和c4,得到明文a=6和b=5,以及比较结果数组[<,<,<,<,<=_>.>.>]中的第5个元素c35。
-
乙根据c35的值得出结论a<b。
在该协议中,所有加密操作都是同态的,即对于任意整数a、b和同态加密算法E,都有E(a)*E(b)=E(a+b)和E(a)^b=E(ab)成立。因此,即使攻击者拥有所有加密结果,也无法从中推出明文信息,保证了选择明文安全性
原文地址: https://www.cveoy.top/t/topic/fdvv 著作权归作者所有。请勿转载和采集!