首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应如何存储HOTP的计数器值?

应如何存储HOTP的计数器值?
EN

Security用户
提问于 2016-11-06 10:47:46
回答 1查看 1.1K关注 0票数 1

RFC4226将HOTP算法描述为“基于递增的计数器值和仅为令牌和验证服务所知的静态对称密钥”,具体如下:

代码语言:javascript
复制
HOTP(K,C) = Truncate(HMAC-SHA-1(K,C))

假设每个用户都有自己的唯一计数器,那么如何存储计数器(即算法的C部分)?

EN

回答 1

Security用户

发布于 2016-11-07 12:02:57

正如@Pascal所指出的,您应该加密密钥"K“。但是,您还需要考虑将加密密钥存储在何处。

简单方法

在系统上使用加密密钥。加密密钥是硬盘上的一个文件。它用于加密数据库中的K。数据库可能位于另一台计算机上,由DBMS管理员管理。通过这种方式,您可以确保被盗的数据库不包含令牌的_K_s。

但是,如果您在同一台机器上运行,您可以窃取加密的K和加密密钥。

因此,您应该加强服务器并控制对它的访问。

更安全的离线攻击

如果您在同一台计算机上运行,则可以对加密密钥进行加密。使用密码加密加密密钥。启动服务时,您可以提供密码,从而在RAM中解密加密密钥,并可用于解密数据库中的_K_s。

最先进的分摊

使用硬件安全模块来存储加密密钥。在HSM里面解密K。你可以使用任何HSM。

甚至超过了最复杂的

使用一个通用的HSM,您可以编程来执行HOTP。这样,您就可以将所有的_K_s保存在高速机床内。他们根本不需要在真实生活中被解密。让HSM计算给定计数器的下一个OTP值。您可以使用自定义可编程HSM。

票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/141946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档