RSA数字签名的实现毕业论文 第2页


EM          编码后的消息,是一个八位组串
emBits(期望的)编码消息EM 的以比特为计量单位的长度
emLen(期望的)编码消息EM 的以八位组为计量单位的长度
GCD (. , .)两个非负整数的最大公约数
Hash         哈希函数
hLen         散列函数Hash的输出的以八位组为计量单位的长度
k                 RSA合数模 n的以八位组为计量单位的长度
K                 RSA 私钥
L                 可选的RSAES-OAEP 标签,是一个八位组串
LCM (. , … , .)一系列非负整数的最小公倍数
m                 消息代表,是一个界于0到n – 1的整数
M                 消息,是一个八位组串
mask         MGF的输出,是一个字节串
maskLen(期望的)掩模的以八位组为计量单位的长度
MGF         掩模生成函数
mgfSeed 生成掩模的种子因数(seed),是一个八位组串
mLen         消息M 的以八位组为计量单位的长度
n                 RSA合数模, n = r1 • r2  … • ru , u  2
(n, e)         RSA公钥
p, q                 RSA合数模 n的前两个素数因子
qInv         CRT系数,是个满足下式且小于p的正整数
q • qInv  1 (mod p)

ri     RSA合数模 n的素数因子, 包括r1 = p, r2 = q, 以及任何另外的因子
s           签名代表,是一个位于 0到 n – 1之间的整数
S           签名,是一个八位组串
sLen        EMSA-PSS 盐(salt)的以八位组为计量单位的长度
ti      其它素数因数ri 的CRT系数, 是一个比ri 小的正整数,满足下式
r1 • r2 • … • ri–1 • ti  1 (mod ri) , i = 3, …, u
u                RSA合数模的素数因子的个数, u  2
x                一个非负整数
X                与x 对应的一个八位组串
xLen        (指定的)八位组串X 的长度
0x      一个八位组或八位组串的十六进制表示法的标志;“0x48” 表示十六进
        制值为48的字节; “(0x)48 09 0e” 表示三个连续的字节,它们的十六进
        制值分别为48, 09, 和0e
(n)                 LCM (r1 – 1, r2 – 1, … , ru – 1)
                 两个八位组串的位异或操作
 .                 取整函数;x是一个大于或等于实数x 的最小整数。
||                 或操作
≡      同余符号;a  b (mod n) 表示能用整数n整除整数a – b















3  密钥类型
在本篇文档定义的原语和方案中,使用了两种密钥类型:RSA公钥和RSA私钥。RSA公钥和RSA私钥一起构成一个RSA密钥对。
本篇规范支持所谓的“多素数”RSA,这种RSA的合数模可能由两个以上的素数因子构成。多素数RSA的优点在于,当使用CRT(中国余数定理),它就能减少解密和签名原语的计算开销。这在单处理器平台上能获得更好的性能,但是在多处理器平台上不一定,在多处理器平台上可以并行处理合数模的幂运算。
3.1  RSA 公钥
为了这篇文档起见,一个RSA公钥由两部分构成:
                        n        RSA合数模,是一个正整数
                        e        RSA公开幂,是一个正整数
在一个有效的RSA公钥中,RSA合数模n是由u 个不同的奇素数ri生成的,i = 1, 2, …, u, 其中u  2,而RSA公开幂e是一个位于3~n – 1之间的整数,满足GCD (e, (n)) = 1,其中(n) = LCM (r1 – 1, …, ru – 1)。按照惯例,通常用p 和q分别合数模的前两个素数因子r1 和r2。
3.2  RSA 私钥
为了本篇文档起见,一个RSA私钥可以采取两种表示法中的任何一个。
(1)第一种表示法由一对整数(n, d)构成,各部分的意义如下:
n        RSA合数模,是一个正整数
d   RSA私有幂,是一个正整数
(2)第二种表示法由一个五元组(p, q, dP, dQ, qInv)和一系列(可能为空)三元组 (ri, di, ti)  i = 3, …, u构成,三元组的每个素数不出现在五元组中,各部分的意义如下:
p         第一个因子,是一个正整数
q        第二个因子,是一个正整数
dP        第一个因子的CRT幂,是一个正整数
dQ        第二个因子的CRT幂,是一个正整数
qInv(第一个)CRT系数,是一个正整数
ri        第i个因子,,是一个正整数
di        第i个因子的 CRT幂,是一个正整数
ti          第i个因子的 CRT系数,是一个正整数
当采用第一种表示法表示时,有效的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 – 1))  
e • dQ  1 (mod q – 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 – 1)) 。
每个CRT系数ti (i = 3, …, u)是一个小于ri的正整数,满足
Ri • ti  1 (mod ri) ,
其中Ri = r1 • r2 • … • ri–1。
在设备之间互换的RSA私钥的推荐描述(包括两种表示法的组成部分)在附录中给出;设备的内部表示可能不同。
注释:
(1)这里CRT系数的定义以及第5部分的原语中使用到的程式遵循Garner算法然而,为了与PKCS #1 v2.0及之前版本中的RSA私钥表示法兼容,p 和q 的角色被保留了,这与其它素数不一样。因此,第一个CRT系数qInv被定义成是q mod p的倒数(inverse),而不是r1 mod r2的倒数(也就是p mod q的倒数)。
(2)Quisquater 和Couvreur 注意到在RSA运算中使用中国剩余定理的优点。














4 数据转换原语
本论文所定义的模式中使用了两个数据转换原语:
        I2OSP – 整数到字节串的转换原语
        OS2IP – 字节串到整数的转换原语
为了本论文起见,也为了与ASN.1语法一致桓霭宋蛔榇侵敢桓鲇兴承虻陌宋蛔椋ò宋槐忍毓钩梢桓鲎纸冢┬蛄小U鲂蛄写拥谝晃唬ㄍǔJ亲钭蟊叩囊晃唬┑阶詈笠晃唬ㄗ钣冶叩囊晃唬┍嗳胨饕N俗晃约白徽诮酉吕吹淖辉镏械谝桓霭宋蛔楸蝗衔亲钪匾模挛募虻ソ樯芰薎2OSP
和OS2IP两种数据转换原语。

4.1  I2OSP

I2OSP把一个非负整数转换为一个长度指定的字节串。
I2OSP (x, xLen)
输入:        x待转换的非负整数
        xLen转换后的八位组串的期望长度
输出:        X对应的长度为xLen 的八位组串
错误信息:“整数太大”
步骤:
(1)如果 x  256xLen,输出“整数太大”然后终止。
(2)用以256为基数的xLen位数表示整数x :
x = xxLen–1 256xLen–1 + xxLen–2 256xLen–2 + … + x1 256 + x0 ,
其中 0  xi < 256 (注意如果x小于256xLen–1,一个或多个高位将为零)。
(3)使字节 Xi 的整数值为xxLen–I , 1  I  xLen。输出八位组串 X = X1 X2 … XxLen。
4.2  OS2IP
OS2IP 将一个八位组串转换成一个非负整数。
OS2IP (X)
输入:X待转换的八位组串
输出:        x相应的非负整数
步骤:
(1)使 X1 X2 … XxLen 分别为X 的第一个至最后一个八位组,使 xxLen–i 的值为八位组Xi 的整数值,1  i  xLen。
(2)让 x = xxLen–1 256xLen–1 + xxLen–2 256xLen–2 + … + x1 256 + x0。
(3)输出x。

5密码原语
密码原语是基本的数学运算,在此基础上形成密码方案。人们打算以硬件或软件模块的形式实现它们,而且不打算提供撇开方案的安全。
在本篇文档中定义了四类原语,以配对的方式组织:加密和解密;签名和验证。
原语规范假定输入满足一定的条件,特别地假设RSA公钥和私钥有效。
5.1  加密和解密原语
加密原语在公钥的控制下从消息代表产生出密文代表,解密原语在对应私钥的控制下从密文代表中恢复消息代表。
在本篇文档定义的加密方案中使用了一对加密和解密原语,被描述为:RSAEP/RSADP 。RSAEP和RSAEP涉及相同的数学运算,只是输入的密钥不同。
这里定义的原语和在IEEE Std 1363-2000中定义的IFEP-RSA/IFDP-RSA一样(除了增加了对多原语RSA的支持之外),而且与PKCS #1 v1.5兼容。
在每个原语中主要的数学运算是幂运算。
5.1.1  RSAEP
RSAEP ((n, e), m)
输入:(n, e)RSA 公钥
        m消息代表, 是一个位于0~ n – 1之间的整数
输出:c密文代表, 是一个位于0~ n – 1之间的整数
错误提示:“消息代表超出范围”
假设:RSA 公钥(n, e)有效
步骤:
(1)如果消息代表m 不在0 ~n – 1之间, 输出“消息代表超出范围”并终止。
(2)让c = me mod n。
(3)输出c。
5.1.2  RSADP

上一页  [1] [2] [3] [4] [5] [6] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有