数字签名与身份认证总结
攻击的种类:中断(Interruption)(干扰)、截取(Interception) (侦听)、修改(Modification)、伪造(Fabrication)
对称密码体制的优缺点
优点:加密速度快
缺点:密钥需要谨慎保管,密钥更新和交换困难、多人通信密钥数量会出现爆炸性增长、不易于实现数字签名
非对称密码体制的优缺点
优点:可以适用网络的开放性要求,密钥管理相对简单;群组通信下,N个用户只需要N对密钥;密钥分配较为简单,不需要秘密信道和复杂协议传送密钥;可以实现数字签名;
缺点:加密速度慢,实现较为复杂;安全性建立在计算复杂性假设下,安全性相对较低
加密系统的安全分析
明文攻击:从密文中得到的有关明文的信息;
语义安全:从密文中得到的有关明文的信息,和在没有密文情况下得到的是一样的
密钥攻击:从密文和明文的分析中获取密钥信息
密钥安全:从密文和明文的分析中获取密钥信息,和在没有密文/明文情况下得到的是一样的
语义安全的类型
唯密文攻击:攻击者只有密文串,想求出明文或密钥。
已知明文攻击:攻击者知道明文串及对应的密文串,想求出密钥或解密变换。
选择明文攻击:攻击者不仅知道明文串及其对应密文串,而且可选择用于加密的明文,想求出密钥及解密变换。
选择密文攻击:攻击者不仅知道明文串及对应密文串,且密文串由攻击者选择,想求出密钥及解密变换。
ECC的安全性基于椭圆曲线离散对数问题的难解性。
GF(p)域上的椭圆曲线是对于固定的a、b值,满足形如方程Y^2 =X^3 +aX+b mod(p)的所有点的集合,外加一个零点或无穷远点。
椭圆曲线加密算法:略。
密钥管理的内容现代密码系统的安全是由密钥安全保证的
主密钥(Main Key):又称初始密钥(Primary Key) 或用户密钥(User key),是参与或控制密码变换,在一段时间内不进行更换的密钥。
会话密钥(Session Key):在一次通话或交换数据时使用的临时密钥。通常与主密钥相结合对消息进行加密,且一报一换。
密钥分发:通信一方将会话密钥分发给另一方的过程
密钥协商:通信双方或多方共同形成会话密钥的过程(保证计算结果的一致性和有效性)
交互式证明系统:是一类计算模型,像其它计算模型一样,我们的目标是对一个语言类L,和一个给定的输入x,判断x 是否在L中。它的计算过程:给定了输入x,通过验证者和证明者之间交换信息,最终,由验证者来根据证明者给出的信息,判断给定的输入是不是在语言L中。证明者与验证者之间满足下面性质:
能力假设:验证者具有多项式时间确定图灵机的计算机能力,但是证明者具有无限大的计算能力;
运行规则:博弈双方共走m步,且由验证者(或证明者)先行;
胜负规则:x属于L,当且仅当,证明者在以x为输入的对局中有必胜策略。
NP-问题:在非确定图灵机M 内多项式时间可解决的问题;NP问题能够转化为确定图灵机M'下的判定问题。
在交互协议中,如果证明者P与验证者V的交互过程中,任何一方不能学习到对方的"知识",那么被称为对方是"零知识"的。"知识"是指具有解决某种问题的能力。如果在证明过程中,验证者能够验证证明者的宣称,但是不能获得证明者所掌握的知识,那么称为零知识证明系统。如何验证协议是零知识证明系统:模型检验(主要通过显式状态搜索或隐式不动点计算来验证有穷状态并发系统的模态/命题性质。)
数字认证过程本质是一个交互证明过程;交互证明过程需要满足两个属性:完整性和完备性;交互证明过程可以在证明者具有无限计算能力下,依然不能进行欺骗;而验证者只需很弱计算能力
消息认证(有问题,看数字签名一章):验证消息没有被改变,即完整性认证
Hash函数一般满足以下几个基本需求:1)输入x可以为任意长度;2)输出数据长度固定;3)容易计算,给定任何x,容易计算出x的Hash值H(x);4)单向函数:即给出一个Hash值,很难反向计算出原始输入;5)碰撞性:即难以找到两个不同的输入会得到相同的Hash输出值(在计算上是不可行的)。
Hash函数的安全要求:
• 单向性:已知y ,找出x,使得Hash k (x)=y 困难
• 弱碰撞:已知x ,找出x'≠x,使得Hash k (x')= Hash k (x) 困难
• 强碰撞:找出任意x'≠x,使得Hash k (x')= Hash k (x) 困难
• 困难性具有递增关系
迭代压缩解决无限输入和有限输出的问题
为什么SHA-1是80轮?
• 每轮只进行了32比特一个单元的混淆 • 每组5个单元,需要5次
• 每次压缩为16分组,供需要16次才能将所有信息进行处理 • 16*5=80轮
• 前16轮给SHA-1快速"填料",后64轮加速混淆
Sha-1安全要求:每一比特的变动都要以1/2概率影响其它所有比特;对于全0和全1信息,输出也必须是随机串;安全核心:非线性函数
输入空间有限的hash函数称为压缩函数;输入空间无限的hash函数由压缩函数迭代而成。(链状、树状)
MAC:消息认证码带密钥的Hash函数用于消息完整性验证,不要机密性
通过Hash函数构造的通常的方法:MAC key (M)=Hash(key||M)
CBC-MAC:将任何工作于CBC模式的常规加密算法作为报文鉴别函数,并将CBC模式产生的最后一个密文分组当作MAC。例如DAA。
盲验证:指在验证者看不到数据情况下对数据进行验证的方法(交互式证明)
盲签名:指在签名者看不到数据情况下对数据进行签名的方法
数字签名:实现用户对消息的认证
消息认证:对信息系统中的数据或通信中的消息来源进行认证。完整性验证用以保护双方之间交换数据不被修改,但它并不保证数据来源的真实性。消息认证是认证消息的确来源于某个实体,即消息来源的正确性。
数字签名方案一般由两部分组成:签名算法、验证算法
数字签名应满足的要求:收方能确认或证实发方的签字,如同手写签名;发方发出签名后的消息,不能否认所签消息;任何人不能伪造发送方签名。
• 选择性伪造:给定x,计算y,使得Verify(x,y)=1
• 存在性伪造:产生(x,y),使得Verify(x,y)=1
基于单向陷门的签名通常构造(补充)
单向陷门f(m)=c是公开函数;存在陷门钥匙k,使得f -1 (k;c)=m
验证:如果存在r,使得H(m)=f(H(m)+r),r 是计算困难的
签名:r=H(m)+ f -1 (k;H(m))就为签名
基于身份的签名(IBS):采用标识身份的字符串来验证签名的有效性;身份加密的本质是群组密码。签名:σ=Sign(PP,M,Sk i ,ID i ) 验证:Verify(PP,M, σ,ID i )=1? RSA下的IBS方案:
盲签名的两个要求:待签消息的内容对签名人是盲的;签名接收者能将签名转化为普通的签名。强盲签名、弱盲签名、部分盲签名
盲签名原理:盲化f-签名-去盲g
盲签名的性质:不可连接性(签名者即使依靠保留的签名时信息,也无法与具体的某次签名过程相对应)、匿名性(如果是不可链接的,那么用户可以做到匿名;弱匿名:如果仅给定给定m1和m2是不可链接的(一般盲性);强匿名:给定给定(m1,Sign(m1))和(m2,Sign(m2))是不可链接的;)
RSA盲签名:发送者A接收B关于盲消息的签名
B的RSA公钥和私钥分别是(n, e)和d。k是A随机选择的秘密数,且。
(盲化)A计算,将它发送给B
(签名)B计算,将它发送给A
(去盲)A计算,它就是B关于m的签名
代理签名:是指原始签名人授权他的签名权给代理签名人,然后让代理签名人代表原始签名人生成有效签名。安全性要求:不可伪造性:只有原始签名者和指定的代理签名者能够产生有效的代理签名。可验证性:从代理签名中,验证者能够相信原始的签名者认同了这份签名消息。可识别性( 区分性):原始签名者能够从代理签名中识别代理签名者的身份。不可否认性:代理签名者不能否认由他建立且被认可的代理签名。可跟踪性:多个签名者,应该能够区分不同签名者的签名。
完全代理签名:代理者和委托者的签名无法区分,完全授权
部分代理签名:代理者和委托者的签名可以区分
托管式代理签名:委托者能够伪造代理者的签名
非托管式代理签名:委托者不能够伪造代理者的签名
代理签名的组成:1) 初始化过程:签名体制的参数、用户的密钥等2) 权力委托过程:代理者的密钥生成过程3) 代理签名的生成过程:签名4) 代理签名的验证过程:验证
ElGamal的代理签名:略。
基于Elgamal签名函数如下定义:
K-P-W代理签名方案(非密钥托管):略。
群签名:群组内每个人都可以签名;多重数字签名:签名需要一组内一定数量的人都签名;不可否认数字签名:需要签名者在线帮助的签名。
身份认证也称为实体认证:一方(证明者A)向另一方(验证者B)证明其身份的过程。
身份认证的要求:可验证性:A能向B证明身份,B成功的接受验证;不可假冒性:任何其他人C不能假冒A;不可传递性:B不能用A的身份证明过程进行欺骗。
身份认证的基础是A所具有的可信任的事物,被称为:信任根,信任凭证。认证过程不能直接传送"信任根",避免重放攻击。对付重放攻击的有效方法:•随机数:每次认证采用不同随机数•序列数:采用序号作为时变参数
•时间戳:采用时间作为时变参数。
安全令牌:每隔固定间隔产生一个基于同步序列的随机数
证书定义:Cert={ID, PK, T, AS, Sign AS (ID,PK, T,AS)}
零知识证明协议通常分为三步:
A➡️B:witness B➡️A:challenge A➡️B:response
KERBEROS认证系统:
基本思想是:由于Kerberos是基于对称密码体制,它与网络上的每个实体分别共享一个不同密钥,能正确对信息进行解密的用户就是合法用户。概括起来说Kerberos协议主要做了两件事1、Ticket的安全传递。2、Session Key的安全发布。
OAUTH认证协议
OAuth是一个开放标准,允许用户让第三方应用B访问该用户U在某网站A 上存储的私密的资源,而无需将用户名和密码提供给第三方应用。OAuth 为客户端B提供了一种代表资源拥有者U访问受限资源A的方法:
在客户端B访问受保护资源A之前,必须先从资源拥有者U获取授权/访问许可然后,用访问许可交换访问令牌;客户端B通过向资源服务器A出示访问令牌来访问受保护资源。
1. 服务B向服务A请求临时凭据 2.服务B将用户的请求重定位到服务A,此时在服务A上提供用户操作的明细,并要求用户输入(用户名-密码),授权服务B对服务A上的用户私有数据的访问 3. 用户授权应用后,服务A会将请求重定向到服务B在之前设定的地址,重写向后会提示用户已经完成了授权流程,可以开始访问服务A上的数据,与此同时,服务B在收到oauth_verifier后,再向服务A请求令牌凭证,服务A对服务B的请求授权。 4. 服务B取得服务A上的令牌凭据后,就可以访问用户在服务A上的私有数据,服务B可以一直使用凭据访问服务A中的私有数据,直到用户吊销凭据或超出授权期限。
-
网络安全攻击的形式主要有哪些?可分为哪两大类?
解:主要分为被动攻击和主动攻击两种形式。被动攻击:析出信息内容,通信量分析;主动攻击:中断攻击,篡改攻击,伪造攻击,重放攻击。
-
实体认证、数据(消息)认证、完整性证明有什么区别?
解:实体认证,数据(消息)认证,完整性证明对信息系统各个不同的部分进行验证。实体认证是对信息系统的使用者(实体)的身份进行确认的过程,消息认证是对信息系统中的数据或通信中的消息来源进行认证,完整验证确保信息没有被未经授权的或未知的手段所修改。
3) 如何进行双向认证?
解:数字认证过程被认为是一个交互式的证明过程,交互式过程中包括两个实体:证明者和验证者,交互式证明系统是一个计算模型,像其它计算模型一样,我们的目标是一个语言类L,和一个给定的输入X,判断X是否在L中,所以称为双向认证。
-
简述什么是身份管理?其目的何在?
解:身份管理系统是指一个广义的管理区,对该系统内的个人进行身份识别管理,其目的是通过授权或加以限制来控制个人接近系统内部的资源
-
简单讨论数字认证技术是一个系统性学科。
解:系统性学科是各种知识由组合关系和聚合关系构成的严整有序的规则系统,数字认证技术是一门多学科的综合性技术,分为密码学技术,信息隐藏技术,模式识别技术等,所以说它是一个系统型学科。
-
讨论TCP/IP协议各层的安全目标以及改进措施
解:可用性和效率是Internet系统的重点,没有进行安全设计,分为三层。物理层的安全目标是信道加密,改进措施是信道安全;IP层的安全目标是寻路安全,改进措施是路由认证;TCP层的安全目标是端对端安全,改进措施是端对端认证,安全套接字SSL
2)证明基于二次非剩余的证明协议是一个交互证明系统,并说明如何将Soundness概率降为任意小?
基于二次非剩余问题的证明协议
第一步:验证者随机选择整数b∈{0,1},以及一个自然数z∈Z,然后计算数值w如下:
w=z*z(mod n)(if b=1),w=x*z*z(mod n)(if b=0),并将其送给证明者。
第二步:证明者判定w是否属于QNRn,如果是,则令b'=0;否则,令b'=1,并将所得结果b'∈{0,1}传送给验证者。
第三步:验证者检测是否b=b',如果是,输出1,否则输出0。
证明:
完备性:如果x是二次非剩余类,那么证明者P能以概率1判定w是否是非剩余类,因此验证者V将以概率1接受证明者P的证明;
可靠性:如果x是二次剩余类,那么无论验证者V选择何种b,所发送的w都是二次剩余的,因此,P将无法进行判定b,因此只能以概率1/2猜对b。因此,V将以概率1/2接受P的证明。
当x为二次剩余类时,V只能以概率1/2接受P的证明。我们可以增加证明的次数,使得验证成功的概率为1/2的多次方,Soundness的概率能降为任意小。
-
论述当n=pq,p和q为2个RSA型大素数时,基于二次非剩余的证明协议中证明者与验证者的能力差异?
当x为二次剩余类时,证明者无论具有怎样(无穷)的计算能力都无法欺骗验证者。当x为二次非剩余类时,证明者是诚实的,验证这都无法推翻证明者的结论。
-
分析当n=21,x=15时,对基于二次非剩余问题的证明协议进行安全性分析
QR21={0,1,4,7,9,14,15,16,18}
QNR21={2,3,5,6,8,10,11,12,13,17,19,20}
x=15是二次非剩余类,那么P能以概率1判定w是否是剩余类,
V选择b=1,z=6,w=15是二次剩余类;
V选择b=0,z=6,w=15是二次剩余类;
所以,无论V选择何种b,所发送的w都是二次剩余的,因此,P将无法进行判定b,因此只能以概率1/2猜对b。
-
零知识证明是指验证者能获得最后的证明结果,但是却无法获得待验证的信息,请改进山洞证明系统加以举例说明
假设一个山洞有两个通路,但是中间有一堵墙隔离开,证明者知道墙上的机关,能通过这堵墙,那么就可以到达墙的另一边来证明他知道机关怎么打开,同时墙恢复原来的样子。可以看出,如果通过证明,那么可以知道证明者具有通过墙的方法,但是验证者无法知道是什么方法。
4.密钥分发?分哪两类?
典型的密钥分发方案有两类:集中式分配方案和分布式分配方案。所谓集中式分配方案是指利用网络中的"密钥管理中心"来集中管理系统中的密钥,"密钥管理中心"接受系统中用户的请求,为用户提供安全分配密钥的服务。分布式分配方案则是由通信方自己协商完成会话密钥的共享工程,不受任何其他方面的限制。
5.密钥协商与分发的区别?
密钥分配方案需要一个可信权威机构TA来选取密钥并将它们分配给网络用户;密钥协商方案则不需要一个TA的参与,而是通过一个交互协议来共同确定一个新的会话密钥。
6.Diffie-Hellman密钥交换与Elgamal系统构造上的相似处?
(1)对方都不知道另一方的私钥(2)安全性都基于求解离散对数问题的困难性(3)都要选一个大素数和它的本源元
- 讨论盲验证方案的安全性?
答:认证码的安全性:已知(𝑀, 𝜎),求a, k是困难的。
认证的有效性:每次Verifier挑战的𝑄 = {(𝑖, 𝑣𝑖) 是不同的的
反证法:如果伪造成功,那么可以证明存在a的泄露,与a的保密性冲突。能将所有信息进行处理。
为什么HMAC采用嵌套结构?是几层嵌套结构?
答:因为嵌套结构能增加密钥的强度,并可以为嵌套Hash提供两个不同密钥。两层嵌套结构。
4.为什么能用有限长度编码实现无限长度数据的完整性检查?
答:因为可以使用固定压缩率的Hash函数来实现无限长数据的完整性检查。
分析RSA签名的安全性?
(1)RSA签名的有效性讨论:签名和验证算法和RSA的加解密一样,验证算法是有效的。对于任何人,都可以使用Alice的公钥验证她的签名。
(2)RSA签名,能够抵抗选择性伪造,但敌手很容易进行存在性伪造,而且敌手可以组合密文进行攻击。
身份认证的密码学基础是信任根。
简述密钥转化中心KTC、密钥分发中心KDC实现互认证的方案:
简述公钥证书信任链:证书链是由两个环节组成—信任锚(CA 证书)环节和已签名证书环节。即由 CA 证书发出的证书序列,最终以根 CA 证书结束。基于证书的身份认证,证书是否可信任要返回上一级,从根到以下各级