现代密码学期末复习总结(个人整理自存)

写在前面:

以下材料均为个人从互联网各处整理而成,不保证所含信息完全正确,考点基于个人学校答疑课和相关考试资料总结,不保证考点和您的实际考点相吻合。

仅供学习分享,如需转载还请私信告知。

word版文档与相关资源有偿提供,白嫖党绕道。

目录

写在前面:

第一章 引言

1.1攻击的理解

1.2古典密码算法密钥的理解

1.3频率分析法的理解、

1.4仿射算法(计算)

1.5各种密码技术理解(实现的功能)

第二章 流密码

2.1 jk触发器了解

2.2 lfsr线性反馈移位寄存器(计算)

第三章 分组密码体制

3.1 IDEA的了解

3.2 SM4的了解

3.4 差分分析了解

3.5 DES算法(计算)

第四章 公钥密码

4.1 rsa算法

4.2公钥密码对称密码比较

4.3 ECC的优点

4.4 SM2的了解

4.5 Diffie和Hellman提出公钥密码体制的理解

4.6 公钥密码体制的理解

4.7 ElGamal加密方案的理解

第五章 密钥分配与密钥管理

5.1 Diffie-Hellman密钥交换的理解

第六章 消息认证和哈希函数

6.1 生日攻击的理解(针对谁)

6.2 单向散列函数的理解(设计的方法、特点、基本要求)

6.3 哈希函数的理解(用来干嘛)

6.4 sha-1算法(计算)

第七章 数字签名和认证协议

7.1 数字签名的作用

7.2 数字签名的理解

7.3 椭圆曲线签名体制(计算)


第一章 引言

1.1攻击的理解

看课本p8

信息安全攻击的方式和含义

(1)被动攻击:是未经用户同意和认可的情况下将信息或数据文件泄露给系统攻击者,但不对数据信息进行任何修改。通常包括监听未受保护的通信信息、流量分析,破解弱加密的数据流、获得认证信息(如密码等)。

(2)主动攻击:主要涉及某些数据流的篡改或虚假数据流的产生。主动攻击常分为假冒(或伪造)、重放、篡改信息和拒绝服务四类。

(3)物理临近攻击:是指未授权人以更改、收集或拒绝访问为目的而物理接近网络系统或设备。这种接近可以是秘密进入或公开接近,或两种方式同时使用。

(4)内部人员攻击:可以是恶意的也可以非恶意的。恶意攻击是指内部人员有计划地窃听或损坏信息或拒绝其他授权用户的访问。

(5)软硬件配装攻击:是指在软硬件生产的工厂内或在产品分发过程中恶意修改硬件或软件。

1.2古典密码算法密钥的理解

课本p8

从字面上解释,密钥是秘密信息的钥匙。掌握了密钥就可以获得保密的信息。具体来说,密钥是一组信息编码,它参与密码的“运算”,并对密码的“运算”起特定的控制作用。密钥是密码技术中的重要组成部分。在密码系统中,密钥的生成、使用和管理至关重要。密钥通常是需要严格保护的,密钥的失控将导致密码系统失效。

1.3频率分析法的理解、

以英文字母为例,为了确定每个英文字母的出现频率,分析一篇或者数篇普通的英文文章,英文字母出现频率最高的是e,接下来是t,然后是a……,然后检查要破解的密文,也将每个字母出现的频率整理出来,假设密文中出现频率最高的字母是j,那么就可能是e的替身,如果密码文中出现频率次高的但是P,那么可能是t的替身,以此类推便就能解开加密信息的内容。这就是频率分析法。

将明文字母的出现频率与密文字母的频率相比较的过程

通过分析每个符号出现的频率而轻易地破译代换式密码

在每种语言中,冗长的文章中的字母表现出一种可对之进行分辨的频率。

e是英语中最常用的字母,其出现频率为八分之一

1.4仿射算法(计算)

课本p9例1.1

1.5各种密码技术理解(实现的功能)

对称密钥体制(共享密钥密码体制)-用相同的密钥进行加密和解密

基本思想:就是将加密的数据转化为比特数列,也就能对其进行加密。使用相同的密钥进行加密与解密。(注:密码学中应遵循公开设计的原则,即密钥体制的安全应依赖于对密钥的保存,而不应依赖于对算法的保存,只有在算法公开的条件下依然可以保证密钥的安全,才是可取的,这就是密码学著名的柯克霍夫原则。因为我这里只做简介,所以不介绍加密算法和基本流程。)

优点:加解密处理速度快。

缺点:1.密钥管理与分发复杂,代价高。2,不能提供抗抵赖服务。

公钥密码体制(非对称密码)-用公钥加密,用私钥解密

 基本思想:将对称密码的密钥分为加密密钥和解密密钥,用加密密钥控制加密,用解密密钥控制解密,而且有计算复杂性确保由加密密钥在计算上不能推出解密密钥。即使加密秘钥公开也不会暴露解密密钥。所以加密密钥是公开的,叫做公钥。只有解密密钥是保密的,叫做私钥。

缺点:密钥管理困难。

单项散列函数-获取消息的指纹

基本思想;它是一种单向密码体制,即一个从明文到密文不可逆映射,只有加密过程,没有解密过程。有一个输入和一个输出,其中输入的为消息,输出的为散列值。

目的:单向散列函数可以根据消息的内容计算出散列值,而散列值可以用来确认文件完整性。

性质:

压缩:输出的散列值是固定长度的。

易计算:根据给定的消息可以快速计算其散列值。

单向性:根据散列值求消息,在计算上是不可行的。

弱抗碰撞性:要找出和该条消息具有相同散列值的另外一条消息是非常困难的。

高灵敏性:当消息一个输入位发生变化时,输出位将有一半以上会发生变化,这一特性被称为雪崩效应。

应用:

检测软件是否被篡改。

基于口令的加密。

消息认证码。

数字签名。

伪随机数生成器。

一次性口令。

 消息认证-消息被正确传输了吗

消息认证是指验证所收到的消息确实来自真正的发送方,并且未被篡改的过程。

基本思想:把消息认证的功能看做两层。上层协议中将该函数作为原语使接收方可以验证消息的真实性。下层中有某种产生消息认证码的函数,消息认证码是用来一个用来认证消息的值。

如果很粗浅的认识那么消息认证码就是一种与密钥相关联的单向散列函数。

实际上产生认证码的函数类型通常有3类:

消息加密:整个消息的密文作为认证码。

消息认证码(MAC):它利用密钥对消息产生定长的值,并以该值作为认证码。

单向散列函数;它将任意长的消息映射为定长的散列值。并以该散列值作为认证码。

对付下列攻击:

伪装:欺诈源向网络中插入一条伪造的消息。

内容修改:对消息内容的修改,包括插入,删除,转换和修改。

顺序修改:对通信双方消息顺序的修改,包括插入,删除和重新排序。

计时修改:对消息的延时与发送。 

数字签名-消息到底是谁写的 

基本思想:数字签名是一种相当于现实世界中的盖章,签字的功能在计算机世界进行实现的技术。

为什么有了认证码还要有数字签名?

答:认证码可以识别消息是否被篡改或者发送者身份是否被伪装,也就是可以验证消息的完整性,还可以对消息进行认证。但是认证码具有局限性。在认证码中发送与接收二者共享一个密钥。对于第三方来讲,无法证明消息是否是发送者发送的,也有可能是接收者生成的。

于是,在数字签名中便有两种行为,

生成消息签名的行为

验证消息签名的行为

但是,签名密钥只能由 签名的人持有,而验证密钥则是任何需要验证签名的人都可以持有。

随机数-不可预测性的源泉

随机数生成器的基本思想:随机数可以通过硬件生成,也可以通过软件生成。

通过硬件生成的随机数列,是根据传感器收集的热量,声音的变化等事实上无法预测和重现的自然现象信息来生成的。像这样的设备就是随机数生成器。

可以生成随机数的软件则是伪随机数生成器,因为紧靠软件无法生成真随机数。

随机数具有的性质:

随机性:简单说是杂乱无章的性质。但是杂乱无章并不意味不会被看穿(线性同余法)。

不可预测性:指攻击者在知道过去生成的随机数列的前提下,依然无法预测出下一个生成出来的随机数。

 不可重现性:除了保存,没有办法重现该数列。

 这就是六种技术在应用中仍发挥着尤其重要的作用。

1,对称密码。2,公钥密码。3,单向散列函数。4,消息认证码。5,数字签名。6,伪随机数生成器。

第二章 流密码

2.1 jk触发器了解

课本p27

2.2 lfsr线性反馈移位寄存器(计算)

模型

图示

输出序列

周期计算

第三章 分组密码体制

3.1 IDEA的了解

Pdf 68页

IDEA加密算法全称为“International Data Encryption Algorithm”,中文名就是国际数据加密算法。它是由瑞士籍华人来学嘉与瑞士学者James Massey在1990年联合提出的。这种算法是在DES算法的基础上发展出来的,类似于三重DES,发展IDEA也是因为感到DES具有密钥太短等缺点。

解密过程与加密过程完全相同,只是子密钥的生成与模式有所不同。解密子密钥实际上是加密子密钥的逆。

IDEA使用128位密钥,是DES密钥长度的两倍,因此破译IDEA,即要进行2的128次方次加密运算,取得正确的密钥只要平均搜索一半的密钥空间,每微秒执行一次IDEA加密的计算机也要5 400 000 000 000 000 000 000 000年才能破解IDEA。

目前IDEA在工程中已有大量应用实例:

PGP(Pretty Good Privacy)就使用IDEA作为其分组加密算法;

安全套接字层SSL(Secure Socket Layer)也将IDEA包含在其加密算法库SSLRef中;

IDEA算法专利的所有者Ascom公司也推出了一系列基于IDEA算法的安全产品,包括:基于IDEA的Exchange安全插件、IDEA加密芯片、IDEA加密软件包等。

3.2 SM4的了解

Pdf 69页

SM4 算法是一种分组密码算法。其分组长度为 128bit,密钥长度也为 128bit。

加密算法与密钥扩展算法均采用 32 轮非线性迭代结构,以字(32 位)为单位进

行加密运算,每一次迭代运算均为一轮变换函数 F。SM4 算法加/解密算法的结构

相同,只是使用轮密钥相反,其中解密轮密钥是加密轮密钥的逆序

密钥扩展算法采用了非线性变换 T,这个措施将会使密钥扩展的安全性大大地加强了。在这方面上 SM4 和 AES 密码类似,而 DES 的子密钥生产算法并没有采用这种类似措施。

3.4 差分分析了解

Pdf 45页

差分分析是一种选择明文攻击,其基本思想是:通过分析特定明文差分对相对应密文差分影响来获得尽可能大的密钥。它可以用来攻击任何由迭代一个固定的轮函数的结构的密码以及很多分组密码(包括DES),它是由Biham和Shamir于1991年提出的选择明文攻击。

差分分析涉及带有某种特性的密文对和明文对比较,其中分析者寻找明文有某种差分的密文对。这些差分中有一些有较高的重现概率,差分分析用这些特征来计算可能密钥的概率,最后定为最可能的密钥。据说这种攻击很大程度上依赖于S-盒的结构,然而DES的S-盒被优化可以抗击差分分析。

另外,分组加密的轮数对差分分析的影响比较大。如果DES只是使用8轮的话,则在个人计算机上只需要几分钟就可以破译。但要是在完全的16轮情况下,差分分析仅比穷尽密钥搜索稍微有效。然而如果增加到17或者18轮,则差分分析和穷尽密钥搜索攻击花费同样的时间。如果再把轮数增加到19轮的话,则用穷尽搜索攻击比差分分析更容易了

尽管差分分析是理论可破的,但因为需要花费大量的时间和数据支持,所以并不实用。

3.5 DES算法(计算)

Pdf p39

1、输入密文,填充至64位二进制数(后面一串0)

2、初始置换,查表填值

3.十六轮迭代,每轮过程如下

先将64位分为左32位右32位

  • 扩展变换:密文的右半从32位=>48位

  • 轮密钥产生器产生每轮子密钥,进行异或运算

 

 

64位密钥置换选择1后变为56位

分为左右两半,循环左移对应位数后合并

进行置换选择2并输出为48位子密钥

通过以上方式得到每轮的子密钥和48位的扩展变换后的密文进行异或运算

  • 选择压缩变换

将得到的48位二进制数拆分为六位一组,第一位和第六位作为第几行,中间四位作为第几列,进行查表,将查到的十进制数化为四位二进制数,连接起来就形成了32位的二进制数,完成选择压缩变换

  • 异或运算

将上面得到的32位二进制数与左半部分Ln进行按位异或,就可得到Rn+1

4.完成了上述动作16次后将左右的32位数进行互换

5.进行逆初始置换,即可得到目标的64位密文

第四章 公钥密码

4.1 rsa算法

第一步,随机选择两个不相等的质数p和q。

爱丽丝选择了61和53。(实际应用中,这两个质数越大,就越难破解。)

第二步,计算p和q的乘积n。

爱丽丝就把61和53相乘。

n = 61×53 = 3233

n的长度就是密钥长度。3233写成二进制是110010100001,一共有12位,所以这个密钥就是12位。实际应用中,RSA密钥一般是1024位,重要场合则为2048位。

第三步,计算n的欧拉函数φ(n)。

根据公式:

φ(n) = (p-1)(q-1)

爱丽丝算出φ(3233)等于60×52,即3120。

第四步,随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质。

爱丽丝就在1到3120之间,随机选择了17。(实际应用中,常常选择65537。)

第五步,计算e对于φ(n)的模反元素d。

所谓"模反元素"就是指有一个整数d,可以使得ed被φ(n)除的余数为1。

ed ≡ 1 (mod φ(n))

这个式子等价于

ed - 1 = kφ(n)

于是,找到模反元素d,实质上就是对下面这个二元一次方程求解。

ex + φ(n)y = 1

已知 e=17, φ(n)=3120,

17x + 3120y = 1

这个方程可以用"扩展欧几里得算法"求解,此处省略具体过程。总之,爱丽丝算出一组整数解为 (x,y)=(2753,-15),即 d=2753。

至此所有计算完成。

第六步,将n和e封装成公钥,n和d封装成私钥。

在爱丽丝的例子中,n=3233,e=17,d=2753,所以公钥就是 (3233,17),私钥就是(3233, 2753)。

实际应用中,公钥和私钥的数据都采用ASN.1格式表达(实例)。

八、加密和解密

有了公钥和密钥,就能进行加密和解密了。

(1)加密要用公钥 (n,e)

假设鲍勃要向爱丽丝发送加密信息m,他就要用爱丽丝的公钥 (n,e) 对m进行加密。这里需要注意,m必须是整数(字符串可以取ascii值或unicode值),且m必须小于n。

所谓"加密",就是算出下式的c:

me ≡ c (mod n)

爱丽丝的公钥是 (3233, 17),鲍勃的m假设是65,那么可以算出下面的等式:

6517 ≡ 2790 (mod 3233)

于是,c等于2790,鲍勃就把2790发给了爱丽丝。

(2)解密要用私钥(n,d)

爱丽丝拿到鲍勃发来的2790以后,就用自己的私钥(3233, 2753) 进行解密。可以证明,下面的等式一定成立:

cd ≡ m (mod n)

也就是说,c的d次方除以n的余数为m。现在,c等于2790,私钥是(3233, 2753),那么,爱丽丝算出

27902753 ≡ 65 (mod 3233)

因此,爱丽丝知道了鲍勃加密前的原文就是65。

至此,"加密--解密"的整个过程全部完成。

我们可以看到,如果不知道d,就没有办法从c求出m。而前面已经说过,要知道d就必须分解n,这是极难做到的,所以RSA算法保证了通信安全。

你可能会问,公钥(n,e) 只能加密小于n的整数m,那么如果要加密大于n的整数,该怎么办?有两种解决方法:一种是把长信息分割成若干段短消息,每段分别加密;另一种是先选择一种"对称性加密算法"(比如DES),用这种算法的密钥加密信息,再用RSA公钥加密DES密钥。

九、私钥解密的证明

最后,我们来证明,为什么用私钥解密,一定可以正确地得到m。也就是证明下面这个式子:

cd ≡ m (mod n)

因为,根据加密规则

  me ≡ c (mod n)

于是,c可以写成下面的形式:

c = me - kn

将c代入要我们要证明的那个解密规则:

(me - kn)d ≡ m (mod n)

它等同于求证

med ≡ m (mod n)

由于

ed ≡ 1 (mod φ(n))

所以

ed = hφ(n)+1

将ed代入:

mhφ(n)+1 ≡ m (mod n)

接下来,分成两种情况证明上面这个式子。

(1)m与n互质。

根据欧拉定理,此时

mφ(n) ≡ 1 (mod n)

得到

(mφ(n))h × m ≡ m (mod n)

原式得到证明。

(2)m与n不是互质关系。

此时,由于n等于质数p和q的乘积,所以m必然等于kp或kq。

以 m = kp为例,考虑到这时k与q必然互质,则根据欧拉定理,下面的式子成立:

(kp)q-1 ≡ 1 (mod q)

进一步得到

[(kp)q-1]h(p-1) × kp ≡ kp (mod q)

(kp)ed ≡ kp (mod q)

将它改写成下面的等式

(kp)ed = tq + kp

这时t必然能被p整除,即 t=t'p

(kp)ed = t'pq + kp

因为 m=kp,n=pq,所以

med ≡ m (mod n)

原式得到证明

4.2公钥密码对称密码比较

对称密码

运行条件:

1、加密和解密使用相同的密钥和相同的算法;

2、通信之前,发送方和接收方必须协商好共享密钥。

安全条件:

1、密钥必须保密;

2、如果不掌握密钥,要想解密报文是不可能或者至少是不现实的;

3、知道所用的算法加上密文的样本必须不足以确定密钥。

运算速度:运算速度快,适合加密大量数据。

公钥密码

运行条件:

1、加密和解密使用不同的算法和密钥,每个用户有一对密钥,加密时用公钥,解密时用私钥;

2、发送方和接收方各自拥有一对相互匹配的密钥中的一个,无需事先进行密钥协商。

安全条件:

1、两个密钥中的一个必须保密;

2、如果不掌握私钥,要想解密密文是不可能或者至少是计算上不可行的;

3、知道所用的算法、公钥以及密文必须不足以确定对应的私钥。

运算速度:运算速度慢,适合加密少量数据。

在对称密钥体制中,它的加密密钥与解密密钥的密码体制是相同的,且收发双方必须共享密钥,对称密码的密钥是保密的,没有密钥,解密就不可行,知道算法和若干密文不足以确定密钥。

公钥密码体制中,它使用不同的加密密钥和解密密钥,且加密密钥是向公众公开的,而解密密钥是需要保密的,发送方拥有加密或者解密密钥,而接收方拥有另一个密钥。两个密钥之一也是保密的,无解密密钥,解密不可行,知道算法和其中一个密钥以及若干密文不能确定另一个密钥。

优点:

对称密码技术的优点在于效率高,算法简单,系统开销小,适合加密大量数据。

对称密钥算法具有加密处理简单,加解密速度快,密钥较短,发展历史悠久等优点。

缺点:对称密码技术进行安全通信前需要以安全方式进行密钥交换,且它的规模复杂。

公钥密钥算法具有加解密速度慢的特点,密钥尺寸大,发展历史较短等特点。

4.3 ECC的优点

ECC的安全性基于椭圆曲线点群上离散对数问题ECDLP的难解性。而解ECDLP最有效的算法则要依赖指数时间的算法。如今最威胁椭圆曲线密码体制的方法是Pollard's rho和Pohlig Hellman。求解离散对数是极其困难的,而椭圆曲线离散对数问题比有限域上的更难,这意味着ECC可以更小的密钥长度来产生与其他公钥密码算法一样等级的安全性,为了达到对称密钥128位的安全水平,美国国家标准技术研究所推荐使用3072位的RSA密钥。而对ECC来说,256位就能达到相同的安全水平。ECC还有以下优点:

①计算量小,处理速度快。虽RSA能选较小公钥来加快公钥的处理速度,即提加大加密与签名验证的速度,让它在速度上与ECC可比,但在私钥速度上ECC比RSA、DSA快得多的多,因此ECC总体速度比RSA、DSA要快很多。

②存储空间占用少。和RSA、DSA比较,ECC的密钥大小与系统参数要小很多,也就是说它所占的存储空间要小得多。

③带宽要求低。对长消息进行加密与解密时,ECC与DSA/RSA密码算法有一样的带宽要求,但运用在短消息的时候,ECC的带宽要求却是低很多。而公钥密码算法多用在短消息,如数字签名与密钥交换,带宽要求低促使ECC在无线网络范围有更普遍的应用前景。

4.4 SM2的了解

SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法

SM2算法和RSA算法都是公钥密码算法,SM2算法是一种更先进安全的算法,在我们国家商用密码体系中被用来替换RSA算法。

随着密码技术和计算机技术的发展,目前常用的1024位RSA算法面临严重的安全威胁,我们国家密码管理部门经过研究,决定采用SM2椭圆曲线算法替换RSA算法。

SM2性能更优更安全:密码复杂度高、处理速度快、机器性能消耗更小 [1]  [3]  。

SM2

RSA

算法结构

基本椭圆曲线(ECC)

基于特殊的可逆模幂运算

计算复杂度

完全指数级

亚指数级

存储空间

192-256bit

2048-4096bit

秘钥生成速度

较RSA算法快百倍以上

解密加密速度

较快

一般

国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。

SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。

SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。

旧标准的加密排序C1C2C3 新标准 C1C3C2,C1为65字节第1字节为压缩标识,这里固定为0x04,后面64字节为xy分量各32字节。C3为32字节。C2长度与原文一致。

SM3 消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。

SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。

4.5 Diffie和Hellman提出公钥密码体制的理解

公开密钥算法是在1976年由当时在美国斯坦福大学的迪菲(Diffie)和赫尔曼(Hellman)两人首先发明的(论文"New Direction in Cryptography")。但目前最流行的RSA是1977年由MIT教授Ronald L.Rivest,Adi Shamir和Leonard M.Adleman共同开发的,分别取自三名数学家的名字的第一个字母来构成的。

1976年提出的公开密钥密码体制思想不同于传统的对称密钥密码体制,它要求密钥成对出现,一个为加密密钥(e),另一个为解密密钥(d),且不可能从其中一个推导出另一个。自1976年以来,已经提出了多种公开密钥密码算法,其中许多是不安全的, 一些认为是安全的算法又有许多是不实用的,它们要么是密钥太大,要么密文扩展十分严重。多数密码算法的安全基础是基于一些数学难题, 这些难题专家们认为在短期内不可能得到解决。因为一些问题(如因子分解问题)至今已有数千年的历史了。

公钥加密算法也称非对称密钥算法,用两对密钥:一个公共密钥和一个专用密钥。用户要保障专用密钥的安全;公共密钥则可以发布出去。公共密钥与专用密钥是有紧密关系的,用公共密钥加密的信息只能用专用密钥解密,反之亦然。由于公钥算法不需要联机密钥服务器,密钥分配协议简单,所以极大简化了密钥管理。除加密功能外,公钥系统还可以提供数字签名。

4.6 公钥密码体制的理解

对称密朝密码体制

对称密朝密码体制又称单密钥密码体制,是指加密密钥和解密密钥相同的密码体制。这种密码体制的保密性主要取决于对密钥的保密,其加密和解密算法是公开的。

要保证对称密钥密码体制的安全性,其加密算法必须足够复杂,同时其密钥必须保密并且有足够大的密钥空间,从而使得攻击者在截取密文和知道加密算法的情况下,仍然无法还原出明文。最有影响的对称密钥密码体制是1977年美国国家标准局须布的数据加密标准DES。

对称密朝密码体制的特点:

加解密速度快

安全强度高

密钥难管理和传送,不适于在网络中单独使用

公钥密码体制

公钥密码体制是不对称密钥,优点是运算速度快,密钥产生容易。

(1)保密强度高

其理论基础是基于数论中大素数因数分解的难度问题,当n大于2048位时,目前的算法无法在有效时间内破译RSA。

(2)密钥分配及管理简便

在RSA体制中,加密密钥和解密密钥互异、分离。加密密钥可以公开,解密密钥则由用户秘密保存,秘密保存的密钥量减少,这就使得密钥分配更加方便,便于密钥管理。

(3)数字签名易实现

在RSA体制中,只有接收方利用自己的解密密钥对明文进行签名,其他任何人可利用公开密钥对签名文进行验证,但无法伪造。

4.7 ElGamal加密方案的理解

在密码学中,ElGamal加密算法是一个基于迪菲-赫尔曼密钥交换的非对称加密算法,它在1985年由塔希尔·盖莫尔提出。

EIGamal公开密钥密码体制是基于有限域中离散对数问题的难解性。它所根据的原理是:求解离散对数是困难的,而其逆运算可以应用平方乘的方法有效的计算出来。在相应的群 G中,指数函数是单向函数

ElGamal加密算法由三部分组成:密钥生成、加密和解密 [1]  。

 

实际使用

在使用EIGamal加密算法时,模运算是实现公钥密码加解密运算速度的关键,如何提出并实现一个有效的大整数幂模运算算法是实现公钥密码体制的关键,所有使用者可以选取使用同样的素数 p 和生成元,在这种情况下,p不必作为公钥的一部分而发布,这可使公钥的长度小一些。使用固定元素还有另外的优点:可以通过预计算来加快取幂运算,但使用共同系统参数一个潜在的缺点是必须保证模 p足够大 [3]  。

EIGamal公钥密码是目前国际公认的较理想公钥密码体制,是目前网络上进行保密通信和数字签名的较为有效的算法。ElGamal公钥密码体制在网络安全加密技术中应用得到密码学界的广泛关注 [3]  。

效率分析

ElGamal公钥密码算法的加密效率相对于其它公钥密码来说是比较慢的,下面对其进行分析。

(1)加密过程需要两次模指数运算;通过选取具有某种附加结构的随机指数可加速指数运算,在计算过程中,可以使用一些幂算的乘方等一些算法,也可以对固定的代数结构,制定相应的幂运算表,使得计算起来比较简单,加密、解密的速度比较快,从而使信息传递的速度加快 ;

(2)ElGamal加密算法的一个缺点是传递密文的长度是明文长度的二倍,使得传递密文的过程中,通信的信息量增大。同时ElGamal加密算法一个最大的特点是在加密过程中进行随机方式的加密方法,这种方法有着很好的抗攻击性,可以用以下一个或多个方法随机增加加密过程的密码安全性。

1.增加明文消息空间的长度,即增加所选代数结构中的元素个数;

2.通过一个到多个的明文到密文的映射来减小选择明文攻击的有效性;

3.通过统计先验概率分布的方法来减小统计攻击的有效性。

安全分析

关于EIGamal加密的安全性分析,通常都从两个方面考虑加密体制的安全性,安全目标和攻击者的类型。

加密的安全目标一般看下面两个:不可区分性(IND):敌手选择两个明文,加密者随机选取一个,返回其密文,则敌手不能以明显大于1/2的概率正确猜测选择的是哪一个明文。语义安全性(SEM):敌手在知道密文的条件下能有效计算出的有关明文的信息量并不比他不知道密文时的多,除了明文的长度。

密码体制的安全性是主要是根据攻击来定义的,攻击可分为被动攻击和主动攻击,其中被动攻击,敌手只是监视通信信道,阻止信息传输在通信信道上传输,被攻击者只能威胁数据的机密性;主动攻击,敌方企图删除、增加或以其他方式改变信道上的传输内容,它会威胁数据的完整性、认证性及机密性,主动攻击的方法通常分为以下几种:

(1)选择明文攻击(CPA):攻击者选择明文消息并得到加密的服务,产生相应的密文,攻击者的任务是利用所得到的明文.密文对来降低目标密码体制的安全性;

(2)选择密文攻击(CCA)攻击者选择密文消息并得到解密服务,产生相应的明文,攻击者的任务是利用所得到的明。密文对来降低目标密码体制的安全性,在解密服务停止后,即在得到目标密文之后,解密服务立即停止,如果攻击者能够从“目标密文"中得到保密明文的信息,则就说攻击是成功的;否则攻击者就是失败的。

ElGamal加密体制具有选择明文攻击下的不可区分性(IND-CPA),当且仅当计算Diffie-Hellman问题是困难的

1. 若B的公钥YB = 3, A选择的随机整数k=2,则M=30的密文是多少?

2. 若A选择的k值是使得M=30的密文为C=(59,C2),则整数C2的值是多少?

1. B的公钥YB = 3,q=71,本原根a=7, A选择随机整数k=2;

则A的加密密钥

K=(YB)^k mod q=3^2 mod 71= 9;

M加密的明文对为(C1,C2),其中

C1=a^k mod q= 7^2 mod 71= 49,

C2=KM mod q = 9 x30 mod 71 = 57

所以M=30的加密后密文为(49,57)

2. A选择的k值是使得M=30的密文为C=(59,C2)

即C1= a^k mod q= 7^k mod q= 59 ,

k= dlog7,71(59) = 4;

加密密钥K= (YB)^k mod q= 3^4 mod 71= 81 mod 71=10 ;

C2 = KM mod q = 10 x 30 mod 71 = 16

第五章 密钥分配与密钥管理

5.1 Diffie-Hellman密钥交换的理解

Diffie-Hellman:一种确保共享KEY安全穿越不安全网络的方法,它是OAKLEY的一个组成部分。Whitefield与Martin Hellman在1976年提出了一个奇妙的密钥交换协议,称为Diffie-Hellman密钥交换协议/算法(Diffie-Hellman Key Exchange/Agreement Algorithm).这个机制的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥。然后可以用这个密钥进行加密和解密。但是注意,这个密钥交换协议/算法只能用于密钥的交换,而不能进行消息的加密和解密。双方确定要用的密钥后,要使用其他对称密钥操作加密算法实现加密和解密消息。

Diffie-Hellman密钥交换是一种安全交换密钥的方法,可以让双方在不泄漏密钥的情况下,德出一个密钥。以Whitfield Diffie和Martin Hellman的名字共同命名。

Diffie-Hellman密钥交换是Ralph Merkle构想的第一个公钥协议之一,由 Diffie 和 Hellman 于 1976 年出版,这是最早提出私钥和相应公钥概念的公开著作。可以让双方在不泄漏密钥的情况下协商出一个密钥来

传统上,两方之间的安全加密通信要求他们首先通过某种安全的物理方式交换密钥,例如由受信任的信使传输纸质密钥列表。

Diffie-Hellman密钥交换方法允许彼此双方在不安全的通道上共同建立共享密钥。

总结来说就是Diffie-Hellman密钥交换方法在发送和接收双方见建立了一个“秘密通信方法”,目的是为了能够在公共平台发送秘密数据

建立方法

(尽管Diffie-Hellman密钥交换协议/算法使用了数学原理,但是很容易理解。)Diffie-Hellman 由Whitfield Diffie和Martin Hellman在1976年公布的一种密钥一致性算法。Diffie-Hellman是一种建立密钥的方法,而不是加密方法。然而,它所产生的密钥可用于加密、进一步的密钥管理或任何其它的加密方式。Diffie-Hellman密钥交换算法及其优化首次发表的公开密钥算法出现在Diffie和Hellman的论文中,这篇影响深远的论文奠定了公开密钥密码编码学。

定义

由于该算法本身限于密钥交换的用途,被许多商用产品用作密钥交换技术,因此该算法通常称之为Diffie-Hellman密钥交换(简写为DH算法,基于DH算法的密钥交换通常也被称为DH交换).这种密钥交换技术的目的在于使得两个用户安全地交换一个秘密密钥以便用于以后的报文加密. Diffie-Hellman密钥交换算法的有效性依赖于计算离散对数的难度.简言之,可以如下定义离散对数:首先定义一个素数p的原根,为其各次幂产生从1 到p-1的所有整数根,也就是说,如果a是素数p的一个原根,那么数值 a mod p,a2 mod p,...,ap-1 mod p 是各不相同的整数,并且以某种排列方式组成了从1到p-1的所有整数. 对于一个整数b和素数p的一个原根a,可以找到惟一的指数i,使得 b = a^i mod p 其中0 ≤ i ≤ (p-1) 指数i称为b的以a为基数的模p的离散对数或者指数.该值被记为inda,p(b).

算法描述

基于原根的定义及性质,可以定义Diffie-Hellman密钥交换算法.该算法描述如下:

1,有两个全局公开的参数,一个素数q和一个整数a,a是q的一个原根.

2,假设用户A和B希望交换一个密钥,用户A选择一个作为私有密钥的随机数XA(XA<q),并计算公开密钥YA=a^XA mod q。A对XA的值保密存放而使YA能被B公开获得。类似地,用户B选择一个私有的随机数XB<q,并计算公开密钥YB=a^XB mod q。B对XB的值保密存放而使YB能被A公开获得.

3,用户A产生共享秘密密钥的计算方式是K = (YB)^XA mod q.同样,用户B产生共享秘密密钥的计算是K = (YA)^XB mod q.这两个计算产生相同的结果: K = (YB)^XA mod q = (a^XB mod q)^XA mod q = (a^XB)^XA mod q (根据取模运算规则得到) = a^(XBXA) mod q = (a^XA)^XB mod q = (a^XA mod q)^XB mod q = (YA)^XB mod q 因此相当于双方已经交换了一个相同的秘密密钥.

4,因为XA和XB是保密的,一个敌对方可以利用的参数只有q,a,YA和YB.因而敌对方被迫取离散对数来确定密钥.例如,要获取用户B的秘密密钥,敌对方必须先计算 XB = inda,q(YB) 然后再使用用户B采用的同样方法计算其秘密密钥K. Diffie-Hellman密钥交换算法的安全性依赖于这样一个事实:虽然计算以一个素数为模的指数相对容易,但计算离散对数却很困难.对于大的素数,计算出离散对数几乎是不可能的. 下面给出例子.密钥交换基于素数q = 97和97的一个原根a = 5.A和B分别选择私有密钥XA = 36和XB = 58.每人计算其公开密钥 YA = 5^36 = 50 mod 97 YB = 5^58 = 44 mod 97 在他们相互获取了公开密钥之后,各自通过计算得到双方共享的秘密密钥如下: K = (YB)^XA mod 97 = 44^36 = 75 mod 97 K = (YA)^XB mod 97 = 50^58 = 75 mod 97 从|50,44|出发,攻击者要计算出75很不容易.

协议

假设用户A希望与用户B建立一个连接,并用一个共享的秘密密钥加密在该连接上传输的报文.用户A产生一个一次性的私有密钥XA,并计算出公开密钥YA并将其发送给用户B.用户B产生一个私有密钥XB,计算出公开密钥YB并将它发送给用户A作为响应.必要的公开数值q和a都需要提前知道.另一种方法是用户A选择q和a的值,并将这些数值包含在第一个报文中. 下面再举一个使用Diffie-Hellman算法的例子.假设有一组用户(例如一个局域网上的所有用户),每个人都产生一个长期的私有密钥XA,并计算一个公开密钥YA.这些公开密钥数值,连同全局公开数值q和a都存储在某个中央目录中.在任何时刻,用户B都可以访问用户A 的公开数值,计算一个秘密密钥,并使用这个密钥发送一个加密报文给A.如果中央目录是可信任的,那么这种形式的通信就提供了保密性和一定程度的鉴别功能.因为只有A和B可以确定这个密钥,其它用户都无法解读报文(保密性).接收方A知道只有用户B才能使用此密钥生成这个报文(鉴别). Diffie-Hellman算法具有两个吸引力的特征: 仅当需要时才生成密钥,减小了将密钥存储很长一段时间而致使遭受攻击的机会. 除对全局参数的约定外,密钥交换不需要事先存在的基础结构.

缺点

然而,该技术也存在许多不足: 没有提供双方身份的任何信息. 它是计算密集性的,因此容易遭受阻塞性攻击,即对手请求大量的密钥.受攻击者花费了相对多的计算资源来求解无用的幂系数而不是在做真正的工作. 没办法防止重演攻击. 容易遭受中间人的攻击.第三方C在和A通信时扮演B;和B通信时扮演A.A和B都与C协商了一个密钥,然后C就可以监听和传递通信量.中间人的攻击按如下进行: B在给A的报文中发送他的公开密钥. C截获并解析该报文.C将B的公开密钥保存下来并给A发送报文,该报文具有B的用户ID但使用C的公开密钥YC,仍按照好像是来自B的样子被发送出去.A收到C的报文后,将YC和B的用户ID存储在一块.类似地,C使用YC向B发送好像来自A的报文. B基于私有密钥XB和YC计算秘密密钥K1.A基于私有密钥XA和YC计算秘密密钥K2.C使用私有密钥XC和YB计算K1,并使用XC和YA计算K2. 从现在开始,C就可以转发A发给B的报文或转发B发给A的报文,在途中根据需要修改它们的密文.使得A和B都不知道他们在和C共享通信.

算法

Oakley算法是对Diffie-Hellman密钥交换算法的优化,它保留了后者的优点,同时克服了其弱点. Oakley算法具有五个重要特征: 它采用称为cookie程序的机制来对抗阻塞攻击. 它使得双方能够协商一个全局参数集合. 它使用了现时来保证抵抗重演攻击. 它能够交换Diffie-Hellman公开密钥. 它对Diffie-Hellman交换进行鉴别以对抗中间人的攻击.

鉴别方法

Oakley可以使用三个不同的鉴别方法:

数字签名

通过签署一个相互可以获得的散列代码来对交换进行鉴别;每一方都使用自己的私钥对散列代码加密.散列代码是在一些重要参数上生成的,如用户ID和现时.

公开密钥加密

通过使用发送者的私钥对诸如ID和现时等参数进行加密来鉴别交换.

对称密钥加密

通过使用某种共享密钥对交换参数进行对称加密,实现交换的鉴别.

第六章 消息认证和哈希函数

6.1 生日攻击的理解(针对谁)

生日攻击其实是一个概率论的问题,也就是说一个看起来很难发生的事情,事实上它发生的概率却很大。这种主观上和事实上的概率差距,让随机攻击成功的几率变的更高,这样的攻击就叫做生日攻击。

生日攻击一般应用在数字签名中。一般来说为了对机密消息进行签名,因为加密的限制,如果消息很大的情况下,不可能对所有的消息进行签名,通常会对消息计算hash值,然后对这个hash值进行签名。

比如有人想做一个欺诈性的合同,那么会在原合同的基础上进行修改,不断的进行尝试,从而找到一个修改后的合同,让合同和之前合同的hash是一样的,从而导致两者的签名也是一样的。

怎么抵御这种攻击呢?根据我们生日攻击的公式,当然是将签名方案使用的哈希函数的输出长度选择得足够大,以使生日攻击在计算上变得不可行。

6.2 单向散列函数的理解(设计的方法、特点、基本要求)

设计方法

单向散列函数的原理较简单,同时因它也不要求可逆,因此,设计自由度一般比较大,基本的设计方法有三种。

1.使用公开密钥密码算法

一般能以CBC模式用公开密钥算法加密消息,并得到最后一个密文分组当做散列值。

若丢掉用户的保密密钥,此时的散列值会不能解密,即它达到了散列函数的单向性要求。

尽管在恰当的假定下,可表明此类散列函数是安全的,不过通常情况下其计算速度特别慢。此类散列函数不实用。

2.使用对称分组算法

用对称分组密码算法的CBC或CFB模式得到散列值。它用个不变的密钥加密消息,再让最后的密文分组作散列值进行输出。这时,若分组算法是安全的,则单向函数也将是安全的。

另外,还可将消息当做密钥,而把上一个分组拿到的散列值作分组算法的输入,用类似CBC模式的方法加密,最后得到的密文分组作散列值输出。设消息一共含N个分组m1,m2,…,mN,用h,代表到第i个分组时的散列值,h代表最后的散列输出。则可表述如下。

h0=IV

hi=Emi(hi-1)

h=hN

其中,IV是初始向量。

这类设计已经提出来一些方案,如Quisquater-Girault算法、MDC2与MDC4、GOST散列函数等。

3.直接设计单向散列函数

此类单向散列函数不基于随意哪个假定与密码体制,它由直接构造复杂的非线性关系实现单向性要求。这类算法典型的有:MD2、MD4、MD5、SHA-1、PIPE-MD和HAVAL等。现今,直接设计单向散列函数的措施被普遍关注,是较流行的一种设计方法。

特点

1.根据任意长度的消息计算出固定长度的散列值:

首先,单项散列函数的输入必须是任意长度的消息。其次,无论输入多长的消息,单项散列函数必须能够生成长度较短且固定的散列值。

2.能够快速计算出散列值

3.消息不同散列值也不同:

为了能够确认完整性,消息中哪怕只有1比特的改变,也必须有很高的概率产生不同的散列值

4.单向性:

无法通过散列值反算出消息

一,概念

  散列(HASH)函数H也称哈希函数。是典型的多到一的函数,其输入为一可变长x(可以足够的长),输出一固定长的串h(一般为128位、160位,比输入的串短),该串h被称为输入x的Hash值。

  二,散列函数是安全的是指它具有

  一致性:相同的输入产生相同的输出。

  随机性:消息摘要外观是随机的,以防被猜出源消息。

  唯一性:几乎不可能找到两个消息产生相同的消息摘要。

  单向性:即如果给出输出,则很难确定出输入消息。

  三,Hash函数H一般满足以下几个基本要求:

  (1)输入x可以为任意长度;输出数据串长度固定;

  (2)正向计算容易,即给定任何x,容易算出H(x);反向计算困难,即给出一Hash值h,很难找出一特定输入x,使h=H(x);

  (3)抗冲突性(抗碰撞性),包括两个含义,一是给出一消息x,找出一消息y使H(x)=H(y)是计算上不可行的(弱抗冲突),二是找出任意两条消息x、y,使H(x)=H(y)也是计算上不可行的(强抗冲突)。

  四,对Hash函数有两种穷举攻击

  一是给定消息的Hash函数H(x),破译者逐个生成其他文件y,以使H(x)=H(y)。二是攻击者寻找两个随机的消息:x,y,并使H(x)=H(y)。这就是所谓的冲突攻击。穷举攻击方法没有利用Hash函数的结构和任何代数弱性质,它只依赖于Hash值的长度。

6.3 哈希函数的理解(用来干嘛)

1、检测软件是否被篡改,通过散列值,用户可以确认自己所下载到的文件与软件作者所提供的文件是否一致.

2、单向散列函数也被用于基于口令的加密(Password Based Encryption,PBE)。
PBE 的原理是将口令和盐( salt,通过伪随机数生成器产生的随机值)混合后计算其散列值,然后将这个散列值用作加密的密钥。通过这样的方法能够防御针对口令的字典攻击

3、使用单向散列函数可以构造消息认证码。
消息认证码是将“发送者和接收者之间的共享密钥”和“消息”进行混合后计算出的散列值。使用消息认证码可以检测并防止通信过程中的错误、篡改以及伪装。

4、在进行数字签名时也会使用单向散列函数。
数字签名是现实社会中的签名( sign )和勤奋的小蝴蝶这样的行为在数字世界中的实现。数字签名的处理过程非常耗时,因此一般不会对整个消息内容直接施加数字签名,而是先通过单向散列函数计算出消息的散列值,然后再对这个散列值施加数字签名。

5、伪随机数生成器
使用单向散列函数可以构造伪随机数生成器。
密码技术中所使用的随机数需要具备“事实上不可能根据过去的随机数列预测未来的随机数列”这样的性质。为了保证不可预测性,可以利用单向散列函数的单向性。

6、使用单向散列函数可以构造一次性口令( one-time password )。一次性口令经常被用于服务器对客户端的合法性认证。在这种方式中,通过使用单向散列函数可以保证口令只在通信链路上传送一次( one-time ),因此即使窃听者窃取了口令,也无法使用。

(六)单向散列函数的具体例子

MD4、MD5
SHA-1、SHA-256、SHA-384、SHA-512
RIPEMD-160
AHS ( Advanced Hash Standard )与SHA-3

(七)单向散列函数无法解决的问题

使用单向散列函数可以实现完整性的检查,但有些情况下即便能够检查完整性也是没有意义的。例如,假设主动攻击者Mallory伪装成敏感的金鱼,向hmdse同时发送了消息和散列值。这时 hmdse能够通过单向散列函数检查消息的完整性,但是这只是对Mallory 发送的消息进行检查,而无法检查出发送者的身份是否被 Mallory进行了伪装。也就是说,单向散列函数能够辨别出“篡改”,但无法辨别出“伪装”。当我们不仅需要确认文件的完整性,同时还需要确认这个文件是否真的属于敏感的金鱼时,仅靠完整性检查是不够的,我们还需要进行认证。
用于认证的技术包括消息验证码和数字签名。消息认证码能够向通信对象保证消息没有被篡改,而数字签名不仅能够向通信对象保证消息没有被篡改,还能够向所有第三方做出这样的保证。认证需要使用密钥,也就是通过对消息附加敏感的金鱼的密钥只有敏感的金鱼才知道的秘密信息来确保消息真的属于敏感的金鱼。

6.4 sha-1算法(计算)

P171

SHA-1(Secure Hash Algorithm 1)是一种散列算法,旨在将任意长度的输入转换为固定长度的输出,称为散列值。

举个例子,假设你有一个文本文件,其中包含了这段文本:"The quick brown fox jumps over the lazy dog."

你可以使用SHA-1算法对这段文本进行散列,得到一个160位的十六进制数字,例如:

2fd4e1c67a2d28fced849ee1bb76e7391b93eb12

这个散列值是唯一的,并且对于输入的文本是不可逆的。这意味着你无法通过散列值来推断出输入的文本是什么,但是如果输入的文本发生了变化,例如把"lazy"改成"sleepy",那么生成的散列值也会发生变化。

SHA-1算法通常用于验证文件完整性,例如在下载一个文件时,可以使用SHA-1算法对文件进行散列,然后与原始文件的散列值进行比较。如果两者相同,则说明文件没有损坏。

首先,将输入的文本进行预处理,使其满足一些特定的格式要求。这包括填充字节、追加信息和计算长度。

然后,将预处理后的文本分成若干个512位块。每个块都会被转换为一个32位整数序列。

接下来,对每个512bit的块执行以下步骤:

将16个32位整数序列扩展为80个32位整数。

四个异或完循环左移一位

初始化五个32位的寄存器,分别为A、B、C、D和E。

对每个扩展后的整数执行一轮迭代运算。在每轮迭代运算中,会将A、B、C、D和E的值进行更新。(4轮处理,80次迭代)

将五个寄存器的值相连起来,得到当前块的散列值,作为下一个512位的块的abcde初始值。

最后得到最后一个512位的块的散列值就是所要的160位摘要。

第七章 数字签名和认证协议

7.1 数字签名的作用

1.数字签名可以实现防重放攻击。

重放攻击(Replay Attacks),是计算机世界黑客常用的攻击方式,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。这种攻击会不断恶意或欺诈性地重复一个有效的数据传输。攻击者利用网络监听或者其他方式盗取认证凭据,之后再把它重新发给认证服务器。在数字签名中,如果采用了对签名报文加盖时戳等或添加流水号等技术,就可以有效防止重放攻击。

2.数字签名可以防止数据被伪造。

其他人不能伪造对消息的签名,因为私有密钥只有签名者自己知道,所以其他人不可以构造出正确的签名结果数据。

3.数字签名可以防止数据被篡改。

数字签名与原始文件或摘要一起发送给接收者,一旦信息被篡改,接收者可通过计算摘要和验证签名来判断该文件无效,从而保证了文件的完整性。

4.数字签名可以防止数据抵赖。

数字签名即可以作为身份认证的依据,也可以作为签名者签名操作的证据。要防止接收者抵赖,可以在数字签名系统中要求接收者返回一个自己签名的表示收到的报文,给发送者或受信任第三方。如果接收者不返回任何消息,此次通信可终止或重新开始,签名方也没有任何损失,由此双方均不可抵赖。

5.数字签名可以对数据进行多重加密。

手写签字的文件一旦丢失,文件信息就极可能泄露,但数字签名可以加密要签名的消息,在网络传输中,可以将报文用接收方的公钥加密,以保证信息机密性。

6.数字签名可以实现客户的身份认证。

在数字签名中,客户的公钥是其身份的标志,当使用私钥签名时,如果接收方或验证方用其公钥进行验证并获通过,那么可以肯定,签名人就是拥有私钥的那个人,因为私钥只有签名人知道。

7.2 数字签名的理解

1.签名认证:数字签名在网络交易上和实际签名一样的认可功能;

2.防篡改:通过对数字签名的验证,保证文件在传输过程中未被篡改;

3.验证数据的完整性:若文件有丢失,签名将不完整;

4.仲裁机制:对交互过程出现抵赖,那么用数字便于仲裁;

5.保密性:保证数据在被中途截取后无法获得其真实内容;

6.防重放:可以防止重放攻击;

7.多重数字签名:通过多次数字签名,对文件数据进行多人认证。

7.3 椭圆曲线签名体制(计算)

P194

上图为方程:y2 = x3–x的曲线。

1、P点为基点;

2、通过P点做切线,交与点 2P点,在2P’点做竖线,交与2P点,2P点即为P点的2倍点;

3、进一步,P点和2P点之间做直线,交与3P’点,在3P’点做竖线,交与3P点,3P点即为P点的3倍点;

4、同理,可以计算出P点的4、5、6、… 倍点;

5、如果给定图上Q点是P的一个倍点,请问Q是P的几倍点呢?

6、直观上理解,正向计算一个倍点是容易的,反向计算一个点是P的几倍点则困难的多。

在椭圆曲线算法中,将倍数d做为私钥,将Q做为公钥。当然,椭圆曲线算法还有更严格的计算过程,相对图示要复杂的多。

SM2算法可以进行哪些密码应用?

SM2算法做为公钥算法,可以完成签名、密钥交换以及加密应用。SM2算法标准确定了标准过程:

1、签名、验签计算过程;

2、加密、解密计算过程;

3、密钥协商计算过程。

需要说明,其他国家的标准和SM2确定的计算过程存在差异,也就是说相互之间是不兼容的。

SM2算法速度快吗?

简单讲,SM2签名速度快,验签速度慢,这点和RSA算法的特性正好相反。参见表2。

另外,加解密速度和验签速度相当。

SM2签名算法支持多大的数据量,签名结果为多少字节?

签名原始数据量长度无限制,签名结果为64字节。

SM2加密算法支持多大的数据量,加密结果增加多少字节?

支持近128G字节数据长度,加密结果增加96个字节。

  • 15
    点赞
  • 153
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Draina

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值