Abstract

Idemix (Identity Mixer) is a cryptographic protocol suite, which provides strong authentication as well as privacy-preserving features such as anonymity, the ability to transact without revealing the identity of the transactor, and unlinkability, the ability of a single identity to send multiple transactions without revealing that the transactions were sent by the same identity. More details here - https://hyperledger-fabric.readthedocs.io/en/release-2.2/idemix.html

Currently, Fabric Gateway SDK for Java and Fabric Gateway Client API for Java doesn't have support to use an Idemix Identities for transactions doing in Hyperledger Fabric. The objective of this mentorship program is to give support to store Idemix Identities in a Wallet and be able to use the same to invoke and query the transaction in a Hyperledger Fabric Network.

Mentors

Name

Time zone

Discord ID

Email ID

Kamlesh Nagware

ISTknagware#6976  kamlesh.nagware@gmail.com


Mentee

Name

Time zone

Discord ID

Email ID

Kavin Arumugam

ISTKArumugam#1934a.kavin24@gmail.com

Communication channel:  Discord+ Github

Hyperledger Fabric Repositories involved in this project: 

Deliverables

  • Ability to store Idemix Identity in a Wallet by using Fabric SDK for Java & Fabric Gateway SDK for Java.
  • Ability to use Idemix Identity in a Fabric Gateway Client API for Java.
  • Ability to use the Stored Idemix Identity from a Wallet to fire transactions to the Hyperledger Fabric Network using Fabric Gateway SDK for Java and be able to invoke & query the transaction by signing it using Fabric Gateway Client API for Java.
  • Demonstrate the usage of Identity Mixer Identity by using both Fabric Gateway SDK for Java and Fabric Gateway Client API for Java.

Implementation



Final Project Presentation

Milestones

Eval 1:

  • Ability to store Idemix Identity in a Wallet by using Fabric SDK for Java & Fabric Gateway SDK for Java.

Eval 2:

  • Ability to use the Stored Idemix Identity from a Wallet to fire transactions to the Hyperledger Fabric Network using Fabric Gateway SDK for Java.

Eval 3:

  • Ability to use Idemix Identity in a Fabric Gateway Client API for Java.
  • Able to invoke & query the transaction by signing it using Fabric Gateway Client API for Java.

Eval 4:

  • Demonstrate the usage of Identity Mixer Identity by using both Fabric Gateway SDK for Java and Fabric Gateway Client API for Java.

Timeline

Dates

Tasks/Plan

Status

June 1 - June 14
  • Attend Hyperledger Mentorship Program 2022 Onboarding Meeting
  • Mentor <> Mentee - Intro
  • Introduction to Hyperledger Fabric and its SDKs
  • Short Study on Membership Service Provider (X509 & Idemix) in Fabric
Done
June 15 - June 28
  • Introduction to Identity Mixer
  • Actors involved in Idemix Flow & How to use in Fabric
  • Discussion about Project Plan with Mentor and Defining the Timelines, Milestones and Deliverables
Done

June 29 - July 12

  • Install Prerequisites and Bring up & play with the sample Fabric Network
  • Setting Up and Configuring the network to fit for Idemix Usage
  • Identification of Basic flow for using Identity Mixer in Fabric
Done
July 13 - July 26Basic Flow Test of Idemix Usage in Fabric:
  1. Issuer - Fabric CA
    1. By default, Fabric CA is configured to issue Idemix Credentials

  2. Verifier - IdemixMSP in Channel Configuration
    1. Creating & Specifying Idemix MSP in "configtx.yaml"
    2. Generate Idemix Organization MSP Definition using "configtxgen" in form of JSON
    3. Updating Channel Configuration to update Idemix Organization MSP by Existing Organization Admin (with necessary approvals)

  3. User - From CLI (now) / Java SDK (later)
    1. Generate Idemix Credential for an User with Idemixgen Tool but with "Fabric CA Idemix Credentials"
    2. Export Necessary ENV Variables.
    3. Submit a Transaction to Network using an "idemix" User
Done
July 27 - Aug 9Done
Aug 10 - Aug 23
  • Get the Basic Understanding of fabric-gateway-java
  • Implementation of an Idemix Identity Provider
  • Modification in the Gateway Implementation to add an Idemix Identity Provider
    (Currently, it is hardcoded to use only x509 Identity Provider)
  • Modification of Identity Providers in Wallet Implementation
  • Build and Test the SDK
Done
Aug 24 - Sept 6
  • Write a Code to submit a transaction to the network by selecting an Idemix Identity from a Wallet using fabric-java-sdk & fabric-gateway-java repository
Done
Sept 7 - Oct 4
  • Execute the samples from fabric-samples with Fabric v2.4+ for better understanding
  • Setup the development environment for Fabric Gateway Client API for Java
  • Create Fork, Clone the SDK to local and build it.
  • Go through the Fabric Gateway Client API for Java
Done
Oct 5 - Nov 1
  • Lift the Identity Mixer Implementation from fabric-sdk-java
  • Fit the Identity Mixer Implementation into fabric-gateway
  • Implement the Hash Implementation to generate digest of messages by providing the complete messages to send for Idemix Signing Implementation
  • Update to v1.1.2 to fix an issue with the Transaction ID when a non-default hash implementation is supplied
Done
Nov 2 - Dec 19
  • Build the fabric-gateway sdk and test it
  • Create newIdemixSigner() function to specify in the signing implementation to sign messages sent to the network
  • Create newIdemixIdentity() function to specify the Identity Mixer Client Identity to connect to the network
  • Create a sample code to demonstrate the usage of Idemix Identity using Fabric Gateway SDK for Java & Fabric Gateway Client API for Java
Done

Discussions & Clarifications


Project Result

Demo Video

Demo Application


  • No labels