一种基于FPGA的密码协处理器全自动仿真验证方法
技术领域
本发明涉及一种对密码算法进行验证的方法,具体涉及一种基于FPGA的密码协处理器全自动仿真验证方法。
背景技术
密码协处理器(coprocessor),作为实现密码算法的一种芯片设计,为了协助中央处理器完成其无法执行或提高其执行效率而设计的辅助芯片。密码算法由于其特殊的实现方式,复杂的计算过程,在设计初期,需对其进行大量的数据验证才能保证设计功能的正确性。传统的验证方法是人工操作生成随机数作为输入,待运算完成后,使用仿真软件查看波形,在逻辑功能无误的情况下,再使用FPGA验证平台进行验证,此方法耗费时间长,效率低,并且计算次数太少,无法准确验证算法功能。本发明中提到的方法在设置好验证次数后,通过不同方式方法实现待验证的算法,计算的结果以文件为载体进行比较,同时全程无需人工干预,既提高了效率,缩短了时间,又能使算法达到足够的计算量,确保功能正确性。
发明内容
为克服现有技术的不足,本发明提供一种基于FPGA的密码协处理器全自动仿真验证方法。该方法通过预先生成的随机数作为输入,密码协处理器核心算法由软件和FPGA硬件电路平台分别实现并计算,最后将输出结果进行比对,达到仿真验证的目的。
为实现上述目的,本发明采取的技术方案为:一种基于FPGA的密码协处理器全自动仿真验证方法,包括如下步骤:
步骤一、随机源模块随机生成用于密码协处理器实现密码算法的输入数据,保存为随机数文件;
步骤二、将密码协处理器加载至FPGA验证平台并在PC端加载实现待验证密码算法的软件程序;
步骤三、FPGA验证平台读取随机数文件作为待验证密码算法的输入,PC端读取随机数文件作为待验证算法的输入并在PC端运行实现待验证密码算法的软件程序;
步骤四、对比FPGA验证平台和PC端的计算结果,若相同,则进入步骤五;若不同,则进入步骤八;所述密码协处理器的加载到FPGA验证平台实现以及由软件实现时,两种实现算法的方法是不相同的,但得到的最后结果应为一致,这样才能验证硬件电路实现的正确性。
步骤五、验证次数累加一次,判断是否到达所设置的验证次数,若是,则进入步骤六;若否,则进入步骤七;验证的次数越多,理论上出现错误的概率就越小。
步骤六、输出计算结果并进入步骤九;
步骤七、转至步骤一;
步骤八、输出错误位置及结果并进入步骤九;在软件及FPGA测试激励文件中,会随时输出运算中间结果及运算步骤,当出现错误时,根据输出的运算中间结果和步骤可定位错误位置。
步骤九、自动仿真完成。
上述方法通过预先生成的随机数作为输入,密码协处理器核心算法由PC端的软件程序和FPGA硬件电路平台分别实现并计算,最后将输出结果进行比对,达到仿真验证的目的。通过设置好所需的验证次数,在循环运行过程中无需人工干预,直到报错或仿真完成。本发明通过对待验证密码算法进行不同的实现方式,可以更好的检验密码算法的正确性,同时将仿真验证的时间大大缩短。
进一步,步骤一中所述随机数文件采用十六进制数进行保存。采用十六进制保存有以下优点:在验证系统验证算法出现错误并停止循环运作时,更方便的去查找错误所在的位置;另外,对于许多密码算法(如公钥算法RSA)其输入或者输出通常达到1024bit甚至更长,采用十六进制保存在初期环境搭建的时候更容易调试。
进一步,所述的密码协处理器以RTL(Register Transfer Level)电路或网表的原始形式存在,密码协处理器中的密码算法包括所有可能在FPGA验证平台实现的密码算法。
进一步,所述FPGA验证平台包括FPGA、MCU及周边配套器件,FPGA芯片与MCU之间经总线连接,密码协处理器在FPGA验证平台实现时,MCU控制数据的读写操作。
步骤四中所述计算结果以.dat文件保存,以此文件格式保存的内容更容易被软件进行读取。
进一步,所述的FPGA验证平台与PC端经USB连接线进行连接。两者经过USB连接线传输输入值、运算中间结果及输出结果,并通过上位机软件进行保存生成文件用来查看与对比。
本发明克服了背景技术中所存在的缺陷,本发明具有以下有益效果:
(1)通过随机源模块产生随机数作为实现密码算法的输入数据,避免传统验证方法中人工操作生成随机数作为输入的繁琐;
(2)密码协处理器核心算法由PC端的软件程序和FPGA硬件电路平台分别实现并计算,最后将输出结果进行比对,达到仿真验证的目的。
(3)通过设置好所需的验证次数,在循环运行过程中无需人工干预,直到报错或仿真完成并解决了传统验证算法中计算次数太少的弊端。
(4)本发明通过对待验证密码算法进行不同的实现方式,可以更好的检验密码算法的正确性,同时将仿真验证的时间大大缩短提高了验证效率。
附图说明
下面结合附图和实施例对本发明进一步说明;
图1是本发明所采用仿真验证系统连接示意图;
图2是本发明流程图;
图中:FPGA验证平台1-1;FPGA芯片1-2;MCU芯片1-3;PC机1-4;总线1-5;USB连接线1-6。
具体实施方式
现在结合附图和实施例对本发明作进一步详细的说明,这些附图均为简化的示意图,仅以示意方式说明本明所采用的基本结构,因此其仅显示与本发明有关的构成。
如图1所示,基于FPGA的密码协处理器全自动仿真验证方法采用的仿真验证系统包括FPGA验证平台1-1和PC机1-4,所述FPGA验证平台1-1包括FPGA芯片1-2、MCU芯片1-3及周边配套器件,FPGA芯片1-2与MCU芯片1-3之间经总线1-5连接,密码协处理器在FPGA验证平台1-1实现时,MCU芯片1-2控制数据的读写操作,PC机1-4运行实现待验证密码算法的软件程序。所述的FPGA验证平台1-1与PC机1-4经USB连接线1-6进行连接。两者经过USB连接线1-6传输输入值、运算中间结果及输出结果,并通过上位机软件进行保存生成文件用来查看与对比。
如图2所示,一种基于FPGA的密码协处理器全自动仿真验证方法,包括如下步骤:
步骤一、随机源模块随机生成用于密码协处理器实现密码算法的输入数据,采用十六进制数保存为随机数文件;
步骤二、将密码协处理器加载至FPGA验证平台并在PC端加载实现待验证密码算法的软件程序;所述的密码协处理器以RTL(Register Transfer Level)电路或网表的原始形式存在,密码协处理器中的密码算法包括所有可能在FPGA验证平台实现的密码算法;
所述FPGA验证平台包括FPGA、MCU及周边配套器件,密码协处理器在FPGA验证平台实现时,MCU控制数据的读写操作。
步骤三、FPGA验证平台读取随机数文件作为待验证密码算法的输入,PC端读取随机数文件作为待验证算法的输入并在PC端运行实现待验证密码算法的软件程序;
步骤四、对比FPGA验证平台和PC端的计算结果,所述计算结果以.dat文件保存。若相同,则进入步骤五;若不同,则进入步骤八;所述密码协处理器的加载到FPGA验证平台实现以及由软件实现时,两种实现算法的方法是不相同的,但得到的最后结果应为一致,这样才能验证硬件电路实现的正确性。
步骤五、验证次数累加一次,判断是否到达所设置的验证次数,若是,则进入步骤六;若否,则进入步骤七;
步骤六、输出计算结果并进入步骤九;
步骤七、转至步骤一;
步骤八、输出错误位置及结果并进入步骤九;在软件及FPGA测试激励文件中,会随时输出运算中间结果及运算步骤,当出现错误时,根据输出的运算中间结果和步骤可定位错误位置。
步骤九、自动仿真完成。
上述方法通过预先生成的随机数作为输入,密码协处理器核心算法由PC端的软件程序和FPGA硬件电路平台分别实现并计算,最后将输出结果进行比对,达到仿真验证的目的。通过设置好所需的验证次数,在循环运行过程中无需人工干预,直到报错或仿真完成。本发明通过对待验证密码算法进行不同的实现方式,可以更好的检验密码算法的正确性,同时将仿真验证的时间大大缩短。
以上依据本发明的理想实施例为启示,通过上述的说明内容,相关人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求范围来确定技术性范围。