Database at Rest

SQLCipher
AlgorithmAES-256 (SQLCipher native)
KeyDevice-unique UUID, generated on first launch
Key StorageEncryptedSharedPreferences (hardware-backed MasterKey)
Backupandroid:allowBackup="false"

SMS in Transit

AES-256-GCM
AlgorithmAES/GCM/NoPadding
Key Size256 bits
Key DerivationPBKDF2-HMAC-SHA256 (100K iterations)
Nonce12 bytes (SecureRandom per encryption)
Auth Tag128 bits
OutputBase64(nonce + ciphertext + tag) — fits 1 SMS

PIN Storage

PBKDF2
AlgorithmPBKDF2-HMAC-SHA256
Iterations100,000
Salt16 bytes (SecureRandom, unique per user)
Output256-bit hash (Base64 stored)
VerificationConstant-time XOR comparison

Config at Rest

EncryptedSharedPreferences
Master KeyAES-256-GCM (Android Keystore backed)
Key EncryptionAES-256-SIV
Value EncryptionAES-256-GCM
ProtectedDHIS2 creds, Twilio tokens, session data, DB passphrase

Patient ID

Privacy-Preserving
Format8-char base28 (e.g., KFMT-4WRN)
Entropy40 bits SecureRandom
AlphabetABCDEFGHJKMNPQRTUVWXYZ234567 (no confusable chars)
DesignNOT derived from patient demographics

P2P Sync Authentication

Nearby Connections
Auth6-digit code displayed on both devices
VerificationUser must visually verify before accepting
TransportBluetooth link-layer encryption
StrategyP2P_CLUSTER via Android Nearby Connections

Cryptographic summary

Layer Algorithm Key Size Purpose
Database at Rest AES-256 (SQLCipher) 256-bit Full-database encryption of all patient records
SMS in Transit AES/GCM/NoPadding 256-bit End-to-end encrypted portable health records
PIN Storage PBKDF2-HMAC-SHA256 256-bit hash Secure user authentication credential storage
Config at Rest AES-256-SIV + AES-256-GCM 256-bit Encrypted API tokens, credentials, session data
Patient ID SecureRandom 40-bit entropy Privacy-preserving patient identification
P2P Sync BT link-layer + visual auth N/A Authenticated device-to-device data exchange

Role-based access control

Six clinical roles with granular permissions. Shared devices stay secure.

Role Register Patients Triage Consult Dispense Meds Manage Users View Dashboard Sync Devices Edit Settings
ADMIN ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
DOCTOR ✓ ✓ ✓ ✓ — ✓ ✓ —
NURSE ✓ ✓ — — — ✓ ✓ —
PHARMACIST — — — ✓ — ✓ — —
CHW ✓ ✓ — — — — ✓ —
REGISTRATION_CLERK ✓ — — — — — — —
4-6
PIN Length (digits)
5 min
Auto-Lock
5
Max Failed Attempts
2 min
Lockout Duration

Complete audit trail

Every clinical and security action is logged with millisecond precision.

Authentication

  • LOGIN — successful session start with role
  • LOGOUT — explicit session end
  • FAILED_AUTH — incorrect PIN attempt
  • UNLOCK — screen unlock after auto-lock
  • LOCKOUT — 5 consecutive failures, 2-min lock

Clinical

  • CREATE_PATIENT — new patient registration
  • CREATE_ENCOUNTER — encounter finalized with data
  • DISPENSE — medication dispensed to patient

Administrative

  • SETTINGS_CHANGE — configuration modification
  • Old and new values stored in details JSON

Sync

  • SYNC — device-to-device sync event
  • Conflict count and records exchanged logged

Each record contains

Every audit entry captures a complete forensic context for compliance and incident response.

Who userId What action + details JSON When ms timestamp On what targetType + targetId 5 database indices

Built for compliance

🇿🇦
South Africa
POPIA
Active
🇪🇹
Ethiopia
DHIS2 v40
Ready
🇺🇸
United States
HIPAA 164.312
Planned
🇬🇧
United Kingdom
DCB0129, DTAC
Planned
🌍
Multi-country
FHIR R4 Interop
Built-in