Security

Cloak is built security-first. Here's how we protect your documents and videos at every layer.

Canvas-based rendering

Documents are rendered to images server-side, then drawn to an HTML Canvas element in the browser. This prevents right-click save, drag-and-drop, and DOM-based content extraction. The original file is never transmitted to the viewer.

Video security

Videos are transcoded to HLS (HTTP Live Streaming) with multiple quality tiers. Each segment is served via time-limited signed URLs that expire after 60 seconds and are refreshed per-request. A canvas overlay draws the viewer's email as a watermark on every frame of the video.

  • + Per-segment signed URLs prevent direct download of video files
  • + Canvas watermark overlay is separate from the video stream (cannot be stripped)
  • + Picture-in-Picture and download buttons are disabled
  • + Context menu disabled on video container
  • + Safari/iOS uses dynamic manifests with pre-signed URLs baked in

Dynamic watermarks

Every document page and video frame is watermarked with the viewer's email, date, and a unique session ID. Watermarks are rendered diagonally across the canvas, making screenshots traceable back to the specific viewer and session.

Signed URLs

Page images are served via time-limited signed URLs that expire after 5 minutes. Video segments use 60-second signed URLs refreshed per request. They cannot be bookmarked or shared. Each viewer session generates fresh URLs.

Print & screenshot protection

CSS @media print rules hide content during print. The Permissions-Policy: display-capture=() header blocks browser-level screen capture APIs. Context menus are disabled on the viewer.

Access controls

Links support email gates, domain restrictions (e.g., only @acme.com), password protection, view count limits, and time-based expiry. Access can be revoked instantly via API. Teams with RBAC ensure only authorized members manage links.

Encryption & infrastructure

All data is encrypted in transit (TLS 1.3) and at rest. API keys are hashed with SHA-256. Passwords are hashed with bcrypt (12 rounds). Webhook payloads are signed with HMAC-SHA256.

Audit log

Every action is recorded in an immutable audit log: link creation, view events, settings changes, team membership updates, and API key rotations. Available via API and dashboard.

GDPR compliance

Cloak provides a GDPR data deletion endpoint (DELETE /v1/viewers/:email) that removes all view records and sessions for a given email address. View data is stored only for the purpose of analytics and can be deleted at any time.

Open source

Cloak's core is open source (MIT license). You can audit the code, self-host on your own infrastructure, and verify every security claim. No black boxes.