第一章
安全协议的定义
密码协议(cryptographic protocol)是使用密码学完成某项特定的任务并满足安全需求的协议,又称安全协议(security protocol)。
安全要求
机密性、完整性、认证性、匿名性、公平性。
面对的攻击类型
窃听、篡改、重放、预重放、反射、拒绝服务、ip伪装攻击、类型攻击、密码分析、证书操纵。
安全协议应有哪些设计原则
(1) 设计目标明确,无二义性;
(2) 最好应用描述协议的形式语言,对安全协议本身进行形式化描述;
(3) 通过形式化分析方法证明安全协议实现设计目标;
(4) 安全性与具体采用的密码算法无关;
(5) 保证临时值和会话密钥等重要消息的新鲜性,防止重放攻击;
(6) 尽量采用异步认证方式,避免采用同步时钟(时戳)的认证方式;
(7) 具有抵抗常见攻击,特别是防止重放攻击的能力;
(8) 进行运行环境的风险分析,作尽可能少的初始安全假设;
(9) 实用性强,可用于各种网络的不同协议层;
(10) 尽可能减少密码运算,以降低成本,扩大应用范围。
好的安全协议应当满足什么要求
满足目标(应用目标,安全目标)
各方计算量小
易于实现
各方存储量小
通信负载小(延迟小,占用带宽小)
交互轮数少
协议和算法有什么区别
相同点:完成某项任务;要求高效
区别:算法应用于协议中消息处理的环节,对不同的消息处理方式要求不同的算法; 协议是应用算法提供实现方案
简述ip伪装攻击的案例
流程
⑴ 攻击者生成IP数据报文(分组),发送给服务器,和正常分组一样。这是个SYN请求。
⑵ 攻击者生成的分组和其他分组的主要差别在于攻击者指定源地址为另一计算机的IP地址,即伪造源地址。
⑶ 服务器响应SYN ACK,传递到伪造IP地址所在的计算机(而不是到攻击者)。
⑷ 攻击者想办法取得服务器发送的SYN ACK响应,确认这个响应,完成与服务器的连接。
⑸ 完成后,攻击者可以对服务器计算机试用不同命令。
案例
⑴ Kevin首先向Tsutomo的家庭计算机(X)发送一系列的SYN请求,使其几乎瘫痪。
⑵ 然后Kevin向大学的主服务器(Y)发送一个SYN请求,并把分组的源地址指定为X,即伪造源地址。
⑶ 服务器(Y)发现建立TCP连接的请求,响应一个SYN ACK。这个SYN ACK响应返回Tsutomo的家庭计算机(X),因为第2步SYN请求中使用这个源地址。
⑷ 因为在第1步Kevin泛滥X,因此X无法看到Y的响应。
⑸ Kevin猜出Y在SYN ACK响应中使用的序号(经过几次试验),用其确认SYN ACK消息,发送到Y。即Kevin响应Y的SYN ACK消息,发送了许多确认(用不同序号)。
⑹ 每种情况下, Kevin立即发送一个命令,在Y维护的信任关系文件中增加一个通配符项目,使Y信任任何人和每个人。显然,由于如果Kevin发送SYN ACK响应确认不成功,这个命令失败;但有一个成功的确认使这个命令成功了,使Y向所有外部用户敞开了大门。
拒绝服务攻击的目的
拒绝服务攻击的基本目的是使网络泛滥/耗尽,使合法用户无法得到网络服务。
第二章
各算法基于的困难问题
基于大整数因子分解问题
RSA体制、Rabin体制
基于离散对数问题
ElGamal体制、椭圆曲线密码体制ECC、Diffie-Hellman密钥交换
分组密码的5种加密模式
ECB、CBC、OFB、CFB、CTR
密码分析的4种分析方式
唯密文攻击
已知明文攻击
选择明文攻击:例如,公钥密码体制
选择密文攻击
简述HMAC算法
其他密码算法具体实现
见ppt
第三章
各协议满足的安全要求
比特承诺协议
(1)隐藏性(Hiding):承诺信息c 必须能完全隐藏b的信息,其他实体不能从承诺信息c中获取任何关于承诺比特b的信息。
(2)捆绑性(Binding):参与方A的不能将承诺信息解为其他值。
秘密共享协议
(1)在一组参与者中分发一个秘密
(2)每个参与者都被分配了一份秘密
(3)只有将股份合并在一起,才能重建秘密
(4)个股本身毫无用处。
零知识证明协议
如果验证者除了被证明证明者掌握某些消息外一无所知,我们说证明是零知识的。
完备性:V无法欺骗P
正确性:P无法欺骗V
零知识性:无法泄漏P的任何消息,V无法获取任何额外的知识。
OT协议
正确性:只要双方遵守协议,接收方能获得他想要的消息;
发送方的保密性:协议结束后,接收方除了得到他获得的消息,对于其他的消息,他一无所知;
接收方的保密性:协议结束后,发送方不知道接收方的选择;
抗冒名攻击:只有被发送方认可的接收方才能得到发送方发送的秘密信息;
抗重放攻击:发送方与接收方之间传递的数据被攻击者利用网络监听的手段获取到,攻击者利用通信双方的公共参数以及这些截取的数据,无法获知发送方拥有的秘密数据以及接收方的具体选择;
抗中间人攻击:攻击者截取通信双方的通信数据,同时冒充接收方与发送方进行通信获取到发送方的密码消息,同时冒充发送方与接收方通信防止接收方发现截取而采用其它方式终止协议执行。
各协议如何实现
shamir秘密共享
实现方式
实例展示
比特承诺
对称密码实现
单向函数实现(重要)
伪随机序列发生器实现(不重要)
抛币协议
比特承诺协议实现
单向函数实现
公钥密码算法实现
智力扑克发牌
两方
三方
OT协议
1 out 2实现
基于RSA实现
零知识证明
简述零知识洞穴
基于离散对数问题的零知识证明
阈下信道
基本流程
EIGamal签名方案实现
第四章
认证的目的
确认身份,确认数据完整性。达成共识,实现通信
消息认证与数据完整性区别:
1.消息认证必然涉及通信,而数据完整性不一定包含通信,该安全服务可用于存储的数据。
2.消息认证必然涉及确认消息的新鲜性,而数据完整性无此必要
认证的分类
单方认证、双方认证、包含可信第三方的认证
有无可信第三方有何差别
无可信第三方在不可否认性方面有缺陷
防止重放攻击采用的技巧以及优缺点(保证消息的新鲜性)
什么是重放攻击
是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的。
保证新鲜性的四种方案
1.时间戳
2.随机挑战(nonce)
3.计数器
4.混合方法
采用时间戳(非交互式)
消息发送者在消息种加入消息发送的时间。接受者根据时间戳的时间和本地时间的对比确定消息的新鲜性。难度在于使用时间戳必须保证时钟的同步性。这是需要加密的,时间戳是非交互式的因为在接收端自行进行验证即可。
挑战应答机制 随机数nonce(交互式)
这里需要交互是因为还需要把nonce发回来。
优点:由于是随机挑战,可以防重放并且不需要加时间戳,不用保存随机数
缺点:增加申请者和验证着的通信次数;
Needham-Schroeder对称密钥认证协议
这是一个有可信第三方的认证,这里是Alice想给Bob发,因此向可信第三方发送Alice,Bob,NA(但实际上这无法保证新鲜性,应该改用时间戳T);而后可信第三方发回给Alice要让Alice取得密钥所以得用Alice的密钥对称加密,标注好Bob是告诉Alice是跟Bob通信的密钥,为了让Bob也拿到密钥在其中还要附带Alice和K用Bob的密钥加密。而后Alice把这个发给Bob,Bob用拿到的K给Alice发个消息确认一下是不是拿到了密钥,而后Alice也发一下验证一下,这里需要NB-1.
缺陷
由于这里没有保证消息的新鲜性,会遭到重放攻击。为此需要将NA改为时间戳T。
可否认认证协议
可否认的认证协议:
1.接收者能够辨别出某个消息的发送者的身份
2.第三者不会知道消息发送者的身份
基于离散对数问题的可否认认证协议
这个其实是类似Diffie-Hellman,只是最后需要把协商的密钥和M做一个哈希进行一下认证。
对认证协议的典型攻击
1.重放攻击
2.中间人攻击
3.反射攻击
4.平行会话攻击
5.交错攻击(加拿大人攻击)
第五章
Diffie-Hellman密钥交换协议
首先协商好g和p,而后A选取a,向B发送g^a mod p;B选取b,向A发送g^b mod p.最终得到g^ab就是协商好的密钥。安全性依赖于离散对数问题的困难性。
很容易受到中间人攻击。
STS(端到端)协议
端到端协议在Diffie-Hellman的基础上增加了一个证书,在B向A发送g^b
时要一并发送B的证书,并且要把签名(签g^a
和g^b)
利用对称密码加密也给发过去。最后A将A的证书以及签名(签g^a
和g^b)利用对称密码加密也给发过去。
MTI协议
首先还是协商好g和p,MTI协议是有一个证书,并且每个人都有一个秘密指数a_u,然后他有自己的公钥b_u=g^a_u,
并且他们还有自己的一个ID号,而后将上述信息绑定好一个证书C,内含签名。在发送时,要自己选取一个大整数g^r_u
发过去,而后协商好的密钥便是g^(r_ua_v+r_va_u).其中b是从证书C中提取的。
Girault密钥协定协议
这个在MTI协议的基础上又改进了,这次是利用可信中心提供的RSA的密钥d,而后通过e来进行解密计算,最终结果还是g^(r_ua_v+r_va_u).但是其中需要减掉加上一个自身的ID。
Blom方案
安全条件为:至多k个不同用户的任何用户集必须不能确定关于KU,V的任何信息.
Diffie-Hellman密钥预分配协议
这个与Diffie-Hellman的不同是之前是直接发g^a之类的,现在是直接从对面那的证书里拿就完事了。
描述Kerboros在线密钥分配协议的流程
消息m1和m2用来提供会话密钥K在传输过程中的秘密性,
m3和m4用来提供密钥正确性,也就是能使U和V相互相信他们拥有同样的会话密钥K。
时戳T和生存期L的目的是阻止一个主动的敌手存储旧消息并在后来重发。这种攻击称为重放攻击(replay attack)。
第六章
PKI的组成
PKI是以公钥密码体制为理论基础,
以CA认证机构为核心,
以数字证书为工具来提供安全服务功能的。
CA的功能
CA:Certificate Authority,又叫做认证中心
证书申请\审核\签发\发布
证书更新
证书注销
CA证书更新/密钥更新
证书验证
生成和发布证书注销列表
证书状态查询服务-OCSP
数字证书归档
密钥归档
历史数据归档
数字时戳服务
数字证书的功能
分发公钥;
把用户的公开密钥和身份信息进行有效捆绑,有效验证用户的身份。
申请证书的过程
WEB页面提供申请界面和申请表单
页面上提供密钥生成程序,并可选择密钥长度
提交表单,页面程序将产生密钥对,私钥本地密钥存储区安全存储,公钥将和页面参数一起传递给WEB服务器,通常上传信息包含该密钥的签名值。
WEB服务器端接收申请信息和公钥,并验证签名
检查信息合法性,并根据证书政策实施约束
生成证书,返回用户(即时/指导下载)
浏览器在本地证书库加载该证书
生成证书的过程
数字证书的验证过程
(1)验证该数字证书是否真实有效。
(2)检查颁发该证书的CA是否可以信任
描述X.509证书的内容
(1)证书的版本信息;
(2)证书的序列号,每个证书都有一个惟一的证书序列号;
(3)证书所使用的签名算法;
(4)证书的发行机构名称,命名规则一般采用X.509格式;
(5)证书的有效期,现在通用的证书一般采用UTC时间格式,它的计时范围为1950~2049;
(6)证书所有人的名称,命名规则一般采用X.509格式;
(7)证书所有人的公开密钥;
(8)证书发行者对证书的签名。
第七章
发展过程
20世纪80-90年代是理论研究阶段, Yao 提出多方安全计算协议(解决百万富翁问题)。2000-2009年是实验室阶段,从2009年至今已经有了广泛的应用,比如TensorFlow的多方安全计算框架开源。
设计理念
MPC技术主要包括:秘密共享、不经意传输、混淆电路、同态加密、零知识证明等。
总体的大体流程为:
· 多个持有各自私有数据的参与方1,2,……,n,共同执行一个计算逻辑计算逻辑z;
· 在协议执行期间,发送的消息中不能推断出各方持有的私有数据信息,关于私有数据唯一可以推断的信息仅有输出结果z;
· 运行结束后,每一方都能获得计算结果z。
现在已经有GC协议、GMW协议、BGW协议等广泛应用,其中目前多分为预处理阶段以及在线计算阶段,预处理阶段需要设计电路等尽管过程复杂但能够加速计算速度。
应用场景
通过安全多方计算确保机器学习的安全,深度学习技术需要使用云数据平台进行计算。但因为安全和隐私方面的担忧,他们不愿意向云披露他们的数据。安全多方计算在这方面通用的方法是首先设计一个数据聚合方案,将使用不同密钥加密的数据聚合到一个整合的数据集中。在保护每个用户敏感数据的同时,确保基于机器学习的服务可以为所有用户提供。