CN101170406A - 双核公钥密码算法运算协处理器的一种实现方法 - Google Patents
双核公钥密码算法运算协处理器的一种实现方法 Download PDFInfo
- Publication number
- CN101170406A CN101170406A CNA2006101140955A CN200610114095A CN101170406A CN 101170406 A CN101170406 A CN 101170406A CN A2006101140955 A CNA2006101140955 A CN A2006101140955A CN 200610114095 A CN200610114095 A CN 200610114095A CN 101170406 A CN101170406 A CN 101170406A
- Authority
- CN
- China
- Prior art keywords
- module
- computing
- coprocessor
- ram
- algorithm
- 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.)
- Granted
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
本发明提供一种双核公钥密码算法协处理器的实现方法,能够很好的解决由于运算中大数宽度过长导致的存储量过大问题。通过本发明描述的方式,只需增加必要的控制部分,并且不增加额外时间开销,就能达到在一定程度上节约面积资源,并提高后端版图布线利用率。同时双核运算模块的使用,大大提高了公钥密码运算效率。一位地址线的设计,不仅可适应在资源有限的情况下使用协处理器,还便于简化整个公钥密码算法流程的运算。在流程中协处理器的结果数据可以不从接口输出,只需根据算法需要直接参与下一个运算。实现该功能的部件是两个完全相同的运算模块和接口控制模块,每个运算模块包括:RAM模块、控制模块和算法模块。
Description
技术领域
本发明涉及信息安全密码领域,具体的说,涉及到公钥密码运算协处理器的硬件实现。主要针对RSA、ECC公钥密码算法中核心运算的硬件实现方法。
背景技术
随着计算机网络的普及,大量的电子数据通过网络传输到世界各地成为可能。但在具有重大的经济价值或关系国家、军队的命运等重要数据的传输过程中,任何一点泄露和差错都可能造成不可估量的损失。而密码技术则是信息安全的保障及核心技术。公钥密码算法大多基于数学难解问题,目前具有较高的安全性。其中ECC和RSA是已经成熟的公钥密码算法,使用也颇为广泛。
针对最常用的公钥密码算法RSA和ECC,基本运算分别如下:
RSA:
密钥对生成:随机大素数p和q,n=pq,φ(n)=(p-1)(q-1),随机选取整数e,满足gcd(e,φ(n))=1,计算d=e-1 modφ(n),密钥对(e,d);
加密:C=Me(mod n);
解密:M=Cd(mod n);
其中M是明文,待加密数据,C是密文,加密后数据,e是私钥,加密密钥,d是公钥,解密密钥,n是模数。
在加解密运算中,模幂运算由一系列模乘运算组成。此外,解密运算时可以使用中国剩余定理(CRT)使模幂运算大数的位数减少一半。
通常实现时,使用蒙哥马利(Montgomery)模乘算法,在运算过程中有大量大数需要存储,算法安全性依赖于大数的位数长度,一般都会选择512bit长度以上,存储量极大。关键运算为模乘。
ECC:
密钥对生成:选定椭圆曲线,基点G(Gx,Gy),阶为N;在[1,2,…,N-1]中任意选取随机数A作为私钥;点乘AG=P(Px,Py)为公钥。
加密(ECIES):取任意随机数K在[1,2,…,N-1]中,计算KG=H(Hx,Hy)、KP=Q(Qx,Qy)和C3=M xor Qx,C={Hx,Hy,C3}。其中M为明文,待加密数据。C为密文,加密后数据。点H、Q为椭圆曲线上的点。点G为基点,点P为公钥。随机整数A为私钥。
解密(ECIES):计算AH=I(Ix,Iy),M=C3 xor Ix。
可看出,ECC的核心运算是点乘运算。
通常实现时,使用一系列倍点和点加运算组成。基本运算由模乘、模加和模减构成。一般来说ECC没有亚指数攻击,所以它的密钥长度大大的减少,256bit即可满足一般要求。
基于如上分析,ECC和RSA公钥体制中兼容最基本运算模乘、模加和模减。而且RSA支持到位宽2048bit,ECC支持到位宽256bit.这样大数的存储和运算速度问题一直是硬件实现中的难点。
通常情况下,现有的实现一般都采用单核(即单个运算模块)和单RAM模块的技术,这样在速度和灵活性上无法得到突破性的提高。
发明内容
针对大数存储和运算速度难点,本发明提供一种公钥密码算法协处理器的实现方法,在协处理器中实现ECC和RSA的最基本运算模乘、取模、模加和模减。本发明能够在解决大数存储问题的基础上,同时节约面积资源,并且能够提高后端版图布线利用率。同时,双核运算模块的使用,大大提高了公钥密码运算效率。
本发明公开了一种硬件协处理器的实现方法:双核,是指协处理器中包含两个完全相同的运算模块,每个运算模块都有各自的RAM模块、算法模块和控制模块。这两个运算模块既可以独立地进行公钥算法的基本运算,也可以在控制模块的控制下协同运算,以满足不同公钥算法协议的要求。两个运算模块之间还可以实现内部相互交换数据,数据不需要读出即可以参加下一次运算,大大加快了运算速度。最典型的情况是:利用CRT(中国剩余定理)进行RSA解密运算时,可以利用两个运算模块同时进行模乘运算。
本发明还能够很好地解决在地址线资源有限的情况下灵活实现公钥核心运算的问题。实现该功能的部件是两个完全相同的运算模块和接口控制模块,每个运算模块包括:RAM模块、控制模块和算法模块。
1>多RAM模块,用于存储运算过程中的大数以及运算过程中数据的交互,还方便对不同地址进行同时读写。协处理器中使用一个双端口RAM和一个单端口RAM。双端口RAM用于协处理器与外部交换数据以及缓存运算中间结果,单端口RAM用于缓存运算过程中的部分中间结果以及最终结果。这种结构的好处是既可以避免大量寄存器堆砌造成的面积过大,也可以避免用两块双口RAM所造成的面积浪费,同时还可以提高后端的布线利用率。另外使用两个RAM比单独使用一个RAM速度上有一定的提高。
对RAM地址空间的读写控制可以在运算过程中并行实现,并不会增加额外的时间开销。
2>控制模块,主要包括接口控制、对RAM的读写控制、对专用寄存器的读写控制、握手信号的控制和算法模块的所有开关控制。
3>算法模块,包括模乘运算(最高支持2048bit)、模加运算(最高支持256bit)、模减运算(最高支持256bit)、取模运算(支持2048bit对1024bit取模和1024bit对512bit取模)。
在不同的应用中,资源的提供也不尽相同,本发明给出地址线只有1根的情况下方便灵活实现公钥密码基本运算。
一位地址线,在运算过程中标示两个地址:命令寄存器和数据寄存器。这样通过内部命令或者地址译码,进行相关操作或者将数据送到相应的RAM空间。在实现运算需要完整的指令集,包括七类:强制终止并复位指令、写参数指令、写数据指令、写命令指令、读参数指令、读数据指令和读命令指令。为保证协处理器的正常工作,操作流程包括:
1>输入写参数指令(地址线置0);
2>输入参数(地址线置1);
3>输入写数据指令(地址线置0);
4>输入数据(地址线置1);
5>输入运算指令(地址线置0);
6>等待运算结束,输出结果数据(地址线置1)。
在操作流程中需注意:
●若整个公钥运算中协处理器的下一次操作流程中所使用输入参数与刚结束的这次运算相同,可以不用重复输入(即1>和2>可省略)。
●若整个公钥运算中协处理器的下一次操作流程中所使用数据是刚结束的这次运算的结果数据,那么刚结束的运算结果数据可以不用输出而直接开始下一次操作流程(7>可省略)。但需要清楚了解运算结果数据在RAM中的存放地址。
本发明具有以下优点:
1>本发明使用双核,即两个运算模块,既可以同时进行两个相同的运算,也可以同时进行两个不同的运算,便于进行多线程操作,从而大大提高运算效率。
2>本发明使用RAM模块存储算法运算中的大数,这样不仅节约了面积资源,还提高后端版图布线利用率。虽然增加RAM接口控制部分,但是由于算法本身特性,对RAM的读写可以在运算期间并行实现,不会增加时间上的开销。
3>本发明可支持在地址线资源有限的情况下灵活方便地使用指令实现数据输入输出,运算控制以及测试。
4>本发明可兼容实现ECC和RSA两种通用公钥密码体制的基本运算,能满足不同系统的要求,可以通过软件控制来实现不同协议的公钥密码运算。
附图说明
图1为协处理器的整体结构示意图;
图2为运算模块的结构示意图;
图3使用协处理器的操作流程图。
具体实施方式
本发明的具体实施基本和说明书中所阐述的结构和原理一致,以下结合附图,具体说明本发明。
本发明公开了一种公钥算法协处理器的硬件实现方法,能够很好的解决由于公钥密码运算中大数位数过长造成存储量过大问题。实现该功能的部件是两个完全相同的运算模块和接口控制模块,每个运算模块包括:RAM模块、控制模块和算法模块。
请参阅图1,其为本发明硬件协处理器的整体结构示意图,根据本示意图,本硬件部件由运算模块1、运算模块2和接口及控制模块部分构成。
其中,所述接口及控制模块,是把两个运算模块的接口合并为一个IO,根据指令来选择是操作单个运算模块,还是两个运算模块同时操作。注意,除非输入数据相同,两个运算模块的数据不能同时输入。
运算模块,请参阅图2,其为运算模块的结构示意图。
图2中所述RAM模块,包括一个双端口RAM和一个单口RAM,图中单口RAM是在运算期间算法模块存储中间数据,图中双口RAM是存储协处理器输入输出数据以及部分中间结果。
图2中所述控制模块,包括对2个RAM的读写控制、对专用寄存器的读写控制、握手信号的控制和算法模块的所有开关控制。在结构示意图中没有标识出专用寄存器,大概有模长N、模乘参数MC等。
图2中所述IF,指运算模块的一些接口转换。
请参阅图3,该图描述了使用上述说明的硬件部件,操作协处理器的流程,具体步骤如下:
1>用户发送置数指令,此时地址线addr=0。此指令中相关位应包括要置的数据是送入专用寄存器,还是送入RAM中,如果是送入RAM,还需要标明在RAM中的位置,RAM中只用来存放大数;
2>用户输入数据,此时地址线addr=1。数据包括运算的操作数和参数,以模乘运算X*Y(mod M)为例,操作数X和Y,参数有模数M、模长N和运算需要数据MC。其他运算根据算法类推;
3>用户发送运算指令,此时地址线addr=0。运算类型有模乘、模加、模减和取模运算。指令中应该表明两个运算模块各自的操作。注意,在发送运算指令之前,运算所需要的操作数和参数必须已经输入;
4>协处理器进行运算;
5>判断运算是否结束,一般情况下应该有一个握手信号表明运算是否结束,这个信号既可以作为中断也可以作为查询。
6>用户读取结果数据。
在整个流程中,根据协议决定运算的顺序,如果相邻两次运算有相同的操作数或参数,可以不重复输入;如果下一次运算的操作数是此次运算的结果数据,用户也可以不读出结果数据,在内部直接运算即可。
Claims (7)
1.一种公钥密码算法协处理器的实现方法,其硬件是由两个相同的运算模块组成,每个运算模块包括:RAM模块、算法模块和控制模块,其特征在于:协处理器包括双核、多RAM模块、控制模块和一位地址线,使用该协处理器需要完整的指令集,并按一定的操作流程执行。
2.如权利要求1所述多RAM模块,其特征在于协处理器中使用一个双端口RAM和一个单端口RAM。
3.如权利要求1所述双核,其特征是指协处理器中包含两个完全相同的运算模块,每个运算模块都有各自的RAM模块、算法模块和控制模块。
4.如权利要求1所述控制模块,其特征是主要包括接口控制、对RAM的读写控制、对专用寄存器的读写控制、握手信号的控制和算法模块的所有开关控制。
5.如权利要求1所述一位地址线,其特征是在运算过程中标示两个地址:命令寄存器和数据寄存器。
6.如权利要求1所述为保证协处理器正常工作的操作流程,其步骤如下:
1>输入写参数指令(地址线置0);
2>输入参数(地址线置1);
3>输入写数据指令(地址线置0);
4>输入数据(地址线置1);
5>输入运算指令(地址线置0);
6>等待运算结束,输出结果数据(地址线置1)。
7.如权利要求1所述算法模块中包括模乘运算、模加运算、模减运算、取模运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2006101140955A CN101170406B (zh) | 2006-10-27 | 2006-10-27 | 双核公钥密码算法运算协处理器的一种实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2006101140955A CN101170406B (zh) | 2006-10-27 | 2006-10-27 | 双核公钥密码算法运算协处理器的一种实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101170406A true CN101170406A (zh) | 2008-04-30 |
CN101170406B CN101170406B (zh) | 2010-10-06 |
Family
ID=39390887
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006101140955A Active CN101170406B (zh) | 2006-10-27 | 2006-10-27 | 双核公钥密码算法运算协处理器的一种实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101170406B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521535A (zh) * | 2011-12-05 | 2012-06-27 | 苏州希图视鼎微电子有限公司 | 通过特定指令集来进行相关运算的信息安全协处理器 |
CN102737270A (zh) * | 2011-04-15 | 2012-10-17 | 航天信息股份有限公司 | 一种基于国产算法的银行智能卡芯片安全协处理器 |
CN103440183A (zh) * | 2013-09-02 | 2013-12-11 | 北京深思数盾科技有限公司 | 一种基于双核双头的信息安全保护装置 |
CN104572021A (zh) * | 2015-01-27 | 2015-04-29 | 聚辰半导体(上海)有限公司 | 一种高效的公钥加密引擎 |
CN104579656A (zh) * | 2014-12-31 | 2015-04-29 | 北京时代民芯科技有限公司 | 一种椭圆曲线公钥密码sm2算法的硬件加速协处理器 |
WO2015070560A1 (zh) * | 2013-11-14 | 2015-05-21 | 中国科学院数据与通信保护研究教育中心 | 基于多核处理器的密钥保护方法及系统 |
CN104899527A (zh) * | 2015-05-12 | 2015-09-09 | 广州中大微电子有限公司 | 一种片上安全协处理器 |
CN105897418A (zh) * | 2015-02-13 | 2016-08-24 | 厦门密安信息技术有限责任公司 | 基于多核arm/fpga的ecc密码算法的ip |
CN106411519A (zh) * | 2016-11-01 | 2017-02-15 | 北京百度网讯科技有限公司 | 用于rsa解密的处理器及用于rsa解密处理器的控制方法 |
CN107040362A (zh) * | 2015-12-29 | 2017-08-11 | 智能Ic卡公司 | 模乘设备和方法 |
CN112436941A (zh) * | 2020-11-03 | 2021-03-02 | 海光信息技术股份有限公司 | 支持标识密码算法的协处理器、方法、芯片及电子设备 |
CN112487448A (zh) * | 2020-11-27 | 2021-03-12 | 珠海零边界集成电路有限公司 | 一种加密信息处理装置、方法及计算机设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1259617C (zh) * | 2003-09-09 | 2006-06-14 | 大唐微电子技术有限公司 | 一种加快rsa加/解密过程的方法及其模乘、模幂运算电路 |
CN1635732A (zh) * | 2003-12-27 | 2005-07-06 | 海信集团有限公司 | 可重构密码协处理器的指令系统 |
DE102004058288A1 (de) * | 2004-12-02 | 2006-06-08 | Robert Bosch Gmbh | Vorrichtung und Verfahren zur Behebung von Fehlern bei einem Prozessor mit zwei Ausführungseinheiten |
CN100536390C (zh) * | 2005-05-18 | 2009-09-02 | 上海迪申电子科技有限责任公司 | 一种椭圆曲线密码协处理器 |
CN100382012C (zh) * | 2005-05-18 | 2008-04-16 | 上海迪申电子科技有限责任公司 | 一种操作数长度可伸缩的蒙哥马利模乘器运算方法 |
CN100518058C (zh) * | 2005-10-12 | 2009-07-22 | 浙江大学 | 一种用于公钥密码运算加速的方法及其体系结构 |
-
2006
- 2006-10-27 CN CN2006101140955A patent/CN101170406B/zh active Active
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737270B (zh) * | 2011-04-15 | 2015-11-18 | 航天信息股份有限公司 | 一种基于国产算法的银行智能卡芯片安全协处理器 |
CN102737270A (zh) * | 2011-04-15 | 2012-10-17 | 航天信息股份有限公司 | 一种基于国产算法的银行智能卡芯片安全协处理器 |
CN102521535A (zh) * | 2011-12-05 | 2012-06-27 | 苏州希图视鼎微电子有限公司 | 通过特定指令集来进行相关运算的信息安全协处理器 |
CN103440183A (zh) * | 2013-09-02 | 2013-12-11 | 北京深思数盾科技有限公司 | 一种基于双核双头的信息安全保护装置 |
US9898624B2 (en) | 2013-11-14 | 2018-02-20 | Data Assurance and Communication Security Center, Chinese Academy of Sciencess | Multi-core processor based key protection method and system |
WO2015070560A1 (zh) * | 2013-11-14 | 2015-05-21 | 中国科学院数据与通信保护研究教育中心 | 基于多核处理器的密钥保护方法及系统 |
CN104579656A (zh) * | 2014-12-31 | 2015-04-29 | 北京时代民芯科技有限公司 | 一种椭圆曲线公钥密码sm2算法的硬件加速协处理器 |
CN104572021B (zh) * | 2015-01-27 | 2017-09-19 | 聚辰半导体(上海)有限公司 | 一种高效的公钥加密引擎 |
CN104572021A (zh) * | 2015-01-27 | 2015-04-29 | 聚辰半导体(上海)有限公司 | 一种高效的公钥加密引擎 |
CN105897418A (zh) * | 2015-02-13 | 2016-08-24 | 厦门密安信息技术有限责任公司 | 基于多核arm/fpga的ecc密码算法的ip |
CN104899527A (zh) * | 2015-05-12 | 2015-09-09 | 广州中大微电子有限公司 | 一种片上安全协处理器 |
CN107040362A (zh) * | 2015-12-29 | 2017-08-11 | 智能Ic卡公司 | 模乘设备和方法 |
CN106411519A (zh) * | 2016-11-01 | 2017-02-15 | 北京百度网讯科技有限公司 | 用于rsa解密的处理器及用于rsa解密处理器的控制方法 |
CN106411519B (zh) * | 2016-11-01 | 2019-01-25 | 北京百度网讯科技有限公司 | 用于rsa解密的处理器及用于rsa解密处理器的控制方法 |
US10454680B2 (en) | 2016-11-01 | 2019-10-22 | Beijing Baidu Netcom Science And Technology Co., Ltd. | RSA decryption processor and method for controlling RSA decryption processor |
CN112436941A (zh) * | 2020-11-03 | 2021-03-02 | 海光信息技术股份有限公司 | 支持标识密码算法的协处理器、方法、芯片及电子设备 |
CN112487448A (zh) * | 2020-11-27 | 2021-03-12 | 珠海零边界集成电路有限公司 | 一种加密信息处理装置、方法及计算机设备 |
CN112487448B (zh) * | 2020-11-27 | 2024-05-03 | 珠海零边界集成电路有限公司 | 一种加密信息处理装置、方法及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN101170406B (zh) | 2010-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101170406B (zh) | 双核公钥密码算法运算协处理器的一种实现方法 | |
CA2244337C (en) | Encryption processor with shared memory interconnect | |
CN106100844B (zh) | 基于点盲化方法的优化自动双线性对加密方法及装置 | |
Turan et al. | Compact and flexible FPGA implementation of Ed25519 and X25519 | |
CN102043916B (zh) | 一种高性能可扩展公钥密码协处理器结构 | |
Kocabaş et al. | Implementation of binary Edwards curves for very-constrained devices | |
CN101834723A (zh) | 一种rsa算法及其ip核 | |
CN105790939A (zh) | 一种vlsi实现加速器的素数域椭圆曲线密码系统 | |
KR100442218B1 (ko) | 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기 | |
US20020074391A1 (en) | Arithmetic circuit to increase the speed for a modular multiplication for a public key system for encryption | |
CN110704109B (zh) | 一种椭圆曲线密码协处理器 | |
CN113114462B (zh) | 一种应用于ecc安全硬件电路的小面积标量乘电路 | |
KR100457177B1 (ko) | 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기 | |
CN103023659B (zh) | 一种参数位宽可扩展的ecc加密硬件装置 | |
CN104503730A (zh) | 一种基于指令的大数点加、倍点运算电路及实现方法 | |
Bie et al. | An energy-efficient reconfigurable asymmetric modular cryptographic operation unit for RSA and ECC | |
CN107203487B (zh) | 一种抗功耗攻击的安全可重构架构 | |
CN116561819A (zh) | 一种基于Toom-Cook环上多项式乘法的加解密方法及环上多项式乘法器 | |
CN114238205B (zh) | 一种抗功耗攻击的高性能ecc协处理器系统 | |
US7113593B2 (en) | Recursive cryptoaccelerator and recursive VHDL design of logic circuits | |
Ghosh et al. | A robust GF (p) parallel arithmetic unit for public key cryptography | |
JP2002358010A (ja) | べき乗剰余演算器 | |
Seo | Compact software implementation of public-key cryptography on MSP430X | |
Wang et al. | TCPM: A reconfigurable and efficient Toom-Cook-based polynomial multiplier over rings using a novel compressed postprocessing algorithm | |
Schramm et al. | On the implementation of a lightweight generic FPGA ECC crypto-core over GF (p) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C56 | Change in the name or address of the patentee | ||
CP02 | Change in the address of a patent holder |
Address after: 102209 Beijing, Beiqijia, the future of science and technology in the south area of China electronic network security and information technology industry base C building, Patentee after: Beijing CEC Huada Electronic Design Co., Ltd. Address before: 100102 Beijing City, Chaoyang District Lize two Road No. 2, Wangjing science and Technology Park A block five layer Patentee before: Beijing CEC Huada Electronic Design Co., Ltd. |