Skip to content

Security

Identity data deserves controls you can inspect.

Speedmap handles NIN, BVN, biometric and financial data on behalf of the businesses that use it. This page describes the controls that protect that data, stated as they are implemented, without borrowed badges.

AES-256-GCM at restTLS in transitMasked identifiersAudited PII revealNDPA certified

Data protection

Encrypted, hashed, masked, minimised.

The less identity data that exists in readable form, the less there is to lose. Speedmap is designed so that most of the system never sees an identifier in the clear.

AES-256-GCM at rest

Verification records are sealed with AES-256-GCM, a fresh random IV per record and an authentication tag. Envelopes are versioned with a key identifier, so keys rotate without re-encrypting history: new writes use the current key, retired keys stay readable.

Identifiers stored as keyed hashes

NIN, BVN, phone and account numbers are stored for search and duplicate detection as keyed HMAC-SHA256 hashes, not as plain values. A database read alone does not reveal an identifier.

Masked everywhere by default

Identifiers are masked in dashboard lists, logs, webhooks and MCP responses, for example *******2109. Names are masked in assertion responses.

Response shaping

Speedmap receives the full record and decides what leaves the platform. Assertion-tier accounts, webhooks, bulk results and the MCP server receive status and match, never the record.

Logs without secrets

Request logs redact identifiers, images and credentials. Headers are not logged and query values outside an allowlist are replaced before a URL is written.

Server-side provider calls

All calls to the NIMC channel and NIBSS happen on Speedmap servers. No provider credential reaches client-side code, and provider credentials are held as server-side secrets, never in source.

Access and accounts

Least privilege, with a record of every access.

Roles

Every organisation member has one role. Only owners, admins and analysts can reveal a full record, and every reveal is audited.

  • Owner

    Can do
    Everything: checks, record reveal, keys, webhooks, billing, team and settings
  • Admin

    Can do
    Everything an owner can do, for day-to-day administration
  • Developer

    Can do
    Run checks, manage API keys and webhooks. Cannot reveal full records
  • Analyst

    Can do
    Review checks and reveal full records for case work. Cannot change keys, billing or settings
  • Speedmap support

    Can do
    Read-only access when helping a customer. Never permitted to reveal a record

API keys shown once

Secret keys are stored only as SHA-256 hashes and displayed once at creation. Test and live keys are separate, and any key can be revoked instantly.

Passwords and sessions

Passwords are hashed with scrypt and a per-user salt. Dashboard sessions use httpOnly cookies that scripts cannot read, with CSRF protection on state-changing requests.

Audit log

Data-access events are written to an audit log: checks requested and resolved, full-record reveals, consent changes, key and member changes, and go-live decisions.

Platform integrity

Predictable under failure.

  • TLS in transit for every connection to the API, dashboard and providers.
  • Idempotency keys on verification requests: a retried request returns the original result instead of running, or billing, twice.
  • Reference before request. Each check is written with its reference_id before the provider is called, so a timeout never leaves a charged lookup without a retrievable result.
  • Signed webhooks using HMAC-SHA256 over the timestamp and body, so receivers can reject forged or replayed events.
  • Rate limiting per key and per session, with standard RateLimit headers.
  • Per-organisation entitlements enforced on every request: products and response tiers are enabled per customer after review.

Programme commitments

How we run security, not just build it.

Incident response

A documented incident response runbook, with notification to the Nigeria Data Protection Commission within 72 hours of becoming aware of a qualifying breach, as the NDPA requires, and to affected customers without undue delay.

Penetration testing

Independent penetration testing at least annually, with findings tracked to remediation.

Access review

Periodic review of staff and system access to production and to personal data, under least privilege.

Upstream diligence

Security observations about provider channels are raised formally with the provider. We share our control set and those notes with customers during procurement.

Responsible disclosure

Found a vulnerability? Tell us first.

We welcome reports from security researchers and will work with you in good faith.

Email security@speedmap.ng

Include a description of the issue, the steps to reproduce it, the affected URL or endpoint and any proof of concept. Use a test-mode account and test keys wherever possible.

Please do

  • Give us reasonable time to fix the issue before disclosure
  • Stop and report as soon as you encounter personal data
  • Keep the details confidential until we confirm a fix

Please don’t

  • Access, modify or keep data that is not yours
  • Run denial-of-service, spam or social-engineering tests
  • Test against live identity providers or real identities

Our security contact is also published at /.well-known/security.txt.

FAQ

Security questions.

See also Compliance and NDPA.

Does Speedmap hold SOC 2 or ISO 27001 certification?
No. Speedmap’s operating company is NDPA certified; we hold no SOC 2 or ISO 27001 certification today. We describe our controls on this page as they are implemented, and we will share more detail with customers under NDA during procurement.
Can our security team review Speedmap before we go live?
Yes. Contact sales to arrange a security review. We can walk through our control set, data flows, provider channels and the observations we have filed with upstream providers.
Where are NIN and BVN values visible?
Nowhere by default. Identifiers are masked in the dashboard, logs, webhooks and MCP responses, and stored for search only as keyed hashes. The full record is available only to permitted roles through an explicit reveal, which is written to the audit log.
Do provider credentials ever reach the browser?
No. Every call to the NIMC channel and NIBSS is made server-side. No provider credential, and no Speedmap secret key, is ever sent to client-side code.
How do I report a vulnerability?
Email security@speedmap.ng with a description, reproduction steps and any proof of concept. Please do not access data that is not yours, degrade the service or disclose the issue publicly before we have had a reasonable chance to fix it.
How Speedmap approaches NDPA compliance

Bring Speedmap to your security review.

Create an account, inspect the data flows yourself, and talk to us about a security review before you go live.