Implementing AES Encryption for Data at Rest
AES (Advanced Encryption Standard) is a symmetric block cipher standardized by NIST (FIPS 197) used to protect
MCP get_skill({ skillId: "implementing-aes-encryption-for-data-at-rest-d39eff93" })Use this skill with your agent
Create a free account and connect via MCP
# 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 1. Install the `cryptography` library: `pip install cryptography` 2. Generate or derive an encryption key 3. Create a random nonce for each encryption operation 4. Encrypt data using AES-256-GCM with the key and nonce 5. Store nonce + ciphertext + authentication tag together 6. For decryption, extract nonce, verify tag, and decrypt ## Encrypted File Format ``` [salt: 16 bytes][nonce: 12 bytes][ciphertext: variable][tag: 16 bytes] ``` ## Security Considerations - Always use authenticated encryption (GCM, CCM) to prevent tampering - Never reuse a nonce with the same key (catastrophic in GCM) - Use at least 256-bit keys for long-term data protection - Securely wipe keys from memory after use when possible - Rotate encryption keys periodically per organizational policy - For disk-level encryption, consider XTS mode (AES-XTS) ## Validation Criteria - [ ] AES-256-GCM encryption produces valid ciphertext - [ ] Decryption recovers original plaintext exactly - [ ] Authentication tag detects any ciphertext modification - [ ] Key derivation uses sufficient iterations/parameters - [ ] Nonces are never reused for the same key - [ ] Large files (>1GB) can be processed via streaming - [ ] Encrypted file format includes all necessary metadata
Related Skills
More skills in Security & Compliance
1password
Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app integration, signing in, and reading/injecting secrets for commands.
1password
Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.
Accessibility Lead
Accessibility team lead and orchestrator. Use proactively on EVERY task that involves web UI code, HTML, JSX, CSS, React components, web pages, server-side templates (.leaf, .ejs, .erb, .hbs), or any user-facing web content. This agent coordinates the accessibility specialist team and ensures no accessibility requirement is missed. Runs the final review before any UI code is considered complete. Applies to any web framework, server-side templating framework (Vapor/Leaf, Rails/ERB, Django/Jinja, Express/EJS), or vanilla HTML/CSS/JS. Works alongside other team leads (e.g., swift-lead) in multi-language projects.
Accessibility Regression Detector
Detects accessibility regressions by comparing audit results across commits/branches. Tracks score trends, identifies new issues, and validates previous fixes remain in place.
Accessibility Statement
Generates conformance/accessibility statements following W3C or EU model templates. Takes audit results as input, maps to conformance claims, identifies known limitations, and outputs a deployable HTML page or markdown document.
Accessibility Tool Builder
Expert in building accessibility scanning tools, rule engines, document parsers, report generators, and audit automation. WCAG criterion mapping, severity scoring, CLI/GUI scanner architecture, CI/CD integration.
Explore Other Categories
Skills from other categories with shared topics
Data Preprocessing Pipeline
Design and implement repeatable preprocessing pipelines for cleaning, encoding, transforming, and validating ML input data.
Dataset Splitter
Split datasets into training, validation, and test partitions with the right stratification and temporal rules. Use as a narrow preprocessing helper once the broader ML workflow is already chosen, not as the main route owner for an end-to-end ML task.
Denario
Multiagent AI system for scientific research assistance that automates research workflows from data analysis to publication. This skill should be used when generating research ideas from datasets, developing research methodologies, executing computational experiments, performing literature searches, or generating publication-ready papers in LaTeX format. Supports end-to-end research pipelines with customizable agent orchestration.