blockchain-council(CBSP)-5.隐私和区块链的双重身份验证
一、什么是2FA
理解双因素身份验证 (Two-Factor Authentication, 2FA)
- 双因素身份验证 (Two-Factor Authentication, 2FA) 是一种通过结合两种不同因素来验证用户声明身份的方法。
- 这些因素可以包括用户知道的东西、用户拥有的东西或用户本身。换句话说,双因素身份验证是多因素身份验证的一种形式。
双因素身份验证 (2FA) 的组成部分
用户需要输入他们知道的信息,即用户名和密码。例如,John_Doe输入他的用户名和密码进行登录。
接下来,我们转到用户拥有的东西,比如他们的手机。用户会收到一条来自设备(如John的笔记本电脑)的待处理认证请求,他们需要在手机上选择批准或拒绝。
最后,是用户的生物特征验证,比如指纹。用户需要通过指纹识别来验证请求。通过这三个步骤,我们可以有效地提高系统的安全性。
双因素身份验证 (2FA) 的重要性
- 双因素身份验证的目标是为系统添加另一层保护,以便未经授权的用户更难以登录和使用它。即使黑客获得了您的密码,他们仍然无法侵入系统,因为他们需要第二个身份验证因素,而这是极不可能的。
- 这使得 2FA 成为保护用户帐户、数据和系统的一种非常有效的方法。
双因素身份验证 (2FA) 的实际应用
网上银行 (Online Banking)
- 许多网上银行系统都采用 2FA。当您输入用户名和密码(您知道的东西)时,银行可能会向您的手机发送一条包含一次性密码 (OTP) 的短信(您拥有的东西)。只有输入该密码,您才能访问您的帐户。
电子邮件服务(如 Gmail)(Email Services like Gmail)
- Gmail 提供 2FA,您首先输入密码(您知道的东西)。之后,谷歌会向您的手机发送一个唯一的代码(您拥有的东西)。您必须在 Gmail 网站上输入此代码才能获得访问权限。
社交媒体 (Social Media)
- 登录时,您必须提供密码(您知道的东西),然后系统会提示您输入发送到您注册的移动设备或电子邮件的唯一代码(您拥有的东西)。
生物识别 (Biometrics)
- 首先,您可能需要输入密码或 PIN(您知道的东西)。然后,您可以使用指纹扫描仪或面部识别(您本身)来解锁设备。
将区块链与双因素身份验证 (2FA) 集成
区块链可以与双因素身份验证集成,以提供更安全和去中心化的身份验证形式。我们称之为“基于区块链的双因素身份验证”。
在这种情况下,该过程通常涉及以下步骤:
首先,用户使用凭证登录系统。然后,通过区块链发出双因素认证请求。这会在区块链上创建一个临时交易,用于双因素认证请求。
接下来,用户使用应用程序来接受或拒绝该请求。如果用户接受,应用程序会在区块链上签署一个响应交易。
最后,应用程序验证交易以完成双因素认证的验证过程。通过这些步骤,我们可以有效地增强系统的安全性。
基于区块链的双因素认证的优势
去中心化 (Decentralization)
- 基于区块链的双因素身份验证不是依赖中央机构来管理双因素身份验证过程,而是将责任分配到整个区块链网络中。
- 这避免了传统双因素身份验证中可能被利用的单点故障。
不可变性 (Immutability)
- 使用基于区块链的双因素身份验证,所有交易都是不可变的,这意味着它们无法被更改或删除。
- 这为所有身份验证尝试提供了透明且防篡改的日志。
隐私 (Privacy)
- 由于区块链是一种假名技术,用户的私人信息可以得到更好的保护。
- 他们不需要与中央机构共享他们的个人信息(例如电话号码或电子邮件)来进行双因素身份验证。
二、多签名钱包及其安全性
理解钱包
- 数字钱包是软件应用程序,允许用户存储、发送和接收加密货币等数字资产。就像您的实体钱包一样,它是您存放资产的地方,只不过是以数字形式存放。
- 然而,与实体钱包不同的是,如果数字钱包被盗用,您可能会在瞬间失去所有资产,而没有任何希望恢复。
多重签名钱包的概念
- 多重签名钱包,也称为multisig钱包,是一种数字钱包,需要多个密钥才能授权交易。本质上,这是一种数字签名方案,需要两个或多个用户签署交易。
- 这个概念源于共享控制和安全的想法。执行交易的权力不属于任何个人,而是需要多个参与方的同意。
多重签名钱包的结构通常表示为“m-of-n”。
- 其中,“n”是密钥的总数,“m”表示执行交易所需的签名或密钥的数量。
- 例如,一个 2-of-3 的多重签名钱包将有三个密钥,其中两个密钥是授权交易所必需的。
多重签名钱包的优势:安全性、问责性和控制力
增强安全性 (Enhances security)
- 通过要求多个签名,恶意行为者窃取资产变得更加困难,因为他们需要破解多个密钥。
更好的问责性和控制力 (Better accountability and control)
- 它们非常适合需要多个参与方授权交易的联合账户。
可以用作额外的安全层 (Can be used as an extra layer of security)
- 个人可以将一个密钥保存在他们的计算机上,另一个密钥保存在他们的移动设备上。
实际场景:使用 2-of-3 多重签名钱包
- 假设您有一个 2-of-3 的多重签名钱包。您正在计划一笔交易,该交易需要至少两个密钥签名。
- 一旦交易发起,就需要使用您设置的三个密钥中的两个进行批准。
- 如果您没有两个密钥,交易将无法进行。这为您的交易增加了一层额外的安全性。
多重签名钱包的安全性
- 多重签名钱包提供了更高的安全性。
- 大多数数字钱包都使用私钥来保护资产。如果此密钥丢失或被盗,资产将永远消失。相比之下,多重签名钱包使用多个私钥,从而提高了存储在其中的数字资产的安全性。
- 此外,多重签名钱包还降低了单点故障的可能性。
- 由于交易需要多个密钥,即使一个密钥被盗用,钱包中的资产仍然安全。
多重签名钱包的实际用例
- 许多组织都发现了多重签名钱包的实际用途。
加密货币交易所 (Cryptocurrency exchanges)
- 加密货币交易所通常在其冷存储中使用多重签名钱包。这可以防止单个流氓员工耗尽所有资金。
遗产规划 (Estate planning)
- 在遗产规划背景下,多重签名钱包非常有效。
- 通过要求多个签名来转移资产,所有者可以确保他们的资产按照他们的意愿传递。
家庭账户 (Family accounts)
- 家庭账户是另一个用例。
- 父母可以为孩子的零用钱创建一个 2-of-2 的多重签名钱包。
- 孩子们可以提出消费,但父母双方都必须批准交易。
使用多重签名钱包的挑战
复杂性 (Complexity)
- 它们可能比普通钱包更复杂,难以设置和使用。经验不足的用户可能会觉得这个过程很有挑战性。
有限的尝试次数 (Limited number of tries)
- 如果在m-of-n多重签名钱包中丢失的密钥数量超过允许的数量,则该钱包中的资产将无法访问。
- 例如,如果在2-of-3的多重签名钱包中丢失了两个密钥,则剩余的资产将无法移动。
支持 (Support)
- 并非所有加密货币都支持多重签名钱包。虽然比特币和以太坊支持,但许多其他加密货币不支持,从而限制了它们的使用。
结论
- 多重签名钱包代表了区块链领域安全方面的重要进步。
- 通过要求多个签名来授权交易,它们增加了一层额外的安全性,并赋予用户对其数字资产更大的控制权。
- 尽管存在潜在的挑战,但通过适当的管理和一点理解,它们可以成为个人、企业和组织等宝贵的工具。
三、增强区块链隐私的技术
零知识证明 (Zero-Knowledge Proofs, ZKP)
- 在密码学领域,零知识证明是一个创新的概念,它使得一方(称为证明者)能够说服另一方(称为验证者)某个陈述是真实的,而无需透露除陈述本身有效性之外的任何进一步信息。
- 举个例子,假设您必须提供证据证明您已年满18岁,但不想透露您的确切年龄。零知识证明是一种可以用来证明某人已年满18岁而无需透露其真实年龄的证明类型。
零知识证明 (Zero-Knowledge Proofs, ZKP)
- 在区块链的背景下,零知识证明是一种可以用来验证交易而无需透露这些交易细节的工具。
- zk-SNARK,即零知识简洁非交互式知识论证,是由注重用户匿名性的加密货币Zcash使用的一种特殊类型的零知识证明。zk-SNARK使得网络可以保持安全的余额账本,而无需识别交易中的人员或交换的金额。
环签名
- 环签名是一种数字签名形式,可以由任何拥有密钥的用户组中的任何个人用户生成。由于在计算上不可能分辨出该组中哪个成员的密钥被用来生成签名,因此这种类型的签名被称为环签名,因为它创建了一个类似于环的结构,其中组的所有成员都被视为平等。
想象一下,你和一群朋友(比如 10 个人)都有一把特殊的“签名笔”,这支笔可以在一张纸上留下一个独特的印记,用来证明“这张纸上的内容是我认可的”。
现在,你想给某人送一份礼物,但又不想让任何人知道是你送的。怎么办呢?
这时候,环签名就派上用场了:
“环”的形成:
你把你的“签名笔”和你的 9 个朋友的“签名笔”放在一起,形成一个“环”。
这个“环”里的所有“签名笔”看起来都一样,谁也分不清哪支是你的。
匿名签名:
你用“环”里的其中一支“签名笔”在礼物上签个名。
由于“环”里的所有“签名笔”看起来都一样,所以没人知道你用的是哪支。
匿名交易:
你把签好名的礼物送出去。
收到礼物的人,只能看到礼物上有一个签名,但不知道是谁签的。
即使有人想追踪这个签名,他也只能确定签名来自这 10 个人中的一个,但无法确定具体是谁。
- 由于使用了环签名,门罗币和其他环签名加密货币的交易是完全匿名的。当交易被处理时,发送者的身份与其他用户的身份结合起来,形成一个潜在签名者的“环”。正因为如此,确定谁是真正的发送者是非常具有挑战性的。
Mimblewimble
- Mimblewimble是一种协议,由一个匿名用户提出,该用户使用的化名是“Tom Elvis Jedusor”(这是《哈利·波特》法语版中伏地魔的真名)。
- 该协议以《哈利·波特》系列中的一个咒语命名。该协议提供了一种新颖的属性组合,包括与隐私和可扩展性相关的属性。
- 机密交易 (Confidential Transactions) 和交易截断 (Transaction Cut-Through) 是使用Mimblewimble时利用的两个关键概念。
- 借助机密交易功能,交易参与方以及正在转移的金额可以保持匿名,而交易截断功能则可以减少区块链上保留的数据量。这是通过删除区块中的中间交易,仅保留第一个和最后一个交易的输入和输出来实现的。
- 然而,由于平台的性质和交易截断机制,Mimblewimble不提供对智能合约的原生支持。
- Grin和Beam是使用Mimblewimble协议的加密货币示例。
混币 (Coin Mixing)
- 混币,也称为滚币,是一种用于掩盖特定交易与个人身份之间联系的方法。为此,个人使用CoinJoin等服务。
- 该方法将来自多个不同人员的资金合并到一笔交易中,产生多个不同的输出。这样,交易历史变得更加复杂,更难以追溯到特定人员。(然而,必须牢记,混合货币并不能完全匿名,因为高级分析可能会揭露参与交易人员的身份。此外,特定地区的法律和监管环境可能会对该司法管辖区内混合服务的使用施加限制。)
隐身地址 (Stealth Addresses)
- 隐身地址是代表接收者为每笔单独交易创建的,并且它们仅使用一次。这种方法确保只有发送者和接收者才能确定付款的转移地点。因此,接收者的实际地址被隐藏,并且接收者的交易历史保持机密。
- 门罗币等加密货币使用这种方法。就门罗币而言,它与环签名和环机密交易 (RingCT) 相结合,不仅隐藏接收者的地址,还隐藏发送者的地址以及交易金额。这是通过使用环签名来实现的。
机密交易 (Confidential Transactions)
在区块链上,机密交易是一种对单个交易金额保密的技术。
- Pedersen Commitment是一种密码学软件,即使交易涉及的地址仍然可见,也可以隐藏金额。
机密交易的基本概念是添加密码学承诺,即使实际金额是保密的,也可以保持验证输入和输出平衡的能力。
- 这就像试图证明你拥有一把来自同一海滩的沙子,而无需说明这把沙子中有多少粒沙子。
- 这种方法在Blockstream的Liquid中实现,Liquid是连接到比特币区块链的侧链。
同态加密 (Homomorphic Encryption)
- 同态加密是一种加密类型,允许对密文(已加密的材料)进行计算,并生成加密结果,解密后,该结果与对明文执行的操作结果相匹配。这种加密类型只能用于使用同态加密加密的数据。
- 这对于在区块链交易中维护隐私特别有用,因为它将使节点能够在不知道被验证交易的实际值的情况下验证交易(即验证发送者是否有足够的货币进行传输)。
弹道证明 (Bulletproofs)
- 弹道证明是零知识证明技术的一种非交互式变体。它们比以前的零知识证明更有效地计算,占用更少的空间,这也是它们构成升级的原因之一。
- 开发它们是为了通过隐藏交易中涉及的数量,同时允许网络检查账本条目是否仍然加起来达到正确的总数,从而在比特币和其他加密货币中实现高效和机密的交易。
- 使用弹道证明可以大大减少密码学证据的数量,从而产生更紧凑、更快、更便宜的交易。
安全多方计算 (Secure Multi-Party Computation, SMPC)
安全多方计算是密码学的一个子领域,其目标是建立一些技术,使得各方可以在保持输入秘密的情况下,共同计算关于其输入的函数。
- 该子领域的名称源于这样一个事实,即该领域的目标是为各方创建共同计算函数的方法。
- 在区块链的背景下,SMPC可用于执行涉及敏感数据的计算,例如在不泄露数据本身的情况下,确定某人是否具有信用。
- 这种计算的一个例子是确定某人是否具有信用。
SMPC是密码学的一个分支,旨在为各方提供技术,使其能够在保密输入的同时,共同计算一个函数。这个领域的名称来源于其目标,即为各方创建方法,以便共同计算一个函数。
在区块链的背景下,SMPC可以用于执行涉及敏感数据的计算,比如在不透露数据本身的情况下,确定某人是否具有信用。例如,这种计算可以用于判断某人是否值得信任。通过这种方式,我们可以在保护数据隐私的同时,进行必要的计算。
状态通道 (State Channels)
- 用户可以在区块链上进行多次交易,而无需同时将所有交易提交到区块链,这得益于状态通道,这是一种标准的支付通道形式。
- 链上交易仅限于两次:一次用于打开通道,另一次用于在使用后终止通道。
- 当通道关闭时,只有最终状态会被记录在区块链上。尽管在此期间,参与者可以相互进行无限数量的链下交易。
- 状态通道实现的例子包括比特币的闪电网络和以太坊的Raiden网络。
抗量子密码学
- 量子计算可能能够破解许多当前使用的密码系统,包括区块链中使用的密码系统。某些类别的数学问题可以通过经典量子计算机比任何现代经典计算机更快地解决。
- 为了应对量子计算,我们需要创建新的密码系统。这些系统必须足够安全,以至于即使是量子计算机也无法破解它们。这是一个活跃的研究领域,许多有前景的抗量子算法正在开发中。