bigbasealpha
Version:
Enterprise-Grade NoSQL Database System with Modular Logger & Offline HSM Security - Complete database platform with professional text-based logging, encryption, caching, indexing, JWT authentication, auto-generated REST API, real-time dashboard, and maste
236 lines (185 loc) โข 9.68 kB
JavaScript
import BigBaseAlpha from '../src/alpha.js';
/**
* BigBaseAlpha Security & Privacy Suite Demo
* Showcases the new security features in v1.4.0
*/
console.log('๐ BigBaseAlpha Security & Privacy Suite Demo v1.4.0');
console.log('โ'.repeat(60));
async function securityDemo() {
const db = new BigBaseAlpha({
path: './security_demo_data',
encryption: false, // For demo purposes
security: {
paranoidLogging: true,
wipeIterations: 3
}
});
try {
await db.init();
await db.createCollection('demo');
console.log('โ
Database initialized\n');
// Demo 1: One-Time Access Keys
console.log('๐ Demo 1: One-Time Access Keys');
console.log('โ'.repeat(40));
await db.setOneTime('secret_message', 'This will self-destruct after reading!');
console.log('๐ Secret message stored');
const secret = await db.getOneTime('secret_message');
console.log(`๐ Secret read: "${secret}"`);
try {
await db.getOneTime('secret_message');
} catch (error) {
console.log('๐ฅ Secret already destroyed (as expected)');
}
console.log('โ
One-time access demo completed\n');
// Demo 2: Execution Triggers
console.log('๐งช Demo 2: Execution Triggers');
console.log('โ'.repeat(40));
let trapTriggered = false;
await db.setTrigger('honeypot', '๐ฏ Honey trap', {
onRead: () => {
trapTriggered = true;
console.log('โ ๏ธ TRAP ACTIVATED! Intruder detected!');
}
});
console.log('๐ชค Trap set');
await db.executeTrigger('honeypot', 'read');
console.log(`๐ฏ Trap status: ${trapTriggered ? 'TRIGGERED' : 'Not triggered'}`);
console.log('โ
Execution trigger demo completed\n');
// Demo 3: Paranoia Mode
console.log('๐๏ธ Demo 3: Paranoia Mode');
console.log('โ'.repeat(40));
const paranoia = db.enableParanoia({
encryption: 'AES-256-GCM',
tamperCheck: true
});
// Perform some operations to generate logs
await db.insert('demo', { message: 'This is being monitored' });
await db.find('demo');
await db.update('demo', (await db.find('demo'))[0]._id, { monitored: true });
const logs = paranoia.getLogs();
console.log(`๐ Paranoid logs generated: ${logs.length} entries`);
console.log('๐ Sample log entry:', logs[0] ? 'encrypted and hashed' : 'none');
paranoia.disable();
console.log('โ
Paranoia mode demo completed\n');
// Demo 4: Decoy Mode
console.log('๐ญ Demo 4: Decoy Database');
console.log('โ'.repeat(40));
const decoy = db.enableDecoy({
password: 'secretpassword123',
decoyData: {
demo: [
{ id: 1, message: 'This is fake data', type: 'decoy' },
{ id: 2, message: 'Honeypot active', type: 'trap' }
]
}
});
// Test wrong password
const wrongAuth = decoy.authenticate('wrongpassword');
console.log(`๐ Wrong password result: ${wrongAuth ? 'Access granted' : 'Showing decoy data'}`);
if (db.securitySuite.shouldUseDecoy()) {
const decoyData = await db.get('demo');
console.log('๐ Decoy data shown:', decoyData?.length || 0, 'fake entries');
}
// Test correct password
const correctAuth = decoy.authenticate('secretpassword123');
console.log(`๐ Correct password result: ${correctAuth ? 'Real data access' : 'Still in decoy mode'}`);
decoy.disable();
console.log('โ
Decoy mode demo completed\n');
// Demo 5: Secure Wipe (SAFE - Limited Pattern)
console.log('๐งผ Demo 5: Secure Wipe (SAFE)');
console.log('โ'.repeat(40));
// Add some test data
await db.insert('demo', { category: 'demo_sensitive', data: 'Demo secret information' });
await db.insert('demo', { category: 'public', data: 'Public information' });
await db.insert('demo', { category: 'demo_sensitive', data: 'More demo secrets' });
const beforeWipe = await db.find('demo');
console.log(`๐ Before wipe: ${beforeWipe.length} total records`);
// Wipe only demo sensitive data (safe pattern)
const wipedCount = await db.wipe('*demo_sensitive*', {
confirm: true,
safetyCheck: true, // Required for safety
wipeLevel: 'shallow' // Less destructive for demo
});
const afterWipe = await db.find('demo');
console.log(`๐ฅ Wiped ${wipedCount} demo sensitive records`);
console.log(`๐ After wipe: ${afterWipe.length} remaining records`);
console.log('โ
Secure wipe demo completed (safe pattern used)\n');
// Demo 6: Self-Destruct (SAFE - Demo Only, Short Timer)
console.log('๐ฃ Demo 6: Self-Destruct Mode (SAFE DEMO)');
console.log('โ'.repeat(40));
const destruct = db.activateSelfDestruct({
timeout: 5000, // 5 seconds for demo
secure: true,
wipeLevel: 'shallow', // Less destructive for demo
safetyCheck: true // Required for activation
});
console.log(`๐ Emergency PIN: ${destruct.pin}`);
console.log('โฐ Self-destruct sequence activated (5 seconds)...');
console.log('๐ก๏ธ This is a SAFE demo - will be aborted automatically');
// Wait 2 seconds then abort (safe demo)
setTimeout(() => {
const aborted = db.abortDestruct(destruct.pin);
console.log(`๐ก๏ธ Self-destruct ${aborted ? 'SAFELY ABORTED' : 'FAILED TO ABORT'}`);
}, 2000);
// Wait for abort to complete
await new Promise(resolve => setTimeout(resolve, 3000));
console.log('โ
Self-destruct demo completed (safely aborted)\n');
// Demo 7: Dead Man's Switch (Non-destructive demo)
console.log('๐งจ Demo 7: Dead Man\'s Switch (Demo Only)');
console.log('โ'.repeat(40));
const deadMans = db.enableDeadMansSwitch({
delay: 3000, // 3 seconds for demo
triggerMessage: 'Demo: Inactivity detected',
callback: () => console.log('๐ Dead Man\'s Switch would trigger (demo mode)')
});
console.log('โฐ Dead Man\'s Switch enabled (3 second delay)');
console.log('๐ Simulating activity...');
// Simulate activity to prevent trigger
setTimeout(async () => {
await db.find('demo'); // Activity to reset timer
console.log('๐ Activity detected - timer reset');
}, 1500);
// Disable after demo
setTimeout(() => {
deadMans.disable();
console.log('๐ก๏ธ Dead Man\'s Switch disabled (demo complete)');
}, 4000);
await new Promise(resolve => setTimeout(resolve, 5000));
console.log('โ
Dead Man\'s Switch demo completed\n');
// Security Status Summary
console.log('๐ Security Status Summary');
console.log('โ'.repeat(40));
const status = db.getSecurityStatus();
console.log('๐ Self-Destruct:', status.selfDestruct.active ? 'ACTIVE' : 'Inactive');
console.log('๐งจ Dead Man\'s Switch:', status.deadMansSwitch.enabled ? 'ENABLED' : 'Disabled');
console.log('๐๏ธ Paranoia Mode:', status.paranoia.enabled ? 'ENABLED' : 'Disabled');
console.log('๐ญ Decoy Mode:', status.decoy.enabled ? 'ENABLED' : 'Disabled');
console.log('๐ One-Time Keys:', status.oneTimeKeys);
console.log('๐งช Execution Triggers:', status.executionTriggers);
await db.close();
console.log('\n๐ Security & Privacy Suite Demo Completed Successfully!');
console.log('โ
Core security features are working safely');
console.log('โ ๏ธ Note: All destructive operations require explicit safety confirmations');
console.log('๏ฟฝ๏ธ Your data remains secure with built-in safety checks');
console.log('\n๐ Safety Requirements for Destructive Operations:');
console.log(' โข Self-destruct: { safetyCheck: true }');
console.log(' โข Wipe: { confirm: true, safetyCheck: true }');
console.log(' โข Emergency: { confirm: true, safetyCheck: true, emergencyCode: "EMERGENCY_DESTROY_ALL_DATA" }');
} catch (error) {
console.error('โ Demo error:', error);
process.exit(1);
}
}
// Emergency shutdown demo (commented out for safety)
/*
async function emergencyDemo() {
console.log('๐จ EMERGENCY SHUTDOWN DEMO (DESTRUCTIVE)');
console.log('This would completely destroy the database!');
// Uncomment only for testing in isolated environment:
// const db = new BigBaseAlpha({ path: './emergency_test' });
// await db.init();
// await db.emergencyShutdown();
}
*/
// Run demo
securityDemo().catch(console.error);