A Summary Of Security Protocol
安全协议概述
1.安全协议的基本概念
建立在密码算法基础上的一种高互通协议,运行在计算机通信网或分布式系统中,为安全需求的各方提供一系列步骤,借助于密码算法来达到密钥分发、身份认证以及安全地实现网络通信或电子交易等目的。
安全协议的分类
- 从协议所要实现的目的来看:密钥交换协议、认证协议、认证密钥交换协议、安全电子支付和安全电子交易协议、安全通信协议、安全多方计算协议
- 从安全协议与具体应用的关联性来看:基础安全协议、应用安全协议
安全协议的特点
一般协议的设计只需分析协议执行的正确性及协议执行的效率。安全协议的设计处理正确性和协议执行的效率要求外,还有以下一些特殊要求:
- 安全需求:基本的安全需求包括加密、认证和不可抵赖性
- 鲁棒性:要求安全协议在有恶意参与者的情况下能部分地正确执行,同时严格保护其他城市参与者所持有的秘密信息。
恶意参与者的存在是安全协议和一般通信协议之间的重要区别。
2.安全协议模型
安全协议模型主要包括参与者的类型、参与者之间的网络连接情况和协议攻击者的能力。
- 协议参与者角色类型:协议参与者、协议攻击者、可信第三方、仲裁者
- 网络连接情况:同步网络、非同步网络
- 协议参与者诚实程度:诚实参与者、半诚实参与者、恶意攻击者
- 协议攻击者能力:拥有无限计算能力的攻击者、只有概率多项式时间计算能力的攻击者
- 协议参与者之间通信信道的控制:安全信道、认证信道、未认证的信道
3.安全协议的安全属性
认证性:对抗假冒攻击
机密性:对抗被动攻击
完整性:对抗主动攻击
非否认性:对抗主动攻击
公平性
匿名性
4.安全协议的设计过程
需求定义
需求分析
协议具体步骤设计
协议正确性分析
协议安全性分析
5.攻击者的计算能力
无条件安全的安全协议
计算安全的安全协议
认证协议
1.基本概念
认证协议是网络安全的一个重要组成部分,需要通过认证协议进行实体之间的认证、在实体之间安全地分配密钥或其他各种秘密、确认发送和接收的消息的非否认性等。
所谓认证,是一个通信过程,根据这个过程,一个实体(通常被称为验证者)B验证了另一个实体(通常被称为声称者/原告)A声称的某种属性。
认证至少涉及两个通信实体:
- 如果验证消息的某种声称属性,称为数据源认证,也称消息认证。
- 如果验证原告所声称的身份,称为实体认证。
2.经典认证协议
基于对称密码的实体认证
基于哈希函数的实体认证
基于公钥密码的实体认证
基于可信第三方的实体认证
-
NSSK协议
-
![image]()
-
前3条消息的作用是主体A在认证服务器S的帮助下,进行会话密钥的分配
-
后两条消息的目的是使B相信A现在在线,但不能使B相信会话密钥新鲜
-
针对NSSK协议的“新鲜性”型攻击:
-
攻击者获得了以前的会话密钥,且监听到了以前的消息
![image]()
-
伪冒A的攻击者E在全面拦截A和B之间的通信信道的前提下,利用自己之前记录下来的消息重新发放给B,导致在协议运行结束后B以为自己在和A通信,而实际情况是本应发送给A的机密信息全部被攻击者掌握。
-
如果E要获得B的机密信息,不需要等到A发起协议的第一次运行时才开始。由于B是被动地等待A的信息之后作出自己的反应,所以E完全可以跳过该协议中的前两步,自己主动将记录的消息重放给B。最终,B会以为A在和自己通信,而事实是A根本就不在线。
-
改进:
![image]()
解决这一问题的另一个方法是,令B也向S发送一个临时值,然后S将B的临时值放在发送给B的密钥证书中。
-
-
攻击NSSK协议的一种新方法:
-
即使攻击者P没有得到泄露的会话密钥,A也不能通过消息3、4、5推断出B知道会话密钥。
-
![image]()
-
改进:
![image]()
-
-
-
NSPK协议
-
目的是使通信双方安全地交换两个彼此独立的秘密
-
![image]()
-
针对NSPK协议的攻击
- NSPK协议的主要缺陷在于其中的消息6。由于消息中没有B的标识符,攻击者可以假冒B的身份发送消息6
![image]()
-
改进后的NSPK协议
-
-
Otway-Rees协议
-
![image]()
-
在Otway-Rees协议中:
- M是会话识别号
- 临时值\(N_a\)和\(N_b\)不仅提供了时序信息,还因为在消息1和消息2中受到了加密保护,所以主体身份的替身出现。
- S检查消息2中两个加密消息内的M、A、B是否一致,如果匹配,才会为A、B生成会话密钥\(K_{ab}\),并向B发送消息3。
-
针对Otway-Rees协议的“类型缺陷”型攻击
- “类型攻击”的特点是利用认证协议实现时的固定格式对协议进行攻击。
- 假定在Otway-Rees协议中,M的长度是64比特,A和B的长度各为32比特,会话密钥的长度为128比特。
- 用户A在发起协议后,预期在协议的第4步可以收回他在协议第1步建立的临时值,以及认证服务器S为他分配的会话密钥。
- 这是,攻击者可以冒充B,重放消息1中的加密分量,将它作为消息4中规定加密分量发送给A,攻击过程如下:
![image]()
-
攻击者冒充认证服务器S攻击Otway-Rees协议:
- P只需将消息2中的加密分量重放给B即可。
- 攻击过程如下:
![image]()
-
3.针对经典认证协议的攻击
消息重放攻击:E预先记录了欲攻击协议先前某次运行中的消息,然后在该协议新的运行中重放所
记录下来的消息,最后可以导致通信双方不存在真实通信,即认证失败。
中间人攻击:在中间人攻击( man-in-the-middle attack)中,攻击者处于通信双方A和B的中间,他将A(或B)所提出的困难问题转交给B(或A)回答,然后将收到的答案或是对答案进行简单处理后的结果作为自己的应答返回给A(或B),以此达到攻击的效果。
平行会话攻击:在攻击者E的操控下,被攻击协议的两个或多个运行并发(concurrently)执行',他可从其中某次运行中传输的消息得到其他运行中所需要的应答。
-
Woo-Lam单向认证协议
![image]()
-
攻击:
![image]()
- 相同的序号表示对应的消息是在几乎相同的时刻传输的。
- 收到消息 (V)或(V)'后,B只是判断自己解密后得到随机数与先前生成的随机数是否相 等,如果相等,就认为(Ⅱ)或(Ⅱ)'中对应的接收者为有效的。由于(Ⅱ)和(Ⅱ) '中真正的接收者均为E,所以通过这样的交互,B将接受和“A”(但事实上是E)的 运行,而A此时根本不在线。
- 消息(Ⅲ)和(Ⅲ)'可以相同,也可以不同,由具体加密算法细节决定。
- E之所以能对协议实施这样的攻击,原因在于根据协议的规定,B对接收到的密文不具有区分能力。
-
改进:
![image]()
-
反射攻击:当一个诚实的实体A给另一个通信方B发送消息时,攻击者E会截获该消息,然后将消息返回给消息的产生者——实体A,而A却不会意识到这个消息是他自己产生的。
-
对改进后的Woo-Lam单向认证协议的攻击:![image-20240102110028840]
![image]()
- 攻击者E执行了两次反射操作:当B发出消息(II)后,E无法计算加密,所以直接反射消息(II)。诚实的实体B收到消息(II)后,不会主动识别密文有效性,将两次收到的消息(I)和(II)联合在一起执行加密操作,发出消息(IV)。
- E假冒可信第三方,再次对收到的消息直接反射。
- 由于B是诚实的主体,他仍然不会检测到有任何不妥,最终得到一个错误的结论:接受本次协议运行有效。
- 攻击者通过这样的反射操作实现了对协议的攻击,而真正的A此时根本就没有参与本次协议的交互。
交错攻击:是指在E的操纵下,某个被攻击协议的两次(或多次)运行按交错的方式执行。以两次运行为例,第一次运行中的通信双方为A和E,第二次运行中的通信双方为E和B。E可构造某条消息发给第一次运行中的主体A,并得到其应答,这个应答可能对于第二次运行中的E是有用的;同样地,B的某个应答可能对于第一次运行中的E是有用的。通过这样先后交错的方式,E有可能实现对协议的攻击。
参考链接:密码协议学习笔记(3):实体认证协议 - Isakovsky - 博客园 (cnblogs.com)
4.其他重要的认证协议
大嘴青蛙协议

Helsinki协议

-
针对Helsinki协议的Horng-Hsu攻击
![image]()
-
改进协议
![image]()
Woo-Lam单向认证协议
-
攻击1
![image]()
-
攻击2!
![image]()
-
攻击3
![image]()
如果Woo-Lam协议所应用的对称密码算法满足交换律,则这种攻击方法可以奏效。
5.认证协议的设计准则
安全协议概述
1.安全协议设计准则
消息独立完整性原则
消息前提准确原则
主体身份标识原则
加密目的明确性原则
签名含义清晰性原则
临时值使用原则
随机数使用原则
时间戳使用原则
消息识别和编码准则
信任准则
2.安全协议缺陷分类
基本协议缺陷
口令/密钥猜测缺陷
陈旧消息缺陷
并行会话缺陷
内部协议缺陷
密码算法缺陷
3.消息重放攻击及其对策
消息重放攻击:攻击者利用其消息再生能力生成诚实用户所期待的消息格式并重放,从而达到破坏协议安全性质的目的。
对策:保持消息的“新鲜性”
- 序列号机制
- 时戳机制
- 挑战-应答机制
4.安全协议基础理论与方法概述
可证明安全性理论与方法
形式化分析理论与方法
混合理论与方法
零知识证明理论与方法
安全多方计算理论与方法
认证密钥协商协议
1.两方DH密钥协议
目的:两个用户能够安全地协商出一个共享会话密钥
如果Alice和Bob想在不安全信道上交换密钥,采用如下步骤:
- Alice和Bob协商一个大素数\(p\)及\(p\)的本原元\(a\),\(a\)和\(p\)公开;
- Alice秘密产生一个随机数\(x\),计算\(X=a^xmodp\),然后把\(X\)发送给Bob;
- Bob秘密产生一个随机数\(y\),计算\(Y=a^ymodp\),然后把\(Y\)发送给Alice;
- Alice计算\(k=Y^xmodp\);
- Bob计算\(k'=X^ymodp\)。
中间人攻击:
- Alice发送公开值(\(a\)和\(p\))给Bob,攻击者Carol截获这些值并把自己产生的公开值发送给Bob;
- Bob发送公开值给Alice,Carol截获它然后把自己的公开值(\(a'\)和\(p'\))发送给Alice;
- Alice和Carol计算出二人之间的共享密钥\(k_1\);
- Bob和Carol计算出另一队共享密钥\(k_2\)。
造成中间人攻击的原因是Diffie-Hellman密钥交换不认证对方。
2.MTI密钥交换
协议参与者A和B无需计算任何签名;
只需两次消息传送,为两段协议。
A和B的证书:
\(Cert_A=(ID_A,y_A,Sign_{TA}(ID_A,y_A))\)
\(Cert_B=(ID_B,y_B,Sign_{TB}(ID_B,y_B))\)
为了实现密钥协商,A和B可以这样做:
- A选择\(r_A\in _R[1,p-2]\),计算\(g_A=g^{r_A}(modp)\),将\((Cert_A,g_A)\)发送给B。
- B选择\(r_B\in _R[1,p-2]\),计算\(g_B=g^{r_B}(modp)\),将\((Cert_B,g_B)\)发送给A。
- A从\(Cert_B\)中获得\(y_B\),计算\(K=g_B^{X_A}y_B^{r_A}(modp)\)。
- B从\(Cert_A\)中获得\(y_A\),计算\(K=g_A^{X_B}y_A^{r_B}(modp)\)。
- A和B最终共享密钥值为\(K=g^{r_AX_B+r_BX_A}(modp)\)

基于口令的协议
1.一个直接的基于口令认证的协议
主机H在初始化用户U后,保存所有用户的身份和口令字典:\((ID_U,PW_U)\)
协议流程:
- \(U\rightarrow H:ID_U\)
- \(H\rightarrow U\):“请输入口令”
- \(U\rightarrow H:PW_U'\)
- \(H\)从自己的口令文档中查找字典\((ID_U,PW_U)\),验证\(PW_U'=PW_U\)
2.使用单向函数
主机H不在保存用户口令的明文,而是保留用户口令的一个单向函数值,如哈希函数值。字典中存储的信息为\((ID_U,OWF(PW_U))\)。
3.加盐单向函数
主机H在保存用户口令的OWF时加入了随机性,即在初始化时,进行如下操作:

验证过程如下:

单向加盐函数——增强型
- 主机H存储的信息不变,用户验证协议作出改变

4.使用哈希链
一次性口令
5.加密的密钥交换协议EKE
在EKE协议中,用户U和计算机H共享口令\(PW_U\)
BAN逻辑
1.安全协议的分析方法
5.BAN逻辑的缺陷及改进方法
- 协议的理想化过程不规范
- 协议的初始化假设不合理:BAN逻辑的基于的基本假设——主体假设存在问题
- 缺乏完备性
- 缺乏一个定义良好、确切的语义
电子商务安全协议
1.电子商务协议简介
电子商务是客户、商家、银行和各方所信任的第三方认证机制之间的信息流、资金流和物流的交互关系。各方是通过遍及全球的、开放的但不安全的Internet相互联系的。
电子商务存在的安全隐患:计算机系统安全、数据安全、交易安全
安全问题:假冒、交易抵赖、篡改信息、信息泄露
安全需求:匿名性、保密性、完整性、不可否认性、可认证性、有效性
安全机制:数字签名、加密技术、防火墙技术、数字时间戳

可证明安全的协议证明
1.不可区分性CPA
用“不可区分性”来描述算法的机密性
IND-CPA
在敌手能自行选择明文,并查询对应密文。
这一模型中,我们的加密算法是否还能实现的密文不可区分。在这一安全模型中,敌手可以查询任意一条明文消息对应的密文。


“如果密文足够随机的话,明文是不会泄露任何关于明文信息”。
一个安全的加密算法至少要能达到IND-CPA的安全性。
IND-CCA
保护解密算法和密文。
CCA:选择密文攻击。
在IND-CCA模型中,敌手的能力是允许访问解密算法的Oracle D,即敌手可以自行构造密文并提交给C,C执行解密算法返回解密结果。最终敌手的目标还是攻破加密的不可区分性。


让敌手能在拥有并篡改明文的条件下,仍然能够对算法明文的保护。
IND-CCA2


在第8步时,CCA2允许敌手在提交了自己的挑战明文后,仍然能进行若干次解密查询。与CCA1相比,CCA2令敌手通过最开始的若干次解密查询进行学习与观察后,即使收到了挑战密文\(c_b\),还能继续进行学习。这个能力让敌手可根据\(c_b\)继续去构造和猜测,而且CCA2中C提供的Oracle相当于永久开放给敌手,而CCA1在敌手最初查询Oracle后就不允许访问了。因此CCA2这一定义是比CCA1更强的安全模型。
比特承诺
1.比特承诺协议简介
基本思想:A发送给B一个证明,来向B做出承诺,承诺的内容是一个比特(0或1)
- 承诺者Alice向接收者B承诺一个消息,承诺过程要求,Alice向Bob承诺时,Bob不可能获得关于被承诺消息的任何信息;
- 经过一段时间后,Alice能够向Bob证实她所承诺的消息,但是Alice无法欺骗Bob。
比特承诺包括两个阶段:承诺阶段和打开阶段。
- 承诺阶段:发送方A选择一个要承诺的比特\(b\)(0或1),并把能表示该比特的消息\(c\)送给B。
- 打开阶段:A把打开承诺的消息\(d\)和\(b\)发送给B。B用\(d\)打开\(c\)并验证\(b\)是否是A承诺的比特。
一个安全的比特承诺方案必须满足两个安全性质:
- 隐藏性:第1阶段结束时,B得不到A承诺的比特\(b\)的值。即使一个不诚实的接受方也要满足这个条件。一个承诺方案是完善隐蔽的,若B不能从\(c\)中获取关于比特\(b\)的任何有用信息。
- 绑定行:给定第1阶段的交互信息,B只能接受一个合法的承诺。即A不能在打开阶段承诺改变自己承诺的比特。
2.常用比特承诺协议
使用对称加密函数
系统公开参数:安全的对称加密算法\(E\)和相应的解密算法\(D\)
承诺阶段:Alice承诺\(b\)
- Bob产生一个随机比特串\(R\),并把它发送给Alice。
- Alice产生一个由它想承诺的比特\(b\)组成的消息(\(b\)实际上可能是几个比特),及Bob的随机串。随机产生一个密钥\(K\)加密,并将结果\(E_K(R,b)\)送回给Bob。
承诺打开阶段:Alice揭示\(b\)
- Alice发送密钥\(K\)给Bob。
- Bob解密消息以揭示比特。他检测他的随机串以证实比特的有效性。
使用单向散列函数
系统参数公开:安全、无碰撞的单向散列函数\(H\)
承诺阶段:Alice承诺\(b\)
- Alice产生两个随机比特串\(R_1\)和\(R_2\).
- Alice产生消息,该消息由她的随机串和她希望承诺的比特组成:\((R_1,R_2,b)\)。
- Alice计算消息的单向函数值\(H(R_1,R_2,b)\),将结果及其中1个随机串\(R_1\)发送给Bob。
承诺打开阶段:Alice揭示\(b\)
- Alice将原消息\((R_1,R_2,b)\)发送给Bob;
- Bob计算消息的单向散列值,并将该值与第(3)步中收到的值及随机串比较。如匹配,则比特有效。
使用伪随机数发生器
系统公开参数:伪随机数发生器\(G\),随机串\(R\)(128bit)
承诺阶段:Alice承诺\(b\)
- Alice产生消息\(b\),并产生随机数\(s\)作为随机数发生器所需的种子;
- Alice计算:如果\(b=0\),则\(c=G(s)\);如果\(b=1\),则\(c=G(s)+R\)。A将\(c\)发送给B。
承诺打开阶段:Alice揭示\(b\)
- Alice将\(s\)和\(b\)发送给Bob,打开承诺;
- Bob验证\(c\)的计算是否与收到的承诺一致;如果一致,则认为承诺有效,否则无效。
Pedersen承诺协议
系统公开参数:大素数\(p\),\(g\)是\(Z_p^*\)的生成元。
承诺阶段:Alice承诺\(b\)
- A选择所需的承诺比特\(b\),并产生随机数\(r\in Z_p^*\)
- A计算:\(c=g^ry^bmodp\)。\(c\)即为A对B的承诺。A将\(c\)发送给B。
承诺打开阶段:Alice揭示\(b\)
A将\(b\)和\(r\)发送给\(B\),并打开承诺。
B验证\(c\)的计算是否与收到的承诺一致,如果一致,认承诺有效,否则无效。
三方比特承诺
在该模型下,承诺者由一人变为两人Alice与Bob,由此二人共同向第三方Chris承诺一个比特或比特串。
秘密共享
1.秘密分享的基本概念
秘密共享是一种将秘密分割存储的密码技术,目的是阻止秘密过于集中,以达到分散风险和容忍入侵的目的,为密钥管理提供了一个有效的途径。
秘密共享的基本思想:把密钥分发给多个人共同持有。
秘密共享是一种分发、保存密钥的方法,分发者将密钥分成多个相互关联的秘密信息(称为份额、影子或子密钥),然后再分发给小组中的所有成员,使得根据既定的方法,凑齐小组成员所持有的特定数量的份额就可以重构出密钥。
门限方案
假设秘密\(K\)被分割成\(n\)个子信息,每一个子信息称为份额(Share)或子密钥,由一个参与者持有,使得:
- 由\(t\)个或者大于\(t\)个参与者所持有的份额可重构\(K\);
- 由少于\(t\)个参与者所持有的份额无法重构\(K\)。
称这种方案为\((t,n)\)-秘密分享门限方案,其中\(t\)称为方案的门限值。
秘密分享的两个阶段:份额分发阶段和秘密重构阶段。
- 份额分发阶段:秘密\(K\)被分割称若干份额,然后分发给各个用户;
- 秘密重构阶段:希望重构秘密的用户数量达到门限值以上时,便能够重建秘密\(K\)
强健性:暴露一个份额或多到\(m-1\)个份额不会危机密钥,且少于\(m-1\)个用户不可能共谋得到密钥,同时若一个份额被丢失或损坏,还可恢复密钥。
2.基本的秘密共享方案
Shamir秘密共享
\((t,n)\)秘密共享
- 密钥信息\(K\)
- 把一个秘密信息分成\(n\)部分\((P_1,...,P_n)\),每部分叫做它的“影子”或共享;
- 使用\(t-1\)次任意系数的随机多项式
Step1.构造多项式:交易商选择一个共享秘密\(K(<p:随机素数)\)为常数项,\(F(x)=K+a_1x+a_2x^2+…+a_{t-1}x^{t-1}modp\)为\(t-1\)次任意系数的随机多项式。
Step2.秘密分割:分配\(F(i)(i=1,...,n)\)安全共享给\(P_i\)。
Step3.秘密恢复:当\(t\)个实体共享\((K_1,K_2,...,K_t)\),其中\(t\)是给定的。使用拉格朗日差值多项式方案恢复\(K\)。
Blakley秘密共享
\((t,n)\)-秘密共享门限方案
- 秘密信息\(K\)
- 随机构造一个\(t\)维空间的点\(K\),取任意\(n\)个互不相交且经过该点的平面作为份额分给\(n\)个人,只要凑齐\(t\)个人,便可接触\(t\)个平面唯一的相交点,这个点即为秘密\(K\)。Blakley方案由以下两个阶段组成:
- Step1.份额分发阶段:分发者随机构造一个\(t\)维空间中的一点\(K\),然后构造\(n\)个互不相同的经过\(K\)的平面,并将这些平面作为份额分发给各个成员。
- Step2.秘密重构阶段:任意\(t\)个成员合作和一重构出秘密。任意\(t\)个成员所持有的份额可以构成一个方程组,解这个方程组便可以求得唯一解,这个唯一解便是所要重构的秘密\(K\)。
缺点:只能抵抗被动攻击,安全性依赖于方案中的各方都是诚实地执行协议预定的操作。
秘密分发阶段:若分发中心不诚实,它可以使分发的碎片不是要分享的秘密的组成部分,从而使碎片的持有者及时全部都汇集在一起也无法恢复秘密。
秘密重构阶段:如果参与者\(P\)没有使用正确的碎片\(s\),而是使用一个随机值,那么他能够使用其他\(t-1\)个参与者的正确碎片计算出被分享的真正秘密。
安全多方计算
1.安全多方计算的基本概念
安全多方计算是指在无可信第三方情况下,多个参与方协同计算一个约定函数,且保证每一方仅获取自己的计算结果,无法通过计算过程中的交互数据推测出其他任意一方的输入和输出数据(除非函数本身可以由自己的输入推测出其他参与方的输入和输出)。
安全多方计算主要有三个特性:
- 正确性
- 隐私性
- 去中心化
2.安全多方计算的安全模型
信任环境或整体安全定义通常由真实-理想模型来表达。
- 在真实-理想模型中,存在一个虚拟的理想环境,与真实环境进行比较。
- 在理想环境里,所有参与方都会将各自的秘密数据发送给一个可信第三方,由可信第三方完成计算。
- 在真实环境下不存在这样的可信第三方,所有参与者通过互相交换信息,完成协同计算,并且会存在敌手进行控制其中部分参与方的情况。
根据攻击者的能力差异可以定义两种不同的攻击者相关的安全模型
- 半诚实模型
- 恶意行为模型
3.安全多方计算的基础技术

秘密分享
不经意传输
原理:
- 数据发送方有\(n\)个数据
- 数据接收方接收其中一个数据,不能获取其他数据
- 数据发送方不知道接收方选择接收的数据具体是哪一个
混淆电路
原理:
- 将以参与方安全多方计算协议的计算逻辑编译成布尔电路,将布尔电路中的每一个门进行加密并打乱加密顺序完成混淆操作
- 完成混淆后,该参与方将加密电路及与其输入相关的标签(另一方无法从标签中反推输入的信息)发送给另一参与方
- 另一方(作为接收方)通过不经意传输(OT)按照其输入选取标签,并在此基础上对混淆电路进行解密获取计算结果。
同态加密
原理:同态加密技术使得能够直接在密文上进行运算,得到的结果经过解密后在明文下计算结果一致,即\(Dec(f(Enc(x)))=f(x)\),其中\(f(x)\)至多支持加法和乘法。
同态加密
1.同态加密的基本概念
同态加密是指满足密文同态运算性质的加密算法,即数据经过同态加密之后,对密文进行特定的计算,得到的密文计算结果在进行对应的同态解密后的明文等同于对明文数据直接进行相同的计算,实现数据的“可算不可见”。

同态加密的分类:半同态加密和全同态加密
实际应用中的同态加密算法多选取半同态加密(如加法同态)
TLS协议
1.TLS协议简介
HTTP的安全问题:HTTP的请求和返回都是明文;无法校验返回内容的服务器是否是目标服务器。
引入TLS(传输层安全)协议,用以构建一个安全传输层。
TLS工作在传输层,与使用的应用层协议无关。
2.TLS协议架构
TLS协议宗旨:为通信双方提供安全可靠的通信协议服务,在通信双方间建立一个传输层安全通道。
TLS四个目标:数据是机密的、可操作性、可扩展性、效率。
TLS/SSL协议核心的三大步骤:认证、密钥协商、数据加密。
实现功能:基于PKI的身份认证;基于混合加密算法的数据加密;使用RSA算法协商密钥,再使用这个协商密钥做对称加密;基于数字签名的数据完整性
TLS提供三种机制来确保安全性:认证、保密、完整性
TLS对话由连接和应用组成
- 连接对话期间:
- 客户机和服务器交换证书并就安全参数进行协商
- 如果客户机接受服务器的证书,就会建立一个主密钥,这个主密钥被用来对随后进行的通信进行加密。
- 应用对话期间:
- 客户机和服务器之间可以安全地传递信息。
SSL/TLS协议是一个分层协议,可以分为上下两层:
- 下层为TLS记录层协议
- 是SSL/TLS的基础封装协议,无论应用层数据还是TLS握手协议,所有的TLS交互报文都需要通过TLS Record层进行封装
- 上层为TLS握手层协议

TLS记录协议
建立在可靠的传输协议(TCP/IP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
所有的TLS通信都使用TLS记录层,记录协议封装上层的握手协议、报警协议、修改密文协议。
TLS记录协议为TLS连接提供两种服务:机密性和报文完整性。
TLS握手协议
被封装在记录协议中,允许服务器和客户机在应用程序传输和接收数据之前:
- 协商加密使用的算法套件,包括采用的加密算法、认证算法、摘要算法、密钥配送算法等
- 协商加密密钥
- 三项任务:算法协商、身份验证、确定密钥
- 四个阶段:建立安全能力;认证服务器和密钥交换、认证客户和密钥交换、结束
3.TLS四次握手
目标:协商TLS协议版本号和一个CipherSuite;认证对端的身份;使用密钥协商算法生成共享的key
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,密钥交换算法是DHE,身份认证算法是RSA,对称加密算法是AES_256_CBC,消息摘要算法是SHA256,由于RSA又可以用于加密也可以用于身份认证,因此密钥交换算法使用RSA时,只写一个RSA,比如TLS_RSA_WITH_AES_256_CBC_SHA256。
第1步:client给出协议版本号、1个客户端生成的随机数(client random),以及客户端支持的加密方法。
第2步:server选择一种client支持的加密算法,并给出数字证书CA,以及1个由服务器生成的随机数(server random)。
第3步:client确认数字证书CA的合法性,是否有效,然后根据前面两个随机数,生成1个新的随机数(premaster secret),并使用数字证书中的公钥,加密这个随机数,发送给client。
第4步: server使用自己的私钥,解密获取client发送过来的随机数(premaster secret)
第5步: client和server根据预定的加密方法,使用前面的3个随机数,生成对话密钥(session key),后面client 和server就使用 对话密钥来加密整个对话过程。
TLS1.3协议
1.TLS1.2与TLS1.3的比较
更快的访问速度
- 使用TLS1.2需要两次往返(2-RTT)才能完成握手,然后才能发送请求。
- TLS1.3的握手不再支持静态的RSA密钥交换,这意味着必须使用带有前向安全的Diffie-Hellman进行全面握手。使用TLS1.3协议只需要一次往返(1-RTT)就可以完成握手。
更强的安全性
TLS1.3
- 引入了新的密钥机制——PSK
- 支持0-RTT数据传输,在建立连接时节省了往返时间
- 废弃了3DES、RC4、AES-CBC等加密组件,废弃了SHA1、MD5等哈希算法
- ServerHello之后的所有握手消息采取了加密操作,可见明文大大减少
- 不再允许对加密报文进行压缩、不再允许双方发起重协商
- DSA证书不再允许在TLS1.3中使用
TLS1.3记录协议利用带有辅助数据的认证加密AEAD进行加密传输,接收方接收数据后对其进行解密和验证,重组后再传送给高层用户。
TLS1.3警告协议以简单的通知机制告知通信出现异常情况。
TLS1.3握手协议主要分为三个流程:
- 密钥交换:选择TLS协议版本和加密的算法,并且协商算法所需的参数。这段是明文传输的
- 服务器参数:建立其他握手协议参数,例如是否需要认证客户端,支持何种应用层协议等。
- 认证:对服务器进行认证(包括可选的客户端认证)并且提供密钥确认和验证握手完整性功能。
MMTLS协议分析
1.MMTLS协议架构
MMTLS建立基础:基于TLS1.3
握手协议、警告协议、业务层协议

2.MMTLS与TLS的区别





















浙公网安备 33010602011771号