EtherIdentity is a decentralized KYC solution that empowers users with full control over their personal identity. By using encrypted JSON vaults, AI-assisted verification, and blockchain-anchored iden
EtherIdentity is a decentralized, privacy-preserving KYC (Know Your Customer) verification system built on the Ethereum blockchain. It combines cryptographic techniques, NFT metadata, and AI-powered verification to allow users to create a secure digital identity that can be used across multiple platforms—especially centralized and decentralized exchanges—without ever sharing sensitive personal data.
Our mission is to give users control over their identity while enabling compliance with regulatory standards. EtherIdentity protects user data by:
Encrypting sensitive information with the user’s private key.
Storing only the cryptographic hash (kycHash) on-chain via NFT.
Ensuring bourses and other services can verify identity without seeing the actual user data.
Each user creates a new identity via the EtherIdentity app, which generates a unique private key. This key is used to encrypt a JSON file containing:
Name, Surname, National ID, Address
Email, Phone number
Photos: front/back of ID, selfie with ID
Liveness check score (simulated in MVP)
This JSON is encrypted locally using AES (CBC + PKCS7), and only the encrypted version remains on the user's device.
Before finalizing the KYC process, the app uses AI (simulated in MVP) to:
Verify document authenticity
Perform liveness detection
Validate input data accuracy
Once passed, a canonical version of the decrypted JSON is hashed (SHA-256), then combined with the private key and re-hashed to produce the final kycHash.
The kycHash is a non-reversible cryptographic fingerprint representing a user's verified identity data. It is used throughout the EtherIdentity system to verify user authenticity without revealing any sensitive information.
User fills in identity data: name, address, ID number, etc.
Uploads identity photos and performs a liveness check.
All data is compiled into a JSON file.
The JSON keys are alphabetically sorted to produce a canonical version.
This canonical JSON is hashed using SHA-256.
The result is concatenated with the user’s private key.
The final SHA-256 hash of this concatenation becomes the kycHash.
kycHash = SHA256( SHA256(JSON_sorted) + privateKey )
Written into NFT metadata.
Used by exchanges to verify user identity.
Acts as a tamper-proof proof of identity.
Allows zero-knowledge-like verification without exposing real data.
Can only be decrypted with both the encrypted JSON and the private key.
Once verification is completed, the app sends the following to EtherIdentity’s backend:
kycHash
privateKey
These are securely stored in the server. The encrypted JSON file is not uploaded to any server and stays on the user's device.
The backend will support minting an NFT to embed the identity’s kycHash
, verification confidence (e.g., 96%), and timestamp in its metadata. This step is currently not active in the MVP.
After registering, users can access their identity using:
A PIN they set during setup
Optional biometric authentication
Their encrypted JSON and private key are locally stored via shared_preferences
.
Users can re-import their identity using:
Encrypted JSON file
Their 64-char private key
The app decrypts and re-verifies the kycHash. If it matches the NFT metadata and the server record, access is granted.
When a user wants to KYC for an exchange:
They share the encrypted JSON file and their kycHash.
The exchange does not decrypt the JSON file.
It checks whether the provided kycHash matches the one registered in the NFT metadata.
If the hashes match, the user’s identity is considered verified.
The exchange can then store the encrypted JSON for regulatory compliance.
The exchange cannot view personal data unless it obtains the private key from EtherIdentity through legal means.
This structure functions like a "vault and key" model:
The encrypted JSON file is the user's vault.
The private key is the key.
Without both, the identity data is inaccessible.
If legally compelled:
The exchange requests the private key from EtherIdentity.
EtherIdentity verifies court documentation.
If legitimate, the private key is released.
Only then can the JSON be decrypted and the identity revealed.
AES-256 encryption with unique IVs per user
Hashing with SHA-256 for consistency
No sensitive data leaves the device
NFT metadata contains only non-reversible hash
Flutter (UI)
Dart (Client logic)
AES Encryption via encrypt
File selection with file_picker
SharedPreferences (storage)
Simulated AI verification in MVP
✅ MVP Complete
✅ Local Encryption, PIN, Import/Export Functional
❌ NFT Minting Not Yet Active (Planned for Post-MVP)
During the hackathon, we successfully completed the minimum viable product (MVP) of EtherIdentity. Users can now: Generate a private key Fill out and submit personal information Upload required identity images (front/back of ID, selfie, etc.) Simulate liveness detection and AI verification Encrypt identity data into a local JSON file using AES Generate and match kycHash Import the identity using the encrypted JSON file and private key Verify hash validity and simulate server verification All of the above functionalities are working within the app. NFT minting is currently disabled but planned in post-MVP roadmap.
We have not received any funding yet. Our MVP has been submitted to the Ethereum Foundation's Ecosystem Support Program (ESP), and we are currently awaiting feedback. Meanwhile, we are open to fundraising opportunities and strategic partnerships to continue developing the project — especially the AI verification and NFT minting modules.