Enterprise B2B Dual-QR Payment Protocol
Ugam Campus Product Project

AuthoSec

Dual-Factor Cryptographic Payment & Non-Repudiation Compliance Engine

Eliminating financial replay attacks and identity spoofing through Dual-QR Handshakes (QR1 → QR2), sub-300ms core verification execution, and AES-256 GCM encrypted payloads.

AuthoSec Security & Compliance Cockpit
MUTUAL AUTHENTICATION ACTIVE
AuthoSec System Interface
Cryptographic Handshake Protocol

4-Step Dual-QR Handshake.

Mutual identity binding prevents single-sided forgery, replay interception, and rogue transaction injection.

01
STEP 01

Merchant QR1 Scan

Sender scans static Merchant QR1 containing encrypted store metadata, generating initiating transaction state.

02
STEP 02

AWS SNS OTP Consent

Sender requests SMS OTP via AWS SNS (2–4s delivery). Time-bound 60s validity window validates account holder consent.

03
STEP 03

Dynamic QR2 Generation

Server issues single-use dynamic QR2 token containing AES-256 GCM encrypted nonce signature.

04
STEP 04

Atomic Settlement

Merchant scans QR2. Server executes mutual hash validation and updates Supabase PostgreSQL ledger atomically.

Mutual Authentication Guarantee

100% Verified

Both sender and receiver identity tokens are mutually verified before financial state modification. Tested on Samsung Galaxy A52 (Android 12) & iPhone 12 (iOS 17).

< 300ms
Core Verification Execution
4.6 / 5.0
Usability Score (12/12 Testers)
QR1 Gen: 180 ms
QR1 Scan: 120 ms
QR2 Gen: 150 ms
QR2 Scan: 110 ms
OTP Hash: 95 ms
AWS SNS: 2.25s
Academic Test Suite

Functional Validation Test Matrix.

100% pass rate across 10 empirical validation test suites conducted under simulated B2B cyber threat vectors.

TC01OTP Request Delivery
Delivered within 2–4 seconds via AWS SNS
Passed
TC02QR1 Payload Generation
QR1 created with AES-256 encrypted metadata
Passed
TC03QR1 Scan & State Transition
Receiver validates and advances state
Passed
TC04QR2 Confirmation Token
Time-bound QR2 generated dynamically
Passed
TC05QR2 Sender Scan
Mutual sender validation successful
Passed
TC06OTP Verification
Valid OTP completes atomic transaction
Passed
TC07Tampered Payload Rejection
System detects and rejects tampered QR data
Passed
TC08Expired OTP Rejection
System rejects OTP outside 60s window
Passed
TC09RBAC Permission Enforcement
Unauthorized roles denied access
Passed
TC10Audit Trail Logging
IP & delta logs created for every action
Passed
Threat Analysis

Threat Vulnerability Comparison: AuthoSec vs Traditional OTP.

Security Feature / Attack VectorTraditional OTP-Only SystemAuthoSec (Dual-QR + OTP Protocol)
Mutual Identity Authentication
Single-sided only
Dual-sided (Sender & Receiver bound)
Replay Attack Protection
Vulnerable to captured session data
Nonce + Time-bound payload signatures
Identity & QR Payload Spoofing
Susceptible to static code swaps
AES-256 GCM encrypted QR payloads
Man-in-the-Middle (MITM) Resistance
Limited protection
Identity binding + Dual verification
Non-Repudiation Audit Logs
Minimal transaction context
IP, User Agent, & Delta values logged
Academic PDF Report Roadmap

Future Enhancements & Next-Gen Scope.

01

In-App TOTP Generation

Reduces dependence on SMS carrier networks by issuing dynamic local TOTP authentication tokens.

02

Blockchain Audit Ledger

Anchors transaction hashes onto an immutable decentralized ledger for zero-tamper non-repudiation.

03

Biometric FaceID / TouchID

Integrates hardware-level device biometric verification prior to dynamic QR2 issuance.

Ecosystem Architecture

Cryptographic Engine & Zero-Trust Audit.

Grounded in peer-reviewed IEEE research on honeytoken authentication and secure offline mobile transactions, AuthoSec operates across 3 integrated codebases: a Next.js 15 Prisma backend, an Expo React Native mobile wallet, and a React Three.js web management platform.

EncryptionService.ts
// AES-256-GCM Payload Encryption & SHA-256 Hashing
export class EncryptionService {
  static encrypt(data: any, key: string, iv: string): string {
    const dataString = JSON.stringify(data);
    const encrypted = CryptoJS.AES.encrypt(
      dataString,
      CryptoJS.enc.Hex.parse(key),
      { iv: CryptoJS.enc.Hex.parse(iv), mode: CryptoJS.mode.CBC }
    );
    return encrypted.toString();
  }
}