正文

协议(18)

信息安全工程(第2版) 作者:(英)罗斯·安德森


3.7.4  可行的密钥管理

我们可以使用类似于Kerberos的协议来建立与管理用户之间实际工作的密钥,这要求每个用户与充当密钥分发中心的服务器之间共享一个或多个长期密钥。本书后面将描述大量其他类似协议,比如第10章将讨论银行如何与其每台ATM以及与其连接的每个银行内网络建立长期共享密钥,之后,银行会使用与Kerberos不太相同的协议与其每台ATM以及网络交换机建立一个日密钥,因此,当你在属于其他银行的ATM上进行操作并试图通过Cirrus网络取钱时,ATM将使用其与所属银行共享的工作密钥对交易数据进行加密,之后,银行将使用该网络的日密钥进行加密的交易数据传递给Cirrus网络。

到现在似乎一切都不错,但只要稍稍考虑一下就会发现,如果按上面的方式实现,银行就必须为其所拥有的数百台ATM取款机分别维护不同的密钥——?一个长期的主密钥,可能还需要一个加密密钥与一个身份验证密钥,银行网络的每个子网络都需要一些密钥。数百万电子银行客户使用的密码与安全信息,如果这些客户所在计算机上安装了使用密码学机制的客户端,也需要为其提供相应密钥。此外,还需要为数千个员工提供加密的密码,形式上也可能是使用用户密码加密的Kerberos密钥。面对如此之多的密钥原料,如何进行管理?

密钥管理是一个复杂而困难的问题,并且经常出错,因为这通常不是要考虑的首要问题。一个负责任的工程师会认真思考需要多少个密钥、如何生成这些密钥、密钥需要存活多久以及最终如何销毁密钥。还有更多需要考虑的问题,Federal Information Processing Standard for key management[948]中列出了大多数这类问题。此外,由于应用程序的不断演化,会导致出现新的问题,所以提供额外密钥以支持未来的功能是重要的,这样就不会因为在不兼容的协议中重用而导致现有功能损坏。为从安全失败中恢复提供必要支持也是重要的。然而,这些都没有标准的做法。

有很多实际可行的策略,但没有哪一种是直截了当的。公钥加密(将在第5章进行讨论)可以在一定程度上简化密钥管理的工作,长期密钥可以分为私钥与公钥两个部分,你不需要保存公钥部分,但必须保证其完整性。在银行系统中,通常的做法是使用称为安全模块的专用密码处理器,第16章将对其进行详细描述。这些设备完成所有密码学处理,并包含一些用于保护应用程序密钥的内部密钥。由此,你可以让安全模块为每个ATM生成主密钥,并将其加密后的值存放在ATM主文件中。当有来自某个ATM的交易数据时,就可以从该文件中取回加密后的密钥,并将加密数据与其一起传送给安全模块,之后由安全模块进行必要的处理:对PIN进行解密,并对其进行验证——或许通过与本地保存的加密值进行比较来实现。遗憾的是,用于完成这些操作的协议经常会失败。有很多种攻击方法可以渗透安全模块的应用程序接口(API),而协议在API中是暴露的。第18章将详细描述这些攻击方法。现在只要知道让安全协议正确运行并不容易就足够了。你不能在家中设计协议,这比设计爆炸装置可要复杂得多。


上一章目录下一章

Copyright © 读书网 www.dushu.com 2005-2020, All Rights Reserved.
鄂ICP备15019699号 鄂公网安备 42010302001612号