如何将非线性XOR方程组转换为CNF

时间:2018-06-25 06:52:30

标签: nonlinear-functions sat-solvers stream-cipher

我正在尝试分析Trivium中的相移故障分析,并遇到了要解决的非线性方程组。我读了有关饱和解算器和高斯消元的文章,但不幸的是,我在互联网上找不到的文章都没有显示如何处理带有大量变量的非线性方程组(此处trivium提供288个变量)。因此,我现在对如何求解这些变量非常困惑。

2 个答案:

答案 0 :(得分:1)

您可以将问题表达为布尔门网络-网表-,然后使用bc2cnf将其转换为CNF。您可以指示bc2cnfXOR格式输出XCNF子句,这是扩展的CNF格式,带有“ x”子句,表示XOR子句。

cryptominisat这样的

SAT求解器能够读取XCNF和/或检测包含的XOR门并执行高斯消去。 Cryptominisat reportedly已被多次攻击Trivium流密码。

答案 1 :(得分:0)

我建议您看一下SMT求解器,例如Z3。使用SMT,您可以自然的方式来表达布尔方程和不等式,而不是将所有内容分解为SAT实例。在线上有很多文档可帮助您入门。