或者叫询问-应答机制。

基于挑战/应答(Challenge/Response)方式的身份认证系统就是每次认证时认证服务器端都给客户端发送一个不同的"挑战"字串,客户端程序收到这个"挑战"字串后,做出相应的"应答",以此机制而研制的系统.认证过程为:

1) 客户端向服务器发出认证请求;
2) 认证服务器从用户数据库中查询用户是否是合法的用户,若不是,则不做进一步的处理;
3) 认证服务器内部产生一个随机数,作为Challenge,发送给用户;
4) 客户将口令和随机数合并,使用单向Hash函数 ( 例如MD5算法 ) 生成一个字节串作为Response;
5) 认证服务器将Response与自己的计算结果比较,如两者相同,则通过一次认证,反之认证失败;
6) 认证服务器通知客户端认证成功或失败。

以后的认证由客户不定时发起,过程中没有了客户认证请求一步。两次认证的时间间隔不能太短,否则就给网络、客户和认证服务器带来太大的开销;但也不能太长,否则不能保证用户不被他人盗用IP地址,一般定为1-2分钟。

以后的认证由客户不定时发起,过程中没有了客户认证请求一步。两次认证的时间间隔不能太短,否则就给网络、客户和认证服务器带来太大的开销;但也不能太长,否则不能保证用户不被他人盗用IP地址,一般定为1-2分钟。

密钥的分配和管理:

密钥的分配由维护模块负责,当用户进行注册时,自行设定自己的口令。用户的密钥由口令生成。

一个口令必须经过两次口令检查。第一次由注册程序检查,强制口令必须有足够的长度。口令被加密后送入数据库,这个口令标记为“未检查的”。第二次,由离线的口令检查工具进行检查,将弱口令进行标记,当下次用户认证时,认证服务器将强制用户修改口令。

密钥的在线修改由认证服务器完成,其过程与认证过程基本类似。

Challenge/Response认证的安全性分析:

下面就常见的对认证服务器攻击方法来分析其安全性。

1) 网络侦听 ( sniffer )
认证过程中,密钥和口令不是明文不在网络上传输,所以sniffer很难从听到的报文中得到用户的口令。在密钥在线修改过程中,新口令使用旧密钥加密传送,sniffer攻击仍然无效。

2) replay attack
每次challenge不同,所以replay attack无效。

3) password guessing

在知道了认证算法后,侦听者可以对用户的口令进行猜测。这种攻击方法直接有效,特别是当用户的口令有缺陷时。解决方法是使用合适的口令。

4) 跟踪地址攻击
攻击者在看到用户认证后,设法将自己的机器地址改为用户的IP地址,从而冒充用户。但由于攻击者无法完成后续的认证,在1-2分钟内,攻击失效。

最新文章

  1. andriod 动态显示当前时间
  2. 371. Sum of Two Integers
  3. Git 一些日常使用积累
  4. Oracle分页查询与RowNum
  5. 第三方账号登录--QQ登录,以及QQ微博账号登录
  6. [springMVC]javax.servlet.jsp.JspTagException: Neither BindingResult nor plain target object for bean
  7. apache-tomcat-7.0.70无法进入Manager管理App项目
  8. WeQuant交易策略—NATR
  9. 【ASP.NET Core】处理异常(下篇)
  10. 详解BLE 空中包格式—兼BLE Link layer协议解析
  11. zabbix监控实战<3> 之自定义监控实例
  12. 潭州课堂25班:Ph201805201 django 项目 第四十二课 后台 课程相关,用户组管理 (课堂笔记)
  13. 结构化分析(SA)
  14. cf250D. The Child and Sequence(线段树 均摊复杂度)
  15. ORACLE用户永不被锁
  16. jenkins 后台程序运行
  17. VMware安装虚拟机Ubuntu提示piix4_smbus 0000:00:007.3: Host SMBus controller not enabled错误解决办法
  18. 如何让多个android listview同时使用一个滚动条
  19. IntelliJ IDEA 2017版 快捷键CTRL + SHIFT + A无效如何调试(详细的开启idea自动make功能 )
  20. Unity3D手游开发日记(5) - 适合移动平台的植被随风摆动

热门文章

  1. Q - Period II
  2. Spring MVC-表单(Form)标签-错误处理(Error Handling)示例(转载实践)
  3. x$bh视图
  4. Codeforces Round #306 (Div. 2) D
  5. 搭建strom 的开发环境 - local mode
  6. java wait 与 notify sleep
  7. 【Android开发VR实战】三.开发一个寻宝类VR游戏TreasureHunt
  8. js面试题--------JS中数字和字符,布尔类型相加相减问题
  9. android 自己定义ViewGroup实现可记载并呈现选择的ListView
  10. mongoDB学习笔记——安装及启动