# Web3Auth & UniPass

By [Yooma](https://paragraph.com/@yooma) · 2023-02-13

---

目前加密货币钱包（例如 MetaMask）的密钥管理标准是通过种子短语完成的。创建账户后，用户需要备份其助记词（12/24个单词），这是保护用户资产的重要步骤。尽管这看起来很简单，但对于 Web2 的新用户来说，仍需要付出一些学习和时间成本，这可能是他们使用 Web3 的一个障碍。然而，无助记词钱包可以帮助 Web2 用户无缝切换到 Web3，这意味着他们可以使用类似于电子邮件的 Web2 登录方式来登录到 Web3。

对于 MetaMask、Imtoken 等（EOA）钱包来说，确实存在一些繁琐的流程。例如，用户需要学习如何安全地保存助记词、如何将账户导入到新设备等。然而，可以使用托管服务来代替这些流程，从而使用户更轻松地接入 Web3。

* * *

下文涉及到的名词：

*   DKIM（DomainKeys Identified Mail）
    
*   Threshold Signature Scheme（TSS)
    
*   Multi-Party Computation（MPC）
    
*   Shamir's secret sharing (SSS）（Shamir 秘密共享)
    
*   Threshold Signature Scheme（TSS）
    

Web3Auth（用于 Web3 wallets和应用程序的可插入身份验证基础架构）
------------------------------------------

使用Web3Auth 可以让用户通过 Google、Twitter、GitHub 等在各种应用中进行注册登录。用户也可以通过发送电子邮件的方式，进行无密码设置的注册。

Web3Auth使用SSS，通过将**密钥**（这个**密钥**不是特定于任何一个账户地址的私钥。Web3Auth使用这个**密钥**来生成和管理不同的账户。下同）分成几个部分(share threshold)（下文中shareA/B/C），登录时需要ABC中的两个share，这样即使服务方保存了其中一个Share也无权访问账户，进一步降低中心化的风险以及当用户丢失其中一个share可以通过另外两个重构密钥，增加了安全性。

**实现原理：**

![](https://storage.googleapis.com/papyrus_images/a336c2e20bbf64a56c78d47f6b8ed1728a1900b9b7e2ecb48dc43f7b69f5ab36.png)

用户第一次使用他们的社交账户（Gmail/Twitter）登录时，会为用户生成三个Shares：ShareA、ShareB 和 ShareC，然后分开存储

1.  **ShareA 存储在用户的设备上**：实现是特定于设备和系统的。例如，在移动设备上，共享可以存储在通过生物识别技术保护的设备存储中。
    
2.  **ShareB 由节点运营商的登录服务管理**：该共享在节点网络中进一步拆分，并通过传统的身份验证流程检索。
    
3.  **ShareC 是一个恢复共享**：由用户保留的额外共享，可能保留在单独的设备上，下载或基于具有足够熵的用户输入（例如密码、安全问题、硬件设备等）
    

**在丢失device/share的情况下，由于share threshold中内置了冗余**，用户可以重构他们的密钥(用户需要证明拥有至少 3 (2/3) 个中的 2 个shares，才能重构密钥)。用户也可以在此基础上增加密钥的share。

在易用性方面，无论是否第一次登录或是更换设备登录都是非常方便，直接使用社交或邮箱登录即可。

不过账户地址的安全性比较低，用户在集成了Web3Auth的应用上登录后，前端可以账户地址的私钥，有了私钥就可以对该账户地址进行任何操作（例如转账、交易等）。

**此外，值得注意的是，Web3Auth 并不是钱包，它只是用于身份验证的基础架构。**

* * *

UniPass（分布式被动托管智能合约钱包）
----------------------

UniPass 也是一个建立在 MPC 密钥管理之上的智能合约钱包，使用守护邮件 （gardian email）的域名密钥（DKIM）来验证重置请求，而不是使用社交密钥，相比于传统的中心化钱包，UniPass具有更高的安全性和私密性。

DKIM 的身份验证可以通过发送电子邮件简单地完成，整个流程不涉及任何需要授权用户请求的服务器，从而有效地消除了中心化风险。

DKIM： 是一种用于确保电子邮件完整性和可靠性的电子邮件身份验证方法。它通过对发件人在发送邮件时对消息内容进行签名，并在接收邮件时验证签名以确定消息内容是否被改变或者篡改。这使得接收者可以验证邮件的真实来源和内容的完整性。DKIM 通过把发送者的签名附加到消息的头部，并通过一种公钥加密技术在接收邮件时验证签名。

UniPass 之所以被称为“被动托管”，是因为它并不需要用户将私钥交给任何第三方服务进行存储，而是通过智能合约实现一种安全的自我管理方式。这种方式下，用户的私钥是保存在区块链上的，由用户自己掌控，不会被第三方访问或篡改。

**使用邮箱协议用到的密码学与链上智能合约交互。**

账户智能合约部署流程：创建账户-→账户发生交易-→部署账户智能合约。 UniPass钱包的账户智能合约需要先部署才能使用，因此需要一定的费用支持，这与MetaMask(EOA)钱包不同。（如果账户没有足够的余额来支付智能合约部署所需的 gas 费用，则账户智能合约将无法部署。因此，如果一个账户在收到转账之前没有足够的 ETH 来支付智能合约部署的 gas 费用，那么它将无法部署智能合约并处理转账。在这种情况下，转账交易将会失败，转账的资金将会返还到发送者的账户中。）

兼容ERC-4337协议 （让应用帮助用户支付创建账户的 gas 费，也可以帮助用户代付交易手续费。甚至使用任意的 ERC20 代币支付交易手续费。）

![](https://storage.googleapis.com/papyrus_images/f4509d2d3f4a5fc0fa45bf8ab2e530a159dd0296f671a4d89ffa2c32733493cf.png)

其他智能合约钱包解决方案往往还需要依赖外部( EOA) 钱包做私钥管理。UniPass Wallet 通过多方安全计算（MPC）的签名技术（TSS)，避免了依赖于外部 EOA 钱包的安全性和可用性，同时也实现业务流程中私钥全程可用不可见的高安全性。

如果用户要更换设备需要邮件OTP+密码，不像Web3Auth直接使用社交账号登录即可。UniPass具有高可用性，即使他们官方停止服务，用户也是可以访问他们的钱包。

---

*Originally published on [Yooma](https://paragraph.com/@yooma/web3auth-unipass)*
