UNPKG

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
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);