본문으로 건너뛰기
cccskills
무료GitHub에 공개

agent-security-manager

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

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(2)

  • SKILL.md19.3 KB
  • source.json616 B

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.


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

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

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

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

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

// 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

// Learn attack patterns
await this.mcpTools.neural_patterns({
  action: 'learn',
  operation: 'attack_pattern_recognition',
  outcome: JSON.stringify({
    attackType: detectedAttack.type,
    patterns: detectedAttack.patterns,
    mitigation: appliedMitigation
  })
});

// Predict potential security threats
const threatPrediction = await this.mcpTools.neural_predict({
  modelId: 'security_threat_model',
  input: JSON.stringify(currentSecurityMetrics)
});

Integration with Consensus Protocols

Byzantine Consensus Security

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

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.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

007

무료

Security audit, hardening, threat modeling (STRIDE/PASTA), Red/Blue Team, OWASP checks, code review, incident response, and infrastructure security for any project.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

aibot88/sec_skill_store52026년 5월 27일 업데이트

Guides the creation of agile user stories and Gherkin feature files. Use when the user wants to create a user story, write acceptance criteria, define Gherkin scenarios, or author BDD feature files. This should trigger for requests such as Create a user story; Write a user story; I need to write a user story. Part of cursor-rules-java project

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

aibot88/sec_skill_store52026년 5월 27일 업데이트

Facilitates conversational discovery to create Architectural Decision Records (ADRs) for non-functional requirements using the ISO/IEC 25010:2023 quality model. Use when the user wants to document quality attributes, NFR decisions, security/performance/scalability architecture, or design systems with measurable quality criteria. This should trigger for requests such as Create ADR for Non-functional requirements; Document Non-functional requirements; Capture Non-functional requirements; Generate Non-functional requirements in an ADR. Part of cursor-rules-java project

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

aibot88/sec_skill_store52026년 5월 27일 업데이트

Run a health check on an existing project: dependency audit, security scan, test runner detection, CI/CD evaluation, and missing configuration analysis. Maps the three execution gates (pre/in/post) from /10x-bootstrapper to an assessment framework for existing codebases. Reads optional context/foundation/stack-assessment.md from /10x-stack-assess to focus checks on identified gaps. Writes context/foundation/health-check.md with findings, prioritized fixes, and an agent-readiness verdict. Use when the user has an existing project and wants to verify its health before working with an agent. Trigger phrases: "health check", "check my project", "audit my project", "is my project healthy", "sprawdź projekt", "audyt projektu", "health-check", "project health". Use AFTER /10x-stack-assess (brownfield chain), BEFORE agent onboarding (m1-l4).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

aibot88/sec_skill_store52026년 5월 27일 업데이트

10x-team

무료

You MUST use this when building projects end-to-end. Orchestrates all 12 team roles — automatically switches between CTO, architect, PM, engineers, SRE, security, DBA, QA, and EM based on the current phase of work. Starts with brainstorming before any implementation.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

aibot88/sec_skill_store52026년 5월 27일 업데이트

Use when you need to add or configure Maven plugins in your pom.xml — including quality tools (enforcer, surefire, failsafe, jacoco, pitest, spotbugs, pmd), security scanning (OWASP), code formatting (Spotless), version management, container image build (Jib), build information tracking, and benchmarking (JMH) — through a consultative, modular step-by-step approach that only adds what you actually need. This should trigger for requests such as Add Maven plugins in pom.xml; Improve Maven plugins in pom.xml. Part of cursor-rules-java project

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

aibot88/sec_skill_store52026년 5월 27일 업데이트

aibot88의 스킬 모두 보기

이 스킬의 문제 신고