Expand description
Error code obfuscation (always on).
Makes systematic error code fingerprinting harder by adding per-session offsets to error codes. The same semantic error will have different codes across sessions, making it harder for attackers to build a code map.
§Security Model
- Namespace preserved: Still “CFG”, “IO”, etc. (needed for Display)
- Category preserved: Still Configuration, I/O, etc.
- Numeric code obfuscated: E-CFG-100 becomes E-CFG-103, E-CFG-107, etc.
- Session-specific: Different salt per connection/session
- Deterministic within session: Same error = same obfuscated code
§Threat Mitigation
Without obfuscation:
Attacker triggers 100 errors, sees:
E-CFG-100 (repeated 50x)
E-CFG-101 (repeated 30x)
E-CFG-104 (repeated 20x)
Maps to source code, identifies:
- 100 = parser.rs:42
- 101 = validator.rs:89
- 104 = permissions.rs:156With obfuscation:
Session 1: E-CFG-103, E-CFG-104, E-CFG-107
Session 2: E-CFG-101, E-CFG-102, E-CFG-105
Session 3: E-CFG-106, E-CFG-107, E-CFG-110
Attacker cannot correlate codes across sessions.
Fingerprinting requires compromising a session to learn its salt.§Performance
Overhead: Initialize session salt: 352 ps (2.8T ops/sec) Obfuscate error code: 14 ns (71.4M ops/sec) Generate random salt: 72 ns (13.9M ops/sec) Error with obfuscation: 243 ns (4.1M errors/sec)
Functions§
- clear_
session_ salt - Clear session salt (revert to no obfuscation).
- generate_
random_ salt - Generate a random session salt using system entropy.
- get_
session_ salt - Get current session salt value.
- init_
session_ salt - Initialize session-specific error code salt.
- obfuscate_
code - Apply obfuscation to an error code using current session salt.