<!-- CANARY: REQ=REQ-DOCS-001; FEATURE="Docs"; ASPECT=Documentation; STATUS=TESTED; OWNER=docs; UPDATED=2026-01-28 -->
<p>Geode employs modern, industry-standard cryptographic primitives throughout its security architecture. This documentation covers the cryptographic algorithms, protocols, and implementations used to protect data at rest, in transit, and during processing. Understanding these foundations helps security teams evaluate Geode’s security posture and configure appropriate cryptographic settings.</p>
<h3 id="cryptographic-overview" class="position-relative d-flex align-items-center group">
<span>Cryptographic Overview</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="cryptographic-overview"
aria-haspopup="dialog"
aria-label="Share link: Cryptographic Overview">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><div id="headingShareModal" class="heading-share-modal" role="dialog" aria-modal="true" aria-labelledby="headingShareTitle" hidden>
<div class="hsm-dialog" role="document">
<div class="hsm-header">
<h2 id="headingShareTitle" class="h6 mb-0 fw-bold">Share this section</h2>
<button type="button" class="hsm-close" aria-label="Close">
<i class="fa-solid fa-xmark"></i>
</button>
</div>
<div class="hsm-body">
<label for="headingShareInput" class="form-label small text-muted mb-1 text-uppercase fw-bold" style="font-size: 0.7rem; letter-spacing: 0.5px;">Permalink</label>
<div class="input-group mb-4 hsm-url-group">
<input id="headingShareInput" type="text" class="form-control font-monospace" readonly aria-readonly="true" style="font-size: 0.85rem;" />
<button class="btn btn-primary hsm-copy" type="button" aria-label="Copy" title="Copy">
<i class="fa-duotone fa-clipboard" aria-hidden="true"></i>
</button>
</div>
<div class="small fw-bold mb-2 text-muted text-uppercase" style="font-size: 0.7rem; letter-spacing: 0.5px;">Share via</div>
<div class="hsm-share-grid">
<a id="share-twitter" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-twitter me-2"></i>Twitter
</a>
<a id="share-linkedin" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-linkedin me-2"></i>LinkedIn
</a>
<a id="share-facebook" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-facebook me-2"></i>Facebook
</a>
</div>
</div>
</div>
</div>
<style>
.heading-share-modal {
position: fixed;
inset: 0;
display: flex;
justify-content: center;
align-items: center;
background: rgba(0, 0, 0, 0.6);
z-index: 1050;
padding: 1rem;
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
}
.heading-share-modal[hidden] { display: none !important; }
.hsm-dialog {
max-width: 420px;
width: 100%;
background: var(--bs-body-bg, #fff);
color: var(--bs-body-color, #212529);
border: 1px solid var(--bs-border-color, rgba(0,0,0,0.1));
border-radius: 1rem;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
overflow: hidden;
animation: hsm-fade-in 0.2s ease-out;
}
@keyframes hsm-fade-in {
from { opacity: 0; transform: scale(0.95); }
to { opacity: 1; transform: scale(1); }
}
[data-bs-theme="dark"] .hsm-dialog {
background: #1e293b;
border-color: rgba(255,255,255,0.1);
color: #f8f9fa;
}
.hsm-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem 1.5rem;
border-bottom: 1px solid var(--bs-border-color, rgba(0,0,0,0.1));
background: rgba(0,0,0,0.02);
}
[data-bs-theme="dark"] .hsm-header {
background: rgba(255,255,255,0.02);
border-color: rgba(255,255,255,0.1);
}
.hsm-close {
background: transparent;
border: none;
color: inherit;
opacity: 0.5;
padding: 0.25rem 0.5rem;
border-radius: 0.25rem;
font-size: 1.2rem;
line-height: 1;
transition: opacity 0.2s;
}
.hsm-close:hover {
opacity: 1;
}
.hsm-body {
padding: 1.5rem;
}
.hsm-url-group {
display: flex !important;
align-items: stretch;
}
.hsm-url-group .form-control {
flex: 1;
min-width: 0;
margin: 0;
background: var(--bs-secondary-bg, #f8f9fa);
border-color: var(--bs-border-color, #dee2e6);
border-top-right-radius: 0;
border-bottom-right-radius: 0;
height: 42px;
}
.hsm-url-group .btn {
flex: 0 0 auto;
margin: 0;
margin-left: -1px;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
height: 42px;
display: flex;
align-items: center;
justify-content: center;
padding: 0 1.25rem;
z-index: 2;
}
[data-bs-theme="dark"] .hsm-url-group .form-control {
background: #0f172a;
border-color: #334155;
color: #e2e8f0;
}
.hsm-share-grid {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.hsm-share-grid .btn {
display: flex;
align-items: center;
justify-content: center;
font-size: 0.9rem;
padding: 0.6rem;
border-color: var(--bs-border-color);
width: 100%;
}
[data-bs-theme="dark"] .hsm-share-grid .btn {
color: #e2e8f0;
border-color: #475569;
}
[data-bs-theme="dark"] .hsm-share-grid .btn:hover {
background: #334155;
border-color: #cbd5e1;
}
</style>
<script>
(function(){
const modal = document.getElementById('headingShareModal');
if(!modal) return;
const input = modal.querySelector('#headingShareInput');
const copyBtn = modal.querySelector('.hsm-copy');
const twitter = modal.querySelector('#share-twitter');
const linkedin = modal.querySelector('#share-linkedin');
const facebook = modal.querySelector('#share-facebook');
const closeBtn = modal.querySelector('.hsm-close');
let lastFocus=null;
let trapBound=false;
function buildUrl(id){ return window.location.origin + window.location.pathname + '#' + id; }
function isOpen(){ return !modal.hasAttribute('hidden'); }
function hydrate(id){
const url=buildUrl(id);
input.value=url;
const enc=encodeURIComponent(url);
const text=encodeURIComponent(document.title);
if(twitter) twitter.href=`https://twitter.com/intent/tweet?url=${enc}&text=${text}`;
if(linkedin) linkedin.href=`https://www.linkedin.com/sharing/share-offsite/?url=${enc}`;
if(facebook) facebook.href=`https://www.facebook.com/sharer/sharer.php?u=${enc}`;
}
function openModal(id){
lastFocus=document.activeElement;
hydrate(id);
if(!isOpen()){
modal.removeAttribute('hidden');
}
requestAnimationFrame(()=>{ input.focus(); });
trapFocus();
}
function closeModal(){
if(!isOpen()) return;
modal.setAttribute('hidden','');
if(lastFocus && typeof lastFocus.focus==='function') lastFocus.focus();
}
function copyCurrent(){
try{ navigator.clipboard.writeText(input.value).then(()=>feedback(true),()=>fallback()); }
catch(e){ fallback(); }
}
function fallback(){ input.select(); try{ document.execCommand('copy'); feedback(true);}catch(e){ feedback(false);} }
function feedback(ok){ if(!copyBtn) return; const icon=copyBtn.querySelector('i'); if(!icon) return; const prev=copyBtn.getAttribute('data-prev')||icon.className; if(!copyBtn.getAttribute('data-prev')) copyBtn.setAttribute('data-prev',prev); icon.className= ok ? 'fa-duotone fa-clipboard-check':'fa-duotone fa-circle-exclamation'; setTimeout(()=>{ icon.className=prev; },1800); }
function handleShareClick(e){ e.preventDefault(); const btn=e.currentTarget; const id=btn.getAttribute('data-share-target'); if(id) openModal(id); }
function bindShareButtons(){
document.querySelectorAll('.h-share').forEach(btn=>{
if(!btn.dataset.hShareBound){ btn.addEventListener('click', handleShareClick); btn.dataset.hShareBound='1'; }
});
}
bindShareButtons();
if(document.readyState==='loading'){
document.addEventListener('DOMContentLoaded', bindShareButtons);
} else {
requestAnimationFrame(bindShareButtons);
}
document.addEventListener('click', function(e){
const shareBtn=e.target.closest && e.target.closest('.h-share');
if(shareBtn && !shareBtn.dataset.hShareBound){ handleShareClick.call(shareBtn, e); }
}, true);
document.addEventListener('click', e=>{
if(e.target===modal) closeModal();
if(e.target.closest && e.target.closest('.hsm-close')){ e.preventDefault(); closeModal(); }
if(copyBtn && (e.target===copyBtn || (e.target.closest && e.target.closest('.hsm-copy')))) { e.preventDefault(); copyCurrent(); }
});
document.addEventListener('keydown', e=>{ if(e.key==='Escape' && isOpen()) closeModal(); });
function trapFocus(){
if(trapBound) return;
trapBound=true;
modal.addEventListener('keydown', f=>{ if(f.key==='Tab' && isOpen()){ const focusable=[...modal.querySelectorAll('a[href],button,input,textarea,select,[tabindex]:not([tabindex="-1"])')].filter(el=>!el.hasAttribute('disabled')); if(!focusable.length) return; const first=focusable[0]; const last=focusable[focusable.length-1]; if(f.shiftKey && document.activeElement===first){ f.preventDefault(); last.focus(); } else if(!f.shiftKey && document.activeElement===last){ f.preventDefault(); first.focus(); } } });
}
if(closeBtn) closeBtn.addEventListener('click', e=>{ e.preventDefault(); closeModal(); });
})();
</script><p>Geode’s cryptographic subsystem provides:</p>
<ul>
<li><strong>Confidentiality</strong>: AES-256-GCM and ChaCha20-Poly1305 for data encryption</li>
<li><strong>Integrity</strong>: HMAC-SHA256 and Poly1305 for data integrity verification</li>
<li><strong>Authentication</strong>: Ed25519 and ECDSA for digital signatures</li>
<li><strong>Password Security</strong>: Argon2id for password hashing</li>
<li><strong>Key Exchange</strong>: X25519 and ECDHE for secure key agreement</li>
<li><strong>Random Generation</strong>: Cryptographically secure random number generation</li>
</ul>
<h3 id="symmetric-encryption" class="position-relative d-flex align-items-center group">
<span>Symmetric Encryption</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="symmetric-encryption"
aria-haspopup="dialog"
aria-label="Share link: Symmetric Encryption">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="aes-256-gcm" class="position-relative d-flex align-items-center group">
<span>AES-256-GCM</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="aes-256-gcm"
aria-haspopup="dialog"
aria-label="Share link: AES-256-GCM">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Advanced Encryption Standard with 256-bit keys in Galois/Counter Mode is the primary encryption algorithm for data at rest:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Algorithm: AES-256-GCM
</span></span><span class="line"><span class="cl">Key Size: 256 bits
</span></span><span class="line"><span class="cl">Block Size: 128 bits
</span></span><span class="line"><span class="cl">Mode: Galois/Counter Mode (authenticated encryption)
</span></span><span class="line"><span class="cl">Nonce Size: 96 bits (12 bytes)
</span></span><span class="line"><span class="cl">Tag Size: 128 bits (16 bytes)
</span></span></code></pre></div><p><strong>Characteristics</strong>:</p>
<ul>
<li>Authenticated encryption (AEAD) - provides confidentiality and integrity</li>
<li>Hardware acceleration via AES-NI on modern CPUs</li>
<li>Parallel encryption/decryption for high performance</li>
<li>Standard for NIST, PCI DSS, and HIPAA compliance</li>
</ul>
<p><strong>Usage in Geode</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">encryption</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">algorithm</span><span class="p">:</span><span class="w"> </span><span class="l">aes-256-gcm</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key_derivation</span><span class="p">:</span><span class="w"> </span><span class="l">hkdf-sha256</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">nonce_generation</span><span class="p">:</span><span class="w"> </span><span class="l">random</span><span class="w">
</span></span></span></code></pre></div><p><strong>Performance Characteristics</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gdscript3" data-lang="gdscript3"><span class="line"><span class="cl"><span class="n">Benchmark</span> <span class="p">(</span><span class="n">Intel</span> <span class="n">Xeon</span> <span class="n">with</span> <span class="n">AES</span><span class="o">-</span><span class="n">NI</span><span class="p">):</span>
</span></span><span class="line"><span class="cl"><span class="n">Encryption</span><span class="p">:</span> <span class="mf">4.2</span> <span class="n">GB</span><span class="o">/</span><span class="n">s</span>
</span></span><span class="line"><span class="cl"><span class="n">Decryption</span><span class="p">:</span> <span class="mf">4.5</span> <span class="n">GB</span><span class="o">/</span><span class="n">s</span>
</span></span><span class="line"><span class="cl"><span class="n">Overhead</span><span class="p">:</span> <span class="o">~</span><span class="mi">3</span><span class="o">-</span><span class="mi">5</span><span class="o">%</span> <span class="k">for</span> <span class="n">typical</span> <span class="n">workloads</span>
</span></span></code></pre></div>
<h4 id="chacha20-poly1305" class="position-relative d-flex align-items-center group">
<span>ChaCha20-Poly1305</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="chacha20-poly1305"
aria-haspopup="dialog"
aria-label="Share link: ChaCha20-Poly1305">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Alternative authenticated encryption algorithm, preferred on systems without AES hardware acceleration:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Algorithm: ChaCha20-Poly1305
</span></span><span class="line"><span class="cl">Key Size: 256 bits
</span></span><span class="line"><span class="cl">Nonce Size: 96 bits (12 bytes)
</span></span><span class="line"><span class="cl">Tag Size: 128 bits (16 bytes)
</span></span></code></pre></div><p><strong>Characteristics</strong>:</p>
<ul>
<li>Software-optimized, fast on all platforms</li>
<li>Constant-time implementation (resistant to timing attacks)</li>
<li>Used by TLS 1.3 and WireGuard</li>
<li>Excellent for mobile and ARM devices</li>
</ul>
<p><strong>Configuration</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">encryption</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">algorithm</span><span class="p">:</span><span class="w"> </span><span class="l">chacha20-poly1305</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Preferred for ARM/mobile or when AES-NI unavailable</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="encryption-key-hierarchy" class="position-relative d-flex align-items-center group">
<span>Encryption Key Hierarchy</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="encryption-key-hierarchy"
aria-haspopup="dialog"
aria-label="Share link: Encryption Key Hierarchy">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Geode uses a hierarchical key structure:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Master Key (stored in HSM/KMS)
</span></span><span class="line"><span class="cl"> |
</span></span><span class="line"><span class="cl"> +-- Key Encryption Key (KEK) 1
</span></span><span class="line"><span class="cl"> | |
</span></span><span class="line"><span class="cl"> | +-- Data Encryption Key (DEK) for Graph Data
</span></span><span class="line"><span class="cl"> | +-- Data Encryption Key (DEK) for Indexes
</span></span><span class="line"><span class="cl"> |
</span></span><span class="line"><span class="cl"> +-- Key Encryption Key (KEK) 2
</span></span><span class="line"><span class="cl"> |
</span></span><span class="line"><span class="cl"> +-- Data Encryption Key (DEK) for Transaction Logs
</span></span><span class="line"><span class="cl"> +-- Data Encryption Key (DEK) for Backups
</span></span></code></pre></div><p><strong>Key Derivation</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">key_derivation</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">function</span><span class="p">:</span><span class="w"> </span><span class="l">hkdf-sha256</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">salt_size</span><span class="p">:</span><span class="w"> </span><span class="m">256</span><span class="w"> </span><span class="c"># bits</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">info</span><span class="p">:</span><span class="w"> </span><span class="s2">"geode-dek-v1"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Key rotation</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">rotation</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">master_key</span><span class="p">:</span><span class="w"> </span><span class="l">90d</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">kek</span><span class="p">:</span><span class="w"> </span><span class="l">180d</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">dek</span><span class="p">:</span><span class="w"> </span><span class="l">365d</span><span class="w">
</span></span></span></code></pre></div>
<h3 id="asymmetric-cryptography" class="position-relative d-flex align-items-center group">
<span>Asymmetric Cryptography</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="asymmetric-cryptography"
aria-haspopup="dialog"
aria-label="Share link: Asymmetric Cryptography">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="ed25519-digital-signatures" class="position-relative d-flex align-items-center group">
<span>Ed25519 Digital Signatures</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="ed25519-digital-signatures"
aria-haspopup="dialog"
aria-label="Share link: Ed25519 Digital Signatures">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Edwards-curve Digital Signature Algorithm for authentication and integrity:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Algorithm: Ed25519
</span></span><span class="line"><span class="cl">Key Size: 256 bits (32 bytes)
</span></span><span class="line"><span class="cl">Signature Size: 512 bits (64 bytes)
</span></span><span class="line"><span class="cl">Security Level: ~128 bits
</span></span></code></pre></div><p><strong>Characteristics</strong>:</p>
<ul>
<li>Fast signature generation and verification</li>
<li>Deterministic signatures (no random nonce needed)</li>
<li>Small keys and signatures</li>
<li>Resistant to timing attacks</li>
</ul>
<p><strong>Usage in Geode</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">signatures</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">algorithm</span><span class="p">:</span><span class="w"> </span><span class="l">ed25519</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Sign audit logs</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">audit_log_signing</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Sign backups</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">backup_signing</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Sign cluster communication</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">cluster_signing</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span></code></pre></div><p><strong>Code Example (Key Generation)</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Generate Ed25519 key pair</span>
</span></span><span class="line"><span class="cl">geode keygen --algorithm<span class="o">=</span>ed25519 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --output<span class="o">=</span>/etc/geode/keys/signing.key <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --public-output<span class="o">=</span>/etc/geode/keys/signing.pub
</span></span></code></pre></div>
<h4 id="ecdsa-signatures" class="position-relative d-flex align-items-center group">
<span>ECDSA Signatures</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="ecdsa-signatures"
aria-haspopup="dialog"
aria-label="Share link: ECDSA Signatures">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Elliptic Curve Digital Signature Algorithm for TLS certificates:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Curve: P-256 (secp256r1) or P-384 (secp384r1)
</span></span><span class="line"><span class="cl">Key Size: 256 or 384 bits
</span></span><span class="line"><span class="cl">Signature Size: ~64 or 96 bytes
</span></span></code></pre></div><p><strong>Certificate Configuration</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">tls</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">certificate</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">algorithm</span><span class="p">:</span><span class="w"> </span><span class="l">ecdsa</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">curve</span><span class="p">:</span><span class="w"> </span><span class="l">p-384 </span><span class="w"> </span><span class="c"># or p-256</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="x25519-key-exchange" class="position-relative d-flex align-items-center group">
<span>X25519 Key Exchange</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="x25519-key-exchange"
aria-haspopup="dialog"
aria-label="Share link: X25519 Key Exchange">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Elliptic Curve Diffie-Hellman for secure key agreement:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Algorithm: X25519 (Curve25519)
</span></span><span class="line"><span class="cl">Key Size: 256 bits
</span></span><span class="line"><span class="cl">Shared Secret: 256 bits
</span></span><span class="line"><span class="cl">Security Level: ~128 bits
</span></span></code></pre></div><p><strong>Usage in TLS 1.3</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">tls</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key_exchange</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">algorithms</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">x25519</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">secp384r1 </span><span class="w"> </span><span class="c"># fallback</span><span class="w">
</span></span></span></code></pre></div>
<h3 id="hashing-functions" class="position-relative d-flex align-items-center group">
<span>Hashing Functions</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="hashing-functions"
aria-haspopup="dialog"
aria-label="Share link: Hashing Functions">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="sha-256-and-sha-384" class="position-relative d-flex align-items-center group">
<span>SHA-256 and SHA-384</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="sha-256-and-sha-384"
aria-haspopup="dialog"
aria-label="Share link: SHA-256 and SHA-384">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Secure Hash Algorithm for data integrity:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">SHA-256:
</span></span><span class="line"><span class="cl"> Output Size: 256 bits (32 bytes)
</span></span><span class="line"><span class="cl"> Block Size: 512 bits
</span></span><span class="line"><span class="cl"> Use: General integrity checking
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">SHA-384:
</span></span><span class="line"><span class="cl"> Output Size: 384 bits (48 bytes)
</span></span><span class="line"><span class="cl"> Block Size: 1024 bits
</span></span><span class="line"><span class="cl"> Use: Higher security requirements
</span></span></code></pre></div><p><strong>Usage</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">integrity</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">algorithm</span><span class="p">:</span><span class="w"> </span><span class="l">sha-256 </span><span class="w"> </span><span class="c"># or sha-384</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Hash data pages</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">page_checksums</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Hash transaction logs</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">transaction_log_hashing</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="blake3" class="position-relative d-flex align-items-center group">
<span>BLAKE3</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="blake3"
aria-haspopup="dialog"
aria-label="Share link: BLAKE3">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Modern, high-performance cryptographic hash:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Algorithm: BLAKE3
</span></span><span class="line"><span class="cl">Output Size: Variable (default 256 bits)
</span></span><span class="line"><span class="cl">Speed: 4x faster than SHA-256
</span></span><span class="line"><span class="cl">Security Level: 128 bits
</span></span></code></pre></div><p><strong>Configuration</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">integrity</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">algorithm</span><span class="p">:</span><span class="w"> </span><span class="l">blake3</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Recommended for high-throughput scenarios</span><span class="w">
</span></span></span></code></pre></div>
<h3 id="password-hashing" class="position-relative d-flex align-items-center group">
<span>Password Hashing</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="password-hashing"
aria-haspopup="dialog"
aria-label="Share link: Password Hashing">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="argon2id" class="position-relative d-flex align-items-center group">
<span>Argon2id</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="argon2id"
aria-haspopup="dialog"
aria-label="Share link: Argon2id">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Memory-hard password hashing function (winner of Password Hashing Competition):</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Algorithm: Argon2id (hybrid of Argon2i and Argon2d)
</span></span><span class="line"><span class="cl">Output Size: Variable (recommended 256 bits)
</span></span><span class="line"><span class="cl">Parameters:
</span></span><span class="line"><span class="cl"> - Time Cost: Number of iterations
</span></span><span class="line"><span class="cl"> - Memory Cost: Memory usage in KB
</span></span><span class="line"><span class="cl"> - Parallelism: Number of threads
</span></span></code></pre></div><p><strong>Geode Default Configuration</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">auth</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">password_hashing</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">algorithm</span><span class="p">:</span><span class="w"> </span><span class="l">argon2id</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">time_cost</span><span class="p">:</span><span class="w"> </span><span class="m">3</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">memory_cost</span><span class="p">:</span><span class="w"> </span><span class="m">65536</span><span class="w"> </span><span class="c"># 64 MB</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">parallelism</span><span class="p">:</span><span class="w"> </span><span class="m">4</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">hash_length</span><span class="p">:</span><span class="w"> </span><span class="m">32</span><span class="w"> </span><span class="c"># bytes</span><span class="w">
</span></span></span></code></pre></div><p><strong>Security Considerations</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># High-security configuration</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">auth</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">password_hashing</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">algorithm</span><span class="p">:</span><span class="w"> </span><span class="l">argon2id</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">time_cost</span><span class="p">:</span><span class="w"> </span><span class="m">4</span><span class="w"> </span><span class="c"># More iterations</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">memory_cost</span><span class="p">:</span><span class="w"> </span><span class="m">131072</span><span class="w"> </span><span class="c"># 128 MB</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">parallelism</span><span class="p">:</span><span class="w"> </span><span class="m">8</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Target: ~500ms hash time on server hardware</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="password-hash-verification" class="position-relative d-flex align-items-center group">
<span>Password Hash Verification</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="password-hash-verification"
aria-haspopup="dialog"
aria-label="Share link: Password Hash Verification">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Verify</span><span class="w"> </span><span class="py">password</span><span class="w"> </span><span class="p">(</span><span class="py">internal</span><span class="w"> </span><span class="py">implementation</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Constant</span><span class="err">-</span><span class="py">time</span><span class="w"> </span><span class="py">comparison</span><span class="w"> </span><span class="py">prevents</span><span class="w"> </span><span class="py">timing</span><span class="w"> </span><span class="py">attacks</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Rate</span><span class="w"> </span><span class="py">limiting</span><span class="w"> </span><span class="py">prevents</span><span class="w"> </span><span class="py">brute</span><span class="w"> </span><span class="py">force</span><span class="w"> </span><span class="py">attacks</span><span class="w">
</span></span></span></code></pre></div>
<h3 id="message-authentication" class="position-relative d-flex align-items-center group">
<span>Message Authentication</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="message-authentication"
aria-haspopup="dialog"
aria-label="Share link: Message Authentication">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="hmac-sha256" class="position-relative d-flex align-items-center group">
<span>HMAC-SHA256</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="hmac-sha256"
aria-haspopup="dialog"
aria-label="Share link: HMAC-SHA256">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Hash-based Message Authentication Code for integrity and authenticity:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Algorithm: HMAC-SHA256
</span></span><span class="line"><span class="cl">Key Size: 256 bits
</span></span><span class="line"><span class="cl">Tag Size: 256 bits
</span></span></code></pre></div><p><strong>Usage</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">authentication</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># HMAC for API tokens</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">token_algorithm</span><span class="p">:</span><span class="w"> </span><span class="l">hmac-sha256</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># HMAC for session cookies</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">session_algorithm</span><span class="p">:</span><span class="w"> </span><span class="l">hmac-sha256</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="poly1305" class="position-relative d-flex align-items-center group">
<span>Poly1305</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="poly1305"
aria-haspopup="dialog"
aria-label="Share link: Poly1305">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>One-time authenticator, used with ChaCha20:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Algorithm: Poly1305
</span></span><span class="line"><span class="cl">Key Size: 256 bits
</span></span><span class="line"><span class="cl">Tag Size: 128 bits
</span></span></code></pre></div><p><strong>Note</strong>: Poly1305 keys must never be reused. Geode automatically manages key uniqueness.</p>
<h3 id="random-number-generation" class="position-relative d-flex align-items-center group">
<span>Random Number Generation</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="random-number-generation"
aria-haspopup="dialog"
aria-label="Share link: Random Number Generation">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="cryptographically-secure-prng" class="position-relative d-flex align-items-center group">
<span>Cryptographically Secure PRNG</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="cryptographically-secure-prng"
aria-haspopup="dialog"
aria-label="Share link: Cryptographically Secure PRNG">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Geode uses system-provided CSPRNGs:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Linux: /dev/urandom (getrandom syscall)
</span></span><span class="line"><span class="cl">macOS: SecRandomCopyBytes
</span></span><span class="line"><span class="cl">Windows: BCryptGenRandom
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Entropy Sources:
</span></span><span class="line"><span class="cl">- Hardware random (RDRAND/RDSEED)
</span></span><span class="line"><span class="cl">- Timing jitter
</span></span><span class="line"><span class="cl">- System events
</span></span><span class="line"><span class="cl">- Network traffic patterns
</span></span></code></pre></div><p><strong>Configuration</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">random</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">source</span><span class="p">:</span><span class="w"> </span><span class="l">system </span><span class="w"> </span><span class="c"># Uses OS CSPRNG</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">hardware_rng</span><span class="p">:</span><span class="w"> </span><span class="l">prefer </span><span class="w"> </span><span class="c"># Use hardware RNG when available</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Entropy health monitoring</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">entropy_check</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">min_entropy_bits</span><span class="p">:</span><span class="w"> </span><span class="m">256</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="nonce-generation" class="position-relative d-flex align-items-center group">
<span>Nonce Generation</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="nonce-generation"
aria-haspopup="dialog"
aria-label="Share link: Nonce Generation">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">encryption</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">nonce</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">generation</span><span class="p">:</span><span class="w"> </span><span class="l">random </span><span class="w"> </span><span class="c"># or counter-based</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">size</span><span class="p">:</span><span class="w"> </span><span class="m">96</span><span class="w"> </span><span class="c"># bits (12 bytes for AES-GCM)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Counter-based for high-volume encryption</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># counter:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># initial: random</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># increment: 1</span><span class="w">
</span></span></span></code></pre></div>
<h3 id="key-management" class="position-relative d-flex align-items-center group">
<span>Key Management</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="key-management"
aria-haspopup="dialog"
aria-label="Share link: Key Management">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="key-generation" class="position-relative d-flex align-items-center group">
<span>Key Generation</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="key-generation"
aria-haspopup="dialog"
aria-label="Share link: Key Generation">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Generate encryption key</span>
</span></span><span class="line"><span class="cl">geode keygen --algorithm<span class="o">=</span>aes-256 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --output<span class="o">=</span>/etc/geode/keys/master.key <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --format<span class="o">=</span>raw
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Generate with passphrase protection</span>
</span></span><span class="line"><span class="cl">geode keygen --algorithm<span class="o">=</span>aes-256 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --output<span class="o">=</span>/etc/geode/keys/master.key <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --protect-with-passphrase <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --kdf<span class="o">=</span>argon2id
</span></span></code></pre></div>
<h4 id="key-storage-options" class="position-relative d-flex align-items-center group">
<span>Key Storage Options</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="key-storage-options"
aria-haspopup="dialog"
aria-label="Share link: Key Storage Options">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p><strong>File-Based (Development)</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">encryption</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key_source</span><span class="p">:</span><span class="w"> </span><span class="l">file</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key_file</span><span class="p">:</span><span class="w"> </span><span class="l">/etc/geode/keys/master.key</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key_file_permissions</span><span class="p">:</span><span class="w"> </span><span class="m">0400</span><span class="w">
</span></span></span></code></pre></div><p><strong>Environment Variable</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">encryption</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key_source</span><span class="p">:</span><span class="w"> </span><span class="l">env</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key_env_var</span><span class="p">:</span><span class="w"> </span><span class="l">GEODE_MASTER_KEY</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key_encoding</span><span class="p">:</span><span class="w"> </span><span class="l">base64</span><span class="w">
</span></span></span></code></pre></div><p><strong>Hardware Security Module (HSM)</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">encryption</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key_source</span><span class="p">:</span><span class="w"> </span><span class="l">hsm</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">hsm</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">provider</span><span class="p">:</span><span class="w"> </span><span class="l">pkcs11</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">library</span><span class="p">:</span><span class="w"> </span><span class="l">/usr/lib/softhsm/libsofthsm2.so</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">slot</span><span class="p">:</span><span class="w"> </span><span class="m">0</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">pin_file</span><span class="p">:</span><span class="w"> </span><span class="l">/etc/geode/hsm-pin.txt</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key_label</span><span class="p">:</span><span class="w"> </span><span class="l">geode-master-key</span><span class="w">
</span></span></span></code></pre></div><p><strong>Cloud KMS</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">encryption</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key_source</span><span class="p">:</span><span class="w"> </span><span class="l">aws-kms</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">aws_kms</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key_id</span><span class="p">:</span><span class="w"> </span><span class="l">arn:aws:kms:us-east-1:123456789012:key/abc123</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">region</span><span class="p">:</span><span class="w"> </span><span class="l">us-east-1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c"># Or Google Cloud KMS</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">encryption</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key_source</span><span class="p">:</span><span class="w"> </span><span class="l">gcp-kms</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">gcp_kms</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key_name</span><span class="p">:</span><span class="w"> </span><span class="l">projects/PROJECT/locations/LOCATION/keyRings/RING/cryptoKeys/KEY</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c"># Or Azure Key Vault</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">encryption</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key_source</span><span class="p">:</span><span class="w"> </span><span class="l">azure-keyvault</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">azure_keyvault</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">vault_name</span><span class="p">:</span><span class="w"> </span><span class="l">geode-keys</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key_name</span><span class="p">:</span><span class="w"> </span><span class="l">master-key</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="key-rotation" class="position-relative d-flex align-items-center group">
<span>Key Rotation</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="key-rotation"
aria-haspopup="dialog"
aria-label="Share link: Key Rotation">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Rotate master key</span>
</span></span><span class="line"><span class="cl">geode key-rotate --key-type<span class="o">=</span>master <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --new-key-source<span class="o">=</span>hsm <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --grace-period<span class="o">=</span>24h
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Rotate data encryption keys</span>
</span></span><span class="line"><span class="cl">geode key-rotate --key-type<span class="o">=</span>dek <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --background<span class="o">=</span><span class="nb">true</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --throttle<span class="o">=</span>50mbps
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Check rotation status</span>
</span></span><span class="line"><span class="cl">geode key-rotate --status
</span></span></code></pre></div>
<h4 id="key-derivation" class="position-relative d-flex align-items-center group">
<span>Key Derivation</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="key-derivation"
aria-haspopup="dialog"
aria-label="Share link: Key Derivation">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">key_derivation</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># HKDF for deriving multiple keys from master</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">function</span><span class="p">:</span><span class="w"> </span><span class="l">hkdf</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">hash</span><span class="p">:</span><span class="w"> </span><span class="l">sha-256</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Domain separation</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">contexts</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">data</span><span class="p">:</span><span class="w"> </span><span class="s2">"geode-data-encryption-v1"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">index</span><span class="p">:</span><span class="w"> </span><span class="s2">"geode-index-encryption-v1"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">log</span><span class="p">:</span><span class="w"> </span><span class="s2">"geode-log-encryption-v1"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">backup</span><span class="p">:</span><span class="w"> </span><span class="s2">"geode-backup-encryption-v1"</span><span class="w">
</span></span></span></code></pre></div>
<h3 id="cryptographic-modes" class="position-relative d-flex align-items-center group">
<span>Cryptographic Modes</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="cryptographic-modes"
aria-haspopup="dialog"
aria-label="Share link: Cryptographic Modes">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="transparent-data-encryption-tde" class="position-relative d-flex align-items-center group">
<span>Transparent Data Encryption (TDE)</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="transparent-data-encryption-tde"
aria-haspopup="dialog"
aria-label="Share link: Transparent Data Encryption (TDE)">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Automatic encryption/decryption of data at storage layer:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">tde</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">algorithm</span><span class="p">:</span><span class="w"> </span><span class="l">aes-256-gcm</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># What to encrypt</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">encrypt</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">data_files</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">index_files</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">transaction_logs</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">temporary_files</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Performance tuning</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">cache_decrypted_pages</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">cache_size</span><span class="p">:</span><span class="w"> </span><span class="l">1GB</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="field-level-encryption-fle" class="position-relative d-flex align-items-center group">
<span>Field-Level Encryption (FLE)</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="field-level-encryption-fle"
aria-haspopup="dialog"
aria-label="Share link: Field-Level Encryption (FLE)">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Client-side encryption of specific fields:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Encrypt</span><span class="w"> </span><span class="py">sensitive</span><span class="w"> </span><span class="py">fields</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">INSERT</span><span class="w"> </span><span class="p">(:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="err">'</span><span class="nc">Alice</span><span class="w"> </span><span class="py">Smith</span><span class="err">'</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">email</span><span class="p">:</span><span class="w"> </span><span class="err">'</span><span class="nc">alice</span><span class="nd">@example</span><span class="err">.</span><span class="py">com</span><span class="err">'</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">ssn</span><span class="p">:</span><span class="w"> </span><span class="nc">encrypt</span><span class="p">(</span><span class="nv">$ssn</span><span class="p">,</span><span class="w"> </span><span class="err">'</span><span class="py">pii</span><span class="err">-</span><span class="py">key</span><span class="err">'</span><span class="p">,</span><span class="w"> </span><span class="err">'</span><span class="py">aes</span><span class="err">-</span><span class="py">256</span><span class="err">-</span><span class="py">gcm</span><span class="err">'</span><span class="p">),</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">salary</span><span class="p">:</span><span class="w"> </span><span class="nc">encrypt</span><span class="p">(</span><span class="nv">$salary</span><span class="p">,</span><span class="w"> </span><span class="err">'</span><span class="py">financial</span><span class="err">-</span><span class="py">key</span><span class="err">'</span><span class="p">,</span><span class="w"> </span><span class="err">'</span><span class="py">aes</span><span class="err">-</span><span class="py">256</span><span class="err">-</span><span class="py">gcm</span><span class="err">'</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">})</span><span class="err">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Decrypt</span><span class="w"> </span><span class="py">when</span><span class="w"> </span><span class="py">needed</span><span class="w"> </span><span class="p">(</span><span class="py">requires</span><span class="w"> </span><span class="py">key</span><span class="w"> </span><span class="py">access</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">email</span><span class="p">:</span><span class="w"> </span><span class="err">'</span><span class="nc">alice</span><span class="nd">@example</span><span class="err">.</span><span class="py">com</span><span class="err">'</span><span class="p">})</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="py">decrypt</span><span class="p">(</span><span class="py">p</span><span class="err">.</span><span class="py">ssn</span><span class="p">,</span><span class="w"> </span><span class="err">'</span><span class="py">pii</span><span class="err">-</span><span class="py">key</span><span class="err">'</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">ssn</span><span class="err">;</span><span class="w">
</span></span></span></code></pre></div><p><strong>Encryption Modes</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Deterministic</span><span class="w"> </span><span class="py">encryption</span><span class="w"> </span><span class="p">(</span><span class="py">allows</span><span class="w"> </span><span class="py">equality</span><span class="w"> </span><span class="py">comparison</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">encrypt_deterministic</span><span class="p">(</span><span class="nv">$value</span><span class="p">,</span><span class="w"> </span><span class="nv">$key</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Randomized</span><span class="w"> </span><span class="py">encryption</span><span class="w"> </span><span class="p">(</span><span class="py">maximum</span><span class="w"> </span><span class="py">security</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">encrypt_random</span><span class="p">(</span><span class="nv">$value</span><span class="p">,</span><span class="w"> </span><span class="nv">$key</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Searchable</span><span class="w"> </span><span class="py">encryption</span><span class="w"> </span><span class="p">(</span><span class="py">allows</span><span class="w"> </span><span class="py">pattern</span><span class="w"> </span><span class="py">matching</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">encrypt_searchable</span><span class="p">(</span><span class="nv">$value</span><span class="p">,</span><span class="w"> </span><span class="nv">$key</span><span class="p">)</span><span class="w">
</span></span></span></code></pre></div>
<h3 id="fips-140-2-compliance" class="position-relative d-flex align-items-center group">
<span>FIPS 140-2 Compliance</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="fips-140-2-compliance"
aria-haspopup="dialog"
aria-label="Share link: FIPS 140-2 Compliance">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><p>For organizations requiring FIPS 140-2 validated cryptography:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">fips</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">mode</span><span class="p">:</span><span class="w"> </span><span class="m">140-2</span><span class="w"> </span><span class="c"># or 140-3</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Use FIPS-validated crypto library</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">crypto_library</span><span class="p">:</span><span class="w"> </span><span class="l">openssl-fips</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Restrict to FIPS-approved algorithms</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">algorithms</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">encryption</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">aes-256-gcm</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">aes-256-cbc</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">hashing</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">sha-256</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">sha-384</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">sha-512</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">signatures</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">ecdsa-p256</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">ecdsa-p384</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">rsa-2048</span><span class="w">
</span></span></span></code></pre></div><p><strong>FIPS-Approved Algorithms in Geode</strong>:</p>
<table>
<thead>
<tr>
<th>Category</th>
<th>Algorithm</th>
<th>FIPS Status</th>
</tr>
</thead>
<tbody>
<tr>
<td>Symmetric</td>
<td>AES-256-GCM</td>
<td>Approved</td>
</tr>
<tr>
<td>Symmetric</td>
<td>ChaCha20-Poly1305</td>
<td>Not FIPS</td>
</tr>
<tr>
<td>Hash</td>
<td>SHA-256/384/512</td>
<td>Approved</td>
</tr>
<tr>
<td>Hash</td>
<td>BLAKE3</td>
<td>Not FIPS</td>
</tr>
<tr>
<td>Signature</td>
<td>ECDSA (P-256/P-384)</td>
<td>Approved</td>
</tr>
<tr>
<td>Signature</td>
<td>Ed25519</td>
<td>Not FIPS</td>
</tr>
<tr>
<td>Key Exchange</td>
<td>ECDH (P-256/P-384)</td>
<td>Approved</td>
</tr>
<tr>
<td>Key Exchange</td>
<td>X25519</td>
<td>Not FIPS</td>
</tr>
<tr>
<td>Password</td>
<td>PBKDF2-HMAC-SHA256</td>
<td>Approved</td>
</tr>
<tr>
<td>Password</td>
<td>Argon2id</td>
<td>Not FIPS</td>
</tr>
</tbody>
</table>
<h3 id="post-quantum-considerations" class="position-relative d-flex align-items-center group">
<span>Post-Quantum Considerations</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="post-quantum-considerations"
aria-haspopup="dialog"
aria-label="Share link: Post-Quantum Considerations">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><p>Geode is preparing for post-quantum cryptography:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml (experimental)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">post_quantum</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="c"># Not yet production-ready</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">algorithms</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key_encapsulation</span><span class="p">:</span><span class="w"> </span><span class="l">kyber-1024</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">signature</span><span class="p">:</span><span class="w"> </span><span class="l">dilithium-3</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Hybrid mode (classical + post-quantum)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">hybrid_mode</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span></code></pre></div><p><strong>Timeline</strong>: Full post-quantum support planned for 2027 following NIST standardization.</p>
<h3 id="performance-optimization" class="position-relative d-flex align-items-center group">
<span>Performance Optimization</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="performance-optimization"
aria-haspopup="dialog"
aria-label="Share link: Performance Optimization">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="hardware-acceleration" class="position-relative d-flex align-items-center group">
<span>Hardware Acceleration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="hardware-acceleration"
aria-haspopup="dialog"
aria-label="Share link: Hardware Acceleration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Check available hardware acceleration</span>
</span></span><span class="line"><span class="cl">geode crypto-check
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Output:</span>
</span></span><span class="line"><span class="cl"><span class="c1"># Hardware Acceleration Status:</span>
</span></span><span class="line"><span class="cl"><span class="c1"># AES-NI: Available</span>
</span></span><span class="line"><span class="cl"><span class="c1"># AVX2: Available</span>
</span></span><span class="line"><span class="cl"><span class="c1"># AVX-512: Available</span>
</span></span><span class="line"><span class="cl"><span class="c1"># SHA Extensions: Available</span>
</span></span><span class="line"><span class="cl"><span class="c1"># RDRAND: Available</span>
</span></span><span class="line"><span class="cl"><span class="c1"># RDSEED: Available</span>
</span></span><span class="line"><span class="cl"><span class="c1"># Estimated performance: 4.2 GB/s encryption</span>
</span></span></code></pre></div>
<h4 id="tuning-configuration" class="position-relative d-flex align-items-center group">
<span>Tuning Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="tuning-configuration"
aria-haspopup="dialog"
aria-label="Share link: Tuning Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">crypto</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Use hardware acceleration</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">hardware_acceleration</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Parallel encryption threads</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">threads</span><span class="p">:</span><span class="w"> </span><span class="m">4</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Batch size for encryption operations</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">batch_size</span><span class="p">:</span><span class="w"> </span><span class="l">4MB</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Cache encrypted pages</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">encryption_cache</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">size</span><span class="p">:</span><span class="w"> </span><span class="l">1GB</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="benchmarking" class="position-relative d-flex align-items-center group">
<span>Benchmarking</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="benchmarking"
aria-haspopup="dialog"
aria-label="Share link: Benchmarking">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Benchmark cryptographic operations</span>
</span></span><span class="line"><span class="cl">geode crypto-benchmark
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Output:</span>
</span></span><span class="line"><span class="cl"><span class="c1"># Encryption Benchmarks:</span>
</span></span><span class="line"><span class="cl"><span class="c1"># AES-256-GCM (1KB): 2.1M ops/sec</span>
</span></span><span class="line"><span class="cl"><span class="c1"># AES-256-GCM (1MB): 4.2 GB/sec</span>
</span></span><span class="line"><span class="cl"><span class="c1"># ChaCha20-Poly1305: 3.8 GB/sec</span>
</span></span><span class="line"><span class="cl"><span class="c1">#</span>
</span></span><span class="line"><span class="cl"><span class="c1"># Hashing Benchmarks:</span>
</span></span><span class="line"><span class="cl"><span class="c1"># SHA-256: 5.1 GB/sec</span>
</span></span><span class="line"><span class="cl"><span class="c1"># BLAKE3: 12.4 GB/sec</span>
</span></span><span class="line"><span class="cl"><span class="c1">#</span>
</span></span><span class="line"><span class="cl"><span class="c1"># Signature Benchmarks:</span>
</span></span><span class="line"><span class="cl"><span class="c1"># Ed25519 sign: 55,000 ops/sec</span>
</span></span><span class="line"><span class="cl"><span class="c1"># Ed25519 verify: 18,000 ops/sec</span>
</span></span></code></pre></div>
<h3 id="security-best-practices" class="position-relative d-flex align-items-center group">
<span>Security Best Practices</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="security-best-practices"
aria-haspopup="dialog"
aria-label="Share link: Security Best Practices">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="1-use-authenticated-encryption" class="position-relative d-flex align-items-center group">
<span>1. Use Authenticated Encryption</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="1-use-authenticated-encryption"
aria-haspopup="dialog"
aria-label="Share link: 1. Use Authenticated Encryption">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># Always use AEAD modes</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">encryption</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">algorithm</span><span class="p">:</span><span class="w"> </span><span class="l">aes-256-gcm </span><span class="w"> </span><span class="c"># Not aes-256-cbc</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># GCM provides confidentiality AND integrity</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="2-protect-keys-appropriately" class="position-relative d-flex align-items-center group">
<span>2. Protect Keys Appropriately</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="2-protect-keys-appropriately"
aria-haspopup="dialog"
aria-label="Share link: 2. Protect Keys Appropriately">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># Production: Use HSM or KMS</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">encryption</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key_source</span><span class="p">:</span><span class="w"> </span><span class="l">hsm </span><span class="w"> </span><span class="c"># Not file</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c"># Never store keys in code or version control</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="3-rotate-keys-regularly" class="position-relative d-flex align-items-center group">
<span>3. Rotate Keys Regularly</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="3-rotate-keys-regularly"
aria-haspopup="dialog"
aria-label="Share link: 3. Rotate Keys Regularly">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">key_rotation</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">master_key</span><span class="p">:</span><span class="w"> </span><span class="l">90d</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">encryption_keys</span><span class="p">:</span><span class="w"> </span><span class="l">365d</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">session_keys</span><span class="p">:</span><span class="w"> </span><span class="l">24h</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="4-use-strong-random-numbers" class="position-relative d-flex align-items-center group">
<span>4. Use Strong Random Numbers</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="4-use-strong-random-numbers"
aria-haspopup="dialog"
aria-label="Share link: 4. Use Strong Random Numbers">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">random</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">source</span><span class="p">:</span><span class="w"> </span><span class="l">system</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">hardware_rng</span><span class="p">:</span><span class="w"> </span><span class="l">require </span><span class="w"> </span><span class="c"># Fail if unavailable</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="5-implement-key-separation" class="position-relative d-flex align-items-center group">
<span>5. Implement Key Separation</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="5-implement-key-separation"
aria-haspopup="dialog"
aria-label="Share link: 5. Implement Key Separation">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># Different keys for different purposes</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">keys</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">data_encryption</span><span class="p">:</span><span class="w"> </span><span class="l">key1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">backup_encryption</span><span class="p">:</span><span class="w"> </span><span class="l">key2</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">audit_signing</span><span class="p">:</span><span class="w"> </span><span class="l">key3</span><span class="w">
</span></span></span></code></pre></div>
<h3 id="troubleshooting" class="position-relative d-flex align-items-center group">
<span>Troubleshooting</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="troubleshooting"
aria-haspopup="dialog"
aria-label="Share link: Troubleshooting">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="verifying-cryptographic-configuration" class="position-relative d-flex align-items-center group">
<span>Verifying Cryptographic Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="verifying-cryptographic-configuration"
aria-haspopup="dialog"
aria-label="Share link: Verifying Cryptographic Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Check crypto status</span>
</span></span><span class="line"><span class="cl">geode crypto-status
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Verify encryption is working</span>
</span></span><span class="line"><span class="cl">geode crypto-test
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Check key availability</span>
</span></span><span class="line"><span class="cl">geode key-verify --key-source<span class="o">=</span>hsm
</span></span></code></pre></div>
<h4 id="common-issues" class="position-relative d-flex align-items-center group">
<span>Common Issues</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="common-issues"
aria-haspopup="dialog"
aria-label="Share link: Common Issues">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p><strong>Slow Encryption</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Check if hardware acceleration is available</span>
</span></span><span class="line"><span class="cl">geode crypto-check
</span></span><span class="line"><span class="cl"><span class="c1"># If AES-NI not available, consider ChaCha20-Poly1305</span>
</span></span></code></pre></div><p><strong>Key Access Failures</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Verify HSM connectivity</span>
</span></span><span class="line"><span class="cl">geode hsm-test --provider<span class="o">=</span>pkcs11
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Check key permissions</span>
</span></span><span class="line"><span class="cl">geode key-verify --verbose
</span></span></code></pre></div>
<h3 id="related-topics" class="position-relative d-flex align-items-center group">
<span>Related Topics</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="related-topics"
aria-haspopup="dialog"
aria-label="Share link: Related Topics">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><ul>
<li><a
href="/tags/encryption/"
>Encryption</a>
- Data encryption configuration</li>
<li><a
href="/tags/tls/"
>TLS</a>
- Transport layer security</li>
<li><a
href="/tags/security/"
>Security</a>
- Security overview</li>
<li><a
href="/tags/compliance/"
>Compliance</a>
- Regulatory requirements</li>
<li><a
href="/tags/key-management/"
>Key Management</a>
- Key lifecycle management</li>
<li><a
href="/tags/post-quantum/"
>Post-Quantum</a>
- Future-proof cryptography</li>
</ul>
<h3 id="further-reading" class="position-relative d-flex align-items-center group">
<span>Further Reading</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="further-reading"
aria-haspopup="dialog"
aria-label="Share link: Further Reading">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><ul>
<li><a
href="/docs/architecture/security-architecture/"
>Security Architecture</a>
- Security design</li>
<li><a
href="/docs/security/overview/"
>Security Overview</a>
- Encryption configuration</li>
<li><a
href="/docs/security/field-level-encryption/"
>Field-Level Encryption</a>
- FLE implementation</li>
<li>Cryptographic Whitepaper - Detailed algorithm specifications</li>
</ul>
Tag
1 article
Cryptography and Cryptographic Primitives
Complete guide to cryptographic implementations in Geode. Learn about encryption algorithms, hashing functions, key management, digital signatures, and cryptographic best practices for securing graph database operations.