Skip to main content

Security Model

Early Draft

This specification is at an early draft stage. Ideas are open for change and debate. A lot of the content was developed with the help of Claude AI.

Security Model

Attack Vectors and Mitigations

Fake User-Agent (Vera)

Attack: Standard browser sets User-Agent: Vera/1.0.

Impact without SDK: Receives Vera template without popups. No subscription bypass without a valid token.

Mitigation: Token validation is mandatory for paid content. Without a valid token: vera_anonymous mode, no subscription access.

Token Theft and Replay (Vera Token)

Mitigations:

  • aud claim binds token to a specific domain
  • jti claim makes token single-use (Redis-based JTI register)
  • 1-hour TTL limits exposure window
  • HTTPS-only: token never transmitted over unencrypted connection
def check_and_mark_jti(jti: str) -> bool:
key = f"vera:jti:{jti}"
was_set = redis_client.set(key, 1, ex=3600, nx=True)
return was_set is not None

Prompt Injection via Website

Attack: Malicious page attempts to manipulate Vera browser dialogs.

Mitigation: Vera dialogs run in the browser chrome (separate process). No JavaScript can access the native UI.

GDPR Compliance

Data pointStorage locationShared withLegal basis
SSO user hashVera SSO servers (EU)Publisher (anonymous, domain-specific)Consent (Art. 6(1)(a))
Vera walletVera Wallet servers (EU)NobodyContract (Art. 6(1)(b))
Network verification signalTelecom carrierPublisher (validated, not persisted)Legitimate interest (Art. 6(1)(f))
Browser historyLocal (Vera browser)Nobody