可以到上面的地址中,从Download下载到该项目以及项目相关的介绍
安装
环境:Ubuntu18.04
步骤一:安装GSL
首先需要安装依赖包GSL(GNU Scientific Library),这是一个C语言科学计算类库,里面有超过1000个函数用于代数计算、矩阵运算
安装命令如下(以安装GSL2.6为例):
wget http://ftp.club.cc.cmu.edu/pub/gnu/gsl/gsl-2.6.tar.gz
tar -zxvf gsl-2.6.tar.gz
cd gsl-2.6
sudo ./configure
sudo make
sudo make install
步骤二:安装配置fca(fast correlation attack)
继续安装过程,进入到fastcorrattack目录,在Readme中,会用到CHECK,使用apt-get isntall check
可以进行安装,不过不安装这个也不影响正常的使用
根据Readme进行配置
./configure
make
此时在./src下会生成一个fca的可执行文件,此时也表示安装成功了
步骤三:了解项目结构
项目的源码都在src中
- algorithm_b.c里面是算法B的实现
- bitarray.c类似一个库,提供了许多关于位数组的创建和管理
- main.c作为入口,里面除了调用algorithm_b实现攻击,还有检查输入参数是否合规、使用帮助等功能
- pb_probability.c主要是算法过程中涉及到的一些概率计算,比如计算m(生成校验多项式的个数)等
- pc_paritycheck.c中有许多函数,用于生成校验多项式和计算每一位所满足的校验多项式个数
在test中是一些用于测试功能的用例
还提供了生成测试用例的函数。安装完成后可以使用test/data下的数据进行测试
也可以直接使用test下的combgen.py文件生成自己的测试用例,该文件里面是一个简单的Geffe型的NFSR(这里是根据test/data下的N_long.in按顺序进行输入),运行后会生成test.test文件(用于作为fca的输入)以及test.ans文件(根据输入产生的nfsr输出序列)
提供的测试用例,t表示抽头数,t2即为有2个抽头,d表示N/L(N为输出序列的个数;L表示LFSR的级数,即有几个寄存器)。
比如t2_d10_3.test,里面的内容表示
- 第一行表示相关性为0.75
- 第二行指截取到的NFSR输出序列有2000位
- 第三行是说组成该NFSR的每个LFSR只有两个寄存器,级数为2
- 第四行是抽头数,这里为2,接下来的两行即为抽头的位置(低位为1)
- 第五六行即为抽头的位置,这里的1和2表示,两个寄存器都参与了反馈
- 第七行即为截取序列
下图表示攻击的适用范围,抽头数过多的情况,攻击难以实施
步骤四:使用fca
可以直接使用test/data下的测试用例进行测试,比如使用t2_d10_2.test作为输入,项目会输出一个