Sphinx HTML and 17-page LaTeX PDF for the audit-ready pack
Some checks are pending
ci / markdown (push) Waiting to run

source/ is the Sphinx tree. Companion PDF hrefs are relative, not Markdown.
This commit is contained in:
George Lambert 2026-09-15 23:59:54 -04:00
parent afa270a141
commit da60402e88
104 changed files with 16818 additions and 0 deletions

181
build/html/baa-dpa.html Normal file
View file

@ -0,0 +1,181 @@
<!DOCTYPE html>
<html lang="en" data-content_root="./">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>BAAs and DPAs when ciphertext has no host keys &#8212; Making yourself audit-ready with Verae DataCubes</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=5ecbeea2" />
<link rel="stylesheet" type="text/css" href="_static/basic.css?v=b08954a9" />
<link rel="stylesheet" type="text/css" href="_static/alabaster.css?v=27fed22d" />
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=fd6eb6e6"></script>
<script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Audit-ready checklist" href="checklist.html" />
<link rel="prev" title="Architecture (audit interview)" href="architecture.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
</head><body>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="baas-and-dpas-when-ciphertext-has-no-host-keys">
<h1>BAAs and DPAs when ciphertext has no host keys<a class="headerlink" href="#baas-and-dpas-when-ciphertext-has-no-host-keys" title="Link to this heading"></a></h1>
<p>This is <strong>guidance for an evidence pack</strong>, not legal advice.</p>
<section id="the-operator-statement">
<h2>The operator statement<a class="headerlink" href="#the-operator-statement" title="Link to this heading"></a></h2>
<p>Data at rest lives in the <strong>encrypted Peergos cryptree</strong>. Restore uses
<strong>distributed, hash-verified, encrypted IPFS blocks</strong>. Hosts and backup
media see <strong>opaque blobs</strong> (and random CHAMP labels), not filenames, not
PHI, not social graph — if keys never leave the client / customer HSM.</p>
<p>That is <strong>true of the Peergos design</strong> (see <a class="reference internal" href="verification.html"><span class="doc">Peergos verification (what was actually audited)</span></a>).
It <strong>changes the BAA/DPA conversation</strong>. It does <strong>not</strong> auto-delete the
need for contracts.</p>
</section>
<section id="hipaa-us-business-associate">
<h2>HIPAA (US) — Business Associate<a class="headerlink" href="#hipaa-us-business-associate" title="Link to this heading"></a></h2>
<p>A Business Associate is a person who <strong>creates, receives, maintains, or
transmits ePHI</strong> for a covered entity.</p>
<p><strong>Technical argument you can make (and should document):</strong></p>
<ol class="arabic simple">
<li><p>ePHI is encrypted <strong>before</strong> it leaves the endpoint (Peergos client /
DataCube writer).</p></li>
<li><p>The storage node, IPFS, disk, and backup hold <strong>ciphertext + hashes</strong>.</p></li>
<li><p>Private keys <strong>do not</strong> reside on the storage host (customer HSM /
client). Hash verification detects tampering.</p></li>
<li><p>Therefore the host <strong>cannot maintain ePHI in intelligible form</strong>.</p></li>
</ol>
<p>HHS distinguishes <strong>conduits</strong> and parties that never have access to
ePHI. Many programs still <strong>sign a BAA</strong> when a vendor touches
infrastructure, because misconfiguration, support exports, or logs could
later expose plaintext. OCR looks at <strong>your</strong> risk analysis.</p>
<p><strong>Practical pack:</strong> risk analysis memo citing cryptree + IPFS hash checks
+ key custody; BAA <strong>or</strong> written determination that the vendor is
<strong>not</strong> a BA because they cannot decrypt; list every party with
disk/backup (ns1, IPFS cluster, offsite replica).</p>
</section>
<section id="gdpr-eu-uk-processor-vs-technical-measure">
<h2>GDPR (EU/UK) — processor vs technical measure<a class="headerlink" href="#gdpr-eu-uk-processor-vs-technical-measure" title="Link to this heading"></a></h2>
<p>Encrypted data can still be <strong>personal data</strong> if it is reasonably
attributable (usernames, IPs, invoice identity). GDPR <strong>Art. 32</strong> lists
encryption as a security measure.</p>
<p>Peergos is designed so the <strong>server is an adversary</strong> for content and
most metadata. EU-based <strong>independent pentests</strong> (Cure53 DE, ROS NL)
evaluated that design. Processing location for <strong>self-host</strong> is <em>your</em>
ns1 / customer region, not peergos.nets Germany hosting, unless you use
peergos.net.</p>
<p>You may still need a <strong>DPA (Art. 28)</strong> with anyone who <strong>processes</strong>
personal data (usernames, logs, billing). Ciphertext-only storage
<strong>narrows</strong> the DPAs technical annex.</p>
</section>
<section id="nats-operators">
<h2>NATS operators<a class="headerlink" href="#nats-operators" title="Link to this heading"></a></h2>
<p>NATS is an <strong>untrusted broker</strong>. Content is HPKE; destinations and
subjects are in the clear. A NATS operator <strong>cannot</strong> read bodies without
endpoint private keys; <strong>can</strong> see routing metadata; <strong>can</strong> drop/delay
copy <strong>ciphertext</strong>. Treat like a transit provider: DPA/BAA depends on
whether routing metadata is personal data in your jurisdiction.</p>
</section>
<section id="what-making-yourself-audit-ready-means">
<h2>What “making yourself audit-ready” means<a class="headerlink" href="#what-making-yourself-audit-ready-means" title="Link to this heading"></a></h2>
<p>You are <strong>not</strong> buying Peergoss Cure53/ROS reports as <em>your</em> SOC 2.
You are <strong>reusing</strong> those public evaluations as <strong>vendor/component
assurance</strong>, then adding your scope, RoPA, key-custody, inspect k-of-n,
admin-history, instance evidence, and contracts that match who can
actually see plaintext.</p>
</section>
</section>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="index.html">Making yourself audit-ready with Verae DataCubes</a></h1>
<search id="searchbox" style="display: none" role="search">
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" placeholder="Search"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script><h3>Navigation</h3>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="verification.html">Peergos verification (what was actually audited)</a></li>
<li class="toctree-l1"><a class="reference internal" href="architecture.html">Architecture (audit interview)</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">BAAs and DPAs when ciphertext has no host keys</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#the-operator-statement">The operator statement</a></li>
<li class="toctree-l2"><a class="reference internal" href="#hipaa-us-business-associate">HIPAA (US) — Business Associate</a></li>
<li class="toctree-l2"><a class="reference internal" href="#gdpr-eu-uk-processor-vs-technical-measure">GDPR (EU/UK) — processor vs technical measure</a></li>
<li class="toctree-l2"><a class="reference internal" href="#nats-operators">NATS operators</a></li>
<li class="toctree-l2"><a class="reference internal" href="#what-making-yourself-audit-ready-means">What “making yourself audit-ready” means</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="checklist.html">Audit-ready checklist</a></li>
<li class="toctree-l1"><a class="reference internal" href="howto.html">How to use this pack</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li>Previous: <a href="architecture.html" title="previous chapter">Architecture (audit interview)</a></li>
<li>Next: <a href="checklist.html" title="next chapter">Audit-ready checklist</a></li>
</ul></li>
</ul>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&#169;2026, Verae.
|
Powered by <a href="https://www.sphinx-doc.org/">Sphinx 9.1.0</a>
&amp; <a href="https://alabaster.readthedocs.io">Alabaster 1.0.0</a>
|
<a href="_sources/baa-dpa.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>