- 2022-12-29
- 阅读()
- 来源:互联数据
互联网诞生之初,web服务器基本上就是文档的浏览而已。既然是浏览,作为服务器,不需要记录用户在某一段时间里都浏览了什么文档,每次请求都是一个新的http协议,就是请求加响应。早期我们使用网页类 Web2 应用时,大多采用账号 + 密码的认证方式访问。
一、Web系统身份认证的特点
1、Http Basic Auth:一种最古老的安全认证方式,这种方式就是简单的访问API的时候,带上访问的username和password,由于信息会暴露出去,所以现在也越来越少用了,现在都用更加安全保密的认证方式,可能某些老的平台还在用。
如弹出一个框,让你填写用户名密码。这就是Tomcat自带的HTTPBasic认证。
这就是你访问应用的凭据了,那段xxxXXX字符串是我写的表示这是一段密文,这是一段什么密文呢,就是讲用户名和密码进行一个Base64加密后得到的密文。所以你现在是不是也有同感了---这tm也太容易盗取了,所以现在新的应用几乎不怎么用这种方式了,虽然简单,但是安全级别太低了。
2、OAuth2:它是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密资源,而无需将用户名和密码提供给第三方。比如我们熟知的通过qq/微信/微博等登录第三方平台。OAuth 1.0版本发布后有许多安全漏洞,所以在OAuth2.0里面完全废止了OAuth1.0,它关注客户端开发者的简易性,要么通过组织在资源拥有者和HTTP服务商之间的被批准的交互动作代表用户,要么允许第三方应用代表用户获得访问的权限。
为了方便很多网站设置的都是相同的密码(这很不安全)。即便是网页端,也慢慢的支持了这种验证方式。而为了更方便,我们的很多应用都使用了基于微信 / 手机号一键验证等验证模式,密码几乎不再被使用。随着生物识别技术的发展,现在很多设备也都在采用刷脸、验证指纹等认证方式,验证码也在不断的被更新替代。
Web系统服务器测试:http://www.hkt4.com/cloud/hk.html
二、Web2系统身份认证的特点
Web2 的身份验证正在往安全便捷的无密码认证方向发展。
无密码认证要比账号 + 密码的方式安全很多,由于账号 + 密码的方式存在弱口令问题和大量的被泄露数据,黑客可以利用大数据 + 撞库等方式破解。如果有好的安全习惯,目前的移动应用大多很难被盗。配合使用 1password 等应用(做到一应用一密码),对于需要设置密码的应用也相对比较安全。
再看金融类应用的认证发展,最早网银很不方便,要使用密码卡转账。后来发展为使用 usbkey 的验证模式。对于个人用户,现在手机网银几乎与其他非金融应用是一样的体验,手机号 + 刷脸认证,刷脸 / 验证码转账等等,非常方便。这也有一定安全隐患,如果手机被黑了,存在手机里银行账户被盗的风险。
对于企业用户,目前 usbkey(数字证书)的验证方式依然延续。而像银行间通信,大多采用点对点加密的方式。Web2 中,数据和资产都在中心化平台端,实际用户很难拥有自主权。
很多初次使用 Web3 应用的用户都会发出一个疑问,为啥这应用这么难用?最直观的就是大多是网页端访问,而且用户认证普遍不够友好。 Web3 中,去中心化的属性让用户从密码学角度拥有了自主权,your keys,your coins!这也是为什么 Web3 应用的认证方式,是让用户自主签名的原因。因为这些信息只有用户自己拥有。
三、Web3系统身份认证的特点
1、自行更改密钥:我们常用的 Web2 应用,每隔一段时间都可以重置密码以保证安全性,避免密码丢失导致的信息泄露。
如果发现账号被盗了,我们也可以及时修改密码,或者通过申诉等方式找回账号。这种情况下,我们的账号仍然可以继续使用,跟我们账号关联的其他内容、数据和应用,都不需要重新授权或链接。
而对于去中心化钱包,一旦助记词 / 私钥丢失,这个钱包就没办法再使用了。因为只要有人知道这个助记词 / 私钥,就可以动里面的资产,就可以验证各类应用。
在 Web2 中,账号被盗一方面可以申诉找回,另一方面也很容易进行各类禁用操作,只要有足够证据,就可以对可能的风险进行中心化的处理。比如向不同平台申诉,添加黑名单等等操作。
而在 Web3 中,目前还没有一个能有效针对被盗账号的防范措施。一旦私钥丢了,这个账号就不再可用。但随着越来越多应用对身份行为的重视,我们很多的链上行为都与账号地址有关,一个用了很久的地址,或许就是一笔可观的财富。如果弃之不用,就非常的可惜。
是否有一种方式,能让我们像 Web2 更换密码一样,在不变更账号(公钥地址)的情况下,对 Web3 的钱包助记词 / 私钥进行自行更改呢?
2、多账号分离,身份聚合:目前在国内有很多面向个人用户的多账号分离 / 身份聚合的应用场景。
比如我们在使用共享单车时,有时会用支付宝扫码开锁,有时候会用微信扫码开锁,经常自己都没留意,但都能打的开锁。各种共享商品,只要上面有个码,我们就会下意识的直接用微信 / 支付宝去扫,租充电宝、电车、雨伞等等。
这些应用使用起来非常方便,不需要我们注册任何账号,也不需要提供大量的个人信息,只需要进行一次授权即可。
在这些场景里,租借各种设备时,我们实际使用的还是这些应用本身的账号,而这个账号是通过身份授权产生的。
我们的大量身份信息和行为,都被聚合在一个叫「芝麻信用」/「微信支付分」的系统里,这个就是我们在互联网世界的聚合身份。它是一套信用评价系统,拥有我们的各类身份数据和信用评级。不同应用通过与它的集成,可以申请一个授权,读取我们的身份,并创建临时的账号。
只要我们的信用能达到这些应用的设计要求,我们就可以平滑的使用。
对于企业级的应用,一个员工往往也会使用几十套各种不同系统,如果每个系统都有独立账号,记忆起来非常不方便。大多员工也都习惯用一样的密码,这样很不安全。
为了解决这一问题,有专门服务于企业级身份管理的解决方案 IAM。能提供一套便捷安全的单点登录和统一账号密码系统,既解决了安全问题,又让员工使用系统更加便捷。
像以上这样的使用体验,在 Web3 中也是被需要的。我们希望在玩游戏,体验社交应用,参与 DeFi 挖矿时,都有不同的账号,但他们都可以使用一套方便的方式进行统一的安全的管理。
既能做到资产在不同账号的隔离,也能做到身份在不同账号的互通。我们自己可以决定像外部展现何种身份,可以控制哪些身份是显性的,哪些是隐形的,以及他们之间的行为关系。
3、灵活的密钥管理
大部分的互联网用户都没有密码管理的安全意识,常常使用一套密码打遍天下。被用最多的安全保护措施就是不使用,比如不使用网银等等。
移动应用认证技术的发展演化,一方面是为了平台应用能有更大的网络效用,另一方面也切实的提升了用户使用的安全和便捷性。比如验证码 + 刷脸 + 风控等方式,让一般的密码泄露很难造成严重影响。
而 Web3 应用,将身份主权交还给了用户,每个人对如何管理密钥在知识和技能上有着非常大的差异。即便是一些老韭菜,也经常范丢失私钥的错误,不小心被钓鱼或是由于电脑被黑导致热钱包被盗。
使用硬件钱包、冷钱包、多签钱包的门槛更高,一般对于没有技术背景的用户,很难真正掌握这些钱包的安全使用方法,一不小心有可能自己反而把密钥搞丢。
Web3 这种不友好也不是很安全的密钥管理方式,切实的阻碍了很多人参与 Web3 应用。在 Web2 中,我们可以通过 password、google 密码管理等程序帮助管理密钥。但助记词和私钥的使用大多比较强调离线备份,或者存放在硬件钱包里,或者采用更加安全的多签等技术。这些对于专业用户来说还好,对于 Web3 用户来说就有一些难度了。
我们是否可以像 Web2 那样保管密钥?不需要抄写,不需要硬件。即安全,又可以快速地恢复?
对于不同的使用需求,可以有不同的密钥管理策略,大额资产可以使用专业级安全方案。社交应用就使用一些便捷的方法,这样的角色授权分离,也让我们在使用不同应用时不至于过多的担心安全和隐私问题。
四、Web系统身份认证去中心化身份的三个层次
在 Web3 里,钱包、账户、身份的概念有些模糊,没有清晰区分,往往钱包就是账户,账户被当做身份。
实际身份是一个集合,而账户是我们使用应用的具象载体,是身份的外延。而加密钱包是我们账户的一种载体和验证方法。
去中心化身份可以被分为三个层次,分别是:外显身份、代理身份和主权身份。