- Add validated mitre_attack frontmatter to all 754 skills (286 distinct
techniques), verified against MITRE ATT&CK v19.1 via the official
mitreattack-python library: 0 revoked, deprecated, or invalid IDs
- Curate precise per-skill technique IDs for forensics, malware-analysis,
threat-intel, and red-team skills (e.g. DCSync -> T1003.006,
Kerberoasting -> T1558.003, Pass-the-Ticket -> T1550.003)
- Reconcile v19.1 tactic restructuring: Defense Evasion split into
Stealth (TA0005) and Defense Impairment (TA0112); revoked T1562.*
family and T1070.001/.002 remapped to active equivalents (T1685.*)
- Normalize word-split tags across 35 skills (remove filename-derived
stopword tags, add semantic cybersecurity tags)
- Add api-reference.md for 3 skills that were missing it
- Update README ATT&CK section with accurate v19.1 tactic distribution
AES (Advanced Encryption Standard) is a symmetric block cipher standardized by NIST (FIPS 197) used to protect classified and sensitive data. This skill covers implementing AES-256 encryption in GCM m
cybersecurity
cryptography
cryptography
encryption
aes
data-at-rest
symmetric-encryption
1.0
mahipal
Apache-2.0
PR.DS-01
PR.DS-02
PR.DS-10
T1600
T1573
T1553
T1486
Implementing AES Encryption for Data at Rest
Overview
AES (Advanced Encryption Standard) is a symmetric block cipher standardized by NIST (FIPS 197) used to protect classified and sensitive data. This skill covers implementing AES-256 encryption in GCM mode for encrypting files and data stores at rest, including proper key derivation, IV/nonce management, and authenticated encryption.
When to Use
When deploying or configuring implementing aes encryption for data at rest capabilities in your environment
When establishing security controls aligned to compliance requirements
When building or improving security architecture for this domain
When conducting security assessments that require this implementation
Prerequisites
Familiarity with cryptography concepts and tools
Access to a test or lab environment for safe execution
Python 3.8+ with required dependencies installed
Appropriate authorization for any testing activities
Objectives
Implement AES-256-GCM encryption and decryption for files
Derive encryption keys from passwords using PBKDF2 and Argon2
Manage initialization vectors (IVs) and nonces securely
Encrypt and decrypt entire directory trees
Implement authenticated encryption to detect tampering
Handle large files with streaming encryption
Key Concepts
AES Modes of Operation
Mode
Authentication
Parallelizable
Use Case
GCM
Yes (AEAD)
Yes
Network data, file encryption
CBC
No
Decrypt only
Legacy systems, disk encryption
CTR
No
Yes
Streaming encryption
CCM
Yes (AEAD)
No
IoT, constrained environments
Key Derivation
Never use raw passwords as encryption keys. Always derive keys using:
PBKDF2: NIST-approved, widely supported (minimum 600,000 iterations as of 2024)
Argon2id: Winner of Password Hashing Competition, memory-hard
scrypt: Memory-hard, good alternative to Argon2
Nonce/IV Management
GCM requires a 96-bit (12-byte) nonce that must NEVER be reused with the same key
Generate nonces using os.urandom() (CSPRNG)
Store nonce alongside ciphertext (it is not secret)
Workflow
Install the cryptography library: pip install cryptography
Generate or derive an encryption key
Create a random nonce for each encryption operation
Encrypt data using AES-256-GCM with the key and nonce
Store nonce + ciphertext + authentication tag together
For decryption, extract nonce, verify tag, and decrypt