+<div class="grid g3"><div class="cap"><div class="dot" style="background:#F59E0B;color:#fff">!</div><h4>Generate keys with a CSPRNG, not by hand</h4><p>Use <code>openssl rand -hex 32</code> (or your platform's equivalent) for every file. Hand-typed or guessable keys collapse AES-256 to whatever your imagination is — usually a few bits of real entropy.</p></div><div class="cap"><div class="dot" style="background:#F59E0B;color:#fff">!</div><h4>Save the key before you close the terminal</h4><p>When you run <code>KEY=$(openssl rand -hex 32)</code>, that 64-character hex string only exists in your shell's environment. Close the tab without copying it into a password manager (1Password, Bitwarden, <code>pass</code>) and the file becomes permanently unreadable. <strong>That is by design — it is the crypto-shred guarantee, not a bug.</strong></p></div><div class="cap"><div class="dot" style="background:#F59E0B;color:#fff">!</div><h4>The AAD prefix must match — character for character</h4><p>If you encrypted with <code>--aad-prefix "mydata-2026-05-31"</code>, you must type that <em>exact</em> string into the demo's AAD field. A capital letter, a missing dash, an extra space — any difference makes the GCM tag fail to verify, and there is no recovery path.</p></div><div class="cap"><div class="dot" style="background:#F59E0B;color:#fff">!</div><h4>Use a trusted device</h4><p>The demo keeps your file in the browser — no upload, no server, no telemetry — but the device itself still sees the plaintext after decryption. Don't use shared kiosks, active screen-sharing sessions, or machines with cross-device clipboard sync turned on while you paste keys.</p></div><div class="cap"><div class="dot" style="background:#F59E0B;color:#fff">!</div><h4>Never share keys over email, chat or SMS</h4><p>Treat an AES-256 key the way you'd treat a password: send it through a password-manager share, a Signal / age / GPG-encrypted channel, or a vault — never inline in a message that gets logged, indexed or back-up-synced in plaintext.</p></div><div class="cap"><div class="dot" style="background:#F59E0B;color:#fff">!</div><h4>Public demo is for evaluation; production wants the local build</h4><p>The hosted demo loads its JS and WebAssembly from this site for convenience. For regulated PII / financial / health data, build the CLI or library locally with <code>-DSIGNET_ENABLE_COMMERCIAL=ON</code> so the entire compile, key-handling and storage surface stays inside your trust boundary.</p></div><div class="cap"><div class="dot" style="background:#F59E0B;color:#fff">!</div><h4>Downloading an encrypted .parquet is just sharing the ciphertext</h4><p>The <strong>Download .parquet</strong> button is a passthrough — it writes the exact bytes you uploaded. An encrypted file <em>stays</em> encrypted on disk and is safe to email, attach or upload to shared storage. But sharing the file does <em>not</em> share the key — the recipient still needs the footer key, optional column key, and the same AAD prefix to decrypt. Send those separately, through a different channel.</p></div><div class="cap"><div class="dot" style="background:#F59E0B;color:#fff">!</div><h4>Report vulnerabilities responsibly</h4><p>Found a real cryptographic or implementation issue? Use the coordinated-disclosure path in <a href="https://github.com/SIGNETSTACK/SIGNET_FORGE/blob/main/SECURITY.md" target="_blank" rel="noopener">SECURITY.md</a> on the Forge repository — please don't open a public issue.</p></div></div></div></section>
0 commit comments