Zero-Knowledge Security & SMS Declaration
Public technical specification of how SikaDNA (`com.sikadna.app`) handles Android `READ_SMS` and `RECEIVE_SMS` permissions strictly on-device.
Why On-Device SMS Parsing Is Essential in Ghana
In Ghana, Mobile Network Operators (MTN MoMo, Telecel Cash, AT Money) and local commercial banks do not offer consumer open-banking webhook APIs. Statutory transaction receipts and running account balances are delivered exclusively via institutional SMS headers. SikaDNA parses these receipts locally on the phone to compute real-time Safe-to-Spend and Net Worth.
3-Gate On-Device Security Pipeline
Gate 1: Personal Contact & Phone Number Rejection (LAW 2)
`isPersonalSender()` rejects all standard phone numbers (`+233...`, `024...`) and personal address-book contacts before inspection. Only verified institutional alphanumeric sender headers are evaluated.
Gate 2: OTP, PIN & 2FA Instant Drop
`isSensitiveAuthMessage()` immediately discards any message containing OTPs, verification codes, security tokens, or PINs in memory.
Gate 3: Payload Sanitization (`sanitizeSupabaseTransactionPayload`)
Before any row is synced to Supabase, `sms_body` is stripped from the network payload. Raw SMS bodies remain exclusively in on-device encrypted storage.