身份认证概念原型发布,目前的反馈和我的思考

上文 讨论了基于任意加密货币的用户身份认证设计思路,目前我已经弄出了一个概念原型, 部署在 heroku 上,有Steem账号或者比特股账号的可以去尝试下。代码是开源的,有兴趣的读者可以查看 multi-currency-loginWifSign 。 我在各个渠道发布了这一消息,已经收到一些朋友们的关注和反馈,本文做个总结并继续讨论身份验证这个话题。感谢 abit(@steem), Alex(@yoyow)以及Patrick(@qtum)给我提供的非常有价值的反馈,感谢所有支持我这个想法的朋友!

反馈1: 在第二步签名的时候,用户不相信即将去往的 签名的网页 ,在这个上面填写私钥或者密码,万一被恶意拿走怎么办?

我的思考,这当然是一个最大的问题,同时也蕴藏着很大的机会。从技术角度说,我目前能提供的信任是:

  • 代码是 开源 的,用户可以自己部署一个类似的网页

我不能提供的信任是:

  • 开源的代码并没有经过严肃的安全审计,也许存在恶意代码或者漏洞
  • 即使提供了严肃的安全审计,也没法保证部署在githubpages上的网页是安全可靠的。

另外还有非技术层面的信任问题,本文不讨论。

反馈2: 这个方法不能有效的避免中间人攻击问题。

我的思考,不妨假设用户Alice访问一个论坛采用了现在这个原型的认证方法,中间人攻击分为如下两个方面:

客户身份冒用, 即有一个Bob夹在Alice和论坛服务器中间,当Alice的身份认证通过后,冒用Alice的身份。我认为这是最重要的安全隐患,也是一个可以考虑的技术改进之处。从网络层次上来说,我这个身份认证系统处于 应用层面,而成熟的https(SSL)处于传输层,SSL技术本身是可以解决中间人攻击的。但是,大多数用户使用的https(SSL)是用来防止服务器身份冒用的,只有部署了客户端证书的https才能避免客户端身份冒用,如果这个方法 能够与https客户端证书相结合,下沉到传输层,那么能够有效的解决中间人攻击问题,也更有意义;但是如果不能做到这一点,应用层的身份认证仍然有其自身的价值。

服务器身份冒用,即有一个Bob夹在Alice和论坛服务器中间,对Alice冒充服务器。这个问题也分为传输层和应用层,传输层https已经解决了这个问题(除了CA本身是一个问题)。应用层的话可以用类似的方法来验证服务器, 上文 已经描述过,只不过目前的原型里没有,我倾向于认为这个功能不重要。

总之,中间人攻击问题重要,但我认为,解决这个问题犹如锦上添花,不是雪中送炭。

反馈3:易用性问题。可以弄浏览器插件啥的。

我的思考,完全同意。易用性是普通用户愿不愿意去使用这个方法的关键,也是论坛愿不愿意部署这种方法的关键。这个问题和第1个信任问题在一起,构成了我这个思路能否继续顺利实施的关键。我基于现有的技术,对这两个问题有了一个 新的思考:开发独立的,经过安全审计的第三方授权应用(类似目前概念原型中的WifSign)。这个应用完成如下功能:

  • 内部加密存储各种私钥。
  • 用户通过好记的名字管理这些私钥。
  • 响应用户的签名请求,对挑战数据进行签名并返回签名结果。流程类似OAuth,但没有第三方服务器。

因为这个经过安全审计的第三方授权应用只有一份,并且运行在用户自己的计算机上,因此一旦做出来并且成功推广,可以让不止一个网站或者论坛使用,具有以下价值:

  • 用户避免到处注册;
  • 用户无需借助大公司的平台(QQ、微信、微博、Google、Facebook)来认证自己;
  • 最大程度避免私钥泄露。

好,本文到此结束。谢谢看到这里的朋友,如果你有任何意见和建议,欢迎留言。如果无法留言,欢迎发邮件给我。当然,欢迎转发本文链接!

原文链接:https://blog.xiaofuxing.name/2017/04/26/login_with_any_cryptocurrency_prototype_released.html