使用GNU的GMP库实现Cramer-Shoup加密方案失败

时间:2016-12-12 20:21:13

标签: c encryption gnu gmp

有没有人使用GNU GMP库成功实现了Cramer-Shoup加密/解密算法?我怀疑我对我的实现有些巧妙的错误,根据我在下面写的内容,对我怀疑的简单肯定就足够了 - 这是一般方案的wiki链接:Cramer-Shoup CryptoSystem

我正在尝试实施Cramer-Shoup加密方案(和验证)来确定是否应该撤销匿名。它的密钥对创建算法从the TCG Software Stack (TSS) Specification Version 1.2 Level 1 Errata A的第468页开始,加密部分在第446页,验证在第471-472页。我可以手工完成数学运算,简单的代数替换让我可以通过验证检查(手工)。我使用GMP库,我从未遇到过使用GMP函数为我的应用程序实现的其他代码(基于属性的凭据的承诺)。但现在甚至尝试使用数学库的几种不同的解决方案,我一直得到错误的答案。

我在带有TPM芯片和Debian操作系统的Beagleboard上试过这个。我本周末在家里制作非TPM版本,在一个简短的程序中运行VMware Ubuntu客户端。我确保在我的方程之前分配任何动态内存分配,并在不再需要时释放方程式。

我还使用基于网络的计算器完成了每一步的计算,最终得到了相同的错误结果。这部分是我怀疑我的代码是问题的原因,而不是GMP库。

我会发布我的代码,但它会破坏我在这个帖子上的字符限制。

谢谢 - 我知道我的问题在软件开发方面比其他方面更具哲学性,但我不想让社区与细节混淆。

1 个答案:

答案 0 :(得分:1)

我又看了一下实现。应该有一定的参数顺序,我把它们切换到两个地方。感谢您抽出宝贵时间查看此问题并提供建议!

GMP工作!