Knowledge Base — Signed & Encrypted Crypto Intelligence Package
The Knowledge Base (KB) is the authoritative cryptographic intelligence layer of CipherShift365. It is a signed, encrypted binary package that tells every module which algorithms are safe, vulnerable, or broken, and what to migrate to.
Table of Contents
- What It Does
- Why It's Needed
- Architecture Overview
- Installation
- How to Run / Use
- User Manual
- Developer Manual
- Code Examples
- API Reference
- Configuration Options
- Value Showcase
What It Does
The Knowledge Base is a versioned, cryptographically protected data package consumed by every CipherShift365 module:
| Capability | Description |
|---|---|
| Package Format | Signed (HMAC-SHA256) + Encrypted (AES-256-GCM). Tamper-evident and confidentiality-protected. |
| KbBuilder | Builds signed+encrypted KB packages from programmatic content |
| KbLoader | Loads, verifies signature, and decrypts KB packages. Returns structured content or rejection reason. |
| Algorithm Entries | Per-algorithm risk classification (QuantumSafe, QuantumVulnerable, Mitigable, QuantumBroken) with standards references, migration notes, and PQC recommendations |
| Compliance Profiles | Named profiles (e.g., CNSA 2.0) with required algorithm lists and minimum acceptable risk levels |
| Runtime Classification Subset | Stripped-down KB variant for in-process runtime use — no migration notes, no recommendations, classification only |
| Versioning | Semver-based (KbVersion): major.minor.patch with optional pre-release tags |
| Query Interface | IKnowledgeBase.TryGetEntry() for fast algorithm lookups; Recommend() for PQC migration guidance |
KB Package Format (Binary Layout)
Magic bytes: 0x43534B42 = ASCII CSKB (CipherShift Knowledge Base)
Why It's Needed
The Problem
Cryptographic guidance changes. NIST finalizes new standards. CNSA updates its advisory. Vulnerabilities are discovered. Without a centralized, version-controlled intelligence layer:
- Each module independently hardcodes "safe algorithm" lists → inconsistencies
- Updating guidance requires code changes and redeployment across the entire platform
- Auditors cannot verify what guidance was applied at a given time
- Tampered or outdated KBs can cause false positives or, worse, false negatives
The Value Proposition
| Stakeholder | Benefit |
|---|---|
| Security Architects | Update cryptographic guidance once; every module gets the update automatically |
| Operations | Distribute a single signed file — no code redeployment needed for guidance updates |
| Compliance Officers | Each KB version is a timestamped, signed artifact proving what guidance was enforced |
| Application Developers | KB-driven recommendations eliminate guesswork about PQC migration targets |
| Air-Gapped Environments | Self-contained binary file. No network calls. No online dependency. |
The Knowledge Base is to CipherShift365 what virus definitions are to antivirus software: a continuously updatable intelligence feed that makes every module smarter without code changes.
Architecture Overview
Design Principles
- Defense in Depth: Signing + encryption. Tampering is detected by HMAC mismatch. Content is encrypted for confidentiality.
- Air-Gap First: No network dependency. The KB is a self-contained binary file.
- Data-Driven: All cryptographic intelligence is in the KB, not in code. Updating guidance never requires a code change.
- Consistent Across Modules: Compass, Vault, Guardian Gate, and Guardian Runtime all read from the same KB format.
Installation
Knowledge Base types are in CipherShift365.Core.Runtime:
dotnet add package CipherShift365.Core.Runtime
<PackageReference Include="CipherShift365.Core.Runtime" Version="1.0.0" />
No external dependencies. The package targets net8.0 and net10.0 and is AOT-compatible.
How to Run / Use
Building a KB Package
using CipherShift365.Core.Runtime;
var encryptionKey = new byte[32]; // AES-256 key (32 bytes)
var signingKey = new byte[32]; // HMAC-SHA256 key (32 bytes)
RandomNumberGenerator.Fill(encryptionKey);
RandomNumberGenerator.Fill(signingKey);
var metadata = new KbPackageMetadata(
KbVersion: new KbVersion(2, 1, 0),
CreatedAt: DateTimeOffset.UtcNow,
EncryptionAlgorithm: "AES-256-GCM",
SigningAlgorithm: "HMAC-SHA256",
Description: "Q1 2026 KB update — CNSA 2.0 + NIST PQC standards");
var entries = new List<KbEntry>
{
new("ML-KEM-1024", CryptoRole.Kem, RiskLevel.QuantumSafe,
StandardsReferences: new[] { "FIPS 203", "CNSA 2.0" },
MigrationNotes: "Use as primary KEM."),
new("ML-DSA-87", CryptoRole.Signature, RiskLevel.QuantumSafe,
StandardsReferences: new[] { "FIPS 204", "CNSA 2.0" }),
new("RSA", CryptoRole.Signature, RiskLevel.QuantumBroken,
StandardsReferences: new[] { "CNSA 2.0" },
MigrationNotes: "Replace with ML-DSA-87.")
};
var profiles = new[] { cnsaProfile };
var content = new KbPackageContent(metadata, entries.AsReadOnly(), profiles);
var builder = new KbBuilder(encryptionKey, signingKey);
byte[] package = builder.Build(content);
File.WriteAllBytes("knowledge-base.cskb", package);
Loading a KB Package
var loader = new KbLoader(encryptionKey, signingKey);
byte[] package = File.ReadAllBytes("knowledge-base.cskb");
var result = loader.Load(package);
if (!result.IsValid)
{
Console.WriteLine($"KB load failed: {result.Outcome} — {result.ErrorDetail}");
// Possible outcomes:
// Tampered — package was modified after signing
// InvalidSignature — HMAC mismatch
// UnsupportedFormat — bad magic bytes or format version
// DecryptionFailed — wrong decryption key or corrupted ciphertext
return;
}
// Create an in-memory knowledge base for queries
var kb = new SignedKnowledgeBase(result.Content!);
Console.WriteLine($"KB v{kb.Version} loaded. {result.Content!.Entries.Count} entries.");
Querying the Knowledge Base
// Check if an algorithm is known
if (kb.TryGetEntry("RSA", out var entry))
{
Console.WriteLine($"RSA: {entry.Risk} — {entry.Description}");
Console.WriteLine($"Standards: {string.Join(", ", entry.StandardsReferences ?? Array.Empty<string>())}");
Console.WriteLine($"Migration: {entry.MigrationNotes}");
}
// Get a PQC recommendation
var rec = kb.Recommend(CryptoRole.Signature, "ECDSA", new CryptoParameters());
Console.WriteLine($"Replace ECDSA with: {rec.Algorithm} — {rec.Rationale}");
// Enumerate compliance profiles
foreach (var profile in kb.ComplianceProfiles)
{
Console.WriteLine($"{profile.Name} v{profile.Version}: " +
$"requires {profile.RequiredAlgorithms.Count} algorithms, " +
$"minimum risk: {profile.MinimumAcceptableRisk}");
}
User Manual
KB Entry Anatomy
Each KbEntry describes a cryptographic algorithm:
new KbEntry(
Algorithm: "ML-KEM-1024", // Canonical algorithm name
Role: CryptoRole.Kem, // Cryptographic role
Risk: RiskLevel.QuantumSafe, // Risk classification
Description: "CNSA 2.0 approved", // Human-readable
StandardReference: "FIPS 203", // Single primary standard
SecurityLevel: 5, // NIST security level (1-5)
Recommendations: new[] { // PQC migration targets
new Recommendation("ML-KEM-1024", ...)
},
StandardsReferences: new[] { // All applicable standards
"FIPS 203", "CNSA 2.0"
},
MigrationNotes: "Use ML-KEM-1024 as primary KEM.",
ParametersConsidered: new CryptoParameters(...) // Key size, mode, etc.
);
| Field | Required | Description |
|---|---|---|
Algorithm |
✅ | Canonical name (e.g., ML-KEM-1024). Used as the lookup key. |
Role |
✅ | Kem, Signature, Symmetric, Hash, KeyExchange, Other |
Risk |
✅ | QuantumSafe, Mitigable, QuantumVulnerable, QuantumBroken |
Description |
— | Human-readable explanation |
StandardReference |
— | Primary standard (legacy field; prefer StandardsReferences) |
SecurityLevel |
— | NIST security level (1-5) |
Recommendations |
— | Ordered list of PQC migration targets |
StandardsReferences |
— | All applicable standards (e.g., FIPS 203, CNSA 2.0) |
MigrationNotes |
— | Guidance for replatforming |
ParametersConsidered |
— | Specific key size, mode, padding to match |
Compliance Profiles
A ComplianceProfile defines a named set of requirements:
new ComplianceProfile(
Name: "CNSA 2.0",
Version: "2024-09",
RequiredAlgorithms: new[] { "ML-KEM-1024", "ML-DSA-87", "AES-256", "SHA-384", "SHA-512", "LMS", "XMSS" },
MinimumAcceptableRisk: RiskLevel.QuantumSafe,
Description: "CNSA 2.0 requires quantum-safe algorithms for all cryptographic operations.");
Profiles are embedded in the KB and available at runtime:
foreach (var profile in kb.ComplianceProfiles)
{
// Use profile to drive validation
var validator = new CnsaValidator(kb, profile, timeline);
var result = validator.Validate(cbom);
}
The Recommend() Method
SignedKnowledgeBase.Recommend() provides a single primary migration target:
// Explicit entry in KB → returns first recommendation in the list
// No entry in KB → returns hardcoded defaults:
// Signature → ML-DSA-65
// KEM → ML-KEM-768
// Symmetric → AES-256-GCM
// Hash → SHA-512
// Unknown → ML-KEM-768
var rec = kb.Recommend(CryptoRole.Signature, "RSA", new CryptoParameters());
// rec.Algorithm = "ML-DSA-87" (if defined in KB entry)
// rec.Rationale = "CNSA 2.0 approved for digital signatures (FIPS 204)."
Runtime Classification Subset
When the full KB is too large for in-process runtime use (e.g., Guardian Runtime), build a stripped version:
var builder = new KbBuilder(encryptionKey, signingKey);
byte[] runtimePackage = builder.BuildRuntimeSubset(fullContent);
// The runtime subset:
// ✅ Algorithm entries with risk classification
// ✅ Compliance profiles
// ❌ Migration notes (removed)
// ❌ Recommendations (set to null)
This reduces the package size for bandwidth-sensitive distribution (e.g., pushing to 10,000 microservice instances).
Versioning
KbVersion follows semantic versioning:
| Version | Meaning |
|---|---|
2.0.0 |
Major: breaking change to the KB schema or algorithm taxonomy |
2.1.0 |
Minor: new algorithms added, risk levels updated |
2.1.1 |
Patch: description fixes, standards reference corrections |
2.2.0-preview |
Pre-release: draft KB for testing before distribution |
Comparison operators are fully supported:
var v1 = KbVersion.Parse("2.0.0");
var v2 = KbVersion.Parse("2.1.0");
Console.WriteLine(v1 < v2); // True
Console.WriteLine(v1 == v2); // False
Developer Manual
Class Hierarchy
KbBuilder
├── Constructor: byte[] encryptionKey, byte[] signingKey
├── Build(KbPackageContent) → byte[]
└── BuildRuntimeSubset(KbPackageContent) → byte[]
KbLoader
├── Constructor: byte[] encryptionKey, byte[] signingKey
├── Load(byte[] package) → KbLoadResult
└── LoadAsKnowledgeBase(byte[] package) → SignedKnowledgeBase
KbPackageFormat (internal static)
├── Magic: 0x43534B42
├── FormatVersion: 1
├── NonceSize: 12, TagSize: 16, HmacSize: 32
├── Build(KbPackageContent, byte[] encKey, byte[] signKey) → byte[]
└── Load(byte[] package, byte[] encKey, byte[] signKey) → KbLoadResult
SignedKnowledgeBase : IKnowledgeBase
├── Version: KbVersion
├── ComplianceProfiles: IReadOnlyList<ComplianceProfile>
├── TryGetEntry(string algorithm, out KbEntry entry) → bool
└── Recommend(CryptoRole, string, CryptoParameters) → Recommendation
KbPackageContent (record)
├── Metadata: KbPackageMetadata
├── Entries: IReadOnlyList<KbEntry>
└── ComplianceProfiles: IReadOnlyList<ComplianceProfile>?
KbPackageMetadata (record)
├── KbVersion: KbVersion
├── CreatedAt: DateTimeOffset
├── EncryptionAlgorithm: string
├── SigningAlgorithm: string
└── Description: string?
KbLoadResult (readonly record struct)
├── Outcome: KbLoadOutcome { Valid, Tampered, InvalidSignature, UnsupportedFormat, DecryptionFailed, UnknownVersion }
├── Content: KbPackageContent?
├── ErrorDetail: string?
└── IsValid: bool
KbBuildOutput (enum)
├── Full
└── RuntimeClassificationOnly
Package Format Internals
The KbPackageFormat class implements the binary protocol:
// Build:
// 1. Serialize metadata → JSON → UTF-8 bytes (header)
// 2. Serialize content → JSON → UTF-8 bytes (payload)
// 3. Generate 12-byte random nonce
// 4. Encrypt payload with AES-256-GCM → ciphertext + 16-byte tag
// 5. Write: magic(4) + version(1) + headerLen(4) + header + nonce(12) + tag(16) + ciphertext
// 6. Compute HMAC-SHA256 over everything above → append 32 bytes
// Load:
// 1. Extract last 32 bytes → stored HMAC
// 2. Compute HMAC over preceding bytes → compare in constant time
// 3. Read magic bytes → verify 0x43534B42
// 4. Read format version → verify 0x01
// 5. Read header length → extract header JSON
// 6. Read nonce + tag + ciphertext
// 7. Decrypt with AES-256-GCM
// 8. Deserialize payload JSON
Error Outcomes in Detail
| Outcome | Cause | Recommended Action |
|---|---|---|
Valid |
Package loaded successfully | Proceed |
Tampered |
Binary modified after signing | Reject. Investigate integrity breach. |
InvalidSignature |
HMAC mismatch | Wrong signing key or package corrupted. |
UnsupportedFormat |
Bad magic bytes or unknown version | KB was built with an incompatible tool. |
DecryptionFailed |
Wrong encryption key or corrupted ciphertext | Verify encryption key. Re-download package. |
UnknownVersion |
(Reserved) | N/A |
Constant-Time Verification
HMAC comparison uses CryptographicOperations.FixedTimeEquals() to prevent timing side-channel attacks during signature verification. An attacker cannot learn valid HMAC bytes by measuring response times.
JSON Serialization Context
KB packages use CbomSerializerContext for source-generated JSON serialization, enabling Native AOT compatibility:
JsonSerializer.Serialize(content.Metadata, CbomSerializerContext.Default.KbPackageMetadata)
This avoids reflection-based serialization and ensures the KB can be loaded in trimmed/AOT deployments.
Thread Safety
KbBuilderandKbLoader: Stateless operations. Thread-safe.SignedKnowledgeBase._entries: Dictionary built once at construction. Read-only thereafter. Thread-safe for concurrent reads.KbPackageFormat.Build()andLoad(): Static methods. No shared state. Thread-safe.
Code Examples
Example 1: Building a KB with CNSA 2.0 Profile
var entries = new List<KbEntry>
{
new("ML-KEM-1024", CryptoRole.Kem, RiskLevel.QuantumSafe,
Description: "CNSA 2.0 approved key establishment",
StandardsReferences: new[] { "FIPS 203", "CNSA 2.0" },
MigrationNotes: "Use ML-KEM-1024 as primary KEM"),
new("ML-DSA-87", CryptoRole.Signature, RiskLevel.QuantumSafe,
StandardsReferences: new[] { "FIPS 204", "CNSA 2.0" }),
new("RSA", CryptoRole.Signature, RiskLevel.QuantumBroken,
StandardsReferences: new[] { "CNSA 2.0" },
MigrationNotes: "Replace with ML-DSA-87")
};
var profile = new ComplianceProfile("CNSA 2.0", "2024-09",
new[] { "ML-KEM-1024", "ML-DSA-87", "AES-256", "SHA-384", "SHA-512" },
RiskLevel.QuantumSafe);
var content = new KbPackageContent(
new KbPackageMetadata(new KbVersion(1, 0, 0), DateTimeOffset.UtcNow,
"AES-256-GCM", "HMAC-SHA256", "Initial CNSA 2.0 KB"),
entries.AsReadOnly(),
new[] { profile });
var builder = new KbBuilder(encKey, signKey);
byte[] kb = builder.Build(content);
Example 2: Loading and Validating a KB
var loader = new KbLoader(encKey, signKey);
var result = loader.Load(File.ReadAllBytes("kb.cskb"));
switch (result.Outcome)
{
case KbLoadOutcome.Valid:
var kb = new SignedKnowledgeBase(result.Content!);
Console.WriteLine($"KB v{kb.Version} OK. {kb.ComplianceProfiles.Count} profiles.");
break;
case KbLoadOutcome.Tampered:
case KbLoadOutcome.InvalidSignature:
throw new SecurityException("KB integrity check failed!");
case KbLoadOutcome.DecryptionFailed:
throw new SecurityException("KB decryption failed — wrong key?");
default:
throw new InvalidOperationException($"Unexpected KB outcome: {result.Outcome}");
}
Example 3: Runtime Subset for Production
var builder = new KbBuilder(encryptionKey, signingKey);
// Full KB: 15 KB with migration notes, recommendations
byte[] fullKb = builder.Build(fullContent);
Console.WriteLine($"Full KB: {fullKb.Length} bytes");
// Runtime subset: ~8 KB, classification only
byte[] runtimeKb = builder.BuildRuntimeSubset(fullContent);
Console.WriteLine($"Runtime KB: {runtimeKb.Length} bytes");
// Distribute runtime subset to production instances
// Distribute full KB to Compass/Guardian Gate
Example 4: KB-Driven PQC Migration Planner
var kb = new SignedKnowledgeBase(content);
var findings = new[] { "RSA", "ECDSA", "AES-128", "ML-KEM-1024" };
foreach (var algo in findings)
{
if (!kb.TryGetEntry(algo, out var entry))
{
Console.WriteLine($"{algo}: UNKNOWN — manual review required");
continue;
}
Console.WriteLine($"{algo}: {entry.Risk}");
if (entry.Risk != RiskLevel.QuantumSafe)
{
var rec = kb.Recommend(entry.Role, algo, new CryptoParameters());
Console.WriteLine($" → Migrate to: {rec.Algorithm} ({rec.Rationale})");
Console.WriteLine($" → Notes: {entry.MigrationNotes}");
}
}
Output:
RSA: QuantumBroken
→ Migrate to: ML-DSA-87 (CNSA 2.0 approved for digital signatures)
→ Notes: Replace with ML-DSA-87.
ECDSA: QuantumBroken
→ Migrate to: ML-DSA-87 (CNSA 2.0 approved for digital signatures)
→ Notes: (none)
AES-128: QuantumVulnerable
→ Migrate to: AES-256-GCM (Default symmetric recommendation.)
→ Notes: (none)
ML-KEM-1024: QuantumSafe
Example 5: Version Compatibility Check
var expectedVersion = KbVersion.Parse("2.0.0");
var result = loader.Load(package);
if (result.IsValid && result.Content!.Metadata.KbVersion < expectedVersion)
{
Console.WriteLine($"WARNING: KB version {result.Content.Metadata.KbVersion} " +
$"is older than required ({expectedVersion}). " +
"New algorithms may not be recognized.");
}
API Reference
KbBuilder
| Member | Type | Description |
|---|---|---|
KbBuilder(byte[] encryptionKey, byte[] signingKey) |
Constructor | encryptionKey must be 32 bytes. signingKey must be ≥16 bytes. |
Build(KbPackageContent) |
Method | Builds full signed+encrypted KB package. Returns byte[]. |
BuildRuntimeSubset(KbPackageContent) |
Method | Builds stripped runtime subset (no recommendations, no migration notes). Returns byte[]. |
KbLoader
| Member | Type | Description |
|---|---|---|
KbLoader(byte[] encryptionKey, byte[] signingKey) |
Constructor | Must match the keys used by KbBuilder. |
Load(byte[] package) |
Method | Verifies HMAC, decrypts, deserializes. Returns KbLoadResult. Never throws. |
LoadAsKnowledgeBase(byte[] package) |
Method | Convenience: loads and wraps in SignedKnowledgeBase. Throws on failure. |
KbLoadResult
| Property | Type | Description |
|---|---|---|
Outcome |
KbLoadOutcome |
Enum: Valid, Tampered, InvalidSignature, UnsupportedFormat, DecryptionFailed, UnknownVersion |
Content |
KbPackageContent? |
The loaded content (only set when Valid) |
ErrorDetail |
string? |
Human-readable error (set on failure) |
IsValid |
bool |
Convenience: Outcome == KbLoadOutcome.Valid |
SignedKnowledgeBase
| Member | Type | Description |
|---|---|---|
Version |
KbVersion |
KB version from package metadata |
ComplianceProfiles |
IReadOnlyList<ComplianceProfile> |
Embedded compliance profiles |
TryGetEntry(string algorithm, out KbEntry entry) |
Method | Case-insensitive lookup. Returns false if unknown. |
Recommend(CryptoRole, string algorithm, CryptoParameters) |
Method | Returns primary PQC migration recommendation. Never returns null. |
KbPackageContent (Record)
| Property | Type | Description |
|---|---|---|
Metadata |
KbPackageMetadata |
Package metadata (version, timestamps, algorithms) |
Entries |
IReadOnlyList<KbEntry> |
Algorithm intelligence entries |
ComplianceProfiles |
IReadOnlyList<ComplianceProfile>? |
Embedded compliance profiles |
KbPackageMetadata (Record)
| Property | Type | Description |
|---|---|---|
KbVersion |
KbVersion |
Semantic version |
CreatedAt |
DateTimeOffset |
Package creation timestamp |
EncryptionAlgorithm |
string |
Always "AES-256-GCM" |
SigningAlgorithm |
string |
Always "HMAC-SHA256" |
Description |
string? |
Optional human-readable description |
KbEntry (Record)
| Property | Type | Description |
|---|---|---|
Algorithm |
string |
Canonical algorithm name (lookup key) |
Role |
CryptoRole |
Kem, Signature, Symmetric, Hash, KeyExchange, Other |
Risk |
RiskLevel |
QuantumSafe, Mitigable, QuantumVulnerable, QuantumBroken |
Description |
string? |
Human-readable |
StandardReference |
string? |
Legacy primary standard reference |
SecurityLevel |
int? |
NIST security level (1-5) |
Recommendations |
IReadOnlyList<Recommendation>? |
PQC migration targets (null in runtime subset) |
StandardsReferences |
IReadOnlyList<string>? |
All applicable standards |
MigrationNotes |
string? |
Migration guidance (null in runtime subset) |
ParametersConsidered |
CryptoParameters? |
Key size, mode, padding to match |
KbVersion (Record)
| Member | Type | Description |
|---|---|---|
Major, Minor, Patch |
int |
Semantic version components |
PreRelease |
string? |
Optional pre-release tag (e.g., "preview") |
Parse(string) |
Static Method | Parses semver string. Includes/excludes build metadata. |
ToString() |
Method | Returns semver string (e.g., "2.1.0") |
| Comparison operators | <, >, <=, >= |
Full semantic version comparison |
CompareTo(KbVersion?) |
Method | IComparable<KbVersion> implementation |
ComplianceProfile (Record)
| Property | Type | Description |
|---|---|---|
Name |
string |
Profile name (e.g., "CNSA 2.0") |
Version |
string |
Profile version (e.g., "2024-09") |
RequiredAlgorithms |
IReadOnlyList<string> |
Algorithms required by this profile |
MinimumAcceptableRisk |
RiskLevel |
Any algorithm below this risk fails the profile |
Description |
string? |
Optional human-readable description |
Configuration Options
Key Management
| Parameter | Requirement | Notes |
|---|---|---|
| Encryption Key | Exactly 32 bytes | AES-256 key. Rotate with each major KB version. |
| Signing Key | ≥16 bytes (32 recommended) | HMAC-SHA256 key. Must be shared with all KB consumers. |
| Key Rotation | Per major version | Both keys should rotate on major KB version changes. |
| Key Storage | Secure (HSM, key vault) | Keys protect the integrity and confidentiality of all cryptographic guidance. |
Package Distribution
| Pattern | Use Case |
|---|---|
| File share | Single KB file shared to all CI/CD agents and deployment environments |
| NuGet package | Embed KB as an embedded resource in a dedicated KB NuGet package |
| Embedded resource | Compile KB directly into the application assembly |
| Git LFS | Version-controlled in the same repo as the application |
KB Update Frequency
| Update Trigger | Typical Cadence |
|---|---|
| NIST finalizes a new standard | Within 1 week |
| CNSA advisory update | Within 48 hours |
| New vulnerability discovered | Within 24 hours (out-of-band if critical) |
| Routine additions | Monthly |
Runtime vs Full KB
| Variant | Size | Content | Use Case |
|---|---|---|---|
Full (KbBuildOutput.Full) |
~15-20 KB | Full entries with recommendations, migration notes, profiles | Compass, Guardian Gate, CI environments |
Runtime (KbBuildOutput.RuntimeClassificationOnly) |
~8-10 KB | Classification only (Risk + Role + algorithm name), profiles | Guardian Runtime, in-process use |
Value Showcase
Before Knowledge Base
Q: "We need to update our crypto guidance for the new NIST standard."
A: "OK, let's update the hardcoded lists in Compass, Vault, Guardian Gate,
Guardian Runtime, and the Portal. Schedule a release for each.
Estimated time: 2 sprints."
Risk: HIGH — inconsistent guidance across modules, slow propagation
After Knowledge Base
Q: "We need to update our crypto guidance for the new NIST standard."
A: "Build a new KB package. Distribute the .cskb file. All modules
automatically pick up the new guidance on next load.
Estimated time: 10 minutes."
Risk: LOW — single source of truth, instant propagation
Quantitative Impact
| Metric | Without KB | With Knowledge Base |
|---|---|---|
| Time to update guidance across platform | ~2 weeks (coordinated releases) | ~10 minutes (single file distribution) |
| Guidance consistency across modules | Low (each module may drift) | High (single signed source of truth) |
| Audit trail for guidance version | Manual, error-prone | Cryptographically signed KB artifact |
| Tamper detection | None | HMAC-SHA256 verification on every load |
| Guidance confidentiality | N/A | AES-256-GCM encryption (proprietary intelligence) |
| Air-gap compatibility | N/A | Fully self-contained binary file |
Compliance Alignment
| Framework | How Knowledge Base Helps |
|---|---|
| CNSA 2.0 | KB encodes the approved/required/excluded algorithm lists |
| NIST SP 800-53 (CM-8) | KB provides an authoritative inventory of acceptable cryptographic components |
| ISO 27001 A.8.1 | Asset management — KB is the authoritative crypto asset classification |
| FedRAMP SI-1 | System and information integrity — KB signatures provide non-repudiation |
| NIST SP 800-161 | Supply chain risk — signed KB prevents supply chain attacks on cryptographic guidance |
Next: See CNSA 2.0 Validator for the compliance validation engine that consumes KB profiles.