身份认证
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
身份认证
身份认证是在计算机网络中确认操作者身份的过程。身份认证可分为用户与主机间的认证和主机与主机之间的认证,下面主要介绍用户与主机间的身份认证。
在真实世界,对用户的身份认证基本方法可以分为这三种:
(1) 根据你所知道的信息来证明你的身份(你知道什么) :例如口令、密码等;
(2) 根据你所拥有的东西来证明你的身份(你有什么) :例如印章、智能卡等;
(3) 直接根据独一无二的身体特征来证明你的身份(你是谁) ,比如指纹、声音、视网膜、签字、笔迹等等。
在网络世界中手段与真实世界中一致,为了达到更高的身份认证安全性,某些场景会将上面3种挑选2中混合使用,即所谓的双因素认证。
以下罗列几种常见的认证形式:
1.口令
1.1静态口令
1.1.1 简单静态口令
用户的口令由自己设定,当被认证对象要求访问服务系统时,提供服务的认证方要求被认证对象提交其口令,认证方收到口令后,与系统中存储的用户口令进行比较,以确认被认证对象是不是合法访问者。
这种方法的优点是:一般的系统(如UNIX, Windows NT,NetWare等)都提供了对口令认证的支持,对于封闭的小型系统来说不失为一种简单可行的方法。
然而,基于口令的认证方法存在下列不足:
1)用户每次访问系统时都要以明文方式输入口令,容易泄密。
2)口令在传输过程中可能被截获。
3)用户访问多个不同安全级别的系统时,都要求用户提供口令,用户为了记忆方便,往往采用相同的口令。
1.1.2 使用消息摘要算法的口令认证
认证过程:
(1)存储用户ID和对应的口令摘要值在服务器数据库中;
(2)当进行认证时,用户输入ID和口令,口令会在客户端上被计算出摘要值;
(3)用户ID和摘要结果会被传输到服务器端进行认证;
(4)服务器接收到用户ID和摘要结果后,认证程序会到数据库中根据用户ID获取已存储的相应的口令摘要,两个摘要比较的结果会返回到客户端通知用户认证成功与否。
缺点:因为相同口令的摘要值始终是一样的,但是为了防止重放攻击,应当保证客户端和服务器端的交换信息任何两次都是不同的,这就需要使用随机数技术来解决这个问题。
1.1.3 使用随机数的口令认证
认证过程:
(1)存储用户ID和对应的口令摘要值在服务器数据库中;
(2)用户输入ID,客户端将上传用户ID;
(3)服务器在收到用户的认证请求,即仅包含用户ID的信息以后,认证程序检查ID是否已在数据库中注册,如果没有,将发送相应的错误信息给客户端。如果有,服务器将生成一个随机数以明文的形式回送到客户端;
(4)客户端显示输入口令的用户界面,用户输入口令以后,口令会在客户端上被计算出摘要值。这个摘要值将作为密钥用于加密收到的随机数,加密采用对称算法;
(5)服务器端接收到用随机数加密的口令摘要密文后,认证程序可以通过用户ID查找到对应存储在数据库中的口令摘要,用口令摘要解密收到的密文,解出的明文如果和数据库中存储的随机数一致,则认证通过;
(6)服务器端将认证成功或失败的结果返回给客户端,完成身份认证。
静态口令认证的缺点:为了提高安全性,专门制定了口令政策以约束最终的用户,比如:口令长度至少8位;不能包含空格;口令必须以字母开头。这种方式可以有效地防范黑客的字典攻击,然而,这无疑增加了最终用户记忆口令的难度,致使很多人把复杂的口令记录在各种不安全的地方。因此有人提出了动态口令。
1.2动态口令
动态口令的基本原理是:在客户端登录过程中,基于用户的秘密通行短语(SPP)加入不确定因素,SPP和不确定因素进行变换,所得的结果作为认证数据(即动态口令),提交给认证服务器。认证服务器接收到用户的认证数据后,以事先预定的算法去验算认证数据,从而实现对用户身份的认证。由于客户端每次生成认证数据都采用不同的不确定因素值,保证了客户端每次提交的认证数据都不相同,因此动态口令机制有效地提高了身份认证的安全性。
1.2.1基于时间同步的动态口令机制
认证过程:
(1)用户输入ID(或PIN码),客户端单向散列函数以时间和种子密钥作为参数进行计算,将计算所得的动态口令传送到认证服务器;
(2)认证服务器确认用户ID的合法性后,从服务器加密的数据库中提取该用户所对应的种子密钥,采用与客户端相同的单向散列函数计算出验证口令;
(3)若验证口令和动态口令相同则通过验证,否则不能通过验证。
缺点:由于认证服务器和客户端的时钟要保持同步,只有在两端时钟同步的情况下才能做出正确的判断。一旦发生了时钟偏移,就需进行时钟校正。
1.2.2 基于事件同步的动态口令机制
事件同步机制是以事件作为变量。在初始化阶段选取一个口令PW和一个迭代数n,及一个单向散列函数H,计算Y=Hn(PW)(Hn()表示进行n次散列运算),把Y和n的值存储于认证服务器上。客户端计算Y'=Hn-1(PW),将计算结果提交给服务器。服务器则计算Z=H(Y'),并将Z值与服务器上保存的Y值进行比较。如果Z=Y,则验证成功,然后用Y'的值取代服务器上保存的Y值,同时将n的值递减1。
缺点:由于每次进行身份认证时,客户端要进行多次Hash运算。随着迭代值n不断递减,当递减为0时,就需要重新初始化系统,服务器的额外开销比较大。而且基于事件同步的动态口令机制同样存在失去同步的风险,如用户多次无目的的生成口令就会造成失步。
1.2.3基于挑战/应答的动态口令机制
认证过程:
(1)客户端输入用户ID等信息,向认证服务器发送连接请求;
(2)服务器检查询数据库,若是合法用户ID,则生成挑战码并传回客户端;
(3)客户端根据密钥和挑战码,执行单向散列函数运算,生成应答数并发送到服务器;
(4)服务器执行同样的算法生成应答数,并与客户端发来的应答数进行比对,得到验证结果并传回客户端。
2.证书
工作原理
由证书颁发机构(CA)为系统中的用户颁发证书,证书最后需要分发到每个用户手中,这些证书的副本通常以二进制的形式存储在证书颁发机构的证书服务器数据库中,以便认证时使用。
认证过程:
(1)客户端用户首先发送登录认证请求到服务器端,内容为用户ID。
(2)服务器端收到仅包含用户ID的登录认证请求后,需要检查用户ID是否是已经注册的合法用户ID。如果不是,将直接返回错误信息到客户端。如果是服务器将产生随机数,并以明文的形式返回给客户端。
(3)客户端用户必须对下发的随机数用私钥签名,用户必须输入正确口令才能打开私钥文件。用户输入正确的口令以后,客户端的应用程序可以通过私钥完成对随机数的加密,从而生成数字签名,签名结果会和用户ID一起再次传送到服务器端。
(4)服务器端需要验证收到的用户签名。服务器认证程序会根据用户ID从数据库中获取用户的证书,到CA验证用户证书是否合法。如果不合法,则返回认证失败信息。如果合法,则解析证书,获取公钥信息,并用公钥验证签名。如果验签正确,则身份认证通过。反之,则不通过。服务器把认证结果返回给客户端,从而完成身份认证的过程。
3.智能卡
采用智能卡身份验证方式时,需要将智能卡插入智能卡读卡器中,然后输入一个PIN 码(通常为四到八位)。客户端计算机使用证书来接受Active Directory 的身份验证。这种类型的身份验证既验证用户持有的凭证(智能卡),又验证用户知晓的信息(智能卡PIN 码),以此确认用户的身份。