一种RSA电路结构及RSA加密方法与流程

文档序号:11251298阅读:760来源:国知局
一种RSA电路结构及RSA加密方法与流程

本发明涉及密码电路和信息安全技术领域,尤其涉及rsa算法及rsa异步低面积低能耗电路结构。



背景技术:

随着电子信息技术的迅猛发展,计算机网络在各行各业中已得到了广泛应用,然而由于网络信息的社会性、开放性和共享性等特点使其越来越容易受到攻击,信息安全问题日益突出。

基本的信息安全包括信息的保密性、确证性、完整性和不可否认性,而密码技术是保障信息安全的核心技术。密码技术是集数学、计算机科学、电子与通信等诸多学科于一体的交叉学科,不仅服务于军事外交领域,而且广泛应用于电子政务、电子商务和电子金融等应用信息系统。

rsa公钥加密算法是1977年由罗纳德·李维斯特(ronrivest)、阿迪·萨莫尔(adishamir)和伦纳德·阿德曼(leonardadleman)一起提出的。rsa是目前最有影响力的公钥加密算法,它能够抵抗目前已知的绝大多数密码攻击,已广泛应用在加密、认证和签名领域中,如web服务器和浏览器信息安全、e-mail的安全和认证、远程登录的安全保证和各种电子信息卡系统等。

差分功耗分析(dpa)技术可以通过对加密设备在加密过程中泄露出来的功耗信息进行分析,来实施对于加密设备的攻击,对加密芯片的安全性造成了巨大的威胁。因此,为了增加同步rsa加密电路的抗dpa攻击性能,往往会采用掩码、伪轮和双轨逻辑等策略,从而导致同步rsa加密电路的面积和功耗显著增加,不宜于进行soc集成。另外,使用同步电路设计的rsa电路存在着时钟扭斜、功耗高、最坏情况延时和物理敏感等方面的问题。



技术实现要素:

为了克服现有技术的上述缺点和不足,本发明提供一种rsa加密算法及rsa异步低能耗电路结构。

本发明采用如下技术方案:

一种rsa异步低能耗电路结构,包括移位器、选择器和模乘器,如图1所示。其中:

移位器0(10),用于完成对输入幂指数(exp)的右移移位操作,并使用原始幂指数输入(exp)或者其移位后输出的最低位作为选择器的选择信号;

选择器0(11),与移位器0(10)和模乘器(12)分别相连,在原始幂指数输入(exp)或者其右移后输出的最低位的控制下,选择第一次模乘/模幂及其之后每次模乘/模幂的输入。

模乘器(12),与选择器0(11)相连,根据原始输入模(modulus)和选择器0(11)的输出进行rsa算法的模乘/模幂操作,除了最后一次的模乘/模幂输出作为最终的加密密文(cypher)外,其他各次模乘/模幂的输出反馈给选择器0(11)作为下一次模乘/模幂的输入。

选择器0(11)可以采用常见的4个同步2输入选择器(20,21,22,23)来实现。移位器0(10),与选择器0(11)相连,完成对输入幂指数(exp)的右移移位操作,使用原始幂指数输入(exp)或者其移位后输出的最低位作为第一次模乘/模幂选择器(20,22)及其之后每次模乘/模幂选择器(21,23)的选择信号。除了异步请求应答电路使用mullerc单元实现外,该模块的移位功能可以采用常见的同步移位器来实现。

本发明提供了一种利用上述rsa加密电路结构进行加密的方法,包括以下步骤:

s10:加密电路上电后,首先锁存明文(data),幂指数(exp)和模(modulus);

s11:根据幂指数(exp)的最低位使用选择器(20,22)选择用于模乘运算的被乘数(mpand)为明文(data)或为1,并进行模乘运算;

s12:将被乘数(mpand)和乘数(mplier)都选择为明文(data),进行模幂运算;

s13:使用移位器(10)将幂指数(exp)右移一位;

s14:根据幂指数(exp)右移后的最低位使用选择器(21,23)选择用于模乘运算的乘数(mplier)为模幂输出(square)或为1,并进行模乘运算;

s15:将被乘数(mpand)和乘数(mplier)都选择为模幂输出(square),进行模幂运算;

s16:重复步骤s13-s15,直到移位后的幂指数(exp)为0。

本发明rsa异步低能耗电路结构的模乘器(12)可以包括3个移位器(30,33,38),3个选择器(31,35,37),3个减法器(32,34,39)和1个加法器(36),其中:

加法器(36),与移位器1(30)、减法器0(32)、选择器6(35)和选择器7(37)分别相连,将3输入选择器6(35)的输出(product)和左移移位器1(30)的输出(mpand)相加。

选择器7(37),与加法器(36)、移位器3(38)和选择器6(35)分别相连,当右移移位器3(38)输出(mplier)的最低位分别为1和0时,选择器7(37)分别选择加法器(36)的输出和3输入选择器6(35)的输出(product)作为乘积1(prodreg1)。

减法器2(39),与选择器6(35)和选择器7(37)分别相连,将2输入选择器7(37)的输出(prodreg1)和原始模输入(modulus)相减。

移位器2(33),与减法器1(34)相连,完成对原始模输入(modulus)左移一位的操作。

减法器1(34),与移位器2(33)、选择器6(35)和选择器7(37)分别相连,将2输入选择器7(37)的输出(prodreg1)和移位器2(33)左移一位的输出(modreg2)相减。

选择器6(35),与减法器1(34)、减法器2(39)、加法器(36)和选择器7(37)分别相连,根据减法器2(39)输出(prodreg2)的最高位和减法器1(34)输出(prodreg3)的最高位,选择选择器7(37)的输出(prodreg1)或者减法器2(39)的输出(prodreg2)或者减法器1(34)的输出(prodreg3)作为其输出(product)。当减法器2(39)输出(prodreg2)的最高位为1且减法器1(34)输出(prodreg3)的最高位也为1时,选择器6(35)选择选择器7(37)的输出(prodreg1);当减法器2(39)输出(prodreg2)的最高位为0且减法器1(34)输出(prodreg3)的最高位为1时,选择器6(35)选择减法器2(39)的输出(prodreg2);否则选择器6(35)选择减法器1(34)的输出(prodreg3)。

减法器0(32),与移位器1(30)、选择器5(31)和加法器(36)分别相连,完成对左移移位器1(30)的输出(mpand)与原始模输入(modulus)相减的操作。

选择器5(31),与移位器1(30)和减法器0(32)分别相连,当减法器0(32)输出(mpreg1)的次高位分别为1和0时,选择器5(31)分别选择移位器1(30)的输出(mpand)和减法器0(32)的输出(mpreg1)。

移位器1(30),与选择器5(31)、减法器0(32)和加法器(36)分别相连,将选择器5(31)的输出(mpreg1)左移一位得到新的被乘数(mpand)。

移位器3(38),与选择器7(37)相连,将乘数(mplier)右移一位得到新的乘数(mplier)。

上述rsa异步低能耗电路结构进行模乘/模幂的方法,包括以下步骤:

s20:模乘/模幂运算开始后,首先使用移位器(33)将模(modulus)左移一位(modreg2);

s21:使用加法器(36)将乘积(product)和被乘数(mpand)相加,根据乘数(mplier)的最低位使用选择器(37)选择乘积1(prodreg1)为加法器(36)的输出或为乘积(product);

s22:乘积2(prodreg2)由乘积1(prodreg1)和模(modulus)通过减法器(39)得到;

s23:乘积3(prodreg3)由乘积1(prodreg1)和模左移一位(modreg2)通过减法器(34)相减得到;

s24:根据乘积2(prodreg2)的最高位和乘积3(prodreg3)的最高位,通过选择器(35)选择得到乘积(product);

s25:被乘数1(mpreg1)由被乘数(mpand)和模(modulus)通过减法器(32)相减得到;

s26:根据相减后的结果,被乘数1(mpreg1)的次高位选择被乘数1(mpreg1)是锁存相减后的结果,还是锁存被乘数(mpand);

s27:将被乘数1(mpreg1)左移一位得到新的被乘数(mpand),将乘数(mplier)右移一位得到新的乘数(mplier);

s28:重复步骤s21-s27,直到移位后的乘数(mplier)为0。

本发明采用基于请求应答信号的异步握手机制,不仅能够减小芯片的面积,而且能够降低芯片能耗,还增强了芯片的抗dpa攻击性能,有利于其工程化和量产。

附图说明

图1是本发明rsa加密算法的异步低能耗电路结构示意图;

图2是本发明rsa加密电路的选择器0(11)的结构示意图;

图3是本发明rsa加密电路的模乘器(12)结构示意图。

其中:10—移位器0;11—选择器0;12—模乘器;20—选择器1;21—选择器2;22—选择器3;23—选择器4;30—移位器1;31—选择器5;32—减法器0;33—移位器2;34—减法器1;35—选择器6;36—加法器;37—选择器7;38—移位器3;39—减法器2。

具体实施方式

下面结合附图对本发明的实施例进行详细阐述。

结合附图2和附图3对本发明的实施例进行详细阐述。

如图2所示,选择器0(11)包括4个2输入选择器(20,21,22,23),其中:

选择器1(20)和选择器3(22),二者都是以原始幂指数输入(exp)的最低位作为选择信号。当选择信号分别为1或0时,选择器1(20)分别选择原始明文(data)或1作为第一次模乘/模幂的输入(需要通过选择器2(21)的右支路),选择器3(22)分别选择1或原始明文(data)作为第一次模乘/模幂的输入(需要通过选择器4(23)的右支路)。

选择器2(21)和选择器4(23),二者都是以原始幂指数输入(exp)右移后输出的最低位作为选择信号。当进行第一次模乘/模幂时,选择信号默认为0即选择其各自右支路作为模乘/模幂的输入。当进行第一次之后的各次模乘/模幂时,如果选择信号为1,则选择器2(21)选择本次模乘/模幂的输出作为下一次模乘/模幂的输入,而选择器4(23)选择1作为下一次模乘/模幂的输入;如果选择信号为0,则选择器2(21)选择1(需要通过选择器1(20)的右支路)作为下一次模乘/模幂的输入,而选择器4(23)选择本次模乘/模幂的输出作为下一次模乘/模幂的输入。

如图3所示,上述的模乘器(12)包括3个移位器(30,33,38),3个选择器(31,35,37),3个减法器(32,34,39)和1个加法器(36),其中:

加法器(36),与移位器1(30)、减法器0(32)、选择器6(35)和选择器7(37)分别相连,将3输入选择器6(35)的输出(product)和左移移位器1(30)的输出(mpand)相加。

选择器7(37),与加法器(36)、移位器3(38)和选择器6(35)分别相连,当右移移位器3(38)输出(mplier)的最低位分别为1和0时,选择器7(37)分别选择加法器(36)的输出和3输入选择器6(35)的输出(product)作为乘积1(prodreg1)。

减法器2(39),与选择器6(35)和选择器7(37)分别相连,将2输入选择器7(37)的输出(prodreg1)和原始模输入(modulus)相减。

移位器2(33),与减法器1(34)相连,完成对原始模输入(modulus)左移一位的操作。

减法器1(34),与移位器2(33)、选择器6(35)和选择器7(37)分别相连,将2输入选择器7(37)的输出(prodreg1)和移位器2(33)左移一位的输出(modreg2)相减。

选择器6(35),与减法器1(34)、减法器2(39)、加法器(36)和选择器7(37)分别相连,根据减法器2(39)输出(prodreg2)的最高位和减法器1(34)输出(prodreg3)的最高位,选择选择器7(37)的输出(prodreg1)或者减法器2(39)的输出(prodreg2)或者减法器1(34)的输出(prodreg3)作为其输出(product)。当减法器2(39)输出(prodreg2)的最高位为1且减法器1(34)输出(prodreg3)的最高位也为1时,选择器6(35)选择选择器7(37)的输出(prodreg1);当减法器2(39)输出(prodreg2)的最高位为0且减法器1(34)输出(prodreg3)的最高位为1时,选择器6(35)选择减法器2(39)的输出(prodreg2);否则选择器6(35)选择减法器1(34)的输出(prodreg3)。

减法器0(32),与移位器1(30)、选择器5(31)和加法器(36)分别相连,完成对左移移位器1(30)的输出(mpand)与原始模输入(modulus)相减的操作。

选择器5(31),与移位器1(30)和减法器0(32)分别相连,当减法器0(32)输出(mpreg1)的次高位分别为1和0时,选择器5(31)分别选择移位器1(30)的输出(mpand)和减法器0(32)的输出(mpreg1)。

移位器1(30),与选择器5(31)、减法器0(32)和加法器(36)分别相连,将选择器5(31)的输出(mpreg1)左移一位得到新的被乘数(mpand)。

移位器3(38),与选择器7(37)相连,将乘数(mplier)右移一位得到新的乘数(mplier)。

本发明提供了一种利用上述rsa加密电路结构进行加密的方法,包括以下步骤:

s10:加密电路上电后,首先锁存明文(data),幂指数(exp)和模(modulus);

s11:根据幂指数(exp)的最低位使用选择器(20,22)选择用于模乘运算的被乘数(mpand)为明文(data)或为1,并进行模乘运算;

s12:将被乘数(mpand)和乘数(mplier)都选择为明文(data),进行模幂运算;

s13:使用移位器(10)将幂指数(exp)右移一位;

s14:根据幂指数(exp)右移后的最低位使用选择器(21,23)选择用于模乘运算的乘数(mplier)为模幂输出(square)或为1,并进行模乘运算;

s15:将被乘数(mpand)和乘数(mplier)都选择为模幂输出(square),进行模幂运算;

s16:重复步骤s13-s15,直到移位后的幂指数(exp)为0。

本发明模乘器进行模乘的方法,包括以下步骤:

s20:模乘运算开始后,首先使用移位器(33)将模(modulus)左移一位(modreg2);

s21:使用加法器(36)将乘积(product)和被乘数(mpand)相加,根据乘数(mplier)的最低位使用选择器(37)选择乘积1(prodreg1)为加法器(36)的输出或为乘积(product);

s22:乘积2(prodreg2)由乘积1(prodreg1)和模(modulus)通过减法器(39)得到;

s23:乘积3(prodreg3)由乘积1(prodreg1)和模左移一位(modreg2)通过减法器(34)相减得到;

s24:根据乘积2(prodreg2)的最高位和乘积3(prodreg3)的最高位,通过选择器(35)选择得到乘积(product);

s25:被乘数1(mpreg1)由被乘数(mpand)和模(modulus)通过减法器(32)相减得到;

s26:根据相减后的结果被乘数1(mpreg1)的次高位选择被乘数1(mpreg1)是锁存相减后的结果被乘数1(mpreg1),还是锁存被乘数(mpand);

s27:将被乘数1(mpreg1)左移一位得到新的被乘数(mpand),将乘数(mplier)右移一位得到新的乘数(mplier);

s28:重复步骤s21-s27,直到移位后的乘数(mplier)为0。

本发明rsa加密算法的异步低能耗电路结构中,加密数据处理采用同步电路实现,各模块间的互连采用基于请求应答的握手机制实现,采用本发明加密结构及其加密方法能够获得更加安全、更小面积和更低能耗的rsa加密芯片,同时意味着更低成本和更大的市场竞争力。

以上所述仅为本发明的实施例,但并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1