HOTP
更新时间:2023-10-31 03:35:01 阅读量: 综合文库 文档下载
HOTP:一种基于HMAC的一次性口令算法
摘要
本文描述了一种基于HMAC的一次性口令生成算法。对该算法进行了安全性分析,并讨论了该算法安全使用的重要参数。该算法已广泛应用于VPN访问,Wi-Fi登录及面向交易的Web应用等多项网络服务。
本文由OATH组织成员合作完成,详细讨论了可在技术界自由传播的算法。作者相信一种通用且共享的算法可以通过商业或开放资源工具实现共享,从而为Interne上采用的二因子认证提供了便利。
1.概述
本文首先介绍了可以生成基于HMAC的一次性口令值的算法的背景,因而这种算法也称为基于HMAC的一次性口令算法。将在第4节列出这种算法的要求,在第5节说明HOTP算法,第6、7节主要对这种算法进行安全性分析,第8节对其进行扩充和完善,并在第10节对本文作出结论。在附录A,有兴趣的读者会发现对算法安全性的详细、全面分析:并对该算法的理想化版本进行了评价,之后对HOTP算法的安全性进行了分析。
2.引言
今天,双因子认证仍只是在极有限的范围和规模内得到应用。尽管威胁和攻击的水平在不断提高,大多数Internet应用薄弱的认证体系来监视用户访问。硬件和软件技术供应商之间缺少可操作性成为了双因子认证应用的制约因素。特别是由于缺乏统一规范,硬件和软件组件常常通过专有技术紧密的结合,从而导致高成本解决方案,不佳的采用和有限的创新。
在过去两年中,网络威胁的迅速增长暴露了Internet上认证主要手段静态口令的不足。同时,目前的方法要求一个终端用户携带一个昂贵的,只能用来进行网络认证的功能单一的装置。这显然也不是最好的方法。对于Internet上流传的双因子认证方法则必须在能够跨广泛应用范围的灵活性更高的装置中嵌入它。
这种既可以引入基础技术同时又保证广泛互操作性的能力要求其在广大硬件和软件开发者技术界中随时可得。只有一种开放系统方法可以保证基本的原始
双因子认证方法可用于下一代用户装置,如USB大量存储器、IP电话以及个人数字助理。
一次性口令当然是最简单而流行的保护网络访问权的双因子认证方法之一。例如,在大企业中,虚拟专用网络的访问通常都需要使用一次性口令来进行远程用户认证。一次性口令通常更适用于强认证方式如公钥体制(PKI)或生物统计,这是因为空气隔离装置不需要在用户机上安装客户桌面软件,因此可使他们在包括家用电脑、自动售货机、个人数字助理多台机器上漫游。
本文提出了一种简单的一次性口令算法,可以通过任何硬件制造商或软件开发者实现,从而建立了可互操作认证装置和软件代理。算法是基于事件的,因此它可用于大容量装置如Java智能卡、USB 安全装置以及GSM SIM卡。
所介绍的算法在IETF知识产权[RFC3979]规定的条件下可以在开发界自由使用。
本文的作者都是OATH组织成员。该组织成立于2004年,其目的是促进强认证技术提供者之间的合作。
3.术语
这篇文章中的关键词“必须”、“必须不”、“要求”、“即将”、“将不”、“应该”、“应该不”、“建议”、“可以”、和“可选”都如[RFC2119]中所定义。
4.算法要求
这一节说明了进行算法设计的要求。着重强调了终端用户的可用性和算法由低成本硬件实现的能力,从而使用户界面能力最小化。特别是以算法能插入高容量SIM和Java卡的为前提。
要求1算法必须是基于序列号或基于计数器的。这样的目的之一是可以将HOTP算法用于大容量装置如Java智能卡,USB安全装置和GSM SIM卡。
要求2算法应该是经济可实现的,硬件上对电池、按键、计算马力、LCD显示器尺寸的需要最小化。
要求3算法必须用在不支持任何数值型输入的令牌,但也可以用于更复杂的机器如安全PIN键盘。
要求4令牌上显示的HOTP值必须易于用户阅读和输入,这要求HOTP值必须有一个合理的长度。
HOTP只必须至少为6位,同时也希望它仅由数字构成,这样用户就很容易在电话这样的有限设备上输入。
要求5必须有用户——可利用的友好装置来实现计数器重同步,7.4节和附录E.4详细说明了本文提到的重同步装置。
要求6算法必须使用强共享的密钥,共享密钥的长度必须至少为128比特。本文建议共享密钥的长度为160比特。
5.HOTP算法
在这一节,我们介绍标记并描述HOTP算法的基本模块——计算HMAC-SHA1值的基本函数,以及抽取HOTP值的截短方法。
5.1标记和符号
一个数串通常为二进制数串,即0和1的序列。 如果s是一个数组,则|s|表示其长度。 如果n是一个数,则|n|表示其绝对值。
如果s是一个数组,则s[i]表示其第i比特。我们以0为开始对这些比特进行编号。因此s = s[0]s[1]...s[n-1],这里n = |s|是s的长度。
StToNum表示二进制串输入转换为十进制数的函数。 下面是本文中用到的符号列表
---------------------------------------------------------------
C 8-byte 计数器值,此计数器必须与HOTP生成器(客户端)和HOTP认证器(服务器)保持同步。
K 客户端和服务器之间的共享密钥;每一个HOTP生成器都有互不相同且唯一的密钥K。
T 阈值参数:用户尝试认证次数达到T次后,服务器将拒绝该用户接入。
S 重同步参数:服务器将通过依次的S个计数器值来验证接收到的认证码。
Digit 系统参数,HOTP值的位数。 5.2描述
HOTP算法是基于一个加法计数器和一个静态的对称密钥,该密钥仅有令牌和认证服务器知道。为得到HOTP值,我们使用HMAC-SHA-1算法,如RFC 2104 [BCK2]所定义。
由于HMAC-SHA-1计算输出为160比特,我们必须将其截短以便于用户输入。 HOTP(K,C) = Truncate(HMAC-SHA-1(K,C)) 这里:
Truncate表示将HMAC-SHA-1值转换为HOTP值的函数,如5.3节所定义。 首先对密钥(K),计数器(C),和Data值执行高阶字节散列。 HOTP生成器产生的HOTP值可以作为大尾数处理。 5.3.生成HOTP值
我们可以分为3个步骤来描述改过程
步骤1:生成一个HMAC-SHA-1值,令HS = HMAC-SHA-1(K,C)// HS是一个20字节的数组。
步骤2:生成一个4字节数组(动态截短) 令Sbits = DT(HS)//DT稍后定义 //返回31位的数串 步骤3:计算HOTP值
令Snum = StToNum(Sbits)//将Sbits转换为10进制数,取值在0值2^{31}-1之间
返回D = Snum mod 10^Digit//D是一个十进制数,取值在0至10^{digit}-1之间
截短函数用于步骤2和步骤3中,即进行动态截短之后与10^{digit}进行模运算。动态截短函数的作用是从160比特(20字节)的HMAC-SHA-1运算结果中
抽取4字节的动态二进制码。
DT(String) // String = String[0]...String[19] 令OffsetBits作为String[19]的低4位
Offset = StToNum(OffsetBits) // 0 <= OffSet <= 15 令P = String[OffSet]...String[OffSet+3] 返回P的后31位
不取P的最高位的原因是为了防止混淆有符号与无符号的模运算。不同的处理器回进行不同的处理,不取符号位可以消除这种模糊。
Digit必须最少取6位,可能的话取7到8位码。根据保密需要,应该考虑使Digit = 7或更高以得到长HOTP值。
5.4 Digit =6的HOTP值计算举例
下面的例子描述了抽取动态二进制码的过程,hmac_result是存放HMAC-SHA-1结果的一个字节数组
int offset = hmac_result[19] & 0xf ;
int bin_code = (hmac_result[offset] & 0x7f) << 24 | (hmac_result[offset+1] & 0xff) << 16 | (hmac_result[offset+2] & 0xff) << 8 | (hmac_result[offset+3] & 0xff) ;
SHA-1 HMAC Bytes (Example)
------------------------------------------------------------- | Byte Number | ------------------------------------------------------------- |00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19| ------------------------------------------------------------- | Byte Value |
正在阅读:
HOTP10-31
ICS LABA更好地达到COPD治疗目标(黄绍光)05-11
美学提纲(学生用)05-19
第二单元 升和毫升09-06
房地产公司管理制度汇编大全44P07-22
万里外卖03-22
海南地接欢迎词02-21
提示语专项练习12-28
班主任工作与心理学策略05-22
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 酒吧淡季运营方案
- 风中的草鞋阅读答案
- 四下册全部自测题 - 图文
- 外国建筑史名词解释
- 三年级上册语文13花种1 - 图文
- 2011年杭州市中考英语真题与答案 - 图文
- 小学期中考试后家长会班主任发言稿
- 水渠工程承包合同
- 高中英语教学的现在与未来
- 篆刻章法训练
- 湘仁医网考试题目
- 教育心理学 李晓东 网络测试真题+标准答案
- 《游褒禅山记》优秀教学设计
- 《鲧禹治水》阅读答案
- 护理科学研究复习题及参考答案
- 厦门大学《财务管理》2013级期末试卷(A卷正式版)
- 人教版一到六年级日积月累集锦
- 《和小动物说说话》群文阅读 课堂实录
- 全国日照经纬度表(日照分析专用) - 图文
- 2019-2020学年八年级生物下册 7.1.1 植物的生殖练习(新版)新人教版 doc