fabric

fabric 1.3之使用Identity Mixer实现MSP

2018-10-16  本文已影响102人  时间里的小恶魔

一,什么是Idemix

Idemix是一个加密协议套件,它提供强大的身份验证以及隐私保护功能,如匿名,无需披露交易者身份即可进行交易,以及不可链接性,即单个身份发送多个交易的能力,而不会泄露 交易是通过相同的身份发送的。
Idemix流中涉及三个参与者:用户,发行者和验证者。


Identity Mixer Overview

例如,假设“爱丽丝”需要向鲍勃(店员)证明她拥有由DMV发给她的驾驶执照。
在这种情况下,Alice是用户,DMV是发行者,Bob是验证者。 为了向鲍勃证明爱丽丝有驾驶执照,她可以向他展示。 然而,Bob可以看到Alice的姓名,地址,确切的年龄等等 - 比Bob需要了解的信息更多。 相反,Alice可以使用Idemix为Bob生成“零知识证明”,只显示她拥有有效的驾驶执照而没有其他任何内容。

所以从证明来看:

Idemix身份验证技术提供的信任模型和安全保证类似于标准X.509证书所确保的信任模型和安全保证,但具有有效提供高级隐私功能的基础加密算法,包括上述隐私功能。 我们将在下面的技术部分详细比较Idemix和X.509技术。

二、 如何使用Idemix

要了解如何将Idemix与Hyperledger Fabric一起使用,我们需要查看哪些Fabric组件与Idemix中的用户,颁发者和验证者相对应。

要在Hyperledger Fabric中使用Idemix,需要以下三个基本步骤:


Screen Shot 2018-10-15 at 5.43.00 PM.png

比较此图中的角色与上面的角色。

对于开发环境,如果您不使用Fabric CA,可以使用idemixgen来创建这些文件。


- &Org1Idemix
    # defaultorg defines the organization which is used in the sampleconfig
    # of the fabric.git development environment
    name: idemixMSP1

    # id to load the msp definition as
    id: idemixMSPID1

    msptype: idemix
    mspdir: crypto-config/peerOrganizations/org3.example.com

msptype设置为idemix,mspdir目录的内容(本例中为crypto-config / peerOrganizations / org3.example.com / msp)包含IssuerPublicKey和IssuerRevocationPublicKey文件。

请注意,在此示例中,Org1Idemix表示Org1的Idemix MSP(未显示),它也具有X509 MSP。

以下调用将返回与您的Idemix凭据关联的org.hyperledger.fabric.sdk.Enrollment对象。

IdemixEnrollment idemixEnrollment = hfcaClient.idemixEnroll(x509enrollment, "idemixMSPID1");

另请注意,IdemixEnrollment实现了org.hyperledger.fabric.sdk.Enrollment接口,因此可以使用与使用X509注册对象相同的方式,当然,这会自动提供Idemix的隐私增强功能。

三、Idemix和chaincode

从验证者的角度来看,还有一个要考虑的角色:链码。 使用Idemix凭证时,链码可以了解有关交易者的信息吗?
当使用Idemix凭证时,cid(客户端标识)库(仅用于golang)(https://github.com/hyperledger/fabric/tree/master/core/chaincode/shim/ext/cid)已扩展为支持GetAttributeValue函数。 但是,正如下面“Current limitations”部分所述,Idemix案例中只公开了两个属性:ou和role。

如果Fabric CA是凭证颁发者:

四、Current limitations

Idemix的当前版本确实存在一些限制。

2.角色属性(“role”):

     用法:与X.509相同
     类型:整数
     显示(Revealed):永远

3.注册ID属性

     用法:唯一标识用户 - 在属于同一用户的所有注册凭据中相同(将在未来版本中用于审核)
     类型:BIG
     显示:从不在签名中,仅在为Fabric CA生成身份验证令牌时。

4.撤销句柄属性

     用法:唯一标识凭证(将在以后的版本中用于撤销)
     类型:整数
     显示:永远不会

五、技术总结

标准X.509证书和Identity Mixer凭证之间的主要区别是用于验证属性的签名方案。 身份混合器系统的基础签名允许拥有签名和相应的属性的有效证明,而不会泄露签名和(选定的)属性值本身。 我们使用零知识证明来确保在某些属性上的签名有效并且用户拥有相应的凭证密钥时不泄露这样的“知识”或“信息”。

此类证明(如X.509证书)可以使用最初签署凭证的权限的公钥进行验证,并且无法成功伪造。 只有知道凭证密钥的用户才能生成有关凭证及其属性的证明。

关于不可链接性,当呈现X.509证书时,必须显示所有属性以验证证书签名。 这意味着签署事务的所有证书用法都是可链接的。

为了避免这种可链接性,每次都需要使用新的X.509证书,这会导致复杂的密钥管理以及通信和存储开销。 此外,有些情况下,即使颁发证书的CA也不能将所有事务链接到用户,这点也很重要。

Idemix有助于避免CA和验证者的可链接性,因为即使CA也无法将证据链接到原始凭证。 发行人和验证者都不能判断两个证据是否来自同一凭证(或来自两个不同的凭证)。

有关Identity Mixer技术的概念和功能的更多详细信息,请参阅“隐私保护基于属性的身份验证的概念和语言”一文。(https://link.springer.com/content/pdf/10.1007%2F978-3-642-37282-7_4.pdf

上一篇下一篇

猜你喜欢

热点阅读