BoltHash Security Whitepaper
Threat model, security architecture, and cryptographic design for Node.js source protection and software licensing.
Overview
BoltHash is a multi-layer protection system for Node.js applications. It combines source obfuscation, cryptographic integrity verification, license enforcement, and hardware-bound access control. This document describes the technical mechanisms behind each layer and their threat coverage.
bolt protect, bolt start), the BoltHash server API, and the Bolt Dev / Bolt Client desktop applications.
Security Threat Model
BoltHash is designed to defend Node.js applications against three categories of threats:
Threat 1: Source Code Exfiltration
An attacker obtains your deployed application directory and reads your business logic, API secrets, or proprietary algorithms directly from JavaScript files.
Threat 2: License Bypass
An attacker modifies the license verification code to always return true, or shares one paid key across many deployments.
Threat 3: Unauthorized Redistribution
A customer re-sells your software or deploys it on unapproved machines.
Security Architecture
The diagram below illustrates the full protection pipeline — from the developer's bolt protect command through the BoltHash server to the customer's bolt start verification flow.
Cryptographic Design
SHA-256 Integrity Hashing
Every file in the protected output is hashed with SHA-256. The hashes are stored in __bolt_manifest.json. On startup, bolt start recomputes every hash and compares — any modification, even a single byte, fails the check.
HMAC Manifest Signing
The manifest is signed with an auto-generated HMAC secret stored in ~/.bolt/config.json. This prevents an attacker from modifying files AND regenerating the manifest. The secret is created on first bolt protect and reused automatically by bolt start.
Hardware Fingerprint
BoltHash collects a salted combination of: CPU model, MAC address (first NIC, salted), OS platform + architecture, and hostname. These are hashed with SHA-512 and stored server-side against the license key. Only the hash is transmitted — raw hardware data never leaves the machine.
What BoltHash Protects — and What It Does Not
Protected against:
- Casual source reading — obfuscation makes code practically unreadable
- License key sharing — concurrent heartbeat monitoring detects multiple simultaneous uses
- Cold redistribution — hardware fingerprint blocks running on unapproved machines
- Post-deployment tampering — integrity hash fails at startup if any file was modified
- Expired/revoked key usage — online license check rejects invalid keys in real time
Not protected against:
- Determined reverse engineers — obfuscation adds cost, not mathematical impossibility
- Full memory dumps at runtime — all JS code is eventually executed in V8 as plaintext
- Node.js runtime modifications — a patched Node binary could bypass checks