首页 理论教育基于口令的身份认证操作

基于口令的身份认证操作

【摘要】:基于口令的认证方法是传统的认证机制,主要用于用户对远程计算机系统的访问,确定用户是否拥有使用该系统或系统中的服务的合法权限。由于使用口令的方法简单,容易记忆,因此成为一种应用比较广泛的认证技术。基于口令的身份认证一般是单向认证。常见的使用口令的方法是采用哈希函数对口令进行验证。

基于口令(password)的认证方法是传统的认证机制,主要用于用户对远程计算机系统的访问,确定用户是否拥有使用该系统或系统中的服务的合法权限。由于使用口令的方法简单,容易记忆,因此成为一种应用比较广泛的认证技术。基于口令的身份认证一般是单向认证。

常见的使用口令的方法是采用哈希函数对口令进行验证。假设用户A想要登录服务器系统S,这时用户A只需向服务器发送服务器分配给他的IDA号和口令PWA,即:

服务器在收到用户发送过来的信息后,首先将收到的PWA通过哈希函数H(·)产生散列值,然后在自己的口令文档或数据库中查找与(IDA,H(PWA))相匹配的记录,如果找到,则认证成功,允许用户使用自己的服务。在这种方法中,为了确定用户是否有合法的权限使用该系统,服务器只要能够区分输入的口令是有效的还是无效的即可,并不需要知道口令本身的内容。因此,即使攻击者通过窃听双方通信或窃取了服务器中的口令列表,得到了H(PWA),也无法假冒用户A来进行攻击。

在上述方法中,服务器保存了用户的口令列表,虽然该列表是口令的散列值,但存在着一定的不安全因素。由于用户的口令通常都比较短,因此当攻击者C已经获得服务器的口令列表时,可采用以下的方法进行攻击。攻击者C可以在本地搜集很多个常用的口令(如100万个),然后用哈希函数对这些口令进行计算,得到相应的散列值,将这些结果存储起来。然后将服务器的口令列表和自己存储的文件相比较,得到匹配的数据,这样攻击者C就获得了某个或某些用户的口令,这种攻击方式称为字典攻击(Dictionary Attack)。

为了消除字典攻击,服务器中建立的口令列表记录可以修改成(ID,salt,H(PW,salt))的形式。ID表示用户的身份,salt表示一个随机数,H(PW,salt)表示用户口令和随机数合起来的散列值。

在这种方式中,用户的口令在发送给服务器之前,首先和随机数一起进行散列,产生散列值H(PW,salt),即

服务器在收到用户的消息后,在自己的口令列表中查找与(IDA,salt,H(PWA,salt))匹配的记录,如果找到,则允许A访问自己的服务。(www.chuimin.cn)

添加salt的方法虽然能抵抗字典攻击,但也有一定的安全隐患,即不能抵抗口令窃听的攻击,即攻击者使用各种方法获得用户口令的明文,从而进行相应的攻击。

口令窃听攻击之所以成功的原因,很大一部分在于用户每次登录时总是使用同一个口令。如果用户每次登录都使用不同的“口令”,那么攻击者进行口令窃听攻击成功的概率将大大降低。

还有一种方法称为哈希链方法,在该方法中,服务器首先对用户进行初始化,保存用户最初的口令记录(ID,n,Hn(PW)),其中ID是用户的身份标识,n是一个整数,H(·)是哈希函数,Hn(PW)定义为Hn(PW)=H(Hn-1(PW)),n-1,2,…,即对用户口令PW通过哈希函数产生散列值,并将该散列值再通过哈希函数产生新的散列值,以此类推,一共进行规次哈希运算。用户在登录时只需要记住自己的口令PW,当用户登录到服务器时,服务器会更新所保存的用户记录。

当客户机进行首次口令认证时,客户机对口令PW重复计算哈希函数n-1次,得到Hn-1(PW)。客户机将计算结果发送给服务器,服务器收到Hn-1(PW)后,再进行一次哈希函数的运算,得到Hn(PW),并检查新的散列值是否与自己保存的用户记录中的相匹配。如果匹配,则表示认证通过,服务器确定对方就是合法授权的用户。接着,服务器更新所保存的口令记录,用(ID,n-1,Hn-1(PW))更新(ID,n,Hn(PW))。

在这种方法中,由于用户发给服务器的口令PW通过哈希函数计算后得到Hn(PW)的次数是不同的,而且哈希函数是单向的,因此攻击者无法从Hn(PW)中得到有用的信息,即使攻击者通过某种手段获得了服务器所保存的口令列表也无法得到用户的口令PW。

在基于哈希链的认证方法中,作为计数器的n值是变化的,依次递减到1,当n最终减为1时,客户机和服务器端需要重新初始化以设置口令。