密码学与网络安全最终版(3)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.AES(97)
(1)AES数学基础
AES使用有限域GF(28)内的算术,在8位的字节上运算。
有限域GF(28)中的多项式加法等同于按位异或(XOR)运算。
有限域GF(28)中两个元素的乘法为模2元域GF(28)上的一个8次
不可约多项式的多项式乘法。对于AES的8次不可约多项式为:
m(x)=x8 + x4 + x3 + x + 1
(2)AES总体结构
1)明文分组的长度为128位即16字节,密钥长度可以为16字节,24字节或32字节(128位,192位或256位)
2)加密和解密算法的输入是一个128位分组。
3)密码由N轮组成,其中轮数依赖于密钥长度:16字节密钥是10轮,24字节密钥对应12轮,32字节密钥对应14轮。前N—1轮由4个不
同的变换组成:字节代替,行移位,列混淆和轮密钥加。最后一轮仅
包括3个变换(字节代替,行移位和轮密钥加),而在第一轮的前面有
一个起始的单变换(轮密钥加),可以视为0轮。
(3)AES详细结构(特性)
1)AES结构的一个显著特征是它不是Feistel结构。
2)输入的轮密钥被扩展成由44个32位字节所组成的数组w[i]。
3)由4个不同的阶段组成,包括一个置换和3个代替:
字节代替:用一个S盒完成分组的字节到字节的代替。把该字节的高
4位作为行值,低4位作为列值,以这些行列值作为索引从S盒的对
应位置取出元素作为输出。
行移位:一个简单的置换。状态的第一行保持不变。把状态的第二行
循环左移一个字节,状态的第三行循环左移两个字节,状态的第四行
循环左移三个字节。
列混淆:利用域GF(28)上的算术特性的一个代替。
轮密钥加:当前分组和扩展密钥的一部分进行按位XOR。
4)算法结构非常简单。对加密和解密操作,算法由轮密钥加开始,接着执行9轮迭代运算,每轮都包含所有四个阶段的代替,接着是第10
轮的三个阶段。
5)仅仅在轮密钥加阶段中使用密钥。
6)每个阶段均可逆。
7)AES的加密解密算法不一样。
2.SHA-512算法步骤(251)
算法的输入是最大长度小于2128位的消息,输出的是512的消息摘要,输入消息以1024位的分组为单位进行处理。
(1)附加填充位。填充消息使其长度模1024与896同余[即长度≡896(mod1024)]。填充位数在1~1024之间,由一个1和后续的0组成。(2)附加长度。在消息后附加一个128位的块,将其视为128位的无符号整数(最高有效字节在前),它包含填充前消息的长度。
(3)初始化Hash缓冲区。
(4)以1024位的分组(128个字节)为单位处理消息。
(5)输出。所有的N个1024位分组都处理完以后,从第N阶段输出的是512位的消息摘要。
总结:
H0= IV
H1 = SUM64(H i-1,abcdefgh i)
MD = H N
3.椭圆曲线(223)
(1)实数域上的椭圆曲线:y2 = x3 + ax + b
椭圆曲线加法的运算规则:
1)O是加法的单位元。这样有O = —O;对椭圆曲线上的任何一点P,有P + O = P。
2)点P的负元具有相同的x坐标和相反的y坐标点,即若P = ( x , y ),则—P = ( x , —y )。
3)要计算x坐标不相同的两点P和Q,则在P和Q间作一条直线并找出第三个交点R,显然存在有唯一的交点R,P + Q = —R。
4)计算具有相同x坐标的两个点P和—P,有P + ( —P ) = O。
5)为计算点Q的两倍,画出一条切线并找出另一交点S,则
Q + Q = 2Q = —S。
(2)Z p上的椭圆曲线:y2 mod p = ( x3 + ax + b )mod p
1)P + O = P。
2)若P = ( x p , y p ),则P + ( x p , —y p ) = O。点( x p , —y p )是P的负元,
记为—P。
3)若P = ( x p , y p ),Q = ( x Q , y Q ),且P ≠ Q则R = P + Q = ( x R , y R ) 由
下列规则确定:
x R = (λ2—x p—x Q )mod p
y R = (λ(x p—x R)—y p)mod p
其中,当P ≠ Q,λ= [(y Q—y p) / (x Q—x p)]mod p
当P = Q,λ= [(3 x p2 + a ) / (2 y p)]mod p
4)乘法定义为重复加
(3)GF(2m)上的椭圆曲线:y2 + xy = x3 + ax + b
ECC Diffie-Hellman 密钥交换
全局公开量:E q( a , b ) 参数为a,b和q的椭圆曲线,其中q是素数或形如2m 的整数
G 阶为n的椭圆曲线上的点,其中n是大整数
用户A的密钥产生:选择私有的n A ,n A < n
选择公开的P A,P A = n A * G
用户B的密钥产生:选择私有的n B,n B < n
选择公开的P B,P B = n B * G
用户A产生秘密钥:K = n A * P B
用户B产生秘密钥:K = n B * P A
椭圆曲线加/解密
加/解密系统也需要点G和椭圆群E q(a,b)这些参数
(1)每个用户A选择一个私钥n A ,并产生公钥P A = n A * G
(2)若A要将消息P m加密后发送给B,则A随机选择一个正整数K,并产生密文C m。该密文是一个点对C m =(KG,P m + K P B)
(3)此处A使用了B的公钥P B。B要对密文解密,则需用第二个点减去第一个点与B的私钥之积。
P m + K P B— n B(KG)= P m + K(n B G) —n B (KG) = P m
4.ElGamal数字签名方案(303)
ElGamal数字签名方案的基本元素是素数q和α,其中α是q的原根。
用户A产生公钥/私钥对
(1)生成随机整数X A,使得1< X A < q-1。
(2)计算Y A = αXA mod q。
(3)A的私钥是X A,A的公钥是{q, α, Y A}。
为了对消息M进行签名,用户A计算hash值m = H(M),0 <= m <= q-1的整数。
A产生数字签名
(1)选择随机整数K,使得满足1 <= K <= q-1以及gcd( K , q-1 ) = 1,即K与q-1互素
(2)计算S1 = αk mod q
(3)计算K-1 mod (q-1),即计算K模q-1的逆
(4)计算S2 = K-1 (m- X A S1) mod (q-1)
(5)签名包括(S1,S2)对
任意用户B验证签名
(1)计算V1 = αm mod q
(2)计算V2 = (Y A) S1(S1)S2mod q
如果V1= V2则签名合法。
正确性证明
假设等式成立,那么有:
αm mod q = (Y A) S1(S1)S2 mod q 假设V1= V2
αm mod q = αXAS1αKS2mod q 代入Y A和S1
αm- XAS1mod q = αKS2 mod q 等式左右移项
m- X A S1 = KS2 mod (q-1) 原根的性质
m- X A S1 = K K-1 (m-X A S1) mod (q-1) 代入S2
ElGamal数字签名方案的安全性
(1)ElGamal数字签名方案的安全性依赖于乘法群上的离散对数的困难性
(2)要求素数q必须足够大,且q—1至少包含一个大素数
(3)ElGamal签名算法对同一个消息M所产生的签名依赖于随机数k,随机数
k不能泄露,且每次都不相同。