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

系列目录

前文回顾

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

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

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

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

可是咱们如何肯定要访问这个网站的用户就是要访问的用户呢? 对银行来讲须要确保“敏捷的水”登陆银行时,必须是"敏捷的水" 而不是别人,否则别人就把钱转走了。服务器

虽然咱们从通讯,数据加密等方式确保用户密码不背攻击者破解,可是若是攻击者使用键盘记录器等工具知道了用户密码,那么就能够冒充用户了。网络

好比银行的U盾,由于我对这块业务不了解,我猜银行为每一个用户发放了一个公钥?( 知道的同窗,能够帮忙解释一下银行的U盾都作了什么? )工具

咱们用数字证书肯定了银行的身份,那么银行如何肯定咱们的身份呢?网站

两步验证

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

为何须要它?

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

如下任意一种常见操做均可能让您面临密码被盗的风险:

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

想像一下您没法访问本身的账户及其中的内容,当别有用心的人盗取您的密码后,他们能让您没法访问本身的账户,还能够执行如下操做:

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

两步验证能够将别有用心的人阻挡在外,即便他们知道您的密码也迫不得已。

如何工做?

如今大部分比较危险的操做都须要绑定手机号,由于手机号是你用的惟一的。接收到验证码后,咱们再输入系统作第二次的验证。

可是因为咱们这个验证码也有可能丢失,那么咱们只须要让他在必定时间有效就能够了,这就是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

相关文章
相关标签/搜索