GijsWeterings / IdentityChain

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

IdentityChain

Students:

  • @GijsWeterings
  • @LiamClark
  • @Schubbcasten
  • @Recognition2
  • @eanker

Self-Sovereign Identity

IdentityChain is a Self-Sovereign Identity app based on TrustChain. It aims to facilitate a system where identity can be decentralized, and give control of the use of identity data back to the user. Identity in this case is built up from all attestations made between the user and other parties. Each block on the TrustChain is signed by the user and a second party, and contains a zero knowledge proof.

Zero knowledge proof

In the IdentityChain app zero knowledge range proofs can be generated, proven and verified. The implementation is build upon the paper “An Efficient Range Proof Scheme” by Kun Peng and Feng Bao. This means that we can proof a number is in a certain range, without disclosing the number itself. For example, you can proof that you are older then 18 whilst buying alcohol, without telling your real age.

Network discovery and communication

The IdentityChain app is designed for local, face-to-face interactions. To facilitate the process of connecting between devices, IdentityChain makes use of Network Service Discovery **(NSD).

On startup, the app announces itself to the network. Other devices running the app on the same network can now discover the peer device, and connect directly via local IP.

Once a peer connection is made, a gRPC channel is set up between the devices, which is encrypted to ensure safe communication.

Attestations

A peer can request attestation for a certain claim from another peer. He will send a half-block containing a zero-knowledge proof. This creates an attestation request on the side of the attestee. This request can be accepted or rejected and when accepted the zero knowledge proof gets verified and the block gets then signed and sent back to the requester.

Verifications

The IdentityChain app can also verify blocks created by other people. Verification is an interactive protocol between the attestee and the verifier. This protocol checks all parameters of the zero-knowledge proof.

Screenshots

About

License:GNU General Public License v3.0


Languages

Language:Kotlin 71.4%Language:Java 28.6%