我对PRESSone登录验证机制的理解

我们知道,在PRESSone的web端创建账号时,有2种方式由你选择:

1、默认在服务器上加密保存私钥,你仅需输入邮箱地址和密码即可创建账号

微信图片_20181028214544.png

2、你可以勾选自己保管你的keystore文件,则仅需输入密码即可创建账号

微信图片_20181028214604.png

从创建账号页面,我们获知2个关键信息:

  • 密码用于加密你的个人私钥
  • PRESSone无法提供密码找回功能,所以你务必需要牢记密码

那么,对区块链技术稍有些好奇心的人就会问:

  • 为什么PRESSone要把密码设定成不可找回、不可更改的?
  • 如何验证PRESSone服务器是否保管用户的密码?
  • PRESSone的登录验证是如何实现的?

我是这样理解的。下面开始分享我的推测。顺便说,这已经是第二个版本了,准确率在90%以上;前几天发布的第一个版本则疏漏较多。如果未来我需要更正本文信息,我会继续在自己的PRS主页上发布。欢迎订阅我。

用户在PRESSone网络创建账号的过程,就是采用密码学生成一对密钥的过程。这对密钥,一个是你的公钥,另外一个则是你的私钥。公钥可以公开,你可以把它理解成你家的门牌号地址,方便别人通过PRS网络给你“转账”或“访问”你的主页。私钥就像你家的钥匙,有了它连你家的保险箱都能随便开,所以务必要保管好,不可泄漏给他人;更需慎重的是,这把钥匙在区块链网络中是不可以重新拷贝一把的,被你弄丢就不可挽回。

哪里可以看到自己的公钥呢?

比如我的个人主页地址是:
https://press.one/main/p/ed73e900e209def08ff03a2e3fadbac99af087c0

由我签名发布的内容,验证签名信息时可以看到:

微信图片_20181017145109.png

上面有一个共同的字符串,即ed73e900e209def08ff03a2e3fadbac99af087c0体现的就是我(行动的女巨人这个账号)的公钥的一部分。虽然只是我公钥的一部分,但已经能唯一标识出我啦。

哪里可以看到自己的私钥呢?

你的私钥在创建账号时,通过你输入的密码加密后就成为keystore文件,这个keystore文件也只能通过你的密码来解密。每次登录验证就是通过你输入的密码来尝试解密keystore文件的过程,解密成功则登录验证通过,解密失败则无法通过登录验证。

基于此,我说明一下2种方式下的登录验证:

1、默认选择在服务器上加密保存私钥,你仅需输入邮箱地址和密码即可登录账号

用户每次登录输入邮箱地址和密码后,发生了什么呢?首先,根据邮箱地址向服务器获取并下载该邮箱地址对应的keystore文件到客户端,然后客户端根据你提供的密码来尝试解密该keystore文件,解密通过,则bingo你就能登入啦。

2、你选择自己保管keystore文件,则需要选择keystore文件上传并输入密码即可登录账号

用户每次登录,选择提交你的keystrore文件和密码后,客户端根据你的密码来尝试解密你的这份keystore文件,解密通过,则你就能登入。

你看,在上述两种方式中,登陆验证时在客户端本地就能验证身份的。完全不需要服务端来保管密码。

那么服务端会保管你的公钥吗?也不用。因为通过你的私钥,能够计算得出你的公钥。反之,通过公钥无法逆推算出你的私钥。所以,登录验证就是客户端的活儿,无需服务端保管你的密码,公钥或私钥之类的来比对。

在古典互联网中,所谓的登录验证是怎么回事呢?服务器会保存你的账号和密码,你在登录时输入账号和密码,由客户端提交给服务端,服务端比较一下对不对,然后告诉客户端。验证通过,就可以登入了。

我们所使用的99.9%以上的古典互联网服务,都是把密码保存在服务器的,而且在移动支付这么发达的年代,很多账号还存放着你重要的财富或者隐私呢!某些古典互联网的项目,由于工程师操作不慎,不小心把数据库账号和密码提交到github上,比如某酒店集团“脱裤”导致用户账号和密码和开放信息大面积泄露,就是该方案带来的风险。

那么,比较审慎的同学可能就要问了,既然PRESSone说自己没有保存用户的密码,我怎么相信它真的没有保存呢?

PRESSone的代码未来会开源,到时候懂代码的人自然可以去检查代码逻辑是怎么写的,那时候就可以验证。

如果你非要一个短期的验证,那么只能从情理上来理解。其一,既然你使用的99.9%以上的古典互联网服务,都保管了你的密码,你是否应该把你的担心面放大到自己所用的所有这些服务呢?其二,采用区块链技术的解决方案,无论是功能实现还是用户体验,在当前阶段都不如古典互联网那么简便,PRESSone为什么要选择真正的区块链技术的解决方案呢?密码不被存储,把密钥的管理权限交给用户自己,没有任何中心化的数据库或人物来染指你的财产安全。

让用户自行保管密码以此来保证密钥只有你一人可知,确实牺牲了“修改密码、找回密码”的可能性。而自从web端发布以来,社区用户已反馈多例未能妥善保管密码带来的问题。在安全和便捷这个天平上,我们总归是要做出一些选择或者权衡。

熟悉mixin的人可能就要问了,为什么PRESSone不考虑一下MIXIN那种手机号+验证码的方式登入呢?那种方式是非常便捷的,安全性如何呢?

真是个好问题啊。我们下回就一起来探讨下吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值