安全性与保密性
James Snell(jasnell@us.ibm.com),软件工程师,IBM Software Group
Maryann Hondo(mhondo@us.ibm.com),Web 服务安全标准领导,IBM Software Group
2001 年 9 月
Web 服务架构为创建基于 Web 的应用的开发者们带来了许多新的机遇和好处。而对于企业来说,它同时带来了新的挑战。在 Web 服务内幕接下去的几个部分中,我们将着重介绍这些挑战究竟是什么、它们是如何影响整个架构的,以及一些关于我们(我们中那些受命解决这些问题的人 — 包括许多在 IBM 的安全、研究以及标准化领域工作的人)如何对其进行处理的内容。我们从每个人都关心的问题开始:安全性与保密性。
Web 服务架构的核心功能之一便是它允许一些公司在它们需要的时候仅采用该架构中对它们最有价值的一小部分。我们称其为渐增式实现,它将是(或许仍有争议)有助于整个架构的成功的最关键的组件之一。然而,一个重要的问题是:为了让 Web 服务在企业环境中有用,Web 服务架构就必须成熟,以便支持诸如安全性、事务、持久性等关键事项,以及更高级别上的业务流程和商业服务。技巧是用一种保留渐增式实现模型的方式提供这些功能的实现。用一句老话来说,那是说起来容易做起来难。我们以 Web 服务内幕的这一部分作为起点,开始研究企业 Web 服务所必须解决的各种要求。首先,我们将重点研究安全性。
应用在 Web 服务里安全性中的渐增式实现原则意味着您 — 企业业务应用程序的开发者 — 必须确定什么是专业技术领域里应用程序的“安全性的适当级别”。随着您的要求随时间而改变,您可以选择在现有框架的顶层添加新级别的安全性,而无须重新构建整个框架。
提出恰当的问题 在企业环境中,保护进行交换的信息的安全性和保密性对于 Web 服务架构的成功来说是绝对关键的。看上去与这一渐增式实现形成对比的是,安全性必须建立在企业 Web 服务框架的基础层中。随着复杂的同种平台(如 COM 和 CORBA)被推向开发者,先前这样的尝试定义全面的安全体系结构的问题被紧密联系起来了。因此,我们有了一个难题:我们如何设计一个兼有以下特征的安全性框架呢:(1)简单;(2)能够传递 Web 服务所要求的不同环境?要回答这个问题,我们还必须做一些事。
首先,我们必须提出,而您必须回答正确类型的问题(毕竟,对开发者们来说,需要投入到对该架构的安全性和保密性要求的深入研究中去)。这些问题试图确定我们所处理的问题的范围。它们包括如下的内容:“保护我的应用程序意味着什么?”或者“怎样才能证明我就是那个该去接收特定的简单对象访问协议(Simple Object Access Protocol,SOAP)消息的人?”要回答这些问题,我们得利用在其它架构中实现安全性所获得的经验,但有一点区别,那就是答案无法带来与以前所开发的那样紧密联系的架构相同的架构。
那么问题是什么呢?我们需要回答的问题的类型包括一些明显重要的,如“我怎样才能向您证明我是谁?”以及“怎样才能确保公司 XYZ 只能将我的电子邮件地址用于向我发送应用软件提醒通知,而不是新产品的销售广告呢?”我在下文中仅列出了一些我们试图解决问题根源的普遍问题。
-
我是谁?这个问题直接涉及了如何管理一个私人身份,以及是哪种类型的信息定义了那个身份。和运用于人一样,这个问题也同样适用于应用程序和设备。在进行在线贸易时,定义您是谁的信息非常关键。那个信息的安全性极为重要。并且您绝对需要有能力控制那个信息如何使用、谁被允许访问那个信息以及该信息储存在何处。还须指出的是,一个单独的个人,事实上可能有多个反映其充当的不同角色的数字身份。例如,我既有 IBM 员工的身份也有 Visa 消费者的身份。我将决定是否将这两个身份联系起来。
-
我如何证明我是谁?随着使用数字身份的出现,身份被盗的潜在危险就增加了。而证明我就是我自称的人的能力就变得十分关键。在“现实世界”中,我们通过出示证据来证明自己的身份,如由可信的第三方为我们发放的身份证、信用卡等。那些第三方验证我们的凭证,并在此标记的基础上接受我们的身份。而在数字世界中,由可信的证书权威机构发放的 PKI 证书可以被视为提供了一个所声称的身份的“证据”。
-
我如何才能控制您对我的了解?有些时候您会需要了解关于我的一些情况以便完成我要求您为我行使的任务。例如,如果我要您来我家粉刷房子,您就需要了解我的地址。但您不需要了解我的银行账户里有多少存款。关键是:有些事您需要知道,而有些事您不需要知道。同时,我需要能准确地控制允许您如何使用我所提供给您的信息。例如,我将地址给您的唯一目的就是让您过来粉刷我的房子,而不是让您每周一次地发广告给我。
-
我是否有权访问您所提供的服务?这只是因为您可能提供各种服务,但这并不意味着我得到使用它们的许可。
-
我们如何协商我访问您所提供的服务的能力?如果我当前无法访问您的服务,那么我如何作一些调整才能获得访问它们的许可,以及在何种条件下我才能获得允许去访问它们?
-
如何才能知道我们是否可以彼此信任?所幸的是,在线建立信任关系是一个已经建立了良好基础的问题,但仍有不少事需要做。开发者们(也就是像您那样的本文的读者)需要在设计应用程序的安全性并协助扩大在线交易中信任某人的范围等方面充当一个积极的角色。只有当我们在为那种信任建立技术和业务框架的过程中协同工作,我才能够信任您。
-
我如何才能保护自己不受身份盗窃和欺骗?监视并审查某个人的数字身份和个人信息的能力绝对重要。
-
我们如何来保护交易的诚实性?加密、可靠的消息传递和访问控制都在保证你我在贸易过程中贸易能保持其机密性和诚实性方面起到了关键作用。我必须确信当我预订 10 箱小配件的时候,我最终不会因为我无法证明我仅预订了 10 箱而被迫购买 100 箱小配件。这是电子商务中的一个经典问题,也是许多技术和标准化措施的驱动力。
-
我该将这些问题的答案提供给哪个可以信任的一方?啊,这是个很重要的问题。Web 服务领域内的情况是,定义您的数字身份的信息将储存在某个(运气好的话)可信的第三方。例如,如果您选择利用 Microsoft 的 Hailstorm 服务,Microsoft(不论你是否信任他们从事该工作)将定义您的个人信息将以何种方式储存在哪里,以及定义哪种机制来保护并管理那些信息。在企业环境中,您要信任任何一个向您要求个人或业务信息的第三方都需作出巨大的努力。选择已经与您建立了关系的供应商是个明智的选择;但您必须小心不要陷入这样一种境地,那就是服务供应商对您的信息管理的控制比您更多。如果没有要求的话,但我们仍建议您将这一切集成到现有的策略和安全性基础结构中去。
找到正确的答案
正如以前曾提及的,正确地回答这些问题将对 Web 服务的成功起到重要作用。答案必须把我们引向一个围绕渐增式实现原则的架构,而非一个破坏该原则的架构。那么如何实现这一点呢?
我们必须做的第一件事就是继续开发各种推动 Web 服务架构的独立标准。SOAP、WSDL、UDDI、安全断言标记
语言(Security Assertions Markup Language,SAML),以及 XML 密钥管理系统(XML Key Management System,XKMS)等技术都起了重要作用,并且无论应用(您的应用)的需要是什么,它们在能够相互协同工作或彼此完全分离的情况下均各有特点。
我们所要做的第二件事是识别 Web 服务的安全性架构所需要包含的核心组件。诸如身份管理、用户档案管理以及策略管理等组件都是显而易见的。诸如建立信任、监视、计量与记帐以及协商等组件也同样重要,但并不那么直观。每一个组件都需定义完整,这样您就不必在使用其中一个的时候明确地需要使用另一个 — 或者至少,开发者会得到一个机会来选择他或她使用哪种实现,以及这些实现如何融入现有的环境中去。企业的开发者们不应被迫依赖此类服务的单一的供应商。
带出了第三件事的是:任何一种 Web 服务的安全性架构都不应要求您改变现有的安全性架构。与 Microsoft Passport 等不与现有的企业安全基础结构结合的机制不同,企业用户需要找出(所需求的)解决方案是一个能够补充支持现有的投资、现有的关系以及现有的策略等的架构,而非一个要替代那些现有的基础结构的架构。
下一步是什么?
为 Web 服务定义一个异质的、渐增式实现安全架构所需的核心是标准。开放标准是用开放式处理开发的。SAML 和 XKMS 创立就是这种企业需要采纳的措施的示例,这些措施正是整个更大的问题的关键组件。和 Verisign、Entrust 以及许多其它企业和安全性技术领域的主要对手一样,IBM 也积极投入到了与这些措施有关的工作中去。下一步您所要做的是加速这些措施所集合起来的工作。另外,考虑到商家们将很快作出决定是否希望支持基于 Web 服务的身份和安全性管理(Windows XP 将伴随嵌入的 Microsoft Passport 发行),我建议您开始分析该服务需要提供些什么才能满足您的需要,以及那些现有的服务就它们现在存在的状况来说是否真正实现了您需要它们完成的任务。我们在下面列出的参考资料应该能协助您向正确方向发展。
参考资料
关于作者
James Snell 既是个作家又是个开发者,并且是 IBM Web 服务开发小组的最新成员之一。他带着在定制企业应用开发和商家对商家的集成领域的丰富经验和对 Web 技术前沿的巨大热情来到了 IBM。您能通过 jasnell@us.ibm.com 与他联系。
|
Maryann Hondo 于 1996 年加入 Lotus。她目前是 IBM Web Services Security Standards Lead。以前,她曾是新兴技术的安全性设计师,以及提供 IETF PKIX 参考实现的 IBM/Iris Jonah 小组的成员。她在 Lotus 是 Lotus Java e-Suite 产品的安全性设计师。在加入 Lotus/IBM 之前,她的工作背景包括在 HP 研究基于 DCE 和 PKI 的 Single SignOn、在 Digital 研究 B1/CMW 操作系统,以及在 AT&T Bell Labs 研究 B2 Unix。可以通过 mhondo@us.ibm.com 与她联系。
|
|