傻大方


首页 > 人文 >

authenticator|手机没网了,却还能支付,这是什么原理?( 三 )



按关键词阅读:


original_secret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsecret=BASE32_DECODE(TO_UPPERCASE(REMOVE_SPACES(original_secret)))
「这个密钥客户端与服务端将会同时保存一份 , 两端将会同样的算法计算 , 以此用来比较动态码的正确性 。 」
我们以客户端为例 , 生成一个动态码 , 首先我们需要经过一个签名函数 , 这里 **Google Authenticator **采用的 「HMAC-SHA1」 , 这是一种基于哈希的消息验证码 , 可以用比较安全的单向哈希函数(如 SHA1)来产生签名 。
签名函数伪码如下:
hmac=SHA1(secret+SHA1(secret+input))
上面函数中的 , input 使用当前时间整除 30 的值 。
input=CURRENT_UNIX_TIME()/30
这里时间就充当一个动态变参 , 这样可以源源不断产生动态码 。
「另外这里整除 30 , 是为了赋予验证码一个 30 秒的有效期 。 」
这样对于用户输入来讲 , 可以有充足时间准备输入这个动态码 , 另外一点客户端与服务端可能存在时间偏差 , 30 秒的间隔可以很大概率的屏蔽这种差异 。
画外音:这个有效时间其实很考量 , 如果比较长 , 安全性就差 。
如果比较短 , 用户体验就很差 , 不容易输入准备 。
经过 「HMAC-SHA1」 签名函数以后 , 我们得到一个长度为 40 的字符串 , 我们还需要将其转化为 6 位数字 , 方便用户输入 。
处理的伪码如下:
four_bytes=hmac[LAST_BYTE(hmac):LAST_BYTE(hmac)+4]large_integer=INT(four_bytes)small_integer=large_integer%1,000,000
完整的算法伪码如下:
original_secret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsecret=BASE32_DECODE(TO_UPPERCASE(REMOVE_SPACES(original_secret)))input=CURRENT_UNIX_TIME()/30hmac=SHA1(secret+SHA1(secret+input))four_bytes=hmac[LAST_BYTE(hmac):LAST_BYTE(hmac)+4]large_integer=INT(four_bytes)small_integer=large_integer%1,000,000
当客户端将动态码上传给服务端 , 服务端查询数据库获取到用户对应的密钥 , 然后使用同样的算法进行处理生成一个动态码 , 最后比较客户端上传动态码与服务端生成是否一致 。
2. 付款码离线方案
上面我们了解了动态口令的实现方案 , 付款码生成原理其实也大致如此 。
不过付款码离线方案采用动态密钥的方式(全局唯一) , 定时请求服务端更换密钥 , 以此保证更高的安全性 。
另外在一次性动态口令方案 , 需要双方基于同样的秘钥 , 所以服务端需要明确知道这「背后正确用户」 。 以上面的登录场景为例 , 登录过程输入用户名,服务端就可以根据这个在数据库中查询相应的密钥 。
但是在付款码的支付场景中 , 支付过程仅仅传递一个付款码 , 就可以向相应的用户扣款 。 不用想 , 这个付款码这串数字一定包含相应的用户信息 。
所以付款码的相应的算法相比动态码会更加复杂 , 这样才可以有效保证安全性 。
看到这里 , 不知道你们是否急切想了解这套算法那?
这种算法岂能是我们能掌握的?
支付宝核心算法咱不知道 , 但是我们可以从其他人公开设计方案了解一个皮毛 。
这里小黑哥给你一个知乎网友@反方向的钟 回答的离线二维码实现方式 , 给你 look look:
authenticator|手机没网了,却还能支付,这是什么原理?
本文图片

来自:https://www.zhihu.com/question/49811134/answer/135886638
3. 付款码离线码的劣势
最后我们来看下付款码离线方案的劣势:
第一 , 算法调整不灵活 , 如果相关算法较大的调整 , 可能需要升级客户端,并且这个期间服务端还需要兼容新老算法产生的付款码 。
第二 , 安全性问题 , 正常的情况相关密钥无法被普通用户获取 , 但是架不住有有心之人 。 他们可能通过获取手机用户 Root 权限或者越狱手机 , 利用恶意程序获取密钥 , 然后随意生成付款码 。


稿源:(人人都是产品经理)

【】网址:http://www.shadafang.com/c/hn0912921H42020.html

标题:authenticator|手机没网了,却还能支付,这是什么原理?( 三 )


上一篇:美团|美团王兴:创业的“天时”永远都有

下一篇:space x|马斯克:2024年送人上火星 2050年建城


人文

怪我碍你|十月再见,十一月你好,释然过往,砥砺向前

阅读(12)

逝去的时光中,总有一些东西会在心中成为永恒,那么,就铭记那些美好吧,心中有阳光,充满正能量,微笑着面对生活;也会有些事情成为遗憾,有些心愿没能实现,但也不要气馁,更不要抱怨,笑看过往,努力过好当下和明天,不胡思乱想,不执着于过去。愿所有的真...

人文

格萨尔|《藏地奇兵》石渠开机 穿越藏地最后秘境热血探险

阅读(15)

由沃星影业、拉近影业、拉近沃星影业出品,成都影视硅谷集团、青岛东望影业联合出品的电影《藏地奇兵》于10月12日在四川石渠正式开机。该片由著名演员秦岚担任出品人兼艺术总监,张楚晗担任总制片人,张著麟、李希杰、温子迅执导,魏千翔、屈菁菁、邢瀚卿、吴...

人文

凤眼看房长沙|长三角多市出台调控政策 房企拿地热情不减

阅读(17)

回望过去一段时间,不仅是宁波,整个长三角已是房企必争之地。今年融资环境稍有宽松后,大小房企集体携金杀往长三角,土拍市场屡现高溢价,即便多地出手调控,仍有地王出现。楼市也在市场情绪助推下迅速反弹。“近年来三四线城市房产饱和、风险积聚,标杆企业...

人文

年薪制| 年薪制要来了吗?事业单位职工收入或将有大变化!

阅读(22)

近日,人社部组织实施人才服务专项行动,推进高校、科研院所薪酬制度改革。落实高层次人才工资分配激励政策,鼓励事业单位对高层次人才实行年薪制、协议工资制、项目工资等灵活多样的分配形式。鼓励事业单位对高层次人才实行年薪制、协议工资制、项目工资等灵...

人文

时尚探究社成都街拍:图集分享

阅读(43)

这个夏天阴阳色也太好看了吧~又个性,又显白的发色,就算搭配学院风也一点都不突兀。一看就是经常健身的小姐姐,这个身材曲线真的羡慕了~不要太美~...

人文

Tina|卫衣 + 半裙,照着穿好看爆了 !

阅读(21)

卫衣+半裙的搭配,属实是显胖王者,它要是称第二,那也是太谦虚了。当你挑选的裙子也很宽松时,穿上它就是灾难本身,转过身去看背后,Tina都想落泪,这五五分的身材是真实存在的吗?明明是同款卫衣,却比旁边穿裤子的look,腿长短了好多!不过小可爱们不用害...

人文

社会【观点】医改进程迟缓的原因及破解之策

阅读(20)

1供给侧改革进展迟缓大年夜实际来看,医疗供给侧改革在社会办医、医务人员自由执业、公立病院去行政化三个方面并没有太多本质性的进展,这也是我国医改未能有大年夜冲破的重要原因。1.1社会办医成长迟缓成长社会办医,不仅是实际须要,也是一种策略。在公立病...

人文

#quot#六旬男子足底黑痣会长大 检查发现是恶性肿瘤

阅读(10)

本年60 岁的陈师长教师比来有些忧?。本来,三年前他的左脚底足跟邻近长了一颗黄豆大年夜小、凸起的黑" 痣"。一年前开端,这颗" 痣" 有逐渐长大年夜之势,伴有些许压痛,于是陈师长教师按期到家邻近的修脚店把这颗" 痣" 磨平,...

人文

午间时刻《欢喜猎人》要播了吗?包贝尔贾玲再次合作,携手《欢喜密探》原班人马回归

阅读(35)

网剧《欢乐密探》就是一部不错的喜剧作品,而《欢乐猎人》是《欢乐密探》原班人马打造的第二部影视作品,所以有很多人都等着可以早点看到这部剧,然则在《欢乐猎人》拍了两年今后,一向没有播出,大年夜家也都等得异常焦急。不过,有传言说《欢乐猎人》这部电...