越来越多的信息系统基于安全的考虑加入了多因素认证的功能,实现多因素认证有多种方案,OTP就是其中一种实现相对简单便捷的方案。本文概要介绍了OTP的概念、原理和实现步骤。

一、什么是OTP

OTP:One Time Password,又称一次性口令、一次性密码、动态密码、单次有效密码。

OTP基于专门的算法每隔一定的时间间隔生成一个不可预测的随机数字组合。

OTP的密码有效期仅在一次会话或者交易过程中,因此不容易受到重放攻击。

OTP一般分为计次使用和计时使用两种,计次使用的OTP产出后,可在不限时间内使用;

计时使用的OTP则可设置密码有效时间,从30秒到两分钟不等,而OTP在进行认证之后即废弃不用,下次认证必须使用新的密码,降低了不经授权访问限制资源可能性。

获取一次性密码的方法一般有以下几种:

1、手机短信:这种方式非常普及,可用于信息系统登录,交易时二次验证,信息系统密码遗失时的找回验证等,因为手机的普及,这种方式非常普及,但对于中间人攻击抵抗性低。

2、手机令牌:手机上的APP,软件生成动态密码,用户在信息系统中输入后在服务端完成验证。也可以直接通过与服务端的交互更便捷完成验证过程。这种方式如果移动设备有系统漏洞,存在密钥泄露风险。更换手机时,也需要完成令牌的转移或在新手机上重新生成令牌。

3、硬件令牌:在网银业务中比较普遍,比如银行的U盾,在设定的大额交易场景下,需要使用硬件令牌生成动态口令完成身份确认。由于单独的硬件需要电池,存在寿命问题,令牌遗失一般也需要去营业网点注销后再重新申领。

4、纸张:某些系统采用预打印方式提供一次性密码,比较少见。

二、HOTP与TOTP的差异

HOTP:HMAC-based One-Time Password ,基于 HMAC 算法加密的一次性密码。事件同步,通过某一特定的事件次序及相同的种子值作为输入,通过 HASH 算法运算出一致的密码。

TOTP:Time-based One-Time Password写,基于时间戳算法的一次性密码。 时间同步,基于客户端的动态口令和动态口令验证服务器的时间比对,一般每 60 秒产生一个新口令,要求客户端和服务器能够十分精确的保持正确的时钟,客户端和服务端基于时间计算的动态口令才能一致。

OTP 基本原理计算 OTP 串的公式:OTP(K,C) = Truncate(HMAC-SHA-1(K,C))

其中,K 表示秘钥串;C 为随机数;HMAC-SHA-1 表示使用 SHA-1 做 HMAC;

Truncate 表示怎么截取加密后的串,并取加密后串的哪些字段组成一个数字。

对 HMAC-SHA-1 方式加密来说,Truncate 实现如下:

HMAC-SHA-1 加密后的长度得到一个 20 字节的密串;取这个 20 字节的密串的最后一个字节,取这字节的低 4 位,作为截取加密串的下标偏移量;按照下标偏移量开始,获取4个字节,按照大端方式组成一个整数;截取这个整数的后 6 位或者 8 位转成字符串返回。

HOTP 只是将其中的参数 C 变成了随机数,一般规定 HOTP 的散列函数使用 SHA2,即:基于 SHA-256 or SHA-512 [SHA2] 的散列函数做事件同步验证;

TOTP 只是将其中的参数 C 变成了由时间戳产生的数字:

C = (T - T0) / X; T 表示当前 Unix 时间戳:T0 一般取值为 0,也就是 1970 年 1 月 1 日。X 表示时间步数,也就是说多长时间产生一个动态密码,这个时间间隔就是时间步数 X,系统默认是 30 秒;

三、OTP认证原理

下图展示了OTP认证的过程:

Step1:在服务器端:,将用户账号与令牌种子建立关联。

Step2:当用户登录时,输入账号和动态令牌口令并将其提交至服务器,对比校验完成认证过程。

在实际的业务部署中,为了用户使用的便捷性,可以采用消息推送确认的方式,只需要用户的手机令牌处于运行状态,即可免去输入认证码的过程。

四、OTP的实现

根据以上的介绍,一个信息系统要集成OTP的认证方式,需要完成以下的工作:

1、开发手机令牌

2、开发认证的服务端,服务端需要完成令牌种子生成、令牌种子分发、动态口令生成等功能。

3、在OTP认证的服务端需要将业务系统的用户与分发的令牌建立关联,这样才能完成最终的登录验证。

OTP概念及实现原理简析 安当加密相关推荐

  1. OTP概念及实现原理简析

    越来越多的信息系统基于安全的考虑加入了多因素认证的功能,实现多因素认证有多种方案,OTP就是其中一种实现相对简单便捷的方案.本文概要介绍了OTP的概念.原理和实现步骤. 一.什么是OTP OTP:On ...

  2. Android V1及V2签名原理简析

    Android为了保证系统及应用的安全性,在安装APK的时候需要校验包的完整性,同时,对于覆盖安装的场景还要校验新旧是否匹配,这两者都是通过Android签名机制来进行保证的,本文就简单看下Andro ...

  3. Mysql锁机制及原理简析

    Mysql锁机制及原理简析 一.前言 1.什么是锁? 锁是计算机协调多个进程或线程并发访问某一资源的机制. 锁保证数据并发访问的一致性.有效性: 锁冲突也是影响数据库并发访问性能的一个重要因素. 锁是 ...

  4. Webpack模块化原理简析

    webpack模块化原理简析 1.webpack的核心原理 一切皆模块:在webpack中,css,html.js,静态资源文件等都可以视作模块:便于管理,利于重复利用: 按需加载:进行代码分割,实现 ...

  5. Android Handler与Looper原理简析

    一直感觉自己简直就是一个弱智,最近越来越感觉是这样了,真的希望自己有一天能够认同自己,认同自己. 本文转载于:https://juejin.im/post/59083d7fda2f60005d14ef ...

  6. grpc通信原理_gRPC原理简析

    gRPC原理简析 gRPC是由谷歌提出并开发的RPC协议,gRPC提供了一套机制,使得应用程序之间可以进行通信. 降级开发者的使用门槛,屏蔽网络协议,调用对端的接口就像是调用本地的函数一样.而gRPC ...

  7. CRC原理简析——史上最清新脱俗简单易懂的CRC解析

    CRC原理简析 1. CRC校验原理 CRC校验原理根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二进制序列的,下同),生成一个新帧发送给接收端.当然,这个 ...

  8. Java的定时器Timer和定时任务TimerTask应用以及原理简析

    记录:272 场景:Java JDK自带的定时器Timer和定时任务TimerTask应用以及原理简析.在JDK工具包:java.util中可以找到源码,即java.util.Timer和java.u ...

  9. 转子接地保护原理_发变组转子接地保护原理简析

    发变组转子接地保护原理简析 发电机转子接地故障是常见的故障之一, 发生一点接地, 对发电机本身并不直接构成危 害,此时可通过转移负荷,平稳停机后,再查故障点:若在此基础上又发生另外一点接地, 将会严重 ...

最新文章

  1. SpringCloud 2020版本教程2:使用spring cloud gateway作为服务网关
  2. 百度地图API开发概述
  3. python的@classmethod和@staticmethod
  4. 计算机学硕和专硕编码,2018考研报名:学会从专业代码判断学硕还是专硕
  5. 【雷达通信】基于matlab GPS和INS联合导航【含Matlab源码 1814期】
  6. android 单手模式开发,单手操作毫无压力 安卓单指缩放技巧
  7. 金山对雅虎助手的测试报告
  8. PHP之字符串常用函数
  9. java jersey 参数_Java Jersey使用總結
  10. 邮件服务器如何搭建?企业自己搭建邮件服务器的方法
  11. 60帧究级豪华观影体验!potplayer通过bluesky补帧!
  12. iphone计算机设置,苹果手机怎么设置其他铃声
  13. 进程冲突造成的深信服ssl ***客户端登录异常问题
  14. 贵阳骑龙村:一根小香葱闯出大市场
  15. 产品取名——中国IT产品命名奇观
  16. 线结构光视觉传感器/线激光深度传感器标定工具
  17. javascript跨域:什么是跨域,如何跨域
  18. mysqlplus 批量插入_mybatis+mysql批量插入和批量更新
  19. 关闭ssh访问gitolite服务器时已认证用户可以列出所有仓库的方法
  20. 怎么去除爱剪辑的片头片尾,教你去除片头片尾的方法

热门文章

  1. 三极管电路--高通滤波器
  2. java版斗地主_Java实现斗地主简化版
  3. 三阶魔方教程——ZZ解法
  4. 2022-2028年中国山茱萸行业投资策略探讨及市场规模预测报告
  5. 关于Revit 材质 及 材质的外观图像 见解
  6. 从计算到智算,计算产业掀起什么样的浪潮?
  7. ebnf范式_BNF范式(巴科斯范式)到底是什么?
  8. Nginx的5大应用场景
  9. Layui 弹窗 -全面使用
  10. tp5 File文件写入(生成静态文件)