Implementing RSA Key Pair Management
Overview
RSA (Rivest-Shamir-Adleman) is the most widely deployed asymmetric cryptographic algorithm, used for digital signatures, key exchange, and encryption. This skill covers generating, storing, rotating, and managing RSA key pairs following NIST SP 800-57 key management guidelines, including key serialization formats (PEM, DER, PKCS#8), passphrase protection, and key strength validation.
When to Use
Trigger phrases:
"implementing rsa key pair management"
"RSA (Rivest-Shamir-Adleman) is the most widely deployed asymmetric cryptographic"
When deploying or configuring implementing rsa key pair management 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
- Generate RSA key pairs with appropriate key sizes (2048, 3072, 4096 bits)
- Serialize keys in PEM and DER formats with PKCS#8
- Protect private keys with strong passphrase encryption
- Implement key rotation with versioning
- Extract public key components and fingerprints
- Validate key strength and detect weak keys
- Sign and verify data using RSA-PSS
Key Concepts
This section covers key concepts for implementing rsa key pair management.
- Ensure all prerequisites are met before proceeding
- Follow the documented workflow steps in sequence
- Record results and any anomalies encountered during this phase
RSA Key Sizes and Security Strength
| Key Size (bits) |
Security Strength (bits) |
Recommended Until |
| 2048 |
112 |
2030 |
| 3072 |
128 |
Beyond 2030 |
| 4096 |
~140 |
Beyond 2030 |
RSA Padding Schemes
| Scheme |
Use Case |
Standard |
| OAEP |
Encryption |
PKCS#1 v2.2 (RFC 8017) |
| PSS |
Signatures |
PKCS#1 v2.2 (RFC 8017) |
| PKCS#1 v1.5 |
Legacy only |
Deprecated for new systems |
Key Storage Formats
- PEM: Base64-encoded with headers, human-readable
- DER: Binary ASN.1 encoding, compact
- PKCS#8: Standard for private key encapsulation
- PKCS#12/PFX: Bundled key + certificate, password-protected
Security Considerations
- Minimum 3072-bit keys for new deployments (NIST recommendation)
- Always protect private keys with AES-256-CBC passphrase encryption
- Use RSA-PSS for signatures (not PKCS#1 v1.5)
- Use RSA-OAEP for encryption (not PKCS#1 v1.5)
- Store private keys with restrictive file permissions (0600)
- Implement key rotation at least annually
Validation Criteria
When NOT to Use
- You need to test the implementation (use performing-* skills)
- Task is about configuring existing tools (use configuring-* skills)
- You need to analyze security events (use analyzing-* skills)
- Task is about building detection rules (use building-* skills)
- You don't have access to the target environment
- Task requires vendor-specific expertise (consult vendor docs)
Red Flags
- Performing actions without explicit written authorization from the asset owner
- Testing against production systems without a defined scope and rules of engagement
- Sharing sensitive findings or credentials in unencrypted communications
- Failing to properly scope and contain the assessment before starting
Verification
- All steps executed successfully against a test environment before production use
- Output documented with screenshots or logs demonstrating expected behavior
- Results validated against known-good baselines or reference implementations
- Documentation complete enough for another analyst to reproduce findings
Process
# Example: IOC detection
import re
IOC_PATTERNS = {
"ip": r"\b(?:\d{1,3}\.){3}\d{1,3}\b",
"domain": r"\b[a-z0-9-]+\.[a-z]{2,}\b",
"hash_md5": r"\b[a-f0-9]{32}\b",
"hash_sha256": r"\b[a-f0-9]{64}\b",
}
def extract_iocs(text: str) -> dict:
return {k: re.findall(v, text) for k, v in IOC_PATTERNS.items()}
- Analyze the task requirements
- Apply domain expertise
- Verify output quality
Anti-Rationalization Table
| Rationalization |
Reality |
| "We are too small to be targeted" |
Automated attacks target everyone. Size does not matter. |
| "Security slows us down" |
A breach slows you down 100x more. Build security in from the start. |
| "We will fix it after launch" |
Vulnerabilities in production are exploited within hours. Fix before deploy. |
1---2name: implementing-rsa-key-pair-management3description: Use when RSA (Rivest-Shamir-Adleman) is the most widely deployed asymmetric cryptographic algorithm, used for digital signatures, key exchange, and encryption. This skill covers generating, storing, rotating,4license: Apache-2.05---67# Implementing RSA Key Pair Management89## Overview1011RSA (Rivest-Shamir-Adleman) is the most widely deployed asymmetric cryptographic algorithm, used for digital signatures, key exchange, and encryption. This skill covers generating, storing, rotating, and managing RSA key pairs following NIST SP 800-57 key management guidelines, including key serialization formats (PEM, DER, PKCS#8), passphrase protection, and key strength validation.121314## When to Use15**Trigger phrases:**16- "implementing rsa key pair management"17- "RSA (Rivest-Shamir-Adleman) is the most widely deployed asymmetric cryptographic"181920- When deploying or configuring implementing rsa key pair management capabilities in your environment21- When establishing security controls aligned to compliance requirements22- When building or improving security architecture for this domain23- When conducting security assessments that require this implementation2425## Prerequisites2627- Familiarity with cryptography concepts and tools28- Access to a test or lab environment for safe execution29- Python 3.8+ with required dependencies installed30- Appropriate authorization for any testing activities3132## Objectives3334- Generate RSA key pairs with appropriate key sizes (2048, 3072, 4096 bits)35- Serialize keys in PEM and DER formats with PKCS#836- Protect private keys with strong passphrase encryption37- Implement key rotation with versioning38- Extract public key components and fingerprints39- Validate key strength and detect weak keys40- Sign and verify data using RSA-PSS4142## Key Concepts4344This section covers key concepts for implementing rsa key pair management.4546- Ensure all prerequisites are met before proceeding47- Follow the documented workflow steps in sequence48- Record results and any anomalies encountered during this phase49### RSA Key Sizes and Security Strength5051| Key Size (bits) | Security Strength (bits) | Recommended Until |52|-----------------|-------------------------|-------------------|53| 2048 | 112 | 2030 |54| 3072 | 128 | Beyond 2030 |55| 4096 | ~140 | Beyond 2030 |5657### RSA Padding Schemes5859| Scheme | Use Case | Standard |60|--------|----------|----------|61| OAEP | Encryption | PKCS#1 v2.2 (RFC 8017) |62| PSS | Signatures | PKCS#1 v2.2 (RFC 8017) |63| PKCS#1 v1.5 | Legacy only | Deprecated for new systems |6465### Key Storage Formats6667- **PEM**: Base64-encoded with headers, human-readable68- **DER**: Binary ASN.1 encoding, compact69- **PKCS#8**: Standard for private key encapsulation70- **PKCS#12/PFX**: Bundled key + certificate, password-protected7172## Security Considerations7374- Minimum 3072-bit keys for new deployments (NIST recommendation)75- Always protect private keys with AES-256-CBC passphrase encryption76- Use RSA-PSS for signatures (not PKCS#1 v1.5)77- Use RSA-OAEP for encryption (not PKCS#1 v1.5)78- Store private keys with restrictive file permissions (0600)79- Implement key rotation at least annually8081## Validation Criteria8283- [ ] Key generation produces valid RSA key pair84- [ ] Public key can be extracted from private key85- [ ] Private key is protected with passphrase86- [ ] RSA-PSS signature verification succeeds87- [ ] Tampered signature verification fails88- [ ] Key fingerprint is computed correctly89- [ ] Key rotation maintains old key access for verification90## When NOT to Use9192- You need to test the implementation (use performing-* skills)93- Task is about configuring existing tools (use configuring-* skills)94- You need to analyze security events (use analyzing-* skills)95- Task is about building detection rules (use building-* skills)96- You don't have access to the target environment97- Task requires vendor-specific expertise (consult vendor docs)9899100## Red Flags101102- Performing actions without explicit written authorization from the asset owner103- Testing against production systems without a defined scope and rules of engagement104- Sharing sensitive findings or credentials in unencrypted communications105- Failing to properly scope and contain the assessment before starting106## Verification107108- All steps executed successfully against a test environment before production use109- Output documented with screenshots or logs demonstrating expected behavior110- Results validated against known-good baselines or reference implementations111- Documentation complete enough for another analyst to reproduce findings112113## Process114115```python116# Example: IOC detection117import re118119IOC_PATTERNS = {120 "ip": r"\b(?:\d{1,3}\.){3}\d{1,3}\b",121 "domain": r"\b[a-z0-9-]+\.[a-z]{2,}\b",122 "hash_md5": r"\b[a-f0-9]{32}\b",123 "hash_sha256": r"\b[a-f0-9]{64}\b",124}125126def extract_iocs(text: str) -> dict:127 return {k: re.findall(v, text) for k, v in IOC_PATTERNS.items()}128```1291301. Analyze the task requirements1312. Apply domain expertise1323. Verify output quality133134## Anti-Rationalization Table135136| Rationalization | Reality |137|---|---|138| "We are too small to be targeted" | Automated attacks target everyone. Size does not matter. |139| "Security slows us down" | A breach slows you down 100x more. Build security in from the start. |140| "We will fix it after launch" | Vulnerabilities in production are exploited within hours. Fix before deploy. |