Skip to main content

Encryption

This page states what is encrypted, with which algorithm, so questionnaires can be answered without inferring controls from marketing language.

Short definition (citation-ready)​

Public Qefro surfaces terminate TLS. Secrets (Business Tool credentials, SDK signing secrets, channel tokens, Access Service auth) are stored with AES-256-GCM. Organization user passwords are bcrypt hashes. Session access tokens are HS256 JWTs; refresh tokens are HttpOnly cookies.

In transit​

SurfaceTransport
https://api.qefro.comTLS (HTTPS only for customers)
https://app.qefro.comTLS
Widget CDN https://cdn.qefro.com/widget.jsTLS
Tool / SDK egress from QefroHTTPS required — HTTP tool URLs are rejected (Network & egress)
WhatsApp Cloud API / RazorpayProvider HTTPS + signature verification

Private / VPC-style deployments terminate TLS according to the Enterprise packaging — confirm with Sales.

At rest — secrets (AES-256-GCM)​

Application-level encryption for credentials uses AES-256-GCM:

  • Key from ENCRYPTION_KEY (minimum 32 bytes; first 32 bytes used as the key)
  • Random 12-byte nonce per encryption, prepended to ciphertext
  • Combined nonce + ciphertext stored as Base64

This path encrypts (among others):

  • Business Tool secrets
  • External SDK Connection signing secrets
  • WhatsApp / channel tokens
  • Customer Access Service API auth
  • Enterprise identity client secrets and IdP refresh tokens (when that subsystem is enabled)

Plaintext is decrypted only for egress (tool call, /qefro sign, or provider API). Identity and tool loggers are designed not to echo these values.

Passwords​

Admin Console, Internal Portal, and partner passwords are stored as bcrypt hashes (cost factor 10). Qefro does not store customer passwords; those remain in your Customer Access Service.

Tokens​

TokenAlgorithm / storage
User / widget access JWTHS256 (jsonwebtoken default header), secret from JWT_SECRET (must be ≥ 32 bytes; placeholders rejected at boot)
Access JWT lifetimeDefault 24 hours (JWT_EXPIRY_HOURS)
Refresh tokenOpaque session token in HttpOnly cookie qefro_refresh (30-day max-age, SameSite=Lax, Secure in production)
/qefro invokeHMAC-SHA256 hex digest, v1= prefix — Authentication
Marketplace packageEd25519 over id|version|checksum — Application security

What encryption is not​

  • Chat PII masking is regex redaction, not encryption — Data handling
  • Widget tokens are not secret
  • Document bytes served to authorized viewers use a restrictive Content-Security-Policy (default-src 'none'; sandbox; …) to prevent script execution; that is containment, not encryption

FAQ​

Do you use AES-256?
Yes for stored secrets: AES-256-GCM with a random nonce. Confirm disk/backup encryption with Sales.
Are JWTs RSA/ECDSA?
Tenant access tokens are HS256 (HMAC). Inbound IdP tokens for enterprise identity, when enabled, may validate RS256/RS384/RS512 from the issuer JWKS. SSO for the Admin Console remains a roadmap item.
Can we bring our own KMS?
Hosted cloud uses Qefro-managed ENCRYPTION_KEY. Enterprise private deploy can follow your secret manager — discuss with Sales.