InformationSecurity:Principles&Applications第7章密钥管理Char7pp.2密钥管理的意义网络安全服务所依赖的基础之一就是对传送数据的加密,不论是链路加密方式还是端到端的加密方式都是密钥技术的应用。由于密钥技术的核心内容是通过加密方法把对大量数据的保护归结为对若干核心参量——密钥的保护,因此网络系统中加秘密钥管理问题就成为首要的核心问题。密钥的管理综合了密钥的生成、分配、存储、销毁等各个环节中的保密措施。宗旨:确保使用中密钥的安全。Char7pp.3密钥长度决定密钥长度需要考虑多方面的因素:数据价值、数据的安全期、攻击者的资源情况不同信息安全需求计算机计算能力和加密算法的发展选择比需要的密钥长度更长的密钥。Char7pp.4对称密钥长度对称密码体制的安全性是算法强度和密钥长度的函数:前者比较重要,后者更容易描述。Kerckhoffs假设,密码体制的安全性依赖于密钥,而不是依赖算法的细节。穷举攻击所需的时间及所花的代价。Char7pp.5硬件穷举攻击对称密钥的平均时间估计(1995年)Char7pp.6公钥密钥长度破译公钥密码的出发点是试图分解大整数(或者在一个非常大的有限域内取离散对数)选择公钥密码体系时为了决定所需要的密钥长度,必须考虑所需的安全性和密钥的生命周期以及了解当前因子分解技术的发展水平。Char7pp.7攻击难度相当的对称密钥密码和公钥密码的密钥长度(位)用对称密钥算法和公开密钥算法设计安全系统是应该避免“木桶效应”。Char7pp.8密钥生成的重要性算法安全性依赖于密钥,使用一个弱的密钥生成方法会导致整个体制的脆弱。如果攻击者能够破译密钥生成算法,就不需要试图去破译加密算。Char7pp.9密钥选择选择密钥,应尽量避免弱密钥。(安全性较弱的密钥)尽量避免容易记忆的安全性差的密钥:如用户的姓名、简写字母、帐户姓名和其他有关的个人信息等;字典攻击。(综合考虑用户的姓名、简写字母、帐户姓名和其他有关的个人信息等从各种数据库中得到的单词,攻击者可生成一本公用的密钥字典,然后逐个尝试。)字典攻击用作破译系统密钥文件而不是单个密钥时显得更加有效。攻击者首先尝试最可能密钥。最好的密钥还是随机密钥,但不容易记忆。比较好的办法是利用一个完整的短语代替一个单词,然后将该短语转换成密钥(通行短语)。Char7pp.10随机数在网络安全中的主要应用生成密钥。相互认证:密钥分配过程中使用一次性随机数防止重放攻击(现时)。对称密码密码体制中会话密钥的生成。公钥密码体制中密钥的生成。Char7pp.11随机数随机数列要求满足随机性和不可预测性。随机性,评价随机性通常有两个准则:均匀分布性,比较容易检测;独立性,一般只能通过反向验证(即无法证明不满足独立性)来保证其独立性。不可预测性由随机数列的相互独立性来保证。网络安全中的随机数通常借助于安全的密码算法产生的,由于算法是确定的,由此产生的数列不是真正随机的但能通过各种随机性进行检测,称为伪随机数。Char7pp.12伪随机数生成器线性同余算法。基于密码算法的随机数生成器循环加密;DES的输出反馈(OFB)模式;ANSIX9.17密钥生成器。BBS(Blum-Blum-Shub)生成器。Char7pp.13线性同余算法有四个参数模数m(m0);乘数a(0≤am);增量c(0≤cm);种子X0(0≤X0m);由迭代公式得到随机数数列{Xn}。mcaXXnnmod)(1Char7pp.14线性同余算法的性能迭代函数应是整周期的,即数列中的数在重复之前应产生0到m之间的所有数。产生的数列看上去是随机的。虽然实际上数列是确定的(因为算法和参数是确定的),但是可以通过各种统计检测来评价数列的随机性。迭代函数能有效地运用32位/64位运算来实现。Char7pp.15线性同余算法的问题算法本身并不具有随机性,生成的数列实际上是确定的。如果能确定X0,X1,X2,X3,就可以通过以下方程组解出a,c和m:解决办法:可以通过利用系统时钟修改随机数数列来改进每产生N个数后利用当前的时钟值模m作为新种子;直接把当前的时钟值模m加到每个随机数上。实现参考:)(01mcaXXmod)(12mcaXXmod)(23Char7pp.16循环加密方式生成伪随机数周期为N的计数器CC+1加密算法主密钥KmXt=Ekm[c+1]Char7pp.17DES的输出反馈(OFB)模式可以用系统中断向量、系统状态寄存器和系统计数器生成DES密钥;用系统时钟、系统ID号、日期、时间生成初始化向量;用外部生成的64位数据作为明文输入(V0),如系统管理员键入的8个字符。这样,最后的输出就是生成的密钥(随机数)。Char7pp.18ANSIX9.17密钥生成器ANSIX9.17标准是美国国家标准化协会制订的金融机构密钥管理规范;ANSIX9.17标准制定于1985年,对金融机构的密钥管理进行了规范。ANSIx9.17标准规定了一种密钥生成算法,更适合于在系统中产生会话密钥或者随机数,是密码强度最高的伪随机数生成器之一。目前已经在PGP等许多应用中被采纳。用来生成密钥的加密算法是(两个密钥的)三重DES。]][[iKiKiTEVER]][[1iKiKiTEREV实现参考:=E(K1,D(K2,E(K1,P)))Char7pp.19BBS(Blum-Blum-Shub)生成器已经被证明的密码强度最高的伪随机数生成器。工作流程如下:首先选择两个大素数p,q,满,令。再选一个随机数s,使s余n互素。然后按照以下算法产生比特序列:即在每个循环中,取Xi的最低有效位即可组成随机比特序列{Bi},密码分析者既不能预测序列中的下一位,也不能预知序列的前一位。)4(mod3qpqpn}{iB}2mod;mod{doto1formod2120iiiiXBnXXinsXChar7pp.20非线性密钥空间非线性密钥空间是指所有密钥的密码强度并不相等,即采用某种特殊保密形式的密钥会进行正常的加解密(称为强算法密钥),而其他的密钥都会引起加解密设备采用非常弱的算法加解密(称为弱算法密钥)。Char7pp.21非线性密钥空间生成采用两种方法生成密钥:密钥本身(弱算法密钥)和用该密钥加密的某个固定字符串(强算法密钥)。解密设备用这个密钥对字符串进行解密,如果收到那个固定的字符串就正常解密,否则就用另一个非常弱的算法进行。设计一种算法使某些密钥比别的密钥更强。注意使用非线性密钥空间仅当在算法是安全的,并且攻击者不能对其进行反控制,或者密钥强度的差异足够细微,以至于攻击者不能感觉或计算出来时才是可行。Char7pp.22密钥分配解决的问题:自动密钥分配,提高系统的效率;减少系统中驻留的密钥量,提高安全性。典型的两类自动密钥分配途径集中式分配方案:利用网络中的密钥分配中心(keydistributioncenter,KDC)来集中管理系统中的密钥,密钥分配中心接收系统中用户的请求,为用户提供安全地分配密钥的服务。分布式分配方案:分布式分配方案是指网络中各主机具有相同的地位,它们之间的密钥分配取决于它们自己的协商,不受任何其他方面的限制。通常采取两种方案的混合:主机采用分布式方式分配密钥,而主机对于终端或它所属的通信子网中的密钥可采用集中方式分配。Char7pp.23对称密钥分配的基本方法①密钥由A选取并通过物理手段发送给B;②密钥由第三方选取并通过物理手段发送给A和B;③如果A、B事先已有一密钥,则其中一方选取新密钥后,用已有的密钥加密新密钥并发送给另一方;④如果A和B与第三方C分别有一保密信道,则C为A、B选取密钥后,分别在两个保密信道上发送给A、B。Char7pp.24人工密钥分配共享密钥方式1、2称为人工发送。采用网络链路加密时,人工发送是可行的。采用端到端加密时,人工发送是不可行的。因为加密是在网络层,则网络中的任何一对希望通信的主机都必须有一个共享密钥,需要密钥数量很大;如果加密是在应用层,则任何一对希望通信的用户和进程都必须有一共享密钥,密钥数量更大。Char7pp.25已有密钥加密新密钥分配使用范围:链路加密、端到端加密局限性:攻击者一旦获得一个密钥就可以很方便的获得以后所有的密钥。对所有主机或用户分配初始密钥代价非常大。Char7pp.26与第三方保密通信的密钥分配广泛用于端到端加密方式的密钥分配,其中的第三方通常是一个负责为用户(主机、进程、应用程序)分配密钥的密钥分配中心。这时每一个用户必须和密钥分配中心有一个共享密钥,称为主密钥。通过主密钥分配给一对用户的密钥称为会话密钥,用于这一对用户之间的保密通信。通信完后,会话密钥即被销毁。在这种情况下,如果用户数为n,则会话密钥数为n(n-1)/2。但是主密钥数却只需n个,所以主密钥还是可以通过物理手段发送的。Char7pp.27密钥分配实例(1)假定两个用户A、B分别与密钥分配中心有一个共享的主密钥KA和KB,A希望与B建立一个逻辑连接,并希望有一个一次性会话密钥来保护该连接上的数据传送,分配过程见下图。Char7pp.28密钥分配实例(2)1.A向KDC发出会话密钥请求。表示请求的消息由两个数据项组成,一是A和B的身份,二是这次业务的惟一识别符,每次请求所用的都应不同,且为防止假冒,应使敌手对难以猜测,因此用随机数作为这个识别符最为合适。2.KDC对A的请求发出应答。应答是由加密的消息,因此只有A才能成功地对这一消息解密,并且A可相信这一消息的确是由KDC发出的。消息中包括A希望得到的两项:一次性会话密钥;A在第1步中发出的请求,包括一次性随机数,目的是使A将收到的应答与发出的请求相比较,看是否匹配。因此A能验证自己发出的请求在被KDC收到之前,未被他人篡改。而且A还能根据一次性随机数相信自己收到的应答不是重放的对过去的应答。此外,消息中还有B希望得到的两项:一次性会话密钥;A的身份(例如A的网络地址)这两项由加密,将由A转发给B,以建立A、B之间的连接并用于向B证明A的身份SK1NAKAIDBKBK1N1NChar7pp.29密钥分配实例(3)3.A存储密钥并向B转发。因为转发的是加密后的密文,所以转发过程不会被窃听。B收到后,可得到会话密钥Ks,并从可知另一方是A,而且还从知道的确来自KDC。这一步完成后,会话密钥就安全地分配给了A、B。然而还能继续以下两步。4.B用会话密钥加密另一个一次性随机数,并将加密结果发送给A。5.A以作为对B的应答,其中是对进行某种变换(例如:加1)的函数,并将应答用会话密钥加密后发送给B。这两步可使B相信第3步收到的消息不是一个重放消息。ASKIDKEBSK2N)(2NffAIDBKE2NChar7pp.30比较与图7.3分配方案的优缺点Identitiesofpartners.Howfrequentlythepartnersarecommunicating.Messagepattern,messagelength,orquantityofmessagesthatsuggestimportantinformationisbeingexchanged.TheeventsthatcorrelatewithspecialconversationsbetweenparticularpartnersChar7pp.31KDC的分层网络中的用户数目非常多且地域分布非常广,可采用分层结构。(1)在每个小范围(如一个LAN或一个建筑物)内建立一个本地KDC,负责该范围内的密钥分配;(2)如果两个不同范围