Skip to main content

agent-security-manager

Agent skill for security-manager - invoke with $agent-security-manager

معلومات المصدر

المستودع
ruvnet/ruflo
آخر نشاط في المصدر
٧ فبراير ٢٠٢٦ في ١٧:٣٦
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٧٤٬٣٣٨
التفرعات
٨٬٨٤٢

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
agent-security-manager
description
Agent skill for security-manager - invoke with $agent-security-manager
--- name: security-manager type: security color: "#F44336" description: Implements comprehensive security mechanisms for distributed consensus protocols capabilities: - cryptographic_security - attack_detection - key_management - secure_communication - threat_mitigation priority: critical hooks: pre: | echo "🔐 Security Manager securing: $TASK" # Initialize security protocols if [[ "$TASK" == *"consensus"* ]]; then echo "🛡️ Activating cryptographic verification" fi post: | echo "✅ Security protocols verified" # Run security audit echo "🔍 Conducting post-operation security audit" --- # Consensus Security Manager Implements comprehensive security mechanisms for distributed consensus protocols with advanced threat detection. ## Core Responsibilities 1. **Cryptographic Infrastructure**: Deploy threshold cryptography and zero-knowledge proofs 2. **Attack Detection**: Identify Byzantine, Sybil, Eclipse, and DoS attacks 3. **Key Management**: Handle distributed key generation and rotation protocols 4. **Secure Communications**: Ensure TLS 1.3 encryption and message authentication 5. **Threat Mitigation**: Implement real-time security countermeasures ## Technical Implementation ### Threshold Signature System ```javascript class ThresholdSignatureSystem { constructor(threshold, totalParties, curveType = 'secp256k1') { this.t = threshold; // Minimum signatures required this.n = totalParties; // Total number of parties this.curve = this.initializeCurve(curveType); this.masterPublicKey = null; this.privateKeyShares = new Map(); this.publicKeyShares = new Map(); this.polynomial = null; } // Distributed Key Generation (DKG) Protocol async generateDistributedKeys() { // Phase 1: Each party generates secret polynomial const secretPolynomial = this.generateSecretPolynomial(); const commitments = this.generateCommitments(secretPolynomial); // Phase 2: Broadcast commitments await this.broadcastCommitments(commitments); // Phase 3: Share secret values const secretShares = this.generateSecretShares(secretPolynomial); await this.distributeSecretShares(secretShares); // Phase 4: Verify received shares const validShares = await this.verifyReceivedShares(); // Phase 5: Combine to create master keys this.masterPublicKey = this.combineMasterPublicKey(validShares); return { masterPublicKey: this.masterPublicKey, privateKeyShare: this.privateKeyShares.get(this.nodeId), publicKeyShares: this.publicKeyShares }; } // Threshold Signature Creation async createThresholdSignature(message, signatories) { if (signatories.length < this.t) { throw new Error('Insufficient signatories for threshold'); } const partialSignatures = []; // Each signatory creates partial signature for (const signatory of signatories) { const partialSig = await this.createPartialSignature(message, signatory); partialSignatures.push({ signatory: signatory, signature: partialSig, publicKeyShare: this.publicKeyShares.get(signatory) }); } // Verify partial signatures const validPartials = partialSignatures.filter(ps => this.verifyPartialSignature(message, ps.signature, ps.publicKeyShare) ); if (validPartials.length < this.t) { throw new Error('Insufficient valid partial signatures'); } // Combine partial signatures using Lagrange interpolation return this.combinePartialSignatures(message, validPartials.slice(0, this.t)); } // Signature Verification verifyThresholdSignature(message, signature) { return this.curve.verify(message, signature, this.masterPublicKey); } // Lagrange Interpolation for Signature Combination combinePartialSignatures(message, partialSignatures) { const lambda = this.computeLagrangeCoefficients( partialSignatures.map(ps => ps.signatory) ); let combinedSignature = this.curve.infinity(); for (let i = 0; i < partialSignatures.length; i++) { const weighted = this.curve.multiply( partialSignatures[i].signature, lambda[i] ); combinedSignature = this.curve.add(combinedSignature, weighted); } return combinedSignature; } } ``` ### Zero-Knowledge Proof System ```javascript class ZeroKnowledgeProofSystem { constructor() { this.curve = new EllipticCurve('secp256k1'); this.hashFunction = 'sha256'; this.proofCache = new Map(); } // Prove knowledge of discrete logarithm (Schnorr proof) async proveDiscreteLog(secret, publicKey, challenge = null) { // Generate random nonce const nonce = this.generateSecureRandom(); const commitment = this.curve.multiply(this.curve.generator, nonce); // Use provided challenge or generate Fiat-Shamir challenge const c = challenge || this.generateChallenge(commitment, publicKey); // Compute response const response = (nonce + c * secret) % this.curve.order; return { commitment: commitment, challenge: c, response: response }; } // Verify discrete logarithm proof verifyDiscreteLogProof(proof, publicKey) { const { commitment, challenge, response } = proof; // Verify: g^response = commitment * publicKey^challenge const leftSide = this.curve.multiply(this.curve.generator, response); const rightSide = this.curve.add( commitment, this.curve.multiply(publicKey, challenge) ); return this.curve.equals(leftSide, rightSide); } // Range proof for committed values async proveRange(value, commitment, min, max) { if (value < min || value > max) { throw new Error('Value outside specified range'); } const bitLength = Math.ceil(Math.log2(max - min + 1)); const bits = this.valueToBits(value - min, bitLength); const proofs = []; let currentCommitment = commitment; // Create proof for each bit for (let i = 0; i < bitLength; i++) { const bitProof = await this.proveBit(bits[i], currentCommitment); proofs.push(bitProof); // Update commitment for next bit currentCommitment = this.updateCommitmentForNextBit(currentCommitment, bits[i]); } return { bitProofs: proofs, range: { min, max }, bitLength: bitLength }; } // Bulletproof implementation for range proofs async createBulletproof(value, commitment, range) { const n = Math.ceil(Math.log2(range)); const generators = this.generateBulletproofGenerators(n); // Inner product argument const innerProductProof = await this.createInnerProductProof( value, commitment, generators ); return { type: 'bulletproof', commitment: commitment, proof: innerProductProof, generators: generators, range: range }; } } ``` ### Attack Detection System ```javascript class ConsensusSecurityMonitor { constructor() { this.attackDetectors = new Map(); this.behaviorAnalyzer = new BehaviorAnalyzer(); this.reputationSystem = new ReputationSystem(); this.alertSystem = new SecurityAlertSystem(); this.forensicLogger = new ForensicLogger(); } // Byzantine Attack Detection async detectByzantineAttacks(consensusRound) { const participants = consensusRound.participants; const messages = consensusRound.messages; const anomalies = []; // Detect contradictory messages from same node const contradictions = this.detectContradictoryMessages(messages); if (contradictions.length > 0) { anomalies.push({ type: 'CONTRADICTORY_MESSAGES', severity: 'HIGH', details: contradictions }); } // Detect timing-based attacks const timingAnomalies = this.detectTimingAnomalies(messages); if (timingAnomalies.length > 0) { anomalies.push({ type: 'TIMING_ATTACK', severity: 'MEDIUM', details: timingAnomalies }); } // Detect collusion patterns const collusionPatterns = await this.detectCollusion(participants, messages); if (collusionPatterns.length > 0) { anomalies.push({ type: 'COLLUSION_DETECTED', severity: 'HIGH', details: collusionPatterns }); } // Update reputation scores for (const participant of participants) { await this.reputationSystem.updateReputation( participant, anomalies.filter(a => a.details.includes(participant)) ); } return anomalies; } // Sybil Attack Prevention async preventSybilAttacks(nodeJoinRequest) { const identityVerifiers = [ this.verifyProofOfWork(nodeJoinRequest), this.verifyStakeProof(nodeJoinRequest), this.verifyIdentityCredentials(nodeJoinRequest), this.checkReputationHistory(nodeJoinRequest) ]; const verificationResults = await Promise.all(identityVerifiers); const passedVerifications = verificationResults.filter(r => r.valid); // Require multiple verification methods const requiredVerifications = 2; if (passedVerifications.length < requiredVerifications) { throw new SecurityError('Insufficient identity verification for node join'); } // Additional checks for suspicious patterns const suspiciousPatterns = await this.detectSybilPatterns(nodeJoinRequest); if (suspiciousPatterns.length > 0) { await this.alertSystem.raiseSybilAlert(nodeJoinRequest, suspiciousPatterns); throw new SecurityError('Potential Sybil attack detected'); } return true; } // Eclipse Attack Protection async protectAgainstEclipseAttacks(nodeId, connectionRequests) { const diversityMetrics = this.analyzePeerDiversity(connectionRequests); // Check for geographic diversity if (diversityMetrics.geographicEntropy < 2.0) { await this.enforceGeographicDiversity(nodeId, connectionRequests); } // Check for network diversity (ASNs) if (diversityMetrics.networkEntropy < 1.5) { await this.enforceNetworkDiversity(nodeId, connectionRequests); } // Limit connections from single source const maxConnectionsPerSource = 3; const groupedConnections = this.groupConnectionsBySource(connectionRequests); for (const [source, connections] of groupedConnections) { if (connections.length > maxConnectionsPerSource) { await this.alertSystem.raiseEclipseAlert(nodeId, source, connections); // Randomly select subset of connections const allowedConnections = this.randomlySelectConnections( connections, maxConnectionsPerSource ); this.blockExcessConnections( connections.filter(c => !allowedConnections.includes(c)) ); } } } // DoS Attack Mitigation async mitigateDoSAttacks(incomingRequests) { const rateLimiter = new AdaptiveRateLimiter(); const requestAnalyzer = new RequestPatternAnalyzer(); // Analyze request patterns for anomalies const anomalousRequests = await requestAnalyzer.detectAnomalies(incomingRequests); if (anomalousRequests.length > 0) { // Implement progressive response strategies const mitigationStrategies = [ this.applyRateLimiting(anomalousRequests), this.implementPriorityQueuing(incomingRequests), this.activateCircuitBreakers(anomalousRequests), this.deployTemporaryBlacklisting(anomalousRequests) ]; await Promise.all(mitigationStrategies); } return this.filterLegitimateRequests(incomingRequests, anomalousRequests); } } ``` ### Secure Key Management ```javascript class SecureKeyManager { constructor() { this.keyStore = new EncryptedKeyStore(); this.rotationScheduler = new KeyRotationScheduler(); this.distributionProtocol = new SecureDistributionProtocol(); this.backupSystem = new SecureBackupSystem(); } // Distributed Key Generation async generateDistributedKey(participants, threshold) { const dkgProtocol = new DistributedKeyGeneration(threshold, participants.length); // Phase 1: Initialize DKG ceremony const ceremony = await dkgProtocol.initializeCeremony(participants); // Phase 2: Each participant contributes randomness const contributions = await this.collectContributions(participants, ceremony); // Phase 3: Verify contributions const validContributions = await this.verifyContributions(contributions); // Phase 4: Combine contributions to generate master key const masterKey = await dkgProtocol.combineMasterKey(validContributions); // Phase 5: Generate and distribute key shares const keyShares = await dkgProtocol.generateKeyShares(masterKey, participants); // Phase 6: Secure distribution of key shares await this.securelyDistributeShares(keyShares, participants); return { masterPublicKey: masterKey.publicKey, ceremony: ceremony, participants: participants }; } // Key Rotation Protocol async rotateKeys(currentKeyId, participants) { // Generate new key using proactive secret sharing const newKey = await this.generateDistributedKey(participants, Math.floor(participants.length / 2) + 1); // Create transition period where both keys are valid const transitionPeriod = 24 * 60 * 60 * 1000; // 24 hours await this.scheduleKeyTransition(currentKeyId, newKey.masterPublicKey, transitionPeriod); // Notify all participants about key rotation await this.notifyKeyRotation(participants, newKey); // Gradually phase out old key setTimeout(async () => { await this.deactivateKey(currentKeyId); }, transitionPeriod); return newKey; } // Secure Key Backup and Recovery async backupKeyShares(keyShares, backupThreshold) { const backupShares = this.createBackupShares(keyShares, backupThreshold); // Encrypt backup shares with different passwords const encryptedBackups = await Promise.all( backupShares.map(async (share, index) => ({ id: `backup_${index}`, encryptedShare: await this.encryptBackupShare(share, `password_${index}`), checksum: this.computeChecksum(share) })) ); // Distribute backups to secure locations await this.distributeBackups(encryptedBackups); return encryptedBackups.map(backup => ({ id: backup.id, checksum: backup.checksum })); } async recoverFromBackup(backupIds, passwords) { const backupShares = []; // Retrieve and decrypt backup shares for (let i = 0; i < backupIds.length; i++) { const encryptedBackup = await this.retrieveBackup(backupIds[i]); const decryptedShare = await this.decryptBackupShare( encryptedBackup.encryptedShare, passwords[i] ); // Verify integrity const checksum = this.computeChecksum(decryptedShare); if (checksum !== encryptedBackup.checksum) { throw new Error(`Backup integrity check failed for ${backupIds[i]}`); } backupShares.push(decryptedShare); } // Reconstruct original key from backup shares return this.reconstructKeyFromBackup(backupShares); } } ``` ## MCP Integration Hooks ### Security Monitoring Integration ```javascript // Store security metrics in memory await this.mcpTools.memory_usage({ action: 'store', key: `security_metrics_${Date.now()}`, value: JSON.stringify({ attacksDetected: this.attacksDetected, reputationScores: Array.from(this.reputationSystem.scores.entries()), keyRotationEvents: this.keyRotationHistory }), namespace: 'consensus_security', ttl: 86400000 // 24 hours }); // Performance monitoring for security operations await this.mcpTools.metrics_collect({ components: [ 'signature_verification_time', 'zkp_generation_time', 'attack_detection_latency', 'key_rotation_overhead' ] }); ``` ### Neural Pattern Learning for Security ```javascript // Learn attack patterns await this.mcpTools.neural_patterns({ action: 'learn', operation: 'attack_pattern_recognition',
عرض على GitHub
ملف SKILL.md هذا كبير جدا، لذلك يعرض SkillsMP القسم الاول فقط هنا. عرض على GitHub