Fabric 1.3的新功能:身份混合器(Identity Mixer)

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

Idemix是一套协议加密组件。它可以提供强大的身份验证和隐私保护特性。如匿名性、在不透露交易者身份的情况下进行交易的能力、以及不可链接性、单个身份发送多个交易的能力。Idemix有三种角色:用户、发行者、验证者。

 发行者将一组用户的属性以一个数字证书的形式发布,以下简称“身份证书”。 

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

举一个例子:假设“Alice”需要向Bob(一个店员)证明,她拥有DMV颁发的一张驾照。注:DMV是Department of Vehicles(车管所)的缩写。

在这种情况下,Alice是用户,DMV是发行者,Bob是验证者。为了向Bob证明Alice有驾驶执照,她可以向他展示。可是这样Bob会看到爱丽丝的姓名,地址,实际年龄等信息,这些信息其实Bob不需要知道。

解决这个问题的方法是, Alice可以使用Idemix生成Bob的“零知识证明”,这个证明只能表明她有一个有效的驾驶执照,没有其他任何用途。

所以从证明中可以得知:
Bob除了知道Alice有一个有效驾照(匿名)以外,不知道任何关于她的附加信息。

如果Alice多次访问商店,并且每次都为Bob生成证明,那Bob无法确定这是同一个人(不可链接性)。

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

如何使用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,需要以下三个基本步骤:

Fabric 1.3的新功能:身份混合器(Identity Mixer)_第1张图片

 

将这张图中的角色与上面一张图的角色进行比较。

1、发行者(Issuers):

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

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

2、验证者(Verifier):

你需要使用第一步创建的IssuerPublicKeyIssuerRevocationPublicKey来创建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)