安全协议的目标集合构成了安全协议的安全属性集。安全协议的目的就是保证安全属性在协议执行完毕时能够得以实现,评估安全协议的安全性就是检查其安全属性在协议执行时是否受到破坏。协议的安全属性主要包括机密性、完整性、认证性、不可否认性、公平性、匿名性、可用性、可追究性等。
例如,传输层安全协议(transport layer security,TLS)是一种用于保护网络通信连接的安全协议。根据上述定义,它需要完成通信实体认证(entity authentication,EA)和密钥协商的功能并达成建立网络中数据安全传输信道的目的,即保证数据的机密性、完整性和不可否认性等。为了完成这些功能,它要求参与通信的各方遵循特定的规则,具体的规则包括交替发送消息、算法和参数协商、实体认证、通信双方建立共享密钥、密钥确认、认证加密信道建立等。
安全协议是以密码学为基础的消息交换协议,其目的是在网络环境中提供各种安全服务。安全协议起始于相对独立和抽象的以密码技术为核心的密码协议。例如,随着网络技术的不断发展和互联网应用的不断丰富,密钥交换协议扩展为保护各种网络(如互联网、车联网、智能电网、P2P网络和区块链)和信息基础设施(如云计算、大数据)及其应用(如金融支付、电子政务)的安全协议,如:互联网安全协议(internet protocol security,IPSec)和安全电子交易协议(secure electronic transaction,SET)等。
安全协议的特点包括:①协议至少需要两个参与者。一个人可以通过执行一系列的步骤来完成某项任务,但它不构成协议。②协议自始至终是一个有序的过程。在前一步没有执行完之前,后面的步骤不允许执行,且每一个步骤必须执行。③通过执行协议必须能够完成某项任务。④协议本身必须明确且不存在歧义,而且是完善的,它能够给出各种可能情况的处理方式。协议的安全属性在协议执行完毕时能够得以实现和保障。
从不同的角度出发,安全协议有不同的分类方法。根据安全协议的功能,可以将其分为3类:①密钥交换协议。该类协议一般为通信双方或多方之间协商一个会话密钥,该会话密钥一般通过主密钥来产生。②认证协议。该类协议一般用来向一个实体提供对另一个实体身份的某种程度的确认,包括身份认证协议、消息认证协议、数据源认证协议和数据目的认证协议等。③认证密钥交换协议。该类协议结合了上述两者协议的目的,首先进行认证确定身份信息,通过认证后进行密钥交换来确定会话密钥,互联网中的大部分安全协议是该类协议。
此外,按照安全协议中采用的密钥算法的种类,又可以分为双钥(或公钥)协议、单钥(或私钥)协议或混合协议等;依据安全协议的应用环境,又可以分为互联网中的安全协议、卫星通信网络中的安全协议、无线传感器网络中的安全协议、射频识别(radio frequency identification,RFID)安全协议等;对于参与实体间拥有预共享长期密钥的安全协议,根据长期密钥的安全强度,又可以分为基于口令的安全协议和一般的预共享密钥安全协议。除此之外,还可以从其他的角度出发对安全协议进行分类。
常见的一些安全协议例子包括:零知识证明协议、安全多方计算协议、比特承诺协议、不经意传输协议、公平交换协议、秘密共享协议、抛硬币协议、共识协议、安全数字时间戳协议、IPSec协议、安全套接层协议(secure sockets layer,SSL)和安全传输层协议(transport layer security,TLS)、安全电子交易协议(SET)等等。
安全协议常见的安全属性包括:①机密性。如果参与者想防止其他参与者窃听协议执行中的信息,就应该使用适当的加密算法对信息进行保密。②可验证性。在协议执行的中间步骤(或结束时),每个参与者能够验证所收到的信息(或最终结果)的正确性。③认证性。接收信息者能够确信他所收到的信息确实来自期望的发送者。④完整性。协议中的每个信息都必须能够验证它的完整性,即没有被恶意的协议参与者或者外部攻击者篡改过。⑤不可否认性。一个是确认发方不可否认,亦即不可否认协议向接收方提供不可抵赖的证据,证明收到消息的来源的可靠性;二是不可否认协议向发送方提供不可抵赖的证据,证明接收方已收到了某条消息。⑥公平性。协议应该被设计成在协议执行的任何阶段,所有参与者都处于平等的地位,因而都可以选择终止该协议的执行而不使自己或其他协议参与者的利益受损。⑦匿名性。协议参与者可以隐藏自己的身份信息。⑧零知识。协议执行不泄露参与者的秘密信息。⑨可追究性。协议执行完毕后,某个参与方能够向第三方证明其他参与方对某个消息或行为负有责任。
一个协议所能遭受的攻击包括被动攻击和主动攻击两类。被动攻击主要是收集信息而不能进行篡改。被动攻击包括嗅探、信息收集等攻击方法。主动攻击是指具有攻击破坏性的一种攻击行为,攻击者可以主动地做一些不利于用户或信息系统的事情,包括信息内容和收发顺序篡改、协议用户秘密窃取等,会对用户或者信息系统造成直接的影响。常见的主动攻击包括:①重放攻击。重放攻击又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。②中间人攻击。中间人攻击是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上会话过程已被攻击者控制。③拒绝服务攻击。所谓的拒绝服务攻击是指通过占满服务器的所有服务线程或者网络带宽,导致正常的服务请求无法得到响应,从而致使服务器处于瘫痪的状态。分布式拒绝服务攻击是指利用足够数量的傀儡计算机产生数量巨大的攻击数据包,对网络上的一个或多个目标实施拒绝服务攻击(DoS攻击),从而耗尽受害目标的资源,迫使受害目标失去提供正常服务的能力。④数据篡改攻击。数据篡改攻击是指攻击者通过对协议参与方交互的信息进行篡改来实现欺骗协议参与方的目的。一般来说,数据篡改攻击适用于未认证的信息。⑤未知密钥分享(unknown key share)攻击。未知密钥分享攻击是一种中间人攻击,攻击者通过攻击达成如下目标:诚实的Alice认为它和Bob在一个会话中通讯,而诚实的Bob却认为它在和另外一个用户Evil在另一个会话中通讯。但是这两个并行会话的密钥相同,虽然敌手Evil并不知晓具体的会话密钥值。未知会话密钥攻击相当于密码协议领域的差分攻击,可以造成重大危害。⑥密钥损害伪装(key compromise impersonation)攻击。攻击者获得Alice的密钥可用于向Alice冒充诚实用户Bob,虽然敌手并不知晓Bob的密钥。⑦前向安全攻击。前向安全攻击指的是攻击者获得用户的长期私钥后,可将用户历史上参与的会话的会话密钥恢复出来。一个安全的密钥协商协议要求具有完美前向安全性(perfect forward security)。
要判断一个协议是否能够在具有敌手的非安全环境下正确地达到其预定的安全属性,必须依赖现代计算机的手段和数学模型,采用严格的分析方法做出令人信服的分析。对安全协议的分析方法大致可分为以下两类:①基于计算复杂性的方法。该方法又称计算方法,其主要思路是将协议的安全性与某些公认的困难问题关联起来。在安全性证明时,首先假设敌手能够以某种策略成功攻击协议,然后利用这种攻击策略,来构造概率多项式时间的解决该困难问题的方法。由于解决该难题的概率被公认是可忽略的,因此攻击协议成功的概率也是可忽略的。②形式化方法。该方法又称符号化方法,其主要思路是通过对协议各要素进行符号化抽象,将计算机科学中的各种形式化方法应用于安全协议的分析中。通常有定理证明的方法和模型检测的方法。
上述两种安全协议的分析方法各有优劣。基于计算复杂性的方法所给出的安全性结论更为量化和具体,可行度更高,但分析过程复杂,不易于自动化,而且很多时候根本无法在协议安全性与困难问题之间建立关联。形式化方法则分析过程简单,易于自动化,但由于采用了对于协议某些元素的抽象,降低了其分析结果的可信度。这种形势催生了以上两种方法融合的研究,即计算可靠的形式化方法,其思路是同时建立安全协议的形式化模型和计算模型,然后证明在形式化模型下的安全性可被映射或解释为计算模型下相应的安全性。这既保证了证明结果的计算可靠性,又可保持形式化验证的简洁性。但该方法在具体实施中还有很多问题需要解决。一个本质的问题在于,这种形式化模型的抽象程度如何把握:一个抽象程度低的方案可给出更具体的安全结论,但往往会使得协议的安全性难以判定,使其难以自动化;而抽象程度高的形式化模型又往往会使得一些安全隐患被忽视。
安全协议是构建安全网络环境的基石。同时,安全协议对于电子商务、电子政务、数字经济、大数据、区块链、云计算、人工智能、车联网等应用中的用户隐私保护、数据安全等诸多方面也具有至关重要的意义。