第1章安全协议概述
如果把一封信锁在保险柜中,把保险柜藏在纽约的某个地方,然后告诉你去看这封信,这并不是安全,而是隐藏。相反,如果把一封信锁在保险柜中,然后把保险柜及其设计规范和许多同样的保险柜给你,以便你和世界上最好的开保险柜的专家能够研究锁的装置,而你还是无法打开保险柜去读这封信,这才是安全的概念。隐藏是攻击者不知道从何下手,安全是你知道也没办法下手。
上述类比中,可以如此理解安全体系中的各个部件:数学是保险柜的材质,坚固可靠。密码学是锁,利用符合条件的数学知识构造。安全协议是保险柜,其完美整合的设计是实践化的最佳载体。保险柜保护的内容就是安全协议保护的互联网上的各种应用。
1.1安全协议的基本概念
信息安全是一个没有尽头的任务,信息社会存在一天,信息安全就会存在一天。攻防共生共存,魔高一尺,道高一丈,反之亦然。完美的理论,并不一定能够解决信息安全的实际问题,理论到实践是一个系统工程,而安全协议的模型与设计是这个工程的核心,是承载信息安全体系的脊梁,是应用选择理论的载体:设计安全协议不单单是基于技术本身,也要考虑应用的成本、代价和体验。
1.1.1定义
所谓协议(protocol),就是两个或两个以上的参与者为完成某项特定的任务而采取的一系列步骤。这包含三层含义:①协议自始至终是有序的过程,每一个步骤必须依次执行。在前一步没有执行完之前,后面的步骤不可能执行。②协议至少需要两个参与者。一个人可以通过执行一系列的步骤来完成某项任务,但它不构成协议。③通过执行协议必须能够完成某项任务。
协议还有其他特点。
(1)协议中的每个人都必须了解协议,并且预先知道所要完成的所有步骤。
(2)协议中的每个人都必须同意遵循它。
(3)协议必须是不模糊的,每一步必须明确定义,并且不会引起误解。
(4)协议必须是完整的,对每种可能的情况必须规定具体的动作。
安全协议(securityprotocol)是建立在某种体系(密码体制、量子禀性)基础上且提供安全服务的一种交互通信的协议,它运行在计算机通信网络或分布式系统中,借助于特定算法来达到密钥分配、身份认证等目的。安全协议的密码基础是由三类基石构造的,如图1.1所示。
图1.1三类密码学的理论基础
安全协议的通信系统基本安全模型如图1.2所示。
图1.2通信系统的安全模型
安全协议的参与者可能是可以信任的实体,也可能是攻击者和完全不信任的实体。安全协议的目标不只是实现信息的加密传输,参与协议的各方可能希望通过分享部分秘密来计算某个值、生成某个随机序列、向对方表明自己的身份或签订某个合同等。解决这些安全问题就需要在协议中采用密码技术,因为它们是防止或检测非法用户对网络进行窃听和欺骗攻击的关键技术措施。对于采用这些技术的安全协议,如果非法用户不可能从协议中获得比协议自身所体现的更多的、有用的信息,那么可以说协议是安全的。安全协议中采用了多种不同的密码体制,其层次结构如表1.1所示。
表1.1安全协议层次结构
高级协议:身份认证、不可否认、群签名;量子密钥分发、博弈量子密钥协商
基本协议:数字签名、零知识、秘密共享;量子签名
基本算法:对称加密、非对称加密、Hash函数;量子Hash函数
基础:核心断言、数论、抽象代数、数学难题;不可克隆、真随机性
从表1.1可看出,安全协议建构在数学或量子信息科学基础和基本算法之上,并且往往涉及秘密共享、加密、签名、承诺、零知识证明等许多基础协议,因此安全协议的设计比较庞大且复杂,设计满足各种安全性质的安全协议成为一项具有挑战性的研究工作。
当前存在着大量的实现不同安全服务的安全协议,其中最常用的基本安全协议按照其完成的功能可分类起名,如电子支付协议、分布式环境下的身份鉴别协议、不可否认协议、密钥协商协议等。
1.1.2目的
在日常生活中,几乎所有的事情都有非正式的协议:电话订货、玩扑克、选举中投票,人们都知道怎样使用它们,而且它们也很有效。随着信息技术的高速发展,将这些现实的协议功能转化为数字,从而在计算机世界中实现是顺理成章的事情。越来越多的人通过计算机网络交流代替面对面的交流,计算机需要正式的协议来完成人们不用考虑就能做的事情,虽然方便大众,但也不是很容易就能实现的:如果你从一个城市迁移到另一个城市,可能会发现投票亭与你以前使用的完全不同,你会很容易去适应它,但计算机就不那么灵活了。
许多面对面的协议依靠人的现场存在来保证公平和安全。你会交给陌生人一叠现金去为你买食品吗?如果你没有看到他洗牌和发牌,那么你愿意和他玩扑克吗?如果没有匿名的保证,那么你会将秘密投票寄给政府吗?
那种假设使用计算机网络的人都是诚实的想法,是天真的。天真的想法还有:假设计算机网络的管理员是诚实的,假设计算机网络的设计者是诚实的。当然,绝大多数人是诚实的,但是不诚实的少数人可能招致很多损害。通过规定协议,可以查出不诚实者企图欺骗的把戏,还可开发挫败这些欺骗者的协议。
除了规定协议的行为,还根据完成某一任务的机理,抽象出完成此任务的过程。由于基本底层通信协议是相同的,对于高层的安全协议是一个黑盒子,所以我们专注设计协议流程与分析,而不用受限于具体的实现。
1.1.3游戏角色
为了帮助说明协议,通常选出几个人作为助手:Alice和Bob是开始的两个人。他们将完成所有的两人协议。按规定,由Alice发起所有协议,Bob响应。如果协议需要第三或第四人,那么Carol和Dave将扮演这些角色。由其他人扮演的专门配角,如表1.2所示。
表1.2剧中人
游戏角色可以扩展为N方,其行为可以分为外部攻击和内部攻击,攻击参与方可以分为个体或团体。因此,四组攻击方式可分为:个体外部攻击、个体内部攻击、团体外部攻击和团体内部攻击。四种攻击方式因目标和意义不同而不同。但通常来说,四种攻击从前往后越来越复杂。
经典案例内部团体协作之拜占庭将军问题
问题描述如下。
(1)1982,Lamport(SRI),Pease,Shostak。
(2)几个将军围困一座城池,大家必须协商一种策略,进攻还是撤退。
(3)如果有的进攻,有的撤退就有可能打败仗。
(4)条件:有的将军叛国,希望爱国的将军打败仗(破坏达成一致)。
(5)目标:有什么办法使爱国的将军在这种环境下达成一致?
问题抽象如下。
(1)消息的传送是可靠的。
(2)所有的将军可以互相发消息,也可以传递消息。例如,一个叛变的将军可以告诉将军A“B要攻城”,并告诉将军C“B要撤退”。
(3)口头消息模型和书写消息模型。
(4)目标是达成一致,而不是找背叛的将军。
口头消息如下。
(1)解决的办法:每个爱国者都采用多数人的意见一致算法。
(2)这要求每个爱国者得到相同的表决。
(3)面临的问题就变为:每个爱国的将军获得的其他将军的观点是相同的(每个将军都有一个其他将军的决策)。如果将军i是爱国的,则其他将军必须得到将军i的真实决策。
解决方案为采用多数投票表决方式。
例1.13个忠诚将军,1个叛变将军。Lamport递归算法,共4步,如图1.3所示。
(a)对外报告(b)收集向量(c)报告向量(d)生成结果向量:(1,2,未知,4)。
例1.2若三个将军中,有两个忠诚将军,一个叛变将军,则不能判断出哪个将军叛变,如图1.4所示。
最终结论如下。
展开