在计算机网络世界中,一切信息包括用户的身份信息都是用一组特定的数据来表示,计算机只能识别用户的数字身份来识别操作是否是用户本人来进行,所有对用户的授权也是针对用户数字身份的授权。认证信息的泄露可能导致用户全部数据被窃取,造成无法估计的损失。因此,如何确认持有数字身份的操作者是真正的合法拥有者,保持物理身份与数字身份对应统一是用户网络资产与数据安全的第一道关口,身份认证技术在计算机互联网世界的地位尤为重要。
目前,我们在进行网络活动时对用户的身份认证主要有三种方法。
(1)根据你所知道的信息来证明你的身份
这是我们最常接触的身份验证方法,也可以称为静态密码,采用用户名/密码的方式,只要在登录时输入正确的密码,计算机就会认定是合法用户。静态密码机制无论是使用还是部署都非常简单,但在验证过程中 需要在计算机内存中和传输过程可能会被木马程序或网络中截获,并不具备很高的安全性。
(2)根据你所拥有的东西来证明你的身份
动态密码与动态口令也是目前被广泛应用的身份认证技术之一,手机(邮箱)验证码和早期使用网银支付的 USB key等都是基于用户所拥有的东西来验证用户身份的合法性,但这种验证方式本身也存在一定的安全漏洞。
(3)根据特有生物特征来证明身份
生物特征是指唯一的可以测量或可自动识别和验证的生理特征或行为方式。包括:指纹、视网膜、虹膜、脸型等。目前已经被广泛用于智能设备、生物锁。但生物识别技术还在起步阶段,依靠把用户生物特征通过物理方法转换为二进制数据保存到电子设备中,存在一定的安全漏洞。比如苹果手机就曾在2016年被爆出使用硅胶可以轻松破解指纹密码。不过对比前两种方式,基于生物特征的身份认证已经拥有很高的安全性,未来会成为身份认证的主流技术。
以上的技术都不可避免的需要让用户的身份认证数据通过或存储在中心化的服务器中,这就极大的降低了安全性,如何让数据真正去中心化?社团链基于区块链底层技术之一的零知识证明,开发一套身份验证系统,社团组织、社团成员、社团公共财产等社团链的各个参与方都会应用该身份验证系统,保障自身的信息和财产安全。社团链采用自证明公钥和零知识的身份验证方案,能够实现用户公钥注册、双向身份认证和密钥协商 ,可以有效的实现通信双方身份的自证明并解决公钥分发的问题。整个身份认证过程交互次数少且能抵抗多种攻击,同时方案的存储量、通信量和计算开销都很少,能够有效的提高效率和安全性。
零知识身份认证解密我们先通过一个小故事来了解零知识身份认证:『刘德华要向吴彦祖证明自己拥有某个房间的钥匙,假设该房间只能用钥匙打开锁,而其他任何方法都打不开。
这时有2个方法:
①刘德华把钥匙出示给吴彦祖,吴彦祖用这把钥匙打开该房间的锁,从而证明刘德华拥有该房间的正确的钥匙。
②吴彦祖知道该房间内有某一物体,刘德华用自己拥有的钥匙打开该房间的门,然后把物体拿出来出示给吴彦祖,从而证明自己确实拥有该房间的钥匙。
②的方法就是零知识证明。在整个证明的过程中,吴彦祖始终不能看到钥匙的样子,从而避免了钥匙的泄露。』
社团链的身份认证系统采用去中心化的身份验证体系,用户的身份信息和凭证不属于任何机构所有,真正完全掌握在用户自己手中。通过采用零知识证明zk-SNARKs(zero-knowledge succinct non-interactive arguments of knowledge)算法,能够确保数字身份同真实个人间的真实性和一致性。零知识证明是指一方(证明者)向另一方(验证者)证明一个陈述是正确的,而无需透露除该陈述是正确外的任何信息。采用zk-SNARKs 算法能够最小程度的生成零知识证据消息。在整个认证过程中,几乎没有任何交互,证明者(Prover)只需向验证者(Verifier)发送一个消息即可。现阶段下,几乎没有任何的证明者有足够的计算能力去创建伪造的零知识证据以欺骗验证者。因此,对于一个证明者来说,在不知晓特定证明(witness)的前提下,构建一个有效的零知识证据是不可能的,可以确保证明者的数字身份和真实个人保持一致性。
zk-SNARKs 验证流程图
zk-SNARK 算法目前适用于所有的 NP 问题。我们要做的就是确定问题的验证规则,在社团链中,一笔交易是否有效的问题就是 NP 问题,验证规则主要是,输入的金额是否大于等于输出的金额,这笔交易是否有合适的签名,输入是否属于 UTXO 等。验证规则到R1CS 形式的转换则是zk-SNARK 算法关键的一个步骤,所谓的 R1CS (rank-1 constraint system) 就是一系列三元组向量 (a, b, c),对R1CS的解s 满足,s.a*s.b-s.c=0,它是验证规则的数学形式体现。
R1CS 三元组向量示例(其中R1CS 解s 的第一个元素永远是常数1)
zk-SNARK 算法第二个关键步骤是R1CS 到 QAP 的转换:QAPQuadraticArithmetic Programs 的简称。通过拉格朗日插值法或者快速傅里叶变化,我们可以将 R1CS 转换一系列成多项式的形式,使得 A(x) B(x) - C(x) = H(x) Z(x) 成立,零知识证据的证明主要围绕着 QAP 展开。相较于R1CS 需要单独检查每一个等式约束,QAP 可以同时检查所有的约束。
R1CS 三元组向量到QAP 的转换
社团链通过零知识证明系统结合区块链的去中心化属性,让用户的身份认证数据不被除了用户外的第二方得到,无法被存储在服务器中,能够极大的提高用户的身份认证数据安全,保证用户和社团组织的数据、隐私和财产安全。