一种基于ZYNQ的小型密码机及数据加密方法
技术领域
本发明涉及信息安全技术领域,尤其涉及一种基于ZYNQ的小型密码机及数据加密方法。
背景技术
近年来,随着网络和计算机技术的迅猛发展,整个世界已经进入了互联网时代,互联网的方便快捷、跨越时空的特性给人类社会带来巨大的改变,影响到社会的各个方面。
人们开始利用这一便捷的基础设施改变传统商务活动和办公模式,进行电子商务、电子政务、网络办公。当前,B2C、B2B等电子商务活动已经相当普及,电子报税、网上审批等电子政务平台建设发展得如火如荼,互联网成为企事业单位远程办公的理想平台。互联网终端也从电脑扩展到手机、平板等移动设备,并有向智能家居设备扩展的趋势。
然而,由于互联网设计的开放性,导致互联网用户面临诸多方面的安全威胁:身份认证机制较弱,合法用户容易被假冒,无法控制资源的访问;攻击者可以在线路上窃听数据,甚至篡改数据后重新发布到网络上。另外网络应用还面临拒绝服务,线路窃听、破坏数据完整性、机密性等方面的攻击。这些安全问题已经逐渐成为影响网络应用进一步发展的瓶颈。
为了解决这些问题,业界开发了各种网络安全技术,以应对各种网络安全威胁。如PKI(公钥基础设施),数据加密、数字签名,虚拟专用网络(VPN)等技术和产品可以有效的解决远程身份认证和数据保密问题。
对于一些关键行业,国家是不允许使用国外产品的。但是国内的产品,在性能、功能完备性、产品成熟度等方面还有不少差距,使得安全产品的应用有诸多不便,其主要体现在两个方面:
一,在高性能产品方面,国产密码产品主要为主机加密服务器,存在性能相对较低、价格高等缺点。以过去常用的1024位RSA算法为例,美国的Cavium公司研发的芯片签名速度可以达到每秒200000次,而我国最快的芯片只有每秒6000次;国外用于网络通信的安全芯片,可以把网络协议(IPSEC,SSL)和密码算法结合在一起,而国内只有单纯实现密码算法的芯片。
二,在小型化设备方面,国内密码产品主要以智能密码钥匙(KEY)为主,性能非常低,仅适合个人应用场合。
本发明针对小型化密码设备,提出一种以ZYNQ为核心的小型加密设备。
发明内容
本发明所要解决的技术问题是针对现有技术的不足,提供一种基于ZYNQ的小型密码机及数据加密方法。
本发明解决上述技术问题的技术方案如下:
一种基于ZYNQ的小型密码机,包括ZYNQ主处理器、专用处理器和密钥存储器,所述ZYNQ主处理器包括ARM处理器和FPGA,所述ARM处理器与FPGA通过片内高速总线连接,所述FPGA与专用处理器通过总线复用连接,所述专用处理器与密钥存储器连接;所述ARM处理器,其运行嵌入式Linux系统进行业务的调度和管理,用于根据接收到的业务请求包进行相应运算,并将经运算的业务请求包发送给FPGA;所述FPGA,用于根据业务请求包向专用处理器进行密钥权限验证,当验证通过时通过预定加密算法对业务数据进行加密处理,将加密处理的业务数据通过ARM处理器返回给请求方;所述专用处理器,用于实现信息密钥的管理和权限控制,根据业务请求包进行权限验证;所述密钥存储器,用于以密文形式存储密钥。
本发明的有益效果是:本发明采用ZYNQ可编程器件,ARM处理器通过内部高速总线与FPGA间进行数据的传输,提高了数据传输效率,降低了系统的复杂度,降低了系统成本;同时由于采用了高速总线互联、千兆以太网接口,提升了数据传输性能;采用FPGA实现算法运算,极大的提高了算法性能,因此系统整体性能也获得了极大的提升;采用了专用的处理器进行密钥的管理和权限的控制,使得密钥不会在Linux系统中出现,真正做到了物理隔绝,同时密钥存储以密文形式存储,保护了密钥的安全,进而保护了整个系统的安全。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述ARM处理器当收到业务请求包时,运行于Linux上的应用程序对业务请求包进行解析,将业务数据和相应的命令码按照约定好的顺序进行组合,发送至FPGA,数据传输完成后向FPGA内部寄存器写入完成标识;ARM处理器在收到FPGA发送的中断后读取FPGA内的运算结果,组织数据,将结果返回给请求方。
进一步,所述FPGA其内部例化一个双口RAM,第一接口通过片内高速总线与ARM处理器互联,第二接口和专用处理器互联;当逻辑检测到内部寄存器被ARM处理器写入完成标识后,发送中断给专用处理器,表明FPGA内部有待处理数据,请求相应的权限进行操作,当接收到专用处理器反馈的权限验证通过时,调用相应的算法进行运算,将运算结果写入到双口RAM中,产生中断通知ARM处理器已经完成运算。
采用上述进一步方案的有益效果是:由于采用了高速总线互联提升了数据传输效率和数据传输性能。
进一步,所述专用处理器接收到FPGA发送的中断后读取FPGA内双口RAM的数据,根据相应的命令码判断是否为合法数据,是否有权限进行运算,如果为合法数据且有权限则通知FPGA启动算法运算,否则返回错误码。
进一步,上述技术方案还包括算法专用芯片,所述FPGA的第二接口通过总线复用与算法专用芯片和专用处理器互联,所述算法专用芯片和专用处理器均可通过复用总线对FPGA的双口RAM进行数据读写,所述算法专用芯片实现SM1加密算法,并与FPGA中的加密算法配合对业务数据进行加密。
采用上述进一步方案的有益效果是:SM1算法采用专用算法芯片,其他算法均采用FPGA实现,既提高了芯片的利用率,又能简化板卡设计,降低成本;同时FPGA通过总线复用与算法专用芯片和专用处理器互联,实现了完全双工的数据传输模式。
进一步,上述技术方案还包括外设模块,其与ARM处理器和FPGA连接,所述ARM处理器对外设模块进行管理,所述外设模块包括千兆以太网接口、USB OTG接口、实时时钟、随机数发生器、管理串口和存储设备,所述外设模块的千兆以太网接口用于接收业务请求包发送给RAM处理器,还用于将响应数据包发送给请求方。
采用上述进一步方案的有益效果是:接口方面,实现了千兆以太网接口,用于加密网络数据;集成了USB OTG接口,既可以连接USB KEY或智能卡,进行密钥的备份恢复,也可以接驳USB存储设备,扩展存储空间;另外还有管理串口、板载存储设备等,构成功能完备的加密设备。
一种数据加密方法,包括如下步骤:
步骤1,ARM处理器运行嵌入式Linux系统进行业务的调度和管理,根据接收到的业务请求包进行相应运算,并将经运算的业务请求包发送给FPGA;
步骤2,FPGA根据业务请求包向专用处理器进行密钥权限验证,专用处理器根据业务请求包的内容进行权限验证,验证通过向FPGA反馈验证信息;
步骤3,FPGA当验证通过时通过预定加密算法对业务数据进行加密处理,ARM处理器将加密处理的业务数据返回给请求方。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述步骤1的具体实现步骤如下:
所述ARM处理器当收到业务请求包时,运行于Linux上的应用程序对业务请求包进行解析,将业务数据和相应的命令码按照约定好的顺序进行组合,发送至FPGA,数据传输完成后向FPGA内部寄存器写入完成标识。
进一步,所述步骤2的具体实现步骤如下:
FPGA检测到内部寄存器被ARM处理器写入完成标识后,发送中断给专用处理器,表明FPGA内部有待处理数据,请求相应的权限进行操作;专用处理器接收到FPGA发送的中断后读取FPGA内双口RAM的数据,根据相应的命令码判断是否为合法数据,是否有权限进行运算,如果为合法数据且有权限则通知FPGA启动算法运算,否则返回错误码,结束处理流程。
进一步,所述步骤3的具体实现步骤如下:
FPGA接收到处理器反馈的权限验证通过时,调用相应的算法进行运算,将运算结果写入到双口RAM中,产生中断通知ARM处理器已经完成运算,ARM处理器在收到FPGA发送的中断后读取FPGA内的运算结果,组织数据,将结果返回给请求方。
附图说明
图1为本发明实施例所述一种基于ZYNQ的小型密码机结构示意图;
图2为本发明实施例所述一种数据加密方法流程图。
附图中,各标号所代表的部件列表如下:
1、ZYNQ主处理器,2、ARM处理器,3、FPGA,4、专用处理器,5、密钥存储器,6、算法专用芯片,7、外设模块。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,一种基于ZYNQ的小型密码机,包括ZYNQ主处理器1、专用处理器4和密钥存储器5,所述ZYNQ主处理器1包括ARM处理器2和FPGA3,所述ARM处理器2与FPGA3通过片内高速总线连接,所述FPGA3与专用处理器4通过总线复用连接,所述专用处理器4与密钥存储器5连接;所述ARM处理器2,其运行嵌入式Linux系统进行业务的调度和管理,用于根据接收到的业务请求包进行相应运算,并将经运算的业务请求包发送给FPGA;所述FPGA3,用于根据业务请求包向专用处理器4进行密钥权限验证,当验证通过时通过预定加密算法对业务数据进行加密处理,将加密处理的业务数据通过ARM处理器2返回给请求方;所述专用处理器4,用于实现信息密钥的管理和权限控制,根据业务请求包进行权限验证;所述密钥存储器5,用于以密文形式存储密钥。
所述ARM处理器2当收到业务请求包时,运行于Linux上的应用程序对业务请求包进行解析,将业务数据和相应的命令码按照约定好的顺序进行组合,发送至FPGA,数据传输完成后向FPGA内部寄存器写入完成标识;ARM处理器2在收到FPGA发送的中断后读取FPGA内的运算结果,组织数据,将结果返回给请求方。
所述FPGA3其内部例化一个双口RAM,第一接口通过片内高速总线与ARM处理器2互联,第二接口专用处理器4互联,当逻辑检测到内部寄存器被ARM处理器写入完成标识后,发送中断给专用处理器4,表明FPGA内部有待处理数据,请求相应的权限进行操作,当接收到专用处理器4反馈的权限验证通过时,调用相应的算法进行运算,将运算结果写入到双口RAM中,产生中断通知ARM处理器已经完成运算。
所述专用处理器4接收到FPGA发送的中断后读取FPGA内双口RAM的数据,根据相应的命令码判断是否为合法数据,是否有权限进行运算,如果为合法数据且有权限则通知FPGA启动算法运算,否则返回错误码。
在上述技术方案的基础上还包括算法专用芯片6,所述FPGA3的第二接口通过总线复用与算法专用芯片6和专用处理器4互联,所述算法专用芯片6和专用处理器4均可通过复用总线对FPGA的双口RAM进行数据读写,所述算法专用芯片6实现SM1加密算法,并与FPGA中的加密算法配合对业务数据进行加密。
在上述方案的基础上还可以包括外设模块7,其与ARM处理器2和FPGA3连接,所述ARM处理器2对外设模块7进行管理,所述外设模块包括千兆以太网接口、USB OTG接口、实时时钟、随机数发生器、管理串口和存储设备,所述外设模块的千兆以太网接口用于接收业务请求包发送给RAM处理器,还用于将响应数据包发送给请求方。
一种数据加密方法,包括如下步骤:
步骤1,ARM处理器运行嵌入式Linux系统进行业务的调度和管理,根据接收到的业务请求包进行相应运算,并将经运算的业务请求包发送给FPGA;
步骤2,FPGA根据业务请求包向专用处理器进行密钥权限验证,专用处理器根据业务请求包的内容进行权限验证,验证通过向FPGA反馈验证信息;
步骤3,FPGA当验证通过时通过预定加密算法对业务数据进行加密处理,ARM处理器将加密处理的业务数据返回给请求方。
具体地,所述步骤1的具体实现步骤如下:
所述ARM处理器当收到业务请求包时,运行于Linux上的应用程序对业务请求包进行解析,将业务数据和相应的命令码按照约定好的顺序进行组合,发送至FPGA,数据传输完成后向FPGA内部寄存器写入完成标识。
所述步骤2的具体实现步骤如下:
FPGA检测到内部寄存器被ARM处理器写入完成标识后,发送中断给专用处理器,表明FPGA内部有待处理数据,请求相应的权限进行操作;专用处理器接收到FPGA发送的中断后读取FPGA内双口RAM的数据,根据相应的命令码判断是否为合法数据,是否有权限进行运算,如果为合法数据且有权限则通知FPGA启动算法运算,否则返回错误码,结束处理流程。
所述步骤3的具体实现步骤如下:
FPGA接收到处理器反馈的权限验证通过时,调用相应的算法进行运算,将运算结果写入到双口RAM中,产生中断通知ARM处理器已经完成运算,ARM处理器在收到FPGA发送的中断后读取FPGA内的运算结果,组织数据,将结果返回给请求方。
本发明所述密码机采用ZYNQ可编程器件中的ARM处理器运行嵌入式Linux系统,上层应用进行业务数据的处理;采用ZYNQ可编程器件中的FPGA实现各种不同的国密算法;采用专用处理器进行密钥的管理和权限控制;板上提供千兆以太网、USB接口、串口、DDR等板载资源,可实现一个完整的密码机功能。相对于普通加密机具有硬件系统简单、成本和功耗低、高性能等优点。
本发明采用ZYNQ内部集成的ARM处理器进行业务的调度和管理,运行嵌入式Linux系统,管理以太网接口、USB OTG接口、实时时钟、随机数发生器、管理串口和存储设备等外设,运行上层应用程序,接收以太网业务数据包,并根据数据包内容进行相应的算法运算。
本发明在ZYNQ内部集成的FPGA内部例化双口RAM,ARM处理器通过内部AXI高速总线对双口RAM进行数据的读写,专用处理器及算法专用芯片通过总线复用方式对双口RAM的另一个接口进行读写,实现了完全双工的数据传输模式。
本发明采用专用的处理器进行密钥的管理和权限的控制,使得密钥不会在Linux系统中出现,真正做到了物理隔绝,同时密钥存储以密文形式存储,保护了密钥的安全,进而保护了整个系统的安全。
本发明所述密码机,支持目前国内主流的国密算法如SM1、SM2、SM3、SM4等,符合国密局关于密码设备的各类标准。
本发明设计了一种基于Xilinx ZYNQ器件的设备。ZYNQ将ARM Cortex-A9处理器双核和FPGA集成到一个芯片中,ARM处理器的频率达到800MHz,处理能力达到2500MIPS。算法方面,SM1算法采用专用算法芯片,其他算法均采用FPGA实现,既提高了芯片的利用率,又能简化板卡设计,降低成本。接口方面,实现了千兆以太网接口,用于加密网络数据;集成了USB OTG接口,既可以连接USB KEY或智能卡,进行密钥的备份恢复,也可以接驳USB存储设备,扩展存储空间;另外还有管理串口、板载存储设备等。系统方面,采用嵌入式Linux,进行系统的调度和算法的管理。密钥管理方面,采用专用的处理器进行密钥的管理,确保密钥不出现在系统内存中,确保系统的安全性。
综上,本发明是一种功能齐全的加密设备,既可以用于普通的加密行业,也可以作为小型化的VPN来使用。
图1为本发明硬件实现框图。其中:1为ZYNQ核心主处理器,负责业务的调度,ZYNQ包括两个部分,一个是ARM处理器2,运行linux系统,另一个为FPGA3逻辑,实现国密算法;4为专用处理器,负责密钥管理和访问控制;5为密钥存储器;6为SM1算法专用芯片;7为外设部分,包括千兆以太网、USB接口、串口、实时时钟、DDR、随机数发生器等。
本发明主要由ARM业务处理系统、专用处理器管理系统和FPGA算法运算系统三部分组成,三部分相互协调,共同工作,完成业务处理过程。具体实施方案如下:
首先,ARM系统负责业务的处理,运行嵌入式Linux系统,管理串口、以太网、USB等接口,与FPGA部分通过片内高速总线进行互联。当通过以太网接收到业务请求包,运行于Linux上的应用程序对业务进行解析,将业务数据和相应的命令码按照约定好的顺序进行组合,通过片内总线将数据高速传输至FPGA内,数据传输完成后向FPGA内部寄存器写入完成标识。
FPGA在内部例化一个双口RAM,双口RAM的第一接口通过片内总线与ARM部分进行互联,第二接口通过总线复用与算法专用芯片和专用处理器部分进行互联,算法专用芯片和专用处理器均可通过总线对双口RAM进行数据的读写。当FPGA逻辑检测到内部寄存器被ARM写入了完成表实后,并发送中断给专用处理器,表明FPGA内部已有待处理数据,请求相应的权限进行操作。
当专用处理器收到中断后读取FPGA内双口RAM的数据,并根据相应的命令码进行判断是否为合法数据,是否有权限进行运算,没有权限或不合法数据会返回错误码,合法数据并有权限则通知FPGA启动算法运算。
当FPGA收到算法启动标识后启动相应的算法进行运算,并将运算结果写入到双口RAM中,并产生中断通知ARM已经完成运算。
最后,ARM收到中断后读取双口RAM中的运算结果,并组织数据,将结果通过以太网返回。
以上实施过程在实际板卡上进行了验证,并取得成功。本发明采用了ZYNQ可编程器件,通过内部高速总线与FPGA间进行数据的传输,提高了数据传输效率,降低了系统的复杂度,降低了系统成本;同时由于采用了高速总线互联、千兆以太网接口,提升了数据传输性能;采用FPGA实现算法运算,对关键算法采用流水线及并行模式运算,极大的提高了算法性能,因此系统整体性能也获得了极大的提升。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。