系列目录

  • 程序员之网络安全系列(一):为什么要关注网络安全?
  • 程序员之网络安全系列(二):如何安全保存用户密码及哈希算法
  • 程序员之网络安全系列(三):数据加密之对称加密算法
  • 程序员之网络安全系列(四):数据加密之非对称秘钥
  • 程序员之网络安全系列(五):数字证书以及12306的证书问题
  • 程序员之网络安全系列(六):动态密码

前文回顾

程序员之网络安全系列(二):如何安全保存用户密码及哈希算法 我们保证了数据的完整性

程序员之网络安全系列(三):数据加密之对称加密算法 我们对数据进行了加密

程序员之网络安全系列(四):数据加密之非对称加密算法
我们使用了非对称密钥算法,我们让“隔壁王叔叔”传递了秘钥。

程序员之网络安全系列(五):数字证书以及12306的证书问题
我们使用了数字证书,确保了对方的公钥身份,也就是互联网中确定了要访问的网站就是你要访问的网站。

但是我们如何确定要访问这个网站的用户就是要访问的用户呢? 对银行来说需要确保“敏捷的水”登录银行时,必须是"敏捷的水" 而不是别人,不然别人就把钱转走了。

虽然我们从通信,数据加密等方式确保用户密码不背攻击者破解,但是如果攻击者使用键盘记录器等工具知道了用户密码,那么就可以冒充用户了。

比如银行的U盾,因为我对这块业务不了解,我猜银行为每个用户发放了一个公钥?( 知道的同学,可以帮忙解释一下银行的U盾都做了什么? )

我们用数字证书确定了银行的身份,那么银行如何确定我们的身份呢?

两步验证

那么什么是两步认证呢?两步认证就是在每次登陆时候填一个手机短信收取的验证码或者手机应用生成的验证码。当然接收验证码的手机号或者应用是需要绑定的,这样只有拿到这部手机并且知道你帐号密码的人才能登陆帐号。

为什么需要它?

对有些人来说,盗取密码比您想象的更简单

以下任意一种常见操作都可能让您面临密码被盗的风险:

  • 在多个网站上使用同一密码
  • 从互联网上下载软件
  • 点击电子邮件中的链接

想像一下您无法访问自己的帐户及其中的内容,当别有用心的人盗取您的密码后,他们能让您无法访问自己的帐户,还可以执行以下操作:

  • 翻看(甚至删除)您所有的电子邮件、联系人、照片等
  • 冒充您给您的联系人发送垃圾邮件或有害的电子邮件
  • 使用您的帐户重置您其他帐户(银行帐户、购物帐户等)的密码

两步验证可以将别有用心的人阻挡在外,即使他们知道您的密码也无可奈何。

如何工作?

现在大部分比较危险的操作都需要绑定手机号,因为手机号是你用的唯一的。接收到验证码后,我们再输入系统做第二次的验证。

但是由于我们这个验证码也有可能丢失,那么我们只需要让他在一定时间有效就可以了,这就是OTP.

动态口令 (One Time Password)

动态密码: 一个OTP(One Time Password) 是一个密码仅用于一次登录会话或者交易,使用过后,这个密码就无效了。

静态密码的问题:

  • 容易被破解
  • 容易被猜测
  • 容易被盗劫
  • 针对不同的网站,用户需要记忆大量的密码。

使用动态口令主要有2个方面价值:

  • 防止由于盗号而产生的财产损失。
  • 采用动态口令的单位无需忍受定期修改各种应用系统登录密码的烦恼。

有两种方法,生成动态密码:

Event-based OTP (EOTP)

基于事件同步的令牌,其原理是通过某一特定的事件次序及相同的种子值作为输入,在DES算法中运算出一致的密码,其运算机理决定了其整个工作流程同时钟无关,不受时钟的影响,令牌中不存在时间脉冲晶振。但由于其算法的一致性,其口令是预先可知的,通过令牌,你可以预先知道今后的多个密码,故当令牌遗失且没有使用PIN码对令牌进行保护时,存在非法登陆的风险,故使用事件同步的令牌,对PIN码的保护是十分必要的。同样,基于事件同步的令牌同样存在失去同步的风险,例如用户多次无目的的生成口令等,对于令牌的失步,事件同步的服务器使用增大偏移量的方式进行再同步,其服务器端会自动向后推算一定次数的密码,来同步令牌和服务器,当失步情况已经非常严重,大范围超出正常范围时,通过连续输入两次令牌计算出的密码,服务器将在较大的范围内进行令牌同步,一般情况下,令牌同步所需的次数不会超过3次。但在极端情况下,不排除失去同步的可能性,例如电力耗尽,在更换电池时操作失误等。此时,令牌仍可通过手工输入由管理员生成的一组序列值来实现远程同步,而无需寄回服务器端重新同步。

Time based OTP (TOTP)

基于令牌和服务器的时间同步,通过运算来生成一致的动态口令,基于时间同步的令牌,一般更新率为60S,每60S产生一个新口令,但由于其同步的基础是国际标准时间,则要求其服务器能够十分精确的保持正确的时钟,同时对其令牌的晶振频率有严格的要求,从而降低系统失去同步的几率,从另一方面,基于时间同步的令牌在每次进行认证时,服务器端将会检测令牌的时钟偏移量,相应不断的微调自己的时间记录,从而保证了令牌和服务器的同步,确保日常的使用,但由于令牌的工作环境不同,在磁场,高温,高压,震荡,入水等情况下易发生时钟脉冲的不确定偏移和损坏,故对于时间同步的设备进行较好的保护是十分必要的。对于失去时间同步的令牌,目前可以通过增大偏移量的技术(前后10分钟)来进行远程同步,确保其能够继续使用,降低对应用的影响,但对于超出默认时间(共20分钟)的同步令牌,将无法继续使用或进行远程同步,必须返厂或送回服务器端另行处理。同样,对于基于时间同步的服务器,应较好地保护其系统时钟,不要随意更改,以免发生同步问题,从而影响全部基于此服务器进行认证的令牌。

** 以上两种方式在生成密码的过程都不需要与服务器通信,所以极大的保证了密码的安全。**

算法的实现

http://tools.ietf.org/html/rfc6238

程序员之网络安全系列(六):动态密码相关推荐

  1. 程序员之网络安全系列(三):数据加密之对称加密算法

    系列目录: 程序员之网络安全系列(一):为什么要关注网络安全? 程序员之网络安全系列(二):如何安全保存用户密码及哈希算法 程序员之网络安全系列(三):数据加密之对称加密算法 程序员之网络安全系列(四 ...

  2. 程序员真实故事系列 ---阅读书籍计划

     [转帖][程序员真实故事系列@个人特别推荐阅读@] 标 题: 一个人的奋斗历程 这些日子我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公 开,希望能够为国内IT的发展尽自己一份微薄的力量 ...

  3. vue函数如何调用其他函数?_好程序员Python教程系列之递归函数与匿名函数调用...

    好程序员Python教程系列递归函数与匿名函数调用,函数是Python技术学习中重要的一个环节,深入掌握该阶段的知识内容,对于Python技术能力的提升非常有帮助,这里就针对递归函数与匿名函数两种函数 ...

  4. 雷军:《我十年的程序员生涯》系列之三(失败的大学创业经历)

    // 转载自雷军2008年11月10日写的博客.以下内容为博客原文: 不少人想白手起家.空手套狼,在今天的商业社会里这是非常不现实的一件事情.我特别想问:你为什么不能先做能力及资源上的积累后再创业呢? ...

  5. Java程序员掉发系列——程序员必须认识的英文单词(汇总)

    原创 Java程序员掉发系列--程序员必须认识的英文单词(汇总) 2019-11-07 09:45:48 程序yang 阅读数 692更多 分类专栏: Java基础知识点(Java SE) 版权声明: ...

  6. 一个程序员的成长的六个阶段

    第一阶段 此阶段主要是能熟练地使用某种语言.这就相当于练武中的套路和架式这些表面的东西. 第二阶段 此阶段能精通基于某种平台的接口(例如我们现在常用的Win 32的API函数)以及所对应语言的自身的库 ...

  7. 好程序员Python教程系列第5讲-分支结构

    好程序员Python教程系列从零开始学Python-第5讲:分支结构 应用场景 迄今为止,我们写的Python代码都是一条一条语句顺序执行,这种代码结构通常称之为顺序结构.然而仅有顺序结构并不能解决所 ...

  8. 一个程序员的成长的六个阶段(转载)

    一个程序员的成长的六个阶段 第一阶段 此阶段主要是能熟练地使用某种语言.这就相当于练武中的套路和架式这些表面的东西. 第二阶段 此阶段能精通基于某种平台的接口(例如我们现在常用的Win 32的API函 ...

  9. 【有三吐槽】程序员改BUG的六重境界,你,第几重了?

    文章首发于微信公众号<有三AI> [有三吐槽]程序员改BUG的六重境界,你,第几重了? 作为一个程序员,我们也有丰富多彩的bug人生啊,咱们又开新专栏了(实在是有感于最近大家问我的问题), ...

最新文章

  1. 总奖金300万的AI Challenger 2018进入第二阶段,决赛在即!
  2. tpcc-mysql的使用
  3. 计算机课程设计课程计划书,计算机汇编语言课程设计计划书.doc
  4. oracle 窗口函数 (keep)
  5. Shell脚本自动监控docker容器的状态
  6. Win7系统win键没有反应的应对措施
  7. jmeter--正则提取json串中一个大括号对象里指定字段值的的另一个字段的值
  8. Laravel源码解析之中间件
  9. 95-30-020-Channel-NioSocketChannel
  10. [Java] Java常见错误
  11. python程序打包成exe(使用pyinstaller)
  12. 数据包络分析方法与maxdea软件_Ecoatmaster软件辅助电泳工艺评审的应用
  13. 五分钟学会PowerDesigner创建概念数据模型
  14. Redis 6 入门到入坟 详细教程 @学习笔记
  15. DICOM医学图像处理:浅析SWF、WML、SPS、MPPS
  16. Spring Boot统一日志框架
  17. 2022年网站快速排名优化 方法是什么?
  18. OpenMP编程(4)—sections、single指令
  19. 用python分析四大名著(一)
  20. svn恢复到指定版本

热门文章

  1. printf花式输出
  2. Matlab - 抛物面牛顿光学系统反射式望远镜尺寸设计
  3. 平面设计中有哪些基本构图原理?
  4. 【IDC机房和自建机房】
  5. AcWing 327. 玉米田(状态压缩DP)
  6. SV随机化Randomization
  7. android sony 动态背景,安卓福利:精选索尼手机原生壁纸 每一张都有索尼的信仰加成!...
  8. ATEC倒计时17天 | 港版支付宝AlipayHK加持的香港“无现金”生活(赠门票)
  9. 大力推荐的超牛GitHub top 100的Java开源库
  10. javascript转译器