目前我知道的是windows在cmd窗口打开cryptominisat5之后可以直接运行cnf文件。
举例一个4位s-box的输入输出,并给出它们的逻辑表达式,步骤如下:
-
从第二行开始,前四位表示输入,后四位表示输出,第一行的字母A~H是对每一位的表示,即变量,(用字母是为了好说明问题,应该用1,2,3,…,8这八个数字表示变量放在第一行替换掉A-H的)后边的F0我目前认为是必须的,注意F0以及每行最后一个1之前的两个逗号
-
另存为.csv格式,且编码为UTF-8。如下图
-
完了打开刚另存的文件如下:
-
此时需要软件Logic Fridy来帮助生成逻辑表达式,析取范式还是合取范式我也分不太清楚了。
-
从File选项里找到 Import Truth Table, 导入刚才第二步另存的.csv文件。一开始是有乱码的,没关系,改它
-
在箭头处右键,点Modify Truth Table, 将汉字换成我的变量A,再点ok 确定即可,下拉右侧进度条可以看见整个真值表了
-
接下来就是生成逻辑表达式了,TruthTable -> Submit
Equation -> Sum of products
Operation -> Minimize
Equation -> Product of sums
好了,箭头所指的标注的部分就是我需要的这个sbox的逻辑表达式了,但是到sat可用的cnf模式还需要几步 -
将第7步得到的最终逻辑表达式,改为SAT认可的形式,保存到.cnf。更多cnf文件的含义我怕瞎说错了,可以参考此网站给出的解释(https://www.msoos.org/cryptominisat5/)
可以下载安装包以及sample看看运行感受一下,我用ABC……这样的字母表示变量只是为了说明问题,应该用数字表示变量的。