常用认证技术
基本认证、数字认证、NTLM认证、证书认证、Microsoft Passport认证、表单认证
基本认证(basic)
基本模型:
l 客户端必须使用用户标识和口令(使用base64编码和SSL加密)来向服务器说明自己的身份。
l 为了得到授权,客户端发送凭据,凭据由用户标识和口令组成,中间使用冒号(:)分隔,之后使用BASE64进行编码。
n 客户端浏览器缓冲所提供的用户名和口令,并与认证域(Authentication Realm)存储在一起,这样,如果从相同域中请求其他资源时,能够把相同的用户名和口令提供给服务器来认证请求,而无需用户重复地输入它们
n HTTP协议是一种无状态协议,因此每一个请求都以相同方式处理,即使这些请求来自同一个客户端
缺点:
l 基本认证不应该被认为是安全的
l 以明文形式进行传输,易于被窃听、易于受到重放攻击
数字散列认证(digest)
l 基本模型
n 用户发出不带认证凭据的请求,Web服务器回应一个指示凭据的WWW认证头。
n 取代发送用户名和口令,服务器使用一个随机值询问客户端。
u 在可选头中服务器指定用于创建检查和/或摘要的算法,默认时使用MD5算法
n 客户端使用用户名/口令的消息摘要应答服务器。有效回应中包含了用户名、口令、给定唯一值、HTTP方法、所请求URL的检查和(默认时,为MD5检查和)。
n 服务器使用从客户端得到的“消息摘要应答”进行验证
http://new.51cto.com/files/uploadimg/20080721/133904755.jpg
l 口令从来也不通过网络以明文形式传输,而总是传输用户口令的MD5摘要
l 不能通过嗅探网络来获取用户口令。
l 数字散列认证模式并没有彻底回应安全需求,它没有对消息内容进行加密。它的目标旨在避免基本认证存在的大多数严重缺陷
l 基于Challenge/Response认证模型
l 与基本认证模式相同,预先必须定义用户名和口令。这是一个基于口令的系统,面临着所有基于口令系统相同的问题
l 尽管在这种认证模式中没有实际发送口令,但发送了它的消息摘要,黑客能够利用生成的消息摘要来获取对内容的访问,原因在于口令摘要是访问这样的网站所需唯一信息
NTLM认证(Ntlm)
l 认证模型
n 基于Challenge/Response认证模型
n 微软专用协议
n 不需要在网络上发送口令或散列的口令
l 认证过程
n 在认证过程开始时,用户的系统(客户端)向telnet服务器发送一条登录请求,服务器使用随机生成的“令牌”(挑战值)应答客户端。客户端使用挑战值散列当前登录用户加密保护的口令,并把散列结果发送给服务器。
n 服务器收到挑战散列的响应之后,将它与已知的正确响应相比较。如果两者匹配,那么用户成功得到认证
l 和Digest的区别
n Ntlm:客户端使用挑战值散列当前登录用户加密保护的口令,并把散列结果发送给服务器
n Digest:使用摘要和算法散列用户名、密码等,然后把散列结果发送给服务器
数字证书认证(Certification)
l 数字证书是一个电子文档,它包含了身份信息、公钥、使用认证中心私钥签署的数字签名。希望发送加密消息的个体向认证中心(CA,Certificate Authority)申请数字证书。认证中心是一个签署证书的权威机构,它能够担保证书持有人的身份。CA发行的加密数字证书中包含了申请人的公钥及其他各种身份信息(类似身份证)。CA通过印刷媒体或互联网公布自己的公钥
l 数字证书最广泛使用的标准是X.509
l 数字证书认证比其他形式的认证更健壮
l 数字证书认证使用了公开密钥密码学,数字证书能够存储在智能卡上,从而进一步提高安全性。
l 目前尚不知道存在针对PKI安全的攻击
l 认证过程:
n 当用户连接到服务器上进行认证时,他向服务器提供自己的数字证书
n 服务器首先验证证书上的签名是否有效、是否由受信任CA生成
n 服务器使用公开密钥加密算法(利用服务端的私钥)认证用户,证实其确实拥有与该证书相关联的公钥
n 得到包含在证书中的发送方的公钥和身份信息。利用这些信息,接收方可以发送一个加密应答
n 案例
u 电子邮件:很多人使用数字证书来加密电子邮件(提供机密性)或签署电子邮件(证实身份)。
u 网络安全:很多机构(包括一些网上银行)都部署了使用数字证书的智能卡或其他安全技术,以此作为提高他们的计算机网络安全性的一种途径
Microsoft Passport认证 (Passport)
l 支持SSO
l 登录商业网站时到login页面,输入email和密码
l 操作系统上的passport服务,得到商业网站的URL以及email和密码,重定向到passport网站
l passport网站得到商业网站的信息和URL上的信息,在passport网站上进行验证
l passport验证结束后,生成“电子凭据”,写到客户端的“cookie”中,客户端的passport服务记录这个“电子凭据”
Microsoft Passport认证是Microsoft Passport Network采用的一种认证方式,微软使用它提供了一种“单一登录”服务,允许用户使用一个账户就可以登录多个Web网站,包括Hotmail、.NET Messenger Service和MSN subscriptions等,其他一些与微软交往密切的公司也使用了这个认证,如RadioShack。Hotmail或MSN用户自动拥有与他们的账户相对应的Microsoft Passport。
Passport认证消息以电子凭据的形式传递,用于通知站点该用户已经成功登录。凭据是一小段数据,包含了登录时间、上次用户登录时间及其他一些认证过程中需要的信息。在Passport系统内部,这些凭据以cookies的形式存在。
为了得到一个凭据,拥有Passport账户的用户需要登录网站或访问网站中受保护的页面(即在访问前要求进行认证的页面)。这一操作将把用户重定向到Passport.com的特定页面上。该页面得到商业站点添加到URL上的信息,并进行处理,这样Passport服务就能够知道用户是从哪一个商业网站转过来的。在信息处理完毕之后,Passport将用户重定向到Passport.net上的一个页面。
一旦用户输入了他的凭据,用户就被带到Passport.com域。在这个域中验证用户后,Passport在用户浏览器中写入一个cookie,该cookie保存了本次登录的信息。这个cookie称为“凭据授权cookie”,它用于以后的用户登录。之后,Passport将用户带回到原来的网站。
当用户返回到商业站点时,它们携带了两个附加在查询字符串上的信息包。安装在商业认证服务器上的、称之为Passport Manager的软件读取这些信息包,并以加密cookies的形式保存在商业站点域中。
第一个cookie包含了认证凭据信息。第二个凭据包含了用户选择的、用于共享的任何配置信息,以及操作信息和唯一标识符。这些数据包使用Passport与商业站点共享的唯一密钥进行加密。这样确保只有这个商业站点能够解密这些消息。
之后,商业站点得到用户信息,并使用这些信息构造自己的cookies。由于这些cookies由商业站点自己发出,因此它能够访问它们。商业站点能够使用Passport User ID在自己的数据库中查找用户并完成授权任务。
当用户导航到另一个Passport参与站点时,新站点在处理如何认证这个用户方面有几种选择。当用户单击登录按钮时,他们像第一次登录那样被重定向到Passport服务上,差别在于这一次浏览器中已经保存了一个Passport能够读取的凭据授权cookie。由于该凭据中包含了凭据的发出时间,因此它允许引用站点决定如何刷新cookie。如果该凭据满足引用站点选择的规则,那么用户被带回到引用站点,同时携带了加密后的凭据和配置cookies。如果该凭据已经时间过久,那么它将提示用户重新输入凭证。