`
longgangbai
  • 浏览: 7339530 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

WSE 3.0安全性方面整理

阅读更多

对称密码学、非对称密码学(Symmetric Algorithm, Asymmetric Algorithm)
    对称密码只有一个密匙,加密和解密都使用这个相同的密匙。非对称密码有两个密匙,一个作为公匙可以告诉其他人,一个作为私匙只有自己知道,用公匙加密的数据只能用私匙解密,用私匙加密的数据只能用公匙解密。
    使用对称密码,通讯双方都需要知道密匙,为了验证身份,发送方可能需要把密匙传递给接收方,这种方式可能带来一些潜在的安全性问题。非对称密码中,A用自己的私匙加密数据然后发送出去,其他人如果能够用A的公匙解密数据,那就能知道这个数据一定来自A--不可抵赖性,一般用户数字签名中;如果其他人需要向A发送数据,可以使用A的公匙加密数据,这样加密后的数据只有A才能解密--保密性,这个用于确保通讯的机密性。使用非对称密码通讯的双方各自拥有自己的一对公匙和私匙,向对方发送数据时,使用对方的公匙加密,让对方用私匙进行解密。
    对称密码学的算法简便高效,密匙短,但很难破译,加密解密速度快。非对称密码一般较弱一些,为了防止被破译,使用的密匙长度会比较长,例如128位、512位等,加密解密运算所需时间会比较长。为了改善通讯过程中安全性应用带来的性能问题,一般的做法是发送方先使用一个对称密匙对消息加密,然后使用接收方的公匙加密这个对称密匙,一起发送给接收方。接收方先用自己的私匙解密出对称密匙,然后再用对称密匙解密消息数据。这样在传输的信息比较大时,带来的改善是明显的。在X.509一节中可以看到这一运用。

    数字签名
    数字签名是公共密匙体制的另一种应用。A需要向B发送一段报文,首先A使用特定的Hash算法对要发送的报文取得一个一定长度(例如128位等)的 Hash值,这个Hash值称为数字摘要(Digital Digest)。Hash算法尽量保证不同的报文产生的摘要不相同,即如果发送的报文在中途被攻击者修改了,新的摘要跟原来的摘要就不相同。然后A使用自己的私匙对摘要进行加密,加密后的值称为数字指纹、数字签名(Digital Signature),A把这个数字签名和要发送的报文一起发送给B。B接收到内容后,取出数字签名和报文,使用A的公匙对签名解密,就得到原文的数字摘要,然后B使用相同的Hash算法对报文获取摘要值,比较这两个摘要值是否一致。如果验证成功,B能够确定两件事情:1. 数据的确是A发送的;2. 数据在发送过程中没有被修改过。

    常见窃取、攻击场景简单描述
    应用系统最普通的方式是使用用户名、密码认证,如果使用明文方式向服务器发送认证信息,窃取者在路由上很容易截取到用户名、密码。
    为了防止攻击者截获到明文的密码,最简单的方式是将密码加密后传送。但这样攻击者截获到加密过的密码,他虽然不知道密码的原文,但如果使用加密过的密码字符串,仍然可以通过服务器的验证,这也是重放攻击(Replay Attack)的一种形式。解决方法是客户端每次使用一个随机序列跟密码一起加密,这样每一次加密后的结果都不一样;客户端同时把这个随机序列和加密后的值发送给服务器,服务器用同样的方法用原密码和随机序列进行加密,比较加密的结果和客户端发来的加密结果是否一致。
    这样做还没有解决问题,因为攻击者仍然可以截获消息中的加密结果和随机序列,用以通过服务器验证,还需要添加另外一个处理:过期策略。除了随机序列之外,客户端在添加一个创建时间,把密码(Password)、随机序列(Nonce)、创建时间(CreatedTime)这三个因素一起加密,例如加密值=Base64(SHA-1(Password+CreatedTime+Password)),同样,客户端把加密值、随机序列Nonce、创建时间CreatedTime一起传给服务器。在服务器上验证机制有所改变。首先,客户端每一次请求的Nonce都使用一个唯一标识,不会重复。服务器维护一个已经被处理过的Nonce缓存,每次接收到消息先检查这个Nonce是否在缓存中存在,如果已经存在,说明这个消息已经被处理过了,决绝这一次请求服务;如果不存在,则把这个Nonce添加到缓存,然后处理请求。为了避免缓存的Nonce值越来越多,因此使用一个CreatedTime,并确定一个过期时间,例如5分钟之后过期,这样,服务器只需要保存5分钟之内、还没有过期的Nonce值。在重放攻击中,对于那些已经过期的消息中的认证信息,服务器会拒绝处理。如果通过上面两项检查,则服务器使用相同的算法Base64(SHA-1(Password+CreatedTime+Password)) 来验证认证信息。通过这样的处理,确保认证信息每一次加密的结果都不一样,并且只能被有效的使用一次。

    X.509
    详细的规范可以从http://www.rfc.net/,查询X.509。
    不清楚WSE 3.0中具体是如何使用X.509,但大致的数字签名步骤如下,应当相差不多:
    1. A准备好要传送的信息(明文)。
    2. A对数字信息进行Hash运算,得到一个数字摘要(Digital Digest)。
    3. A用自己的私钥对数字摘要进行加密,得到数字签名(Digital Signature),并将其附在信息上。
    4. A随机产生一个加密密钥(DES密钥),并用此密钥对要发送的信息进行加密,形成密文。
    5. A用B的公钥对刚才随机产生的加密密钥进行加密,将加密后的DES密钥连同密文一起传送给B。
    6. B收到A传送过来的密文和加过密的DES密钥,先用自己的私钥对加密的DES密钥进行解密,得到DES密钥。
    7. B用DES密钥对收到的密文进行解密,得到明文的信息。
    8. B用A的公钥对A的数字签名进行解密,得到数字摘要。
    9. B用同样的Hash算法对收到的明文进行Hash运算,得到一个新的数字摘要。
    10. B将解密的数字摘要和自己运算的数字摘要进行验证是否一致。
    对称密码学使用相同的密匙加密和解密消息,因此客户端和服务器端都存在密码保存问题,验证过程中存在密码信息直接或间接的传送,给这种机制带来一些不安全因素。正由于这样的因素,非对称密码学,尤其是X.509,目前被普遍运用在Internet的电子商务中。

    Kerberos
    RFC标准中Kerberos工作步骤如下:

    1. Kerberos authentication service request (KRB_AS_REQ)
    用户输入用户名、用户口令登录工作站机器,工作站向KDC(Key Distribution Center)的AS(Authentication Service认证服务)发送认证信息。认证信息只包含用户帐号,不包含用户口令。
    2. Kerberos authentication service response (KRB_AS_REP)
    AS为后面工作站与TGS(Ticket Granting Service票据授权服务)之间的通讯创建Session Key(会话口令)SK1,将客户端信息、TGS服务信息、SK1、时间戳、有效期等信息使用TGS的口令加密,生成TGT(Ticket Granting Ticket票据授权票)。同时KDC在用户帐号数据库中查询用户口令,将TGS服务信息、SK1使用用户口令加密打包。最后AS把加密包和TGT发送给工作站。
    工作站接收到返回信息之后,使用用户登录时输入的用户口令对加密包解密,如果能成功解密,则表示通过了KDC的身份认证,并得到TGS服务信息和SK1,并且拥有了TGT。
    第一点,用户口令只有用户与KDC知道,工作站向KDC认证的过程中并不将用户口令发送给KDC的AS,而是通过让工作站自己解密的方式来证明自己。如果工作站无法解密,它将无法与TGS通讯,从而无法使用其它应用服务和资源等。
    第二点,AS给工作站颁发TGT,后面工作站将使用TGT向TGS请求其它应用服务,而无需再进行用户名、用户口令的验证,实现SSO。
    第三点,TGS拥有自己的口令,这个口令只有TGS和AS知道,因此工作站虽然拿到TGT,因为是使用TGS的口令加密,其他人包括工作站并不能解密和篡改TGT中内容,它只需要在向TGS申请其它应用服务时发送这个TGT。
    第四点,AS为工作站后面与TGS的通讯生成一个Session Key SK1,这个SK1在工作站与TGS之间共享,使得后面TGS与工作站通讯时,TGS能够对工作站这个客户端进行认证。上面已经看到工作站如何得到SK1,而AS并没有直接告诉TGS这个SK1,下面的步骤中你可以看到TGS如何得到SK1。
    3. Kerberos ticket-granting service request (KRB_TGS_REQ)
    工作站上的用户请求其它应用系统服务,例如邮件服务时,邮件客户端首先查询工作站上是否已经拥有邮件服务的Service Ticket(服务票据),如果没有则向TGS申请这个Service Ticket。
    申请Service Ticket过程如下。工作站将客户端信息、要申请的服务信息(邮件服务)使用SK1加密生成一个验证器,与TGT一起发送给TGS。
    TGS接收到工作站的请求后,使用TGS的口令对TGT解密,得到TGT中的内容。首先根据时间戳、有效期信息检查是否过期,如果没有过期,则使用SK1解密验证器,比较验证器中的客户端信息与TGT中的客户端信息是否一致。如果一致则表示这个请求通过了TGS的认证。
    4. Kerberos ticket-granting service response (KRB_TGS_REP)
    从验证器的解密内容中,TGS知道工作站是在申请邮件服务的Service Ticket。同样,TGS为工作站与邮件服务之间的通讯创建一个Session Key SK2,将客户端信息、邮件服务信息、SK2、时间戳、有效期等信息使用邮件服务的口令加密,生成邮件服务的Service Ticket。TGS将SK2使用SK1加密,把这个加密包和Service Ticket一起发送给工作站。
    第一点,从上面3、4步骤中可以看出,TGS如何获得AS为它和工作站之间建立的会话口令SK1,并使用这个SK1对工作站的请求进行验证。同样的方式,TGS为工作站与邮件服务之间的通讯也创建一个会话口令SK2。
    第二点,邮件服务拥有自己的口令,只有TGS与邮件服务自己知道。邮件服务的Service Ticket使用邮件服务口令加密,其他人包括工作站无法解密,只有邮件服务自己可以解开。
    5. Kerberos application server request (KRB_AP_REQ)
    接下来工作站得到TGS的响应消息,它得到了邮件服务的Service Ticket和一个加密包。工作站是使用SK1解开加密包,得到它与邮件服务器之间通讯的会话口令SK2。
    然后工作站将客户端信息使用SK2加密,生成验证器,将验证器和邮件服务的Service Ticket一起发送给邮件服务器,请求邮件服务。
    邮件服务接收到工作站的请求后,使用邮件服务口令解密Service Ticket,得到里面的内容。首先查看Service Ticket中的邮件服务信息,确认是否是在向自己请求服务。然后根据时间戳、有效期检查是否过期。如果没有过期,则使用SK2解密验证器,比较验证器中的客户端信息与Service Ticket中的客户端信息是否一致。如果上面的验证全部通过,则这个请求通过了邮件服务器的认证。
    6. Kerberos application server response (optional) (KRB_AP_REP)
    在RFC标准中,这一个步骤是可选的。应用服务处理完请求之后,如果需要向工作站发送信息,则将这些信息发送回工作站。

    最后需要说明的是,在Kerberos V5中,为防止Replay Attack(重放攻击),上面对验证器的处理说得并不详细。首先采用一些处理使得每次验证器不一样。验证器本身有一个有效期,大概5分钟的样子。服务器上将建立一个验证器缓存,确保一个验证器在有效期之内只能被使用一次。
    另外,RFC标准中KDC的AS和TGS可以是在一起,也可以是分开在不同的Server上。
    通过上面的过程可以看出,Kerberos使用对称密码,而对称密码算法高效,密匙短但难以被破译,如果再采取一些其它措施,例如Strong Password(强密码)、密码有效期控制等,不考虑被集成的应用等其它因素,这种机制本身非常严密,机密性比较高。针对Kerberos机制的一些攻防场景,参考设计一个认证系统,这里有中文版本,不少地方翻译的不够准确。微软基于域环境实现Kerberos,详细的资料可以参考微软官方网站,例如,Kerberos Authentication ExplainedHow the Kerberos Version 5 Authentication Protocol Works
    由于实现Kerberos的机制、被集成的应用等各种原因,使得目前Kerberos只能在一个内网中使用,例如微软的域环境下。

分享到:
评论

相关推荐

    Microsoft WSE 3.0 Runtime.msi

    Microsoft WSE 3.0 Runtime.msi

    WSE3.0学习教程

    **WSE3.0学习教程** ...总之,WSE3.0教程将引导你深入了解Web服务的安全性和可靠性,提供必要的技能来创建和维护高质量的Web服务。通过学习和实践,你将成为一名能够处理复杂Web服务场景的专业开发者。

    WSE3.0学习资料

    **WSE3.0(Web Services Enhancements 3.0)**是微软推出的一个用于.NET Framework的增强型Web服务开发工具包,它为开发者提供了更高级别的安全性、互操作性和可扩展性。WSE3.0是针对WSE2.0的升级版本,主要目的是...

    WSE3.0身份验证演示

    WSE3.0是微软推出的一个用于增强.NET框架下Web服务安全性的工具包,它提供了多种安全模型,包括基于令牌的身份验证、消息级安全等。 描述中同样提到“WSE3.0身份验证演示”,暗示我们可能会看到一个具体的示例或...

    WSE3.0原理介绍

    WSE 3.0 的主要目的是为了弥补 ASMX 在支持高级 Web 服务特性方面的不足。 #### 二、WSE 与 ASMX 的关系 - **ASMX**:ASMX 是 .NET Framework 级别上对 Web 服务的基本实现。它支持基本的规范(Basic Profile),...

    WSE 3.0 的网络服务安全PPT

    WSE 3.0 特别针对安全性进行了大量的改进和增强,为用户提供了一种更加可靠、安全的方式来构建和部署 Web 服务。 #### ASP.NET 和 WSE 的关系 ASP.NET 作为微软提供的一种用于创建动态网页的技术框架,其在处理 ...

    Webserves 简单例子 (vs2005+wse3.0)

    4. **启用WSE3.0安全功能**:通过引用WSE3.0的命名空间,可以启用如消息认证、加密等功能,确保通信的安全性。 5. **部署与测试**:发布Web服务到IIS服务器,然后可以通过VS2005自带的Web服务浏览器或独立的SOAP...

    构建软件数字安全带系列课程(8):WSE 3.0基本安全介绍

    WSE 3.0是微软推出的一个用于.NET Framework的扩展库,其主要目的是增强基于SOAP的Web服务的安全性。WSE提供了多种安全机制,以防止数据在传输过程中被篡改或窃取,保障了服务的完整性和机密性。 1. **安全通信基础...

    WSE3.0学习实例

    根据学习资料,自己开发的两个WSE3.0的学习实例:UsernameToken和X509Assertion,希望对大家有帮助。 注:在这里我将客户端和Web服务端份非别开发,所以有四个工程文件。 注2:最重要的是证书的位置!一定要配置好。...

    Microsoft WSE 3.0

    Microsoft WSE 3.0,security

    Windows WSE 2.0 3.0环境.zip

    Windows Web Services Enhancements (WSE) 是微软推出的一个框架,用于增强.NET Framework应用程序的安全性和互操作性,特别是在Web服务方面。这个压缩包包含了WSE 2.0 SP3(Service Pack 3)和WSE 3.0的运行时组件...

    Web Services Enhancements 3.0

    Web Services Enhancements (WSE) 是由Microsoft开发的一个工具包,它为.NET Framework下的Web服务提供了额外的功能,特别是在安全性、可靠性和事务处理方面。WSE 3.0作为该系列的最新版本,进一步加强了这些功能,...

    MicrosoftWSE3.0Runtime

    此外,`microsoft WSE 3.0 runtime下载 _wse3.0下载 - pc6下载站.url`是一个链接,指向了WSE 3.0更多的资源和教程,可能包括了安装问题的解决方案和更新信息。 **适用场景**: - 开发需要高度安全性的企业级Web服务...

    Web Services Enhancements 3.0 Hands On Lab - Security

    WSE3.0是其中的一个版本,它着重于改进和扩展了基本的SOAP(简单对象访问协议)服务的安全性。在这个“Web Services Enhancements 3.0 Hands On Lab - Security”中,我们将深入探讨WSE3.0如何帮助开发者在构建Web...

    Microsoft WSE2.0 SP3 Runtime.msi

    loadrunner11安装时提示少了这个Microsoft WSE2.0 SP3 Runtime.msi ,这个可用。

    UsernameToken WSE30

    1. **Web服务增强**(Web Services Enhancements):WSE是微软为.NET Framework提供的一个扩展库,用于增强ASP.NET Web服务的安全性和互操作性。WSE3.0支持WS-Security标准,该标准定义了如何在Web服务消息中添加...

    FileNet安装步骤详解

    WSE 3.0提供了安全的Web服务接口,用于与FileNet集成。 4. 安装Active Directory(AD) 需要安装Active Directory(AD)并建立域控制器。AD提供了身份验证和授权机制,用于FileNet的安全认证。 5. 安装DB2 DB2是...

Global site tag (gtag.js) - Google Analytics