[信息安全] 4.一次性密码 && 身份认证三要素

  • 时间:
  • 浏览:1
  • 来源:5分PK10_5分PK10官网

C#实现基于HMAC的OTP的代码:

TOTP是Time-Based One Time Password的缩写。TOTP是在HOTP的基础上扩展的有有三个 算法,算法细节定义在RFC6238(https://tools.ietf.org/html/rfc6238),其核心在于把HOTP中的counter加带了时间T,还不需要 简单的理解为有有三个 当前时间的时间戳(unixtime)。一般实际应用中会固定有有三个 时间的步长,比如150秒,150秒,120秒等等,也就说 说再你什儿 步长的时间内,基于TOTP算法算出的OTP值是一样的。废话太大说,看看TOTP算法的核心代码:

总结来说,2FA就说 使用了身份认证中的有有三个 累积。

HOTP是HMAC-Based One Time Password的缩写,即是基于HMAC(基于Hash的消息认证码)实现的一次性密码。算法细节定义在RFC4226(https://tools.ietf.org/html/rfc4226),算法公式为: HOTP(Key,Counter)  ,拆开是 Truncate(HMAC-SHA-1(Key,Counter))

调用一下试试看:

2SV有个孪生兄弟2FA(双因素认证:Two Factor Authentication),这么 关于2SV和2FA有那些区别呢,比如让用户在“用户名+密码”的基础上提供的额外的一次性密码,关于你什儿 一次性密码到底是属于“你所知道的信息”还是“你所拥有的信息”呢?并这么 明显的区分界限,有兴趣的还不需要 看看这里的讨论:https://security.stackexchange.com/questions/41939/two-step-vs-two-factor-authentication-is-there-a-difference 。 后来 你觉得你什儿 一次性密码属于“你所知道的信息”,这么 你要认为它是2SV;后来 你觉得你什儿 一次性密码属于“你所拥有的信息”,这么 你要认为它是2FA。

首先解释下那些是身份认证?觉得很简单,就说 让对方相信你就这么 你。这么 怎么才能 才能 让对方相信你就这么 你呢?按照你能提供的信息的等级来划分,大致有如下你什儿 信息还不需要 证明你就这么 你有些人:

2SV vs 2FA (2):https://paul.reviews/the-difference-between-two-factor-and-two-step-authentication/

TOTP(Time-Based One Time Password)RFC:https://tools.ietf.org/html/rfc6238

两步验证现在是有有三个 加带强认证安全方面广泛使用的有有三个 除理方案。比如Google的2SV(https://www.google.com/landing/2step/),Microsoft的2SV(https://support.microsoft.com/zh-cn/help/12408/microsoft-account-about-two-step-verification)等等,通常的做法是当用户输入了"用户名+密码"的基础上,会让用户再提供有有三个 一次性密码(以短信、邮件,后来 动态密码生成器app的最好的方式发放给用户)。再有比如在有些服务中不需要 用户额外设置的安全问题报告 ,比如“你的出生地在哪?”等等此类。

简单的介绍了下一次性密码的原理以及其应用场景,完整的代码请移步:https://github.com/linianhui/code/blob/master/src/SecurityHelper.cs 。如有错误之处,欢迎指正!

OTP(One Time Password)Wiki:https://en.wikipedia.org/wiki/One-time_password

OTP是One Time Password的简写,即一次性密码。在平时生活中,当我门 接触一次性密码的场景非常多,比如在登录账号、找回密码,更改密码和转账操作等等那些场景,其中有些常用到的最好的方式有:

MFA/2FA(Multi Factor Authentication) Wiki:https://en.wikipedia.org/wiki/Multi-factor_authentication

调用一下试试看:

One Time Password System:https://tools.ietf.org/html/rfc2289

本文版权归作者和博客园共有,欢迎转载,但未经作者同意不需要 保留此段声明,且在文章页面明显位置给出原文连接,后来 保留追究法律责任的权利。

HOTP(HMAC-Based One Time Password) Wiki:https://en.wikipedia.org/wiki/HMAC-based_One-time_Password_Algorithm

那些场景的流程一般都有在用户提供了账号+密码的基础上,让用户再提供有有三个 一次性的验证码来提供一层额外的安全防护。通常情况下,你什儿 验证码是有有三个 6-8位的数字,必须使用一次后来 仅在很短的时间内可用(比如5分钟以内)。

在信息安全领域,一般把Cryptography称为密码,而把Password称为口令。日常用户的认知中,以及当我门 开发人员沟通过程中,绝大多数被称作密码的东西觉得都有Password(口令),而都有真正意义上的密码。本文保持你什儿 语义,采用密码来代指Password,而当密码和口令同時 经常经常出现时,用英文表示以示区分。

TOTP(Time-Based One Time Password)Wiki:https://en.wikipedia.org/wiki/Time-based_One-time_Password_Algorithm

HOTP(HMAC-Based One Time Password)RFC:https://tools.ietf.org/html/rfc4226

2SV vs 2FA (1):https://security.stackexchange.com/questions/41939/two-step-vs-two-factor-authentication-is-there-a-difference

其中key是HOTP算法不需要 的有有三个 密钥(不可泄露);counter是每次生成HOTP的事先使用的计数器,使用一次就更换有有三个 。后来 就还不需要 用来生成OTP了,第一此截取了6位,第二此截取了8位。