医疗反腐,风向带偏了

回顾柴静的经历,跟丁仲礼的对话,以及她最新的纪录片和各界反响!

“史上最严反腐”背后, 中国医界究竟病在何处?|文化纵横

丑闻接二连三,湘雅医院到底隐藏了多少黑幕?

7月经济数据全面恶化,发出了新一轮经济下跌的危险信号

生成图片,分享到微信朋友圈

自由微信安卓APP发布,立即下载! | 提交文章网址
查看原文

Web3 身份需要提供什么样的服务和能力?

字节元 CKB 2023-05-04

The following article is from 不确定思维 Author 侠客张

第一次玩 StepN 时,用户需要使用邮箱账号注册。完成注册后,需要导入/新建一个加密钱包,如果导入原有助记词(使用过有资产的钱包),会很担心助记词触网的安全问题。


如果新建一个钱包,也有同样的热钱包备份不当的安全担忧。这是加密老用户的担忧,而对于一个 Web3 新人,什么是助记词,如何安全保管助记词,都是非常陌生且没有概念的,非常容易导致资产丢失。


使用 Mirror 发布文章时,要链接钱包进行签名认证,它提供了一个比较友好的“remember me”功能,在一次签名后,可以在一段时间内(大概一周)不需再次签名,一定程度上方便了用户,但对于月更的我来说,每次都需要链接硬件钱包去签名,实在觉得繁琐,仅仅发布一个文章而已。


更极端的例子,是目前的一些社交类 Web3 应用,当需要关注人、发表评论等操作时,都需要验证签名,为了方便大多人会专门搞一个热钱包(有安全意识的)。


但有些应用,由于涉及历史行为的标注以及空投等诱惑,迫不得已还是要用老地址去做验签,这种地址往往有很多资产在里面,如果签名不注意,就容易导致授权过大,进而导致一些不必要的资产损失。


如果有大额资产参与DeFi,常常会使用多签、硬件钱包等相对安全的基础设施。这些地址也可能会被用来交易NFT,而NFT交易很多时候需要签名授权。目前的应用签名信息不够直观,用户大多不太理解具体签名的内容,这很容易导致签名授权过大从而被黑。


这几个典型的场景,总结起来就是目前 Web3 身份验证存在的不易用、不便捷和不安全等问题。


这些问题出现的本质原因,大多是因为身份和账号没有被清晰界定,大部分情况下钱包即被认为是账号,又被认为是用户的身份。


而去中心化非托管钱包的发展,实际远远无法适配当前的 Web3 发展速度。当 DeFi 出现时,我们采用这种模式还感觉不到太多问题。而当越来越多非金融类去中心化应用出现时,这种认证方式就会凸显诸多问题。



Web2 都有哪些常用的认证场景


早期我们使用网页类 Web2 应用时,大多采用账号+密码的认证方式访问。为了方便很多网站设置的都是相同的密码(这很不安全)。


随着移动应用的普及,慢慢我们习惯了手机号+验证码的认证方式。即便是网页端,也慢慢地支持了这种验证方式。


而为了更方便,我们的很多应用都使用了基于微信/手机号一键验证等验证模式,密码几乎不再被使用。


随着生物识别技术的发展,现在很多设备也都在采用刷脸、验证指纹等认证方式,验证码也在不断地被更新替代。


Web2 的身份验证正在往安全便捷的无密码认证方向发展。


无密码认证要比账号+密码的方式安全很多,由于账号+密码的方式存在弱口令问题和大量的被泄露数据,黑客可以利用大数据+撞库等方式破解。


如果有好的安全习惯,目前的移动应用大多很难被盗。配合使用 1password 等应用(做到一应用一密码),对于需要设置密码的应用也相对比较安全。


再看金融类应用的认证发展,最早网银很不方便,要使用密码卡转账。后来发展为使用 usbkey 的验证模式。


对于个人用户,现在手机网银几乎与其他非金融应用是一样的体验,手机号+刷脸认证,刷脸/验证码转账等等,非常方便。


这也有一定安全隐患,如果手机被黑了,存在手机里银行账户被盗的风险。


对于企业用户,目前usbkey(数字证书)的验证方式依然延续。而像银行间通信,大多采用点对点加密的方式。


很多初次使用 Web3 应用的用户都会发出一个疑问,为啥这应用这么难用?最直观的就是大多是网页端访问,而且用户认证普遍不够友好。


难道 Web2 中已被广泛采用的友好且安全的验证方式不能应用在 web3 么?


这里我们就要说一下 Web3 与 Web2 最重要的一点不同,就是用户资产的自主可控(可拥有)。


Web2 中,数据和资产都在中心化平台端,实际用户很难拥有自主权。


而 Web3 中,去中心化的属性让用户从密码学角度拥有了自主权,your keys,your coins!


这也是为什么 Web3 应用的认证方式,是让用户自主签名的原因。因为这些信息只有用户自己拥有。



Web3 身份需要提供什么样的服务和能力


自行更改密钥


我们常用的 Web2 应用,每隔一段时间都可以重置密码以保证安全性,避免密码丢失导致的信息泄露。


如果发现账号被盗了,我们也可以及时修改密码,或者通过申诉等方式找回账号。


这种情况下,我们的账号仍然可以继续使用,跟我们账号关联的其他内容、数据和应用,都不需要重新授权或链接。


而对于去中心化钱包,一旦助记词/私钥丢失,这个钱包就没办法再使用了。因为只要有人知道这个助记词/私钥,就可以动里面的资产,就可以验证各类应用。


在 Web2 中,账号被盗一方面可以申诉找回,另一方面也很容易进行各类禁用操作,只要有足够证据,就可以对可能的风险进行中心化的处理。比如向不同平台申诉,添加黑名单等等操作。


而在 Web3 中,目前还没有一个能有效针对被盗账号的防范措施。一旦私钥丢了,这个账号就不再可用。但随着越来越多应用对身份行为的重视,我们很多的链上行为都与账号地址有关,一个用了很久的地址,或许就是一笔可观的财富。如果弃之不用,就非常的可惜。


是否有一种方式,能让我们像 Web2 更换密码一样,在不变更账号(公钥地址)的情况下,对 Web3 的钱包助记词/私钥进行自行更改呢?


多账号分离,身份聚合


目前在国内有很多面向个人用户的多账号分离/身份聚合的应用场景。


比如我们在使用共享单车时,有时会用支付宝扫码开锁,有时候会用微信扫码开锁,经常自己都没留意,但都能打的开锁。


各种共享商品,只要上面有个码,我们就会下意识的直接用微信/支付宝去扫,租充电宝、电车、雨伞等等。


这些应用使用起来非常方便,不需要我们注册任何账号,也不需要提供大量的个人信息,只需要进行一次授权即可。


在这些场景里,租借各种设备时,我们实际使用的还是这些应用本身的账号,而这个账号是通过身份授权产生的。


我们的大量身份信息和行为,都被聚合在一个叫“芝麻信用”/“微信支付分”的系统里,这个就是我们在互联网世界的聚合身份。


它是一套信用评价系统,拥有我们的各类身份数据和信用评级。不同应用通过与它的集成,可以申请一个授权,读取我们的身份,并创建临时的账号。


只要我们的信用能达到这些应用的设计要求,我们就可以平滑的使用。


对于企业级的应用,一个员工往往也会使用几十套各种不同系统,如果每个系统都有独立账号,记忆起来非常不方便。大多员工也都习惯用一样的密码,这样很不安全。


为了解决这一问题,有专门服务于企业级身份管理的解决方案 IAM。能提供一套便捷安全的单点登录和统一账号密码系统,既解决了安全问题,又让员工使用系统更加便捷。


像以上这样的使用体验,在 Web3 中也是被需要的。我们希望在玩游戏,体验社交应用,参与 DeFi 挖矿时,都有不同的账号,但他们都可以使用一套方便的方式进行统一的安全的管理。


既能做到资产在不同账号的隔离,也能做到身份在不同账号的互通。我们自己可以决定像外部展现何种身份,可以控制哪些身份是显性的,哪些是隐形的,以及他们之间的行为关系。


灵活的密钥管理


大部分的互联网用户都没有密码管理的安全意识,常常使用一套密码打遍天下。被用最多的安全保护措施就是不使用,比如不使用网银等等。


移动应用认证技术的发展演化,一方面是为了平台应用能有更大的网络效用,另一方面也切实的提升了用户使用的安全和便捷性。比如验证码+刷脸+风控等方式,让一般的密码泄露很难造成严重影响。


而 Web3 应用,将身份主权交还给了用户,每个人对如何管理密钥在知识和技能上有着非常大的差异。


即便是一些老韭菜,也经常范丢失私钥的错误,不小心被钓鱼或是由于电脑被黑导致热钱包被盗。


使用硬件钱包、冷钱包、多签钱包的门槛更高,一般对于没有技术背景的用户,很难真正掌握这些钱包的安全使用方法,一不小心有可能自己反而把密钥搞丢。


Web3 这种不友好也不是很安全的密钥管理方式,切实地阻碍了很多人参与 web3 应用。


在 Web2 中,我们可以通过 1password、google 密码管理等程序帮助管理密钥。但助记词和私钥的使用大多比较强调离线备份,或者存放在硬件钱包里,或者采用更加安全的多签等技术。这些对于专业用户来说还好,对于 Web3 用户来说就有一些难度了。


我们是否可以像 Web2 那样保管密钥?不需要抄写,不需要硬件。即安全,又可以快速的恢复?


对于不同的使用需求,可以有不同的密钥管理策略,大额资产可以使用专业级安全方案。社交应用就使用一些便捷的方法,这样的角色授权分离,也让我们在使用不同应用时不至于过多的担心安全和隐私问题。



让 Web3 认证拥有和 Web2 一样的体验


前面提到的很多问题,以及相对应的解决方案,我们目前看有一些 Web3 项目已经在试图解决。


如果想让 Web3 的使用体验与 Web2 类似,个人认为需要合约钱包的大范围应用,这会实现目前很多不能实现的体验。比如恢复密钥、无费用交易、多账户风险隔离等等。


ERC 4337 以太坊账户抽象


ERC4337 是以太坊关于账户抽象的一个提案。它的提出主要目的是在不更改共识层协议的情况下,将用户账户升级为合约账户,这样做会带来非常多的好处。


目前,以太坊的账户类型分为外部账户(EOA)和合约账户。ERC4337 的账户抽象方案,提出将两种账户类型减少为一种,即只保留合约账户。


ERC4337 实现的账户抽象方案,可以为用户带来以下体验提升:


  • 支持社交恢复:这个方案支持用户为钱包账户设置多个守护者,可以在丢失密钥的情况下帮助恢复钱包密钥。守护者可以是用户拥有的其他安全钱包、家人或朋友,甚至是第三方机构。


    这个功能可以让用户的钱包账户更加安全,避免由于不理解助记词/私钥原理,或保管不善而导致的意外丢失。可以像 Web2 一样管理应用的账户,在发现不安全因素或丢失密钥时,对钱包账户的密钥进行找回和重置。


  • 支持代建账户/代付手续费:这一功能可以让应用帮助用户支付创建账户的 gas 费,也可以帮助用户代付交易手续费。甚至使用任意的 ERC20 代币支付交易手续费。简单说用户不需要自己入金就可以完整的体验 Web3 应用。

    这对普通用户来说非常有效,他们不需要支付创建账户的费用,甚至一些交易也不需要付费。这可以实现 0 门槛用户引流,并为用户建好安全的 Web3 钱包。对于游戏和社交类应用,尤其好用。


  • 支持账户升级:账户抽象的钱包是由智能合约控制,因此可对合约功能进行升级,可实现用户高度可自定义的能力,比如简化/个性化签名算法等。


对于 ERC4337 的实现,Vitalik 给出了一个路线图,其中包括:


短期:

  • 让 ERC-4337 投产,支持将 EOA 升级为智能合约账户
  • 支持 ERC4337 账户的易用的浏览器插件钱包
  • 实施对 Layer 2 友好的功能,短期在 Layer 2 中推广 ERC4337 应用

中期:
  • 实施 Verkle 树,降低 gas 成本
  • 添加可选的 EOA 到 ERC4337 的转换
  • 添加 crLIst 逻辑

长期:
  • 考虑强制实行 EOA 转换,和单一的 ERC4337 账户


Web3Auth


Web3Auth 提供了一种与 Web2 类似的社交认证方法,可以让 Web3 认证保持与 Web2 一致的使用体验。

Web3Auth 是一项 toB 的应用,需要应用程序自主集成和配置后,用户才能体验到相应的认证体验,包括:

  • 主流社交帐户登录和无密认证:用户可通过 Google、Twitter、GitHub 和其他 OAuth 提供商进行注册。用户还可以通过发送电子邮件的方式,进行无密码设置的注册流程。


  • 支持 Web3 钱包与密钥管理:可授权用户使用自主选择的钱包或密钥管理。比如用户可以使用他们现有的钱包登录或选择密钥管理(导入助记词),并将其直接连接到应用程序。

Web3Auth 可以为用户提供类似 Web2 的注册和认证体验,只需要通过第三方社交认证即可完成。

同时,Web3Auth 还支持非托管的公钥基础设施(SSS 2/3 Shamir's Secret Sharing),这种方式极大方便了不懂管理密钥的用户,同时做到既是非托管钱包(用户完全自主掌握资产),又无需用户自行保管密钥。

如果觉得这种非托管方式不够安全,用户也可选择采用自己常用的钱包进行链接登录,比如 ledger、phantom 等。浏览器插件钱包 keplr 就是用 Web3Auth 扩展,用户可自行体验。

UniPass 


UniPass 是多链统一加密身份应用,提供基于电子邮件的非托管社交恢复钱包解决方案。可以通过无密钥的方式控制用户的加密身份。还可以通过加密方式验证多链地址甚至社交帐户。

在前端功能上,UniPass 与 Web3Auth 类似,都有提供社交认证、社交恢复钱包等功能。相对已实现功能,UniPass 的 2022 年产品规划中提到的能力,与本文锁期望的去中心化身份演进有很多契合之处,其中包括:

  • Web3 身份聚合:基于密码学实现多链多账户的聚合。通过这种聚合方式,可以将用户在不同链上不同地址的行为聚合到一个身份 ID 中,实现信任的传递。简单说就是可以最大程度提升用户的链上行为评分。


  • Web2 身份验证:在智能合约中提供验证电子邮件地址、Twitter 账户、Discord 账户的能力,从而在 Web3 中原生提供 Web2 身份信息。

  • 单点登录与访问门户:通过使用 UniPass id,进行多应用的统一登录,并为用户提供统一的 Web3 门户导航。


注:本文在转载时有删减,原文请见《去中心化身份终局之战》。


   



END



Nervos 网址:https://www.nervos.org/ 

中文电报群:https://t.me/NervosNetworkcn

中文推特:https://twitter.com/CKBMeta 

中文Discord:https://discord.gg/f2qa52tJnz 

《Nervos 入门手册》:ckborg.bit.host

文章有问题?点此查看未经处理的缓存