CN104778147B - 一种基于协处理器的数据处理方法 - Google Patents

一种基于协处理器的数据处理方法 Download PDF

Info

Publication number
CN104778147B
CN104778147B CN201510173947.7A CN201510173947A CN104778147B CN 104778147 B CN104778147 B CN 104778147B CN 201510173947 A CN201510173947 A CN 201510173947A CN 104778147 B CN104778147 B CN 104778147B
Authority
CN
China
Prior art keywords
data
register
segment data
coprocessor
result
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.)
Active
Application number
CN201510173947.7A
Other languages
English (en)
Other versions
CN104778147A (zh
Inventor
陆舟
于华章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN201510173947.7A priority Critical patent/CN104778147B/zh
Publication of CN104778147A publication Critical patent/CN104778147A/zh
Application granted granted Critical
Publication of CN104778147B publication Critical patent/CN104778147B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明公开一种基于协处理器的数据处理方法,包括:获取两个大数并对其进行分组得到第一高段数据、第一低段数据、第二高段数据和第二低段数据;使用协处理器对第一高段数据和第二高段数据进行计算并左移得到第一数值;使用协处理器对第一高段数据和第二低段数据进行计算并左移得到第二数值;使用协处理器对第一低段数据和第二高段数据进行计算并左移得到第三数值;使用协处理器对第一低段数据和第二低段数据进行计算得到第四数值;根据第一数值、第二数值、第三数值和第四数值得到结果数据。通过将两个大数分段后进行处理,来提高计算效率,进而高效率地实现生成密钥、加解密和签名的过程。

Description

一种基于协处理器的数据处理方法
技术领域
本发明涉及密码学领域,尤其涉及一种基于协处理器的数据处理方法。
背景技术
随着科学技术的发展,对于数据安全性的要求也越来越高,现有保护数据安全可以通过加解密和签名等方式实现。但是加密过程和签名过程都需要有密钥的参与,而生成密钥、加解密和签名的过程中都需要使用大数据,现有技术中通过硬件对大数据的处理结果的最大长度是有限的(即大数据的长度有限),如果想使处理结果的长度更大,虽然可以通过软件来实现,但是处理速度较慢,使得生成密钥、加解密和签名过程的实现效率都很低。
发明内容
本发明的目的是为了克服现有技术的不足,提供一种基于协处理器的数据处理方法。
本发明提供了一种基于协处理器的数据处理方法,包括:
步骤S1:获取两个大数并将所述两个大数分别存储到第一寄存器和第二寄存器中;
步骤S2:对所述第一寄存器中的大数进行分组得到第一高段数据和第一低段数据,对所述第二寄存器中的大数进行分组得到第二高段数据和第二低段数据;所述第一高段数据的长度、第一低段数据的长度、第二高段数据的长度和第二低段数据的长度均小于所述协处理器可以处理的数据的长度;
步骤S3:使用所述协处理器对所述第一高段数据和所述第二高段数据进行计算,根据第一高段数据和第二高段数据的总长度对计算结果进行左移得到第一数值;
步骤S4:使用所述协处理器对所述第一高段数据和所述第二低段数据进行计算,根据第一高段数据的长度对计算结果进行左移得到第二数值;
步骤S5:使用所述协处理器对所述第一低段数据和所述第二高段数据进行计算,根据第二高段数据的长度对计算结果进行左移得到第三数值;
步骤S6:使用所述协处理器对所述第一低段数据和所述第二低段数据进行计算,将计算结果作为第四数值;
步骤S7:根据所述第一数值、所述第二数值、所述第三数值和第四数值得到结果数据,所述结果数据的长度大于所述协处理器可以处理的数据的长度。
进一步地,所述对所述第一寄存器中的大数进行分组得到第一高段数据和第一低段数据,包括:按照预先设置的拆分方法对所述第一寄存器中的大数进行拆分得到第一高段数据和第一低段数据;
所述对所述第二寄存器中的大数进行分组得到第二高段数据和第二低段数据,包括:按照预先设置的拆分方法对所述第二寄存器中的大数进行拆分得到第二高段数据和第二低段数据。
进一步地,所述预先设置的拆分方法为对等拆分;
所述按照预先设置的拆分方法对第一寄存器中的大数进行拆分得到第一高段数据和第一低段数据,具体为:
步骤a1:判断所述第一寄存器中的大数的长度是否为偶数,是则执行步骤a2,否则执行步骤a3;
步骤a2:对所述第一寄存器中的大数进行两等分得到所述第一高段数据和所述第一低段数据;
步骤a3:在所述第一寄存器中的大数前补0,对补位后的数据进行两等分得到所述第一高段数据和所述第一低段数据;
所述按照预先设置的拆分方法对所述第二寄存器中的大数进行拆分得到第二高段数据和第二低段数据,具体为:
步骤b1:判断所述第二寄存器中的大数的长度是否为偶数,是则执行步骤b2,否则执行步骤b3;
步骤b2:对所述第二寄存器中的大数进行两等分得到所述第二高段数据和所述第二低段数据;
步骤b3:在所述第二寄存器中的大数前补0,对补位后的数据进行两等分得到所述第二高段数据和所述第二低段数据。
进一步地,所述步骤S3包括:将所述第一高段数据和所述第二高段数据分别存储到第三寄存器和第四寄存器中,使用所述协处理器对所述第三寄存器和所述第四寄存器中的数据进行计算,根据第一高段数据和第二高段数据的总长度对计算结果进行左移得到第一数值。
进一步地,所述步骤S4包括:将所述第一高段数据和所述第二低段数据分别存储到第三寄存器和第四寄存器中,使用所述协处理器对所述第三寄存器和所述第四寄存器中的数据进行计算,根据第一高段数据的长度对计算结果进行左移得到第二数值。
进一步地,所述步骤S5包括:将所述第一低段数据和所述第二高段数据分别存储到第三寄存器和第四寄存器中,使用所述协处理器对所述第三寄存器和所述第四寄存器中的数据进行计算,根据第二高段数据的长度对计算结果进行左移得到第三数值。
进一步地,所述步骤S6包括:将所述第一低段数据和所述第二低段数据分别存储到第三寄存器和第四寄存器中,使用所述协处理器对所述第三寄存器和所述第四寄存器中的数据进行计算,将计算结果作为第四数值。
进一步地,所述使用所述协处理器对所述第三寄存器和所述第四寄存器中的数据进行计算,具体包括:
步骤c1:使用所述协处理器对所述第三寄存器中的数据和所述第四寄存器中的数据进行乘法运算得到第四中间数据;
步骤c2:使用所述协处理器对所述第三中间数据与所述第四中间数据进行乘法运算,用得到的乘积对所述第一中间数据取模得到第五中间数据;所述第一中间数据是2的1024次方的幂值;所述第三中间数据是对2的1024次方的幂值减1的差值模所述第一中间数据逆元得到的结果;
步骤c3:使用所述协处理器对所述第二中间数据与所述第五中间数据进行乘法运算,用得到的乘积与所述第四中间数据进行相加运算,用相加结果除以所述第一中间数据得到第六中间数据;所述第二中间数据是2的1024次方的幂值减1的差值;
步骤c4:使用所述协处理器判断所述第六中间数据是否小于所述第二中间数据,是则将所述第二中间数据作为计算结果,否则将所述第六中间数据与所述第二中间数据的差值作为计算结果。
进一步地,所述步骤S7包括:将所述第一数值、所述第二数值、所述第三数值和第四数值进行或运算得到结果数据。
进一步地,所述步骤S7包括:将所述第一数值与所述第四数值进行或运算得到第一运算结果,将所述第二数值与所述第三数值进行相加运算得到第二运算结果,将所述第一运算结果与所述第二运算结果进行或运算得到结果数据。
本发明与现有技术相比,具有以下优点:
本发明的方案是将两个大数分段后通过协处理器来对分段后的数据进行处理,不仅实现可以对任意大数进行处理(即大数的长度不受限制),而且还可以提高处理效率,进而高效率地实现生成密钥、加解密和签名的过程。
附图说明
图1为本发明实施例一提供的一种基于协处理器的数据处理方法流程图;
图2为本发明实施例二提供的一种基于协处理器的数据处理方法流程图;
图3为本发明实施例二中的步骤103中计算得到第一数值的具体实现流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例一提供一种基于协处理器的数据处理方法,如图1所示,包括:
步骤S1:获取两个大数并将其分别存储到第一寄存器和第二寄存器中;
例如,在本实施例中,两个大数分别为第一大数P和第二大数Q,第一大数的长度为X,第二大数的长度为Y;具体的,P=0xD0F8EFBB18CD6A905676F6D228AF6AC8AF1BAE2A6FAA8689ACE9159CF4F6C8CAAF0A8BBA66C5F1F0312FFFC191BE232D9EDF6A9A15EF72FF5B96257E1FD02DA6C4A35C70B13E6DF99F7DC07A7E314A8FAFE45D3C1B8AB306AE7AA28E09C9E6CC70BF657F6D1B83C1E7F89A85EE0363170E633F1447F5D27590C15BA7DFC68BE883BE6C9A46346759F8BE033C57BC5F75ECB465FC9FB7628B08A2CF32E297E17C2166A696EB29BA7FE5A9B04D2CD392D2172AEBDFAF24E6C2EB9EF818B4A44B77AE3108CD1BB1E2981D3ABE3E9ABD52048C5143FE1FB0F870AAC1343152835A573257EF1D1D7BC89DF96A457F988889714C01F1AB0371556ED2210EBE4325F3;
Q=0x874FFBAB5CCB521A991BEA2606AF99DB98D44AC034250E8BE7912551C256D039A5B895382733B313F8C0E47B5CD6CDD4600A805EC7F717FC3450EDA0FB00597A71A3566AAFCB2E0414F510CFAD319CE20A010ADFD1580E97A8F5FDDD3754F23903E1BB717BDE5A1ADC0BADC47CF4E3F3281137336744A8E5F3621CA1D89A1B522F54C6C66E7136CA2083D5B2B96F9F997813699204AB81B560158FB2BA259173A3A624EB370B29F32CD4840CCEC7E3195FCEF10A2644DBEE3D9BD0CCC96F51B8CF31028052D6035F5C2C572504A94BE2AF4765607D752B6D259DB89FFD12C4121A6C039306DD0A0315033DA45B9739D28ECA5D016A5536B38AC029A531CC25733F;
步骤S2:对第一寄存器中的大数进行分组得到第一高段数据和第一低段数据,对第二寄存器中的大数进行分组得到第二高段数据和第二低段数据;
例如,本实施例中的第一高段数据为P1、长度为XH,第一低段数据为P2、长度为XL,第二高段数据为Q1、长度为YH,第二低段数据为Q2、长度为YL;XH、XL、YH、YL均小于协处理器可以处理的数据的长度;
具体的,在本实施例中,如预先设置了拆分方法,则对第一寄存器中的大数进行分组得到第一高段数据和第一低段数据,包括:按照预先设置的拆分方法对第一寄存器中的大数进行拆分得到第一高段数据和第一低段数据;
优选的,设置的拆分方法为对等拆分,按照预先设置的拆分方法对第一寄存器中的大数进行拆分得到第一高段数据和第一低段数据,具体包括:
步骤a1:判断第一寄存器中的大数的长度是否为偶数,是则执行步骤a2,否则执行步骤a3;
步骤a2:对第一寄存器中的大数进行两等分得到第一高段数据和第一低段数据;
步骤a3:在第一寄存器中的大数前补0,对补位后的数据进行两等分得到第一高段数据和第一低段数据;
在本实施例中,对第二寄存器中的大数进行分组得到第二高段数据和第二低段数据可参考上述方法来实现,具体为:
步骤b1:判断第二寄存器中的大数的长度是否为偶数,是则执行步骤b2,否则执行步骤b3;
步骤b2:对第二寄存器中的大数进行两等分得到第二高段数据和第二低段数据;
步骤b3:在第二寄存器中的大数前补0,对补位后的数据进行两等分得到第二高段数据和第二低段数据;
例如,PH=0xD0F8EFBB18CD6A905676F6D228AF6AC8AF1BAE2A6FAA8689ACE9159CF4F6C8CAAF0A8BBA66C5F1F0312FFFC191BE232D9EDF6A9A15EF72FF5B96257E1FD02DA6C4A35C70B13E6DF99F7DC07A7E314A8FAFE45D3C1B8AB306AE7AA28E09C9E6CC70BF657F6D1B83C1E7F89A85EE0363170E633F1447F5D27590C15BA7DFC68BE;
PL=0x883BE6C9A46346759F8BE033C57BC5F75ECB465FC9FB7628B08A2CF32E297E17C2166A696EB29BA7FE5A9B04D2CD392D2172AEBDFAF24E6C2EB9EF818B4A44B77AE3108CD1BB1E2981D3ABE3E9ABD52048C5143FE1FB0F870AAC1343152835A573257EF1D1D7BC89DF96A457F988889714C01F1AB0371556ED2210EBE4325F3;
QH=0x874FFBAB5CCB521A991BEA2606AF99DB98D44AC034250E8BE7912551C256D039A5B895382733B313F8C0E47B5CD6CDD4600A805EC7F717FC3450EDA0FB00597A71A3566AAFCB2E0414F510CFAD319CE20A010ADFD1580E97A8F5FDDD3754F23903E1BB717BDE5A1ADC0BADC47CF4E3F3281137336744A8E5F3621CA1D89A1B522;
QL=0xF54C6C66E7136CA2083D5B2B96F9F997813699204AB81B560158FB2BA259173A3A624EB370B29F32CD4840CCEC7E3195FCEF10A2644DBEE3D9BD0CCC96F51B8CF31028052D6035F5C2C572504A94BE2AF4765607D752B6D259DB89FFD12C4121A6C039306DD0A0315033DA45B9739D28ECA5D016A5536B38AC029A531CC25733F;
步骤S3:使用协处理器对第一高段数据和第二高段数据进行计算,根据第一高段数据和第二高段数据的总长度对计算结果进行左移得到第一数值;
在本实施例中,步骤S3包括:先将第一高段数据和第二高段数据分别存储到第三寄存器和第四寄存器中,然后使用协处理器对第三寄存器和第四寄存器中的数据进行计算,根据第一高段数据和第二高段数据的总长度对计算结果进行左移得到第一数值;
使用协处理器对第三寄存器和第四寄存器中的数据进行计算具体包括:
步骤c3:使用协处理器对第三寄存器中的数据和第四寄存器中的数据进行乘法运算得到第四中间数据;
步骤c4:使用协处理器对第三中间数据与第四中间数据进行乘法运算,用得到的乘积对第一中间数据取模得到第五中间数据;第一中间数据是2的1024次方的幂值;第三中间数据是对2的1024次方的幂值减1的差值模第一中间数据逆元得到的结果;
如第一中间数据为r=21024,n=21024-1,则第三中间数据=n'=-n-1mod r;步骤c5:使用协处理器对第二中间数据与第五中间数据进行乘法运算,用得到的乘积与第四中间数据进行相加运算,用相加结果除以第一中间数据得到第六中间数据;第二中间数据是2的1024次方的幂值减1的差值;如第二中间数据为n=21024-1;
步骤c6:使用协处理器判断第六中间数据是否小于第二中间数据,是则将第二中间数据作为计算结果,否则将第六中间数据与第二中间数据的差值作为计算结果;
例如,将计算结果后将其左移XH+YH得到第一数值;第一数值=0x6E7490AD99E4FC73C22972DBC464854954D227CE3E69A5CD9D58EA3921E09E2AEAD5DAE1F79655F9A01F51C9514F9AE45740BA930BDB7F6A420989F0111B8DDA0639B31B7C510668A6F225326AD0F2CF6580201ADD62339D05A531D51071F87B0364E10393B5A4B685A7F539E366B1BC4BA61AEA35D9C38C753315EA75E2A4992E1AAD4F9559954E599586621D553CBD62B626AACBBDE5B40C6286BAAB54CAB2A8A3440DFD0B6DF0E274BCA91CD1966EB44BCB4CF80C65200C730C3C8C11AEA58A1BD638F8085F44CF33970A15B2510013DBCB3EB6B4919C995282A2581B19978DAE10FC4244A7FD8D43D631947B084D1D6817E0AEFF0516DB68D729BF123F3C;
步骤S4:使用协处理器对第一高段数据和第二低段数据进行计算,根据第一高段数据的长度对计算结果进行左移得到第二数值;
在本实施例中,步骤S4的实现与步骤S3相同,在此不再赘述;
例如,在本实施例中,将计算结果左移XH位得到第二数值;第二数值=0xC83C9FD23F3AE273380F9203972A1264874D40555B3705B899346F0ED7396258388D142574D36721F1E42FFD9AE563531B6C41C72F6FDBB64541959A15B4A97239012B43DD74D06E4CA7DFA4F7F5FB60FDE9B0E070698920C794029C2AF041BF832E61D05A6BF2EB5F4F46D6C85AEA68CE0363FBD9DD50DBD909D5BF270276BD70B5DBC88D006A97445F7F3482207C880CAA80B66AA09B4E65418639F0EE829212731ABF78DFB2B3427439526534E83F778005C86D5442934A7E61C28AFFBB1A6C855534F8B6E26DF13797CC46BC7B09EF80A33BEBFC28F1707617024FB4F037FCE14B6518585E3BBEC4D4F08A5463D2ACC4AE41A7E4420C2B55FACDEFA120C2;
步骤S5:使用协处理器对第一低段数据和第二高段数据进行计算,根据第二高段数据的长度对计算结果进行左移得到第三数值;
在本实施例中,步骤S5的实现与步骤S3相同,在此不再赘述;
例如,在本实施例中,将计算结果左移YH位得到第三数值;第三数值=0x4802271E7A96ABCABA4A1A6DAF8D71593C3F3D8BE46817644ED2BACD93FA60C2BAB9615DE1279CBD67997848ABFABC14B5681A5AEF830013FF837358CD36D1B1D0EFEF97B0FB37179E60959F796189FB854A75D7E4245EEF3BCCEECA25549CF1167BD4A45D9342A2949CFA3B376BBC594FDBC9F9E4B71D2199DE86D377921F80E0DFCB0812183C16AD03E1494459811A1A1128C35E5EF1C51A3C90AC8D70D91EC366D0BD24C7DAA76D2D9F9B5EC6897AD87B075B05B3F7559357B8BB1B13BF38F310EDFF7D44FAD65A63AF25ED798C23F6FFD3CED3D8B7EFB3028A4351C117CF603D92040E76D8B8C1A48BCE7BEC61E88A3769E0CDC18B2DA73F728BA792D946;
步骤S6:使用协处理器对第一低段数据和第二低段数据进行计算,将计算结果作为第四数值;
在本实施例中,步骤S6的实现与步骤S3相同,在此不再赘述;
例如,本实施例中的第四数值=0x8289FF578663391A71D8582BBE8E5D0D9FE3930BFF649CFFE2D58B38BDBE09B127F0BDE2178C012B0156A4B93B1B4C953EF6E7F940EEEC85E8EBFC28B33E3F617CE58493E961218F50677D94C24038D43539A0696916B854ADF003E1BE4BBF8D3A0782D34E7F135526E730CD94F38303A8BCC969780E14E6248F6C1AC49995979C490408B16AF665509CA5023AE51D078DEBA10C10FB24BB83681257AE5BE4FAA59E4DC3DE3A2E940C6BF13B5B60969A02ED574EFC30C2C39E8EB5E6BA4F4D00900E4A2CEBE1CC9E6980C4A94AA07BFDE550206E824A2A67B51F0D11878614C07112C9ABCDA669EE0FBA5DA208CE9A1A2B2FD2B24AFDC32E3789A68E1CB17FCD;
步骤S7:根据第一数值、第二数值、第三数值和第四数值得到结果数据;
如第一寄存器中的大数和第二寄存器中的大数是二等分,则步骤S7具体包括:将第一数值、第二数值、第三数值和第四数值进行或运算得到结果数据;
如第一寄存器中的大数和第二寄存器中的大数不是二等分,则步骤S7包括:将第一数值与第四数值进行或运算得到第一运算结果,将第二数值与第三数值进行相加运算得到第二运算结果,将第一运算结果与第二运算结果进行或运算得到结果数据;
在本实施例中,结果数据的长度大于协处理器可以处理的数据的长度,在本实施例的具体实例中得到的结果数据=Ox6E7490AD99E4FC73C22972DBC464854954D227CE3E69A5CD9D58EA3921E09E2AEAD5DAE1F79655F9A01F51C9514F9AE45740BA930BDB7F6A420989F0111B8DDA0639B31B7C510668A6F225326AD0F2CF6580201ADD62339D05A531D51071F87B0364E10393B5A4B685A7F539E366B1BC4BA61AEA35D9C38C753315EA75E2A49DBAC0E93462B8002131B8265D4F9EF3776F1ED36E67F2CC5483217A84D86E6D03D7C22B2E66D270397B2A8433B62BADEF3C8435186333641B68FE5B2300DA1459BCAAE26845931DC59A076EFBFB4A506E7861C3CB00011922629AAF6E7013ECC4ED9E415F211F91558D086E5277BC7C88A804EDBEB80EAC3E36E1E1BD2AA45EB667920D9530B7012EB65C64B34C487677C1C0C74D4BFDC3066CF2AE6533DA83C67F84FB605B97A6CD0857E2044DD732C6BE1F5E062303A608530F6DF68D2A2EA254BCB9DF0D3C3D1BD5B5E9705E44C2C4442EE78A6561F9DEF5200986FF588B86BDAEB7CA877224C4FD1C3B045C5EE7C976FFB25A6EA50BE15B3BF4821CC13C03BC490408B16AF665509CA5023AE51D078DEBA10C10FB24BB83681257AE5BE4FAA59E4DC3DE3A2E940C6BF13B5B60969A02ED574EFC30C2C39E8EB5E6BA4F4D00900E4A2CEBE1CC9E6980C4A94AA07BFDE550206E824A2A67B51F0D11878614C07112C9ABCDA669EE0FBA5DA208CE9A1A2B2FD2B24AFDC32E3789A68E1CB17FCD。
实施例二
本发明实施例二提供一种基于协处理器的数据处理方法,具体是将两个2048比特的大数进行二等分,然后使用协处理器根据Montgomery算法来实现两个大数进行处理的实现过程,如图2所示,本实施例的方法包括:
步骤101:获取两个大数p、q并将其分别存储到第一寄存器和第二寄存器中;
具体的,本实施例中的p、q的长度均为2048bit;协处理器可以处理的数据长度为2304bit;
例如,在本实施例中,第一寄存器为(ADDR_CRYP_CR3),存储的大数p为:0xD0F8EFBB18CD6A905676F6D228AF6AC8AF1BAE2A6FAA8689ACE9159CF4F6C8CAAF0A8BBA66C5F1F0312FFFC191BE232D9EDF6A9A15EF72FF5B96257E1FD02DA6C4A35C70B13E6DF99F7DC07A7E314A8FAFE45D3C1B8AB306AE7AA28E09C9E6CC70BF657F6D1B83C1E7F89A85EE0363170E633F1447F5D27590C15BA7DFC68BE883BE6C9A46346759F8BE033C57BC5F75ECB465FC9FB7628B08A2CF32E297E17C2166A696EB29BA7FE5A9B04D2CD392D2172AEBDFAF24E6C2EB9EF818B4A44B77AE3108CD1BB1E2981D3ABE3E9ABD52048C5143FE1FB0F870AAC1343152835A573257EF1D1D7BC89DF96A457F988889714C01F1AB0371556ED2210EBE4325F3F3;
第二寄存器为(ADDR_CRYP_CR7),存储的大数q为0x874FFBAB5CCB521A991BEA2606AF99DB98D44AC034250E8BE7912551C256D039A5B895382733B313F8C0E47B5CD6CDD4600A805EC7F717FC3450EDA0FB00597A71A3566AAFCB2E0414F510CFAD319CE20A010ADFD1580E97A8F5FDDD3754F23903E1BB717BDE5A1ADC0BADC47CF4E3F3281137336744A8E5F3621CA1D89A1B522F54C6C66E7136CA2083D5B2B96F9F997813699204AB81B560158FB2BA259173A3A624EB370B29F32CD4840CCEC7E3195FCEF10A2644DBEE3D9BD0CCC96F51B8CF31028052D6035F5C2C572504A94BE2AF4765607D752B6D259DB89FFD12C4121A6C039306DD0A0315033DA45B9739D28ECA5D016A5536B38AC029A531CC2573;
步骤102:分别对第一寄存器和第二寄存器的两个大数p、q进行分组得到pH、pL和qH、qL;
优选的,在本实施例中,pH、pL和qH、qL的长度均为1024bit,其中p=pH*2^1024+pL,q=qH*2^1024+qL;
例如,在本实施例中,pH=0xD0F8EFBB18CD6A905676F6D228AF6AC8AF1BAE2A6FAA8689ACE9159CF4F6C8CAAF0A8BBA66C5F1F0312FFFC191BE232D9EDF6A9A15EF72FF5B96257E1FD02DA6C4A35C70B13E6DF99F7DC07A7E314A8FAFE45D3C1B8AB306AE7AA28E09C9E6CC70BF657F6D1B83C1E7F89A85EE0363170E633F1447F5D27590C15BA7DFC68BE8;
pL=0x83BE6C9A46346759F8BE033C57BC5F75ECB465FC9FB7628B08A2CF32E297E17C2166A696EB29BA7FE5A9B04D2CD392D2172AEBDFAF24E6C2EB9EF818B4A44B77AE3108CD1BB1E2981D3ABE3E9ABD52048C5143FE1FB0F870AAC1343152835A573257EF1D1D7BC89DF96A457F988889714C01F1AB0371556ED2210EBE4325F3F3;
qH=0x874FFBAB5CCB521A991BEA2606AF99DB98D44AC034250E8BE7912551C256D039A5B895382733B313F8C0E47B5CD6CDD4600A805EC7F717FC3450EDA0FB00597A71A3566AAFCB2E0414F510CFAD319CE20A010ADFD1580E97A8F5FDDD3754F23903E1BB717BDE5A1ADC0BADC47CF4E3F3281137336744A8E5F3621CA1D89A1B52;
qL=0x2F54C6C66E7136CA2083D5B2B96F9F997813699204AB81B560158FB2BA259173A3A624EB370B29F32CD4840CCEC7E3195FCEF10A2644DBEE3D9BD0CCC96F51B8CF31028052D6035F5C2C572504A94BE2AF4765607D752B6D259DB89FFD12C4121A6C039306DD0A0315033DA45B9739D28ECA5D016A5536B38AC029A531CC2573;
步骤103:将pH和qH分别存储到第三寄存器和第四寄存器中,然后使用协处理器对第三寄存器和第四寄存器中的数据进行计算得到第一中间计算结果;
具体的,在本实施例中,调用指令SetCryptoInst(CLR_Z)、SetCryptoInst(STORE_C_Z)、SetCryptoInst(STORE_N_Z),将pH,qH分别放到第三寄存器MoveData((ADDR_CRYP_C)+32,pH,32)和第四寄存器MoveData(ADDR_CRYP_N),qH,32)中;
在本实施例中,使用协处理器对第三寄存器和第四寄存器中的数据进行计算得到第一中间计算结果的具体实现过程如图3所示,包括:
步骤103-1:使用协处理器对第三寄存器中的数据和第四寄存器中的数据进行乘法运算得到第四中间数据;
步骤103-2:使用协处理器对第三中间数据与第四中间数据进行乘法运算,然后用乘积对第一中间数据取模得到第五中间数据;
其中,第一中间数据是2的1024次方的幂值;第三中间数据是对2的1024次方的幂值减1的差值模第一中间数据逆元得到的结果;
步骤103-3:使用协处理器对第二中间数据与第五中间数据进行乘法运算,用乘积与第四中间数据相加运算,用相加结果除以第一中间数据得到第六中间数据;
其中,第二中间数据是2的1024次方的幂值减1的差值;
步骤103-4:使用协处理器判断第六中间数据是否小于第二中间数据,是则将第二中间数据作为第一中间计算结果,否则将第六中间数据与第二中间数据的差值作为第一中间计算结果;
例如,本实施例中得到的第一中间计算结果为:0x6E7490AD99E4FC73C22972DBC464854954D227CE3E69A5CD9D58EA3921E09E2AEAD5DAE1F79655F9A01F51C9514F9AE45740BA930BDB7F6A420989F0111B8DDA0639B31B7C510668A6F225326AD0F2CF6580201ADD62339D05A531D51071F87B0364E10393B5A4B685A7F539E366B1BC4BA61AEA35D9C38C753315EA75E2A49D4E7B6CB3189A78D117A5F8B80DBC1E41137506E71EF10942134E8E951F6C736680869C57E9D04852A255E08BD15040AC00C3E0EFF50736A1C387B494A01A74C43EA21E00603A01A642EC65782F790EBE6DE79695BE03AFF90B331D3A51896E861EA3FFD83394085C30A23104BE61BB837C256999602591F7C46190C387EA4850;
步骤104:将pH和qL存储到第三寄存器和第四寄存器,然后使用协处理器对第三寄存器和第四寄存器中的数据进行计算得到第二中间计算结果;
在本实施例中,步骤104的具体实现过程与步骤103相同,在此不再赘述;
例如,本实施例中得到的第二中间计算结果为:0x26A2E7F4870D5B793E4FD7FA7E888E7F5E5849CAA3A8C12CBF3069A48C126F3ED96A22B9A425F4B0254442F80BE61A9AE592B16FB5B4EC1B4FC6DE096555504BFC247E4253FF1AC618BA36099F45890805DB26B58A77EEF2E248947B83E840F5864AD2CCF34A2FA6F2F407BE2A461B096EAC9E22469C8F5C6FA8C8D0EE68F8E91E4450F0F13F2FC0F31D5ECB5B9BD94CDE4E24BF1A8B2044057339A7CFF2B85C5D44C0A2D09C943A7EB0940AF9B49CA6BBD68D71CD96364E49FC79486A564E3C15EC35962A9D2C1152364046C4A8056CBCEA0245DFA1FBE99F04F86F1928BFC8036F17542C94108FABF00C6AEFCC3F6EF494C6696F727AF22A1717481D496138;
步骤105:将pL和qH存储到第三寄存器和第四寄存器,然后使用协处理器对第三寄存器和第四寄存器中的数据进行计算得到第三中间计算结果;
在本实施例中,步骤105的具体实现过程与步骤103相同,在此不再赘述;
例如,本实施例中得到的第三中间计算结果为:0x45A2948CC3102BD6DBC255AAC35A46B6FD5182BCA55901E5B0A2824B2CEF8A5E7DD16C1CD8DC3336B39060AFD8F552A8562DA2B8B877415E55AFC884FB6A4F4981E44625915A01593E60D37A2C8BB8A8049F067FB7857A36751EFDB89AA23D4948AF6EB9FA4159526972358F8F14A5FBBD32E603114C8AEA02D78828B4511DFD6E70C696EDBC23BEE6A59645134F9124F4FEF3E7D124FECD117B1D7DF3223C750075DB4CA52B6F1BF53DA4C566B385EA6EC2F22C34E69CE680D93C7CDBFC595A1953C6230EB61EF287328FB86A59028E5D7066E1302B39E27C5076AA7762FDC9CCD30F15D7CD99F73A3165BA68296D29824DC5A281D6DA729FD434834B10C4D6;
步骤106:将pL和qL存储到第三寄存器和第四寄存器,然后使用协处理器对第三寄存器和第四寄存器中的数据进行计算得到第四中间计算结果;
在本实施例中,步骤106的具体实现过程与步骤103相同,在此不再赘述;
例如,本实施例中得到的第四中间计算结果为:0x185B96B75BA00FB4ACD16AFD7E08EC309CDED33B6DFF7BA6433D678948E47A438EEC6B5B3C97E8E19767BA5C6A76A6248364BD2404ACA9EC598154C57E583B09F92391AAF62742E772AC1C34704D83FF4C889DE541637BF9965A656800060A474CF2641EBB463C503DFA8C5AAB4AC59D5BEA1F9385D289F7A8D240C8FE9D288A7155D5A98F9B12D30989BADC664240368318718D547922A580BF6800DA419541701B1609F9F3BB8220A08700A515168E40A893E54373711E2179C93BDA8570DAC7B598D11336395F786607FB4F3EECFB278D5B4A0EB5D5DEAFCFC1169D07DEB410368A632735747C216CB98A92D0E324D391A0912407CB94A63B0BBB8EF2B529;
步骤107:将第二中间计算结果与第三中间计算结果相加得到第五中间计算结果,并将第五中间计算结果左移1024位;
步骤108:将第一中间计算结果左移2048位;
步骤109:将移位后的第一中间计算结果、移位后的第五中间计算结果和第四中间计算结果进行或运算得到结果数据;
例如,本实施例中得到的结果数据为:0x6E7490AD99E4FC73C22972DBC464854954D227CE3E69A5CD9D58EA3921E09E2AEAD5DAE1F79655F9A01F51C9514F9AE45740BA930BDB7F6A420989F0111B8DDA0639B31B7C510668A6F225326AD0F2CF6580201ADD62339D05A531D51071F87B0364E10393B5A4B685A7F539E366B1BC4BA61AEA35D9C38C753315EA75E2A49DBAC0E93462B8002131B8265D4F9EF3776F1ED36E67F2CC5483217A84D86E6D03D7C22B2E66D270397B2A8433B62BADEF3C8435186333641B68FE5B2300DA1459BCAAE26845931DC59A076EFBFB4A506E7861C3CB00011922629AAF6E7013ECC4ED9E415F211F91558D086E5277BC7C88A804EDBEB80EAC3E36E1E1BD2AA45F36A510AE3F3A9B63348694600DECF456A2702BEBE259AF9AB75A2BBEAF0BF96F14ECA7074AB25FEC380B55F32CCADEC8B5ADFE3CC207297D2124570A8AC4AAE2A028638D642F7A8DEB4C14EC339F4E8BFA66E3070C5130B1C5B1AFD4819091C7D91D348A88BFA7E6D7241BFE8003407235D2CCAB9F771BDF5C72BD8C9466F74E987155D5A98F9B12D30989BADC664240368318718D547922A580BF6800DA419541701B1609F9F3BB8220A08700A515168E40A893E54373711E2179C93BDA8570DAC7B598D11336395F786607FB4F3EECFB278D5B4A0EB5D5DEAFCFC1169D07DEB410368A632735747C216CB98A92D0E324D391A0912407CB94A63B0BBB8EF2B529。
在本实施例中,最后得到的结果数据可以输出,或者在生成密钥过程、加解密过程、签名过程中来进行使用。
本发明的方案是通过将两个大数分段后进行处理,来提高计算效率,进而高效率地实现生成密钥、加解密和签名的过程。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (10)

1.一种基于协处理器的数据处理方法,其特征在于,包括:
步骤S1:获取两个大数并将所述两个大数分别存储到第一寄存器和第二寄存器中;
步骤S2:对所述第一寄存器中的大数进行分组得到第一高段数据和第一低段数据,对所述第二寄存器中的大数进行分组得到第二高段数据和第二低段数据;所述第一高段数据的长度、第一低段数据的长度、第二高段数据的长度和第二低段数据的长度均小于所述协处理器可以处理的数据的长度;
步骤S3:使用所述协处理器对所述第一高段数据和所述第二高段数据进行计算,根据第一高段数据和第二高段数据的总长度对计算结果进行左移得到第一数值;
步骤S4:使用所述协处理器对所述第一高段数据和所述第二低段数据进行计算,根据第一高段数据的长度对计算结果进行左移得到第二数值;
步骤S5:使用所述协处理器对所述第一低段数据和所述第二高段数据进行计算,根据第二高段数据的长度对计算结果进行左移得到第三数值;
步骤S6:使用所述协处理器对所述第一低段数据和所述第二低段数据进行计算,将计算结果作为第四数值;
步骤S7:根据所述第一数值、所述第二数值、所述第三数值和第四数值得到结果数据,所述结果数据的长度大于所述协处理器可以处理的数据的长度。
2.如权利要求1所述的方法,其特征在于,
所述对所述第一寄存器中的大数进行分组得到第一高段数据和第一低段数据,包括:按照预先设置的拆分方法对所述第一寄存器中的大数进行拆分得到第一高段数据和第一低段数据;
所述对所述第二寄存器中的大数进行分组得到第二高段数据和第二低段数据,包括:按照预先设置的拆分方法对所述第二寄存器中的大数进行拆分得到第二高段数据和第二低段数据。
3.如权利要求2所述的方法,其特征在于,所述预先设置的拆分方法为对等拆分;
所述按照预先设置的拆分方法对第一寄存器中的大数进行拆分得到第一高段数据和第一低段数据,具体为:
步骤a1:判断所述第一寄存器中的大数的长度是否为偶数,是则执行步骤a2,否则执行步骤a3;
步骤a2:对所述第一寄存器中的大数进行两等分得到所述第一高段数据和所述第一低段数据;
步骤a3:在所述第一寄存器中的大数前补0,对补位后的数据进行两等分得到所述第一高段数据和所述第一低段数据;
所述按照预先设置的拆分方法对所述第二寄存器中的大数进行拆分得到第二高段数据和第二低段数据,具体为:
步骤b1:判断所述第二寄存器中的大数的长度是否为偶数,是则执行步骤b2,否则执行步骤b3;
步骤b2:对所述第二寄存器中的大数进行两等分得到所述第二高段数据和所述第二低段数据;
步骤b3:在所述第二寄存器中的大数前补0,对补位后的数据进行两等分得到所述第二高段数据和所述第二低段数据。
4.如权利要求1所述的方法,其特征在于,所述步骤S3包括:
将所述第一高段数据和所述第二高段数据分别存储到第三寄存器和第四寄存器中,使用所述协处理器对所述第三寄存器和所述第四寄存器中的数据进行计算,根据第一高段数据和第二高段数据的总长度对计算结果进行左移得到第一数值。
5.如权利要求1所述的方法,其特征在于,所述步骤S4包括:
将所述第一高段数据和所述第二低段数据分别存储到第三寄存器和第四寄存器中,使用所述协处理器对所述第三寄存器和所述第四寄存器中的数据进行计算,根据第一高段数据的长度对计算结果进行左移得到第二数值。
6.如权利要求1所述的方法,其特征在于,所述步骤S5包括:
将所述第一低段数据和所述第二高段数据分别存储到第三寄存器和第四寄存器中,使用所述协处理器对所述第三寄存器和所述第四寄存器中的数据进行计算,根据第二高段数据的长度对计算结果进行左移得到第三数值。
7.如权利要求1所述的方法,其特征在于,所述步骤S6包括:
将所述第一低段数据和所述第二低段数据分别存储到第三寄存器和第四寄存器中,使用所述协处理器对所述第三寄存器和所述第四寄存器中的数据进行计算,将计算结果作为第四数值。
8.如权利要求4-7任一项所述的方法,其特征在于,所述使用所述协处理器对所述第三寄存器和所述第四寄存器中的数据进行计算,具体包括:
步骤c1:使用所述协处理器对所述第三寄存器中的数据和所述第四寄存器中的数据进行乘法运算得到第四中间数据;
步骤c2:使用所述协处理器对第三中间数据与所述第四中间数据进行乘法运算,用得到的乘积对第一中间数据取模得到第五中间数据;所述第一中间数据是2的1024次方的幂值;所述第三中间数据是对2的1024次方的幂值减1的差值模所述第一中间数据逆元得到的结果;
步骤c3:使用所述协处理器对第二中间数据与所述第五中间数据进行乘法运算,用得到的乘积与所述第四中间数据进行相加运算,用相加结果除以所述第一中间数据得到第六中间数据;所述第二中间数据是2的1024次方的幂值减1的差值;
步骤c4:使用所述协处理器判断所述第六中间数据是否小于所述第二中间数据,是则将所述第二中间数据作为计算结果,否则将所述第六中间数据与所述第二中间数据的差值作为计算结果。
9.如权利要求3所述的方法,其特征在于,所述步骤S7包括:将所述第一数值、所述第二数值、所述第三数值和第四数值进行或运算得到结果数据。
10.如权利要求1所述的方法,其特征在于,所述步骤S7包括:将所述第一数值与所述第四数值进行或运算得到第一运算结果,将所述第二数值与所述第三数值进行相加运算得到第二运算结果,将所述第一运算结果与所述第二运算结果进行或运算得到结果数据。
CN201510173947.7A 2015-04-14 2015-04-14 一种基于协处理器的数据处理方法 Active CN104778147B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510173947.7A CN104778147B (zh) 2015-04-14 2015-04-14 一种基于协处理器的数据处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510173947.7A CN104778147B (zh) 2015-04-14 2015-04-14 一种基于协处理器的数据处理方法

Publications (2)

Publication Number Publication Date
CN104778147A CN104778147A (zh) 2015-07-15
CN104778147B true CN104778147B (zh) 2017-06-06

Family

ID=53619621

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510173947.7A Active CN104778147B (zh) 2015-04-14 2015-04-14 一种基于协处理器的数据处理方法

Country Status (1)

Country Link
CN (1) CN104778147B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997008608A1 (en) * 1995-08-31 1997-03-06 Intel Corporation A set of instructions for operating on packed data
CN101227286A (zh) * 2008-01-31 2008-07-23 北京飞天诚信科技有限公司 一种生成消息认证码的方法
CN102231102A (zh) * 2011-06-16 2011-11-02 天津大学 基于余数系统的rsa密码处理方法及协处理器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7930336B2 (en) * 2006-12-05 2011-04-19 Altera Corporation Large multiplier for programmable logic device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997008608A1 (en) * 1995-08-31 1997-03-06 Intel Corporation A set of instructions for operating on packed data
CN101227286A (zh) * 2008-01-31 2008-07-23 北京飞天诚信科技有限公司 一种生成消息认证码的方法
CN102231102A (zh) * 2011-06-16 2011-11-02 天津大学 基于余数系统的rsa密码处理方法及协处理器

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Design and Implementation of the MorphoSys Reconfigurable Computing Processor;Ming-Hau Lee 等;《Journal of VLSI Signal Processing Systems - Special issue on VLSI on custom computing technology》;20000331;第24卷(第2-3期);第1-29页 *
一种高性能大数模幂协处理器SEA;赵学秘 等;《计算机研究与发展》;20050630(第6期);第924-929页 *

Also Published As

Publication number Publication date
CN104778147A (zh) 2015-07-15

Similar Documents

Publication Publication Date Title
DE60121066T2 (de) Angriffsresistente kryptographische Verfahren und Vorrichtung
CN106452789B (zh) 一种多方位防侧信道攻击的签名方法
KR20150107784A (ko) 스칼라 또는 멱수와의 곱셈 연산을 포함하는 암호화 방법
CN106712930A (zh) 一种sm4加密方法及装置
CN106712965A (zh) 数字签名方法、装置以及密码设备
WO2019242562A1 (zh) 椭圆曲线多倍点运算方法和装置
Saxena et al. State of the art parallel approaches for RSA public key based cryptosystem
EP2243075B1 (en) An apparatus and a method for calculating a multiple of a point on an elliptic curve
CN108039947A (zh) 一种利用协处理器抗攻击的sm2签名方法
CN101470598A (zh) 提高大整数Montgomery模乘运算速度的方法
CN104778147B (zh) 一种基于协处理器的数据处理方法
CN103580869B (zh) 一种crt-rsa签名方法及装置
Choie et al. Implementation of Tate pairing on hyperelliptic curves of genus 2
JP2011512556A5 (ja) 楕円曲線上の点のスカラー倍を計算する装置及び方法
CN104660400A (zh) 一种rsa模幂运算方法和装置
CN104506316A (zh) 一种基于sm2基点的点乘运算方法
CN103401681B (zh) 取模方法、取模装置及芯片
CN103944714A (zh) 基于ecc实现抗dpa攻击的标量乘算法的方法及装置
CN104683102A (zh) 一种sm2签名计算方法和装置
CN104468100A (zh) 改进的滑动窗口模幂计算方法
WO2015199675A1 (en) System and method for securing scalar multiplication against differential power attacks
CN104461469A (zh) 一种采用gpu并行化实现sm2算法的方法
CN106685643B (zh) Crt模式下公钥验证的方法及装置
Venturini et al. Performance analysis of parallel modular multiplication algorithms for ECC in mobile devices
Choi Lightweight ECC coprocessor with resistance against power analysis attacks over NIST prime fields

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant