<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Security on Momo Engineering Journal</title><link>/tags/security/</link><description>Recent content in Security on Momo Engineering Journal</description><image><title>Momo Engineering Journal</title><url>/images/og-image.png</url><link>/images/og-image.png</link></image><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 21 Oct 2026 11:26:56 -0600</lastBuildDate><atom:link href="/tags/security/index.xml" rel="self" type="application/rss+xml"/><item><title>⚡ Bolt: Zero-Allocation SigV4 Canonical Headers</title><link>/posts/057-bolt-sigv4-zero-alloc-headers/</link><pubDate>Thu, 15 Oct 2026 11:43:50 +0000</pubDate><guid>/posts/057-bolt-sigv4-zero-alloc-headers/</guid><description>Every authenticated S3 request rebuilds a SigV4 canonical-headers block — and the two obvious ways to write it (strings.Split and Header.Get) each allocate on the hottest authorization path. This post walks through replacing both with an IndexByte scan and an EqualFold lookup, and the golden-equivalence test that proves the rewrite is byte-identical for every request AWS clients actually send.</description></item><item><title>Seams, Not Plugins: A Fast Path That Stays Concrete</title><link>/posts/044-plugin-seam-architecture/</link><pubDate>Wed, 26 Aug 2026 16:45:18 +0000</pubDate><guid>/posts/044-plugin-seam-architecture/</guid><description>Adaptive behaviors use compile-time Go interface seams injected at decision points — not dynamic plugins. The fast path stays concrete; the trust core stays auditable; policy is declarative.</description></item><item><title>Rotating Secrets Without a Secret Server: Deriving, Versioning, and Hot-Reloading Keys</title><link>/posts/054-secrets-management-key-rotation/</link><pubDate>Tue, 25 Aug 2026 03:25:35 +0000</pubDate><guid>/posts/054-secrets-management-key-rotation/</guid><description>How momo manages encryption keys without a central secret server: a pluggable provider chain (env, then config file), a per-node versioned key registry in local storage, and rotation that promotes a new key without any downtime. Teaches: why a provider chain beats a single source, how key versioning enables online rotation, and when rotation is and is not worth the complexity.</description></item><item><title>Tenant Isolation: Deriving Per-Tenant Keys, Enforcing ACLs, and Proving What Happened</title><link>/posts/053-multitenancy-authorization-audit/</link><pubDate>Tue, 25 Aug 2026 03:25:29 +0000</pubDate><guid>/posts/053-multitenancy-authorization-audit/</guid><description>How momo isolates tenants without a central secret server: HKDF-derived per-tenant keys, default-deny ACLs evaluated per request, and a SHA-256 hash-chained audit log that makes tampering detectable. Teaches: key derivation vs. key storage, why ACL evaluation order matters, and how hash chaining turns a log into evidence.</description></item><item><title>The Sentinel Sweep: An Audit-Driven Security Journey</title><link>/posts/015-sentinel-security-audit/</link><pubDate>Tue, 04 Aug 2026 00:47:24 +0000</pubDate><guid>/posts/015-sentinel-security-audit/</guid><description>A 76-deep audit (authed via Sentinel) surfaced CRLF injection, smuggling, traversal and path leaks — the pattern that forged momo&amp;rsquo;s security mindset.</description></item><item><title>🛡 Zero-Crash Hardening: Defensive Patterns for a Networked Object Store</title><link>/posts/037-zero-crash-hardening-patterns/</link><pubDate>Wed, 03 Jun 2026 06:03:39 +0000</pubDate><guid>/posts/037-zero-crash-hardening-patterns/</guid><description>Systematic defensive coding: nil-safety, numeric overflow guards, resource lifecycle discipline, panic recovery at every boundary, and concurrency safety under -race.</description></item></channel></rss>