一般来说,在应用层提供安全服务有几种可能的做法,第一个想到的做法大概就 是对每个应用(及应用协议)分别进行修改。一些重要的TCP/IP应用已经这样做了。 在RFC 1421至1424中,IETF规定了私用强化邮件(PEM)来为基于SMTP的电子邮件系 统提供安全服务。由于种种理由,Internet业界采纳PEM的步子还是太慢,一个主 要的原因是PEM依赖于一个既存的、完全可操作的PKI(公钥基础结构)。PEM PKI是 按层次组织的,由下述三个层次构成:
顶层为Internet安全政策登记机构(IPRA)
次层为安全政策证书颁发机构(PCA)
底层为证书颁发机构(CA)
建立一个符合PEM规范的PKI也是一个政治性的过程,因为它需要多方在一个共同 点上达成信任。不幸的是,历史表明,政治性的过程总是需要时间的,作为一个 中间步骤,Phil Zimmermann开发了一个软件包,叫做PGP(pretty Good Privacy)。 PGP符合PEM的绝大多数规范,但不必要求PKI的存在。相反,它采用了分布式的信 任模型,即由每个用户自己决定该信任哪些其他用户。因此,PGP不是去推广一个 全局的PKI,而是让用户自己建立自己的信任之网。这就立刻产生一个问题,就是 分布式的信任模型下,密钥废除了怎么办。
S-HTTP是Web上使用的超文本传输协议(HTTP)的安全增强版本,由企业集成技术公 司设计。S-HTTP提供了文件级的安全机制,因此每个文件都可以被设成私人/签字 状态。用作加密及签名的算法可以由参与通信的收发双方协商。S-HTTP提供了对 多种单向散列(Hash)函数的支持,如: MD2,MD5及SHA; 对多种单钥体制的支持, 如:DES,三元DES,RC2,RC4,以及CDMF; 对数字签名体制的支持,如: RSA和D SS。
目前还没有Web安全性的公认标准。这样的标准只能由WWW Consortium,IETF或其 他有关的标准化组织来制定。而正式的标准化过程是漫长的,可能要拖上好几年, 直到所有的标准化组织都充分认识到Web安全的重要性。S-HTTP和SSL是从不同角 度提供Web的安全性的。S-HTTP对单个文件作“私人/签字”之区分,而SSL则把参 与通信的相应进程之间的数据通道按“私用”和“已认证”进行监管。Terisa公 司的SecureWeb工具软件包可以用来为任何Web应用提供安全功能。该工具软件包 提供有 RSA数据安全公司的加密算法库,并提供对SSL和S-HTTP的全面支持。
另一个重要的应用是电子商务,尤其是信用卡交易。为使Internet上的信用卡交 易安全起见,MasterCard公司(同IBM,Netscape,GTE和Cybercash一道) 制定了 安全电子付费协议(SEPP),Visa国际公司和微软(和其他一些公司一道)制定了安 全交易技术(STT)协议。同时,MasterCard,Visa国际和微软已经同意联手推出I nternet上的安全信用卡交易服务。他们发布了相应的安全电子交易(SET)协议, 其中规定了信用卡持卡人用其信用卡通过Internet进行付费的方法。这套机制的 后台有一个证书颁发的基础结构,提供对X.509证书的支持。
上面提到的所有这些加安全功能的应用都会面临一个主要的问题,就是每个这样 的应用都要单独进行相应的修改。因此,如果能有一个统一的修改手段,那就好 多了。通往这个方向的一个步骤就是赫尔辛基大学的Tatu Yloenen开发的安全sh ell(SSH)。SSH允许其用户安全地登录到远程主机上,执行命令,传输文件。它实 现了一个密钥交换协议,以及主机及客户端认证协议。SSH有当今流行的多种Uni x系统平台上的免费版本,也有由Data Fellows公司包装上市的商品化版本。
把SSH的思路再往前推进一步,就到了认证和密钥分配系统。本质上,认证和密钥 分配系统提供的是一个应用编程界面(API),它可以用来为任何网络应用程序提供 安全服务,例如: 认证、数据机密性和完整性、访问控制以及非否认服务。目前 已经有一些实用的认证和密钥分配系统,如: MIT的Kerberos(V4与V5),IBM的Cr yptoKnight和Netwrok Security Program,DEC的SPX,Karlsruhe大学的指数安全 系统(TESS)等,都是得到广泛采用的实例。甚至可以见到对有些认证和密钥分配 系统的修改和扩充。例如,SESAME和OSF DCE对Kerberos V5作了增加访问控制服 务的扩充,Yaksha对Kerberos V5作了增加非否认服务的扩充。
关于认证和密钥分配系统的一个经常遇到的问题是关于它们在Internet上所受到 的冷遇。一个原因是它仍要求对应用本身做出改动。考虑到这一点,对一个认证 和密钥分配系统来说,提供一个标准化的安全API就显得格外重要。能做到这一点, 开发人员就不必再为增加很少的安全功能而对整个应用程序大动手术了。因此, 认证系统设计领域内最主要的进展之一就是制定了标准化的安全API,即通用安全 服务API(GSS-API)。GSS-API(v1及v2)对于一个非安全专家的编程人员来说可能仍 显得过于技术化了些,但德州Austin大学的研究者们开发的安全网络编程(SNP), 把界面做到了比GSS-API更高的层次,使同网络安全性有关的编程更加方便了。