<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Security &amp; Privacy on Whistleblowing Software</title><link>https://whistleblowing-software.pages.dev/categories/security--privacy/</link><description>Recent content in Security &amp; Privacy on Whistleblowing Software</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 12 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://whistleblowing-software.pages.dev/categories/security--privacy/index.xml" rel="self" type="application/rss+xml"/><item><title>Anonymity vs Confidentiality: a Whistleblowing Threat Model</title><link>https://whistleblowing-software.pages.dev/posts/anonymity-vs-confidentiality-whistleblowing-threat-model/</link><pubDate>Thu, 12 Mar 2026 00:00:00 +0000</pubDate><guid>https://whistleblowing-software.pages.dev/posts/anonymity-vs-confidentiality-whistleblowing-threat-model/</guid><description>&lt;p&gt;Anonymity and confidentiality are two different security properties, and a whistleblowing platform that uses them as synonyms is selling a promise it cannot keep. Anonymity means the reporter&amp;rsquo;s identity stays unobservable to the platform, to intermediaries, and to recipients, which operationally requires a &lt;a href="https://www.torproject.org/"&gt;Tor&lt;/a&gt; onion service v3, the Tor Browser on the reporter&amp;rsquo;s side, and reporter-side discipline against forensic traces. Confidentiality means the reporter accesses the platform over a regular browser; the ISP, the employer network, or a CDN can log the connection, while the platform encrypts the content, restricts recipient access, and keeps logs honest. Both are valid, and the right default depends on context: corporate compliance programmes usually default to confidential with anonymous opt-in via Tor, whereas human-rights initiatives and investigative newsrooms default to anonymous.&lt;/p&gt;</description></item><item><title>Encrypting Whistleblower Reports: Receipts, SealedBox, SecretBox</title><link>https://whistleblowing-software.pages.dev/posts/encrypting-whistleblower-reports-receipts-sealedbox-secretbox/</link><pubDate>Sun, 20 Jul 2025 00:00:00 +0000</pubDate><guid>https://whistleblowing-software.pages.dev/posts/encrypting-whistleblower-reports-receipts-sealedbox-secretbox/</guid><description>&lt;p&gt;A whistleblower report needs a complete encryption protocol, not a checkbox that says &amp;ldquo;AES-256&amp;rdquo;. A reference design that has converged across mature open-source whistleblowing platforms pairs three primitives in a way every serious system should recognise: a 16-digit random receipt code (stored on the server only as a SHA-256 hash, shaped like a phone number so the reporter can hide it among contacts), libsodium &lt;a href="https://pynacl.readthedocs.io/en/latest/public/#nacl.public.SealedBox"&gt;SealedBox&lt;/a&gt; (Curve25519 + XSalsa20 + Poly1305) to wrap a per-submission data key to each authorised recipient&amp;rsquo;s public key, and libsodium &lt;a href="https://pynacl.readthedocs.io/en/latest/secret/#nacl.secret.SecretBox"&gt;SecretBox&lt;/a&gt; (XSalsa20 + Poly1305) to encrypt the submission body and attachments under that data key. Each recipient&amp;rsquo;s Curve25519 private key sits on the server encrypted under a symmetric key derived from the recipient&amp;rsquo;s password via Argon2ID tuned to 128 MB of memory and roughly one second of computation per login. As of April 2026, this is the protocol that production deployments serving anti-corruption activists, corporate compliance teams, and investigative newsrooms actually run.&lt;/p&gt;</description></item></channel></rss>