身份混合器Idemix(Identity Mixer)

什么是身份混合器(Idemix)?

Idemix 是Fabric1.3新加入的功能。实现了“零知识证明“的功能,具体参阅

Idemix是一套协议加密组件。它可以提供强大的身份验证和隐私保护特性。

  • 匿名性,在不透露交易者身份的情况下进行交易的能力
  • 不可链接性
  • 单个身份发送多个交易的能力

Idemix有三种角色:

  • 用户
  • 发行者
  • 验证者

身份混合器Idemix(Identity Mixer)_第1张图片
发行者将一组用户的属性以一个数字证书的形式发布,以下简称“身份证书”。

用户随后生成一个“零知识证明”的身份证书,并且还可以自己选择公开哪些属性。因为是零知识证明,所以它没有向验证者、发行者或任何其他人透露额外的信息。

举个例子,假设“helen”需要向glowd(保安)证明,她拥有开发商颁发的居住证。
在这种情况下,helen是用户,开发商是发行者,glowd是验证者。为了向glowd证明helen有居住证,她可以向他展示居住证,但是这样的话glowd就会看到helen的姓名,年龄等信息,这些信息其实(保安)不需要知道。

解决这个问题的方法是, helen可以使用Idemix生成glowd的“零知识证明”,这个证明只能表明她有一个有效的居住证,没有其他任何用途。

所以从证明中可以得知:
glowd除了知道helen有一个居住证(匿名)以外,不知道任何关于她的附加信息。

如果helen多次访问回家,并且每次都为glowd生成证明,那glowd还是无法确定这是同一个人(不可链接性)。

Idemix身份验证技术提供了类似于标准X.509证书所保证的信任模型和安全保证。但是与X.509相比,Idemix提供了底层密码算法。这些算法有效地提供了高级隐私特征。

如何使用Idemix

为了理解如何在Hyperledger Fabric中使用Idemix,我们需要查看哪些Fabric组件与Idemix中的用户、发行者和验证者有关。

用户是Java SDK API。未来Fabric的其他SDK也将支持Idemix。

Fabrci提供了两种可能的Idemix发行者:

1、用于生产或开发环境的Fabric CA
2、用于开发环境的idemixgen生成工具

验证者是Fabric中的一个Idemix MSP。

为了在Hyperledger Fabric中使用Idemix,需要以下三个基本步骤:
身份混合器Idemix(Identity Mixer)_第2张图片
将这张图中的角色与上面一张图的角色进行比较。

1、发行者(Issuers):

Fabric CA(版本1.3或更高)已被增强为自动成为Idemix发行者。当Fabric CA服务器启动的时候(或通过CA服务器初始化命令初始化时),以下两个文件是会在fabric-ca-server的Home目录下自动创建:IssuerPublicKey和IssuerRevocationPublicKey。在步骤2中需要使用这些文件。

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

2、验证者(Verifier):

你需要使用第一步创建的IssuerPublicKey 和 IssuerRevocationPublicKey来创建Idemix的MSP

例如,在Hyperledger Java SDK例子的configtx.yaml中有这么一段:

- &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)中则包含IssuerPublicKey 和IssuerRevocationPublicKey文件

注意在这个例子中Org1Idemix代表针对Org1(不显示)的Idemix MSP,其中也包含一个X509的MSP

3、用户(User)

使用Java SDK调用Idemix只需要一个额外的API:

org.hyperledger.fabric_ca.sdk.HFCAClient类中的idemixEnroll方法。

例如:假设hfcaClient是你的HFCAClient对象,x509Enrollment是org.hyperledger.fabric.sdk.Enrollment的对象,它与你的X509证书相关联。下面的调用将返回一个org.hyperledger.fabric.sdk.Enrollment对象,它与你的Idemix证书相关联:

你可能感兴趣的:(fabric,区块链,BTC)