Post-Quantum · Zero-Trust · Serverless · Forensic-Hardened Messenger
- Overview
- Architecture
- The Speakeasy — Camouflage System
- Cryptographic Stack
- Network & Transport Layer
- Forensic Countermeasures
- Feature Reference
- Project Structure
- Technology Stack
- Build & Run
- Screenshots
- Version History & Changelog
- Security Model Summary
- V11 Security Hardening
- UI Components Showcase
- Disclaimer
AcroNet is a fully decentralized, end-to-end encrypted messaging platform engineered for zero-trust environments. It operates under a protocol codenamed Obsidian Forge, which replaces traditional messaging UI patterns with a multi-layered camouflage architecture.
To any forensic examiner, network sniffer, or casual observer, the application appears — and functions — as a legitimate cryptocurrency trading client called MarketPulse. Beneath that surface lies a post-quantum encrypted messenger that routes messages through disposable Nostr relays, leaves no server-side trace, and can self-destruct its entire cryptographic state on command.
| Principle | Implementation |
|---|---|
| Zero Trust | No central server, no Firebase, no AWS. All routing via disposable NIP-01 Nostr relay pool |
| Post-Quantum Safety | Hybrid X25519 + ML-KEM-1024 (NIST FIPS 203, Level 5) key exchange; session key survives if either primitive holds |
| Forensic Plausibility | Fully functional decoy trading app with seeded trade history, fake API keys, and portfolio data |
| Cryptographic Sovereignty | Identity derived from a 12-word BIP39 mnemonic; no phone number, no email, no central authority |
| Physical Erasure | RandomAccessFile zero-fill on NAND sectors; not a UI delete — bytes are physically overwritten |
graph TB
subgraph SURFACE["Surface Layer — MarketPulse Decoy"]
MP_UI["Live Binance WebSocket Feed"]
MP_CHART["MPAndroidChart Candlesticks"]
MP_OB["Order Book & Trade Ticker"]
MP_SET["Settings / Terms / Privacy"]
end
subgraph AUTH["Authentication Gate"]
TRIGGER["Triple-Tap Title → Shatter Animation"]
PIN["PIN / Biometric Verification"]
DURESS["Duress PIN → Decoy DB"]
end
subgraph VAULT["AcroNet Secure Vault"]
DASH["Dashboard — Contact List"]
CHAT["Chat — E2EE Messenger"]
PROFILE["Profile — Key Management"]
SETTINGS["Transport & Security Settings"]
end
subgraph CRYPTO["Cryptographic Core"]
IDENTITY["BIP39 Identity Manager"]
KEX["X25519 + ML-KEM-1024 Handshake"]
CIPHER["AES-256-GCM Message Cipher"]
DB["SQLCipher Encrypted Database"]
VANISH["VanishMode — RAM Eviction"]
end
subgraph NETWORK["Network Layer"]
TOR["Embedded Tor SOCKS5 Proxy"]
NOSTR["NIP-01 Nostr Relay Pool"]
BLE["BLE Mesh Router"]
NAN["Wi-Fi Aware NAN Node"]
P2P["LAN P2P Swarm Transfer"]
end
subgraph HARDWARE["Hardware Security"]
KNOX["Knox Vault Simulator (StrongBox/TEE)"]
ROOT["Continuous Root Detection (60s)"]
TAMPER["APK Tamper Detection"]
end
subgraph FORENSIC["Anti-Forensic Layer"]
DECOY_GEN["Forensic Decoy Generator"]
PIN_ROUTER["Dual-PIN Database Router"]
LSB["LSB Image Steganography"]
TRAFFIC["Traffic Shaper — MPEG-TS Mimicry"]
RETRACT["Cryptographic Retraction Protocol"]
ZERO["Zero-Fill NAND Erasure"]
end
MP_UI --> TRIGGER
TRIGGER --> PIN
PIN -->|Real PIN| VAULT
PIN -->|Duress PIN| DURESS
VAULT --> CRYPTO
CRYPTO --> TOR
TOR --> NOSTR
CRYPTO --> NETWORK
CRYPTO --> FORENSIC
CRYPTO --> HARDWARE
sequenceDiagram
participant A as Alice (Sender)
participant DR as Double Ratchet
participant SC as Schnorr Signer
participant NR as Nostr Relay Pool
participant DB as SQLCipher DB
participant B as Bob (Receiver)
A->>DR: Plaintext message
DR->>DR: Ratchet step → derive AES-256-GCM key
DR->>SC: Encrypt → Base64 ciphertext
SC->>SC: BIP-340 Schnorr sign (secp256k1)
SC->>NR: Publish blinded NIP-01 Event (jittered timestamp)
NR-->>B: Deliver event via subscription
B->>SC: Verify Schnorr signature
SC->>DR: Decrypt with session key
DR->>DB: Store as Base64 ciphertext in SQLCipher
DB-->>B: Display plaintext in ChatFragment
AcroNet is not a messaging app. It is a fully functional cryptocurrency broker called MarketPulse.
| Layer | What the examiner sees | What is actually happening |
|---|---|---|
| App Icon & Name | "MarketPulse" — stock chart icon | Launcher alias via AcroNetDecoyActivity |
| Home Screen | Live BTC/ETH/SOL/BNB/XRP candlestick chart | Real Binance WebSocket stream (wss://stream.binance.com) |
| Order Book | Flickering bid/ask depth feed | Mock depth data seeded from live spread |
| Trade History | Scrolling execution feed | Mock trades interpolated from live price |
| Quick Order | Buy/Sell panels with portfolio balance | Functional mock balance via SharedPreferences |
| Settings | Notifications, 2FA, API keys, cache clear | Standard trading app settings — all functional |
| Network Traffic | HTTPS to api.binance.com |
Legitimate API calls; no AcroNet fingerprint |
| On-Disk Artifacts | marketpulse_trades.db with 150+ orders |
Auto-generated forensic decoy data |
Triple-tap the "MarketPulse" title bar
→ Physics-based shatter animation (spring-damped particles)
→ PIN / Biometric authentication gate
→ SQLCipher vault decryption
→ AcroNet Dashboard
Two PINs. Two databases. One truth.
| Real PIN | Duress PIN | |
|---|---|---|
| Unlocks | AcroNet encrypted vault | Benign decoy chat database |
| Timing | Constant 350ms |
Constant 350ms (timing-equalized) |
| Database | acronet_vault.db (real messages) |
Decoy DB (fabricated conversations) |
| On 3 Failures | Full key wipe + database destruction | Same behavior (indistinguishable) |
128-bit entropy → 12 BIP39 words
→ PBKDF2-SHA512 (2048 rounds) → 512-bit seed
→ HMAC-SHA512("AcroNet seed") → master key
→ Hardened path m/44'/777'/0'/0/0 → child key
→ X25519 private key + ML-KEM-1024 seed + Nostr pubkey
No phone number. No email. No server registration. Recovery: enter 12 words on any device → full identity restored.
| Component | Algorithm | Purpose |
|---|---|---|
| Classical ECDH | X25519 (Curve25519) | Ephemeral key agreement, fast and proven |
| Post-Quantum KEM | ML-KEM-1024 (NIST FIPS 203, Level 5) | Lattice-based encapsulation, quantum-resistant, AES-256 equivalent |
| Key Derivation | HKDF-SHA256 | Combines both shared secrets into single session key |
| Session Key | AES-256 (32 bytes) | Output: one symmetric key for message encryption |
Security guarantee: If either X25519 or ML-KEM-1024 survives a quantum attack, the session key remains unrecoverable.
| Property | Value |
|---|---|
| Algorithm | AES-256-GCM |
| Auth Tag | 128-bit |
| IV | 12 bytes, SecureRandom per message |
| AAD | SHA-256(IV ‖ Genesis architect signature) — dynamic per message |
| Wire Format | Base64(IV[12] ‖ Ciphertext ‖ AuthTag[16]) |
The AAD (Additional Authenticated Data) is derived from the AcroNetGenesis block. If the source code's author identity is modified, the SHA-256 hash changes, the AAD mismatches, and every stored message permanently fails to decrypt.
| Property | Value |
|---|---|
| Engine | SQLCipher 4.5.4 |
| Page Size | 4096 bytes |
| KDF | PBKDF2-SHA512 |
| Key Rotation | 24-hour rolling via AcroNetDatabaseKeyManager |
| Key Storage | EncryptedSharedPreferences (Android Keystore-backed AES-256-GCM / AES-256-SIV) |
Messages are broadcast as blinded NIP-01 events through a rotating pool of 10 disposable community relays:
wss://relay.damus.io wss://nos.lol
wss://relay.snort.social wss://relay.nostr.band
wss://nostr.wine wss://relay.current.fyi
wss://eden.nostr.land wss://nostr-pub.wellorder.net
wss://relay.nostr.info wss://nostr.fmt.wiz.biz
Events use BIP-340 Schnorr signatures over secp256k1 for relay acceptance. Timestamps are jittered ±30min to prevent timing correlation while avoiding the created_at:0 fingerprint. Relay rotation prevents traffic profiling. DNS resolution is forced through the SOCKS5 proxy to prevent ISP-level relay hostname leakage.
| Property | Value |
|---|---|
| Library | info.guardianproject:tor-android:0.4.9.11 |
| Proxy | SOCKS5 on 127.0.0.1:9050 |
| Control Port | 127.0.0.1:9051 (circuit management) |
| Default | OFF (clearnet). User toggles ON in Settings |
| Circuit Viewer | Shows Guard → Middle → Exit nodes in real-time |
| New Identity | Sends SIGNAL NEWNYM to rotate all 3 circuit nodes |
| DNS Leak Prevention | Custom OkHttp Dns forces hostname resolution through SOCKS5 |
| Source | Guardian Project (BSD 3-Clause) |
When Tor is enabled, ALL relay WebSocket traffic routes through 3 encrypted hops across the globe. The Nostr relay sees the Exit Node's IP, never the user's real IP.
| Transport | Range | Throughput | Use Case |
|---|---|---|---|
BLE Mesh (AcroNetBLERouter) |
~100m | ~2 Mbps | Routing table broadcast, peer discovery |
Wi-Fi Aware NAN (AcroNetWifiAwareNode) |
~100m | ~50 Mbps | Text messaging without internet |
LAN P2P Swarm (AcroNetWebRTCMesh) |
Same subnet | ~150 Mbps | Large file transfer (1MB chunks, AES-256-GCM per chunk) |
MeshSync (AcroNetMeshSync) |
LAN / Bluetooth | Variable | Multi-device pairing via QR → encrypted TCP/BT tunnel |
AcroNetTrafficShaper pads all outgoing packets to 1316 bytes (MPEG Transport Stream segment size: 188 × 7) and regularizes timing to 33ms intervals (30fps video cadence ± 5ms jitter). To a deep packet inspector, AcroNet traffic is indistinguishable from an HLS/DASH video stream.
| Module | Function |
|---|---|
AcroNetForensicDecoy |
Seeds fake Binance API keys, 150+ trade orders, portfolio JSON, WebSocket logs, and TOTP secrets on first launch |
AcroNetDecoyGenerator |
Generates benign decoy chat conversations with realistic human typing cadence and Indian university context |
AcroNetPinRouter |
Dual-PIN engine with constant-time (350ms) execution; forensically indistinguishable real vs. decoy unlock path |
AcroNetLSBEncoder |
Least Significant Bit steganography — hides AES-256-GCM-encrypted payloads in image pixel data (2 bits/channel, 3× redundancy, survives JPEG ≥ 85%) |
AcroNetTrafficShaper |
MPEG-TS packet mimicry to defeat DPI (Deep Packet Inspection) |
AcroNetRetractionProtocol |
Cryptographic delete: NIP-09 broadcast → DB row deletion → RandomAccessFile zero-fill on NAND → WAL/SHM purge |
AcroNetZeroFill |
Multi-pass random noise overwrite for file-level erasure |
AcroNetMediaSanitizer |
Strips EXIF, GPS, camera model, and all metadata from captured/received media |
AcroNetVanishMode |
Ephemeral mode: FLAG_SECURE (blocks screenshots), timed RAM eviction, byte-array zero-fill on message expiry |
| Feature | Description |
|---|---|
| Live Chart | Real-time Binance kline data via WebSocket combined stream; candlestick rendering via MPAndroidChart |
| Order Book | Simulated bid/ask depth feed derived from live spread data |
| Trade Execution | Buy/Sell panels with mock balance management via SharedPreferences |
| Portfolio View | Real-time P&L tracking based on mock holdings and live prices |
| Settings | Notification preferences, biometric lock, 2FA toggle, API key configuration, cache clearing, support contact, Terms of Service, Privacy Policy |
| Feature | Description |
|---|---|
| Dashboard | Contact list with unread badges, last message preview, online/offline status |
| Chat | Full E2EE messaging with sent/received/system message types, swipe-to-reply (spring physics), typing indicators |
| VanishMode | Timed self-destruct (30s default), FLAG_SECURE screenshot block, RAM byte-array zero-fill |
| QR Scanner | Portrait-locked camera scanner for contact exchange (ZXing) |
| Profile | Avatar glyph selector, neon aura color picker, hex public key display, key regeneration with double-warning |
| Nostr Status | Live connection indicator: 🟢 CONNECTED / 🟡 CONNECTING / 🔴 OFFLINE |
| Search | Real-time contact filtering on the dashboard |
| Starred | Bookmarked messages view |
| Provenance | Anti-deepfake media verification — ECDSA batch signing with chain-of-custody tracking |
AcroNet_Source/app/src/main/java/com/acronet/
│
├── core/ # Foundation
│ ├── AcroNetGenesis.kt # Cryptographic authorship watermark & AAD lock
│ ├── AcroNetAudioRecorder.kt # Secure audio capture
│ └── IAudioMatrix.kt # Audio interface contract
│
├── crypto/ # Cryptographic Engine (13 modules)
│ ├── KnoxVaultSimulator.kt # V13: StrongBox/TEE hardware-backed keys + APK tamper detection
│ ├── AcroNetIdentityManager.kt # BIP39 → PBKDF2 → HMAC-SHA512 → key derivation
│ ├── AcroNetKeyExchange.kt # X25519 + ML-KEM-1024 hybrid handshake
│ ├── AcroNetMessageCipher.kt # AES-256-GCM encrypt/decrypt with Genesis AAD
│ ├── AcroNetSecureDatabase.kt # SQLCipher vault (encrypted persistence)
│ ├── AcroNetDatabaseKeyManager.kt # 24-hour rolling key rotation
│ ├── AcroNetSessionKeyManager.kt # Handshake lifecycle & session key cache
│ ├── AcroNetContactStore.kt # Encrypted contact storage
│ ├── AcroNetIdentityStore.kt # Persistent identity store
│ ├── AcroNetGroupEngine.kt # Group messaging key distribution
│ ├── AcroNetShardManager.kt # Key sharding for distributed backup
│ ├── AcroNetVanishMode.kt # Ephemeral messaging & RAM eviction
│ └── SecureMessage.kt # Message data model
│
├── network/ # Transport (7 modules)
│ ├── EmbeddedTorService.kt # V13: Built-in Tor daemon (SOCKS5 + circuit viewer)
│ ├── AcroNetTorTransport.kt # V13: Tor proxy + DNS leak prevention
│ ├── AcroNetNostrRelay.kt # NIP-01 WebSocket relay client
│ ├── AcroNetMessageRouter.kt # Central routing: UI ↔ Cipher ↔ Relay
│ ├── AcroNetWebRTCMesh.kt # LAN P2P swarm transfer (1MB chunks)
│ ├── AcroNetVoiceShard.kt # Encrypted voice message transport
│ └── AcroNetLocalDaemonBridge.kt # Desktop client bridge
│
├── mesh/ # Zero-Internet Transport (2 modules)
│ ├── AcroNetBLERouter.kt # BLE advertisement mesh router
│ └── AcroNetWifiAwareNode.kt # Wi-Fi Aware NAN node
│
├── forensics/ # Anti-Forensic Suite (4 modules)
│ ├── AcroNetForensicDecoy.kt # Trading data fabrication engine
│ ├── AcroNetDecoyGenerator.kt # Decoy chat conversation generator
│ ├── AcroNetPinRouter.kt # Dual-PIN plausible deniability
│ └── AcroNetMediaSanitizer.kt # EXIF/GPS metadata strip
│
├── stealth/ # Stealth Operations (2 modules)
│ ├── AcroNetZeroFill.kt # Multi-pass file erasure
│ └── EnvironmentGuard.kt # V13: Continuous root detection + KernelSU/LSPosed/BusyBox
│
├── steganography/ # Covert Communication (2 modules)
│ ├── AcroNetLSBEncoder.kt # Image steganography (2-bit LSB, 3× redundancy)
│ └── AcroNetTrafficShaper.kt # MPEG-TS packet mimicry
│
├── provenance/ # Media Authentication (2 modules)
│ ├── AcroNetMediaSigner.kt # ECDSA batch verification & deepfake scoring
│ └── AcroNetSecureCamera.kt # Hardware-backed capture signing
│
├── system/ # System Services (2 modules)
│ ├── AcroNetRetractionProtocol.kt # Cryptographic true delete
│ └── AcroNetMeshSync.kt # Multi-device pairing engine
│
└── ui/ # User Interface (10 modules)
├── AcroNetDecoyActivity.kt # MarketPulse decoy launcher
├── AcroNetMainActivity.kt # Secure vault activity
├── AcroNetAuthGate.kt # PIN / Biometric gate fragment
├── AcroNetDashboardFragment.kt # Contact list dashboard
├── AcroNetChatFragment.kt # E2EE chat fragment
├── AcroNetProfileFragment.kt # Identity & key management
├── AcroNetSettingsFragment.kt # Security settings
├── AcroNetTransportSettings.kt # Nostr relay configuration
├── MarketPulseLiveSocket.kt # Binance WebSocket client
├── MarketPulseDataGenerator.kt # GBM volatility simulator
└── ui-components/ # Web Design System & Component Showcase
└── index.html # Obsidian Dark design system — buttons, inputs,
# cards, badges, toggles, alerts, chat bubbles,
# avatars, stats dashboard, progress bars,
# skeleton loaders, tooltips, animations
Total: 44 Kotlin source files across 10 packages + 1 web component showcase.
| Category | Technology | Version | Purpose |
|---|---|---|---|
| Language | Kotlin | JDK 17 | Primary development language |
| Build | Gradle (Kotlin DSL) | 8.0+ | Build system |
| Min SDK | Android API 26 | (Oreo 8.0) | Minimum supported Android version |
| Target SDK | Android API 35 | (Android 16) | Compile and target SDK |
| PQ Crypto | Bouncy Castle | 1.80 | X25519, ML-KEM-1024, HKDF-SHA256, PBKDF2-SHA512 |
| Database | SQLCipher | 4.5.4 | AES-256 encrypted SQLite |
| Networking | OkHttp | 4.12.0 | HTTP/WebSocket client |
| Serialization | Gson | 2.10.1 | JSON parsing |
| QR Codes | ZXing Embedded | 4.3.0 | QR generation & scanning |
| Charting | MPAndroidChart | 3.1.0 | Candlestick, line, and bar charts |
| Concurrency | Kotlin Coroutines | 1.8.1 | Async programming |
| Security | AndroidX Security-Crypto | 1.1.0-alpha06 | EncryptedSharedPreferences |
| Biometrics | AndroidX Biometric | 1.1.0 | Fingerprint / face unlock |
| Animation | DynamicAnimation | 1.0.0 | Spring-physics swipe-to-reply |
| Background | WorkManager | 2.10.0 | Background sync tasks |
| WebSocket | Java-WebSocket | 1.5.3 | NIP-01 Nostr relay transport |
| Tor | tor-android | 0.4.9.11 | Embedded Tor SOCKS5 proxy (Guardian Project) |
| Tor Control | jtorctl | 0.4.5.7 | Tor control port management (circuit viewer) |
| View Binding | AndroidX ViewBinding | — | Type-safe view references |
- Android SDK (API 26 – 35)
- JDK 17
- Gradle 8.0+
- Android Studio Koala (2024.1+) recommended
git clone https://github.com/acro777x/AcroNet.git
cd AcroNet/AcroNet_SourceWindows:
.\gradlew.bat assembleDebugmacOS / Linux:
./gradlew assembleDebugapp/build/outputs/apk/debug/app-debug.apk (~37 MB)
adb install app/build/outputs/apk/debug/app-debug.apk- Open MarketPulse from your app drawer
- The app displays a live cryptocurrency trading interface
- Triple-tap the "MarketPulse" title in the header bar
- The UI shatters → PIN/Biometric gate appears
- Authenticate → AcroNet Secure Dashboard loads
Pre-built APK: A signed release APK is available at the repository root as
app-release.apk(V12 Camouflage Hardening, R8 minified).
Screenshots are not committed to the repository (binary bloat). Build and run the debug APK to view the MarketPulse decoy surface and the AcroNet vault UI.
| Version | Codename | Date | Key Changes |
|---|---|---|---|
| V14.1 | Traffic Shield | 2026-07-24 | Anti-Traffic-Analysis: MarketPulseTrafficShield (4096B message padding, cover traffic every 30-120s, 0-5s send jitter). Private Information Retrieval: MarketPulsePIR (blind relay subscription, local-only filtering, 3 modes). Post-Quantum Upgrade: Kyber-512 → ML-KEM-1024 (NIST FIPS 203 Level 5). BouncyCastle 1.77 → 1.80. Self-Audit: 5 bugs found and fixed in V14.1 code (S-01 to S-05). Crypto config verified against NIST/RFC standards. |
| V14.0 | Quantum Zenith | 2026-07-23 | ML-KEM-1024 Upgrade: Post-quantum key exchange upgraded from Kyber-512 (Level 1) to ML-KEM-1024 (NIST FIPS 203 Level 5 = AES-256 equivalent). BouncyCastle dependency bumped to 1.80 (org.bouncycastle.pqc.crypto.mlkem). Full alignment of PQ and symmetric security parameters. |
| V13.2 | Security Hardening | 2026-07-22 | Aristotle audit remediation — 13 fixes: C-04 PIN timing oracle (contentEquals→MessageDigest.isEqual), H-01 processedIds race (ConcurrentHashMap.newKeySet), H-02 session key zeroing post-SecretKeySpec, H-05 orphan reconnect scope (single managed Job), H-06 VoiceShard pcmLen bounds check (OOM prevention), H-07 empty API key daemon bypass (min 16 chars), L-05 cachedUserSecret zeroing in destroyAll, L-06 mDNS service type disguised (_http._tcp.), M-05 VanishMode CopyOnWriteArrayList, M-12 EnvironmentGuard file-read (no shell exec zombie). UI Components Showcase added by contributor: Obsidian Dark design system with 15+ component categories (buttons, inputs, cards, chat bubbles, toggles, status indicators, alerts, avatars, progress bars, stats, skeleton loaders, tooltips). |
| V13.1 | Aristotle Audit | 2026-07-17 | Tor Fixed: EmbeddedTorService rewritten — CookieAuthentication replaces broken hashPassword() (returned empty string → invalid torrc → Tor crash). Stale lock cleanup, bootstrap timeout (60s), LD_LIBRARY_PATH injection, detailed error display in UI. Knox Vault hardened: APK cert hash moved from plain SharedPreferences → EncryptedSharedPreferences (Aristotle Phase 2 finding: root user could inject new hash → bypass tamper detection). tor-android v0.4.8.16 AAR bundled locally (bypasses JDK SSL cert issue). Full Aristotle First Principles security audit: 8 assumptions deconstructed, 9 irreducible truths extracted, 3 reconstruction approaches generated. |
| V13.0 | Embedded Tor | 2026-07-16 | Embedded Tor (Guardian Project tor-android): built-in SOCKS5 proxy, circuit viewer (Guard→Middle→Exit), new-identity rotation, no external Orbot needed. Knox Vault Simulator: StrongBox hardware-backed AES-256 keys + APK signing certificate tamper detection. Continuous Root Lockout: 60s periodic root scan (Magisk/KernelSU/BusyBox/LSPosed); root detected = permanent trading-mode lockout. Network Security Config: rejects user-installed CA certificates (corporate MITM defense). Backup hardening: all domains excluded from Google Drive backup. Security audit: 16 checks passed, 8 vulnerabilities fixed. Default Tor OFF — relay connects clearnet on first launch; user toggles Tor ON in Settings for anonymity. |
| V12.1 | First Principles | 2026-07-11 | Candlestick chart fix: User-Agent okhttp/4.12.0 (was empty → Binance throttling), real 24h change % via REST ticker, negative price clamp on seed shift, WS error logging. Chat: sender identity reads display alias from EncryptedPrefs (was hardcoded "Acro"). Upload: camera/gallery/file now send full EXIF-stripped base64 data (was truncated to 500 chars). Share Identity wired via long-press on profile card/identity label. Close frame emptied. Exponential reconnect backoff (5s→5min cap). |
| V12.0 | Camouflage Hardening | 2026-07-10 | Anti-analysis hardening: DNS leak fix (SOCKS-level resolution), SOCKS5 handshake verification, EnvironmentGuard (12-check emulator/Frida/debugger/root detection), wire fingerprint removal (UA, close frame, timestamps, sub IDs), QR payload injection hardening (6 validations), exponential reconnect backoff, [DECRYPTION FAILED] sentinel removal, identity-leaking UI string neutralization, OBSIDIAN FORGE comment strip. 17 vulnerabilities fixed. |
| V11.0 | Aristotle Hardening | 2026-07-02 | Security-audit V11 remediation: all 12 CRITICAL + full HIGH tier fixed. Incoming Nostr signature verification, fail-closed signing, per-user loopback key + dynamic AAD, dummy-TLS-pin removal, encrypted LAN transfer with HMAC peer-auth + size bounds, BLE MAC-leak removal + shared PSK, WAL-aware secure retraction, JIT-safe key zeroing, replay window, view-scoped coroutines, EncryptedSharedPreferences for all secrets |
| V10.2 | The Complete Weapon | 2026-06-26 | Profile fragment with avatar glyph & aura selector, live order book & trade ticker, WebSocket auto-reconnect loop, node search filter, decoy exchange panels |
| V10.1 | The Complete Weapon | 2026-06-24 | Portrait-locked QR scanner (PortraitCaptureActivity), MPAndroidChart Y-axis auto-scaling fix, settings layout spacing cleanup, premium chat UI polish |
| V10.0 | The Complete Weapon | 2026-06-22 | Full UI migration to Stitch Obsidian Dark design system, BIP-340 Schnorr signatures for Nostr event publishing, Ghost Chat branding purge, real QR generation/scanning |
| V9.0 | Aristotelian Synthesis | 2026-04-26 | BIP39 identity manager, real X25519 + ML-KEM-1024 key exchange, AcroNetNostrRelay NIP-01 transport, AcroNetPinRouter dual-PIN system, EncryptedSharedPreferences hardening |
| V8.5 | Apex Synthesis | 2026-04-25 | Legacy ghost.app package purge, logo rebrand, dashboard consolidation |
| V8.0 | Apex Covenant | 2026-04-22 | Dashboard fragment, VanishMode RAM eviction, AcroNetMediaSanitizer, 200-candle GBM chart simulator, AcroNetForensicDecoy data seeding |
| V7.0 | Obsidian Forge | 2026-04-21 | Initial release: speakeasy entrance, shatter animation, AES-256-GCM encryption, SQLCipher database, Genesis AAD watermark |
| V6.0 | Visual Vault | 2026-04-20 | Shatter transition physics, PRAGMA secure_delete, visual overhaul |
| V5.0 | Apex / Epsilon | 2026-04-19 | Supreme Auditor test suite (12 tests), mesh drop-off validation, BLE dedup, provenance tamper detection, PIN timing equalization |
| V5.0 | Apex / Delta | 2026-04-19 | LSB image steganography (3× redundancy, JPEG survival), traffic shaper (MPEG-TS mimicry, 30fps cadence) |
| V5.0 | Apex / Gamma | 2026-04-19 | Dual-database PIN router (timing-equalized, cold boot defense), decoy chat generator |
| V5.0 | Apex / Beta | 2026-04-19 | Hardware-backed anti-deepfake provenance, TEE P-256 ECDSA signing, byte-level tamper detection |
┌─────────────────────────────────────────────────────────────────┐
│ THREAT MODEL │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Physical Device Seizure │
│ ├─ Forensic decoy data passes as legit trading app │
│ ├─ Dual-PIN: real vs decoy DB (timing-equalized) │
│ ├─ SQLCipher encrypted database (24h rolling key) │
│ ├─ 3-attempt wipe: full key destruction │
│ └─ NAND zero-fill on message retraction │
│ │
│ Network Surveillance (DPI / ISP) │
│ ├─ Embedded Tor: 3-hop onion routing (no Orbot needed) │
│ ├─ Traffic shaped to MPEG-TS video stream profile │
│ ├─ Only visible traffic: HTTPS to api.binance.com │
│ ├─ Nostr relay rotation prevents traffic fingerprinting │
│ ├─ DNS forced through SOCKS5 (ISP sees zero relay hostnames) │
│ ├─ User-installed CA certificates rejected (MITM defense) │
│ ├─ OkHttp User-Agent matches stock Android clients │
│ └─ BLE/NAN mesh for zero-internet communication │
│ │
│ Dynamic Analysis / Sandbox Evasion │
│ ├─ EnvironmentGuard: 20+ check emulator/Frida/root detection │
│ ├─ Continuous root check every 60s (Magisk/KernelSU/LSPosed) │
│ ├─ Root detected → permanent lockout to trading decoy mode │
│ ├─ APK tamper detection: signing cert hash verification │
│ ├─ Knox Vault: StrongBox/TEE hardware-backed key storage │
│ ├─ Sandbox detected → vault gate blocked, decoy-only mode │
│ ├─ No crypto-revealing strings in UI (X25519/Ratchet removed) │
│ ├─ No forensic sentinel strings in memory heap │
│ └─ Behavioral mimicry: first 60s = stock trading ops only │
│ │
│ Quantum Computing Threat │
│ ├─ ML-KEM-1024 (NIST FIPS 203 Level 5) post-quantum KEM │
│ ├─ X25519 classical ECDH as redundant layer │
│ ├─ HKDF-SHA256 V3 versioned key derivation │
│ └─ HKDF combination: either surviving = session key safe │
│ │
│ Source Code Theft │
│ ├─ Genesis block: SHA-256(author identity) bound as AAD │
│ ├─ Modify author string → all databases permanently fail │
│ └─ ProGuard minification on release builds │
│ │
│ Screenshot / Screen Recording │
│ ├─ FLAG_SECURE blocks OS-level capture │
│ └─ VanishMode enforces ephemeral viewing │
│ │
│ Media Deepfakes │
│ ├─ ECDSA provenance chain on all captured media │
│ ├─ Batch verification with deepfake probability scoring │
│ └─ FORGED overlay rendered on failed verification │
│ │
└─────────────────────────────────────────────────────────────────┘
V11 ("Aristotle Hardening") closes every CRITICAL and HIGH finding from the
internal V11 security audit (security_audit_v11.md).
Authentication (was theater → now enforced)
- Incoming Nostr events are BIP-340 Schnorr signature-verified before decryption; unverified events are dropped.
- Signing is fail-closed — a signing failure returns
nulland aborts publish (no dummy signatures). - Event freshness window (±1h) on top of dedup blocks replay after cache flush.
- Proven by 6 JVM unit tests (
MessageRouterSignatureTest): valid sig accepted; forged / tampered / empty / wrong-pubkey rejected; null-key yields no signature.
Key management
- Loopback session keys mix a per-install user secret into the HKDF salt (no longer derivable from room name alone).
- Per-message dynamic AAD
SHA-256(IV ‖ signature)replaces the static Genesis AAD. - Double Ratchet and TreeKEM use domain-separated HKDF salts; removed group members get fresh random leaves (no epoch-key recovery).
- Real key-array zeroing; JIT-safe wipes; zeroable DB key
CharArray.
Transport & mesh
- Dummy TLS certificate pins removed (standard CA validation).
- LAN file transfer: encrypted manifest, HMAC nonce peer-authentication, strict size/chunk bounds (OOM guard).
- BLE routing tables no longer broadcast hardware MAC addresses; shared-PSK routing key; hop-count cap.
Forensics & storage
- All real secrets moved to
EncryptedSharedPreferences. - Secure retraction streams the DB (no full-file load) and truncates the WAL.
FLAG_SECUREon the decoy activity; expanded EXIF strip; steganography/traffic-shaper fingerprint hardening.
All CRITICAL, HIGH, MEDIUM, and LOW audit items from V11+V12 are now closed.
V12 ("Camouflage Hardening") makes AcroNet undetectable by dynamic analysis sandboxes:
Wire-Level Invisibility
- DNS leak prevention: custom
Dnsoverride forces all hostname resolution through SOCKS5/Tor proxy. ISP sees zero relay domain queries. - SOCKS5 identity verification: real handshake check (not just port probe) prevents trusting rogue SOCKS proxies.
- User-Agent set to
okhttp/4.12.0(blends with millions of Android apps, not unique empty string). created_attimestamps jittered ±30min (avoidscreated_at:0fingerprint unique to AcroNet).- Subscription IDs changed from
sub_prefix to pure random hex. - WebSocket close frame emptied (no
"MarketPulse shutdown"identity leak). - Exponential reconnect backoff (5s→300s cap, resets on success).
Anti-Sandbox (EnvironmentGuard.kt)
- 12-check emulator detection (Build fingerprint, HARDWARE, MODEL, MANUFACTURER, QEMU files, /proc/cpuinfo).
- Frida detection: port 27042 scan +
/proc/self/mapsagent library scan. - Debugger detection:
Debug.isDebuggerConnected()+ TracerPid in/proc/self/status. - Root detection: su binaries, Magisk, Superuser.apk, test-keys build tags.
- Xposed/Substrate framework class probing.
- Threshold ≥3 triggers = hostile. Vault gate blocks, only decoy shown.
- Sensor check: emulators lack accelerometer/gyroscope.
QR Code Hardening
- Max payload length: 256 chars.
- Pubkey: exactly 64 hex chars validated.
- IP: strict IPv4 regex (no hostname injection).
- Port: 1024-65535 range (no privileged ports, no overflow).
- Transport: known enum values only.
String Forensics
[DECRYPTION FAILED]sentinel replaced with empty string (invisible in heap dumps).OBSIDIAN FORGEcodename stripped from build.gradle.kts.X25519 handshake/Double Ratchet/identity keypairremoved from all UI strings.- All toasts and error messages neutralized to generic text.
This software is provided "as is", without warranty of any kind, express or implied. AcroNet is engineered for extreme privacy research and education. The developers assume no liability for misuse. Use responsibly and in compliance with applicable laws.
Engineered by Acro — Acro Void
The Genesis Block is immutable.
