Legal · Security

Verifiable Beats Promised.

Last updated · May 29, 2026

Security work that you can verify beats security work that you can't. Diala is built so almost every layer is auditable from your own AWS account, and the parts that aren't have specific guarantees in writing.

Architecture

Diala runs on AWS in two layers:

  • The platform — the API, web dashboard, and image and voice pipelines — runs in our AWS account behind CloudFront, Lambda, and DynamoDB.
  • The boundary — Twilio for phone-number provisioning and call transport. All call audio is encrypted in transit.

Tenants are isolated at the data layer by a Cognito-derived USER#<sub> partition key on every DynamoDB item. There's no cross-tenant read path; queries that try resolve to zero rows, not "access denied," so a leaky client can't probe for other tenants' IDs.

Data in transit

  • TLS 1.2+ on every public endpoint (CloudFront, API Gateway, Twilio webhook).
  • Strict transport security with a 1-year max-age on the dashboard.
  • HSTS preload pending.

Data at rest

  • DynamoDB tables use AWS-managed KMS keys (alias/aws/dynamodb).
  • S3 buckets storing transcripts and recordings use SSE-KMS with a per-account CMK.
  • Bedrock invocations are stateless — input and output are not stored by AWS.
  • Polly synthesis is stateless — Polly does not retain the input text.

Authentication

  • End users: Amazon Cognito with email + password. MFA via TOTP is available; required on Enterprise plans. Tokens are short-lived JWTs (1h access, 30d refresh) bound to the user's tenant.
  • Service-to-service: AWS Signature V4 between Lambda and DynamoDB, IAM-scoped to per-resource policies.
  • Twilio webhook validation: every inbound webhook is verified with the Twilio request signature; unsigned or stale requests are rejected.

Authorization

  • Every API handler is wrapped in a guard that resolves the caller's Cognito sub from the verified JWT and uses it as the DynamoDB partition key. There is no "look up by ID" path that bypasses the tenant scope.
  • Admin actions in the dashboard require a fresh authentication (re-prompt within the last 5 minutes) before they're allowed to proceed.

Calls and transcripts

  • Audio is streamed through Twilio's encrypted media path. We do not store raw audio for inbound calls by default; the transcript is what's saved.
  • Transcripts can be encrypted with a customer-managed KMS key on request (Enterprise).
  • Retention is configurable per tenant (24h–365d, default 90d). Deletion is real — the DynamoDB item is removed, not flagged.

Network

  • All Lambda functions run in our managed VPC with egress restricted to the AWS endpoints they need plus Twilio's API.
  • No public-facing servers other than CloudFront and API Gateway.
  • Image-optimization Lambda has a separate, narrowly-scoped function URL.

Secrets management

  • AWS Secrets Manager holds Twilio API keys and the Bedrock model ID per stage.
  • Secrets are pulled at Lambda cold-start and cached for the lifetime of the execution environment. They never appear in environment variables or logs.
  • Rotation: Twilio keys rotate quarterly, Cognito client secrets every 90 days.

Logging and monitoring

  • CloudWatch logs are scrubbed at write-time: phone numbers, transcripts, and email addresses are replaced with redacted tokens before persistence.
  • Anomalous patterns (sudden spike in failed JWT verifications, repeated webhook signature mismatches) page on-call within 5 minutes.
  • Audit logs of every admin action are retained for 13 months and exposed in the dashboard.

People

  • All engineers with production access have hardware-key MFA on AWS, GitHub, and Google Workspace. No exceptions.
  • Production access is granted per-incident through AWS IAM Identity Center with a 1-hour expiry by default.
  • Background checks for engineers with prod access.

Vendor management

We use a small number of subprocessors and don't add to the list casually. The current set is on the Privacy page. Each is reviewed annually.

Compliance

  • SOC 2 Type II — audit in progress, report expected Q3 2026.
  • GDPR — see Privacy for the data rights mechanics.
  • HIPAA — not currently available. We'll publish a status update when we are.

Responsible disclosure

If you find a vulnerability, please email security@diala.ai with details and a proof-of-concept. We respond within one business day, acknowledge within three, and aim to fix within 30 days. We won't pursue researchers who follow this policy in good faith.

If the issue is severe, encrypt the report with our PGP key (fingerprint available on request) and mark it URGENT in the subject.

Status

Live status: status.diala.ai. Incident post-mortems are published within 14 days of resolution.