将方程转换为cnf,用于使用坐标求解器

时间:2013-05-01 13:04:50

标签: c cryptography cnf cryptanalysis

所以我要把我的一个同事设计的一些方程式转换成cnf文件格式,与一些开源的求解器一起使用。

方程是:

S盒:

y1= 1+x1+x2+x4+x1x2

y2= 1+x1+x2+x3+x3x2

y3= 1+x1+x4+x1x2+x1x3+x2x3+x3x4+x1x2x3

y4= x1+x2+x3+x1x3+x1x4+x2x4+x3x4+x1x2x3+x2x3x4

混合柱:

Y1= 2.X1+3.X2+1.X3+1.X4

Y2= 1.X1+2.X2+3.X3+1.X4

Y3= 1.X1+1.X2+2.X3+3.X4

Y4= 3.X1+1.X2+1.X3+2.X4

. denotes multiplication in GF(2^4) with x^4+x+1 being the irreducible polynomial.

对于攻击,

Z= z1|z2|...|z16, 1<= i<=16

Then, ui= (1+z(4i-3)) ^ (1+ z(4i-2)) ^ (1+z(4i-1)) ^ (1+ z(4i)), 1<=i<=4

Then, (1+u1) V (1+u2) V (1+u3) V (1+u4) =1; ui + uj=1, i<=i<=j<=4

我很感激有关如何将这些转换为cnf文件格式的任何信息,包括任何参考链接。关于在cnf文件格式中指定上述约束的一些帮助也将受到赞赏。

1 个答案:

答案 0 :(得分:2)

这是一个建议:

  1. 将数学运算(加法,GF(16)中的乘法等)编码为电路。如果您已完成数字逻辑设计课程,您将知道如何执行此操作。如果没有,那就有点难了。如果您需要更多信息,请告诉我您的背景是什么,我会尝试提出具体建议。
  2. 使用Tseitin transformation将电路转换为CNF。
  3. PS。看起来你正在尝试使用SAT求解器进行加密。 AFAIK对于像MiniSat这样的标准解算器效果不佳。不确定CryptoMiniSat是否会更好,但要记住,这些类型的问题传统上对于SAT求解者来说很难。