Agent skill

Implementing AWS Nitro Enclave Security

by mukul975 in mukul975/Anthropic-Cybersecurity-Skills

Build AWS Nitro Enclave confidential computing environments using nitro-cli to create enclave images, configure attestation-aware KMS policies with PCR condition keys, validate attestation documents…

Apache-2.0Auto-check: notesSecurity

Install Implementing AWS Nitro Enclave Security

skills CLI
$ npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill implementing-aws-nitro-enclave-security -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install mukul975/Anthropic-Cybersecurity-Skills implementing-aws-nitro-enclave-security --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/mukul975/Anthropic-Cybersecurity-Skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/implementing-aws-nitro-enclave-security .claude/skills/implementing-aws-nitro-enclave-security && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
implementing-aws-nitro-enclave-security
GitHub stars
34k
Token cost
~5.5k tokens
SKILL.md length
1,686 words
Files
4 (incl. scripts, references)
Skills in repo
644
Repo updated
First seen
Licence
Apache-2.0

At a glance

Build AWS Nitro Enclave confidential computing environments using nitro-cli to create enclave images, configure attestation-aware KMS policies with PCR condition keys, validate attestation documents…

  • Works in 6 steps: Configure the Nitro Enclaves Environment → Build the Enclave Image File (EIF) → Configure KMS Attestation-Based Key… → …
  • Nitro Enclave setup
  • SKILL.md covers When to Use, Prerequisites, Workflow and Key Concepts, plus 3 more sections
  • Runs Python scripts from its folder; calls openssl, yum and docker; reaches aws-nitro-enclaves.amazonaws.com

What it does

Implementing AWS Nitro Enclave Security is an agent skill from mukul975/Anthropic-Cybersecurity-Skills. Build AWS Nitro Enclave confidential computing environments using nitro-cli to create enclave images, configure attestation-aware KMS policies with PCR condition keys, validate attestation documents against the Nitro PKI root, and set up vsock/kmstool-enclave-cli pipelines for processing PII, keys, and health records. Use for Nitro Enclave setup, attestation validation, or scoping KMS to an enclave image hash.

Its SKILL.md is about 5.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including scripts and reference files (for example `references/api-reference.md` and `scripts/agent.py`).

It sits in Security, covering Cryptography. It works with Amazon Web Services. The repository describes itself as: 817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io…. The licence is Apache-2.0.

When your agent uses it

  • Nitro Enclave setup
  • Attestation validation
  • Scoping KMS to an enclave image hash

Example prompts

  • “/implementing-aws-nitro-enclave-security”

Requirements

  • Python 3
  • Docker

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Configure the Nitro Enclaves Environment
  2. Build the Enclave Image File (EIF)
  3. Configure KMS Attestation-Based Key Policies
  4. Implement Secure Vsock Communication
  5. Validate Attestation Documents
  6. Launch and Monitor the Enclave

What it can do on your machine

Read from SKILL.md and the folder at commit 54a7988. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • openssl
    • yum
    • docker

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • aws-nitro-enclaves.amazonaws.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Implementing AWS Nitro Enclave Security loads about 5.5k tokens when it runs, and up to ~6.5k if it reads all its reference files. Until then it costs about 113 tokens; SKILL.md has 1,686 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~113
When it runs · the whole SKILL.md, loaded when a task matches
~5.5k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~6.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteRuns commands with sudoSKILL.md:64
    sudo amazon-linux-extras install aws-nitro-enclaves-cli
  • NoteRuns commands with sudoSKILL.md:65
    sudo yum install aws-nitro-enclaves-cli-devel -y
  • NoteRuns commands with sudoSKILL.md:66
    sudo systemctl enable --now nitro-enclaves-allocator.service
  • NoteRuns commands with sudoSKILL.md:67
    sudo systemctl enable --now docker
  • NoteRuns commands with sudoSKILL.md:68
    sudo usermod -aG ne ec2-user
  • NoteRuns commands with sudoSKILL.md:69
    sudo usermod -aG docker ec2-user
  • NoteRuns commands with sudoSKILL.md:77
    Restart the allocator: `sudo systemctl restart nitro-enclaves-allocator.service`

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from mukul975/Anthropic-Cybersecurity-Skills at commit 54a7988, republished under its Apache-2.0 licence (© mukul975). 1,686 words, ~5,456 tokens.

Download SKILL.mdSave it as .claude/skills/implementing-aws-nitro-enclave-security/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
implementing-aws-nitro-enclave-security
description
Build AWS Nitro Enclave confidential computing environments using nitro-cli to create enclave images, configure attestation-aware KMS policies with PCR condition keys, validate attestation documents against the Nitro PKI root, and set up vsock/kmstool-enclave-cli pipelines for processing PII, keys, and health records. Use for Nitro Enclave setup, attestation validation, or scoping KMS to an enclave image hash.
domain
cybersecurity
subdomain
cloud-security
tags
AWS-Nitro-Enclaves, confidential-computing, attestation, KMS, enclave-isolation, vsock, PCR
version
1.0.0
author
mukul975
license
Apache-2.0
nist_csf
PR.IR-01, ID.AM-08, GV.SC-06, DE.CM-01
mitre_attack
T1078.004, T1530, T1537, T1580, T0816

Implementing AWS Nitro Enclave Security

When to Use

  • Processing sensitive data (PII, PHI, financial records, cryptographic secrets) that must be isolated from EC2 instance operators and administrators
  • Building confidential computing pipelines where even root-level access on the parent instance cannot read enclave memory or state
  • Implementing cryptographic attestation workflows that tie KMS decryption rights to a specific, verified enclave image hash
  • Deploying multi-party computation environments where two or more enclaves authenticate each other via attestation before exchanging data
  • Hardening existing workloads that currently decrypt secrets on the parent instance by migrating decryption into an enclave boundary

Do not use when the workload does not handle sensitive data that requires hardware-level isolation, when the instance type does not support Nitro Enclaves (requires Nitro-based instances with at least 4 vCPUs), or when latency constraints make the vsock communication overhead unacceptable.

Prerequisites

  • An AWS account with permissions to launch Nitro-capable EC2 instances (m5.xlarge or larger, C5, R5, M6i families)
  • AWS CLI v2 and the nitro-cli toolset installed on the parent EC2 instance (Amazon Linux 2 or AL2023)
  • Docker installed on the parent instance for building enclave image files (EIF)
  • An AWS KMS symmetric key with key policy permissions for the enclave's IAM role
  • The aws-nitro-enclaves-sdk-c or Python aws-encryption-sdk for enclave-side KMS operations
  • The Nitro Enclaves allocator service configured with sufficient memory and vCPU allocation in /etc/nitro_enclaves/allocator.yaml

Workflow

Step 1: Configure the Nitro Enclaves Environment

Set up the parent EC2 instance to support enclave launches:

  • Install the Nitro Enclaves CLI: On Amazon Linux 2, install the tools and allocator:
    bash
    sudo amazon-linux-extras install aws-nitro-enclaves-cli
    sudo yum install aws-nitro-enclaves-cli-devel -y
    sudo systemctl enable --now nitro-enclaves-allocator.service
    sudo systemctl enable --now docker
    sudo usermod -aG ne ec2-user
    sudo usermod -aG docker ec2-user
  • Configure memory and CPU allocation: Edit /etc/nitro_enclaves/allocator.yaml to reserve resources for the enclave. The enclave requires dedicated memory that is carved from the parent instance:
    yaml
    ---
    memory_mib: 4096
    cpu_count: 2
    Restart the allocator: sudo systemctl restart nitro-enclaves-allocator.service
  • Verify setup: Run nitro-cli describe-enclaves to confirm the CLI can communicate with the Nitro hypervisor. An empty JSON array [] indicates no enclaves are running and the setup is correct.
Step 2: Build the Enclave Image File (EIF)

Package the sensitive workload into a signed enclave image:

  • Create the application Dockerfile: The enclave runs a minimal Linux environment. The application communicates exclusively through vsock:

    dockerfile
    FROM amazonlinux:2
    
    RUN yum install -y python3 python3-pip && \
        pip3 install boto3 cbor2 cryptography requests
    
    COPY enclave_app.py /app/enclave_app.py
    
    WORKDIR /app
    CMD ["python3", "enclave_app.py"]
  • Build the EIF with nitro-cli: Convert the Docker image into an enclave image file, capturing the PCR measurements:

    bash
    docker build -t enclave-app:latest .
    nitro-cli build-enclave \
      --docker-uri enclave-app:latest \
      --output-file enclave-app.eif

    The output contains three critical PCR values:

    • PCR0: SHA-384 hash of the enclave image file (the full image digest)
    • PCR1: SHA-384 hash of the Linux kernel and bootstrap process
    • PCR2: SHA-384 hash of the application code Record these values; they are used in KMS key policies for attestation-based access control.
  • Build a signed EIF (recommended for production): Generate a signing certificate and use it to produce PCR8:

    bash
    openssl ecparam -name secp384r1 -genkey -noout -out enclave_key.pem
    openssl req -new -key enclave_key.pem -sha384 \
      -nodes -subj "/CN=Enclave Signer" -out enclave_csr.pem
    openssl x509 -req -days 365 -in enclave_csr.pem \
      -signkey enclave_key.pem -sha384 -out enclave_cert.pem
    
    nitro-cli build-enclave \
      --docker-uri enclave-app:latest \
      --output-file enclave-app.eif \
      --private-key enclave_key.pem \
      --signing-certificate enclave_cert.pem

    PCR8 (the signing certificate hash) enables KMS policies that trust any image signed by a specific certificate, allowing image updates without changing the policy.

Step 3: Configure KMS Attestation-Based Key Policies

Create a KMS key policy that restricts decryption to a verified enclave:

  • Policy using PCR0 (image hash): This locks the key to a specific enclave build. Any code change produces a new PCR0, requiring a policy update:
    json
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "AllowEnclaveDecrypt",
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::111122223333:role/EnclaveParentRole"
          },
          "Action": [
            "kms:Decrypt",
            "kms:GenerateDataKey"
          ],
          "Resource": "*",
          "Condition": {
            "StringEqualsIgnoreCase": {
              "kms:RecipientAttestation:ImageSha384": "fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210"
            }
          }
        }
      ]
    }
  • Policy using PCR8 (signing certificate): Trusts any enclave signed with a specific certificate, enabling image rotation without policy changes:
    json
    {
      "Condition": {
        "StringEqualsIgnoreCase": {
          "kms:RecipientAttestation:PCR8": "ab3456789012345678901234567890123456789012345678901234567890123456789012345678901234567890abcdef"
        }
      }
    }
  • Multi-PCR policy for defense in depth: Combine PCR0 (image) and PCR1 (kernel) to ensure both the application and the boot environment match expected values:
    json
    {
      "Condition": {
        "StringEqualsIgnoreCase": {
          "kms:RecipientAttestation:PCR0": "<pcr0-hex>",
          "kms:RecipientAttestation:PCR1": "<pcr1-hex>"
        }
      }
    }
  • IAM role policy: The parent instance's IAM role must have kms:Decrypt permission, but the KMS key policy condition ensures the actual decryption only succeeds when the request originates from a valid enclave with the correct attestation document attached.
Step 4: Implement Secure Vsock Communication

Establish the parent-to-enclave communication channel:

  • Vsock architecture: The only way an enclave communicates with the outside world is through a vsock (virtual socket). Vsock uses a CID (Context Identifier) and port number. The parent instance CID is always 3, and the enclave CID is assigned at launch.
  • Parent-side proxy server: The parent runs a proxy that forwards KMS API calls from the enclave through the vsock to the AWS KMS endpoint:
    python
    import socket
    import json
    import boto3
    
    VSOCK_CID = 3  # Parent CID
    VSOCK_PORT = 5000
    
    def start_proxy():
        sock = socket.socket(socket.AF_VSOCK, socket.SOCK_STREAM)
        sock.bind((VSOCK_CID, VSOCK_PORT))
        sock.listen(5)
    
        kms_client = boto3.client('kms', region_name='us-east-1')
    
        while True:
            conn, addr = sock.accept()
            data = conn.recv(65536)
            request = json.loads(data.decode())
    
            if request['action'] == 'decrypt':
                response = kms_client.decrypt(
                    CiphertextBlob=bytes.fromhex(request['ciphertext']),
                    Recipient={
                        'KeyEncryptionAlgorithm': 'RSAES_OAEP_SHA_256',
                        'AttestationDocument': bytes.fromhex(request['attestation_doc'])
                    }
                )
                conn.sendall(json.dumps({
                    'ciphertext_for_recipient': response['CiphertextForRecipient'].hex()
                }).encode())
            conn.close()
  • Enclave-side client: The enclave application requests an attestation document from the Nitro Security Module (NSM) device at /dev/nsm, attaches it to KMS decrypt requests, and receives data encrypted to the enclave's ephemeral public key:
    python
    import socket
    import json
    from cryptography.hazmat.primitives.asymmetric import rsa, padding
    from cryptography.hazmat.primitives import hashes, serialization
    
    PARENT_CID = 3
    VSOCK_PORT = 5000
    
    def get_attestation_document(public_key_der):
        """Request attestation document from NSM device."""
        # Uses the aws-nitro-enclaves-nsm-api
        # NSM provides: module_id, digest (SHA384), timestamp, PCRs,
        # certificate (from Nitro PKI), cabundle, public_key, user_data, nonce
        import nsm_util
        nsm_fd = nsm_util.nsm_lib_init()
        attestation_doc = nsm_util.nsm_get_attestation_doc(
            nsm_fd,
            public_key=public_key_der,
            user_data=None,
            nonce=None
        )
        return attestation_doc
    
    def decrypt_via_parent(ciphertext_hex):
        """Send decrypt request through vsock to parent proxy."""
        private_key = rsa.generate_private_key(
            public_exponent=65537, key_size=2048
        )
        public_key_der = private_key.public_key().public_bytes(
            serialization.Encoding.DER,
            serialization.PublicFormat.SubjectPublicKeyInfo
        )
    
        attestation_doc = get_attestation_document(public_key_der)
    
        sock = socket.socket(socket.AF_VSOCK, socket.SOCK_STREAM)
        sock.connect((PARENT_CID, VSOCK_PORT))
        sock.sendall(json.dumps({
            'action': 'decrypt',
            'ciphertext': ciphertext_hex,
            'attestation_doc': attestation_doc.hex()
        }).encode())
    
        response = json.loads(sock.recv(65536).decode())
        sock.close()
    
        # KMS encrypted the plaintext to the enclave's public key
        # Only the enclave's private key can decrypt it
        ciphertext_for_recipient = bytes.fromhex(
            response['ciphertext_for_recipient']
        )
        plaintext = private_key.decrypt(
            ciphertext_for_recipient,
            padding.OAEP(
                mgf=padding.MGF1(algorithm=hashes.SHA256()),
                algorithm=hashes.SHA256(),
                label=None
            )
        )
        return plaintext
Step 5: Validate Attestation Documents

Verify attestation documents from enclaves to establish trust:

  • Attestation document structure: The document is CBOR-encoded and COSE-signed (COSE_Sign1). It contains:

    • module_id: Identifier for the NSM module
    • digest: Hashing algorithm (SHA-384)
    • timestamp: Unix epoch milliseconds when the document was created
    • pcrs: Map of PCR index to measurement value (PCR0-PCR15)
    • certificate: The NSM's x509 certificate, signed by the Nitro PKI
    • cabundle: Certificate chain from the NSM certificate to the AWS Nitro root CA
    • public_key: The enclave's ephemeral public key (provided at attestation request time)
    • user_data: Optional application-defined data (up to 512 bytes)
    • nonce: Optional nonce for freshness verification
  • Validation steps:

    1. Decode the COSE_Sign1 structure and extract the payload and certificate
    2. Verify the COSE signature using the public key from the embedded certificate
    3. Validate the certificate chain from the NSM certificate through the CA bundle to the AWS Nitro Attestation PKI root certificate (available at https://aws-nitro-enclaves.amazonaws.com/AWS_NitroEnclaves_Root-G1.zip)
    4. Check that the root CA certificate matches the expected AWS root: aws.nitro-enclaves CN
    5. Verify that no certificate in the chain is expired at the document's timestamp
    6. Compare PCR0, PCR1, PCR2 values against expected measurements from the enclave build output
    7. If a nonce was provided, verify it matches to prevent replay attacks
  • Attestation validation code:

    python
    import cbor2
    from cose import CoseMessage
    from cryptography import x509
    from cryptography.x509.oid import NameOID
    
    def validate_attestation(attestation_bytes, expected_pcrs, expected_nonce=None):
        cose_msg = CoseMessage.decode(attestation_bytes)
        payload = cbor2.loads(cose_msg.payload)
    
        # Verify certificate chain
        cert = x509.load_der_x509_certificate(payload['certificate'])
        cabundle = [x509.load_der_x509_certificate(c) for c in payload['cabundle']]
    
        # Check root CA is AWS Nitro
        root = cabundle[-1]
        cn = root.subject.get_attributes_for_oid(NameOID.COMMON_NAME)[0].value
        assert cn == 'aws.nitro-enclaves', f'Unexpected root CA: {cn}'
    
        # Verify PCR measurements
        pcrs = payload['pcrs']
        for idx, expected_value in expected_pcrs.items():
            actual = pcrs.get(idx, b'').hex()
            assert actual == expected_value, f'PCR{idx} mismatch: {actual}'
    
        # Verify nonce freshness
        if expected_nonce:
            assert payload.get('nonce') == expected_nonce, 'Nonce mismatch'
    
        return payload
Show full SKILL.md (835 more words)Show less
Step 6: Launch and Monitor the Enclave

Run the enclave and implement operational monitoring:

  • Launch the enclave:

    bash
    nitro-cli run-enclave \
      --eif-path enclave-app.eif \
      --cpu-count 2 \
      --memory 4096 \
      --enclave-cid 16 \
      --debug-mode

    Note: --debug-mode enables the enclave console for development. Remove it in production as it allows reading enclave output, which breaks the isolation guarantee.

  • Verify enclave status:

    bash
    nitro-cli describe-enclaves

    Expected output includes "State": "RUNNING", the assigned EnclaveCID, memory, CPU count, and enclave flags.

  • Read enclave console (debug mode only):

    bash
    nitro-cli console --enclave-id <enclave-id>
  • Terminate the enclave:

    bash
    nitro-cli terminate-enclave --enclave-id <enclave-id>
  • CloudWatch monitoring: Configure the parent instance to report enclave health metrics. Since the enclave has no network access, health checks must go through the vsock proxy:

    python
    # Parent-side health check over vsock
    def check_enclave_health(enclave_cid, port=5001):
        try:
            sock = socket.socket(socket.AF_VSOCK, socket.SOCK_STREAM)
            sock.settimeout(5)
            sock.connect((enclave_cid, port))
            sock.sendall(b'HEALTH_CHECK')
            response = sock.recv(1024)
            sock.close()
            return response == b'OK'
        except (socket.timeout, ConnectionRefusedError):
            return False

Key Concepts

TermDefinition
Nitro EnclaveAn isolated virtual machine created by the Nitro Hypervisor on a Nitro-based EC2 instance with no persistent storage, no network access, and no interactive access, even from the parent instance's root user
Attestation DocumentA CBOR-encoded, COSE-signed document generated by the Nitro Security Module containing PCR measurements, a certificate chain to the AWS Nitro root CA, and optional user-provided data
PCR (Platform Configuration Register)SHA-384 hash measurements that uniquely identify an enclave's image (PCR0), kernel/bootstrap (PCR1), application (PCR2), IAM role (PCR4), instance ID (PCR3), and signing certificate (PCR8)
VsockA virtual socket providing the sole communication channel between a parent EC2 instance and its enclave, using CID (Context Identifier) and port addressing
EIF (Enclave Image File)The packaged enclave image built by nitro-cli from a Docker image, containing the kernel, ramdisk, and application, producing PCR measurements at build time
Nitro Security Module (NSM)A custom Linux device (/dev/nsm) inside the enclave that provides attestation document generation and hardware random number generation
COSE_Sign1CBOR Object Signing and Encryption single-signer structure used to sign the attestation document with the NSM's private key
kms:RecipientAttestationAWS KMS condition key prefix that enables key policies to enforce that decrypt/generate operations only succeed when a valid attestation document with matching PCR values is presented

Tools & Systems

  • nitro-cli: AWS CLI tool for building enclave image files, launching/terminating enclaves, and reading enclave console output
  • AWS KMS: Key Management Service that natively supports attestation-based condition keys for Nitro Enclaves, encrypting responses to the enclave's ephemeral public key
  • aws-nitro-enclaves-sdk-c: C SDK for enclave-side KMS operations that handles attestation document generation and vsock proxy communication
  • kmstool-enclave-cli: Pre-built CLI tool (from the SDK) that runs inside the enclave to perform KMS Decrypt and GenerateRandom operations with attestation
  • Nitro Enclaves ACM: AWS Certificate Manager integration that provisions TLS certificates inside enclaves for establishing HTTPS endpoints
  • CloudTrail: Logs KMS API calls including Decrypt and GenerateDataKey operations that include Recipient parameters, enabling auditing of enclave-originated cryptographic operations

Common Scenarios

Scenario: Implementing a PII Tokenization Service in a Nitro Enclave

Context: A healthcare SaaS company processes patient records containing PHI. Regulations require that the decryption and tokenization of PHI never occurs on an instance accessible to operators. The company deploys a Nitro Enclave that receives encrypted patient records, decrypts them inside the enclave using KMS with attestation, tokenizes the PII fields, and returns only the tokenized records through the vsock.

Approach:

  1. Build the tokenization application into a Docker image containing the tokenization logic, the kmstool-enclave-cli binary, and a vsock server that accepts encrypted records
  2. Build the EIF with nitro-cli build-enclave and record PCR0, PCR1, PCR2 from the build output
  3. Create a KMS key with a key policy that includes a kms:RecipientAttestation:ImageSha384 condition matching PCR0, allowing only this specific enclave build to decrypt patient records
  4. Deploy the parent instance with an IAM role that has kms:Decrypt on the key, but the KMS condition ensures decryption only succeeds inside the attested enclave
  5. The parent application receives encrypted patient records over HTTPS, passes them to the enclave over vsock port 5000, and receives tokenized records back
  6. The enclave requests an attestation document from the NSM, attaches it to the KMS Decrypt call, receives the plaintext encrypted to its ephemeral RSA key, decrypts locally, tokenizes PII (SSN, DOB, name), and returns {ssn: "tok_a8f3...", dob: "tok_b2e1...", name: "tok_c9d4..."}
  7. CloudTrail logs show Decrypt calls with RecipientAttestation parameters, confirming all decryption occurs within the enclave boundary

Pitfalls:

  • Running the enclave in debug mode in production, which allows console access and breaks the confidentiality guarantee that regulators require
  • Setting the KMS key policy to use only the IAM role without attestation conditions, which allows the parent instance to decrypt directly without the enclave
  • Failing to reserve sufficient memory in allocator.yaml, causing the enclave to fail at launch with an opaque "resource not available" error
  • Not implementing vsock message framing, causing large records to be truncated at the 64KB socket buffer boundary
  • Forgetting that PCR0 changes with every code rebuild, requiring a KMS policy update for each deployment; use PCR8 (signing certificate) for production to decouple builds from policy updates

Output Format

## Nitro Enclave Security Assessment

**Enclave Image**: enclave-tokenizer.eif
**Build Date**: 2026-03-19T14:30:00Z
**Instance Type**: m5.2xlarge
**Allocated Resources**: 2 vCPUs, 4096 MiB memory

### PCR Measurements
| PCR | Value | Bound in KMS Policy |
|-----|-------|---------------------|
| PCR0 (Image) | a1b2c3d4e5f6... | Yes |
| PCR1 (Kernel) | f6e5d4c3b2a1... | Yes |
| PCR2 (Application) | 1a2b3c4d5e6f... | No |
| PCR8 (Signing Cert) | 9f8e7d6c5b4a... | Yes (production) |

### KMS Key Policy Verification
- Key ARN: arn:aws:kms:us-east-1:111122223333:key/mrk-abc123
- Attestation condition: kms:RecipientAttestation:ImageSha384 = PCR0
- Signing cert condition: kms:RecipientAttestation:PCR8 = <cert-hash>
- Parent role: arn:aws:iam::111122223333:role/EnclaveParentRole
- Direct decrypt from parent: BLOCKED (attestation required)
- Decrypt from verified enclave: ALLOWED

### Security Posture
- [PASS] Debug mode disabled in production launch command
- [PASS] Vsock is the only communication channel (no network interface)
- [PASS] Attestation document nonce verification implemented
- [PASS] Certificate chain validates to AWS Nitro root CA
- [WARN] PCR0 used in policy; consider PCR8 for deployment flexibility
- [FAIL] Health check endpoint does not verify enclave attestation freshness

© mukul975, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files (scripts, references) in skills/implementing-aws-nitro-enclave-security of mukul975/Anthropic-Cybersecurity-Skills.

  • SKILL.md
  • LICENSE
  • references/api-reference.md
  • scripts/agent.py

Open the folder on GitHubat commit 54a7988

Compare with similar skills

Implementing AWS Nitro Enclave Security next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Implementing AWS Nitro Enclave Security compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Implementing AWS Nitro Enclave Security this skillmukul975/Anthropic-Cybersecurity-Skills34k—~5.5kAutomated safety check: NotesApache-2.0
Hashicorp VaultBagelHole/DevOps-Security-Agent-Skills1.1k—~2kAutomated safety check: PassMIT
External SignerNethereum/Nethereum2.3k—~2.3kAutomated safety check: PassMIT
Credentialsalinaqi/maggy707—~2.4kAutomated safety check: NotesMIT
Sops EncryptionBagelHole/DevOps-Security-Agent-Skills1.1k—~539Automated safety check: PassMIT
Cloud Auditbriiirussell/cybersecurity-skills413—~1.3kAutomated safety check: NotesMIT

Similar skills

  • Hashicorp Vault

    BagelHole/DevOps-Security-Agent-Skills

    Manage secrets and PKI with HashiCorp Vault. An agent skill from BagelHole/DevOps-Security-Agent-Skills.

    1.1k GitHub stars~2k tokensUpdated 4 mo ago
    DevOps & CloudAuto-check passed
  • External Signer

    Nethereum/Nethereum

    Help users own an ERC-4337 smart account whose ECDSA key never lives in the application process — sign UserOperations with AWS KMS, Azure Key Vault, an HSM, a Ledger, or a Trezor instead of an…

    2.3k GitHub stars~2.3k tokensUpdated 4 days ago
    SecurityAuto-check passed
  • Credentials

    alinaqi/maggy

    Centralized API key management from Access.txt. An agent skill from alinaqi/maggy.

    707 GitHub stars~2.4k tokensUpdated 14 days ago
    SecurityAuto-check: notes
  • Sops Encryption

    BagelHole/DevOps-Security-Agent-Skills

    Encrypt files and configs with Mozilla SOPS. An agent skill from BagelHole/DevOps-Security-Agent-Skills.

    1.1k GitHub stars~539 tokensUpdated 4 mo ago
    DevOps & CloudAuto-check passed
  • Cloud Audit

    briiirussell/cybersecurity-skills

    Audit cloud infrastructure (AWS, GCP, Azure) for misconfigurations, excessive permissions, and security gaps.

    413 GitHub stars~1.3k tokensUpdated 4 mo ago
    SecurityAuto-check: notes
  • Ecs Operation Review

    aws/tools-for-devops-agent

    Official

    Performs a comprehensive Amazon ECS operations review across the 6 review pillars (Resiliency & HA, Observability, Security, Operations, Performance, Additional Analysis) using read-only AWS APIs…

    102 GitHub stars~4.8k tokensUpdated yesterday
    SecurityAuto-check passed

More from mukul975/Anthropic-Cybersecurity-Skills

All 644 skills in this repo
  • Campaign Attribution Evidence Analysis

    mukul975/Anthropic-Cybersecurity-Skills

    Weighs infrastructure, TTP, malware code and timing evidence with the Diamond Model and competing hypotheses to reach a confidence-rated attribution.

    34k GitHub stars~2.3k tokensUpdated 1 mo ago
    Auto-check passed
  • Go Malware Analysis in Ghidra

    mukul975/Anthropic-Cybersecurity-Skills

    Walks through reverse engineering Go-compiled malware in Ghidra: parsing buildinfo and pclntab, recovering stripped function names and extracting dependencies.

    34k GitHub stars~2.8k tokensUpdated 1 mo ago
    Auto-check passed
  • LNK and Jump List Forensics

    mukul975/Anthropic-Cybersecurity-Skills

    Guides forensic analysis of Windows LNK shortcut files and Jump Lists with LECmd, JLECmd and manual parsing to show file access and program execution.

    34k GitHub stars~2.8k tokensUpdated 1 mo ago
    Auto-check passed
  • Malware Persistence Analysis with Autoruns

    mukul975/Anthropic-Cybersecurity-Skills

    Hunts Windows malware persistence with Sysinternals Autoruns, covering run keys, services, scheduled tasks and drivers, with baseline comparison.

    34k GitHub stars~1.2k tokensUpdated 1 mo ago
    Auto-check passed
  • NTFS MFT Deleted File Recovery

    mukul975/Anthropic-Cybersecurity-Skills

    Guides a Windows forensic examination of the NTFS Master File Table to recover deleted-file evidence, build timelines and spot timestomping.

    34k GitHub stars~2.7k tokensUpdated 1 mo ago
    Auto-check passed
  • Network Covert Channel Analysis

    mukul975/Anthropic-Cybersecurity-Skills

    Detects DNS tunneling, ICMP exfiltration and HTTP-based covert channels in packet captures and DNS logs when hunting for hidden command-and-control traffic.

    34k GitHub stars~2k tokensUpdated 1 mo ago
    Auto-check passed

Questions about Implementing AWS Nitro Enclave Security

What does Implementing AWS Nitro Enclave Security do?

Build AWS Nitro Enclave confidential computing environments using nitro-cli to create enclave images, configure attestation-aware KMS policies with PCR condition keys, validate attestation documents…. Implementing AWS Nitro Enclave Security is an agent skill from mukul975/Anthropic-Cybersecurity-Skills. Build AWS Nitro Enclave confidential computing environments using nitro-cli to create enclave images, configure attestation-aware KMS policies with PCR condition keys, validate attestation documents against the Nitro PKI root, and set up vsock/kmstool-enclave-cli pipelines for processing PII, keys, and health records.

When should I use Implementing AWS Nitro Enclave Security?

Implementing AWS Nitro Enclave Security fits situations like: nitro Enclave setup; attestation validation; scoping KMS to an enclave image hash.

How do I install Implementing AWS Nitro Enclave Security in Claude Code?

Run `npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill implementing-aws-nitro-enclave-security -a claude-code`. Or copy the skill folder (skills/implementing-aws-nitro-enclave-security in mukul975/Anthropic-Cybersecurity-Skills) into .claude/skills/implementing-aws-nitro-enclave-security in your project. Claude Code loads it when a task matches its description.

How do I install Implementing AWS Nitro Enclave Security in Codex?

Run `npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill implementing-aws-nitro-enclave-security -a codex`. Or copy the skill folder (skills/implementing-aws-nitro-enclave-security in mukul975/Anthropic-Cybersecurity-Skills) into .agents/skills/implementing-aws-nitro-enclave-security in your project. Codex loads it when a task matches its description.

Can I use Implementing AWS Nitro Enclave Security in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill implementing-aws-nitro-enclave-security -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/implementing-aws-nitro-enclave-security, .gemini/skills/implementing-aws-nitro-enclave-security, .github/skills/implementing-aws-nitro-enclave-security and .opencode/skills/implementing-aws-nitro-enclave-security in your project.

What does Implementing AWS Nitro Enclave Security need to run?

Going by SKILL.md and its folder, Implementing AWS Nitro Enclave Security needs Python for the scripts in its folder and the command-line tools its instructions call (openssl, yum and docker). Our summary lists: Python 3; Docker.

Does Implementing AWS Nitro Enclave Security access the network?

SKILL.md names 1 domain. In commands or code: aws-nitro-enclaves.amazonaws.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Implementing AWS Nitro Enclave Security safe to install?

Our automated static check of SKILL.md found notes only (runs commands with sudo), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Implementing AWS Nitro Enclave Security use?

Implementing AWS Nitro Enclave Security is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Implementing AWS Nitro Enclave Security use?

About 5.5k tokens (SKILL.md is roughly 22k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1k tokens, read only when the agent opens those files.

What are the alternatives to Implementing AWS Nitro Enclave Security?

Skills that share tags, products or a category with Implementing AWS Nitro Enclave Security: Hashicorp Vault (BagelHole/DevOps-Security-Agent-Skills, 1.1k stars), External Signer (Nethereum/Nethereum, 2.3k stars), Credentials (alinaqi/maggy, 707 stars) and Sops Encryption (BagelHole/DevOps-Security-Agent-Skills, 1.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Implementing AWS Nitro Enclave Security?

mukul975 (a GitHub user) maintains it in mukul975/Anthropic-Cybersecurity-Skills, which has 33,993 GitHub stars. The repository holds 644 skills in this directory. The repository was last updated on August 31, 2026.

Source: mukul975/Anthropic-Cybersecurity-Skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.