Researchers
Empirical research notes
ForgeHash-B3 v1 — living notes (2026-07-20). Hub: researchers. Full markdown: docs/RESEARCH_REPORT.md.
Not a security proof. Prefer Argon2id, scrypt, bcrypt, or platform password APIs for production credentials. AI tools assisted some drafting; most of this report was written by hand — see AI.md.
1. Purpose
ForgeHash-B3 is a configurable, memory-hard password hashing construction on BLAKE3. The project publishes a versioned specification, frozen vectors, multi-language ports, and tooling for empirical study.
2. Construction (short)
| Piece | Role |
|---|---|
| Seed | BLAKE3 derive-key, context ForgeHash/v1/seed |
| Expand | BLAKE3 XOF, prefix ForgeHash/v1/expand |
| Memory | 1024-byte blocks / 128×u64 LE words |
| ForgeMix | 8 rounds + perm + feed-forward |
| Addressing | Password-dependent FastRange |
| Encoding | $forgeh$v=1$m,t,p$salt$hash |
Normative text: SPECIFICATION.md.
3. Conformance
Claim ForgeHash-B3 v1 compatible only when all official vectors match bit-exactly.
| Vector | hashHex (prefix…) |
|---|---|
| 1 | 50aa2141…be4e |
| 2 | 02acdfa7…6a98 |
| 3 | fc2f2e6b…61ba |
| 4 | 158230bd…0b3d |
.NET, Rust, Node.js, and Python references pass all four. C++/PHP wrap the Rust C ABI.
4. Collision campaigns
Engine: ForgeHash.Analysis.CollisionCampaign (xUnit + Collision Lab). Empirical uniqueness smoke hunts — not birthday-bound proofs.
100 000 random pairs (2026-07-20)
| Kind | RandomPairs |
| Samples | 100 000 |
| Collisions | 0 |
| Parameters | Development (8192 KiB, t=1, p=1, out=32) |
| Tool | Collision Lab (multi-worker) |
No accidental final-hash collision among 10⁵ random password/salt pairs at Development cost. Encouraging consistency data — not a collision-resistance proof.
dotnet run --project src/ForgeHash.CollisionLab -c Release
5. Reference / TMTO snapshot
From ForgeHash.Visualizer at 8192 KiB, t=1, p=2:
- 8188 total references; 97 cross-lane (~1.18%)
- Stride retention heuristic: keepEvery 2 → ~1.50× est. extra ForgeMix; keepEvery 8 → ~4.50×
TMTO ladder is a diagnostic model, not an adversarial lower bound.
dotnet run --project src/ForgeHash.Visualizer -c Release -- all --out artifacts/analysis --memory 8192 --iterations 1 --parallelism 2
6. Other automated checks
- Avalanche smoke: single-bit flips change ~35–65% of output bits
- Memory influence / reference distribution / parallel≡sequential
- Strict parser + allocation limits
7. Intentional risks
Password-dependent addressing can frustrate some cracking schedules and increases local side-channel exposure. No side-channel lab measurements ship yet.
8. Open questions
- Irregular TMTO checkpoints cheaper than the stride model?
- ForgeMix efficiency on GPU shared memory / registers?
- Short cycles or pathological salts in the reference graph?
- Practical timing leakage on shared cloud hosts?
- Same 10⁵ uniqueness campaigns at Interactive / Sensitive cost?
- Independent re-implementation review outside this repo?
9. Closing
ForgeHash-B3 v1 is ready for experimentation, porting, and measurement. It is not ready for protecting production credentials.