Executive summary
SNT Chat is a private messaging beta (Android V1)
built around @username, a public
Trust Center, and an end-to-end
encryption roadmap aligned with public standards (Signal
Protocol, AES-256-GCM, X25519).
This whitepaper describes the intended implementation and
honest product status for version 1.0.0.
Missing items (full E2EE on every flow, iOS App Store, external audit)
are listed explicitly.
| Pillar |
Beta V1 / roadmap |
| Messaging |
Chats, friend requests, @username, Security Center |
| Message encryption |
Double Ratchet (Signal), progressive rollout |
| Attachments |
Client-side encryption before upload |
| Transport |
TLS 1.3 (HTTPS) |
| Identity |
Cloud authentication + SNT ID |
| Strong auth |
TOTP 2FA, passkeys (Android), OAuth |
| Contact verification |
Safety numbers, QR scan |
| Transparency |
Trust Center, diagrams, service status |
| GDPR |
Export, deletion, public policy |
| App attestation |
Device integrity checks |
1. Introduction and scope
1.1 Service purpose
SNT Chat lets a user:
- Chat privately with contacts identified by
@username;
- Control public profile and friend requests;
- Verify a contact (safety number, QR);
- Read public security documentation and service status;
- Receive push alerts without exposing message bodies
in the push notification channel.
SNT Chat is not a generic unlimited cloud backup
app: the cloud holds account data, chat metadata, and encrypted
attachments, not a general-purpose drive.
1.2 Document scope v1.0.0
Included in the target Android beta:
- Mobile app, production flavor;
- Personal signup:
@username, email, password, device
PIN;
- Email, Google, Facebook, GitHub auth (platform-dependent);
- WebAuthn passkeys on Android;
- TOTP 2FA + recovery codes;
- Trust Center (
sntchat.com/trust) and public
whitepaper;
- Generic push notifications (no message body in payload);
@username reservation via dedicated cloud
database.
Excluded or in progress (publicly stated):
- End-to-end encryption on 100% of production
messages;
- iOS app / Apple Sign-In on store;
- Independent security audit (post-beta goal);
- ISO 27001 / SOC 2 certifications;
- Paid bug bounty (preparation).
1.3 Design principles
- Zero-knowledge (goal): the backend must not read
message content or client-encrypted files.
- Defense in depth: TLS, strict cloud access rules,
app attestation, short-lived signed URLs.
- Transparency: this document, Trust pages,
changelog, automated status.
- Minimization: collect only metadata required for
the service.
2. Threat model
2.1 Considered adversaries
| Adversary |
Capability |
Mitigation |
| Malicious operator |
Cloud DB, object storage, logs access |
Client encryption, no private keys on server |
| Network attacker (MITM) |
HTTPS interception |
TLS 1.3, OS stacks |
| Compromised cloud account |
Cloud rules read |
UID isolation, no cross-user access |
| Credential phishing |
Email / password theft |
Passkeys, TOTP 2FA |
| Device malware |
Memory / key read |
PIN/biometric lock, E2EE model limits |
| Contact impersonation |
Wrong person |
Safety numbers, QR, Security Center |
| Unauthorized client (script) |
API without app |
App attestation (device integrity, etc.) |
2.2 Explicitly out of scope
- Recovery if recovery factors and device lock are lost together;
- Rooted device / compromised OS at boot;
- Full post-quantum resistance (X25519 + ML-KEM hybrid roadmap).
3. System architecture
3.1 Overview
[Android / iOS device]
│ Mobile UI · local crypto / chat engines
│ Message & attachment encryption (progressive E2EE)
▼
[Cloud authentication] identity, OAuth, passkeys
[Cloud database] conversations, messages, profiles (UID-scoped)
[Backend services] business logic, invites, GDPR, push
[Encrypted object storage] encrypted blobs (attachments)
[Push notifications] generic push (no message body)
[Secure site (HTTPS)] site · Trust Center · docs · .well-known
3.2 Components
| Component |
Role |
Plaintext message content? |
| Mobile app |
Encryption, UI, sync |
Yes (on unlocked device) |
| Cloud authentication |
Sessions, OAuth |
No |
| Cloud database |
Metadata, envelopes |
No (per E2EE phase) |
| Backend services |
Orchestration, signed URLs, push |
No |
| Object storage |
Encrypted object storage |
No |
| Push notifications |
Alerts |
No (generic title) |
3.3 Regions
- Backend services: europe-west1 where
applicable;
- Cloud database: Europe region per project configuration;
- Object storage: EU or US region per account / compliance
policy.
4. Message cryptography
4.1 Selected standards
Aligned with SNT Crypto Engine (no non-standard
“marketing” algorithms):
- AES-256-GCM: authenticated symmetric
encryption;
- ChaCha20-Poly1305: planned per context;
- X25519, Ed25519, HKDF: key exchange and
signatures;
- Double Ratchet (Signal): messaging sessions.
Documented post-quantum roadmap: X25519 + ML-KEM-768
hybrid, ML-DSA / SLH-DSA signatures.
4.2 Beta status (transparency)
E2EE rollout is progressive: some phases may carry
envelopes or metadata in cleartext on the server during migration. The
Trust Center (/trust/visibility) describes what SNT
Chat sees today regarding message content.
4.3 Keys and sessions
- Identity and prekeys generated on client;
- Private keys: local secure storage, Android
Keystore / StrongBox, Secure Enclave (iOS);
- Safety number derived from public keys for manual
or QR verification.
4.4 What the server never
receives
- Long-term private key in cleartext;
- Message body in cleartext (E2EE goal);
- Device PIN in cleartext;
- TOTP secrets in cleartext (hashed server-side).
5. Attachments and storage
Attachments follow encrypt on client, then
upload:
- Local file read;
- AES-256-GCM encryption (derived key / envelope per
implementation);
- Direct upload to object storage via short-lived signed URL;
- Metadata (name, size, hash, key reference) in cloud database via
backend.
The server never receives: vault password, master
key, cleartext file content.
6. Key management and device
lock
6.1 Cryptographic identity
- Key pair generated locally (CSPRNG);
- Public keys and prekeys published to establish sessions;
- Private keys never sent to the server in cleartext.
6.2 SNT PIN (6 digits)
- PBKDF2 hash (or equivalent) + random salt;
- Storage: local secure storage (Keychain/Keystore);
- Never synced to cloud;
- Auto-lock after inactivity (app policy).
6.3 Biometrics
- Optional unlock via platform biometrics;
- Does not replace recovery if factors are lost.
7. Authentication and session
7.1 V1 methods
| Method |
V1 status |
| Email / password |
Yes |
| Google Sign-In |
Yes |
| Facebook |
Yes (Android) |
| GitHub |
Yes (Android) |
| Apple Sign-In |
Platform / store dependent |
| Passkeys |
Yes Android |
| TOTP 2FA |
Yes |
7.2 Cloud session
- Cloud JWT managed by SDK;
- Callables require authentication (UID);
- Sign-out: session purge + local app lock.
7.3 Account verification
- Profile and verified email flows per product rules;
- Beta quotas and features tied to documented in-app account
status.
8. Passkeys (WebAuthn / FIDO2)
8.1 V1 implementation (Android)
- Enrollment and authentication via WebAuthn;
- Private key in Secure Enclave / TPM;
- Only the public key is registered server-side;
- Origin binding: anti-phishing protection.
8.2 App Links / Digital Asset
Links
public/.well-known/assetlinks.json on hosting;
- Associates sntchat.com with the production Android
package.
8.3 Limits
- iOS / Safari passkeys: per store timeline;
- Requires FIDO2-capable device.
9. Two-factor authentication
(TOTP)
9.1 Standard
- RFC 6238 (TOTP);
- 6-digit codes, 30-second window;
- Compatible with Google Authenticator, Authy, etc.
9.2 Recovery codes
- Generated when 2FA is enabled;
- Single use;
- Stored hashed (never cleartext);
- Sensitive collections: client-inaccessible (cloud
database rules).
9.3 Login flow
- Primary auth (email, Google, passkey, etc.);
- If 2FA enabled: TOTP or recovery code;
- Verification on backend before full session.
10. Messaging, sync, and
cloud database
10.1 Data model
- Conversations scoped to authenticated members;
- Messages stored per E2EE phase (target encrypted envelopes);
- Presence and metadata minimized.
10.2 Real time
- Cloud database listeners for inbox and threads;
- No third-party chat SDK at product core (SNT engine).
10.3 Attachments
- Reference to encrypted object blob + cloud database metadata;
- Download via signed URL, local decryption.
11. Invitations and links
11.1 Referral / invite
/invite pages and documented flows;
- No message content exposed in links.
11.2 Deep links
- App schemes to open conversations after auth;
- Android App Links validation.
12. Cloud infrastructure
12.1 Certified cloud providers
- Authentication: identity only;
- Cloud database: metadata, profiles, chats;
- Hosting: marketing site, Trust Center,
.well-known;
- Backend services: Node.js, region
europe-west1.
12.2 Encrypted object storage
- S3-compatible API;
- EU / US buckets per compliance;
- Regional credentials (cloud credentials).
12.3 CDN / DNS
- Domain sntchat.com;
- Optional cache on already encrypted blobs (no CDN
decryption).
13. Cloud database access
rules
13.1 Principles
- Client read/write limited to authenticated
uid;
- Sensitive collections (2FA secrets, etc.): backend write
only;
- No cross-tenant enumeration;
@username reservation: atomic transaction at
signup.
13.2 Examples
| Collection |
Client read |
Client write |
users/{uid} |
Own UID |
Limited fields |
usernames/{name} |
Controlled |
Signup transaction |
| 2FA secrets |
No |
No |
14. Signed URLs (object
storage)
14.1 Upload
- Callable generates short-lived signed PUT URL;
- Client uploads encrypted blob directly.
14.2 Download
- Callable generates signed GET URL;
- Expiration in minutes;
- No bucket listing on client.
15. CDN and transport
15.1 TLS
- HTTPS required (hosting, backend, object storage);
- TLS 1.3 negotiated by modern stacks.
15.2 Integrity
- GCM tag per file;
- Pre-encryption hash for debug integrity.
16. Notifications (push)
16.1 Messaging use
- “New message” push without body in payload;
- Backend trigger on new chat message: generic title;
- Push token tied to
uid, revoked on sign-out.
16.2 Privacy
- OS vendors see minimal payload;
- Detailed lock screen preview: client-controlled after local
fetch.
17. Application attestation
17.1 Goal
- Verify cloud database / auth / backend are called from the
legitimate app;
- Reduces third-party scripts and forged clients.
17.2 Providers
| Platform |
Production |
| Android |
Play Integrity |
| iOS |
App Attest / Device Check |
| Web |
reCAPTCHA v3 (if applicable) |
Progressive rollout: Monitoring then Enforced (see project
attestation documentation).
18. GDPR: export and deletion
18.1 Export
- JSON manifest profile + metadata inventory (no server-side decrypted
content);
- Full decrypted export: on client where
applicable.
18.2 Deletion
/account-deletion and in-app flows;
- Sequence: object storage, cloud database, authentication;
- Irreversible without local backup.
18.3 Processors
- Certified cloud providers, encrypted storage partner, DNS/CDN
host;
- Policy:
sntchat.com/privacy.
19. Logging and visible data
19.1 What SNT Chat can see
| Data |
Visible on server? |
Email, UID, @username, plan |
Yes |
| Timestamps, conversation IDs |
Yes |
| Message body (E2EE target) |
No |
| Decrypted attachment |
No |
| PIN / private keys |
No |
19.2 Logs
- Technical errors, correlation;
- No intentional logging of message content;
- Analytics / crash analytics: no message content.
20. Trust Center and
transparency
20.1 Public pages
- Hub
/trust: cryptography, architecture, zero-knowledge,
status;
- Diagrams
/security;
- Changelog
/changelog.
20.2 Automated status
- Endpoint
/api/status;
- Incidents:
/api/incidents.json;
- Page
/trust/status.
- Channel @SNTCHATPROTECT, group
@SNTCHATGROUP (Telegram).
21. Responsible disclosure
- support@sntchat.com (subject: Security
disclosure);
/.well-known/security.txt;
- Page
/trust/disclosure.
21.2 Scope
- Android beta/production app, site, backend, cloud database rules,
messaging encryption flows.
22. Known V1 limits
- E2EE not universal on all flows;
- No published external pentest;
- iOS: parity per store timeline;
- No full public contractual SLA;
- Local malware: outside standard zero-knowledge guarantee.
23. Security roadmap
| Item |
Target |
| Generalized Double Ratchet |
Post-beta |
| App attestation enforced |
After monitoring |
| Post-quantum hybrid |
Crypto engine roadmap |
| Independent pentest |
Post-beta |
| Paid bug bounty |
Preparation |
24. Glossary
| Term |
Definition |
| E2EE |
End-to-end encryption: only participants read content |
| Double Ratchet |
Signal protocol for forward secrecy |
| Prekey |
Pre-published public key to establish a session |
| Zero-knowledge |
Server does not hold decryption secrets |
| TOTP |
Time-based one-time password |
| Passkey |
WebAuthn credential bound to domain / app |
| App attestation |
Attestation that the request comes from the official app |
25. References
- NIST SP 800-38D (GCM)
- RFC 6238 (TOTP)
- WebAuthn (W3C)
- GDPR (EU) 2016/679
- Public documentation: https://sntchat.com/trust
- Internal architecture:
docs/ARCHITECTURE.md,
docs/CRYPTO_ENGINE.md
26. Document control
| Field |
Value |
| Title |
SNT Chat Security Whitepaper |
| Version |
1.0.0 |
| Date |
6 August 2026 |
| Classification |
Public |
| Domain |
sntchat.com |
| Language |
English · French edition: same structure |
Appendix A · Security FAQ
Q: Can SNT Chat read my messages?
A: See /trust/visibility. The product goal is
zero-knowledge on content; exact E2EE deployment status is documented
publicly.
Q: What does a push notification contain?
A: A generic label, not the message body in the payload.
Q: How do I verify a contact?
A: Safety number or QR scan in Security Center.
Q: Where to report a vulnerability?
A: /trust/disclosure and security.txt.
Appendix B · Threat
scenarios (summary)
B.1 Another user’s
account compromised
Impact: metadata, no decryption without victim
keys.
Mitigations: 2FA, passkeys, cloud database
isolation.
B.2 Object storage leak
Impact: encrypted blobs only.
Mitigations: short signed URLs, client encryption.
B.3 Support social
engineering
Procedure: no backdoor, no private key recovery;
account deletion on request (GDPR).
Signature éditoriale
Document approuvé pour publication publique par SNT Chat · Security & Privacy.
Contact : support@sntchat.com · Divulgation responsable : sntchat.com/trust/disclosure
SNT Chat Security & Privacy
© 2026 SNT Chat. Tous droits réservés.