密码学与网络安全最终版(3)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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不能泄露,且每次都不相同。

相关文档
最新文档