PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
×éÖ¯£º PKIÂÛ̳ £¨http://www.pki.com.cn£©
PKCS/PKIXÖÐÎÄ·Òë¼Æ»® ÂÛ̳E-mail£ºpki@pki.com.cn
ÒëÕߣº Cece
°æȨ£º±¾ÖÐÎÄ·ÒëÎĵµ°æȨ¹éPKIÂÛ̳µÄ×¢²áÓû§Ëù¹²ÓС£¿ÉÒÔÓÃÓÚ·ÇÉÌÒµÓÃ;×ÔÓÉתÔØ£¬µ«±ØÐë±£Áô±¾ ÎĵµµÄ·Òë¼°°æȨÐÅÏ¢¡£ÈçÓÃÓÚÉÌҵĿµÄ£¬ËùµÃÀûÈóÐèÓÃÓÚPKIÂÛ̳µÄ·¢Õ¹¡£
¸ü¸Ä¼Ç¼
ÈÕÆÚ 2004/01/15 ÐÞ¸ÄÕÂ½Ú ÀàÐÍ C ÐÞ¸ÄÃèÊö ´´½¨Îĵµ ÐÞ¸ÄÈË Cece * ÐÞ¸ÄÀàÐÍ·ÖΪ C-CREATE A - ADDED M - MODIFIED D - DELETED
PKCS #1 v2.1 RSA Ëã·¨±ê×¼
RSAʵÑéÊÒ 2002Äê6ÔÂ14ÈÕ
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
Ŀ¼
Ŀ¼ ..........................................................................................................................................................................................................2 1 ½éÉÜ....................................................................................................................................................................................................4 2 ·ûºÅ....................................................................................................................................................................................................5 3 ÃÜÔ¿ÀàÐÍ...........................................................................................................................................................................................7 3.1 RSA ¹«Ô¿ ..................................................................................................................................................................................7 3.2 RSA ˽Կ ..................................................................................................................................................................................7 4 Êý¾Ýת»»ÔÓï ..................................................................................................................................................................................9 4.1 I2OSP..........................................................................................................................................................................................9 4.2 OS2IP..........................................................................................................................................................................................9 5 ÃÜÂëÔÓï.......................................................................................................................................................................................10 5.1 ¼ÓÃܺͽâÃÜÔÓï ....................................................................................................................................................................10 5.1.1 RSAEP..............................................................................................................................................................................10 5.1.2 RSADP ............................................................................................................................................................................. 11 5.2 Ç©ÃûºÍÑéÖ¤ÔÓï ....................................................................................................................................................................12 5.2.1 RSASP1 ............................................................................................................................................................................12 5.2.1 RSAVP1............................................................................................................................................................................13 6 ·½°¸¸ÅÊö.........................................................................................................................................................................................13 7 ¼ÓÃÜ·½°¸.........................................................................................................................................................................................14 7.1 RSAES-OAEP.........................................................................................................................................................................15 7.1.1 ¼ÓÃÜÔËËã .........................................................................................................................................................................17 7.1.2 ½âÃÜÔËËã .........................................................................................................................................................................20 7.2 RSAES-PKCS1-V1_5 ............................................................................................................................................................21 7.2.1 ¼ÓÃÜÔËËã .........................................................................................................................................................................22 7.2.2 ½âÃÜÔËËã .........................................................................................................................................................................23 8 ´ø¸½ÊôµÄÇ©Ãû·½°¸ .......................................................................................................................................................................24 8.1 RSASSA-PSS ..........................................................................................................................................................................25 8.1.1 Ç©ÃûÉú³ÉÔËËã ................................................................................................................................................................26 8.1.2 Ç©ÃûÑéÖ¤ÔËËã ................................................................................................................................................................27 8.2 RSASSA-PKCS1-V1_5 .........................................................................................................................................................28 8.2.1 Ç©ÃûÉú³ÉÔËËã ................................................................................................................................................................29 8.2.2 Ç©ÃûÑéÖ¤ÔËËã ................................................................................................................................................................29 9 ´ø¸½ÊôµÄÇ©ÃûµÄ±àÂë·½·¨..........................................................................................................................................................31 9.1 EMSA-PSS ..............................................................................................................................................................................31
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
9.1.1 ±àÂëÔËËã .........................................................................................................................................................................33 9.1.2 ÑéÖ¤²Ù×÷ .........................................................................................................................................................................34 9.2 EMSA-PKCS1-V1_5..............................................................................................................................................................35 A ASN.1 Óï·¨...................................................................................................................................................................................37 A.1 RSA ÃÜÔ¿±íʾ.......................................................................................................................................................................37 A.1.1 RSA¹«Ô¿Óï·¨................................................................................................................................................................37 A.1.2 RSA˽ԿÓï·¨................................................................................................................................................................37 A.2 ·½°¸±êʶ.................................................................................................................................................................................39 A.2.1 RSAES-OAEP.................................................................................................................................................................39 A.2.2 RSAES-PKCS1-v1_5 .....................................................................................................................................................42 A.2.3 RSASSA-PSS...................................................................................................................................................................42 A.2.4 RSASSA-PKCS1-v1_5...................................................................................................................................................43 B Ö§³Å¼¼Êõ ........................................................................................................................................................................................44 B.1 É¢Áк¯Êý .................................................................................................................................................................................45 B.2 ÑÚÄ£Éú³Éº¯Êý ........................................................................................................................................................................46 B.2.1 MGF1 ..............................................................................................................................................................................46 C ASN.1 Ä£¿é ..................................................................................................................................................................................47 D ֪ʶ²úȨÒòËØ ...............................................................................................................................................................................55 E ÐÞ¶©ÀúÊ· ........................................................................................................................................................................................56 F ²Î¿¼Îĵµ ........................................................................................................................................................................................56
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
1 ½éÉÜ
ÕâƪÎĵµÊǽéÉÜ»ùÓÚRSAËã·¨[42]µÄ¹«Ô¿ÃÜÂëϵͳµÄʵÏÖ·½·¨µÄ£¬Ëü°üÀ¨ÒÔϼ¸¸ö·½Ã棺 ? ? ? ?
ÃÜÂëÔÓï ¼ÓÃÜ·½°¸
´ø¸½ÊôµÄÇ©Ãû·½°¸ ÃÜÔ¿ºÍ·½°¸µÄASN.1ÃèÊö
±¾ÎĵµÊÇΪ¼ÆËã»úºÍͨÐÅϵͳµÄÒ»°ãÓ¦ÓÃÒÔ¼°¾ßÓÐÒ»¶¨Áé»îÐÔµÄϵͳÖеÄÒ»°ãÓ¦ÓÃËù±àдµÄ¡£Ï£Íû»ùÓÚÕâЩ¹æ·¶µÄÓ¦Óñê×¼¿ÉÒÔÊÊÓÃÓÚÆäËüµÄ¹æ·¶¡£±¾ÆªÎĵµÈ·¶¨ÒªÓëIEEE-1363-2000 [26]±ê×¼ÒÔ¼°ANSI X9F1 [1] ºÍIEEE P1363 [27]¹¤×÷×鵱ǰÕýÔÚ¿ª·¢µÄ²ÝÄâ±ê×¼¼æÈÝ¡£
±¾ÎĵµÊÇPKCS #1 V2.0[44]µÄºóÐø°æ±¾£¬µ«ÊÇ°üº¬Á˼æÈݼ¼Êõ¡£ ÏÂÃæËùÁÐΪ±¾ÆªÎĵµµÄ×éÖ¯½á¹¹£º ? ? ? ?
µÚÒ»²¿·ÖÊǽéÉÜ¡£
µÚ¶þ²¿·ÖÊǶÔÎĵµÖÐʹÓõ½µÄ·ûºÅµÄ¶¨Òå¡£ µÚÈý²¿·ÖÏêϸ˵Ã÷ÁËRSA¹«Ô¿ºÍ˽ԿµÄÀàÐÍ¡£
µÚËIJ¿·ÖºÍµÚÎ岿·ÖÏêϸ˵Ã÷Á˼¸¸öÔÓ»òÕß˵ÊÇ»ù±¾Êýѧ²Ù×÷¡£µÚËIJ¿·ÖÏêϸ˵Ã÷ÁËÊý¾Ýת»»ÔÓµÚÎ岿·ÖÏêϸ˵Ã÷ÁËÃÜÂëϵͳÔÓ¼ÓÃÜ¡ª¡ª½âÃÜ¡¢Ç©Ãû¡ª¡ªÑéÖ¤£©¡£ ?
±¾ÎĵµÖеĵÚÁù¡¢ÆߺͰ˲¿·ÖÉæ¼°¼ÓÃܺÍÇ©ÃûµÄ·½°¸¡£µÚÁù²¿·ÖÊǸÅÊö¡£Á¬Í¬ÔÚPKCS #1 V1.5ÖнéÉܵķ½·¨Ò»Æ𣬵ÚÆß²¿·Ö¶¨ÒåÁË»ùÓÚOAEP[3]µÄ¼ÓÃÜ·½°¸ºÍµÚ°Ë²¿·Ö¶¨ÒåÁË»ùÓÚPSS[4][5]µÄ´ø¸½ÊôµÄÇ©Ãû·½°¸¡£. ? ? ? ? ?
µÚ¾Å²¿·ÖÏêϸ˵Ã÷ÁËÔڵڰ˲¿·ÖÖж¨ÒåµÄÇ©Ãû·½°¸µÄ±àÂë·½·¨¡£
¸½Â¼AÏêϸ˵Ã÷Á˹ØÓÚÔÚµÚÈý²¿·ÖÖж¨ÒåµÄÃÜÔ¿ÒÔ¼°µÚÆß¡¢°ËÕÂÖеķ½°¸µÄASN.1ÃèÊö¡£ ¸½Â¼BÏêϸ˵Ã÷Á˱¾ÎĵµÓõ½µÄÉ¢Áк¯ÊýºÍÑÚÄ£Éú³Éº¯Êý£¬°üÀ¨ÕâЩ¼¼ÊõµÄASN.1ÃèÊö¡£ ¸½Â¼C¸ø³öÒ»¸öASN.1Ä£¿é¡£
¸½Â¼D¡¢E¡¢FºÍGÉ漰֪ʶ²úȨÎÊÌ⣬¸ÅÊöÁËPKCS #1µÄÐÞ¶©ÀúÊ·£¬ÁгöÁËÆäËü²Î¿¼³ö°æÎïºÍ±ê×¼£¬ÌṩÁ˹ØÓÚ¹«Ô¿ÃÜÂëϵͳ±ê×¼µÄÒ»°ãÐÅÏ¢¡£
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
2 ·ûºÅ
c C d di
ÃÜÎÄ´ú±í£¬ÊÇÒ»¸ö½çÓÚ0~n-1Ö®¼äµÄÕûÊý¡£ ÃÜÎÄ£¬ÊÇÒ»¸ö°Ëλ×é´® RSA ˽ÓÐÃÝ
ÆäËüÒò×Óri µÄCRTÃÝ£¬ÊÇÒ»¸öÂú×ãÏÂʽµÄÕýÕûÊý£º
e ¡¤ di ? 1 (mod ?ri ¨C 1)), i = 3, ¡, u
dP
pµÄCRTÃÝ£¬ÊÇÒ»¸öÂú×ãÏÂʽµÄÕýÕûÊý
e ¡¤ dP ? 1 (mod ?p ¨C 1))
dQ
qµÄCRTÃÝ£¬ÊÇÒ»¸öÂú×ãÏÂʽµÄÕýÕûÊý
e ¡¤ dQ ? 1 (mod ?q ¨C 1))
e
RSA¹«¿ªÃÝ
±àÂëºóµÄÏûÏ¢£¬ÊÇÒ»¸ö°Ëλ×é´®
£¨ÆÚÍûµÄ£© ±àÂëÏûÏ¢EM µÄÒÔ±ÈÌØΪ¼ÆÁ¿µ¥Î»µÄ³¤¶È £¨ÆÚÍûµÄ£©±àÂëÏûÏ¢EM µÄÒÔ°Ëλ×éΪ¼ÆÁ¿µ¥Î»µÄ³¤¶È Á½¸ö·Ç¸ºÕûÊýµÄ×î´ó¹«Ô¼Êý ¹þÏ£º¯Êý
É¢Áк¯ÊýHashµÄÊä³öµÄÒÔ°Ëλ×éΪ¼ÆÁ¿µ¥Î»µÄ³¤¶È RSAºÏÊýÄ£ nµÄÒÔ°Ëλ×éΪ¼ÆÁ¿µ¥Î»µÄ³¤¶È RSA ˽Կ
¿ÉÑ¡µÄRSAES-OAEP ±êÇ©£¬ÊÇÒ»¸ö°Ëλ×é´® һϵÁзǸºÕûÊýµÄ×îС¹«±¶Êý
ÏûÏ¢´ú±í£¬ÊÇÒ»¸ö½çÓÚ0µ½n ¨C 1µÄÕûÊý ÏûÏ¢£¬ÊÇÒ»¸ö°Ëλ×é´® MGFµÄÊä³ö£¬ÊÇÒ»¸ö×Ö½Ú´®
£¨ÆÚÍûµÄ£©ÑÚÄ£µÄÒÔ°Ëλ×éΪ¼ÆÁ¿µ¥Î»µÄ³¤¶È ÑÚÄ£Éú³Éº¯Êý
Éú³ÉÑÚÄ£µÄÖÖ×ÓÒòÊý£¨seed£©£¬ÊÇÒ»¸ö°Ëλ×é´®
EM emBits emLen
GCD (. , .) Hash hLen k K L
LCM (. , ¡ , .) m
M mask
maskLen MGF
mgfSeed
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
mLen n
ÏûÏ¢M µÄÒÔ°Ëλ×éΪ¼ÆÁ¿µ¥Î»µÄ³¤¶È RSAºÏÊýÄ££¬ n = r1 ¡¤ r2 ? ¡ ¡¤ ru , u ? 2 RSA¹«Ô¿
RSAºÏÊýÄ£ nµÄÇ°Á½¸öËØÊýÒò×Ó
CRTϵÊý£¬ÊǸöÂú×ãÏÂʽÇÒСÓÚpµÄÕýÕûÊý
q ¡¤ qInv ? 1 (mod p)
(n, e) p, q qInv
ri s S
RSAºÏÊýÄ£ nµÄËØÊýÒò×Ó£¬ °üÀ¨r1 = p, r2 = q, ÒÔ¼°ÈκÎÁíÍâµÄÒò×Ó Ç©Ãû´ú±í£¬ÊÇÒ»¸öλÓÚ 0µ½ n ¨C 1Ö®¼äµÄÕûÊý Ç©Ãû£¬ÊÇÒ»¸ö°Ëλ×é´®
EMSA-PSS ÑΣ¨salt£©µÄÒÔ°Ëλ×éΪ¼ÆÁ¿µ¥Î»µÄ³¤¶È
ÆäËüËØÊýÒòÊýri µÄCRTϵÊý£¬ ÊÇÒ»¸ö±Èri СµÄÕýÕûÊý£¬Âú×ãÏÂʽ
r1 ¡¤ r2 ¡¤ ¡ ¡¤ ri¨C1 ¡¤ ti ? 1 (mod ri) , i = 3, ¡, u
sLen ti
u x X
?
?
RSAºÏÊýÄ£µÄËØÊýÒò×ӵĸöÊý, u ? 2 Ò»¸ö·Ç¸ºÕûÊý
Óëx ¶ÔÓ¦µÄÒ»¸ö°Ëλ×é´® £¨Ö¸¶¨µÄ£©°Ëλ×é´®X µÄ³¤¶È
Ò»¸ö°Ëλ×é»ò°Ëλ×é´®µÄÊ®Áù½øÖƱíʾ·¨µÄ±êÖ¾£»¡°0x48¡± ±íʾʮÁù½øÖÆֵΪ48µÄ×Ö½Ú; ¡°(0x)48 09 0e¡± ±íʾÈý¸öÁ¬ÐøµÄ×Ö½Ú£¬ËüÃǵÄÊ®Áù½øÖÆÖµ·Ö±ðΪ48, 09, ºÍ0e LCM (r1 ¨C 1, r2 ¨C 1, ¡ , ru ¨C 1) Á½¸ö°Ëλ×é´®µÄλÒì»ò²Ù×÷
È¡Õûº¯Êý£»?x??ÊÇÒ»¸ö´óÓÚ»òµÈÓÚʵÊýx µÄ×îСÕûÊý¡£ »ò²Ù×÷
ͬÓà·ûºÅ£»a ? b (mod n) ±íʾÄÜÓÃÕûÊýnÕû³ýÕûÊýa ¨C b
xLen 0x
?(n) ? ? . ???|| ?
×¢ÊÍ£ºCRT¼È¿ÉÒÔÓÃÓڵݹ鷽ʽ£¬Ò²¿ÉÒÔÓÃÓڷǵݹ鷽ʽ¡£ÔÚ±¾ÆªÎĵµÖÐʹÓÃÁËÔÚGarnerËã·¨[22]Ö®ºóµÄÒ»Öֵݹ鷽ʽ¡£Çë²Î¿´0½ÚÖеÄ×¢ÊÍ1¡£
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
3 ÃÜÔ¿ÀàÐÍ
ÔÚ±¾ÆªÎĵµ¶¨ÒåµÄÔÓïºÍ·½°¸ÖУ¬Ê¹ÓÃÁËÁ½ÖÖÃÜÔ¿ÀàÐÍ£ºRSA¹«Ô¿ºÍRSA˽Կ¡£RSA¹«Ô¿ºÍRSA˽ԿһÆð¹¹³ÉÒ»¸öRSAÃÜÔ¿¶Ô¡£
±¾Æª¹æ·¶Ö§³ÖËùνµÄ¡°¶àËØÊý¡±RSA£¬ÕâÖÖRSAµÄºÏÊýÄ£¿ÉÄÜÓÉÁ½¸öÒÔÉϵÄËØÊýÒò×Ó¹¹³É¡£¶àËØÊýRSAµÄÓŵãÔÚÓÚ£¬µ±Ê¹ÓÃCRT£¨ÖйúÓàÊý¶¨Àí£©£¬Ëü¾ÍÄܼõÉÙ½âÃܺÍÇ©ÃûÔÓïµÄ¼ÆË㿪Ïú¡£ÕâÔÚµ¥´¦ÀíÆ÷ƽ̨ÉÏÄÜ»ñµÃ¸üºÃµÄÐÔÄÜ£¬µ«ÊÇÔڶദÀíÆ÷ƽ̨Éϲ»Ò»¶¨£¬ÔڶദÀíÆ÷ƽ̨ÉÏ¿ÉÒÔ²¢Ðд¦ÀíºÏÊýÄ£µÄÃÝÔËËã¡£
ÖÁÓÚ¶àËØÊýÈçºÎÓ°ÏìRSAÃÜÂëϵͳµÄ°²È«ÐÔ£¬Çë¶ÁÕ߲ο¼[49]¡£
3.1 RSA ¹«Ô¿
ΪÁËÕâƪÎĵµÆð¼û£¬Ò»¸öRSA¹«Ô¿ÓÉÁ½²¿·Ö¹¹³É£º
n e
RSAºÏÊýÄ££¬ÊÇÒ»¸öÕýÕûÊý RSA¹«¿ªÃÝ£¬ÊÇÒ»¸öÕýÕûÊý
ÔÚÒ»¸öÓÐЧµÄRSA¹«Ô¿ÖУ¬RSAºÏÊýÄ£nÊÇÓÉu ¸ö²»Í¬µÄÆæËØÊýriÉú³ÉµÄ£¬i = 1, 2, ¡, u, ÆäÖÐu ? 2£¬¶øRSA¹«¿ªÃÝeÊÇÒ»¸öλÓÚ3~n ¨C 1Ö®¼äµÄÕûÊý£¬Âú×ãGCD (e, ?(n)) = 1£¬ÆäÖÐ?(n) = LCM (r1 ¨C 1, ¡, ru ¨C 1)¡£°´ÕÕ¹ßÀý£¬Í¨³£ÓÃp ºÍq·Ö±ðºÏÊýÄ£µÄÇ°Á½¸öËØÊýÒò×Ór1 ºÍr2¡£
ÔÚÉ豸֮¼ä»¥»»RSA¹«Ô¿µÄÒ»¸öÍƼöÃèÊöÔÚ¸½Â¼0Öиø³ö£»É豸ÖеÄÄÚ²¿±íʾ¿ÉÄܲ»Í¬¡£
3.2 RSA ˽Կ
ΪÁ˱¾ÆªÎĵµÆð¼û£¬Ò»¸öRSA˽Կ¿ÉÒÔ²ÉÈ¡Á½ÖÖ±íʾ·¨ÖеÄÈκÎÒ»¸ö¡£ 1. µÚÒ»ÖÖ±íʾ·¨ÓÉÒ»¶ÔÕûÊý(n, d)¹¹³É£¬¸÷²¿·ÖµÄÒâÒåÈçÏ£º
n
RSAºÏÊýÄ££¬ÊÇÒ»¸öÕýÕûÊý RSA˽ÓÐÃÝ£¬ÊÇÒ»¸öÕýÕûÊý
d
2. µÚ¶þÖÖ±íʾ·¨ÓÉÒ»¸öÎåÔª×é(p, q, dP, dQ, qInv)ºÍһϵÁУ¨¿ÉÄÜΪ¿Õ£©ÈýÔª×é (ri, di, ti) i = 3, ¡, u¹¹³É£¬ÈýÔª×éµÄÿ¸öËØÊý²»³öÏÖÔÚÎåÔª×éÖУ¬¸÷²¿·ÖµÄÒâÒåÈçÏ£º
p q
µÚÒ»¸öÒò×Ó£¬ÊÇÒ»¸öÕýÕûÊý
µÚ¶þ¸öÒò×Ó£¬ÊÇÒ»¸öÕýÕûÊý
µÚÒ»¸öÒò×ÓµÄCRTÃÝ£¬ÊÇÒ»¸öÕýÕûÊý
dP
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
dQ qInv ri di
µÚ¶þ¸öÒò×ÓµÄCRTÃÝ£¬ÊÇÒ»¸öÕýÕûÊý £¨µÚÒ»¸ö£©CRTϵÊý£¬ÊÇÒ»¸öÕýÕûÊý µÚi¸öÒò×Ó,£¬ÊÇÒ»¸öÕýÕûÊý
µÚi¸öÒò× CRTÃÝ£¬ÊÇÒ»¸öÕýÕûÊý µÚi¸öÒò× CRTϵÊý£¬ÊÇÒ»¸öÕýÕûÊý
ti
µ±²ÉÓõÚÒ»ÖÖ±íʾ·¨±íʾʱ£¬ÓÐЧµÄRSA˽ԿµÄRSAºÏÊýÄ£ nÓë¶ÔÓ¦µÄRSA¹«Ô¿µÄRSAºÏÊýÄ£nÒ»Ñù£¬ÊÇÓÉu¸ö²»Í¬µÄÆæËØÊýri ²úÉúµÄ£¬i = 1, 2, ¡, u, ÆäÖÐu ? 2¡£RSA˽ÓÐÃÝ dÊÇÒ»¸öСÓÚnµÄÕýÕûÊý£¬Âú×ã
e ¡¤ d ? 1 (mod ?(n)) £¬
ÆäÖÐeÊǶÔÓ¦µÄRSA¹«¿ªÃÝ£¬?(n)ºÍµÚ3.1Öж¨ÒåµÄÒ»Ñù¡£
µ±ÓõڶþÖÖ±íʾ·¨±íʾʱ£¬RSA˽ԿµÄÁ½¸öÒòËØp ºÍqÊÇRSAºÏÊýÄ£ nÇ°Á½¸öËØÊý£¨Ò²¾ÍÊÇ r1 ºÍ r2£©£¬CRTÃÝ dP ºÍdQÊÇСÓÚp ºÍqµÄÕýÕûÊý£¬·Ö±ðÂú×ã
e ¡¤ dP ? 1 (mod ?p ¨C 1)) e ¡¤ dQ ? 1 (mod ?q ¨C 1)) £¬
CRTϵÊýqInvÊÇÒ»¸öСÓÚpµÄÕýÕûÊý£¬Âú×ã
q ¡¤ qInv ? 1 (mod p) ¡£
Èç¹ûu > 2£¬±íʾ·¨Öн«°üÀ¨Ò»¸ö»ò¶à¸öÈýÔª×é (ri, di, ti), i = 3, ¡, u¡£Òò×ÓriÊÇRSAºÏÊýÄ£ nµÄÒ»¸öÆäËüËØÊýÒò×Ó¡£Ã¿Ò»¸öCRTÃÝ di (i = 3, ¡, u)£¬Âú×ã
e ¡¤ di ? 1 (mod (ri ¨C 1)) ¡£
ÿ¸öCRTϵÊýti (i = 3, ¡, u)ÊÇÒ»¸öСÓÚriµÄÕýÕûÊý£¬Âú×ã
Ri ¡¤ ti ? 1 (mod ri) £¬
ÆäÖÐRi = r1 ¡¤ ri¨C1¡£ r2 ¡¤ ¡ ¡¤
ÔÚÉ豸֮¼ä»¥»»µÄRSA˽ԿµÄÍƼöÃèÊö£¨°üÀ¨Á½ÖÖ±íʾ·¨µÄ×é³É²¿·Ö£©ÔÚ¸½Â¼0Öиø³ö£»É豸µÄÄÚ²¿±íʾ¿ÉÄܲ»Í¬¡£
×¢ÊÍ£º 1.
ÕâÀïCRTϵÊýµÄ¶¨ÒåÒÔ¼°µÚ5²¿·ÖµÄÔÓïÖÐʹÓõ½µÄ³Ìʽ×ñÑGarnerËã·¨[22]£¨Ò²¿É²Î¼û[37]µÄËã·¨14.71£©¡£È»¶ø£¬ÎªÁËÓëPKCS #1 v2.0¼°Ö®Ç°°æ±¾ÖеÄRSA˽Կ±íʾ·¨¼æÈÝ£¬p ºÍq µÄ½ÇÉ«±»±£ÁôÁË£¬ÕâÓëÆäËüËØÊý²»Ò»Ñù¡£Òò´Ë£¬µÚÒ»¸öCRTϵÊýqInv±»¶¨Òå³ÉÊÇq mod pµÄµ¹Êý£¨inverse£©£¬¶ø²»ÊÇr1 mod r2µÄµ¹Êý£¨Ò²¾ÍÊÇp mod qµÄµ¹Êý£©¡£ 2.
Quisquater ºÍCouvreur [40] ×¢Òâµ½ÔÚRSAÔËËãÖÐʹÓÃÖйúÊ£ÓඨÀíµÄÓŵ㡣
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
4 Êý¾Ýת»»ÔÓï
±¾ÆªÎĵµËù¶¨ÒåµÄģʽÖÐʹÓÃÁËÁ½¸öÊý¾Ýת»»ÔÓ ? ?
I2OSP ¨C ÕûÊýµ½×Ö½Ú´®µÄת»»ÔÓï OS2IP ¨C ×Ö½Ú´®µ½ÕûÊýµÄת»»ÔÓï
ΪÁ˱¾ÆªÎĵµÆð¼û£¬Ò²ÎªÁËÓëASN.1Óï·¨Ò»Ö£¬Ò»¸ö°Ëλ×é´®ÊÇÖ¸Ò»¸öÓÐ˳ÐòµÄ°Ëλ×飨°Ëλ±ÈÌع¹³ÉÒ»¸ö×Ö½Ú£©ÐòÁС£Õû¸öÐòÁдӵÚһλ£¨Í¨³£ÊÇ×î×ó±ßµÄһ룩µ½×îºóһ루×îÓұߵÄһ룩±àÈëË÷Òý¡£ÎªÁËת»»ÎªÕûÊýÒÔ¼°×ª»»ÕûÊý£¬ÔÚ½ÓÏÂÀ´µÄת»»ÔÓïÖеÚÒ»¸ö°Ëλ×é±»ÈÏΪÊÇ×îÖØÒªµÄ¡£
4.1 I2OSP
I2OSP°ÑÒ»¸ö·Ç¸ºÕûÊýת»»ÎªÒ»¸ö³¤¶ÈÖ¸¶¨µÄ×Ö½Ú´®¡£ I2OSP (x, xLen) ÊäÈ룺 Êä³ö£º
x
´ýת»»µÄ·Ç¸ºÕûÊý
xLen ת»»ºóµÄ°Ëλ×é´®µÄÆÚÍû³¤¶È X
¶ÔÓ¦µÄ³¤¶ÈΪxLen µÄ°Ëλ×é´®
´íÎóÐÅÏ¢£º ¡°ÕûÊýÌ«´ó¡± ²½Ö裺
1. Èç¹û x ? 256xLen£¬Êä³ö¡°ÕûÊýÌ«´ó¡±È»ºóÖÕÖ¹¡£ 2. ÓÃÒÔ256Ϊ»ùÊýµÄxLenλÊý±íʾÕûÊýx £º
x = xxLen¨C1 256xLen¨C1 + xxLen¨C2 256xLen¨C2 + ¡ + x1 256 + x0 £¬
ÆäÖÐ 0 ? xi < 256 (×¢ÒâÈç¹ûxСÓÚ256xLen¨C1£¬Ò»¸ö»ò¶à¸ö¸ßλ½«ÎªÁã)¡£ 3. ʹ×Ö½Ú Xi µÄÕûÊýֵΪxxLen¨CI £¬ 1 ? I ? xLen¡£Êä³ö°Ëλ×é´®
X = X1 X2 ¡ XxLen¡£
4.2 OS2IP
OS2IP ½«Ò»¸ö°Ëλ×鴮ת»»³ÉÒ»¸ö·Ç¸ºÕûÊý¡£ OS2IP (X) ÊäÈ룺 Êä³ö£º
X ´ýת»»µÄ°Ëλ×é´® x ÏàÓ¦µÄ·Ç¸ºÕûÊý
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
²½Ö裺
1. ʹ X1 X2 ¡ XxLen ·Ö±ðΪX µÄµÚÒ»¸öÖÁ×îºóÒ»¸ö°Ëλ×飬ʹ xxLen¨Ci µÄֵΪ°Ëλ×éXi µÄÕûÊýÖµ£¬1 ?
i ? xLen¡£
2. ÈÃ x = xxLen¨C1 256xLen¨C1 + xxLen¨C2 256xLen¨C2 + ¡ + x1 256 + x0¡£ 3. Êä³öx¡£
5 ÃÜÂëÔÓï
ÃÜÂëÔÓïÊÇ»ù±¾µÄÊýѧÔËË㣬ÔÚ´Ë»ù´¡ÉÏÐγÉÃÜÂë·½°¸¡£ÈËÃÇ´òËãÒÔÓ²¼þ»òÈí¼þÄ£¿éµÄÐÎʽʵÏÖËüÃÇ£¬¶øÇÒ²»´òËãÌṩƲ¿ª·½°¸µÄ°²È«¡£
ÔÚ±¾ÆªÎĵµÖж¨ÒåÁËËÄÀàÔÓÒÔÅä¶ÔµÄ·½Ê½×éÖ¯£º¼ÓÃܺͽâÃÜ£»Ç©ÃûºÍÑéÖ¤¡£ ÔÓï¹æ·¶¼Ù¶¨ÊäÈëÂú×ãÒ»¶¨µÄÌõ¼þ£¬ÌرðµØ¼ÙÉèRSA¹«Ô¿ºÍ˽ԿÓÐЧ¡£
5.1 ¼ÓÃܺͽâÃÜÔÓï
¼ÓÃÜÔÓïÔÚ¹«Ô¿µÄ¿ØÖÆÏ´ÓÏûÏ¢´ú±í²úÉú³öÃÜÎÄ´ú±í£¬½âÃÜÔÓïÔÚ¶ÔӦ˽ԿµÄ¿ØÖÆÏ´ÓÃÜÎÄ´ú±íÖлָ´ÏûÏ¢´ú±í¡£
ÔÚ±¾ÆªÎĵµ¶¨ÒåµÄ¼ÓÃÜ·½°¸ÖÐʹÓÃÁËÒ»¶Ô¼ÓÃܺͽâÃÜÔÓ±»ÃèÊöΪ£ºRSAEP/RSADP ¡£RSAEPºÍRSAEPÉæ¼°ÏàͬµÄÊýѧÔËË㣬ֻÊÇÊäÈëµÄÃÜÔ¿²»Í¬¡£
ÕâÀﶨÒåµÄÔÓïºÍÔÚIEEE Std 1363-2000 [26]Öж¨ÒåµÄIFEP-RSA/IFDP-RSAÒ»Ñù£¨³ýÁËÔö¼ÓÁ˶ԶàÔÓïRSAµÄÖ§³ÖÖ®Í⣩£¬¶øÇÒÓëPKCS #1 v1.5¼æÈÝ¡£
ÔÚÿ¸öÔÓïÖÐÖ÷ÒªµÄÊýѧÔËËãÊÇÃÝÔËËã¡£
5.1.1 RSAEP
RSAEP ((n, e), m) ÊäÈ룺 Êä³ö£º
(n, e) m c
RSA ¹«Ô¿
ÏûÏ¢´ú±í£¬ ÊÇÒ»¸öλÓÚ0~ n ¨C 1Ö®¼äµÄÕûÊý ÃÜÎÄ´ú±í£¬ ÊÇÒ»¸öλÓÚ0~ n ¨C 1Ö®¼äµÄÕûÊý
´íÎóÌáʾ£º ¡°ÏûÏ¢´ú±í³¬³ö·¶Î§¡± ¼ÙÉ裺 ²½Ö裺
RSA ¹«Ô¿(n, e)ÓÐЧ
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
1. Èç¹ûÏûÏ¢´ú±ím ²»ÔÚ0 ~n ¨C 1Ö®¼ä£¬ Êä³ö¡°ÏûÏ¢´ú±í³¬³ö·¶Î§¡±²¢ÖÕÖ¹¡£ 2. ÈÃc = me mod n¡£ 3. Êä³öc¡£
5.1.2 RSADP
RSADP (K, c) ÊäÈ룺
K
RSA˽Կ£¬ÆäÖÐK²ÉÓÃÒÔÏÂÐÎʽÖеÄÒ»ÖÖ£º ? Ò»¶Ô(n, d)
? Ò»¸öÎåÔª×é (p, q, dP, dQ, qInv)ºÍ һϵÁпÉÄÜΪ¿ÕµÄÈýÔª×é (ri, di, ti)£¬ i =
3, ¡, u
Êä³ö£º ³ö´íÌáʾ£º ¼ÙÉ裺 ²½Ö裺
1. Èç¹ûÃÜÎÄ´ú±íc ²»ÔÚ0 ~n ¨C 1µÄ·¶Î§Ö®ÄÚ£¬ ÔòÊä³ö¡°ÃÜÎÄ´ú±í³¬³ö·¶Î§¡±È»ºóÖÕÖ¹¡£ 2. ÏûÏ¢´ú±ím °´ÕÕÒÔϲ½Öè¼ÆËã¡£
a.
Èç¹ûK²ÉÓõÚÒ»ÖÖÐÎʽ(n, d), ʹm = c mod n¡£
d
c m
ÃÜÎÄ´ú±í£¬ÊÇÒ»¸öλÓÚ0 ~n ¨C 1Ö®¼äµÄÕûÊý ÏûÏ¢´ú±í£¬ÊÇÒ»¸öλÓÚ0 ~n ¨C 1Ö®¼äµÄÕûÊý
¡°ÃÜÎÄ´ú±í³¬³ö·¶Î§¡± RSA ˽ԿK ÓÐЧ
b. Èç¹ûK²ÉÓõڶþÖÖÐÎʽ(p, q, dP, dQ, qInv)ºÍ (ri, di, ti), Ôò°´ÕÕÒÔϲ½Öè½øÐУº
i. ii. iii. iv. v.
ʹm1 = cdP mod p £¬m2 = cdQ mod q¡£ Èç¹ûu > 2£¬ ʹ mi = cdi mod ri, i = 3, ¡, u¡£ ʹh = (m1 ¨C m2) ¡¤ qInv mod p¡£ ʹ m = m2 + q ¡¤ h¡£
Èç¹ûu > 2£¬Ê¹R = r1 £¬ Áîi = 3 È»ºóÑ»·×öÒÔϸ÷²½Ö裬ֱÖÁi= u
1. ʹR = R ¡¤ ri¨C1
2. ʹh = (mi ¨C m) ¡¤ ti (mod ri) 3. ʹm = m + R ¡¤ h 4. ʹi=i+1
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
3. Êä³öm¡£
×¢ÊÍ£ºÈç¹û±£ÁôÁËpºÍqµÄ¶¨Ò壬²½Öè2.a¿ÉÒÔд³Éµ¥¸öÑ»·¡£È»¶ø£¬ÎªÁËÓëPKCS #1 v2.0¼æÈÝ£¬Ç°Á½¸öËØÊýpºÍqÓëÆäËüËØÊý·Ö¿ª´¦Àí¡£
5.2 Ç©ÃûºÍÑéÖ¤ÔÓï
Ç©ÃûÔÓïÔÚ˽ԿµÄ¿ØÖÆÏ´ÓÏûÏ¢´ú±í²úÉúÒ»¸öÇ©Ãû´ú±í£¬¶øÑéÖ¤ÔÓïÊÇÔÚ¶ÔÓ¦¹«Ô¿µÄ¿ØÖÆÏ´ÓÇ©Ãû´ú±í»Ö¸´³öÏûÏ¢´ú±í¡£±¾ÆªÎĵµ¶¨ÒåµÄÇ©Ãû·½°¸ÖÐʹÓÃÁËÒ»¶ÔÇ©ÃûºÍÑéÖ¤ÔÓ±»ÃèÊöΪ£º RSASP1/RSAVP1¡£
ÕâÀﶨÒåµÄÔÓïÓëIEEE 1363-2000 [26]Öж¨ÒåµÄIFSP-RSA1/IFVP-RSA1ÊÇÒ»ÑùµÄ£¨Ëù²»Í¬µÄÊÇÕâÀïµÄÔÓïÔö¼ÓÁ˶ԶàÔÓïRSAµÄÖ§³Ö£©£¬¶øÇÒÓëPKCS #1 v1.5¼æÈÝ¡£
ÔÚÿ¸öÔÓïÖеÄÖ÷ÒªÊýѧ²Ù×÷ÊÇÃݲÙ×÷£¬ÕâÒ»µãºÍ0²¿·ÖÖеļÓÃܺͽâÃÜÔÓïÒ»Ñù¡£RSASP1ºÍRSAVP1ÓëRSADPºÍRSAEP³ýÁËÊäÈëºÍÊä³ö²ÎÊýµÄÃû³Æ²»Ò»ÑùÖ®Í⣬ÆäËü¸÷·½Ã涼һÑù£»ËüÃǵÄÇø±ðÔÚÓÚËüÃÇÊÇΪ²»Í¬µÄÄ¿µÄ¶ø±àдµÄ¡£
5.2.1 RSASP1
RSASP1 (K, m) ÊäÈ룺
K
RSA˽Կ, ÕâÀïK¾ßÓÐÒÔÏÂÐÎʽ֮һ£º ? Ò»¶Ô(n, d)
? Ò»¸öÎåÔª×é(p, q, dP, dQ, qInv)ºÍһϵÁпÉÄÜΪ¿ÕµÄÈýÔª×é(ri, di, ti)£¬ i = 3, ¡, u
Êä³ö£º ³ö´íÌáʾ£º ¼ÙÉ裺 ²½Ö裺
1. Èç¹ûÏûÏ¢´ú±ím ²»ÔÚ0 ~n ¨C 1Ö®¼ä£¬Êä³ö¡°ÏûÏ¢´ú±í³¬³ö·¶Î§¡± È»ºóÖÕÖ¹ÔËËã¡£ 2. Ç©Ãû´ú±ísÓÉÒÔϲ½Öè¼ÆËãµÃ³ö¡£
a. Èç¹ûK²ÉÓõÚÒ»ÖÖÐÎʽ(n, d)£¬ ʹs = m mod n¡£
b. Èç¹ûK²ÉÓõڶþÖÖÐÎʽ(p, q, dP, dQ, qInv)ºÍ (ri, di, ti)£¬Ôò°´ÕÕÒÔϲ½Öè½øÐУº
i. ʹs1 = mdP mod p £¬s2 = mdQ mod q¡£
d
m s
ÏûÏ¢´ú±í£¬ÊÇÒ»¸öλÓÚ0~ n ¨C 1Ö®¼äµÄÕûÊý Ç©Ãû´ú±í£¬ÊÇÒ»¸öλÓÚ0~ n ¨C 1Ö®¼äµÄÕûÊý
¡°ÏûÏ¢´ú±í³¬³ö·¶Î§¡± RSA ˽ԿKÓÐЧµÄ
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
ii. Èç¹ûu > 2£¬ÈÃsi = mdi mod ri, i = 3, ¡, u¡£ iii. ÈÃh = (s1 ¨C s2) ¡¤ qInv mod p. iv. ÈÃs = s2 + q ¡¤ h.
v. Èç¹ûu > 2, ÈÃR = r1 £¬i = 3 £¬È»ºóÑ»·½øÐÐÒÔϸ÷²½ÖèÖ±ÖÁi = u
1. ÈÃR = R ¡¤ ri¨C1.
2. ÈÃh = (si ¨C s) ¡¤ ti (mod ri). 3. ÈÃs = s + R ¡¤ h 4. ÈÃi = i+1
3. Êä³ös¡£
×¢ÊÍ£ºÈç¹û±£ÁôÁËpºÍqµÄ¶¨Ò壬²½Öè2.a»¹¿ÉÒÔд³Éµ¥¸öÑ»·¡£È»¶ø£¬ÎªÁËÓëPKCS #1 v2.0¼æÈÝ£¬Ç°Á½¸öËØÊýpºÍqÓëÆäËüËØÊý·Ö¿ª´¦Àí¡£
5.2.1 RSAVP1
RSAVP1 ((n, e), s) ÊäÈ룺 Êä³ö£º ³ö´íÌáʾ£º
(n, e) s m
RSA ¹«Ô¿
Ç©Ãû´ú±í£¬ ÊÇÒ»¸öλÓÚ0~ n ¨C 1Ö®¼äµÄÕûÊý ÏûÏ¢´ú±í£¬ ÊÇÒ»¸öλÓÚ0~ n ¨C 1Ö®¼äµÄÕûÊý
¡°Ç©Ãû´ú±í³¬³ö·¶Î§¡± RSA ¹«Ô¿(n, e) ÓÐЧ
¼ÙÉè:
²½Ö裺
1. Èç¹ûÇ©Ãû´ú±ís ²»ÔÚ·¶Î§0 ~n ¨C 1Ö®¼ä,£¬Êä³ö¡°Ç©Ãû´ú±í³¬³ö·¶Î§¡±È»ºóÖÕÖ¹ÔËËã¡£ 2. ÈÃm = se mod n¡£ 3. Êä³öm¡£
6 ·½°¸¸ÅÊö
·½°¸½áºÏÁËÃÜÂëÔÓïºÍÆäËü¼¼ÊõÒÔ»ñµÃÌض¨µÄ°²È«Ä¿±ê¡£ÔÚ±¾ÆªÎĵµÖÖ¶¨ÒåÁËÁ½Àà·½°¸£º¼ÓÃÜ·½°¸ºÍ´ø¸½ÊôµÄÇ©Ãû·½°¸¡£
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
±¾ÆªÎĵµÖÖ¶¨ÒåµÄ·½°¸ÊÊÓÃÓÚÓÐÏ޵ķ¶Î§£¬ËüÃǵIJÙ×÷Ö»ÊÇÓɼ¸¸öʹÓÃRSA¹«Ô¿»ò˽Կ´¦ÀíÊý¾ÝµÄ²½Öè¹¹³É£¬²»°üÀ¨»ñµÃÃÜÔ¿»òÕß֤ʵÃÜÔ¿µÄ²½Öè¡£Òò´Ë£¬Ò»¸öµäÐ͵ÄÓ¦ÓóýÁË°üÀ¨·½°¸ÖеIJÙ×÷Ö®Í⣬»¹Ó¦°üÀ¨ÃÜÔ¿¹ÜÀí²Ù×÷£¨Í¨¹ý¸Ã²Ù×÷Ë«·½¿ÉÒÔΪһ´Î·½°¸²Ù×÷Ñ¡ÔñRSA¹«Ô¿ºÍ˽Կ£©¡£ÕâЩ¾ßÌåµÄ¶îÍâ²Ù×÷ÒÔ¼°ÆäËüϸ½Ú³¬³öÁ˱¾ÆªÎĵµµÄÌÖÂÛ·¶Î§¡£
¸ù¾ÝÃÜÂëÔÓ¼ûµÚ0²¿·Ö£©£¬·½°¸²Ù×÷¹æ·¶¼Ù¶¨ÊäÈëÂú×ãÒ»¶¨µÄÌõ¼þ£¬ÌرðÊÇÂú×ãRSA¹«Ô¿ºÍ˽Կ¾ùÓÐЧ¡£Òò´Ë£¬Èç¹ûÃÜÔ¿ÎÞЧ£¬Ôò²»¹æ¶¨É豸ÐÐΪ¡£ÕâÖÖ²»¹æ¶¨ÐÐΪµÄÓ°ÏìÒÀÀµÓÚʵ¼ÊÓ¦Óá£ÉùÃ÷ÃÜÔ¿ÓÐЧµÄ°üÀ¨Í¨¹ýÉêÇëÃ÷È·ÃÜÔ¿ÓÐЧ£»ÔÚ¹«Ô¿»ù´¡¼Ü¹¹ÄÚÃÜÔ¿µÄÓÐЧÐÔ£»Ê¹ÃÜÔ¿Éú³É·½³Ðµ£Ê¹ÓÃÓÐЧÃÜÔ¿½øÐвÙ×÷µÄÔðÈΡ£
Ò»¸ö´óÌåÉϺõÄÃÜÂëʵÏÖÊǽ«Ò»¶Ô¸ø¶¨µÄRSAÃÜÔ¿¶ÔÖ»ÓÃÓÚÒ»¸ö·½°¸¡£ÕâÑù¾Í±ÜÃâʹһ¸ö·½°¸µÄ©¶´Á¬ÀÛÆäËü·½°¸µÄ°²È«ÐÔ£¬ÕâÒ»µã¶Ôά³Ö¿É֤ʵµÄ°²È«ÐÔ¿ÉÄÜÊÇÖÁ¹ØÖØÒªµÄ¡£¾¡¹ÜRSAES-PKCS1-v1_5 £¨¼û0²¿·Ö)ºÍRSASSA-PKCS1-v1_5 (¼û0²¿·Ö)Ò»¹á±»½áºÏÔÚÒ»ÆðʹÓã¬ÇÒÏ໥֮¼äûÓÐÈκÎÒÑÖªµÄ²»ºÃµÄÓ°Ï죨ʵ¼ÊÉÏ£¬Õâ¾ÍÊÇPKCS #1 v1.5½éÉܵķ½°¸£©£¬ÔÚÐÂÓ¦ÓÃÖв»ÍƳçÕâÖÖ½áºÏʹÓÃÒ»¸öRSAÃÜÔ¿¶ÔµÄ×ö·¨¡£
ΪÁË˵Ã÷ÔÚ¶à¸ö·½°¸ÖÐʹÓÃÒ»¸öRSAÃÜÔ¿¶ÔµÄ·çÏÕ£¬ÎÒÃǼٶ¨RSAES-OAEP (¼û 0²¿·Ö) ºÍRSAES-PKCS1-v1_5ÖÐʹÓÃͬһ¸öRSAÃÜÔ¿¶Ô¡£¾¡¹ÜRSAES-OAEP×ÔÉí¾ß±¸¿¹¹¥»÷ÐÔ£¬µ«¶ÔÊÖ¿ÉÒÔÀûÓÃRSAES-PKCS1-v1_5ʵÏÖÖеÄÒ»¸ö©¶´»Ö¸´³öÓÃÁ½¸ö·½°¸ÖÐÈκÎÒ»¸ö·½°¸¼ÓÃܵÄÏûÏ¢¡£ÔÙ¾ÙÁíÍâÒ»¸öÀý×Ó£¬¼ÙÉèRSASSA-PSS (¼û 0²¿·Ö)ºÍ RSASSA-PKCS1-v1_5ÖÐʹÓÃͬһ¸öRSAÃÜÔ¿¶Ô¡£Èç¹û¶ÔRSASSA-PSSµÄ°²È«¼á¹ÌÐÔûÓп¼Âǵ½Ç©Ãû¿ÉÒÔÓÉÁíÒ»¸ö·½°¸Éú³ÉµÄ¿ÉÄÜÐÔ£¬ÄÇôÕâÖÖ¼á¹ÌÐÔ½«²»ÔÙ³ä·Ö¡£Èç¹ûÒ»¸öRSAÃÜÔ¿¶Ô±»ÓÃÓÚÕâÀﶨÒåµÄ·½°¸ÖеÄÈκÎÒ»¸ö£¬¶øÇÒÒ²±»ÓÃÓÚÆäËüµØ·½¶¨ÒåµÄ·½°¸£¬ÄÇô¿ÉÄÜÐèÒª×÷³öͬÑùµÄ¿¼ÂÇ¡£
7 ¼ÓÃÜ·½°¸
¾Í±¾ÆªÎĵµ¶øÑÔ£¬Ò»¸ö¼ÓÃÜ·½°¸ÓÉÒ»¸ö¼ÓÃܲÙ×÷ºÍÒ»¸ö½âÃܲÙ×÷¹¹³É£¬ÆäÖмÓÃܲÙ×÷ʹÓýÓÊÜ·½µÄRSA¹«Ô¿°ÑÏûϢת»¯³ÉÃÜÎÄ£¬¶ø½âÃܲÙ×÷ʹÓýÓÊÜ·½¶ÔÓ¦µÄRSA˽Կ½«ÃÜÎĻָ´³ÉÏûÏ¢¡£
Ò»¸ö¼ÓÃÜ·½°¸ÄÜÓÃÓÚ¸÷ÖÖÓ¦ÓÃÖС£Ò»¸öµäÐ͵ÄÓ¦ÓÃÊÇÃÜÔ¿½¨Á¢ÐÒ飬ÔÚ¸ÃÐÒéµÄÏûÏ¢Öаüº¬½«±»ÃØÃܵشÓÒ»·½µÝË͵½ÁíÒ»·½µÄÃÜÔ¿¡£¾ÙÀýÀ´Ëµ£¬PKCS #7 [45]ʹÓÃÕâÖÖÐÒ齫һ¸öÄÚÈݵļÓÃÜÃÜÔ¿´Ó·¢ËÍ·½µÝË͵½½ÓÊÕ·½£»ÕâÀﶨÒåµÄ¼ÓÃÜ·½°¸½«»áÊÇÊʺÏÓÚÉÏÊöÇé¿öµÄÃÜÔ¿¼ÓÃÜËã·¨¡£
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
ÔÚ±¾ÆªÎĵµÖж¨ÒåÁËÁ½¸ö¼ÓÃÜ·½°¸£ºRSAES-OAEP ºÍRSAES-PKCS1-v1_5¡£ RSAES-OAEPÊÇÐÂÓ¦ÓõÄÍƼö±ê×¼£»¼ÓÈëRSAES-PKCS1-v1_5Ö»ÊÇΪÁËÓëÒÑ´æÔÚµÄÓ¦ÓüæÈÝ£¬²¢ÇÒ²»½¨ÒéÓÃÓÚÐÂÓ¦Óá£
ÕâÀï¸ø³öµÄ¼ÓÃÜ·½°¸×ñÑÒ»°ãµÄÄ£ÐÍ£¬Õâ¸öÄ£ÐÍÀàËÆÓÚÔÚIEEE Std 1363-2000 [26]ÖÐʹÓõ½µÄÄ£ÐÍ£¬¾ÍÊǽ«¼ÓÃܺͽâÃÜÔÓïÓëÕë¶Ô¼ÓÃܵıàÂë·½·¨½áºÏÆðÀ´¡£ÕâÖÖ¼ÓÃÜÔËËã¶ÔÏûÏ¢½øÐÐÏûÏ¢±àÂëÔËË㣬ÒÔ²úÉúÒ»¸ö±àÂëÏûÏ¢£¬È»ºó½«±àÂëºóµÄÏûϢת»»³ÉÒ»¸öÕûÊýÏûÏ¢´ú±í¡£Ò»¸ö¼ÓÃÜÔÓï×÷ÓÃÓÚÕâ¸öÏûÏ¢´ú±í´Ó¶ø²úÉúÃÜÎÄ¡£·´Ö®£¬½âÃÜÔËË㽫½âÃÜÔÓï×÷ÓÃÓÚÃÜÎÄ£¬´Ó¶ø»Ö¸´³öÏûÏ¢´ú±í£¬È»ºó½«Õâ¸öÏûÏ¢´ú±íת»»³ÉÒ»¸öÒÔ°Ëλ×鴮ΪÐÎʽµÄ±àÂëÏûÏ¢¡£Ò»¸öÏûÏ¢½âÂë²Ù×÷×÷ÓÃÓÚÕâ¸ö±àÂëÏûÏ¢£¬´Ó¶ø»Ö¸´³öÏûÏ¢²¢ÑéÖ¤½âÃÜÔËËãµÄÕýÈ·ÐÔ¡£
ΪÁ˱ÜÃâÓëÕâÖÖ·½Ê½Ïà¹ØµÄʵÏÖ©¶´£¬ÔÚ½âÂëÔËËãÖлᴦÀí´íÎ󣨲μû[6]ºÍ[36]£©£¬RSAES-OAEP ºÍRSAES-PKCS1-v1_5µÄ±àÂëºÍ½âÂëÔËËãǶÈëÔÚ¸÷×ԵļÓÃÜ·½°¸¹æ·¶ÖУ¬¶ø²»ÊǶ¨ÒåÔÚµ¥¶ÀµÄ¹æ·¶ÖС£Á½¸ö¼ÓÃÜ·½°¸¾ùÓëPKCS #1 v2.0ÖеÄÏàÓ¦·½°¸¼æÈÝ¡£
7.1 RSAES-OAEP
RSAES-OAEP½«RSAEP ºÍRSADPÔÓ²Î¼û0ºÍ0²¿·Ö£©ÓëEME-OAEP±àÂë·½·¨½áºÏÆðÀ´£¨²Î¼û0ÖеIJ½Öè1.bºÍ´íÎó£¡Î´ÕÒµ½ÒýÓÃÔ´¡£ÖеIJ½Öè3£©¡£EME-OAEP»ùÓÚBellare ºÍRogawayµÄ×î¼Ñ·Ç¶Ô³Æ¼ÓÃÜscheme[3]¡££¨OAEP´ú±í¡°×î¼Ñ·Ç¶Ô³Æ¼ÓÃÜÌî³ä¡±£©¡£ËüÓëÔÚIEEE Std 1363-2000 [26]Öж¨ÒåµÄIFES·½°¸¼æÈÝ£¬ÔÚIFESÖмÓÃܺͽâÃÜÔÓïÊÇIFEP-RSAºÍIFDP-RSA£¬ÏûÏ¢±àÂë·½·¨ÊÇEME-OAEP¡£RSAES-OAEPÄܹ»²Ù×÷³¤¶È³¬¹ýk ¨C 2hLen ¨C 2×Ö½ÚµÄÏûÏ¢£¬ÕâÀïhLenÊÇ»ù´¡É¢Áк¯ÊýÊä³öµÄ³¤¶È£¬¶økÊǽÓÊÕ·½RSAºÏÊýÄ£µÄÒÔ°Ëλ×éΪ¼ÆÁ¿µ¥Î»µÄ³¤¶È¡£
¼ÙÉè¼ÆËãeth roots modulo nÊDz»¿ÉÐеģ¬ÇÒRSAES-OAEPÖеÄÑÚÄ£Éú³Éº¯Êý¾ßÓйÌÓеÄÊôÐÔ£»ÄÇôRSAES-OAEPÓïÒåÉÏÄֿܵ¹ÊʺϵÄÑ¡ÔñÃÜÎĹ¥»÷¡£Èç¹ûÑÚÄ£Éú³Éº¯Êý±»¿´×÷ÊÇÒ»¸öºÚºÐ×Ó»òÕßÊÇÒ»¸öËæ»úµÄÆôʾ³ÌÐò£¬ÄÇôÔÚ¹¥ÆÆRSAES-OAEPµÄÄѶÈÄÜÖ±½ÓÓëʹRSAº¯Êý·´ÏòµÄÄѶÈÏà¹ØµÄÒâÒåÉÏ£¬Õâ¸ö±£Ö¤ÊÇ¿É֤ʵµÄ£»½øÒ»²½µÄÌÖÂ۲μû[21]ºÍÏÂÃæµÄ×¢ÊÍ¡£
RSAES-OAEP¼ÓÃܺͽâÃÜÔËË㶼½«±êÇ©L×÷ΪÊäÈë¡£ÔÚPKCS #1µÄÕâ¸ö°æ±¾ÖУ¬LÊÇÒ»¸ö¿Õ´®£¬Õâ¸ö±êÇ©µÄÆäËüʹÓó¬³öÁ˱¾ÆªÎĵµµÄ·¶Î§¡£Ïà¹ØµÄASN.1Óï·¨ÃèÊö²Î¼û¸½Â¼A.2.1¡£
ͨ¹ýÉ¢Áк¯ÊýºÍÑÚÄ£Éú³Éº¯ÊýµÄÑ¡ÔñÒÔÈ·¶¨RSAES-OAEPµÄ²ÎÊý¡£ÕâһѡÔñ¹ý³Ì¶Ô¸ø¶¨µÄRSAÃÜÔ¿Êǹ̶¨²»±äµÄ¡£ÔÚ¸½Â¼BÖиø³öÁ˽¨ÒéµÄÉ¢Áк¯ÊýºÍÑÚÄ£Éú³Éº¯Êý¡£
×¢ÊÍ£º½üÀ´µÄ½á¹û¶Ô³ÎÇåOAEP±àÂ뷽ʽ[3]µÄ°²È«ÐÔ[3]ÓаïÖú£¨0²¿·ÖÖеIJ½Öè1.b¶ÔÕâ¸ö¹ý³Ì×÷ÁË´ÖÂÔµÄÃèÊö£©¡£Æä±³¾°ÈçÏÂËùÊö¡£1994Ä꣬Bellare ºÍ Rogaway[3]ÒýÈëÁËÒ»¸ö°²È«¸ÅÄËûÃDZíÊöΪÃ÷ÎÄÒâʶ£¨PA94£©¡£ËûÃÇÖ¤Ã÷Èç¹ûÒ»¸ö¹«Ô¿
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
¼ÓÃÜÔÓÀýÈçRSAEP£©Ã»ÓÐ˽Կ¾ÍÄÑÒÔµ¹×ª£¬ÄÇô¶ÔÓ¦µÄ»ùÓÚOAEPµÄ¼ÓÃÜ·½°¸¾ÍÊÇÓÐÃ÷ÎÄÒâʶµÄ(in the random oracle model)£¬´óÖµÄÒâ˼ÊǶÔÊÖÔÚûÓÐÕæÕýÖªµÀ»ù´¡Ã÷ÎÄÇé¿öÏÂÊDz»ÄܲúÉú³öºÏ·¨µÄÃÜÎĵġ£Ò»¸ö¼ÓÃÜ·½°¸µÄÃ÷ÎÄÒâʶÓë·´ÃÜÎÄÑ¡Ôñ¹¥»÷µÄ·½°¸µÄÏÞÖÆÓÐÃÜÇÐÁªÏµ¡£ÔÚÕâÖÖ¹¥»÷ÖУ¬¶ÔÊÖÓлú»á·¢ËÍѯÎʸøÒ»¸öÄ£·Â½âÃÜÔÓïµÄÆôʾ³ÌÐò¡£Ê¹ÓÃÕâЩѯÎʵĽá¹û£¬¶ÔÊÖ³¢ÊÔ½âÃÜÒ»¸öÃÜÎÄ¡£
È»¶ø£¬´æÔÚÁ½ÀàÃÜÎÄÑ¡Ôñ¹¥»÷£¬¶øPA94Ö»°üº¬ÁËÕë¶ÔÆäÖÐÒ»ÖÖ¹¥»÷µÄ°²È«ÐÔ¡£²»Í¬Ö®´¦ÔÚÓÚ¶ÔÊÖÔÚ»ñµÃchallengeÃÜÎÄÖ®ºó£¬¿ÉÒÔ×öЩʲôÊÂÇé¡£ÔÚ¶ÔÊÖ»ñµÃchallengeÃÜÎĺó£¬indifferent¹¥»÷·½°¸£¨CCA1Ëù±íʾµÄ£©²»ÔÊÐíÏò½âÃÜÆôʾ³ÌÐòÌá³öÈκÎѯÎÊ£¬¶øadaptive·½°¸£¨CCA2ÖÐÓбíʾ£©ÔÊÐí£¨³ýÁ˽âÃÜÆôʾ³ÌÐòÔÚÆä±»·¢²¼Ö®ºó¾Ü¾ø½âÃÜchallengeÃÜÎĵÄÇé¿ö£©¡£1998ÄêBellare ºÍRogawayÓëDesai ºÍPointcheval[2]Ò»µÀÌá³öÁËÒ»¸öеĸü½¡×³µÄÃ÷ÎÄÒâʶ¹ÛÄî(PA98)£¬ËüÌá³öÁËÕë¶ÔCCA2µÄ°²È«ÐÔ¡£
×ܵÄ˵À´£¬´æÔÚÁ½¸ö´íÎó¹ÛÄîµÄDZÔÚÀ´Ô´£ºPA94ºÍ PA98ÊÇÏàͬµÄ¸ÅÄî; »òÕßCCA1 ºÍCCA2 ÊÇÏàͬµÄ¸ÅÄî¡£ÈκÎÒ»¸ö¼ÙÉ趼»áµÃ³öÒ»¸ö½áÂÛ£¬ÄǾÍÊÇBellare-RogawayµÄÂÛÎÄÌá³öÕë¶ÔCCA2µÄOAEP°²È«ÐÔ£¬¶øʵ¼ÊÉÏËü²¢Ã»ÓÐÌá³öÕë¶ÔCCA2µÄOAEP°²È«ÐÔ¡£1 OAEP´Óδ±»Ö¤Ã÷¶ÔCCA2À´ËµÊÇ°²È«µÄ£»ÊÂʵÉÏ£¬Victor Shoup[48]ÒѾ֤ʵÕâÖÖÑéÖ¤²¢²»´æÔÚÓÚÒ»°ãµÄÇé¿öÖС£¼òµ¥µØ˵£¬ShoupÖ¸³öCCA2·½°¸ÖеĶÔÊÖÖªµÀÈçºÎʹ¼ÓÃÜÔÓﲿ·Ö·´Ïò£¬µ«²»ÖªµÀÈçºÎʹËüÍêÈ«·´Ïò£¬Õâ¸ö¶ÔÊÖÒ²Äܹ¥ÆÆÕâ¸ö·½°¸¡£¾ÙÀýÀ´Ëµ£¬Ò»¸öÈË¿ÉÒÔÏëÏóÈç¹û¹¥»÷ÕßÖªµÀÈçºÎ»Ö¸´ÓÃRSAEP¼ÓÃܵÄÒ»¸öËæ»úÕûÊýµÄËùÓÐ×Ó½Ú¶ø²»ÊÇÇ°20¸ö×Ö½Ú£¬ÄÇôËý¾ÍÄܹ»¹¥ÆÆRSAES-OAEP¡£ÕâÑùµÄ¹¥»÷Õß²»ÐèÒª½«RSAEPÍêÈ«·´Ïò£¬ÒòΪÔÚËýµÄ¹¥»÷¹ý³ÌÖв»ÐèҪʹÓÃÇ°20¸ö°Ëλ×é¡£
ͬÑùµØ£¬RSAES-OAEP¶ÔÓÚCCA2À´ËµÊÇ°²È«µÄ£¬¾ÍÔÚShoupÐû²¼ËûµÄ½á¹ûÖ®ºó²»¾Ã£¬ÕâÒ»µã¾Í±»Fujisaki¡¢ Okamoto¡¢ PointchevalºÍ Stern [21]Ö¤Ã÷ÁË¡£¼ÙÈçÄÜÖªµÀpre-imageµÄ×ã¹»´óµÄÒ»²¿·Ö£¬Ê¹ÓôÏÃ÷µÄÍøµãËõС¼¼Êõ£¨clever lattice reduction techniques£©£¬ËûÃÇÄÜÉ跨˵Ã÷ÈçºÎʹRSAEPÍêÈ«·´Ïò¡£Õâ¸ö¹Û²ì½áºÏÁËÒ»¸öÑéÖ¤£¬ÄǾÍÊÇÈç¹û»ù´¡µÄ¼ÓÃÜÔÓïÄÑÒÔ±»²¿·Ö·´Ïò£¬ÄÇôOAEP¶ÔCCA2À´ËµÊÇ°²È«µÄ£»Õâ¸ö¹Û²ìÌî²¹ÁËBellareºÍRogawayËùÖ¤Ã÷µÄ¹ØÓÚRSAES-OAEPµÄÊÂʵºÍijÈËÈÏΪËûÃÇ֤ʵµÄÊÂʵ֮¼äµÄȱ¿Ú¡£ÎÒÃǾÍÕâÑù±»RSAEPµÄ¹«¿ªÈõµãÍì¾ÈÁË£¨Ò²¾ÍÊÇ˵£¬È«²¿·´Ïò¿ÉÒÔ´Ó²¿·Ö·´ÏòÖÐÑÝÒï³öÀ´£©£¬ÕâÓÐЩ×ÔÏàì¶Ü¡£
È»¶ø²»ÐÒµÄÊÇ£¬½µµÍ°²È«¶ÔÓÚ¾ßÌåµÄ²ÎÊý²¢²»ÓÐЧ¡£¾¡¹ÜÕâ¸öÑéÖ¤³É¹¦µØ½«RSAES-OAEPµÄCCA2°²È«ÐԵĶÔÊÖAÓë·´ÏòRSAµÄËã·¨I¹ØÁªÆðÀ´£¬I³É¹¦µÄ¸ÅÂʽö½üËÆÓÚ? / 2£¬ÆäÖÐ?ÊÇ?³É¹¦µÄ¸ÅÂÊ¡£ÁíÍ⣬IµÄÔËÐÐʱ¼ä´óÔ¼ÊÇt£¬ÆäÖÐtÊǶÔÊֵIJÙ×÷ʱ¼ä¡£½á¹ûÊÇÎÒÃDz»ÄÜÅųý¹¥»÷RSAES-OAEP±ÈÓþßÌå²ÎÊý·´ÏòRSAÈÝÒ׵öàµÄ¿ÉÄÜÐÔ¡£°²È«ÑéÖ¤µÄ´æÔÚÈÔÈ»ÌṩÁËһЩ±£Ö¤£¬ÄǾÍÊÇRSAES-OAEP½á¹¹±Èad hoc½á¹¹£¨ÖîÈçRSAES-PKCS1-v1_5£©ºÏÀí¡£
Hybrid¼ÓÃÜ·½°¸»ùÓÚRSA-KEMÃÜÔ¿·â×°·¶Àý£¬²¢ÌṩÑÏÃܵݲȫÐÔÑéÖ¤£¬ÄÜÖ±½ÓÓ¦ÓÃÓÚ¾ßÌå²ÎÊý£»ÏêÇé¼û[30]¡£PKCS #1µÄºóÐø°æ±¾¿ÉÒÔ¶¨Òå»ùÓÚÕâ¸ö·¶ÀýµÄ·½°¸¡£
2
18
2
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
1
PKCS #1 v2.0ÒýÓÃÁË[3]²¢ÇÒÉù³Æ¡°ÔÚûÓÐÃ÷È·Ã÷ÎÄÒâʶ»òÑ¡ÔñÃÜÎĹ¥»÷ÀàÐ͵ÄÇé¿öÏ£¬Ñ¡ÔñÃÜÎĹ¥»÷¶ÔÓÚÓÐ
Ã÷ÎÄÒâʶµÄ¼ÓÃÜ·½°¸£¬ÏñRSAES-OAEP£¬À´ËµÊÇÎÞЧµÄ¡±¡£
2
ÔÚ [21]ÖУ¬·´Ïò³É¹¦µÄ¸ÅÂÊÊÇ?2 / 4¡£ÆäËüÒò×Ó1 / 216 È¡¾öÓÚ±àÂëÏûÏ¢EMµÄ¿ªÍ·°Ë¸ö¹Ì¶¨µÄÁã±ÈÌØ£¬ÕâÔÚ[21]Öп¼ÂǵÄ
OAEP±ä»¯ÖÐûÓгöÏÖ¡££¨ÎÒ±ØÐëÁ½´ÎÓ¦ÓÃAÀ´·´ÏòRSA£¬ÇÒÿ¸öÓ¦ÓóÌÐòÓëÒò×Ó1 / 28ÏàÓ¦£©
7.1.1 ¼ÓÃÜÔËËã
RSAES-OAEP-ENCRYPT ((n, e), M, L) ¿ÉÑ¡Ï ÊäÈ룺 Êä³ö: ³ö´íÌáʾ£º ¼ÙÉ裺 ²½Ö裺
1. ³¤¶È¼ì²é£º
a. Èç¹ûL µÄ³¤¶È³¬³ö¹þÏ£º¯ÊýµÄÊäÈëÏÞÖÆ £¨SHA-1µÄÏÞÖÆÊÇ261 ¨C 1 ¸ö°Ëλ×飩£¬ Êä³ö¡°±ê
Ç©Ì«³¤¡±È»ºóÖÕÖ¹ÔËËã¡£
b. Èç¹ûmLen > k ¨C 2hLen ¨C 2£¬Êä³ö¡°ÏûϢ̫³¤¡±È»ºóÖÕÖ¹ÔËËã¡£
2. EME-OAEP ±àÂ루¼û ´íÎó£¡Î´ÕÒµ½ÒýÓÃÔ´¡££©£º
a. Èç¹ûûÓÐÌṩ±êÇ©L£¬ ÔòÈÃLΪ¿Õ´®¡£ Èà lHash = Hash (L)£¬ ÕâÊÇÒ»¸ö³¤¶ÈΪhLen µÄ
°Ëλ×é´®£¨¼ûÏÂÃæµÄ×¢ÊÍ£©¡£
b. Éú³ÉÒ»¸öÓÉk ¨C mLen ¨C 2hLen ¨C 2¸öÁãÖµ°ËÔª×é¹¹³ÉµÄ´®PS¡£ PSµÄ³¤¶È¿ÉÄÜÊÇÁã¡£ c. Á¬½ÓlHash£¬PS£¬Ê®Áù½øÖÆֵΪ0x01µÄ°ËÔª×éºÍÏûÏ¢M £¬ÐγÉÒ»¸ö³¤¶ÈΪk ¨C hLen ¨C 1¸ö
°Ëλ×éµÄÊý¾Ý¿éDB £º
DB = lHash || PS || 0x01 || M ¡£
d. Éú³ÉÒ»¸ö³¤¶ÈΪhLen µÄËæ»ú°Ëλ×é´®seed ¡£ e. ʹdbMask = MGF (seed, k ¨C hLen ¨C 1) f. ʹmaskedDB = DB ? dbMask.
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
Hash MGF (n, e) M L C
¹þÏ£º¯Êý£¨hLen ±íʾɢÁк¯ÊýÊä³öµÄÒÔ°Ëλ×éΪ¼ÆÁ¿µ¥Î»µÄ³¤¶È£© ÑÚÄ£Éú³Éº¯Êý
½ÓÊÕ·½µÄRSA ¹«Ô¿£¨k ±íʾRSAºÏÊýÄ£ n µÄÒÔ°Ëλ×éΪ¼ÆÁ¿µ¥Î»µÄ³¤¶È£© ´ý¼ÓÃܵÄÏûÏ¢£¬ÊÇÒ»¸ö³¤¶ÈΪmLen µÄ°Ëλ×é´®£¬ÆäÖÐ mLen ? k ¨C 2hLen ¨C 2 ÏûÏ¢µÄ¿ÉÑ¡¸½¼Ó±êÇ©£»Èç¹ûûÓÐÌṩL£¬ÄÇôL µÄĬÈÏÖµÊÇ¿Õ´® ÃÜÎÄ£¬Ò»¸ö³¤¶ÈΪk µÄ°Ëλ×é´®
¡°ÏûϢ̫³¤¡±£»¡°±êÇ©Ì«³¤¡± RSA¹«Ô¿(n, e) ÊÇÓÐЧµÄ
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
g. ʹ seedMask = MGF (maskedDB, hLen). h. ʹmaskedSeed = seed ? seedMask.
i. Á¬½ÓÒ»¸öÊ®Áù½øÖÆֵΪ0x00µÄ°Ëλ×飬 maskedSeedºÍ maskedDB £¬ÐγÉÒ»¸ö³¤¶ÈΪk ¸ö
°Ëλ×éµÄ±àÂëÏûÏ¢EM
EM = 0x00 || maskedSeed || maskedDB¡£
3. RSA¼ÓÃÜ£º
a. ½«±àÂëÏûÏ¢EMת»»³ÉÒ»¸öÕûÊýÏûÏ¢´ú±í£¨¼û4.2²¿·Ö£©£º
m = OS2IP (EM) ¡£
b. ½«RSA¹«Ô¿(n, e) ºÍÏûÏ¢´ú±ím´úÈëRSAEP¼ÓÃÜÔÓ5.1.1²¿·Ö£©£¬²úÉúÒ»¸öÕûÊýµÄÃÜ
ÎÄ´ú±íc £º
c = RSAEP ((n, e), m) ¡£
c. ½«ÃÜÎÄ´ú±ícת»»ÎªÒ»¸ö³¤¶ÈΪk¸ö°ËÔª×éµÄÃÜÎÄC £¨¼û4.1²¿·Ö£©£º
C = I2OSP (c, k) ¡£
4. Êä³öÃÜÎÄ C¡£
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
a DB = lHash PS M seed ¡¯ 00 MGF ¡¯ MGF EM = 00 maskedSeed maskedDB ͼ1£ºEME-OAEP ±àÂëÔËËã¡£lHashÊÇ¿ÉÑ¡±êÇ©LµÄÉ¢ÁС£½âÂëÔËËã°´ÕÕÏà·´µÄ²½Öè½øÐУ¬´Ó¶ø»Ö¸´³öM²¢ÇÒÑéÖ¤lHashºÍPS¡£
×¢ÊÍ£ºÈç¹ûLÊÇ¿Õ´®£¬ÏàÓ¦µÄÉ¢ÁÐÖµlHash¾ßÓÐÏÂÁÐÊ®Áù½øÖÆÖµ´ú±í¹þÏ£º¯ÊýµÄ²»Í¬Ñ¡Ôñ¡£
SHA-1£º SHA-256£º SHA-384£º
(0x)da39a3ee 5e6b4b0d 3255bfef 95601890 afd80709
(0x)e3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b934c a495991b 7852b855 (0x)38b060a7 51ac9638 4cd9327e b1b1e36a 21fdb711 14be0743 4c0cc7bf 63f6e1da
274edebf e76f65fb d51ad2f1 4898b95b
(0x)cf83e135 7eefb8bd f1542850 d66d8007 d620e405 0b5715dc 83f4a921 d36ce9ce
SHA-512£º
47d0d13c 5d85f2b0 ff8318d2 877eec2f 63b931bd 47417a81 a538327a f927da3e
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
7.1.2 ½âÃÜÔËËã
RSAES-OAEP-DECRYPT (K, C, L) Ñ¡Ï ÊäÈ룺 Êä³ö£º
Hash
É¢Áк¯Êý¹þÏ££¨hLen ±íʾɢÁк¯ÊýµÄÊä³öµÄÒÔ°Ëλ×éΪ¼ÆÁ¿µ¥Î»µÄ³¤¶È£©
MGF ÑÚÄ£Éú³Éº¯Êý K C L M
½ÓÊÜ·½µÄRSA˽Կ£¨k±íʾRSAºÏÊýÄ£nµÄÒÔ°Ëλ×éΪ¼ÆÁ¿µ¥Î»µÄ³¤¶È£© ´ý½âÃܵÄÃÜÎÄ£¬Ê¹Ò»¸ö³¤¶ÈΪkµÄ°Ëλ×é´®£¬ÆäÖÐk ¡Ý 2hLen + 2
¿ÉÑ¡±êÇ©£¬ÆäÓëÏûÏ¢µÄÁªÏµ½«µÃµ½ÑéÖ¤£»Èç¹ûûÓÐÌṩLÖµ£¬ÔòLµÄĬÈÏֵΪ¿Õ´®¡£ ÏûÏ¢£¬ÊÇÒ»¸ö³¤¶ÈΪmLenµÄ°Ëλ×é´®£¬ÆäÖÐmLen ? k ¨C 2hLen ¨C 2
´íÎóÌáʾ£º ¡°½âÃܳö´í¡± ²½Ö裺
1. ³¤¶È¼ì²é£º
a. Èç¹ûLµÄ³¤¶È´óÓÚÉ¢Áк¯ÊýµÄÊäÈëÏÞÖÆ£¨SHA-1µÄÏÞÖÆÊÇ261 ¨C 1¸ö°Ëλ×飩£¬Êä³ö¡°½âÃÜ
³ö´í¡±²¢ÖÐÖ¹ÔËËã¡£
b. Èç¹ûÃÜÎÄCµÄ³¤¶È²»ÊÇk¸ö°Ëλ×飬ÔòÊä³ö¡°½âÃܳö´í¡±²¢ÖÐÖ¹ÔËËã¡£ c. Èç¹ûk < 2hLen + 2£¬ÔòÊä³ö¡°½âÃܳö´í¡±²¢ÖÐÖ¹ÔËËã¡£
2. RSA ½âÃÜ£º
a. ½«ÃÜÎÄCת»»³ÉÒ»¸öÕûÊýÃÜÎÄ´ú±íc£¨¼û0²¿·Ö£©£º
c = OS2IP (C) ¡£
b. ½«RSA˽ԿKºÍÃÜÎÄ´ú±íc´úÈëRSADP½âÃÜÔÓ¼û0²¿·Ö£©£¬´Ó¶ø²úÉúÒ»¸öÕûÊýÏûÏ¢
´ú±ím£º
m = RSADP (K, c) ¡£
Èç¹ûRSADPÊä³ö¡°ÃÜÎÄ´ú±í³¬³ö·¶Î§¡±£¨Òâ˼ÊÇc ? n£©£¬ÔòÊä³ö¡°½âÃܳö´í¡±²¢ÇÒÖÐÖ¹ÔËËã¡£
c. ½«ÏûÏ¢´ú±ímת»»³ÉÒ»¸ö³¤¶ÈΪk¸ö°Ëλ×éµÄ±àÂëÏûÏ¢EM£¨¼û0²¿·Ö£©£º
EM = I2OSP (m, k) ¡£
3. EME-OAEP±àÂ룺
a. Èç¹ûδÌṩ±êÇ©LµÄÖµ£¬ÔòʹLµÄֵΪ¿Õ´®¡£Ê¹lHash = Hash (L)£¬ÕâÊÇÒ»¸ö³¤¶ÈΪhLen
µÄ°Ëλ×é´®£¨¼û0²¿·ÖµÄ×¢ÊÍ£©¡£
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
b. ½«±àÂëÏûÏ¢EM·Ö½âΪһ¸ö°Ëλ×éY£¬Ò»¸ö³¤¶ÈΪhLenµÄ°Ëλ×é´®maskedSeed£¬ÒÔ¼°Ò»¸ö
³¤¶ÈΪk ¨C hLen ¨C 1µÄ°Ëλ×é´®maskedDB£¬Ê¹µÃ
EM = Y || maskedSeed || maskedDB ¡£
c. ʹseedMask = MGF (maskedDB, hLen). d. ʹseed = maskedSeed ? seedMask. e. ʹdbMask = MGF (seed, k ¨C hLen ¨C 1). f. ʹDB = maskedDB ? dbMask.
g. ½«DB·Ö½â³ÉÒ»¸ö³¤¶ÈΪhLenµÄ°Ëλ×é´®lHash¡¯£¬Ò»¸ö£¨¿ÉÄÜΪ¿ÕµÄ£©ÓÉÊ®Áù½øÖÆֵΪ
0x00µÄ°Ëλ×é¹¹³ÉµÄÌî³äPS£¬ÒÔ¼°Ò»¸öÏûÏ¢M£¬Ê¹µÃ
DB = lHash¡¯ || PS || 0x01 || M .
Èç¹ûûÓпÉÒÔ´ÓMÖзÖÀë³öPSµÄÊ®Áù½øÖÆֵΪ0x01µÄ°Ëλ×飬Èç¹ûlHashûÓеÈͬµÄlHash¡¯£¬»òÕßÈç¹ûYÊÇ·ÇÁãµÄ£¬ÔòÊä³ö¡°½âÃܳö´í¡±²¢ÖÐÖ¹ÔËËã¡££¨¼ûÏÂÃæµÄ×¢ÊÍ£©
4. Êä³öÏûÏ¢M¡£
×¢ÊÍ£º±ØÐëÈ·±£¶ÔÊÖÎÞ·¨ÔÚ²½Öè3.fÖзֱæ³ö²»Í¬µÄ³ö´íÌõ¼þ£¬·ÀÖ¹¶ÔÊÖÁ˽â¹ØÓÚ±àÂëÏûÏ¢EMµÄ²¿·ÖÐÅÏ¢£¬ÎÞÂÛÊÇͨ¹ý³ö´íÏûÏ¢»òÊǶ¨Ê±£¬»òÕ߸üÒ»°ãµÄ¡£·ñÔò¶ÔÊÖ¿ÉÄÜÄܹ»»ñµÃ¹ØÓÚÃÜÎÄCµÄ½âÃܵÄÓÐÓÃÐÅÏ¢£¬½ø¶øµ¼ÖÂÏñManger·¢ÏֵĹ¥»÷ÊÖ·¨Ò»ÑùµÄÑ¡ÔñÃÜÎĹ¥»÷[36]¡£
7.2 RSAES-PKCS1-v1_5
RSAES-PKCS1-v1_5 ½«RSAEP ºÍRSADP ÔÓ¼û0²¿·ÖºÍ0²¿·Ö£©ÓëEME-PKCS1-v1_5±àÂë·½·¨£¨¼û0²¿·ÖÖеIJ½Öè1ºÍ0²¿·ÖÖеIJ½Öè3£©½áºÏÆðÀ´¡£ËüÔÚÊýѧÉϵÈͬÓÚ PKCS #1 v1.5ÖеļÓÃÜ·½°¸¡£¾¡¹Üµ±¼ÓÃܳ¤ÏûÏ¢£¨²Î¼ûÏÂÃæ×¢Ê͵ĵÚÈýÌõÒÔ¼°[10]£¬[14]ÖÐÓÐÒ»¸ö¸ÄÁ¼µÄ¹¥»÷£©Ê±£¬Ó¦¸Ã±ÜÃâÆðÒòÓÚCoppersmith¡¢Franklin¡¢ Patarin ºÍReiterµÄµÍÃÝRSAµÄ¹¥»÷£»µ«RSAES-PKCS1-v1_5 Äܹ»¶Ô³¤¶È´óÓÚk ¨C 11£¨kÊÇRSAºÏÊýÄ£µÄÒÔ°Ëλ×éΪ¼ÆÁ¿µ¥Î»µÄ³¤¶È£©¸ö°Ëλ×éµÄÏûÏ¢½øÐÐÔËËã¡£×ܵÄÀ´¿´£¬ÓÉÓÚÕâ¸ö·½°¸·´¶ÔËæ»úÉú³ÉÃÜÔ¿£¬Òò´Ë²»ÍƼöʹÓÃÕâ¸ö·½°¸¼ÓÃÜÒ»¸öÈÎÒâµÄÏûÏ¢¡£¿¼Âǵ½Ò»¸öºÏÀíµÄ³É¹¦¿ÉÄÜÐÔ£¬¼´Ê¹²»ÖªµÀ¶ÔÓ¦µÄÃ÷ÎÄÒ²¿ÉÄÜÉú³ÉÓÐЧµÄRSAES-PKCS1-v1_5ÃÜÎÄ¡£ÕâÖÖ¿ÉÄÜÐÔ¿ÉÒÔÓÃÓÚ[6]ÖÐËùÃèÊöµÄÑ¡ÔñÃÜÎĹ¥»÷¡£Òò´Ë£¬Èç¹ûҪʹÓÃRSAES-PKCS1-v1_5£¬Ó¦²ÉȡijЩÈÝÒ×ʵÏÖµÄÓ¦¶Ô´ëÊ©ÒÔ×èÄÓ[6]ÖÐÃèÊöµÄ¹¥»÷¡£µäÐ͵ÄÀý×Ó°üÀ¨Ôö¼Ó´ý±àÂëÊý¾ÝµÄ½á¹¹£¬ÑÏÃܵؼì²é½âÃܺóÏûÏ¢µÄPKCS #1 v1.5µÄÒ»ÖÂÐÔ£¨ÒÔ¼°ÆäËüÈßÓàÐÔ£©£¬Í³Ò»»ùÓÚPKCS #1 v1.5µÄÒ»¸ö¿Í»§»ú\\·þÎñÆ÷ÐÒéÖеĴíÎóÏûÏ¢¡£ÕâЩ¶¼¿ÉÒÔ×÷ΪÓÐЧµÄÓ¦¶Ô
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
´ëÊ©£¬²»ÐèÒªÐÞ¸ÄÒ»¸ö»ùÓÚPKCS #1 v1.5µÄÐÒé¡£ÈçÐè»ñµÃ¹ØÓÚÉÏÊö´ëÊ©ºÍÆäËüÓ¦¶Ô´ëÊ©µÄ½øÒ»²½ÌÖÂÛ£¬Çë²Î¼ûSee [7] ¡£½üÀ´Ñо¿±íÃ÷SSL/TLSÎÕÊÖÐÒ飨ʹÓÃRSAES-PKCS1-v1_5 ºÍijЩӦ¶Ô´ëÊ©£©[17]µÄ°²È«ÐÔÓ벻ͬµÄRSAÎÊÌâÓйأ»½øÒ»²½ÌÖÂÛÇë²Î¼û[32] ¡£
×¢ÊÍ£ºÒ»Ï¶ÎÂäÃèÊöһЩʹÓÃRSAES-PKCS1-v1_5Ëù¹ÌÓеݲȫ½¨Òé¡£³ýÁËÕ⼸Äê¼äÃÜÂë¸Ä½øÖÐÌá³öµÄн¨ÒéÖ®Í⣬Ҳ°üÀ¨Á˱¾ÆªÎĵµµÄ°æ±¾1.5ÖеĽ¨Òé¡£ ?
½¨ÒéΪÿ¸ö¼ÓÃܹý³Ì¶ÀÁ¢Éú³É0²¿·ÖÖеIJ½Öè2ÖÐÓõ½µÄαËæ»ú°Ëλ×飬ÌرðÊÇÔÚͬÑùµÄÊý¾Ý±»ÊäÈë¶à¸ö¼ÓÃܹý³Ìʱ¡£H?stadµÄ½á¹û[24]ÊÇÌá³öÕâ¸ö½¨ÒéµÄÒ»¸ö¶¯»ú¡£ ?
0²¿·Ö²½Öè2ÖеÄÌî³ä´®PSµÄ³¤¶ÈÖÁÉÙΪ°Ë¸ö°Ëλ×飬ÕâÊǹ«Ô¿ÔËËãµÄ°²È«Ìõ¼þ£¬ËüʹµÃ¹¥»÷ÕßÄÑÒÔͨ¹ý³¢ÊÔËùÓпÉÄܵļÓÃÜ¿éÀ´»Ö¸´Êý¾Ý¡£ ?
µ±´ý¼ÓÃܵÄÏûÏ¢µÄ´óС½ÏС£¬Î±Ëæ»ú°Ëλ×éÒ²Äܹ»°ïÖú×è°ÆðÒòÓÚCoppersmith et al[10]µÄ¹¥»÷£¨¹ØÓÚÕâ¸ö¹¥»÷µÄ¸Ä½ø£¬²Î¼û[14]£©¡£µ±ÏàËƵÄÏûÏ¢ÓÃͬÑùµÄRSA¹«Ô¿¼ÓÃÜ£¬Õâ¸ö¹¥»÷¾Í»á×÷ÓÃÓÚµÍÃÝRSA¡£ ?
µ±´ý¼ÓÃܵÄÏûÏ¢µÄ³¤¶È±£³Ö½ÏС£¬ÔòαËæ»ú°Ëλ×éÄÜ°ïÖúÒ»´ÎÆðÒòÓÚCoppersmith et al. [10]µÄ¹¥»÷£¨[14]ÖÐÓй¥»÷µÄ¸Ä½ø£©¡£µ±Ê¹ÓÃͬÑùµÄRSA¹«Ô¿¼ÓÃÜÀàËƵÄÏûÏ¢£¬Õâ¸ö¹¥»÷¶ÔµÍÃÝRSA¾Í×àЧÁË¡£ÌرðµØ£¬Õâ¸ö¹¥»÷µÄÒ»¸öÌØÉ«ÊÇ£¬µ±RSAEPµÄÁ½¸öÊäÈë¹¹³É±ÈÌصÄÒ»¸ö´óСÊý£¨8/9£©£¬ÇÒʹÓõÍÃÝRSA£¨e = 3£©¼ÓÃÜËüÃÇ£¬ÓÃÕâ¸ö¹¥»÷»Ö¸´ÕâÁ½¸öÊäÈëÊÇ¿ÉÄܵġ£Õâ¸ö¹¥»÷µÄÁíÒ»¸öÌØÉ«Êǵ±ÒÑÖªRSAEPÊäÈëµÄÒ»¸ö´ó·ÖÊý£¨2/3£©£¬¾ÍÄܳɹ¦½âÃܵ¥¸öÃÜÎÄ¡£¶ÔÓÚµäÐÍ1Ó¦ÓóÌÐò£¬´ý¼ÓÃܵÄÏûÏ¢ºÜ¶Ì£¨ÀýÈ磬һ¸ö128λµÄ¶Ô³ÆÃÜÔ¿£©£¬ËùÒԼȲ»ÊÇÐèÒªÖªµÀ×ã¹»µÄÐÅÏ¢£¬Ò²²»ÊÇÁ½¸öÏûÏ¢µÄÏàͬµã£¬Ê¹Õâ´Î¹¥»÷µÃÊÖ¡£È»¶ø£¬Èç¹û¼ÓÃܳ¤ÏûÏ¢£¬»òÕßÈç¹ûÏûÏ¢µÄij²¿·ÖÒÑÖª£¬ÄÇôÕâ¸ö¹¥»÷¿ÉÄÜÊÇÒ»¸öСÍæÒâ¶ù¡£²»¹ÜÔõÑù£¬RSAES-OAEP·½°¸¿Ë·þÁËÕâ¸ö¹¥»÷¡£
7.2.1 ¼ÓÃÜÔËËã
RSAES-PKCS1-V1_5-ENCRYPT ((n, e), M) ÊäÈ룺 Êä³ö£º ³ö´íÌáʾ£º ²½Ö裺
1. ³¤¶È¼ì²é£º Èç¹û mLen > k ¨C 11£¬Êä³ö¡°ÏûϢ̫³¤¡±È»ºóÖÐÖ¹ÔËËã¡£ 2. EME-PKCS1-v1_5±àÂ룺
a. Éú³ÉÒ»¸ö³¤¶ÈΪk ¨C mLen ¨C 3 ÇÒÓÉαËæ»úÉú³ÉµÄ·ÇÁã°Ëλ×é¹¹³ÉµÄ°Ëλ×é´®PS ¡£PSµÄ³¤
¶ÈÖÁÉÙΪ°Ë¸ö°Ëλ×é¡£
b. Á¬½ÓPS¡¢ÏûÏ¢ M ºÍÆäËüÌî³ä£¬´Ó¶øÐγÉÒ»¸ö³¤¶ÈΪk¸ö°Ëλ×éµÄ±àÂëÏûÏ¢EM
(n, e) M C
½ÓÊÕ·½µÄRSA¹«Ô¿£¨k±íʾºÏÊýÄ£nµÄÒÔ°Ëλ×éΪ¼ÆÁ¿µ¥Î»µÄ³¤¶È£© ´ý¼ÓÃܵÄÏûÏ¢£¬ÊÇÒ»¸ö³¤¶ÈΪmLen µÄ°Ëλ×é´®£¬ÆäÖÐmLen ? k ¨C 11 ÃÜÎÄ£¬ÊÇÒ»¸ö³¤¶ÈΪk µÄ°Ëλ×é´®
¡°ÏûϢ̫³¤¡±
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
EM = 0x00 || 0x02 || PS || 0x00 || M ¡£
3. RSA¼ÓÃÜ£º
a. ½«±àÂëÏûÏ¢EMת»»³ÉÒ»¸öÕûÊýÏûÏ¢´ú±ím£¨²Î¼û4.2²¿·Ö£©£º
m = OS2IP (EM) ¡£
b. ½«RSA¹«Ô¿(n, e) ºÍÏûÏ¢´ú±ím´úÈëRSAEP ¼ÓÃÜÔÓ²Î¼û5.1.1²¿·Ö£©£¬´Ó¶ø²úÉúÒ»
¸öÃÜÎÄ´ú±íc£º
c = RSAEP ((n, e), m) ¡£
c. ½«ÃÜÎÄ´ú±ícת»»³ÉÒ»¸ö³¤¶ÈΪk¸ö°Ëλ×éµÄÃÜÎÄ´ú±íc£¨²Î¼û4.1²¿·Ö£©£º
C = I2OSP (c, k) ¡£
4. Êä³öÃÜÎÄC¡£
7.2.2 ½âÃÜÔËËã
RSAES-PKCS1-V1_5-DECRYPT (K, C) ÊäÈ룺
K C
½ÓÊÕ·½µÄRSA˽Կ
´ý½âÃܵÄÃÜÎÄ£¬ÊÇÒ»¸ö³¤¶ÈΪkµÄ°Ëλ×é´®£¬ÆäÖÐkÊÇRSAºÏÊýÄ£nµÄÒÔ°Ëλ×éΪ¼ÆÁ¿µ¥Î»µÄ³¤¶È¡£
Êä³ö£º ³ö´íÌáʾ£º ²½Ö裺
1. ³¤¶È¼ì²é£ºÈç¹ûÃÜÎÄCµÄ³¤¶È²»ÊÇk¸ö°Ëλ×飨»òÕßÈç¹ûk < 11£©£¬ÔòÊä³ö¡°½âÃܳö´í¡±²¢ÇÒÖÐÖ¹
ÔËËã¡£ 2. RSA½âÃÜ£º
a. ½«ÃÜÎÄCת»»³ÉÒ»¸öÕûÊýÃÜÎÄ´ú±íc£¨²Î¼û4.2²¿·Ö£©£º
c = OS2IP (C) ¡£
M
ÏûÏ¢£¬ÊÇÒ»¸ö³¤¶ÈÖÁÉÙΪk ¨C 11µÄ°Ëλ×é´®
¡°½âÃܳö´í¡±
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
b. ½«RSA˽Կ(n, d) ºÍÃÜÎÄ´ú±íc ´úÈëRSADP½âÃÜÔÓ²Î¼û5.1.2²¿·Ö£©£¬½ø¶ø²úÉúÒ»¸ö
ÕûÊýÏûÏ¢´ú±ím£º
m = RSADP ((n, d), c) ¡£
Èç¹ûRSADPÊä³ö¡°ÃÜÎÄ´ú±í³¬³ö·¶Î§¡±£¨Òâ˼ÊÇc ? n£©£¬ÔòÊä³ö¡°½âÃܳö´í¡±È»ºóÖÐÖ¹ÔËËã¡£
c. ½«ÏûÏ¢´ú±ím ת»»ÎªÒ»¸ö³¤¶ÈΪk¸ö°Ëλ×é´®µÄ±àÂëÏûÏ¢EM £º
EM = I2OSP (m, k) ¡£
3. EME-PKCS1-v1_5½âÂ룺½«±àÂëÏûÏ¢EM ·ÖÀë³ÉÒ»¸ö°Ëλ×é´®PS £¨ÓÉ·ÇÁã°Ëλ×é¹¹³É£©ºÍÒ»¸ö
ÏûÏ¢M £¬Ê¹Âú×ã
EM = 0x00 || 0x02 || PS || 0x00 || M ¡£
Èç¹ûEMµÄµÚÒ»¸ö°Ëλ×éµÄÊ®Áù½øÖÆÖµ²»Îª0x00£¬Èç¹ûEMµÄµÚ¶þ¸ö°Ëλ×éµÄÊ®Áù½øÖÆÖµ²»Îª0x02£¬Èç¹ûûÓÐÊ®Áù½øÖÆֵΪ0x00µÄ°Ëλ×é¿ÉÒÔ´ÓM·ÖÀë³öPS£¬»òÕßÈç¹ûPSµÄ³¤¶ÈСÓÚ8¸ö°Ëλ×飬Êä³ö¡°½âÃܳö´í¡±²¢ÇÒÖÐÖ¹ÔËËã¡£ 4. Êä³öM¡£
×¢ÊÍ£º±ØÐëÈ·±£¶ÔÊÖÎÞ·¨ÔÚ²½Öè3Öзֱæ³ö²»Í¬µÄ³ö´íÌõ¼þ£¬ÎÞÂÛÊÇͨ¹ý³ö´íÏûÏ¢»òÊǶ¨Ê±¡£·ñÔò¶ÔÊÖ¿ÉÄÜÄܹ»»ñµÃ¹ØÓÚ½âÃÜÃÜÎÄCµÄÓÐÓÃÐÅÏ¢£¬½ø¶øµ¼ÖÂBleichenbacher¹¥»÷[6]µÄÔöÇ¿°æ£»±ÈµÃÉÏ£¨compare to£© MangerµÄ¹¥»÷ [36]¡£
8 ´ø¸½ÊôµÄÇ©Ãû·½°¸
¾Í±¾ÆªÎĵµ¶øÑÔ£¬Ò»¸ö´ø¸½ÊôµÄÇ©Ãû·½°¸°üÀ¨Ò»¸öÇ©ÃûÉú³ÉÔËËãºÍÒ»¸öÇ©ÃûÑéÖ¤ÔËË㣬ÆäÖÐÇ©ÃûÉú³ÉÔËËãÀûÓÃÇ©ÃûÕßµÄRSA˽Կ²úÉúÒ»¸öÇ©Ãû£¬¶øÇ©ÃûÑéÖ¤ÔËËãÀûÓÃÇ©ÃûÕ߶ÔÓ¦µÄRSA¹«Ô¿ÑéÖ¤ÏûÏ¢ÉϵÄÇ©Ãû¡£ÎªÁËÑéÖ¤ÓÃÕâÖÖ·½°¸²úÉúµÄÇ©Ãû£¬ÑéÖ¤Õß±ØÐëÓµÓÐÏûÏ¢±¾Éí¡£ËùÒÔ˵£¬´ø¸½ÊôµÄÇ©Ãû·½°¸Óë´øÏûÏ¢»Ö¸´µÄÇ©Ãû·½°¸²»Í¬£¬±¾ÆªÎĵµ²»ÌÖÂÛ´øÏûÏ¢»Ö¸´µÄÇ©Ãû·½°¸¡£
Ò»¸ö´ø¸½ÊôµÄÇ©Ãû·½°¸¿ÉÒÔÓÃÓÚ¸÷ÖÖÓ¦ÓóÌÐòÖС£¾ÙÀýÀ´Ëµ£¬ÕâÀﶨÒåµÄ´ø¸½ÊôµÄÇ©Ãû·½°¸ÊÇÊʺÏÓÚ
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
X.509 ÈÏÖ¤[28]µÄÇ©ÃûËã·¨¡£¾¡¹ÜÓÉÓÚ¼¼ÊõÔÒò£¬PKCS #7µ±Ç°°æ±¾½«É¢Áк¯Êý´ÓÇ©Ãû·½°¸£¨Õâ¸ö·½°¸ÓëÕâÀïÌáµ½µÄ²»Ò»Ñù£©ÖзÖÀë³öÀ´£¬µ«Ïà¹ØµÄÇ©Ãû·½°¸¿ÉÒÔÓÃÔÚPKCS #7ÖУ»¸ü¶àµÄÌÖÂÛ£¬Çë²Î¼û¸½Â¼A.2.3µÄ×¢ÊÍ¡£
±¾ÆªÎĵµÖÖ¶¨ÒåÁËÁ½ÖÖ´ø¸½ÊôµÄÇ©Ãû·½°¸£º RSASSA-PSS ºÍRSASSA-PKCS1-v1_5¡£¾¡¹Ü»¹²»ÖªµÀÓÐʲô¹¥»÷ÊÇÕë¶ÔRSASSA-PKCS1-v1_5µÄ£¬µ«ÊÇΪÁËÌá¸ß½¡×³ÐÔ£¬ÔÚÐÂÓ¦ÓóÌÐòÖÐÍƼö²ÉÄÉRSASSA-PSS¡£ °üº¬RSASSA-PKCS1-v1_5ÊÇΪÁËÓëÒÑ´æÔÚµÄÓ¦ÓóÌÐò¼æÈÝ£¬¶øÇÒ¾¡¹ÜRSASSA-PKCS1-v1_5 ÈÔÈ»ÊÊÓÃÓÚеÄÓ¦ÓóÌÐò£¬µ«ÊǹÄÀøÖð²½ÏòRSASSA-PSS ת»»¡£
ÕâÀï¸ø¶¨µÄ´ø¸½ÊôµÄÇ©Ãû·½°¸×ñÑÒ»°ãµÄÄ£ÐÍ£¨ÓëIEEE Std 1363-2000 [26]ÖÐʹÓõÄÒ»Ñù£©£¬¼´½«Ç©ÃûºÍÑéÖ¤ÔÓïÓëÕë¶ÔÇ©ÃûµÄ±àÂë·½·¨½áºÏÆðÀ´¡£Ç©ÃûÉú³ÉÔËËã¶ÔÏûÏ¢½øÐÐÏûÏ¢±àÂëÔËËãÒÔ²úÉúÒ»¸ö±àÂëÏûÏ¢£¬Ëæºó¸Ã±àÂëÏûÏ¢½«±»×ª»»³ÉÒ»¸öÕûÊýÏûÏ¢´ú±í¡£Ç©ÃûÔÓï×÷ÓÃÓÚÏûÏ¢´ú±í£¬´Ó¶ø²úÉúÒ»¸öÇ©Ãû¡£Óë´ËÏà·´£¬Ç©ÃûÑéÖ¤ÔËË㽫ǩÃûÑéÖ¤ÔÓïÓ¦ÓÃÓÚÇ©Ãû£¬ÒÔ»Ö¸´³öÏûÏ¢´ú±í£¬È»ºóÏûÏ¢´ú±í±»×ª»»³ÉÒ»¸ö±àÂëºóµÄ°Ëλ×é´®ÏûÏ¢¡£ÑéÖ¤ÔËËã×÷ÓÃÓÚÕâ¸öÏûÏ¢ºÍ±àÂëºóµÄÏûÏ¢£¬ÒÔÅжÏËüÃÇÁ©ÊÇ·ñÒ»Ö¡£
Èç¹û±àÂë·½·¨ÊÇÈ·¶¨ÐԵģ¨ÀýÈ磬EMSA-PKCS1-v1_5£©£¬ÑéÖ¤ÔËËã¿ÉÒÔ¶ÔÏûÏ¢½øÐÐÏûÏ¢±àÂëÔËË㣬²¢½«ÔËËã½á¹û¡ª¡ª±àÂëÏûÏ¢ÓëÏÈÇ°»ñµÃµÄ±àÂëÏûÏ¢¶Ô±È¡£Èç¹ûÆ¥Å䣬ÔòÇ©Ãû±»ÈÏΪÊÇÓÐЧµÄ¡£Èç¹û±àÂë·½·¨ÊÇËæ»úµÄ£¨ÈçEMSA-PSS£©£¬ÄÇôÑéÖ¤ÔËËã»á¸ü¼Ó¸´ÔÓ¡£¾ÙÀýÀ´Ëµ£¬EMSA-PSSÑéÖ¤²Ù×÷´Ó±àÂëºóµÄÏûÏ¢ÖÐÌáÈ¡Ëæ¼´saltºÍÒ»¸öÉ¢ÁÐÊä³ö£¬²¢¼ì²é¸ÃÉ¢ÁÐÊä³ö¡¢saltºÍÏûÏ¢ÊÇ·ñÒ»Ö£»´ÓÏûÏ¢ºÍsalt·½ÃæÀ´Ëµ£¬É¢ÁÐÊä³öÊÇÒ»¸öÈ·¶¨µÄº¯Êý¡£
¶ÔÓÚÔÚ±¾ÆªÎĵµÖж¨ÒåµÄ´ø¸½ÊôµÄÇ©Ãû·½°¸À´Ëµ£¬Èç¹ûÇ©Ãû·ÅÔÚÏûÏ¢µÄºóÃ棬ǩÃûÉú³ÉÔËËãºÍÇ©ÃûÑéÖ¤ÔËËã¾ÍÏñ¡°µ¥·½´«ËÍ¡±ÔËËãÒ»ÑùÈÝÒ×ʵÏÖ¡£ÖÁÓÚÔÚRSASSA-PKCS1-v1_5Çé¿öϵÄʾÀý¸ñʽ£¬Çë²Î¼ûPKCS #7 [45]¡£
8.1 RSASSA-PSS
RSASSA-PSS½«RSASP1ºÍ RSAVP1ÔÓïÓëEMSA-PSS±àÂë·½·¨½áºÏÆðÀ´¡£ËüÓëÔÚIEEE P1363a ²Ý°¸ÖÐÐÞ¶©¹ýµÄIFSSA·½°¸¼æÈÝIFSSA·½°¸£¬IFSSA·½°¸ÖеÄÇ©ÃûºÍÑéÖ¤ÔÓïÊÇIEEE Std 1363-2000 [26]Öж¨ÒåµÄIFSP-RSA1 ºÍIFVP-RSA1£¬¶øÏûÏ¢±àÂë·½·¨ÊÇEMSA4¡£ÓÉÓÚEMSA4ÊÇ×÷ÓÃÓÚ±ÈÌØ´®¶ø²»ÊÇ°Ëλ×é´®µÄ£¬ËùÒÔËü±ÈEMSA-PSS¸üͨÓᣵ±ÏÞÖÆÓÚÔËËãÌåºÍÉ¢ÁС¢salt¾ùΪ°Ëλ×é´®µÄÇé¿öÏ£¬EMSA-PSSµÈͬÓÚEMSA4¡£
RSASSA-PSSÄܹ»ÔËËãµÄÏûÏ¢µÄ³¤¶È¿ÉÒÔÊDz»ÊÜÏÞÖƵÄÒ²¿ÉÒÔÊÜÒ»¸öÏ൱´óµÄÊýµÄÔ¼Êø£¬ÕâÈ¡¾öÓÚEMSA-PSS±àÂë·½·¨»ùÓÚµÄÉ¢Áк¯Êý¡£
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
¼ÙÉè¼ÆËãe roots modulo nÊÇ¿ÉÐеģ¬EMSA-PSSÖеÄÉ¢Áк¯ÊýºÍÑÚÄ£Éú³Éº¯Êý¾ßÓÐÊʵ±µÄÊôÐÔ£¬RSASSA-PSSÌṩ°²È«Ç©Ãû¡£Èç¹ûÉ¢Áк¯ÊýºÍÑÚÄ£Éú³Éº¯Êý±»¿´×÷ÊǺںÐ×Ó»òÕßÊÇËæ»úÆôʾ³ÌÐò£¬ÔÚαÔìÇ©ÃûµÄÄѶȿÉÒÔÖ±½ÓÓëʹRSAº¯Êý·´ÏòµÄÄѶȹØÁªµÄÒâÒåÉÏ£¬Õâ¸ö±£Ö¤ÊÇ¿É֤ʵµÄ¡£°²È«ÑéÖ¤µÄ±ß½ç±¾ÖÊÉÏÊÇ¡°½ôµÄ¡±£¬Òâ˼ÊǶÔÓÚ×îºÃµÄαÔìÕßÀ´Ëµ£¬³É¹¦µÄ¿ÉÄÜÐÔºÍÔËÐÐʱ¼ä·Ç³£½Ó½üÓÚ×îºÃµÄRSA·´ÏòËã·¨µÄ¶ÔÓ¦²ÎÊý£»½øÒ»²½µÄÌÖÂÛ£¬Çë²Î¼û[4][13][31]¡£
ÓëRSASSA-PKCS1-v1_5Ç©Ãû·½°¸¶Ô±È£¬EMSA-PSS±àÂëÏûÏ¢Öв»Ç¶ÈëÉ¢Áк¯Êý±êʶ£¬ËùÒÔÔÚÀíÂÛÉÏ£¬¶ÔÊÖ¿ÉÄÜÓÃÒ»¸ö²»Í¬µÄÉ¢Áк¯ÊýÀ´Ìæ»»ÓÉÇ©ÃûÕßÑ¡ÔñµÄÉ¢Áк¯Êý¡£Òò´Ë£¬½¨Ò齫EMSA-PSSÑÚÄ£Éú³Éº¯Êý»ùÓÚͬһ¸öÉ¢Áк¯Êý¡£ÒÔÕâÖÖ·½Ê½£¬Õû¸ö±àÂëºóµÄÏûÏ¢½«ÒÀÀµÓÚÉ¢Áк¯Êý£¬¶øÇÒ¶ÔÊÖ½«ÄÑÒÔÓÃÒ»¸ö²»Í¬µÄÉ¢Áк¯ÊýÀ´Ìæ»»ÓÉÇ©ÃûÕßÑ¡ÔñµÄÉ¢Áк¯Êý¡£Æ¥ÅäÉ¢Áк¯ÊýÖ»ÊÇΪÁË·ÀֹɢÁк¯Êý±»Ìæ»»£¬¶øÇÒÈç¹û²ÉÓÃÆäËû·½·¨£¨ÀýÈ磬ÑéÖ¤ÕßÖ»½ÓÊÜÖ¸¶¨µÄÉ¢Áк¯Êý£©·ÀֹɢÁк¯Êý±»Ìæ»»£¬Ôò²»ÐèҪƥÅäÉ¢Áк¯Êý¡£¹ØÓÚÕ⼸µãµÄ½øÒ»²½ÌÖÂÛ£¬Çë²Î¼û[34]¡£RSASSA-PSSµÄ¿É֤ʵµÄ°²È«ÐÔ²»ÒÀÀµÓÚÑÚÄ£Éú³Éº¯ÊýÖеÄÉ¢Áк¯Êý£¨ÓëÓ¦ÓÃÓÚÏûÏ¢µÄÉ¢Áк¯ÊýÒ»Ñù£©¡£
ÓÉÓÚ½áºÏÁËËæ¼´Éú³ÉsaltµÄÖµ£¬Òò´ËRSASSA-PSSÓëÆäËü»ùÓÚRSAµÄÇ©Ãû·½°¸µÄ²»Í¬Ö®´¦ÔÚÓÚËüÊǸÅÂÊÐԵĶø·ÇÈ·¶¨ÐԵġ£Í¨¹ýÌṩһ¸ö±ÈÈ·¶¨ÐԵĿɹ©Ñ¡Ôñ·½°¸£¨ÖîÈçÈ«ÓòÉ¢Áз¨£¨FDH£©£©¸ü¼Ó¡°ÑÏÃܵġ±°²È«ÑéÖ¤£¬SaltÖµÔöÇ¿ÁËÕâ¸ö·½°¸µÄ°²È«ÐÔ£»²Î¼û[4]ÖеÄÌÖÂÛ¡£È»¶ø£¬¶Ô°²È«ÐÔÀ´ËµËæ»ú²¢·Ç¹Ø¼üËùÔÚ¡£ÓÉÓÚ×îºóµÄ¿É֤ʵ°²È«ÐÔÓëFDH[12]µÄÏàËÆ£¬ÔÚËæ»úÉú³É²»¿ÉÄÜʵÏÖµÄÇé¿öÏ£¬Ò»¸ö¹Ì¶¨Öµ»òÕßÒ»´®Êý×Ö¿ÉÒÔÈ¡´úÖ®¡£
th
8.1.1 Ç©ÃûÉú³ÉÔËËã
RSASSA-PSS-SIGN (K, M) ÊäÈ룺 Êä³ö£º
K M S
Ç©ÃûÕßµÄRSA ˽Կ
´ýÇ©ÃûµÄÏûÏ¢£¬ÊÇÒ»¸ö°Ëλ×é´®
Ç©Ãû£¬ÊÇÒ»¸ö³¤¶ÈΪk µÄ°Ëλ×é´®£¬ÕâÀïkÊÇRSAºÏÊýÄ£nµÄÒÔ°Ëλ×éΪ¼ÆÁ¿µ¥Î»µÄ³¤¶È
³ö´íÌáʾ£º ²½Ö裺
1. EMSA-PSS±àÂ룺 ½«EMSA-PSS±àÂëÔËË㣨¼û9.1.1²¿·Ö£©Ó¦ÓÃÓÚÏûÏ¢M£¬´Ó¶ø²úÉúÒ»¸ö³¤¶ÈΪ
?(modBits ¨C 1)/8?¸ö°Ëλ×éµÄ±àÂëÏûÏ¢EM£¬ÒÔÖÁÓÚÕûÊýOS2IP (EM)µÄ±ÈÌس¤¶ÈÖÁÉÙÊÇmodBits ¨C 1£¬ÆäÖÐmodBitsÊÇRSAºÏÊýÄ£µÄ±ÈÌس¤¶È¡£
¡°ÏûϢ̫³¤¡±£¬¡°±àÂë³ö´í¡±
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
EM = EMSA-PSS-ENCODE (M, modBits ¨C 1) ¡£
×¢ÒâÈç¹ûmodBits ¨C 1¿ÉÒÔ±»8Õû³ý£¬ÄÇôEMµÄ°Ëλ×鳤¶È½«±ÈkС1£»·ñÔò¾ÍµÈÓÚk¡£Èç¹û±àÂëÔËËãÊä³ö¡°ÏûϢ̫³¤¡±£¬Ôò¡°ÏûϢ̫³¤¡±È»ºóÖÐÖ¹ÔËËã¡£Èç¹û±àÂëÔËËãÊä³ö¡°±àÂë³ö´í¡±£¬Êä³ö¡°±àÂë³ö´í¡±È»ºóÖÐÖ¹ÔËËã¡£ 2. RSAÇ©Ãû£º
a. ½«±àÂëÏûÏ¢EMת»»³ÉÒ»¸öÕûÊýÏûÏ¢´ú±ím £¨¼û4.2²¿·Ö£©£º
m = OS2IP (EM) ¡£
b. ½«RSASP1 Ç©ÃûÔÓ¼û5.2.1²¿·Ö£©Ó¦ÓÃÓÚRSA ˽ԿK ÒÔ¼°ÏûÏ¢´ú±ím £¬ÒÔ²úÉúÒ»¸ö
ÕûÊýÇ©Ãû´ú±ís£º
s = RSASP1 (K, m) ¡£
c. ½«Ç©Ãû´ú±ísת»»³É³¤¶ÈΪk¸ö°Ëλ×éµÄÇ©ÃûS£¨¼û4.1²¿·Ö£©£º
S = I2OSP (s, k) ¡£
3. Êä³öÇ©Ãû´ú±íS¡£
8.1.2 Ç©ÃûÑéÖ¤ÔËËã
RSASSA-PSS-VERIFY ((n, e), M, S) ÊäÈ룺
(n, e) M S
Ç©ÃûÕßµÄRSA¹«Ô¿
Ç©Ãû´ýÑéÖ¤µÄÏûÏ¢£¬ÊÇÒ»¸ö°Ëλ×é´®
´ýÑéÖ¤µÄÇ©Ãû£¬ÊÇÒ»¸ö³¤¶ÈΪkµÄ°Ëλ×é´®£¬ÆäÖÐkÊÇRSAºÏÊýÄ£nµÄ°Ëλ×鳤¶È
Êä³ö£º ²½Ö裺
1. ³¤¶È¼ì²é£º IÈç¹ûÇ©ÃûSµÄ³¤¶È²»ÊÇk¸ö°Ëλ×飬ÔòÊä³ö¡°ÎÞЧµÄÇ©Ãû¡±È»ºóÖÐÖ¹ÔËËã¡£. 2. RSAÑéÖ¤£º
a. ½«Ç©ÃûSת»»ÎªÒ»¸öÕûÊýÇ©Ãû´ú±ís£¨¼û4.2²¿·Ö£©£º
s = OS2IP (S) ¡£
b. ½«RSAVP1ÑéÖ¤ÔÓï×÷ÓÃÓÚRSA ¹«Ô¿(n, e)ºÍÇ©Ãû´ú±í£¬´Ó¶ø²úÉúÒ»¸öÕûÊýÏûÏ¢´ú±ím £º
m = RSAVP1 ((n, e), s) ¡£
Èç¹ûRSAVP1Êä³ö¡°Ç©Ãû´ú±í³¬³ö·¶Î§¡±£¬ÔòÊä³ö¡°ÓÐЧµÄÇ©Ãû¡±È»ºóÖÐÖ¹ÔËËã¡£ ¡°ÓÐЧµÄÇ©Ãû¡±»òÕß¡°ÎÞЧµÄÇ©Ãû¡±
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
c. ½«ÏûÏ¢´ú±ímת»»³É³¤¶ÈΪemLen = ?(modBits ¨C 1)/8?¸ö°Ëλ×éµÄ±àÂëÏûÏ¢EM£¬ÆäÖÐ
modBitsÊÇRSAºÏÊýÄ£nµÄ±ÈÌس¤¶È£¨¼û4.1²¿·Ö£©£º
EM = I2OSP (m, emLen) ¡£
×¢ÒâÈç¹ûmodBits ¨C 1Äܱ»8Õû³ý£¬ÄÇôemLen½«±ÈkС1£»·ñÔòemLen¾ÍµÈÓÚ¡£Èç¹ûÊä³ö¡°ÕûÊýÌ«´ó¡±£¬ÔòÊä³ö¡°ÎÞЧµÄÇ©Ãû¡±È»ºóÖÐÖ¹ÔËËã¡£
3. EMSA-PSSÑéÖ¤£º ½«EMSA-PSSÑéÖ¤ÔËË㣨¼û9.1.2£©×÷ÓÃÓÚÏûÏ¢MºÍ±àÂëÏûÏ¢EM£¬ÒÔ±æ±ðËüÃÇ
ÊÇ·ñÒ»Ö£º
Result = EMSA-PSS-VERIFY (M, EM, modBits ¨C 1) .
4. Èç¹ûResult =¡°consistent¡±£¬ÔòÊä³ö¡°ÓÐЧǩÃû¡±¡£·ñÔò£¬Êä³ö¡°ÎÞЧµÄÇ©Ãû¡±¡£
8.2 RSASSA-PKCS1-v1_5
RSASSA-PKCS1-v1_5½«RSASP1ÔÓï ¡¢RSAVP1ÔÓïºÍEMSA-PKCS1-v1_5±àÂë·½·¨½áºÏÆðÀ´ÁË¡£ËüÓëÔÚIEEE Std 1363-2000 [26]Öж¨ÒåµÄIFSSA·½°¸¼æÈÝ£¬·½°¸ÖеÄÇ©ÃûºÍÑéÖ¤ÔÓïÊÇIFSP-RSA1ºÍIFVP-RSA1£¬¶øÏûÏ¢±àÂë·½·¨ÊÇEMSA-PKCS1-v1_5£¨ÕâÔÚIEEE Std 1363-2000ÖÐδ¸ø³ö¶¨Ò壬µ«ÔÚIEEE P1363a draft²Ý°¸[27]Öиø³ö¶¨Ò壩¡£
RSASSA-PKCS1-v1_5¿É²Ù×÷µÄÏûÏ¢µÄ³¤¶È¿ÉÒÔÊDz»ÊÜÏÞÖƵÄÒ²¿ÉÒÔÊÇÓÐÒ»¸ö·Ç³£´óµÄÊýÔ¼ÊøµÄ£¬ÕâÈ¡¾öÓÚEMSA-PKCS1-v1_5·½·¨µÄËùÒÀÀµµÄÉ¢Áк¯Êý¡£
¼ÙÉè¼ÆËãe roots modulo nÊDz»¿ÉÐеÄÒÔ¼°ÔÚEMSA-PKCS1-v1_5ÖеÄÉ¢Áк¯ÊýÓÐÊʵ±µÄÊôÐÔ£¬¾Í¿ÉÒÔÍƲâRSASSA-PKCS1-v1_5ÌṩÁË°²È«Ç©Ãû¡£½øÒ»²½Ëµ¾ÍÊÇ£¬ÔÚ²»ÖªµÀRSA˽ԿµÄÇé¿öÏÂαÔìÇ©Ãû±»ÈÏΪÊǼÆËãÉϲ»¿ÉÐеġ£Í¬ÑùµØ£¬ÔÚ±àÂë·½·¨EMSA-PKCS1-v1_5ÖУ¬É¢Áк¯Êý±êʶ±»Ç¶Èëµ½±àÂë¹ý³ÌÖС£ÒòΪÕâ¸öÌØÕ÷£¬¶ÔÊÖΪÁËÕÒµ½Ò»¸öÓëÏÈÇ°ÒÑÇ©ÃûÏûÏ¢¾ßÓÐÏàͬǩÃûµÄÏûÏ¢£¬±ØÐëÕÒµ½ÕýÔÚʹÓõÄÌØÊâÉ¢Áк¯ÊýµÄ³åÍ»Êý¾Ý£»¶Ô¶ÔÊÖÀ´Ëµ¹¥»÷ÓëÇ©ÃûÕßÑ¡ÔñµÄÉ¢Áк¯Êý²»Í¬µÄÉ¢Áк¯ÊýÊÇÎÞÓõġ£½øÒ»²½µÄÌÖÂ۲μû[34]¡£
×¢ÊÍ£ºÕýÈçPKCS #1 v1.5ÖеÄ×¢ÊÍ£¬EMSA-PKCS1-v1_5±àÂë·½·¨¾ßÓб£Ö¤±àÂëÏûÏ¢ÔÚת»»³ÉΪһ¸öÕûÊýÏûÏ¢´ú±íÖ®ºóÊÇ´óÊý¶øÇÒÖÁÉÙÊÇijÖ̶ֳȵġ°Ëæ»úÊý¡±µÄÌØÕ÷¡£ÕâÒ»µã·ÀÖ¹ÁËÓÉDesmedt ºÍOdlyzko [16]Ìá³öµÄ¹¥»÷£¬Ôڸù¥»÷ÖУ¬Í¨¹ý½«ÏûÏ¢´ú±í·Ö½â³ÉÒ»Åú¾ßÓнÏСֵµÄÒò×Ó£¨ÀýÈ磬һÅúСËØÊý£©£¬ÔÚÏûÏ¢´ú±íÖ®¼ä²úÉú±¶ÔöµÄÁªÏµ¡£Coron¡¢Naccache,ºÍStern [15]Ö¸³öÕâÀ๥»÷µÄÒ»ÖÖÔöÇ¿ÐÎʽ¿ÉÄÜÔÚ¹¥»÷ISO/IEC 9796-2Ç©Ãû·½°¸µÄһЩʵÀý·½ÃæÏ൱ÓÐЧ¡£ËûÃÇÒ²·ÖÎöÁËÕâÀ๥»÷ÓÃÓÚEMSA-PKCS1-v1_5±àÂë·½·¨µÄ¸´ÔÓÐÔ£¬²¢Çҵóö½áÂÛ£ºµ±Ò»¸ö¹¥»÷ÐèÒªµÄÔËËã±ÈÔÚ»ù´¡É¢Áк¯ÊýÉϽøÐÐÒ»´Î³åÍ»ËÑË÷»¹Òª¶à£¨Ò²¾ÍÊÇ˵£¬¶àÓÚ280´ÎÔËË㣩£¬ÄÇôÕâ¸ö¹¥»÷¾ÍÊDz»ÏÖʵµÄ¡£Coppersmith¡¢HaleviºÍ Jutla [11]¼ÌÐøÀ©Õ¹ Coron et al.µÄ¹¥
th
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
»÷£¬ÒÔ¹¥ÆÆISO/IEC 9796-1´ø»Ö¸´ÏûÏ¢µÄÇ©Ãû·½°¸¡£¸÷ÖÖ¹¥»÷˵Ã÷ÁËϸÐĹ¹ÔìRSAÇ©ÃûÔÓïµÄÊäÈëµÄÖØÒªÐÔ£¬ÌرðÊÇÔÚ´ø»Ö¸´ÏûÏ¢µÄÇ©Ãû·½°¸ÖС£ÈçÇ°Ëù˵£¬EMSA-PKCS-v1_5±àÂë·½·¨Ã÷È·µØ°üº¬Ò»¸öÉ¢ÁÐÔËË㣬²¢ÇÒ²»ÊÇΪ´ø»Ö¸´ÏûÏ¢µÄÇ©Ãû·½°¸Ëù±àдµÄ¡£´ËÍ⣬¾¡¹ÜûÓÐÒÑÖªµÄ¹¥»÷ÊÇÕë¶ÔEMSA-PKCS-v1_5±àÂë·½·¨µÄ£¬ÈÔ¾ÉÍƼöÖð²½×ª»»µ½EMSA-PSS£¬×÷Ϊ¶ÔδÀ´¿ª·¢µÄÔ¤·À´ëÊ©¡£
8.2.1 Ç©ÃûÉú³ÉÔËËã
RSASSA-PKCS1-V1_5-SIGN (K, M)
ÊäÈ룺
K M S
Ç©ÃûÕßµÄRSA˽Կ
´ýÇ©ÃûµÄÏûÏ¢£¬ÊÇÒ»¸ö°Ëλ×é´®
Ç©Ãû£¬ÊÇÒ»¸ö³¤¶ÈΪkµÄ°Ëλ×é´®£¬ÆäÖÐkÊÇRSAºÏÊýÄ£nµÄ°Ëλ×鳤¶È
Êä³ö£º ³ö´íÌáʾ£º ²½Ö裺
¡°ÏûϢ̫³¤¡±£»¡°RSAºÏÊýģ̫¶Ì¡±
1. EMSA-PKCS1-v1_5±àÂ룺 ¶ÔÏûÏ¢½øÐÐEMSA-PKCS1-v1_5±àÂëÔËË㣨¼û9.2²¿·Ö£©ÒÔ²úÉúÒ»¸ö³¤
¶ÈΪk¸ö°Ëλ×éµÄ±àÂëÏûÏ¢EM £º
EM = EMSA-PKCS1-V1_5-ENCODE (M, k) ¡£
Èç¹û±àÂëÔËËãÊä³ö¡°ÏûϢ̫³¤¡±£¬ÔòÊä³ö¡°ÏûϢ̫³¤¡±È»ºóÖÐÖ¹ÔËËã¡£Èç¹û±àÂëÔËËãÊä³ö¡°ÆÚÍûµÄ±àÂëÏûÏ¢³¤¶ÈÌ«¶Ì¡±£¬ÔòÊä³ö¡°RSAºÏÊýģ̫¶Ì¡±È»ºóÖÐÖ¹ÔËËã¡£ 2. RSA Ç©Ãû£º
a. ½«±àÂëÏûÏ¢EMת»»³ÉÒ»¸öÕûÊýÏûÏ¢´ú±ím £¨²Î¼û4.2²¿·Ö£©£º
m = OS2IP (EM) ¡£
b. ½«RSASP1Ç©ÃûÔÓ¼û5.2.1£©×÷ÓÃÓÚRSA˽ԿKºÍÏûÏ¢´ú±ím£¬´Ó¶ø²úÉúÒ»¸öÕûÊýÇ©
Ãû´ú±ís£º
s = RSASP1 (K, m) ¡£
c. ½«Ç©Ãû´ú±ísת»»³ÉÒ»¸ö³¤¶ÈΪk¸ö°Ëλ×éµÄÇ©ÃûS£¨²Î¼û4.1²¿·Ö£©£º
S = I2OSP (s, k) ¡£
3. Êä³öÇ©ÃûS¡£
8.2.2 Ç©ÃûÑéÖ¤ÔËËã
RSASSA-PKCS1-V1_5-VERIFY ((n, e), M, S)
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
ÊäÈ룺
(n, e) M S
Ç©ÃûÕßµÄRSA¹«Ô¿
Ç©Ãû´ýÑéÖ¤µÄÏûÏ¢£¬ÊÇÒ»¸ö°Ëλ×é´®
´ýÑéÖ¤µÄÇ©Ãû£¬ÊÇÒ»¸ö³¤¶ÈΪkµÄ°Ëλ×é´®£¬ÆäÖÐkÊÇRSAºÏÊýÄ£nµÄ°Ëλ×鳤¶È
Êä³ö£º ³ö´íÌáʾ£º ²½Ö裺
¡°ÓÐЧǩÃû¡±»òÕß¡°ÎÞЧǩÃû¡±
¡°message too long¡±; ¡°RSA modulus too short¡±¡°ÏûϢ̫³¤¡±£»¡°RSAºÏÊýģ̫¶Ì¡±
1. ³¤¶È¼ì²é£º Èç¹ûÇ©ÃûSµÄ³¤¶È²»ÊÇk¸ö°Ëλ×飬ÔòÊä³ö¡°ÎÞЧǩÃû¡±È»ºóÖÐÖ¹ÔËËã¡£ 2. RSAÑéÖ¤£º
a. ½«Ç©ÃûSת»»³ÉÒ»¸öÇ©Ãû´ú±ís£¨²Î¼û4.2²¿·Ö£©£º
s = OS2IP (S) ¡£
b. ½«RSAVP1ÑéÖ¤ÔÓ²Î¼û5.2.2²¿·Ö£©×÷ÓÃÓÚRSA¹«Ô¿(n, e)ºÍÇ©Ãû´ú±ís£¬ÒÔ²úÉúÒ»¸ö
ÕûÊýÏûÏ¢´ú±í£º
m = RSAVP1 ((n, e), s) ¡£
Èç¹ûRSAVP1Êä³ö¡°Ç©Ãû´ú±í³¬³ö·¶Î§¡±£¬ÔòÊä³ö¡°ÎÞЧǩÃû¡±È»ºóÖÐÖ¹ÔËËã¡£ c. ½«Ç©Ãû´ú±ímת»»³ÉÒ»¸ö³¤¶ÈΪk¸ö°Ëλ×éµÄ±àÂëÏûÏ¢EM¡¯£¨²Î¼û0²¿·Ö£©£º
EM¡¯ = I2OSP (m, k) ¡£
Èç¹ûI2OSPÊä³ö¡°ÕûÊýÌ«³¤¡±£¬ÔòÊä³ö¡°ÎÞЧǩÃû¡±È»ºóÖÐÖ¹ÔËËã¡£
3. EMSA-PKCS1-v1_5±àÂë: ¶ÔÏûÏ¢M½øÐÐEMSA-PKCS1-v1_5±àÂëÔËË㣨¼û0²¿·Ö£©£¬´Ó¶ø²úÉúÁí
Ò»¸ö³¤¶ÈΪk¸ö°Ëλ×é±àÂëÏûÏ¢EM¡¯£º
EM¡¯ = EMSA-PKCS1-V1_5-ENCODE (M, k) .
Èç¹û±àÂëÔËËãÊä³ö¡°ÏûϢ̫³¤¡±£¬ÔòÊä³ö¡°ÏûϢ̫³¤¡±²¢ÇÒÖÐÖ¹ÔËËã¡£Èç¹û±àÂëÔËËãÊä³ö¡°ÆÚÍûµÄ±àÂëÏûÏ¢³¤¶ÈÌ«¶Ì¡±£¬ÔòÊä³ö¡°RSAºÏÊýģ̫¶Ì¡±È»ºóÖÐÖ¹ÔËËã¡£
4. ±È½Ï±àÂëÏûÏ¢EMºÍÁíÒ»¸ö±àÂëÏûÏ¢EM¡¯¡£Èç¹ûËûÃÇÏàͬ£¬ÔòÊä³ö¡°ÓÐЧǩÃû¡±£»·ñÔò£¬Êä³ö¡°ÎÞ
ЧǩÃû¡±¡£
×¢ÊÍ¡£ÊµÏÖÇ©ÃûÑéÖ¤ÔËËãµÄÁíÒ»¸ö·½·¨ÊǶԱàÂëÏûÏ¢½øÐÐÒ»´Î¡°½âÂ롱ÔËË㣨ÔÚ±¾ÆªÎĵµÖÐûÓж¨Ò壩£¬ÒÔ»Ö¸´»ù´¡É¢ÁÐÖµ£¬È»ºó½«ËüÓëÒ»¸öмÆËãµÄÉ¢ÁÐÖµ±È½Ï¡£ÕâÑù×öµÄÓŵãÔÚÓëËüÐèÒª¸üÉÙµÄÖмä´æ´¢£¨ÊÇÁ½¸öÉ¢ÁÐÖµ¶ø·ÇÁ½¸ö±àÂëÏûÏ¢£©£¬¶øȱµãÊÇËüÐèÒªÁíÍâµÄ´úÂë¡£
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
9 ´ø¸½ÊôµÄÇ©ÃûµÄ±àÂë·½·¨
±àÂë·½·¨ÓÉÔÚ°Ëλ×é´®ÏûÏ¢ºÍ°Ëλ×é´®±àÂëÏûÏ¢Ö®¼ä½øÐб任µÄÔËËã¹¹³É£¬¶øÔÚ·½°¸ÖаËλ×é´®±àÂëÏûÏ¢ºÍÖ¤ÊéÏûÏ¢´ú±í»¥Ïàת»»¡£ÕûÊýÏûÏ¢´ú±íÊÇͨ¹ýÔÓï½øÐÐת»»µÄ¡£Òò´Ë±àÂë·½·¨ÔÚ´¦ÀíÏûÏ¢µÄ·½°¸ºÍÔÓïÖ®¼äÌṩÁËÁ¬½Ó¡£
¾Í±¾ÆªÎĵµ¶øÑÔ£¬Ò»¸ö´ø¸½ÊôµÄÇ©ÃûµÄ±àÂë·½·¨ÓÉÒ»¸ö±àÂë²Ù×÷ºÍÒ»¸ö¿ÉÑ¡µÄÑéÖ¤²Ù×÷×é³É¡£Ò»¸ö±àÂë²Ù×÷½«Ò»¸öÏûÏ¢M±ä»»ÎªÒ»¸ö¹æ¶¨³¤¶ÈµÄ±àÂëÏûÏ¢EM¡£Ò»¸öÑéÖ¤ÔËËã¾ö¶¨Ò»¸öÏûÏ¢MºÍÒ»¸ö±àÂëÏûÏ¢EMÊÇ·ñÒ»Ö£¬Ò²¾ÍÊÇ˵£¬±àÂëÏûÏ¢EMÊÇ·ñÊÇÏûÏ¢MµÄÓÐЧ±àÂë¡£
±àÂëÔËËã¿ÉÄÜÒýÈëһЩËæ»úÒòËØ£¬ÒÔ±ã¶ÔÓÚͬһ¸öÏûÏ¢µÄ½øÐбàÂëÔËËãµÄ²»Í¬Ó¦ÓóÌÐò½«²úÉú²»Í¬µÄ±àÂëÏûÏ¢£¬ÕâÒ»µãÓÐÀûÓÚ¿É֤ʵµÄ°²È«ÐÔ¡£¶ÔÓÚÕâÑùÒ»¸ö±àÂë·½·¨£¬Í¬Ê±ÐèÒªÒ»¸ö±àÂëÔËËãºÍÒ»¸öÑéÖ¤ÔËË㣬³ý·ÇÑéÖ¤ÕßÄܹ»ÖØвúÉúËæ»úÒòËØ£¨ÀýÈ磬ͨ¹ý´ÓÇ©ÃûÕßÄÇÀï»ñµÃsaltµÄÖµ£©¡£¶ÔÓÚÈ·¶¨µÄ±àÂë·½·¨£¬Ö»ÐèÒªÒ»¸ö±àÂëÔËËã¡£
ÔÚÇ©Ãû·½°¸ÖÐʹÓÃÁËÁ½¸ö´ø¸½ÊôµÄÇ©ÃûµÄ±àÂë·½·¨£¬ÕâÀﶨÒåΪ£ºEMSA-PSSºÍEMSA-PKCS1-v1_5¡£
9.1 EMSA-PSS
ͨ¹ýÑ¡ÔñÉ¢Áк¯Êý¡¢ÑÚÄ£Éú³Éº¯ÊýºÍsaltµÄ³¤¶È£¬¿ÉÒÔÊDZàÂë·½·¨²ÎÊý»¯¡£¶ÔÓÚ¸ø¶¨µÄRSAÃÜÔ¿£¬³ýÁËsaltµÄ³¤¶È¿É±äÖ®Í⣬ÆäËüÑ¡ÏîÓ¦¸ÃÊǹ̶¨µÄ£¨ÌÖÂ۲μû[31]£©¡£ÔÚ¸½Â¼BÖиø³öÁ˽¨ÒéµÄÉ¢Áк¯ÊýºÍÑÚÄ£Éú³Éº¯Êý¡£Õâ¸ö±àÂë·½·¨ÊÇ»ùÓÚBellareºÍRogawayµÄ¸ÅÂÊÇ©Ãû·½°¸£¨PSS£ºProbabilistic Signature Scheme£©[4][5]¡£Õâ¸ö±àÂë·½°¸±»Ëæ»ú»¯ÁË£¬¶øÇÒÓÐÒ»¸ö±àÂëÔËËãºÍÒ»¸öÑéÖ¤ÔËËã¡£ 1 ˵Ã÷ÁËÕâ¸ö±àÂëÔËËã¡£
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
a M Hash M¡¯ = padding1 mHash salt DB = padding2 salt Hash ¡¯ MGF EM = maskedDB H bc 1: EMSA-PSS±àÂëÔËËã¡£ÑéÖ¤ÔËËã×ñÑÏà·´µÄ²½Ö裬´Ó¶ø»Ö¸´³ösalt £¬È»ºóÍƽø²½ÖèÒÔÖØмÆ
ËãºÍ±È½ÏH¡£
×¢ÊÍ£º
1£®ÕâÀﶨÒåµÄ±àÂë·½·¨ÓëBellare ºÍRogaway¸øIEEE P1363a [5]µÄ½¨ÒéÖеıàÂë·½·¨ÔÚÈý¸ö·½Ã治ͬ£º
? Ëü¶ÔÏûϢʹÓÃÉ¢Áк¯Êý¶ø²»ÊÇÑÚÄ£Éú³Éº¯Êý¡£¾¡¹ÜÑÚÄ£Éú³Éº¯ÊýÊÇ»ùÓÚÒ»¸öÉ¢Áк¯ÊýµÄ£¬µ«Ö±½Ó ʹÓÃÒ»¸öÉ¢Áк¯ÊýËƺõ¸ü¼Ó×ÔÈ»¡£
? ÓësaltÖµÒ»µÀ±»É¢Áл¯µÄÖµÊÇ´®(0x)00 00 00 00 00 00 00 00 || mHash ¶ø²»ÊÇÏûÏ¢M ±¾Éí¡£ÕâÀmHash ÊÇM µÄÉ¢ÁС£×¢ÒâÔÚÁ½¸ö²½ÖèÖÐÉ¢Áк¯ÊýÊÇÏàͬµÄ¡£½øÒ»²½µÄÌÖÂÛ¼ûÏÂÃæµÄ×¢ÊÍ3¡££¨Í¬Ñù£¬Ê¹ÓÃÃû³Æ¡°salt¡±¶ø²»ÊÇ¡°seed¡±ÊÇÓÉÓÚ¡°salt¡±¸üÄÜÌåÏÖ¸ÃÖµµÄ½ÇÉ«¡££©
? EMSA-PSSÖеıàÂëÏûÏ¢ÓоŸö¹Ì¶¨µÄ±ÈÌØ£»µÚÒ»¸ö±ÈÌØÊÇ0£¬×îºó°Ë¸ö±ÈÌØÐγÉÒ»¸ö¡°Î²²¿Óò¡±£¬¼´°Ëλ×é0xbc¡£
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
ÔÚ×î³õµÄ·½°¸ÖУ¬Ö»ÓеÚÒ»¸ö±ÈÌØÊǹ̶¨µÄ¡£Î²²¿ÓòµÄ»ù±¾ÔÀíÊÇΪÁËÓëIEEE Std 1363-2000 [26]ÖеÄRabin-Williams IFSP-RWÇ©ÃûÔÓïÒÔ¼°Ôڲݰ¸ISO/IEC 9796-2 [29]ÖеĶÔÓ¦ÔÓï¼æÈÝ¡£
2£®¼ÙÉèÑÚÄ£Éú³Éº¯ÊýÊÇ»ùÓÚÒ»¸öÉ¢Áк¯ÊýµÄ£¬½¨ÒéÕâ¸öÉ¢Áк¯ÊýÓëÓ¦ÓÃÓÚÏûÏ¢µÄÉ¢Áк¯ÊýÒ»Ñù£»½øÒ»²½µÄÌÖÂ۲μû8.1²¿·Ö¡£
3£®ÔÚûÓÐΣ¼°RSASSA-PSSµÄ°²È«¼á¹ÌÐÔµÄÇé¿öÏ£¬¿ÉÒÔÔÚ¼ÆËãÇ©ÃûÔËËãµÄÆäÓಿ·ÖµÄÄ£¿éÖ®ÍâÖ´ÐÐEMSA-PSS-ENCODEµÄµÚ1ºÍµÚ2²½ÒÔ¼°EMSA-PSS-VERIFY£¨É¢Áк¯Êý¶ÔÏûÏ¢µÄÓ¦Óã©£¬ÒÔ±ã¸ÃÄ£¿éµÄÊäÈëÊÇmHash¶ø²»ÊÇÏûÏ¢M±¾Éí¡£»»¾ä»°Ëµ£¬¼´Ê¹¶ÔÊÖÄܹ»¿ØÖÆmHashµÄÖµ£¬ÈÔÄܱ£³ÖRSASSA-PSSµÄ°²È«¼á¹ÌÐÔ¡£Èç¹ûÕâ¸öÄ£¿éÏÞÖÆÁËI/O´ø¿í£¨ÀýÈ磬һ¿éÖÇÄÜ¿¨£©£¬ÄÇôÕâÊÇ·½±ãµÄ¡£×¢Òâµ½PSS[4][5]µÄÏÈÇ°°æ±¾Ã»ÓÐÕâÐÔÖÊ¡£µ±È»£¬ÈÃÆäËü°²È«ÀíÓÉʹÕâ¸öÄ£¿é´¦ÀíÕû¸öÏûÏ¢ÊǼþÎüÒýÈ˵ÄÊ¡£¾ÙÀýÀ´Ëµ£¬Èç¹ûÕâ¸öÄ£¿é²»ÐÅÈθºÔð¼ÆËãÉ¢ÁÐÖµµÄ×é¼þ£¬Ëü¿ÉÄÜÐèÒª¡°¿´µ½¡±ËüÕýÔÚÇ©ÃûµÄÊÇʲô¡£
4£®saltµÄµäÐ͵İËλ×鳤¶ÈÊÇhLen£¨É¢Áк¯ÊýHashµÄÊä³öµÄ³¤¶È£©ºÍ0¡£ÔÚÁ½ÖÖÇé¿öÏ£¬RSASSA-PSSµÄ°²È«ÐÔÓëʹRSAVP1·´ÏòÔËËãµÄÄѶÈÃÜÇÐÏà¹Ø¡£Bellare ºÍRogaway[4]Ϊ×î³õµÄRSA-PSS·½°¸Ö¸¶¨ÁËÒ»¸ö¼«¶ÈµÍ¼¶µÄ½çÏÞ£¬Õâ´ÖÂÔµØÓëÇ°Ò»ÖÖÇé¿ö¶ÔÓ¦£»¶øCoron [12]ΪÏà¹ØµÄÈ«ÓòÉ¢Áз¨·½°¸Öƶ¨ÁËÒ»¸ö½ÏµÍ¼¶µÄ½çÏÞ£¬Õâ´ÖÂÔµØÓëºóÒ»ÖÖÇé¿ö¶ÔÓ¦¡£ÔÚ[13]ÖÐCoronÌṩÁËÒ»¸öͨÓõĴ¦Àí¸÷ÖÖsalt³¤¶È£¨´Ó0µ½hLen£©µÄ·½·¨£»ÏêϸÌÖÂ۲μû[27]¡£Í¬Ñù²Î¼û[31]£¬Ëü¸Ä±àÁË[4][13]Öеݲȫ¼á¹ÌÐÔ£¬ÒÔÌá³öRSA-PSS×î³õµÄºÍÄ¿Ç°µÄ°æ±¾µÄ²»Í¬Ö®´¦£¨¾ÍÊÇÉÏÃæ×¢ÊÍ1ÖÐËùÁеģ©¡£
5£®¾ÍÏñÔÚIEEE P1363a [27]ÖÐ×¢Ê͵ģ¬ÔÚÇ©Ãû·½°¸ÖÐʹÓÃËæ»ú»¯¡ª¡ªÖîÈçEMSA-PSSÖеÄsaltÖµ¡ª¡ª¿ÉÒÔΪ´«ËÍÐÅÏ¢¶ø²»ÊDZ»Ç©ÃûµÄÏûÏ¢Ìṩһ¸ö¡°±ä»»Í¨µÀ£¨covert channel£©¡±¡£ÈçÐèÖªµÀ¸ü¶à¹ØÓڱ任ͨµÀµÄÐÅÏ¢£¬²Î¼û[50]¡£
9.1.1 ±àÂëÔËËã
EMSA-PSS-ENCODE (M, emBits)
Ñ¡Ï
Hash MGF sLen M
É¢Áк¯Êý£¨hLen±íʾɢÁк¯ÊýµÄÊä³öµÄ°Ëλ×鳤¶È£© ÑÚÄ£Éú³Éº¯Êý
ÆÚÍûµÄsaltµÄ°Ëλ×鳤¶È ´ý±àÂëµÄÏûÏ¢£¬ÊÇÒ»¸ö°Ëλ×é´®
ÊäÈ룺
emBits ÕûÊýOS2IP(EM)µÄ×î´ó±ÈÌس¤¶È£¨¼û4.2²¿·Ö£©£¬ÖÁÉÙΪ8hLen + 8sLen + 9 EM
±àÂëºóµÄÏûÏ¢£¬ÊÇÒ»¸ö³¤¶ÈΪemLen = ?emBits/8?µÄ°Ëλ×é´®
Êä³ö£º ³ö´íÌáʾ£º ²½Ö裺
¡°±àÂë³ö´í¡±£»¡°ÏûϢ̫³¤¡±
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
1. Èç¹ûMµÄ³¤¶È³¬³öÉ¢Áк¯ÊýµÄÊäÈëÏÞÖÆ£¨SHA-1µÄÏÞÖÆÊÇ2 ¨C 1£©£¬ÔòÊä³ö¡°ÏûϢ̫³¤¡±²¢ÇÒÖÐ
Ö¹ÔËËã¡£
2. ʹmHash = Hash (M)£¬ÕâÊÇÒ»¸ö³¤¶ÈΪhLen µÄ°Ëλ×é´®¡£ 3. Èç¹ûemLen < hLen + sLen + 2£¬Êä³ö¡°±àÂë³ö´í¡±È»ºóÖÐÖ¹ÔËËã¡£
4. Éú³ÉÒ»¸öËæ»úµÄ³¤¶ÈΪsLenµÄ°Ëλ×é´®salt£»Èç¹ûsLen = 0£¬ÄÇôsalt ÊÇÒ»¸ö¿Õ´®¡£ 5. ʹ
M¡¯ = (0x)00 00 00 00 00 00 00 00 || mHash || salt£»
M¡¯ÊÇÒ»¸ö³¤¶ÈΪlength 8 + hLen + sLenµÄ°Ëλ×é´®£¬ÇÒ¿ªÊ¼µÄ°Ë¸ö°Ëλ×é¾ùΪ0¡£ 6. ʹH = Hash (M¡¯)£¬ÕâÊÇÒ»¸ö³¤¶ÈΪhLen µÄ°Ëλ×é´®¡£
7. Éú³ÉÒ»¸öÓÉemLen ¨C sLen ¨C hLen ¨C 2¸öֵΪÁãµÄ°Ëλ×é¹¹³ÉµÄ°Ëλ×é´®PS¡£PSµÄ³¤¶È¿ÉÒÔΪ0¡£ 8. ʹDB = PS || 0x01 || salt£» DB ÊÇÒ»¸ö³¤¶ÈΪemLen ¨C hLen ¨C 1µÄ°Ëλ×é´®¡£ 9. ʹdbMask = MGF (H, emLen ¨C hLen ¨C 1)¡£ 10. ʹmaskedDB = DB ? dbMask¡£
11. °ÑmaskedDB µÄ×î×ó±ßµÄÒ»¸ö°Ëλ×éÖеÄ×î×ó±ßµÄ8emLen ¨C emBits λÖÃ0¡£ 12. ʹEM = maskedDB || H || 0xbc¡£ 13. Êä³öEM¡£
61
9.1.2 ÑéÖ¤²Ù×÷
EMSA-PSS-VERIFY (M, EM, emBits)
Ñ¡Ï
Hash MGF sLen M EM
É¢Áк¯Êý£¨hLenÉ¢Áк¯ÊýµÄÊä³öµÄ°Ëλ×鳤¶È£© ÑÚÄ£Éú³Éº¯Êý
ÆÚÍûµÄsaltµÄ°Ëλ×鳤¶È ´ýÑéÖ¤µÄÏûÏ¢£¬ÊÇÒ»¸ö°Ëλ×é´®
±àÂëÏûÏ¢£¬ÊÇÒ»¸ö³¤¶ÈΪemLen = ?emBits/8?µÄ°Ëλ×é´®
ÊäÈ룺
emBits ÕûÊýOS2IP (EM)£¨²Î¼û0²¿·Ö£©µÄ×î´ó±ÈÌس¤¶È£¬ÖÁÉÙÊÇ8hLen + 8sLen + 9 ¡°Ò»Ö¡±»òÕß¡°²»Ò»Ö¡±
Êä³ö£º ²½Ö裺
1. Èç¹ûMµÄ³¤¶È´óÓÚÉ¢Áк¯ÊýµÄÊäÈëÏÞÖÆ£¨SHA-1µÄÊäÈëÏÞÖÆÊÇ261 ¨C 1£©£¬ÔòÊä³ö¡°²»Ò»Ö¡±È»ºó
ÖÐÖ¹ÔËËã¡£
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
2. ʹmHash = Hash (M)£¬ÊÇÒ»¸ö³¤¶ÈΪhLen µÄ°Ëλ×é´®¡£ 3. Èç¹ûemLen < hLen + sLen + 2£¬ÔòÊä³ö¡°²»Ò»Ö¡±È»ºóÖÐÖ¹ÔËËã¡£
4. Èç¹ûEM×îÓұߵİËλ×éµÄÊ®Áù½øÖÆÖµ²»ÊÇ0xbc £¬ÔòÊä³ö¡°²»Ò»Ö¡±È»ºóÖÐÖ¹¡£
5. ʹmaskedDB ³ÉΪEM×î×ó±ßµÄemLen ¨C hLen ¨C 1¸ö°Ëλ×飬¶øÇÒʹH³ÉΪ½ÓÏÂÀ´µÄhLen ¸ö°Ëλ
×é¡£
6. Èç¹ûmaskedDB×î×ó±ßµÄ°Ëλ×éµÄ×î×ó±ßµÄ8emLen ¨C emBits±ÈÌز»È«ÎªÁ㣬ÔòÊä³ö¡°²»Ò»Ö¡±È»
ºóÖÐÖ¹ÔËËã¡£
7. ʹdbMask = MGF (H, emLen ¨C hLen ¨C 1)¡£ 8. ʹDB = maskedDB ? dbMask¡£
9. ½«DB×î×ó±ßµÄ°Ëλ×éÖеÄ×ó±ßÊýÆð8emLen ¨C emBits¸ö±ÈÌØÖÃÁã¡£
10. Èç¹ûDB×ó±ßÊýÆðµÄemLen ¨C hLen ¨C sLen ¨C 2¸ö°Ëλ×鲻ΪÁã»òÕßÈç¹ûµÚemLen ¨C hLen ¨C sLen ¨C 1
¸ö£¨×î×ó±ßµÄ°Ëλ×éÊǵÚÒ»¸ö°Ëλ×飩°Ëλ×éµÄÊ®Áù½øÖÆÖµ²»Îª0x01£¬ÔòÊä³ö¡°²»Ò»Ö¡±È»ºóÖÐÖ¹ÔËËã¡£
11. ʹsalt ³ÉΪDB µÄºósLen¸ö°Ëλ×é¡£ 12. ʹ
M¡¯ = (0x)00 00 00 00 00 00 00 00 || mHash || salt £»
M¡¯ÊÇÒ»¸ö³¤¶ÈΪ8 + hLen + sLenµÄ°Ëλ×é´®£¬ÇÒ¿ªÍ·°Ë¸ö°Ëλ×éµÄֵΪÁã¡£ 13. ʹH¡¯ = Hash (M¡¯)£¬ÕâÊÇÒ»¸ö³¤¶ÈΪhLen µÄ°Ëλ×é´®¡£ 14. Èç¹ûH = H¡¯£¬ÔòÊä³ö¡°Ò»Ö¡±£»·ñÔò£¬Êä³ö¡°²»Ò»Ö¡±¡£
9.2 EMSA-PKCS1-v1_5
Õâ¸ö±àÂë·½·¨ÊÇÈ·¶¨ÐԵģ¬Ö»ÓÐÒ»¸ö±àÂëÔËËã¡£ EMSA-PKCS1-v1_5-ENCODE (M, emLen)
Ñ¡Ï ÊäÈ룺
Hash M
É¢Áк¯Êý£¨hLen±íʾɢÁк¯ÊýÊä³öµÄ°Ëλ×鳤¶È£© ´ý±àÂëµÄÏûÏ¢
emLen ÆÚÍûµÄ±àÂëºóÏûÏ¢µÄ°Ëλ×鳤¶È£¬ÖÁÉÙΪtLen + 11£¬ÆäÖÐtLen ÊÇÔÚ±àÂëÔËËã¹ý³Ì
ÖмÆËãµÄij¸öÖµµÃDER±àÂëT µÄ°Ëλ×鳤¶È¡£
Êä³ö£º ³ö´íÌáʾ£º
EM ±àÂëºóµÄÏûÏ¢£¬ÊÇÒ»¸ö³¤¶ÈΪemLen µÄ°Ëλ×é´®¡£
¡°ÏûϢ̫³¤¡±£»¡°ÆÚÍûµÄ±àÂëÏûÏ¢³¤¶ÈÌ«¶Ì¡±
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
²½Ö裺
1. ½«ÏûÏ¢M´úÈëÉ¢Áк¯Êý£¬´Ó¶ø²úÉúÉ¢ÁÐÖµH £º
H = Hash (M) ¡£
Èç¹ûÉ¢Áк¯ÊýÊä³ö¡°ÏûϢ̫³¤¡±ÔòÊä³ö¡°ÏûϢ̫³¤¡±È»ºóÖÐÖ¹ÔËËã¡£
2. ÓÿÉʶ±ðµÄ±àÂë¹æÔò£¨DER£©½«É¢Áк¯ÊýµÄËã·¨±êʶºÍÉ¢ÁÐÖµ±àÂë³ÉÒ»¸öÀàÐÍΪDigestInfo µÄ
ASN.1Öµ£¨¼û¸½Â¼A.2.4£©£¬ÆäÖÐÀàÐÍDigestInfo ¾ßÓÐÓï·¨ DigestInfo ::= SEQUENCE {
digestAlgorithm AlgorithmIdentifier, digest OCTET STRING }
µÚÒ»¸öÓò±êʶɢÁк¯Êý£¬µÚ¶þ¸öÓò°üº¬É¢Áк¯Êý¡£Ê¹TµÈÓÚ DigestInfoÖµµÄDER±àÂ루²Î¼ûÏÂÃæµÄ×¢ÊÍ£©£¬ÇÒÈÃtLenµÈÓÚTµÄ°Ëλ×鳤¶È¡£
3. Èç¹ûemLen < tLen + 11£¬ÔòÊä³ö¡°ÆÚÍûµÄ±àÂëÏûÏ¢³¤¶ÈÌ«¶Ì¡±È»ºóÖÐÖ¹ÔËËã¡£
4. Éú³ÉÒ»¸öÓÉemLen ¨C tLen ¨C 3 ¸öÊ®Áù½øÖÆֵΪ0xff µÄ°Ëλ×é¹¹³ÉµÄ´®PS ¡£PSµÄ³¤¶È½«ÖÁÉÙΪ°Ë
¸ö°Ëλ×é¡£
5. Á¬½ÓPS¡¢ DER ±àÂëT ºÍÆäËüÌî³äÒÔÐγɱàÂëÏûÏ¢EM
EM = 0x00 || 0x01 || PS || 0x00 || T ¡£
6. Êä³öEM¡£
×¢ÊÍ£º.
1. ¶ÔÓÚ¸½Â¼0ÖÐÌáµ½µÄÁù¸öÉ¢Áк¯Êý£¬DigestInfo ÖµµÄDER±àÂëT µÄÖµÈçÏÂËùʾ£º
MD2: MD5: SHA-1:
(0x)30 20 30 0c 06 08 2a 86 48 86 f7 0d 02 02 05 00 04 10 || H¡£ (0x)30 20 30 0c 06 08 2a 86 48 86 f7 0d 02 05 05 00 04 10 || H¡£ (0x)30 21 30 09 06 05 2b 0e 03 02 1a 05 00 04 14 || H¡£
SHA-256: (0x)30 31 30 0d 06 09 60 86 48 01 65 03 04 02 01 05 00 04 20 || H¡£ SHA-384: (0x)30 41 30 0d 06 09 60 86 48 01 65 03 04 02 02 05 00 04 30 || H¡£ SHA-512: (0x)30 51 30 0d 06 09 60 86 48 01 65 03 04 02 03 05 00 04 40 || H¡£
2. ÔÚ±¾Æ¬ÎĵµµÄ°æ±¾1.5ÖУ¬T±»¶¨ÒåΪÊÇDigestInfo ÖµµÄBER±àÂ룬¶ø²»ÊÇDigestInfo ÖµµÄDER±àÂë¡£ÌرðµÄ£¬ÖÁ
ÉÙÔÚÀíÂÛÉÏ£¬±¾ÆªÎĵµÖж¨ÒåµÄÑéÖ¤ÔËËã²»¿ÉÄܾܾøÒ»¸öÓÐЧǩÃû£¨¿¼Âǵ½ÔÚPKCS #1 v1.5Öиø¶¨µÄ¹æ·¶£©¡£Èç
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
¹û½«³ýÁËDERÖ®ÍâµÄÆäËü¹æÔòÓ¦ÓÃÓÚDigestInfo £¨ÀýÈ磬»ù´¡SEQUENCEÀàÐ͵ÄÎÞÏÞ¶¨³¤¶È±àÂë·¨£©£¬½«³öÏ־ܾøÓÐЧǩÃûµÄÇé¿ö¡£¾¡¹ÜÔÚʵ¼Êµ±Öв»»á·¢Éú´ËÀàÊÂÇ飬ÔÚÓ¦ÓûùÓÚBER½âÂëÔËË㣨ÔÚÖÐÓж¨Ò壩µÄÑéÖ¤ÔËËãʱ£¬¿ÉÒÔÑ¡Ôñ½÷É÷µÄÉ豸£¨cautious implementer£©¡£ÒÔÕâÖÖ·½Ê½£¬¿ÉÒÔ»ñµÃ¶ÔÈκλùÓÚPKCS #1 v1.5µÄÓÐЧʵÏֵļæÈÝ¡£ÕâÑùÒ»¸öÑéÖ¤²Ù×÷Ó¦¸ÃÖ¸³ö»ù´¡BER±àÂë·¨ÊÇ·ñÊÇDER±àÂë·¨£¬ÓÉ´ËÖ¸³ö¿¼Âǵ½±¾ÆªÎĵµÖиø³öµÄ¹æ·¶£¬Ç©ÃûÊÇ·ñÊÇÓÐЧµÄ¡£
A ASN.1 Óï·¨
A.1 RSA ÃÜÔ¿±íʾ
ÕâÒ»½Ú¶¨ÒåRSA¹«Ô¿ºÍRSA˽ԿµÄASN.Q¶ÔÏó±êʶ·û£¬²¢ÇÒ¶¨ÒåÀàÐÍRSAPublicKey ºÍ
RSAPrivateKey ¡£ÕâЩ¶¨ÒåµÄÆÚÍûÓ¦ÓóÌÐò°üÀ¨X.509ÈÏÖ¤¡¢PKCS #8 [46] ºÍPKCS #12 [47]¡£
¶ÔÏó±êʶ·ûrsaEncryption ½«RSA¹«Ô¿ºÍ˽Կ¶¨ÒåΪ¸½Â¼ 0ºÍ0ÖÐËùʾ¡£ÓëÀàÐÍΪAlgorithmIdentifierµÄÖµÖеÄOIDÏàÁªÏµµÄparametersÓòÓ¦¸Ã¾ßÓÐÀàÐÍΪNULLµÄÖµ¡£
rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 }
ÔÚ±¾½ÚÖеĶ¨ÒåÒѱ»À©Õ¹£¬ÒÔÖ§³Ö¶àËØÊýRSA£¬µ«ÊǾßÓÐÓëÏÈÇ°°æ±¾Ïòºó¼æÈݵÄÌص㡣
A.1.1 RSA¹«Ô¿Óï·¨
Ó¦¸ÃÓÃASN.1ÀàÐÍRSAPublicKeyÀ´±íʾһ¸öRSA¹«Ô¿£º
RSAPublicKey ::= SEQUENCE { modulus INTEGER, -- n publicExponent INTEGER -- e }
ÀàÐÍRSAPublicKeyµÄÓò¾ßÓÐÒÔÏÂÒâÒ壺
? ?
modulus ÊÇRSAµÄºÏÊýÄ£n¡£ publicExponent ÊÇRSA¹«¿ªÃÝe¡£
A.1.2 RSA˽ԿÓï·¨
Ó¦¸ÃÓÃASN.1ÀàÐÍRSAPrivateKeyÀ´±íʾһ¸öRSA˽Կ£º
RSAPrivateKey ::= SEQUENCE { version Version, modulus INTEGER, -- n
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
publicExponent INTEGER, -- e privateExponent INTEGER, -- d prime1 INTEGER, -- p prime2 INTEGER, -- q
exponent1 INTEGER, -- d mod (p-1) exponent2 INTEGER, -- d mod (q-1)
coefficient INTEGER, -- (inverse of q) mod p otherPrimeInfos OtherPrimeInfos OPTIONAL }
ÀàÐÍRSAPrivateKey µÄ¸÷Óò¾ßÓÐÒÔÏÂÒâÒ壺 ?
version ÊÇ°æ±¾ºÅ£¬ÎªÁËÓë±¾ÎĵµµÄ½ñºó°æ±¾¼æÈÝ¡£±¾ÆªÎĵµµÄÕâ¸ö°æ±¾ºÅÓ¦¸ÃÊÇ0£¬Èç¹ûʹÓÃÁ˶àËØ
Êý£¬Ôò°æ±¾ºÅÓ¦¸ÃÊÇ1¡£
Version ::= INTEGER { two-prime(0), multi(1) }
(CONSTRAINED BY {-- version must be multi if otherPrimeInfos present --})
? ? ? ? ? ? ? ? ?
modulus ÊÇRSAºÏÊýÄ£n¡£ publicExponent ÊÇRSAµÄ¹«¿ªÃÝe¡£ privateExponent ÊÇRSAµÄ˽ÓÐÃÝd¡£ prime1 ÊÇnµÄËØÊýÒò×Óp¡£ prime2 iÊÇnµÄËØÊýÒò×Óq¡£ exponent1 µÈÓÚd mod (p ? 1)¡£ exponent2 µÈÓÚd mod (q ? 1)¡£ coefficient ÊÇCRTϵÊý q¨C1 mod p¡£
otherPrimeInfos °´Ë³Ðò°üº¬ÁËÆäËüËØÊýr3, ¡, ruµÄÐÅÏ¢¡£Èç¹ûversionÊÇ0 £¬ËüÓ¦¸Ã±»ºöÂÔ£»¶øÈç¹ûversionÊÇ1£¬ËüÓ¦¸ÃÖÁÉÙ°üº¬OtherPrimeInfoµÄÒ»¸öʵÀý¡£
OtherPrimeInfos ::= SEQUENCE SIZE(1..MAX) OF OtherPrimeInfo
OtherPrimeInfo ::= SEQUENCE { prime INTEGER, -- ri exponent INTEGER, -- di coefficient INTEGER -- ti }
OtherPrimeInfoµÄ¸÷Óò¾ßÓÐÒÔÏÂÒâÒ壺
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
? ? ?
prime ÊÇnµÄÒ»¸öËØÊýÒò×Óri £¬ÆäÖÐi ? 3¡£ exponent ÊÇdi = d mod (ri ? 1)¡£
coefficient ÊÇCRTϵÊý ti = (r1 ¡¤ ri¨C1) r2 ¡¤ ¡ ¡¤
¨C1
mod ri¡£
×¢ÊÍ£ºÖØÒªµÄÊÇÒª·ÀÖ¹RSA˽Կ±»Ð¹Â©»òÊÇÐ޸ġ£ÕâÀà·ÀÓù¼¼Êõ³¬³öÁ˱¾ÆªÎĵµµÄ·¶Î§¡£PKCS #12 ºÍ#15ÖÐÃèÊöÁË´æ´¢ºÍ·Ö·¢Ë½Ô¿µÄ·½·¨ÒÔ¼°ÆäËüÃÜÂëÊý¾Ý¡£
A.2 ·½°¸±êʶ
±¾½Ú¶¨Òå¼ÓÃܺÍÇ©Ãû·½°¸µÄ¶ÔÏó±êʶ¡£ÓëPKCS #1 v1.5¼æÈݵķ½°¸ÓëPKCS #1 v1.5Öеķ½°¸¾ßÓÐÏàͬµÄ±êʶ¡£ÕâЩ¶¨ÒåÆÚÍûµÄÓ¦ÓóÌÐò°üÀ¨X.509ÈÏÖ¤ºÍPKCS #7¡£
ÕâÀïÊǶÔPKCS #1 OIDµÄÀàÐͱíʾµÄ¶¨Ò壺
PKCS1Algorithms ALGORITHM-IDENTIFIER ::= {
{ OID rsaEncryption PARAMETERS NULL } | { OID md2WithRSAEncryption PARAMETERS NULL } | { OID md5WithRSAEncryption PARAMETERS NULL } | { OID sha1WithRSAEncryption PARAMETERS NULL } | { OID sha256WithRSAEncryption PARAMETERS NULL } | { OID sha384WithRSAEncryption PARAMETERS NULL } | { OID sha512WithRSAEncryption PARAMETERS NULL } | { OID id-RSAES-OAEP PARAMETERS RSAES-OAEP-params } | PKCS1PSourceAlgorithms ... -- Allows for future expansion -- }
|
{ OID id-RSASSA-PSS PARAMETERS RSASSA-PSS-params } ,
A.2.1 RSAES-OAEP
¶ÔÏó±êʶid-RSAES-OAEP ±êʶÁËRSAES-OAEP¼ÓÃÜ·½°¸¡£
id-RSAES-OAEP OBJECT IDENTIFIER ::= { pkcs-1 7 }
ÔÚÀàÐÍΪAlgorithmIdentifierµÄÖµÖУ¬ÓëÕâ¸öOIDÏà¹ØµÄparametersÓòÓ¦¸Ã¾ßÓÐÀàÐÍΪRSAES-OAEP-paramsµÄÖµ£º
RSAES-OAEP-params ::= SEQUENCE {
hashAlgorithm [0] HashAlgorithm DEFAULT sha1, maskGenAlgorithm [1] MaskGenAlgorithm DEFAULT mgf1SHA1, pSourceAlgorithm [2] PSourceAlgorithm DEFAULT pSpecifiedEmpty }
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
ÀàÐÍRSAES-OAEP-paramsµÄÓò¾ßÓÐÒÔÏÂÒâÒ壺 ?
hashAlgorithm ±êʶÁËÉ¢Áк¯Êý¡£ÔÚOAEP-PSSDigestAlgorithms¼¯ÖУ¬ËüÓ¦¸ÃÊÇÒ»¸ö¾ßÓÐOIDµÄËã·¨
ID¡£¹ØÓÚËùÖ§³ÖµÄÉ¢Áк¯ÊýµÄÌÖÂÛ£¬Çë²Î¼û¸½Â¼B.1¡£
HashAlgorithm ::= AlgorithmIdentifier { {OAEP-PSSDigestAlgorithms} }
OAEP-PSSDigestAlgorithms ALGORITHM-IDENTIFIER ::= { { OID id-sha1 PARAMETERS NULL }| { OID id-sha256 PARAMETERS NULL }| { OID id-sha384 PARAMETERS NULL }| { OID id-sha512 PARAMETERS NULL }, ... -- Allows for future expansion -- }
ĬÈϵÄÉ¢Áк¯ÊýÊÇSHA-1£º
sha1 HashAlgorithm ::= { algorithm id-sha1,
parameters SHA1Parameters : NULL }
SHA1Parameters ::= NULL
? maskGenAlgorithm ±êʶÑÚÄ£Éú³Éº¯Êý¡£ËüÓ¦¸ÃÊÇÒ»¸öËã·¨ID£¨¾ßÓÐÒ»¸öÊôÓÚPKCS1MGFAlgorithms¼¯
£¨¶ÔÓÚÕâ¸ö°æ±¾À´Ëµ£¬ËüÓ¦¸ÃÓÉid-mgf1¹¹³É£©µÄOID£©£¬ÒÔ±êʶÑÚÄ£Éú³Éº¯ÊýMGF1£¨²Î¼û¸½Â¼B.2.1£©¡£Óëid-mgf1ÁªÏµµÄparametersÓòÓ¦¸ÃÊÇÒ»¸öËã·¨ID£¨¾ßÓÐÒ»¸öÊôÓÚOAEP-PSSDigestAlgorithms¼¯µÄOID£©£¬±êʶMGF1»ùÓÚµÄÉ¢Áк¯Êý¡£
MaskGenAlgorithm ::= AlgorithmIdentifier { {PKCS1MGFAlgorithms} }
PKCS1MGFAlgorithms ALGORITHM-IDENTIFIER ::= { { OID id-mgf1 PARAMETERS HashAlgorithm }, ... -- Allows for future expansion -- }
ĬÈϵÄÑÚÄ£º¯ÊýÊÇ»ùÓÚSHA-1µÄMGF1£º
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
mgf1SHA1 MaskGenAlgorithm ::= { algorithm id-mgf1,
parameters HashAlgorithm : sha1 }
?
pSourceAlgorithm ±êʶ±êÇ©L µÄÔ´£¨Ò²¿ÉÄÜÊÇÖµ£©¡£ËüÓ¦¸ÃÊÇÒ»¸öËã·¨±êʶ£¨¾ßÓÐÒ»¸öÊôÓÚPKCS1PSourceAlgorithms¼¯£¨¶ÔÕâ¸ö°æ±¾À´Ëµ£¬Ó¦¸ÃÓÉid-pSpecified¹¹³É£©µÄ¶ÔÏó±êʶ£©£¬ Ö¸³öÕâ¸ö
±êÇ©±»Ã÷È·ÃèÊö¡£Óëid-pSpecifiedÁªÏµµÄparametersÓòÓ¦¸ÃÊÇÒ»¸öÀàÐÍΪOCTET STRINGµÄÖµ£¬°üº¬Õâ¸ö±êÇ©¡£Õâƪ¹æ·¶µÄÏÈÇ°°æ±¾ÖУ¬Ê¹ÓõÄÊÇÊõÓï¡°±àÂë²ÎÊý¡±¶ø²»ÊÇ¡°±êÇ©¡±£¬´Ó´Ë¾Í³öÏÖÁËÏÂÃæÕâ¸öÀàÐ͵ÄÃû³Æ¡£
PSourceAlgorithm ::= AlgorithmIdentifier { {PKCS1PSourceAlgorithms} }
PKCS1PSourceAlgorithms ALGORITHM-IDENTIFIER ::= { { OID id-pSpecified PARAMETERS EncodingParameters }, ... -- Allows for future expansion -- }
id-pSpecified OBJECT IDENTIFIER ::= { pkcs-1 9 }
EncodingParameters ::= OCTET STRING(SIZE(0..MAX))
ĬÈϱêÇ©ÊÇÒ»¸ö¿Õ´®£¨ÒÔÖÁÓÚlHash»á°üº¬¿Õ´®µÄÉ¢ÁУ©£º
pSpecifiedEmpty PSourceAlgorithm ::= { algorithm id-pSpecified,
parameters EncodingParameters : emptyString }
emptyString EncodingParameters ::= ''H
Èç¹ûRSAES-OAEP-paramsÖеÄÓò¶¼Ê¹ÓÃÁËĬÈÏÖµ£¬ÄÇôËã·¨±êʶ½«¾ßÓÐÒÔϵÄÖµ£º
rSAES-OAEP-Default-Identifier RSAES-AlgorithmIdentifier ::= { algorithm id-RSAES-OAEP, parameters RSAES-OAEP-params : { hashAlgorithm sha1, maskGenAlgorithm mgf1SHA1, pSourceAlgorithm pSpecifiedEmpty } }
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
RSAES-AlgorithmIdentifier ::= AlgorithmIdentifier { {PKCS1Algorithms} }
A.2.2 RSAES-PKCS1-v1_5
¶ÔÏó±êʶrsaEncryption £¨²Î¼û¸½Â¼A.1£©±êʶRSAES-PKCS1-v1_5¼ÓÃÜ·½°¸¡£ÔÚÀàÐÍΪ
AlgorithmIdentifierµÄÖµÖÐÓëÕâ¸öOIDÁªÏµµÄparametersÓòÓ¦¸Ã¾ßÓÐÒ»¸öÀàÐÍΪNULLµÄÖµ¡£ÕâÓëPKCS #1
v1.5ÖеÄÒ»Ñù¡£
rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 }
A.2.3 RSASSA-PSS
¶ÔÏó±êʶid-RSASSA-PSS±êʶ¼ÓÃÜ·½°¸¡£
id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 }
ÔÚÀàÐÍΪAlgorithmIdentifierµÄÖµÖÐÓëÕâ¸öOIDÏàÁªÏµµÄparametersÓòÓ¦¸Ã¾ßÓÐÒ»¸öÀàÐÍΪ
RSASSA-PSS-params掙朧
RSASSA-PSS-params ::= SEQUENCE {
hashAlgorithm [0] HashAlgorithm DEFAULT sha1, maskGenAlgorithm [1] MaskGenAlgorithm DEFAULT mgf1SHA1, saltLength [2] INTEGER DEFAULT 20,
trailerField [3] TrailerField DEFAULT trailerFieldBC }
ÀàÐÍRSASSA-PSS-paramsµÄ¸÷Óò¾ßÓÐÒÔÏÂÒâÒ壺 ?
hashAlgorithm ±êʶɢÁк¯Êý¡£ËüÓ¦¸ÃÊÇÒ»¸öËã·¨ID£¨¾ßÓÐÒ»¸öÊôÓÚOAEP-PSSDigestAlgorithms¼¯£¨²Î
¼û¸½Â¼0£©µÄOID£©¡£Ä¬ÈϵÄÉ¢Áк¯ÊýÊÇSHA-1¡£ ?
maskGenAlgorithm ±êʶÑÚÄ£Éú³Éº¯Êý¡£ËüÓ¦¸ÃÊÇÒ»¸öËã·¨ID£¨¾ßÓÐÒ»¸öÊôÓÚPKCS1MGFAlgorithms¼¯
£¨²Î¼û¸½Â¼0£©µÄOID£©¡£Ä¬ÈϵÄÑÚÄ£Éú³Éº¯ÊýÊÇÒ»¸ö»ùÓÚSHA-1µÄMGF1¡£¶ÔÓÚMGF1£¨¸üÒ»°ãµØ£¬¶ÔÓÚ»ùÓÚÒ»¸öÉ¢Áк¯ÊýµØÑÚÄ£Éú³Éº¯Êý£©½¨Òé»ù´¡É¢Áк¯ÊýÓëhashAlgorithm±êʶµÄÉ¢Áк¯ÊýÒ»Ñù£»½øÒ»²½µÄ˵Ã÷Çë²Î¼û9.1½ÚµÄ×¢ÊÍ2¡£
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
? saltLength ÊÇsaltµÄ°Ëλ×鳤¶È¡£ËüÓ¦¸ÃÊǸöÕûÊý¡£¶ÔÓÚÒ»¸ö¸ø¶¨µÄhashAlgorithm£¬saltLengthµÄĬÈÏ
ÖµÊÇÕâ¸öÉ¢ÁÐÖµµÄ°Ëλ×鳤¶È¡£saltLength²»ÏñÀàÐÍRSASSA-PSS-paramsµÄÆäËüÓò£¬ËüµÄÖµ¶ÔÖ¸¶¨µÄRSAÃÜÔ¿¶ÔÀ´Ëµ²»ÐèÒªÊǹ̶¨Öµ¡£ ?
trailerField ÊÇβ²¿ÓòÊý×Ö£¬ÎªÁËÓë²Ý°¸IEEE P1363a [27]¼æÈÝ¡£¶ÔÓë±¾ÎĵµµÄÕâ¸ö°æ±¾ËüÓ¦¸ÃÊÇ1£¬Õâ
±íʾβ²¿Óò¾ßÓÐÊ®Áù½øÖÆÖµ0xbc ¡£±¾ÆªÎĵµ²»Ö§³ÖÆäËüβ²¿Óò£¨°üÀ¨IEEE P1363aÖеÄβ²¿ÓòHashID || 0xcc£©¡£
TrailerField ::= INTEGER { trailerFieldBC(1) }
Èç¹ûhashAlgorithm¡¢maskGenAlgorithmºÍRSASSA-PSS-paramsµÄtrailerFieldÓòʹÓÃĬÈÏÖµ£¬ÄÇôËã·¨±êʶ½«¾ßÓÐÒÔÏÂÖµ£º
rSASSA-PSS-Default-Identifier RSASSA-AlgorithmIdentifier ::= { algorithm id-RSASSA-PSS, parameters RSASSA-PSS-params : { hashAlgorithm sha1, maskGenAlgorithm mgf1SHA1, saltLength 20,
trailerField trailerFieldBC } }
RSASSA-AlgorithmIdentifier ::= AlgorithmIdentifier { {PKCS1Algorithms} }
×¢ÊÍ£ºÔÚһЩӦÓÃÖУ¬×÷Ϊһ¸öÇ©Ãû·½°¸µÄÉ¢Áк¯ÊýÍÑÀëÇ©Ãû·½°¸ÖеÄÆäËü²Ù×÷¶ø¶ÀÁ¢±êʶ¡£¾ÙÀýÀ´Ëµ£¬ÔÚPKCS #7 [45]ÖУ¬Ò»¸öÉ¢Áк¯Êý±êʶ·ÅÔÚÏûϢǰÃ棬¶ø¡°ÕªÒª¼ÓÃÜ¡±Ëã·¨±êʶ£¨Ö¸Ê¾ÆäËü²Ù×÷£©Ð¯´øÔÚÇ©ÃûÖС£ÎªÁËPKCS #7ÈÃÖ§³ÖRSASSA-PSSÇ©Ãû·½°¸£¬ÔÚRSASSA-PSSÖÐÐèÒªÓÃÒ»¸ö¶ÔÏó±êʶָʾÔÚÉ¢Áк¯Êý£¨ÀàËÆÓÚRSASSA-PKCS1-v1_5·½°¸µÄ
RSAEncryption OID£©Ö®ºóµÄ²Ù×÷¡£S/MIME CMS [25]²ÉÓÃÁ˲»Í¬µÄ·½Ê½¡£¾¡¹ÜÉ¢Áк¯Êý±êʶ·ÅÔÚÏûϢǰÃ棬µ«ÊÇÈ«²¿Ç©Ãû
·½°¸µÄËã·¨±êʶ¿ÉÄÜЯ´øÔÚCMSÇ©ÃûÖУ¨ÕâÊǶÔÓÚDSAÇ©Ãû£©¡£ÔÚÕâ¸ö¹ßÀýÖ®ºó£¬id-RSASSA-PSS OID±»ÓÃÓÚ±êʶCMSÖеÄRSASSA-PSSÇ©Ãû¡£×Ô´ÓCMS±»ÈÏΪÊÇPKCS #7µÄ½Ó°àÈËÖ®ºó£¬Í¬Ê±¿¼Âǵ½CMS¶ø²»ÊÇPKCS #7£¬½øÐÐÁËÐí¶àпª·¢£¬ÖîÈçÔö¼Ó¶ÔRSASSA-PSSÖ§³Ö¡£
A.2.4 RSASSA-PKCS1-v1_5
ÏÂÃæÖ®Ò»Ó¦¸ÃÊÇRSASSA-PKCS1-v1_5µÄ¶ÔÏó±êʶ¡£OIDµÄÑ¡ÔñÒÀÀµÓÚÉ¢ÁÐËã·¨µÄÑ¡Ôñ£ºMD2¡¢MD5¡¢SHA-1¡¢ SHA-256¡¢SHA-384»òÕß SHA-512¡£×¢ÒâÈç¹û²ÉÓÃÁËMD2»òÕßMD5£¬ÄÇôÕâ¸öOID¾ÍºÍPKCS
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
#1 v1.5ÖеÄÒ»Ñù¡£¶ÔÓÚÿ¸öOID£¬ÔÚÀàÐÍΪAlgorithmIdentifierµÄÖµÖУ¬ÓëÕâ¸öOIDÏàÁªÏµµÄparametersÓòÓ¦¸Ã¾ßÓÐÒ»¸öÀàÐÍΪNULLµÄÖµ¡£Ó¦¸ÃÒÀÕÕϱíÑ¡ÔñÕâ¸öOID£º
Hash algorithm MD2 MD5 SHA-1 SHA-256 SHA-384 SHA-512 OID md2WithRSAEncryption ::= {pkcs-1 2} md5WithRSAEncryption ::= {pkcs-1 4} sha1WithRSAEncryption ::= {pkcs-1 5} sha256WithRSAEncryption ::= {pkcs-1 11} sha384WithRSAEncryption ::= {pkcs-1 12} sha512WithRSAEncryption ::= {pkcs-1 13}
EMSA-PKCS1-v1_5±àÂë·½·¨°üÀ¨Ò»¸öÀàÐÍΪDigestInfoµÄASN.1Öµ£¬ÆäÖÐÀàÐÍDigestInfo¾ßÓÐÓï·¨
DigestInfo ::= SEQUENCE {
digestAlgorithm DigestAlgorithm, digest OCTET STRING }
digestAlgorithm ±êʶɢÁк¯ÊýÇÒÓ¦ÊÇÒ»¸öËã·¨ID£¨¾ßÓÐÒ»¸öÊôÓÚPKCS1-v1-5DigestAlgorithms¼¯µÄOID£©¡£
¹ØÓÚÖ§³ÖµÄÉ¢Áк¯ÊýµÄÌÖÂÛ£¬²Î¼û¸½Â¼0¡£
DigestAlgorithm ::= AlgorithmIdentifier { {PKCS1-v1-5DigestAlgorithms} }
PKCS1-v1-5DigestAlgorithms ALGORITHM-IDENTIFIER ::= { { OID id-md2 PARAMETERS NULL }| { OID id-md5 PARAMETERS NULL }| { OID id-sha1 PARAMETERS NULL }| { OID id-sha256 PARAMETERS NULL }| { OID id-sha384 PARAMETERS NULL }| { OID id-sha512 PARAMETERS NULL } }
B Ö§³Å¼¼Êõ
±¾²¿·Ö¸ø³öÁ˼¸¸ö¹ØÓÚÖ§³ÖµÚ7²¿·ÖÖеļÓÃÜ·½°¸ºÍµÚ9²¿·ÖÖеıàÂë·½°¸µÄ»ù´¡º¯ÊýµÄÀý×Ó¡£ÎªÁËÒÆÖ²µ½Ð¼¼ÊõÉÏҲΪÁËÓëÒÑ´æÔÚµÄÓ¦ÓóÌÐò¼æÈÝ£¬ÕâÀï¸ø³öÁËÒ»¸ö¼¼Êõ·¶Î§¡£¾¡¹ÜÕâЩ֧³Å¼¼ÊõÊʺÏÓÃÓ¦ÓóÌÐòʵÏÖ£¬µ«ÊÇËüÃÇÖ®ÖÐûÓÐÒ»¸öÐèÒª±»ÊµÏÖ¡£Ï£Íû¿ª·¢ÃèÊöÌض¨¼¼ÊõµÄPKCS #1 v2.1Îĵµ¡£
Õâ¸ö²¿·ÖÒ²¸øÖ§³Å¼¼ÊõÖ¸¶¨Á˶ÔÏó±êʶ¡£
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
B.1 É¢Áк¯Êý
µÚ0²¿·ÖºÍµÚ0²¿·ÖµÄÔËËãʹÓÃÁËÉ¢Áк¯Êý¡£É¢Áк¯ÊýÊÇÈ·¶¨ÐԵģ¬Òâ˼ÊÇÊä³öÍêÈ«ÓÐÊäÈë¾ö¶¨¡£É¢Áк¯Êý½ÓÄɿɱ䳤¶ÈµÄ°Ëλ×é´®£¬È»ºóÉú³É¹Ì¶¨³¤¶ÈµÄ°Ëλ×é´®¡£µÚ0²¿·ÖºÍµÚ0²¿·ÖµÄÔËËãʹÓõÄÉ¢Áк¯ÊýÒ»°ãÓ¦¸ÃÊÇÏÞÖƳåÍ»µÄ¡£ÕâÒâζ×ÅÒªÕÒµ½ÓÐÏàͬÊä³öµÄÉ¢Áк¯ÊýµÄÁ½¸ö²»Í¬µÄÊäÈëÊDz»¿ÉÐеġ£Ò»¸öÏÞÖƳåͻɢÁк¯ÊýÒ²¾ßÓÐÎüÒýÈ˵ĵ¥·½ÐÔÄÜ£»ÕâÒâζןø¶¨Ò»¸öÊä³ö£¬¾Í²»¿ÉÄÜÕÒµ½Ò»¸öÊäÈ룬ʹËüµÄÉ¢ÁоÍʸø¶¨µÄÊä³ö¡£³ýÁËÕâЩ¼¼Êõ¹æ¸ñ£¬ÓÃαËæ»úÊä³öÉ¢Áк¯Êý»á²úÉúÒ»¸öÑÚÄ£Éú³Éº¯Êý£¨¼û¸½Â¼0£©¡£
±¾ÆªÎĵµÖиø³öÁù¸ö±àÂ뺯ÊýµÄÉ¢Áк¯Êý×÷ΪÀý×Ó£ºMD2 [33]¡¢ MD5 [41]¡¢ SHA-1 [38]ÒÔ¼°ÉêÇëËã·¨SHA-256¡¢SHA-384ºÍSHA-512[39]¡£¶ÔÓÚRSAES-OAEP¼ÓÃÜ·½°¸ºÍEMSA-PSS±àÂë·½°¸£¬Ö»ÍƼöʹÓÃSHA-1ºÍSHA-256/384/512£¬ÐÂÓ¦ÓóÌÐòÍƼöʹÓÃSHA-1ºÍSHA-256/384/512¡£MD2ºÍMD5Ö»ÍƼö¸øÓëÒÑ´æÔڵĻùÓÚPKCS #1 v1.5µÄÓ¦ÓóÌÐò¼æÈÝ¡£
¶ÔÏó±êʶid-md2¡¢ id-md5¡¢ id-sha1¡¢ id-sha256¡¢ id-sha384,ºÍid-sha512£¬·Ö±ð±êʶɢÁк¯Êý£º
id-md2 OBJECT IDENTIFIER ::= {
iso (1) member-body (2) us (840) rsadsi (113549) digestAlgorithm (2) 2 }
id-md5 OBJECT IDENTIFIER ::= {
iso (1) member-body (2) us (840) rsadsi (113549) digestAlgorithm (2) 5 }
id-sha1 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) 26 }
id-sha256 OBJECT IDENTIFIER ::= {
joint-iso-itu-t (2) country (16) us (840) organization (1) gov (101) csor (3) nistalgorithm (4) hashalgs (2) 1 }
id-sha384 OBJECT IDENTIFIER ::= {
joint-iso-itu-t (2) country (16) us (840) organization (1) gov (101) csor (3) nistalgorithm (4) hashalgs (2) 2 }
id-sha512 OBJECT IDENTIFIER ::= {
joint-iso-itu-t (2) country (16) us (840) organization (1) gov (101) csor (3) nistalgorithm (4) hashalgs (2) 3 }
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
ÔÚÀàÐÍΪAlgorithmIdentifier µÄÖµÖУ¬ÓëÕâЩ¶ÔÏó±êʶÁªÏµµÄparametersÓòÓ¦¸Ã¾ßÓÐÀàÐÍΪNULLµÄÖµ¡£
×¢ÊÍ£ºPKCS #1µÄ°æ±¾1.5Ò²ÔÊÐíÔÚÇ©Ãû·½°¸ÖÐʹÓÃMD4¡£MD4µÄÃÜÂë·ÖÎöÔÚÕ⼸ÄêÀïÈ¡µÃÁËÖØ´óµÄ½øÕ¹¡£¾ÙÀýÀ´Ëµ£¬Dobbertin [18]֤ʵÁËÈçºÎÕÒµ½MD4µÄ³åÍ»Êý¾Ý£¬¶øÇÒMD4µÄÇ°Á½round²»Êǵ¥·½µÄ[20]¡£ÓÉÓÚÕâЩ½á¹ûÒÔ¼°ÆäËü½á¹û£¨ÀýÈç[8]£©£¬²»ÔÙÍƼöʹÓÃMD4¡£MD2ºÍMD5µÄÃÜÂë·ÖÎöÖÐÒ²ÓнøÕ¹£¬¾¡¹Ü»¹²»×ãÒÔÕýÃû´ÓÒÔ´æÔÚµÄÓ¦ÓóÌÐòÖÐɾ³ýÊÇÕýµ±µÄ¡£Rogier ºÍ Chauvaud [43]֤ʵÁËÈçºÎÔÚMD2µÄÐ޸İ汾ÖÐÕÒµ½³åÍ»Êý¾Ý¡£Ã»ÓÐÈË֤ʵÈçºÎÕÒµ½ËùÓÐMD5Ëã·¨µÄ³åÍ»Êý¾Ý£¬¾¡¹Ü²¿·Ö½á¹ûÒѾ±»·¢ÏÖ£¨ÀýÈç[9][19]£©¡£
ΪÁËaddress these concerns£¬²»ÍƼöÐÂÓ¦ÓóÌÐòʹÓÃSHA-1¡¢SHA-256 ¡¢SHA-384»òÕßSHA-512¡£¾Í½ñÌìÀ´Ëµ£¬Õë¶ÔÕâЩɢÁк¯ÊýµÄ×îÖøÃûµÄ¹¥»÷ÊÇ´ø¸´ÔÓ¶È2L/2µÄÀàÊô¹¥»÷£¬ÆäÖÐLÊÇÉ¢Áк¯ÊýÊä³öµÄ±ÈÌس¤¶È¡£¶ÔÓÚ±¾ÆªÎĵµÖеÄÇ©Ãû·½°¸£¬Ò»¸ö³åÍ»Êý¾Ý¹¥»÷ºÜÈÝÒ×¾Íת»¯³ÉÒ»¸öÇ©ÃûαÔì¡£Òò´Ë£¬ÖµL / 2Ó¦¸ÃÖÁÉÙµÈÓÚÇ©Ãû·½°¸ÆÚÍûµÄ°²È«µÈ¼¶µÄ±ÈÌس¤¶È£¨B±ÈÌØ°²È«µÈ¼¶Òâ˼Êǹ¥»÷¾ßÓеĸ´ÔÓ¶ÈΪ2B£©¡£Í¬ÑùµÄÄ´Ö¸¹æÔòÄܹ»Ó¦ÓÃÓÚRSAES-OAEP£»½¨ÒéseedµÄ±ÈÌس¤¶È£¨µÈÓÚÉ¢Áк¯ÊýÊä³öµÄ±ÈÌس¤¶È£©Ó¦¸ÃΪÆÚÍû°²È«µÈ¼¶µÄ±ÈÌس¤¶ÈµÄÁ½±¶¡£
B.2 ÑÚÄ£Éú³Éº¯Êý
Ò»¸öÑÚÄ£Éú³Éº¯Êý½«Ò»¸ö¿É±ä³¤¶ÈµÄ°Ëλ×é´®ºÍÒ»¸öÆÚÍûµÄÊä³ö³¤¶È×÷ΪÊäÈ룬²¢ÇÒÊä³öÒ»¸ö¾ßÓÐÆÚÍû³¤¶ÈµÄ°Ëλ×é´®¡£¶ÔÊäÈ볤¶È·½ÃæºÍÊä³ö°Ëλ×é¿ÉÄÜÓÐÏÞÖÆ£¬µ«ÊÇÕâÖÖ½çÏÞÒ»°ã·Ç³£´ó¡£Ò»¸öÑÚÄ£Éú³Éº¯ÊýµÄÊý³öÓ¦¸ÃÊÇαËæ»úµÄ£º¸ø¶¨Êä³ö¶øRSASSA-PSS²»ÊÇÊäÈëµÄÒ»²¿·Ö£¬Ô¤ËãÁíÒ»²¿·ÖÊä³öÊDz»¿ÉÄܵġ£RSAES-OAEPºÍRSASSA-PSSµÄ¿É֤ʵ°²È«ÐÔÀµÓÚÑÚÄ£Éú³Éº¯ÊýÊä³öµÄËæ»ú±¾ÖÊ£¬¶øÊä³öµÄËæ»úÐÔ·´¹ýÀ´ÒÀÀµÓÚ»ù´¡É¢ÁеÄËæ»ú±¾ÖÊ¡£
ÕâÀï¸ø¶¨Ò»¸öÑÚÄ£Éú³Éº¯Êý£ºMGF1£¬ËüÒÀÀµÓÚÉ¢Áк¯Êý¡£MGF1ÓëIEEE Std 1363-2000 [26]ÒÔ¼°²Ý°¸ANSI X9.44 [1]Öж¨ÒåµÄÑÚÄ£Éú³Éº¯ÊýÒ»Ö¡£±¾ÆªÎĵµµÄ½ñºó°æ±¾¿ÉÒÔ¶¨ÒåÆäËüÑÚÄ£Éú³Éº¯Êý¡£
B.2.1 MGF1
MGF1 ÊÇÒ»¸ö»ùÓÚÉ¢Áк¯ÊýµÄÑÚÄ£Éú³Éº¯Êý¡£ MGF1 (mgfSeed, maskLen)
Ñ¡Ï ÊäÈ룺
Hash mgfSeed maskLen mask
É¢Áк¯Êý£¨hLen±íʾɢÁк¯ÊýÊä³öµÄ°Ëλ×鳤¶È£© ÑÚÄ£Éú³ÉËùÓõÄseed£¬Ê¹Ò»¸ö°Ëλ×é´® ÆÚÍûµÄÑÚÄ£µÄ°Ëλ×鳤¶È£¬ÖÁ¶àÊÇ2 hLen ÑÚÄ££¬Ê¹Ò»¸ö³¤¶ÈΪmaskLenµÄ°Ëλ×é
32
Êä³ö£º
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
³ö´íÌáʾ£º ²½Ö裺
¡°ÑÚģ̫³¤¡±
1. Èç¹ûmaskLen > 232 hLen£¬ÔòÊä³ö¡°ÑÚģ̫³¤¡±È»ºóÖÐÖ¹ÔËËã¡£ 2. ʹ TΪ¿ÕµÄ°Ëλ×é´®¡£
3. ʹcounter´Ó0²½½øµ½ ? maskLen / hLen ? ¨C 1£¬Ñ»·ÒÔϲ½Ö裺
a. ½«counterת»»³ÉÒ»¸ö³¤¶ÈΪ4¸ö°Ëλ×éµÄ´®C £¨¼û0½Ú£©£º
C = I2OSP (counter, 4) ¡£
b. Á¬½Óseed mgfSeedµÄÉ¢ÁкÍC£¬²úÉúÒ»¸ö°Ëλ×é´®T£º
T = T || Hash (mgfSeed || C) ¡£
4. ½«TµÄÇ°maskLen¸ö°Ëλ×é×÷Ϊ°Ëλ×é´®ÑÚÄ£Êä³ö¡£ ¶ÔÏó±êʶid-mgf1±êʶÁËÑÚÄ£Éú³Éº¯ÊýMGF1£º
id-mgf1 OBJECT IDENTIFIER ::= { pkcs-1 8 }
ÔÚÀàÐÍΪAlgorithmIdentifierµÄÖµÖÐÓëÕâ¸öOIDÏàÁªÏµµÄparametersÓòÓ¦¸ÃÊÇÒ»¸öÀàÐÍΪhashAlgorithmµÄÖµ£¬±êʶMGF1ËùÒÀÀµµÄÉ¢Áк¯Êý¡£
C ASN.1 Ä£¿é
PKCS-1 {
iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-1(1) modules(0) pkcs-1(1) }
-- $ Revision: 2.1 $
-- This module has been checked for conformance with the ASN.1 standard by -- the OSS ASN.1 Tools
DEFINITIONS EXPLICIT TAGS ::= BEGIN
-- EXPORTS ALL
-- All types and values defined in this module are exported for use in other
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
-- ASN.1 modules.
IMPORTS
id-sha256, id-sha384, id-sha512 FROM NIST-SHA2 {
joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) modules(0) sha2(1) };
-- ============================ -- Basic object identifiers -- ============================
-- The DER encoding of this in hexadecimal is: -- (0x)06 08
-- 2A 86 48 86 F7 0D 01 01 --
pkcs-1 OBJECT IDENTIFIER ::= {
iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 1 } --
-- When rsaEncryption is used in an AlgorithmIdentifier the parameters -- MUST be present and MUST be NULL. --
rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } --
-- When id-RSAES-OAEP is used in an AlgorithmIdentifier the parameters MUST -- be present and MUST be RSAES-OAEP-params. --
id-RSAES-OAEP OBJECT IDENTIFIER ::= { pkcs-1 7 } --
-- When id-pSpecified is used in an AlgorithmIdentifier the parameters MUST -- be an OCTET STRING. --
id-pSpecified OBJECT IDENTIFIER ::= { pkcs-1 9 } --
-- When id-RSASSA-PSS is used in an AlgorithmIdentifier the parameters MUST -- be present and MUST be RSASSA-PSS-params.
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
--
id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 } --
-- When the following OIDs are used in an AlgorithmIdentifier the parameters -- MUST be present and MUST be NULL. --
md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 } md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 } sha1WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 5 } sha256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 11 } sha384WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 12 } sha512WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 13 } --
-- This OID really belongs in a module with the secsig OIDs. --
id-sha1 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) 26 } --
-- OIDs for MD2 and MD5, allowed only in EMSA-PKCS1-v1_5. --
id-md2 OBJECT IDENTIFIER ::= {
iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 2 }
id-md5 OBJECT IDENTIFIER ::= {
iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 5 } --
-- When id-mgf1 is used in an AlgorithmIdentifier the parameters MUST be -- present and MUST be a HashAlgorithm, for example sha1. --
id-mgf1 OBJECT IDENTIFIER ::= { pkcs-1 8 }
-- ================ -- Useful types -- ================
ALGORITHM-IDENTIFIER ::= CLASS {
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®
PKCS #1 v2.1---RSA Cryptography Standard RSAËã·¨±ê×¼
&id OBJECT IDENTIFIER UNIQUE, &Type OPTIONAL }
WITH SYNTAX { OID &id [PARAMETERS &Type] }
-- Note: the parameter InfoObjectSet in the following definitions allows a -- distinct information object set to be specified for sets of algorithms -- such as:
-- DigestAlgorithms ALGORITHM-IDENTIFIER ::= { -- { OID id-md2 PARAMETERS NULL }| -- { OID id-md5 PARAMETERS NULL }| -- { OID id-sha1 PARAMETERS NULL } -- } --
AlgorithmIdentifier { ALGORITHM-IDENTIFIER:InfoObjectSet } ::= SEQUENCE { algorithm
ALGORITHM-IDENTIFIER.&id({InfoObjectSet}), parameters
ALGORITHM-IDENTIFIER.&Type({InfoObjectSet}{@.algorithm}) OPTIONAL }
-- ============== -- Algorithms -- ============== --
-- Allowed EME-OAEP and EMSA-PSS digest algorithms. --
OAEP-PSSDigestAlgorithms ALGORITHM-IDENTIFIER ::= { { OID id-sha1 PARAMETERS NULL }| { OID id-sha256 PARAMETERS NULL }| { OID id-sha384 PARAMETERS NULL }| { OID id-sha512 PARAMETERS NULL }, ... -- Allows for future expansion -- } --
-- Allowed EMSA-PKCS1-v1_5 digest algorithms. --
PKCS1-v1-5DigestAlgorithms ALGORITHM-IDENTIFIER ::= {
PKCS/PKIXÖÐÎÄ·Òë¼Æ»®