Skip to content
This repository has been archived by the owner on Sep 23, 2022. It is now read-only.

Winner (2nd Place) of the all-India Aadhaar Hackathon 2021. The project contains a Verifier and a Resident application built to authenticate users through Aadhaar API's

Notifications You must be signed in to change notification settings

OverPoweredDev/Authentication-Reimagined

Repository files navigation

Banner

100% Authentication success in Rural India

Second Place Winner for the UIDAI Hackathon 2021 by Team 202 ACCEPTED. Our Project was to develop 2 Applications for Verification and Authentication of identity using Aadhaar biometrics on mobile devices.

Please do not ask how to implement this as the Aadhaar API is disabled completely. It was only available during the hackathon and cannot be used now.

Important Links


App Flow

Scenario

  • Resident approaches PDS shop for Ration.
  • Located in Rural India with no 3G/4G connectivity.

Verifier APP

  • Uses OTP Authentication as primary mechanism.
  • Resident Shares Virtual Aadhaar Number / Offline eKYC with PDS shop.
  • Application facilitates OTP Authentication, Online/Offline Face Authentication for Completely inclusive authentication.

Resident App

  • OTP verification for secure login.
  • Facilitates generation of Virtual Aadhaar Number with Captcha and OTP based security.
  • Facilitates downloading eKYC XML to share with Verifier using QR code for OFfline Face Auth.

General

This is a project submitted to the UIDAI Aadhar Authentication Hackathon. We try to explore authentication options in a variety of ways, while providing a seamless transition from online to offline. The methods of Authentication are:

  • Fingerprint Matching (Simulated due to lack of fingerprint sensors)
  • Aadhaar based OTP matching (Via SMS or email)
  • Stateless Face Matching

The navigational structure of the project looks something like this

resident_app
├── android/..
├── assets/..
├── lib
│   ├── camera_screen.dart
│   ├── home_screen.dart
│   ├── login_screen.dart
│   ├── main.dart
│   └── resident_data.dart
├── pubspec.lock
└── pubspec.yaml

with the files in lib containing the important application data


Architecture Diagram

Approach

Offline Fingerprint Authentication

  • UIDAI server generates a secure hash of the recorded fingerprint and sends it to the resident application as unique id (at setup).
  • Verifier accepts hash value from resident application using QR code.
  • Verifier also takes actual fingerprint and computes its hash.
  • If both hashes match, authenticity is proven completely offline (extremely fast).

Offline Face Match

  • If fingerprint authentication not possible, Offline Stateless Face match implemented from the API
  • Resident app will obtain eKYC XML from UIDAI server (at setup).
  • Stateless match performed as already supported in the Verifier App.

Tech Stack

We use a modified Flutter (Kotlin/Swift) Techstack implemented mostly in flutter with a few calls to Native code in Kotlin. All use of API's is limited to those provided by the UIDAI for the purposes of the Hackathon due to safety reasons.

API Usage

  • OTP API to simulate Fingerprint Hash (as mentioned in the docs)
  • OTP API for Mobile phone Auth
  • eKYC API for Stateless Matching.
  • Face RD APK for Online/Offline
  • Aadhaar Auth API

About Us - 202ACCEPTED

  • Omkar Prabhune, CSE Junior at VIT Pune
  • Atharva Rajadhyaksha, Instrumentation Junior at VIT Pune

About

Winner (2nd Place) of the all-India Aadhaar Hackathon 2021. The project contains a Verifier and a Resident application built to authenticate users through Aadhaar API's

Topics

Resources

Stars

Watchers

Forks

Languages