Platform Security Overview — 2026

YOUR MESSAGES.
YOUR MONEY.
PROTECTED.

Qixit's Summa Network™ combines military-grade AES-256 message encryption, BCrypt-hardened passwords, and Azure cloud infrastructure to give you a messaging and payments platform that's genuinely private — not just privately hosted.

AES-256-GCM encryption on all personal messages
BCrypt work-factor 12 password hashing — industry standard
Azure Blob Storage — 15× cheaper than SQL, infinitely scalable
Lawful access with audit trail — court-ordered only, quorum required

WHAT PROTECTS YOU

01

Passwords You Can Trust

Your password is never stored — not anywhere. When you create an account, your password is run through BCrypt at work-factor 12, producing a 60-character one-way hash. Even with full database access, no one can recover your password.

A brute-force attacker trying every possible 8-character password against one BCrypt-12 hash would need years on modern hardware.

02

Messages Only You Can Read

Every personal message is encrypted with AES-256-GCM before it ever reaches our database or cloud storage. The ciphertext is stored in Azure Blob Storage — not in SQL — so it's doubly isolated from any breach.

System messages, receipts, and marketing messages are stored as-is (plaintext) since they're platform-generated and non-private.

03

Cloud Storage Built to Scale

Message bodies live in Azure Blob Storage, not in SQL. That means your inbox loads faster (no multi-megabyte EML columns in queries), your data is backed up independently, and storage costs stay low as you accumulate years of messages.

Old messages automatically move to cheaper storage tiers — you only pay a small retrieval fee if you need to access archived content.

SECURITY
UNDER THE HOOD

Passwords — Hashed, Never Stored

The moment you type your password, it undergoes a cryptographic transformation called BCrypt hashing. A random "salt" is mixed in to make every hash unique — even if two users choose the same password, their hashes look completely different.

When you log in, the platform re-runs the same transformation and compares results. Your plaintext password never touches a database, never appears in a log file, and is never transmitted beyond your login request.

"A database breach exposes only bcrypt hashes. Without the original passwords, these are cryptographically worthless to an attacker."

— Security assessment, March 2026
// What you type
password "MyP@ssw0rd"

// What we store
stored_hash $2a$12$WEFy2Yn7hGYCX
EJgD.mSouPHR9ab
djqL6DxKmN3...

// Login check
BCrypt.Verify() ✓ true
plain comparison ✗ never used

Personal Messages — Encrypted Before Storage

When you send a personal message, the platform encrypts the body using AES-256-GCM (the same algorithm used by Signal, WhatsApp, and the US military) before the data ever reaches a database or cloud bucket.

The encryption key (the Platform Key Encryption Key, or KEK) is held in Azure Key Vault — a hardware-security-module-backed secret store that maintains its own audit trail. Accessing the KEK requires authenticated Azure credentials; it cannot be queried directly from SQL.

This means that a breach of the SQL database, or even the Blob Storage container, yields only ciphertext. Without Key Vault access, there is nothing to read.

// Your message
body "Hello, how are you?"

// AES-256-GCM encrypt
blob stored V2:NqQzU3ldCJ32u8yM
MxTWBi5POcGG9cFg
JO5G3iw==:J5Ab...

// What SQL sees
tbMail.EML '' (empty)
tbMail.BlobTier 'HOT'

Sessions That Survive Server Restarts

Previously, every time a server was updated or restarted, all logged-in users were silently kicked out — their refresh tokens vanished with the server process. This led to confusing logout loops.

Refresh tokens are now stored in a dedicated database table (tbRefreshTokens), with expiry dates, device IP tracking, and explicit revocation support. Server restarts are now transparent to logged-in users.

When you log out, your token is revoked immediately in the database — making it impossible to reuse, even if it were intercepted.

tbRefreshTokens

chrTokenHash SHA-256 hash only
dtmExpiry 2026-04-11 UTC
chrIPAddress 192.168.x.x
bitRevoked 0 (active)

// On logout
bitRevoked → 1 (revoked)

Family Accounts & Business Partners

Access control works at the account GUID level, not the username level. This has elegant consequences for shared accounts:

Parents and minors: A minor's messages are delivered directly to the parent's inbox. The parent's account GUID owns the tbMailReceived rows. No special decryption needed — the parent simply has inbox access.

Business partners: All usernames under a business account share a primary GUID. Messages to any business alias land in the shared inbox. Partners see the same messages without separate encryption keys.

This design also means encryption is seamless — one encrypted blob serves all members of a shared GUID, with no key duplication.

// Parent account
GUID 94422D07-...
usernames Dave10, Dave10Jr

// Minor message → parent inbox
tbMailReceived
idUserID → Parent GUID

// Business aliases
Acme@qixit.com → Primary GUID
Sales@qixit.com → Primary GUID

SMART STORAGE,
FAIR PRICING

Message bodies are stored in Azure Blob Storage with automatic tiering. Recent messages stay in fast Hot storage at no retrieval cost. Older messages move to cheaper tiers automatically — with transparent retrieval fees if you ever need them.

HOT
$0.018 / GB / month

All recent messages. Instant access — no retrieval fee. The default state for new messages.

Default · 0–90 days
COOL
$0.01 / GB / month + $2.00 retrieval

Messages older than 90 days. Clearly marked in your inbox. Retrieve to Hot for $2.00 + $0.10/MB.

90–365 days · ❄ badge
ARCHIVE
$0.002 / GB / month + $7.00 retrieval

Long-term cold storage for messages older than one year. Ultra-low cost for rarely accessed history.

365+ days · 📦 badge
LOCAL
Free — stored on your device

Download any message to your device. Server copy is deleted. No future storage or retrieval fees — ever.

Client offload · Phase 3

"Azure Blob Storage Hot tier is approximately 15× cheaper than SQL Server storage. Moving message bodies out of SQL reduces database size, speeds up every inbox query, and makes backups dramatically faster."

— Architecture Decision, Phase 2

YOUR ARCHIVE,
YOUR DEVICE

Never Pay a Retrieval Fee Again

Any message in your inbox can be downloaded to your browser's local storage (IndexedDB). Once confirmed, the server copy is permanently deleted. Your message now lives only on your device — no monthly storage charge, no retrieval fee.

Reading a locally stored message still requires signing in to Summa. We decrypt on-demand, server-side — your device holds the encrypted blob, but decryption happens with your authenticated session. This means device theft alone cannot expose your messages.

Prefer a fully offline copy? Use the "Export Readable Copy" option instead — your message is decrypted on our server and downloaded as a self-contained HTML file you can open in any browser, without an account, forever. No server copy deletion in this case.

Offloaded messages show a green Local badge in your inbox. Messages offloaded on another device show a grey Offline badge — readable only on the device where they were downloaded.

// Path A: Encrypted Offload
1. Generate 1-hour SAS download URL
2. Browser downloads encrypted blob
3. Store in IndexedDB (local device)
4. Confirm → server blob deleted
5. Badge: LOCAL ●

// Path B: Plaintext Export
1. Server decrypts message body
2. Returns as .html file download
3. Server copy unchanged
4. Open in any browser, forever
5. No account needed to read

Storage freed $0.00 / month
Future fees None

BEFORE &
AFTER

Every item below has been implemented and live-tested on the platform.

Feature
Before
After (Current)
Password storage
Plaintext in SQL — a breach exposes all passwords verbatim
BCrypt-12 one-way hash — brute-force takes years per hash
Message body storage
tbMail.EML varchar(max) — every DBA can read every message
Azure Blob Storage — bodies separated from metadata; 15× cheaper
Personal message privacy
Plaintext HTML in SQL — visible to anyone with DB access
AES-256-GCM encrypted — ciphertext only; Key Vault required to read
Refresh tokens
In-memory dictionary — all users logged out on every server restart
Stored in tbRefreshTokens — survive restarts; revocable
Inbox performance
Every list query includes varchar(max) body columns
Metadata only in SQL — body loaded on demand per message
Storage costs
SQL Server at ~$0.25+/GB/month for growing message archive
Blob Hot $0.018, Cool $0.01, Archive $0.002 — auto-tiered
Old message access
All messages equal cost — no incentive to manage storage
Tiered retrieval + one-time download to device — never pay again
Family / business access
Username-level isolation — no clean multi-member model
GUID-level access — parents, minors, and business partners supported natively
IP verification challenge
Plaintext password stored in server memory during 15-min window
Password removed from challenge — re-authenticated at completion

UNDER THE
HOOD

Component Specification Detail
Password hashing BCrypt-12 BCrypt.Net-Next library, work factor 12. Includes random salt per hash. 60-char output stored in chrPassword.
Message encryption AES-256-GCM SummaCrypto.Modern library. Random 96-bit nonce per message. 128-bit authentication tag. Format: V2:<base64-nonce>:<base64-ciphertext>.
Encryption key 256-bit Platform KEK Stored in Azure Key Vault (HSM-backed). Not in SQL, not in application config. Key Vault access logged per-operation.
Blob storage Azure Blob Storage Container: messages. Blob name = MailId (GUID). Private access only. Lifecycle: Hot → Cool (90d) → Archive (365d).
SAS URL expiry 1 hour Time-limited Shared Access Signatures for client-side direct blob download. Read-only permission, single-resource scope.
Client offload store IndexedDB Browser-native key-value store. Keyed by MailId. Stores raw blob content (encrypted or plain). Quota monitored in settings.
Access tokens JWT (HS256) Short-lived access tokens. Claim ClaimTypes.NameIdentifier = User GUID. Standard expiry with refresh rotation.
Refresh tokens tbRefreshTokens (SQL) Token hash stored (not raw token). Expiry, IP, revocation flag. Purged on logout. Survived server restart.
Tier update Background worker Daily job: HOT→COOL at 90 days, COOL→ARCHIVE at 365 days. OFFLOADED messages skipped permanently.
Lawful access Four-Party Quorum-controlled API Court ordered decryption can only be undertaken after review and concurrence of attorney and multiple employees, including OWNER-level admin credentials. Every decrypt request logged to tbLawfulAccessAudit with warrant info, reason, decision steps, and if authorized, the IDs of all approvers.
Transport TLS 1.2+ (HTTPS) All API traffic over HTTPS. HTTP redirects to HTTPS. HSTS headers enforced in production.
Retrieve Cool $2.00 + $0.10/MB Base fee plus per-megabyte charge. Charged to account balance. Receipt generated. Message moved to HOT tier.
Retrieve Archive $7.00 + $0.20/MB Higher base fee for deeper cold storage. Same receipt and balance-deduction flow as Cool retrieval.