隐私和XML
金桥论坛 已阅读次数:472
概述
由于企业不能保证客户提交给它们的资料的安全,电子商务的发展受到了严重的影响。那些上网但不进行在线购物活动的消费者表示,他们不进行在线购物的原因是担心个人资料被黑客窃取或滥用。从某种意义上说,XML能够解决这一问题,而且已经出现了许多利用XML解决隐私问题的标准。
简介
在本篇文章中,隐私是指用户控制其他人对自己的个人资料进行搜集、使用和分发的能力,它已经成为当今互联网面临的一个重要问题。企业纷纷设立了隐私总监,各国政府也通过立法强制企业遵守在收集、使用用户资料方面的一些规定。
但企业总是要收集用户的资料,从某种意义上来说,如果不收集一些用户资料,企业和用户之间就无法进行交易。但一个更令人感兴趣的问题是,企业应当收集用户的哪些资料,才能对双方都有利,达到“双赢”。
既然这不是一个新问题,那么它为何会在最近引起如此大的关注?原因有以下几点:
· 大多数用户对互联网技术不熟悉。用户需要对他们不熟悉的问题作出决定和选择,例如,浏览器的cookie,在正常使用的情况下,它可以用来维持企业与客户间的关系,使用户无需重复输入相同的数据。但大多数用户认为它提供了一种使企业非法访问他们计算机的方式。
· 网络使信息的流动更快速和简单━━包括授权的和未经授权的。随着越来越多的用户资料被移到了网上,非法访问发生的机会大大增加了。十年前,企业可能在没有联网的大型主机上维护客户资料,而现在,它们都被移植到与互联网服务器相连的数据库中了,尽管方便了使用,但也为非法访问埋下了伏笔。
过去,用户资料大都被保存在纸上或磁存储媒介上,尽管可能出现非法拷贝,但规模不可能很大,互联网技术则能够轻易地实现对信息的大规模非法访问。
· 移动技术的出现。在未来数年内,智能电话将在欧美大量普及,这在过去是不可想象的,例如能够通过移动设备发射的信号知道用户的准确位置。尽管这一技术能够给用户带来便利,但同时也可能被滥用。
· 联邦身份。微软的.NET My Services和自由联盟旨在为用户设定统一的身份,用户在一个网站上注册,就可以登录所有使用諠服务的网站。但是,多家网站共享用户的资料,增加了滥用用户资料的担心。
如果说对信息的访问是隐私问题的一部分的话,XML将使隐私问题更严重。设想一下,如果黑客知道银行在一个XML文件的<creditCardNumber>元素中维护客户的信用卡号,他就无需再查找多个数据库中的多个表,而只要释放一个“寄生虫”程序,读取它遇到的所有文件,查找适当的标记,一旦发现后,就可以读取其中的数据。
幸运的是,XML还提供了其他的机制来阻止黑客窃取用户的资料,在本篇文章中,我们将讨论现有和未来的XML应用程序中的隐私问题。在齫讨论前,我们需要先来讨论几个与隐私相关的概念。
隐私的概念
个人身份资料
个人身份资料(PII)是某人独有的资料,至少是一个人区别于他人的一种方式。例如社会保险号、电话号码、家族地址甚至是电子邮件地址,象年龄、性别以及工资都不能单独确定一个人,因此它们就不是合适的PII。
Opt-in .VS. Opt-out
Opt-in和Opt-out是指企业获得用户批准共享仓储资料的模式,二者之间的判别在于对资料价值的推断以及采用什么样的缺省共享策略。
Opt-in模式指用户的资料具有较高的价值,用户应当对每个共享他们资料的可能作出明确的选择。在这种方式下,缺省的选择是不共享用户的资料。如果一个用户愿意让企业共享其资料,必须明确地作出“肯定”的选择。
opt-out指用户的资料具有不太大的价值。在这种模式下,除非用户明确地作出“否定”的回答,用户的资料将被企业共享。
隐私策略
对于对企业信任,并愿意与之发生交易的客户,如果客户愿意,企业应当能够让客户读取或理解其有关数据保护和共享方面的策略。一般情况下,隐私策略将详细地解释数据保护的程度和所采取的机制,以及客户的资料会在何时、何种情况下如何被共享。目前已经有一些交互式的、基于web的工具帮助企业一步一步地开发利用隐私策略。
透明度
企业需要考虑的另一个重要的问题是透明度,即消费者能够访问自己被收集的资料。受法律与希望与客户保持良好关系的愿望的影响,企业在这一问题上的态度是让客户在线访问他们被收集的数据。然而,让客户在线访问数据又不可避免地带来安全性问题,因为这样可能使第三方非法地访问客户的个人资料。
如果能够使用适当的步骤验证用户查看它们信息的请求,例如使用用户名和口令等技术,这一机制对双方都有利。一方面客户会对他们被收集的资料“非常放心”,另一方面,企业也节约了维护客户资料的成本。
信息的使用
信息的使用可以归结为三大类:
· 被批准有计划的使用:企业通知了客户,并得到了客户的批准。一个例子是收集并存储客户的发货信息,简化客户未来的购物过程。
· 未经批准的有目的的使用:企业没有通知客户或者通知了客户但没有得到客户的批准。目的只是企业一方的,与客户无关。一个例子就是企业将用户的购物记录出售给其他企业。
· 非计划性使用:企业或客户都没有计划或批准的对资料的使用。一个例子是黑客打进一个后端信用卡号数据库,并将获取的内容公布到互联网上去。
大多数与隐私有关的法律和技术都是通过让客户查看“未经批准的有计划”使用清单,以作出相应的决定。另外,企业还必须提供对“非计划性使用”的预防。
安全
安全与隐藏紧密相关。如果没有相应的安全机制的保障,隐私是没有任何意义的。当前大多数的隐私讨论集中在用户通知和选择上,然而,不幸的是,客户的选择对能够闯入后端数据库系统的黑客没有限制作用。客户的选择和通知对于解决最大严重的在线隐私问题没有一点帮助:身份窃贼、计算机信用卡欺诈,安全问题不解决,就谈不上真正的网上隐私。
安全经常包含着机密、授权、认证等这样的概念,它们都在一定程度上与隐私有关。
信息共享
当前,互联网用户可能会与多家企业维持着相互独立的个人资料,造成了浪费和管理上的负担。例如必须向只购过一次物的所有网站提供其地址。还会给在未来采用微软的.NET My Services以及自由联盟的类似服务时带来麻烦。
在信息共享模式中,保证用户资料的隐私要求:
1、受保护的数据储存
2、请求应用程序的授权和认证
3、传输数据的保密性
除对用户信息访问的控制外,上面描述的模式的另一个方面是一个中心认证服务。安全专家已经对由一家公司(微软或其他公司)扮演电子商务交易中的这一中心角色表示担心。微软已经承诺,它不会使用用户的个人资料,也不会将它们卖给第三方,所有参与“自由联盟”的厂商也需要作出类似的承诺。.NET My Services将通过一个XML API发布用户的信息,微软将它称为“XML消息接口”(XMI),对于开发人员而言,它能够简化信息的获取和与其应用程序(基于浏览器和非基于浏览器的应用程序)整合的难度。下面是一个存储的XML的例子:
<c:contact xmlns:c="http://schemas.microsoft.com/hs/2002/10/myContacts"
xmlns:p="http://schemas.microsoft.com/hs/2002/10/myProfile">
<c:firstName xml:lang="en-us">Bill G.</c: firstName>
<c:lastName xml:lang="en-us">Ates<c:lastName>
<c:emailAddress>
<p: address>billg.ates@microsoft.com</p:address>
</c:emailAddress>
</c:contact>
与隐私相关的基于XML的技术
目前,有许多标准组织和机构都在进行利用基于XML的技术解决与隐私相关的各方面问题的研究,下面我们将介绍相关的研究活动。
P3P
“隐私参数选择平台”(P3P)是由“全球Web联盟”(W3C)开发的一个协议,它描述了一种计算机能够理解、网站可以用来描述它们的隐私政策的基于XML的语言。信息的种类包括声明隐私政策的佥实体的联系信息、用户是否可以访问他们被收集的个人资料、被收集的信息的不同类别、收集资料的目的以及哪些机构能够访问收集的数据等。P3P是对长期以来网站向用户提供的机器不能理解、容易引起歧义的“隐私”政策的响应。下面是一个假想的网站的P3P策略:
<POLICIES xmlns="http://www.w3.org/2002/01/P3Pv1">
<POLICY discuri="http://www.website.example.com/p3p.html">
<ENTITY>
<DATA-GROUP>
<DATA ref="#business.name">WebSite.com</DATA>
<DATA ref="#business.contact-info.postal.street">200
Main Street</DATA>
</DATA-GROUP>
</ENTITY>
<ACCESS><nonident/></ACCESS>
<STATEMENT>
<PURPOSE><admin/><develop/></PURPOSE>
<RETENTION><stated-purpose/></RETENTION>
<DATA-GROUP>
<DATA ref="#dynamic.http"/>
</DATA-GROUP>
</STATEMENT>
</POLICY>
</POLICIES>
上面的P3P策略表示,该公司没有获得任何个人身份资料(PII),仅获得了用于管理和开发目的的动态HTTP数据记录。
在IE6中包含了对P3P客户端的支持,提供了一个用户可以表明其选择的界面,如下图所示:
如上图所示,微软早期对客户端P3P的支持需要用户有对cookie行为的控制权。
如果用户浏览的网站与用户记录的参数不同,或没有发现隐私政策,IE就会通过其状态栏中的一个图标警告用户(参见下图),并使用户如何处理这一情况。
XACML━━XML访问控制标记语言
XACML是一种获取资源授权策略的提议,它将解决授权活动的控制问题。它之所以与隐私有关是因为,访问控制是企业保证用户隐私的一种安全机制,XACML可能被用来获取用户为资料源定义的隐私策略。
下面是一个XACML策略的例子,病人能够访问他自己的病历。这一策略说明了XACML和SAML(安全主张标记语言)之间的联系。SAML定义了一种语法,认证、授权主张和查询能够用它来表达,并在网络上传输。在下面的例子中,我们假设已经收到了SAML AuthorizationDecisionQuery,它询问应当授予要求查询自己病历的病人什么样的权限。
<?xml version="1.0"/>
<rule>
<target>
<subject>
samlp:AuthorizationDecisionQuery/Subject/NameIdentifier/Name
</subject>
<resource>
<patternMatch>
<attributeRef>
samlp:AuthorizationDecisionQuery/Resource
</attributeRef>
<attibutevalue>medico.com/record.*</attibutevalue>
</patternMatch>
</resource>
<actions>
<saml:Actions>
<saml:Action>read<saml:Action>
</saml:Actions>
</actions>
</target>
<condition>
<equal>
<attributeRef>
samlp:AuthorizationDecisionQuery/Subject/NameIdentifier/Name
</attributeRef>
<attributeRef>
file://medico.com/records/patient/patientName
</attributeRef>
</equal>
</condition>
<effect>Permit</effect>
</rule>
XML Encryption
XML Encryption是一个获取在任意数据上完成加密操作结果的XML符号的提案。XML Encryption提案的一个重要功能就是它支持只对部分XML文档加密,这不但能够减少加密的工作量,更重要的是,它能够将非机密数据仍然用纯文本形式表达,使一般的XML工具能够处理这部分内容。下面的图显示了一个工资元素被使用XML Encryption加密在单独的xenc名字空间的员工档案:
<?xml version="1.0"?>
<employee id="b3456">
<name>John Smith</name>
<title>Senior Analyst</title>
<salary>
<xenc:EncryptedData>
<xenc:CipherData>
<xenc:Ciphervalue>AbC234ndZ...</xenc:Ciphervalue>
</xenc:CipherData>
</xenc:EncryptedData>
</salary>
</employee>
只有员工自己或被授权的人力资源代表才能够解密<Ciphervalue>元素中的内容,看到员工实际的工资。
XML Signature
数字签名定义了一个获取对任何数据进行数字签名操作结果的XML模型。与以前的非XML数字签名标准不同的是。XML数字签名既是为了解决了互联网和XML应用中所带来的问题,但它又充分利用了互联网和XML。
XML Signature与隐私密切相关,因为,首先在象.NET My Services和Liberty这样的信息共享环境中,将通过XML Signature对要求应用程序验证的SOAP请求进行处理;第二,用户“肯定”的确认可以作为XML Signature,以防止用户以后再对作出的选择反悔,如下图所示:
如果用户选择了“Sign Confirmation”(确认)按钮,就会(使用用户的私有密码)生成一个与显示出的HTML网页相关的XML Signature,并进行存档,以防止用户对作出的选择反悔。
当然了,现在的浏览器还不支持完成对显示的HTML网页的数字签名,更不用说XML Signature了。但扩展浏览器功能,使它支持签名的技术已经问世了,最终XML Signature技术也会得到支持。
WS-Security
WS-Security是由微软提出的一个有关在SOAP消息中添加安全元数据的提案。在这里,我们将讨论一个从NET My Services请求用户资料的网站,它有二个方面与WS-Security有关:
1. 请求用户资料的应用程序将使用WWS-Security机制获得.NET My Services的认证,以便.NET My Services确定该用户是否被授予了在其隐私策略中描述的权限。
2. 返回的用户资料的机密性将通过WS-Security对加密功能的支持得到保障。
为了保证只有被授权的用户能够访问相关资料,网站必须首先对用户的身份进行认证。应用程序并不直接向.NET My Services认证,而是向微软的Passport服务认证,以获得一个令牌。然后应用程序再把令牌提交给NET My Services,在对令牌进行验证并确认它是来自Passport后,.NET My Services将确认请求符合用户的隐私策略。然后就会接受请求,并在SOAP响应中返回请求的资料。
下面是一个SOAP客户端向.NET My Services请求资料的例子,它说明了WS-Security名字空间和HSDL(.NET My Services的数据处理语言)的元素。为了简单起见,我们在下面的代码中活力了实际的名字空间定义:
<SOAP:Envelope>
<SOAP:Header>
<wsse:Security>
<wsse:BinarySecurityToken wsse:valueType="wsse:Kerberosv5"
EncodingType="wsse:Base64Binary" Id="token">
MIIEZzCCA9CgAwIBAgIQEmtJZc0...
</wsse:BinarySecurityToken>
<dsig:Signature>
<dsig:Reference="#busmsg"/>
<dsig:SignatureMethod Algorithm="#hmac-sha1">
<HMACOutputLength>128</HMACOutputLength>
</dsig:SignatureMethod>
<dsig:Signaturevalue>IU(89.Hl8*.</dsig:Signaturevalue>
<dsig:KeyInfo>
<wsse:SecurityTokenReference>
<wsse:Reference URI="#token"/>
</wsse:SecurityTokenReference>
</disg:KeyInfo>
</dsig:Signature>
</wsse:Security>
</SOAP:Header>
<SOAP:Body>
<hsdl:queryRequest id="busmsg">
<xpQuery select='/contact[Name="Smith"]'/>
</hsdl:queryRequest>
</SOAP:Body>
</SOAP:Envelope>
为了对SOAP消息进行认证和授权,.NET My Services应当执行下面的处理:
1、使用与Passport共享的私钥加密<BinarySecurityToken>元素中的Kerberos说明书。说明书中包含:
A、发出请求的用户的Passport的PUID。
B、发出请求的应用程序的标识符。
C、临时的对话关健字。
2、检查XML Signature中的<Reference>元素,判断SOAP消息中的哪个元素是计算出来的MAC。
3、使用从Kerberos证书中解析出来的对话关健字,计算出相同元素的MAC。
4、对计算出的MAC与由发出请求的应用程序提供的MAC进行比较。
5、如果二个MAC相同,则比较被认证的发出请求的应用程序和用户的隐私政策,判断其请求是否应当被批准。
下面是一个SOAP响应的例子,我们假设在SOAP响应中返回的用户资料是机密资料,用户的隐私政策要求在传输过程中保证资料的保密性:
<SOAP:Envelope>
<SOAP:Header>
<wsse:Security>
<xenc:EncryptedData id="encdata">
<xenc:EncryptionMethod
Algorithm='http://www.w3.org/xmlenc#3des-cbc'/>
<xenc:CipherData>
<xenc:Ciphervalue>JS*du89sad7</xenc:Ciphervalue>
</xenc:CipherData>
</xenc:EncryptedData>
</wsse:Security>
</SOAP:Header>
<SOAP:Body>
<hsdl:queryResponse id="busmsg">
<xenc:CipherReference idref="#encdata"/>
</hsdl:queryResponse>
</SOAP:Body>
</SOAP:Envelope>