Agent Security Manager

作者 ruvnet6051f6702b61无许可证74K 个星标收录于 2026年10月8日更新于 2026年10月8日仓库今天更新

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

仅含说明Security
AI 生成的概览

为分布式共识协议定义安全管理器,涵盖门限密码学、攻击检测、密钥管理与测试。

功能
该技能提供用于保护分布式共识协议的说明与参考代码。它描述门限签名系统、零知识证明、分布式密钥生成与轮换、安全通信,以及拜占庭、女巫、日蚀和拒绝服务攻击的检测与缓解。它还概述 MCP 集成钩子、共识协议封装器,以及生成安全报告的渗透测试框架。
适用场景
适用于设计或加固分布式共识协议安全层的场景。适合门限密码学、密钥管理、攻击检测或共识系统安全测试相关工作。
运行要求
仅为说明,不附带脚本。参考代码假定存在 JavaScript 运行时和密码学库,并需要用于内存、指标和神经模式集成的 MCP 工具。

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 memoryawait 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 operationsawait 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 patternsawait this.mcpTools.neural_patterns({  action: 'learn',  operation: 'attack_pattern_recognition',  outcome: JSON.stringify({    attackType: detectedAttack.type,    patterns: detectedAttack.patterns,    mitigation: appliedMitigation  })});
// Predict potential security threatsconst threatPrediction = await this.mcpTools.neural_predict({  modelId: 'security_threat_model',  input: JSON.stringify(currentSecurityMetrics)});

Integration with Consensus Protocols

Byzantine Consensus Security

javascript
class ByzantineConsensusSecurityWrapper {  constructor(byzantineCoordinator, securityManager) {    this.consensus = byzantineCoordinator;    this.security = securityManager;  }
  async secureConsensusRound(proposal) {    // Pre-consensus security checks    await this.security.validateProposal(proposal);        // Execute consensus with security monitoring    const result = await this.executeSecureConsensus(proposal);        // Post-consensus security analysis    await this.security.analyzeConsensusRound(result);        return result;  }
  async executeSecureConsensus(proposal) {    // Sign proposal with threshold signature    const signedProposal = await this.security.thresholdSignature.sign(proposal);        // Monitor consensus execution for attacks    const monitor = this.security.startConsensusMonitoring();        try {      // Execute Byzantine consensus      const result = await this.consensus.initiateConsensus(signedProposal);            // Verify result integrity      await this.security.verifyConsensusResult(result);            return result;    } finally {      monitor.stop();    }  }}

Security Testing and Validation

Penetration Testing Framework

javascript
class ConsensusPenetrationTester {  constructor(securityManager) {    this.security = securityManager;    this.testScenarios = new Map();    this.vulnerabilityDatabase = new VulnerabilityDatabase();  }
  async runSecurityTests() {    const testResults = [];        // Test 1: Byzantine attack simulation    testResults.push(await this.testByzantineAttack());        // Test 2: Sybil attack simulation    testResults.push(await this.testSybilAttack());        // Test 3: Eclipse attack simulation    testResults.push(await this.testEclipseAttack());        // Test 4: DoS attack simulation    testResults.push(await this.testDoSAttack());        // Test 5: Cryptographic security tests    testResults.push(await this.testCryptographicSecurity());        return this.generateSecurityReport(testResults);  }
  async testByzantineAttack() {    // Simulate malicious nodes sending contradictory messages    const maliciousNodes = this.createMaliciousNodes(3);    const attack = new ByzantineAttackSimulator(maliciousNodes);        const startTime = Date.now();    const detectionTime = await this.security.detectByzantineAttacks(attack.execute());    const endTime = Date.now();        return {      test: 'Byzantine Attack',      detected: detectionTime !== null,      detectionLatency: detectionTime ? endTime - startTime : null,      mitigation: await this.security.mitigateByzantineAttack(attack)    };  }}

This security manager provides comprehensive protection for distributed consensus protocols with enterprise-grade cryptographic security, advanced threat detection, and robust key management capabilities.

来源与署名

来源:ruvnet/ruflo位于.agents/skills/agent-security-manager提交6051f67

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架