Squyr.
Bilateral Cryptographic Data Exchange
Real Web Crypto API operations. Every transformation rendered live — from raw PHI input to verified decryption on the receiving end.
User submits raw plaintext data — patient name, SSN, email, or any PHI field. This is the only moment the data exists in readable form. In production this happens client-side within an encrypted session. Nothing is stored.
The plaintext is fed through SHA-256. The result is a deterministic 32-byte fingerprint — a unique, irreversible representation of the original data. The original is then discarded from memory.
Using ECDH (Elliptic Curve Diffie-Hellman) with curve X25519, both parties derive an identical 256-bit session key. Each side combines their private key with the other's public key — a shared secret that only the two parties can compute.
The data is encrypted with the derived session key using AES-256-GCM — AEAD (authenticated encryption with associated data). A random 12-byte IV is generated per message. The auth tag guarantees the ciphertext hasn't been tampered with.
The sender's Ed25519 private key signs the encrypted package. This creates a 64-byte cryptographic signature that proves the package originated from the sender and was not modified in transit. The private key never leaves the sender's device.
The recipient receives the sender's Ed25519 public key and the signature. Using the public key alone, the signature is verified against the package. This confirms the package is authentic and unmodified — without any knowledge of the sender's private key.
After signature verification, the recipient's Ed25519 private key participates in the ECDH key exchange to re-derive the shared session key. Only the recipient (who holds the correct private key) can compute this key. This is zero-knowledge proof of identity — the key proves who you are.
The recipient uses the re-derived session key to decrypt the AES-256-GCM payload. The auth tag is checked — if it fails, decryption is rejected. The plaintext is delivered to the authorized recipient. All intermediate values are zeroed from memory.
All operations run locally in your browser. SHA-256 hashing, AES-256-GCM encryption, and Ed25519 signing/decryption are performed via the native Web Crypto API and TweetNaCl.js. No plaintext PHI is transmitted over the network. Only hashed or encrypted values cross the wire.
No PII on the wire. Real TweetNaCl.js + Web Crypto API. Zero network transmission of plaintext PHI.