“挑战应答方式”:challenge-response,是零知识证明的方式。
1.认证过程
顾名思义,基于挑战/应答(Challenge/Response)方式的身份认证系统
就是每次认证时认证服务器端都给客户端发送一个不同的"挑战"字串,客户端程序收到这个"挑战"字串后,做出相应的"应答",以此机制而研制的系统.认证过程为:
-
客户向认证服务器发出请求,要求进行身份认证;
-
认证服务器从用户数据库中查询用户是否是合法的用户,若不是,则不做进一步处理;
-
认证服务器内部产生一个随机数,作为"提问",发送给客户;
-
客户将用户名字和随机数合并,使用单向Hash函数(例如MD5算法)生成一个字节串作为应答;
-
认证服务器将应答串与自己的计算结果比较,若二者相同,则通过一次认证;否则,认证失败;
-
认证服务器通知客户认证成功或失败。
以后的认证由客户不定时地发起,过程中没有了客户认证请求一步。两次认证的时间间的密钥隔不能太短,否则就给网络、客户和认证服务器带来太大的开销;也不能太长,否则不能保证用户不被他人盗用IP地址,一般定为1-2分钟。
2.密钥的分配和管理
密钥的分配由维护模块负责,当用户进行注册时,自行设定自己的口令字。用户由口令字生成。
一个口令字必须经过两次口令字检查。第一次由注册程序检查,强制口令字必须有足够的长度(如8个字符)。口令字被加密后送入数据库中,这个口令字标记为'未检查的'。第二次,由离线的口令字检查工具进行检查,将弱口令字进行标记,当下一次用户认证时,认证服务器将强制用户修改口令字。
密钥的在线修改由认证服务器完成,它的过程与认证过程基本类似。
网友评论