CN103455766A - 一种基于状态机的国密sm1算法控制方法 - Google Patents
一种基于状态机的国密sm1算法控制方法 Download PDFInfo
- Publication number
- CN103455766A CN103455766A CN2013104270471A CN201310427047A CN103455766A CN 103455766 A CN103455766 A CN 103455766A CN 2013104270471 A CN2013104270471 A CN 2013104270471A CN 201310427047 A CN201310427047 A CN 201310427047A CN 103455766 A CN103455766 A CN 103455766A
- Authority
- CN
- China
- Prior art keywords
- state
- data
- cryptographic algorithm
- programmable gate
- gate array
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明涉及信息安全技术领域,具体是提供一种专用密码算法,特别涉及一种基于状态机的国密SM1算法控制方法。本发明是利用了FPGA和专用密码算法芯片,通过硬件描述语言VHDL设计出高效的状态机,本发明采用现场可编程门阵列芯片与专用密码算法芯片的硬件方式实现了SM1对称密码算法,因此加解密的速度更快,效率更高。
Description
技术领域
本发明涉及信息安全技术领域,具体是提供一种专用密码算法,特别涉及一种基于状态机的国密SM1算法控制方法。
背景技术
密码学是研究密码系统、通信安全等领域的学科,密码技术是实现网络信息安全的核心技术,是保护数据最重要的工具之一。采用密码技术可以隐藏和保护需要保密的消息,使未授权者不能提取信息。当前信息安全的主流技术和理论都是基于现代密码学的,因此密码学在网络信息安全中具有举足轻重的作用。
传统的加密工作是通过在主机上运行加密软件实现的。这种方法除占用主机资源外,运算速度较慢,安全性也较差。而硬件加密是通过专用加密芯片、FPGA(现场可编程门阵列)芯片或独立的处理芯片等实现密码运算。相对于软件加密,硬件加密具有加密速度快、占用计算机资源少、安全性高等优点。
发明内容
为了解决现有技术的问题,本发明提供了一种基于状态机的国密SM1算法控制方法,其采用现场可编程门阵列芯片与专用密码算法芯片的硬件方式实现了SM1对称密码算法,因此加解密的速度更快,效率更高。
本发明所采用的技术方案如下:
一种基于状态机的国密SM1算法控制方法,是一种利用现场可编程门阵列状态机和SSX30标准分组密码算法芯片实现对国密SM1对称密码算法的控制的方法。
方法采用了现场可编程门阵列芯片的硬件描述语言VHDL,设计出了一种算法状态机,用于对密码算法芯片的控制。
方法具体包括以下步骤:
A、命令复位,现场可编程门阵列状态机向SSX30标准分组密码算法芯片的主总线端口0做写操作,对SSX30标准分组密码算法芯片复位;
B、写命令,现场可编程门阵列状态机向SSX30标准分组密码算法芯片的主总线端口5写入命令操作码0x80,选择组包的工作方式;
C、现场可编程门阵列状态机检测SSX30标准分组密码算法芯片的输出引脚In_full是否为高电平,In_full为高电平表示输入FIFO不满,现场可编程门阵列状态机进入写数据的操作,如果In_full为低电平说明输入FIFO已满,现场可编程门阵列状态机需要等待In_full变为高电平才能进行下一步操作;
D、写数据,现场可编程门阵列状态机向主总线的端口写入一个32bit的数据,之后只要In_full为高电平,现场可编程门阵列状态机向SSX30标准分组密码算法芯片写完所有需要待运算的数据;
E、读数据,只要“输出FIFO不空”状态有效,即现场可编程门阵列状态机检测到SSX30标准分组密码算法芯片的输出引脚Out_nempty为低电平,就可以从副总线的端口读出一个32bit的运算结果,之后只要Out_nempty为低电平,现场可编程门阵列状态机就可以连续读出数据,直到读取所有的运算结果。
步骤B中组包的工作方式是将密钥、命令、数据长度和数据统一打包,用写数据操作将其写入端口,芯片自动地将包中的密钥、命令、长度和数据送入相应的寄存器并运算,用读数据操作将运算结果从另一个端口读出。
包以128bit为一个分组顺序排列,第一个分组是包头分组,包括:
包间隙码,32比特,其值为FF00FF00(十六进制),连续2个;
运算命令,32比特,其第3-0位为操作命令;
数据长度,32比特,其中第15-0位有效,其他位必须为0;每个包的数据分组个数最小为1,双总线方式最大可达65535个;
包的第2个分组为128比特零,第3个分组是密钥;自包的第4个分组开始是待加解密的数据分组。
本发明提供的技术方案带来的有益效果是:
本发明主要用于对网络、金融、电信等系统中重要数据的加密和解密,保障交易的安全。核心是利用了FPGA和专用密码算法芯片,通过硬件描述语言VHDL设计出高效的状态机,从而使得信息的加解密过程变的快速。
附图说明
图1为本发明的一种基于状态机的国密SM1算法控制方法的硬件连接状态示意图;
图2为本发明的一种基于状态机的国密SM1算法控制方法的方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
本发明的一种基于状态机的国密SM1算法控制方法,其选用现场可编程门阵列芯片和SSX30-D芯片作为硬件组成:
1、现场可编程门阵列芯片:选用美国Altera公司CycloneIII系列的EP3C25F256C8器件,该芯片总引脚数256,其中I/O引脚为156,RAM总量为78KB,逻辑单元(LE)24624个,其硬件资源可以满足设计的要求。FPGA是硬件控制单元,通过VHDL程序设计出高效的状态机对SSX30-D芯片进行控制;
2、SSX30-D芯片:SSX30-D芯片为高性能分组密码算法芯片,实现SM1对称密码算法。该分组密码算法的分组长度为128比特,密钥长度为128比特。该芯片具有电子密本模式(ECB)、分组连接模式(CBC)以及单总线、双总线两种工作方式。芯片内置8KB先入先出队列(FIFO),其中4KB输入FIFO和4KB输出FIFO,可各缓冲存储256个分组的数据,内部具有高速流水线,使数据输入、运算、数据输出并行进行,在ECB双总线工作方式下加解密速率最高可达1.4Gbps;
3、状态机电路是一种重要的数字逻辑电路,同时又属于时序逻辑电路的范畴,通常用来描述数字系统的控制单元,是大型控制电路设计的基础。根据其输出与当前输入是否有关可以把状态机分为Mealy型和Moore型两大类。Moore型输出仅是当前状态的函数,Mealy型不仅输出当前状态的函数,而且还与输入信号有关。本发明采用的是Mealy型状态机。
附图1是现场可编程门阵列芯片与SSX30-D芯片的硬件连接,SSX30-D芯片的地址线、数据线、控制线都连接到FPGA的IO引脚。SSX30-D芯片各引脚的功能如下:
HD[31..0]:主数据总线,双总线方式时仅为数据输入总线,HCS信号无效时,为高阻。
HA[2..0]:主地址总线。
HCS:主总线片选,低电平有效。
HRD:主总线读,低电平有效。
HWR:主总线写,低电平有效。
AD[31..0]:副数据总线,仅为数据输出总线。
AA[1..0]:副地址总线。
ACS:副总线片选,低电平有效。
ARD:副总线读,低电平有效。
RST:硬件复位输入,低电平有效。
BTS:工作方式选择,低电平选择双总线方式,高电平选择单总线方式。
CLK:外部时钟输入,时钟频率为20MHz。
In_full:输入FIFO满,低电平有效。
Out_nempty:输出FIFO不空,低电平有效。
Busy:芯片忙,高电平有效。
Clkout:时钟输出端。
附图2是FPGA状态机的控制流程图,为了提高数据加解密速率,本发明采用了SSX30-D芯片的双总线和组包工作方式。
工作流程详解如下:
1. 命令复位,FPGA向SSX30-D的主总线端口0做写操作,对SSX30-D复位;
2. 写命令,FPGA向SSX30-D的主总线端口5写入命令操作码0x80,选择组包的工作方式。组包方式是将密钥、命令、数据长度和数据统一打包,用写数据操作将其写入端口7,芯片自动地将包中的密钥、命令、长度和数据送入相应的寄存器并运算,用读数据操作将运算结果从端口2读出;
3. FPGA检测SSX30-D的输出引脚In_full是否为高电平,In_full为高电平表示输入FIFO不满,FPGA进入写数据的操作,如果In_full为低电平说明输入FIFO已满,FPGA需要等待In_full变为高电平才能进行下一步操作;
4. 写数据,FPGA向主总线的端口7写入一个32bit的数据,之后只要In_full为高电平,FPGA向SSX30-D写完所有需要待运算的数据。包以128bit为一个分组顺序排列,第一个分组是包头分组,包括:
包间隙码,32比特,其值为FF00FF00(十六进制),连续2个;
运算命令,32比特,其第3-0位为操作命令;
数据长度,32比特,其中第15-0位有效,其他位必须为0。每个包的数据分组个数最小为1,双总线方式最大可达65535个;
包的第2个分组为128比特零,第3个分组是密钥。自包的第4个分组开始是待加解密的数据分组;
5. 读数据,只要“输出FIFO不空”状态有效,即FPGA检测到SSX30-D的输出引脚Out_nempty为低电平,就可以从副总线的端口2读出一个32bit的运算结果,之后只要Out_nempty为低电平,FPGA就可以连续读出数据,直到读取所有的运算结果。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种基于状态机的国密SM1算法控制方法,是一种利用现场可编程门阵列状态机和SSX30标准分组密码算法芯片实现对国密SM1对称密码算法的控制的方法。
2.根据权利要求1所述的一种基于状态机的国密SM1算法控制方法,其特征在于,其方法采用了现场可编程门阵列芯片的硬件描述语言VHDL,设计出了一种算法状态机,用于对密码算法芯片的控制。
3.根据权利要求1或2所述的一种基于状态机的国密SM1算法控制方法,其特征在于,所述方法具体包括以下步骤:
A、命令复位,现场可编程门阵列状态机向SSX30标准分组密码算法芯片的主总线端口0做写操作,对SSX30标准分组密码算法芯片复位;
B、写命令,现场可编程门阵列状态机向SSX30标准分组密码算法芯片的主总线端口5写入命令操作码0x80,选择组包的工作方式;
C、现场可编程门阵列状态机检测SSX30标准分组密码算法芯片的输出引脚In_full是否为高电平,In_full为高电平表示输入FIFO不满,现场可编程门阵列状态机进入写数据的操作,如果In_full为低电平说明输入FIFO已满,现场可编程门阵列状态机需要等待In_full变为高电平才能进行下一步操作;
D、写数据,现场可编程门阵列状态机向主总线的端口写入一个32bit的数据,之后只要In_full为高电平,现场可编程门阵列状态机向SSX30标准分组密码算法芯片写完所有需要待运算的数据;
E、读数据,只要“输出FIFO不空”状态有效,即现场可编程门阵列状态机检测到SSX30标准分组密码算法芯片的输出引脚Out_nempty为低电平,就可以从副总线的端口读出一个32bit的运算结果,之后只要Out_nempty为低电平,现场可编程门阵列状态机就可以连续读出数据,直到读取所有的运算结果。
4.根据权利要求3所述的一种基于状态机的国密SM1算法控制方法,其特征在于,所述步骤B中组包的工作方式是将密钥、命令、数据长度和数据统一打包,用写数据操作将其写入端口,芯片自动地将包中的密钥、命令、长度和数据送入相应的寄存器并运算,用读数据操作将运算结果从另一个端口读出。
5.根据权利要求3或4所述的一种基于状态机的国密SM1算法控制方法,其特征在于,所述包以128bit为一个分组顺序排列,第一个分组是包头分组,包括:
包间隙码,32比特,其值为FF00FF00(十六进制),连续2个;
运算命令,32比特,其第3-0位为操作命令;
数据长度,32比特,其中第15-0位有效,其他位必须为0;每个包的数据分组个数最小为1,双总线方式最大可达65535个;
包的第2个分组为128比特零,第3个分组是密钥;自包的第4个分组开始是待加解密的数据分组。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013104270471A CN103455766A (zh) | 2013-09-18 | 2013-09-18 | 一种基于状态机的国密sm1算法控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013104270471A CN103455766A (zh) | 2013-09-18 | 2013-09-18 | 一种基于状态机的国密sm1算法控制方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103455766A true CN103455766A (zh) | 2013-12-18 |
Family
ID=49738114
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013104270471A Pending CN103455766A (zh) | 2013-09-18 | 2013-09-18 | 一种基于状态机的国密sm1算法控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103455766A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103746797A (zh) * | 2014-01-22 | 2014-04-23 | 浪潮电子信息产业股份有限公司 | 一种基于现场可编程门阵列芯片的rsa算法控制方法 |
CN103780608A (zh) * | 2014-01-14 | 2014-05-07 | 浪潮电子信息产业股份有限公司 | 一种基于可编程门阵列芯片的sm4算法控制方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110066A (zh) * | 2011-02-09 | 2011-06-29 | 浪潮电子信息产业股份有限公司 | 一种税控加密卡的控制方法 |
CN103124256A (zh) * | 2011-11-21 | 2013-05-29 | 国民技术股份有限公司 | 可信密码模块及可信计算方法 |
CN103237021A (zh) * | 2013-04-08 | 2013-08-07 | 浪潮集团有限公司 | 一种基于fpga芯片的pci-e的高速密码卡 |
-
2013
- 2013-09-18 CN CN2013104270471A patent/CN103455766A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110066A (zh) * | 2011-02-09 | 2011-06-29 | 浪潮电子信息产业股份有限公司 | 一种税控加密卡的控制方法 |
CN103124256A (zh) * | 2011-11-21 | 2013-05-29 | 国民技术股份有限公司 | 可信密码模块及可信计算方法 |
CN103237021A (zh) * | 2013-04-08 | 2013-08-07 | 浪潮集团有限公司 | 一种基于fpga芯片的pci-e的高速密码卡 |
Non-Patent Citations (2)
Title |
---|
彭阳等: "基于FPGA的高速加密卡设计与实现", 《电子.电路》 * |
苏振宇: "基于FPGA和DSP的PCI-E高速密码卡设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103780608A (zh) * | 2014-01-14 | 2014-05-07 | 浪潮电子信息产业股份有限公司 | 一种基于可编程门阵列芯片的sm4算法控制方法 |
CN103746797A (zh) * | 2014-01-22 | 2014-04-23 | 浪潮电子信息产业股份有限公司 | 一种基于现场可编程门阵列芯片的rsa算法控制方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101854353B (zh) | 一种基于fpga的多芯片并行加密方法 | |
CN102073808B (zh) | 一种通过sata接口加密存储的方法和加密卡 | |
CN115549911B (zh) | 一种加解密系统、方法、处理器和服务器 | |
CN103973432A (zh) | 一种基于fpga和usb接口芯片的sm4算法加密设备 | |
CN102737270B (zh) | 一种基于国产算法的银行智能卡芯片安全协处理器 | |
CN108898033A (zh) | 一种基于fpga的数据加解密系统 | |
US11429751B2 (en) | Method and apparatus for encrypting and decrypting data on an integrated circuit | |
CN102096783B (zh) | 一种基于fpga的税控专用算法加密卡 | |
CN103345453A (zh) | 支持sata接口的硬盘数据加密卡及加解密方法 | |
CN103780608A (zh) | 一种基于可编程门阵列芯片的sm4算法控制方法 | |
CN106991061A (zh) | 一种sata硬盘密码模块及其工作方法 | |
CN103346878B (zh) | 一种基于fpga高速串行io的保密通信方法 | |
CN102882856A (zh) | 一种基于SoC的终端密码装置 | |
CN109379177A (zh) | 一种同态密文计算加速逻辑系统及实现方法 | |
CN103746796A (zh) | 一种实现智能卡sm4密码算法的协处理器 | |
CN103336920B (zh) | 用于无线传感网络soc芯片的安全系统 | |
CN105939190A (zh) | 基于fpga的离线生成密钥的aes数据加密方法 | |
CN115022076A (zh) | 一种数据加/解密方法、装置、系统及介质 | |
CN203930840U (zh) | 一种硬件加密卡 | |
CN114401081A (zh) | 数据加密传输方法、应用及系统 | |
CN103455766A (zh) | 一种基于状态机的国密sm1算法控制方法 | |
CN106548099A (zh) | 一种电路系统安全保护的芯片 | |
CN203057169U (zh) | 基于fpga的网络密码机 | |
CN102567689A (zh) | 基于相变存储器的非易失内存数据机密性保护方法 | |
CN102110066B (zh) | 一种税控加密卡的控制方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20131218 |