Security Architecture

Security Philosophy

TimeProof’s security is built on a principle: minimize what you need to trust. Instead of asking you to trust TimeProof’s servers, the system is designed so that the most critical data — your timestamp proofs — lives on a decentralized blockchain that no one controls.

This is defense in depth. Even if one layer is compromised, the layers beneath it protect your data.

Layer 1: Blockchain Immutability

The foundation of TimeProof’s security is the Polygon blockchain:

PropertyWhat It Means
ImmutableOnce written, data cannot be changed or deleted
DecentralizedNo single entity controls the network
TransparentAnyone can read and verify the data
Consensus-protectedChanges require agreement from thousands of validators

When a hash is anchored on the blockchain, it’s permanent. TimeProof cannot modify it. A hacker cannot modify it. A court order cannot modify it. The data is protected by the same consensus mechanism that secures billions of dollars in cryptocurrency.

Smart Contract Design

The TimeProof smart contract is intentionally minimal:

  • Single purpose: Accept a hash, record it with a timestamp
  • No admin functions that could override or delete data
  • No upgrade proxy — the contract is deployed once and cannot be changed
  • Verifiable source — the contract code may be published on Polygonscan

A simpler contract is a more secure contract. Every line of code is a potential vulnerability. By keeping the contract minimal, the attack surface is as small as possible.

Layer 2: Client-Side Hashing

Your files never leave your machine. This eliminates entire categories of security risks:

RiskEliminated?How
File interception in transitFiles aren’t transmitted
Server-side data breach exposing filesServer never has files
Insider threat (employee access)No files to access
Legal subpoena for file contentsTimeProof doesn’t have them
Storage encryption failuresNo file storage exists

The SHA-256 hash is computed in your browser using the Web Crypto API — a hardware-accelerated cryptographic implementation built into modern browsers. The hash is the only data sent to TimeProof.

Layer 3: Wallet-Based Authentication

TimeProof uses Sign-In with Ethereum (SIWE) instead of passwords:

FeatureTraditional AuthTimeProof (SIWE)
Credential typePasswordCryptographic signature
Server storesPassword hashNothing (stateless verification)
Phishing riskHighLow (signature is domain-bound)
Credential reuseCommon problemNot possible (keys are unique)
Brute force riskDepends on password strengthInfeasible (256-bit keys)
RecoveryEmail reset (attack vector)Wallet seed phrase (user-controlled)

With SIWE, there’s no password database to breach. Your private key never leaves your wallet — the server only sees a signature that proves wallet ownership.

Layer 4: Session Security

After authentication, sessions are protected by:

ProtectionImplementation
HTTP-only cookiesJavaScript cannot access the session token (XSS protection)
Secure flagCookie transmitted only over HTTPS (production)
SameSite: StrictCookie not sent with cross-origin requests (CSRF protection)
Server-side sessionsSession state stored server-side, only an opaque ID in the cookie
Session expirationAutomatic timeout after inactivity

Why Not JWTs?

Some APIs use JSON Web Tokens (JWTs) stored in localStorage. TimeProof uses server-side sessions instead because:

  • JWTs in localStorage are vulnerable to XSS attacks
  • JWTs cannot be revoked once issued
  • Server-side sessions can be immediately invalidated on sign-out
  • HTTP-only cookies are inaccessible to JavaScript

Layer 5: Data Protection

Database Security

  • Encryption at rest — database storage is encrypted
  • Regular backups — automated backup schedule with point-in-time recovery
  • Principle of least privilege — database access restricted to necessary services
  • Input validation — all API inputs validated and sanitized

Payment Security

  • Stripe handles payments — credit card data never touches TimeProof’s servers
  • Webhook verification — Stripe webhooks verified via cryptographic signatures
  • No financial data stored — only Stripe session references, not card numbers

Identity Verification

  • Stripe Identity handles verification — ID documents processed by Stripe, not TimeProof
  • Minimal data — TimeProof receives verification status, not identity documents
  • JWS attestation — identity proof is cryptographically signed, self-verifiable

Layer 6: Network Layer Security

MeasurePurpose
HTTPS everywhereEncrypts all client-server communication
Rate limitingPrevents abuse and denial-of-service attacks
CORS policyRestricts which domains can call the API
Input sanitizationPrevents injection attacks (SQL, XSS, etc.)
Content Security PolicyRestricts what resources the browser can load

Threat Model

ThreatMitigationImpact If Breached
Server compromiseDatabase encryption, backups, blockchain immutabilityAccount data exposure; timestamps remain safe on blockchain
Man-in-the-middleHTTPS, certificate pinningCannot intercept because all traffic encrypted
XSS attackHTTP-only cookies, CSP, input sanitizationCannot steal sessions or inject scripts
CSRF attackSameSite cookies, origin checkingCannot forge requests from other sites
Blockchain attackPolygon’s consensus mechanism (thousands of validators)Practically impossible for historical data
File exposureClient-side hashing (files never transmitted)Cannot expose what was never received

What You Should Do

TimeProof’s architecture handles most security concerns, but you can strengthen your security:

  1. Protect your wallet seed phrase — never share it, store it offline
  2. Use a hardware wallet for high-value timestamps (Ledger, Trezor)
  3. Download and back up certificates — don’t rely solely on the dashboard
  4. Sign out on shared devices — terminate your session when done
  5. Keep your browser updated — security patches protect the client-side hashing

Use the live product for timestamping and verification.

The company site owns the technical reference. The app handles runtime workflows.