mirror of
https://github.com/mukul975/Anthropic-Cybersecurity-Skills.git
synced 2026-06-26 11:44:37 +03:00
Add 30 new production-grade cybersecurity skills: AI security, supply chain, firmware, cloud-native, compliance, deception, crypto, threat hunting, purple team, OT, privacy
This commit is contained in:
@@ -0,0 +1,201 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to the Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by the Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding any notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. Please do not remove or change
|
||||
the license header comment from a contributed file except when
|
||||
necessary.
|
||||
|
||||
Copyright 2026 mukul975
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
@@ -0,0 +1,326 @@
|
||||
---
|
||||
name: performing-post-quantum-cryptography-migration
|
||||
description: >
|
||||
Assesses organizational readiness for post-quantum cryptography migration per NIST
|
||||
FIPS 203/204/205 standards. Performs cryptographic inventory scanning to identify
|
||||
quantum-vulnerable algorithms (RSA, ECDH, ECDSA), evaluates hybrid TLS configurations
|
||||
with X25519MLKEM768, and validates CRYSTALS-Kyber (ML-KEM) and CRYSTALS-Dilithium
|
||||
(ML-DSA) readiness. Implements crypto-agility assessment using oqs-provider for
|
||||
OpenSSL. Use when planning or executing the transition from classical to
|
||||
post-quantum cryptographic algorithms across enterprise infrastructure.
|
||||
domain: cybersecurity
|
||||
subdomain: cryptography
|
||||
tags: [post-quantum, PQC, CRYSTALS-Kyber, ML-KEM, ML-DSA, FIPS-203, FIPS-204, hybrid-TLS, crypto-agility]
|
||||
version: "1.0"
|
||||
author: mukul975
|
||||
license: Apache-2.0
|
||||
---
|
||||
|
||||
# Performing Post-Quantum Cryptography Migration
|
||||
|
||||
## When to Use
|
||||
|
||||
- When assessing organizational readiness for the NIST post-quantum cryptography transition
|
||||
- When building a cryptographic inventory to identify quantum-vulnerable algorithms across infrastructure
|
||||
- When evaluating hybrid TLS 1.3 configurations using X25519MLKEM768 key exchange
|
||||
- When testing CRYSTALS-Kyber (ML-KEM) and CRYSTALS-Dilithium (ML-DSA) algorithm support
|
||||
- When implementing crypto-agility to support both classical and post-quantum algorithms
|
||||
- When preparing migration roadmaps aligned with NIST IR 8547 deprecation timelines
|
||||
- When configuring oqs-provider with OpenSSL 3.x for post-quantum algorithm support
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Python 3.8+ with `cryptography`, `requests`, `pyOpenSSL` libraries
|
||||
- OpenSSL 3.0+ (3.5+ recommended for native ML-KEM/ML-DSA support)
|
||||
- oqs-provider for OpenSSL (for hybrid TLS testing with older OpenSSL)
|
||||
- Network access to target servers for TLS assessment
|
||||
- Administrative access for infrastructure scanning
|
||||
- Familiarity with PKI, TLS, and cryptographic protocols
|
||||
|
||||
## Core Concepts
|
||||
|
||||
### NIST Post-Quantum Cryptography Standards
|
||||
|
||||
NIST published three finalized PQC standards on August 13, 2024:
|
||||
|
||||
| Standard | Algorithm | Renamed To | Purpose | Based On |
|
||||
|----------|-----------|------------|---------|----------|
|
||||
| FIPS 203 | CRYSTALS-Kyber | ML-KEM | Key Encapsulation Mechanism | Module lattice |
|
||||
| FIPS 204 | CRYSTALS-Dilithium | ML-DSA | Digital Signatures | Module lattice |
|
||||
| FIPS 205 | SPHINCS+ | SLH-DSA | Digital Signatures (backup) | Stateless hash |
|
||||
|
||||
**ML-KEM (FIPS 203)** -- Primary standard for key exchange and encryption. Replaces
|
||||
RSA and ECDH for key establishment. Three security levels: ML-KEM-512, ML-KEM-768,
|
||||
ML-KEM-1024.
|
||||
|
||||
**ML-DSA (FIPS 204)** -- Primary standard for digital signatures. Replaces RSA and
|
||||
ECDSA for signing. Three security levels: ML-DSA-44, ML-DSA-65, ML-DSA-87.
|
||||
|
||||
**SLH-DSA (FIPS 205)** -- Backup signature standard using hash-based approach. Intended
|
||||
as fallback if lattice-based ML-DSA is found vulnerable. Larger signatures but
|
||||
conservative security assumptions.
|
||||
|
||||
### Quantum-Vulnerable Algorithms
|
||||
|
||||
These classical algorithms are vulnerable to quantum attack via Shor's algorithm:
|
||||
|
||||
| Algorithm | Usage | Quantum Threat | Migration Priority |
|
||||
|-----------|-------|---------------|-------------------|
|
||||
| RSA-2048/4096 | Key exchange, signatures, encryption | Shor's algorithm breaks factoring | Critical |
|
||||
| ECDH (P-256, P-384) | TLS key exchange | Shor's algorithm breaks ECDLP | Critical |
|
||||
| ECDSA | Code signing, TLS certificates | Shor's algorithm breaks ECDLP | Critical |
|
||||
| DSA | Legacy signatures | Shor's algorithm breaks DLP | Critical |
|
||||
| DH (Diffie-Hellman) | Key exchange | Shor's algorithm breaks DLP | Critical |
|
||||
| AES-128 | Symmetric encryption | Grover's halves key strength | Medium (upgrade to AES-256) |
|
||||
| SHA-256 | Hashing | Grover's reduces to 128-bit | Low (still adequate) |
|
||||
|
||||
### NIST Migration Timeline (IR 8547)
|
||||
|
||||
- **2024**: Standards published, migration planning should begin
|
||||
- **2030**: Deprecation of quantum-vulnerable algorithms for most federal systems
|
||||
- **2035**: Complete removal of quantum-vulnerable algorithms from NIST standards
|
||||
- **Now**: "Harvest now, decrypt later" attacks make early migration essential for
|
||||
long-lived secrets and data requiring long-term confidentiality
|
||||
|
||||
### Hybrid TLS Key Exchange
|
||||
|
||||
During the transition period, hybrid key exchange combines a classical algorithm with
|
||||
a post-quantum algorithm. If either algorithm is secure, the connection remains protected.
|
||||
|
||||
```
|
||||
Hybrid Key Exchange: X25519MLKEM768
|
||||
= X25519 (classical ECDH) + ML-KEM-768 (post-quantum)
|
||||
|
||||
Client Hello:
|
||||
supported_groups: X25519MLKEM768, X25519, secp256r1
|
||||
key_share: X25519MLKEM768
|
||||
|
||||
Server Hello:
|
||||
selected_group: X25519MLKEM768
|
||||
key_share: X25519MLKEM768
|
||||
|
||||
Shared Secret = KDF(X25519_shared || MLKEM768_shared)
|
||||
```
|
||||
|
||||
## Instructions
|
||||
|
||||
### Phase 1: Cryptographic Inventory Scanning
|
||||
|
||||
The first step in PQC migration is discovering all cryptographic algorithm usage
|
||||
across the enterprise. This includes TLS configurations, certificates, code libraries,
|
||||
key stores, and protocol configurations.
|
||||
|
||||
```python
|
||||
# Scan TLS endpoints for quantum-vulnerable algorithms
|
||||
python scripts/agent.py --action scan_tls \
|
||||
--targets targets.txt \
|
||||
--output tls_inventory.json
|
||||
```
|
||||
|
||||
The scanner identifies:
|
||||
- TLS protocol versions in use
|
||||
- Key exchange algorithms (RSA, ECDH, DH -- all quantum-vulnerable)
|
||||
- Certificate signature algorithms (RSA, ECDSA)
|
||||
- Cipher suite configurations
|
||||
- Certificate key sizes and expiration dates
|
||||
|
||||
### Phase 2: Crypto-Agility Assessment
|
||||
|
||||
Evaluate the organization's ability to swap cryptographic algorithms without
|
||||
major infrastructure changes:
|
||||
|
||||
```python
|
||||
# Assess crypto-agility readiness
|
||||
python scripts/agent.py --action assess_agility \
|
||||
--scan-results tls_inventory.json \
|
||||
--output agility_report.json
|
||||
```
|
||||
|
||||
Key assessment areas:
|
||||
1. **Protocol flexibility**: Can TLS configurations be updated without downtime?
|
||||
2. **Library versions**: Do deployed crypto libraries support PQC algorithms?
|
||||
3. **Certificate infrastructure**: Can CA issue PQC certificates?
|
||||
4. **Key management**: Can KMS handle larger PQC key sizes?
|
||||
5. **Hardware constraints**: Can HSMs support PQC operations?
|
||||
|
||||
### Phase 3: Hybrid TLS Readiness Testing
|
||||
|
||||
Test whether infrastructure supports hybrid key exchange with X25519MLKEM768:
|
||||
|
||||
```python
|
||||
# Test hybrid TLS support on target servers
|
||||
python scripts/agent.py --action test_hybrid_tls \
|
||||
--target server.example.com:443 \
|
||||
--output hybrid_tls_report.json
|
||||
```
|
||||
|
||||
**OpenSSL 3.5+ (native ML-KEM support):**
|
||||
```bash
|
||||
# Test with native PQC support
|
||||
openssl s_client -connect server.example.com:443 \
|
||||
-groups X25519MLKEM768
|
||||
```
|
||||
|
||||
**OpenSSL 3.0-3.4 with oqs-provider:**
|
||||
```bash
|
||||
# Configure oqs-provider
|
||||
# /etc/ssl/openssl-oqs.cnf
|
||||
[openssl_init]
|
||||
providers = provider_sect
|
||||
|
||||
[provider_sect]
|
||||
default = default_sect
|
||||
oqsprovider = oqsprovider_sect
|
||||
|
||||
[default_sect]
|
||||
activate = 1
|
||||
|
||||
[oqsprovider_sect]
|
||||
activate = 1
|
||||
module = /usr/lib/oqs-provider/oqsprovider.so
|
||||
|
||||
# Test hybrid TLS
|
||||
OPENSSL_CONF=/etc/ssl/openssl-oqs.cnf \
|
||||
openssl s_client -connect server.example.com:443 \
|
||||
-groups x25519_mlkem768
|
||||
```
|
||||
|
||||
**Web Server Configuration for Hybrid TLS:**
|
||||
|
||||
Apache httpd:
|
||||
```apache
|
||||
SSLEngine on
|
||||
SSLCertificateFile /etc/ssl/certs/server.crt
|
||||
SSLCertificateKeyFile /etc/ssl/private/server.key
|
||||
SSLOpenSSLConfCmd Curves X25519MLKEM768:X25519:prime256v1
|
||||
SSLProtocol -all +TLSv1.2 +TLSv1.3
|
||||
```
|
||||
|
||||
NGINX:
|
||||
```nginx
|
||||
ssl_ecdh_curve X25519MLKEM768:X25519:prime256v1;
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_prefer_server_ciphers on;
|
||||
```
|
||||
|
||||
### Phase 4: ML-KEM Key Encapsulation Validation
|
||||
|
||||
Validate that ML-KEM (CRYSTALS-Kyber) key encapsulation works correctly in your
|
||||
environment:
|
||||
|
||||
```python
|
||||
# Test ML-KEM key encapsulation at all security levels
|
||||
python scripts/agent.py --action test_mlkem \
|
||||
--output mlkem_validation.json
|
||||
```
|
||||
|
||||
ML-KEM parameter comparison:
|
||||
|
||||
| Parameter | ML-KEM-512 | ML-KEM-768 | ML-KEM-1024 |
|
||||
|-----------|-----------|-----------|------------|
|
||||
| Security Level | NIST Level 1 | NIST Level 3 | NIST Level 5 |
|
||||
| Public Key Size | 800 bytes | 1,184 bytes | 1,568 bytes |
|
||||
| Ciphertext Size | 768 bytes | 1,088 bytes | 1,568 bytes |
|
||||
| Shared Secret | 32 bytes | 32 bytes | 32 bytes |
|
||||
| Comparable To | AES-128 | AES-192 | AES-256 |
|
||||
|
||||
### Phase 5: ML-DSA Digital Signature Validation
|
||||
|
||||
Validate ML-DSA (CRYSTALS-Dilithium) signature operations:
|
||||
|
||||
```python
|
||||
# Test ML-DSA digital signatures
|
||||
python scripts/agent.py --action test_mldsa \
|
||||
--output mldsa_validation.json
|
||||
```
|
||||
|
||||
ML-DSA parameter comparison:
|
||||
|
||||
| Parameter | ML-DSA-44 | ML-DSA-65 | ML-DSA-87 |
|
||||
|-----------|----------|----------|----------|
|
||||
| Security Level | NIST Level 2 | NIST Level 3 | NIST Level 5 |
|
||||
| Public Key Size | 1,312 bytes | 1,952 bytes | 2,592 bytes |
|
||||
| Signature Size | 2,420 bytes | 3,293 bytes | 4,595 bytes |
|
||||
| Secret Key Size | 2,560 bytes | 4,032 bytes | 4,896 bytes |
|
||||
|
||||
### Phase 6: Migration Roadmap Generation
|
||||
|
||||
Generate a prioritized migration roadmap based on inventory and assessment results:
|
||||
|
||||
```python
|
||||
# Generate complete migration roadmap
|
||||
python scripts/agent.py --action roadmap \
|
||||
--scan-results tls_inventory.json \
|
||||
--agility-results agility_report.json \
|
||||
--output migration_roadmap.json
|
||||
```
|
||||
|
||||
The roadmap prioritizes systems by:
|
||||
1. **Data sensitivity**: Systems handling long-lived secrets migrate first
|
||||
2. **Exposure level**: Internet-facing services before internal
|
||||
3. **Crypto-agility**: Systems that can easily swap algorithms first
|
||||
4. **Compliance requirements**: Federal/regulated systems per NIST IR 8547 timeline
|
||||
5. **Dependency chains**: Libraries and frameworks before applications
|
||||
|
||||
## Examples
|
||||
|
||||
### Full Assessment Pipeline
|
||||
|
||||
```bash
|
||||
# Step 1: Scan all TLS endpoints
|
||||
python scripts/agent.py --action scan_tls --targets hosts.txt --output scan.json
|
||||
|
||||
# Step 2: Assess crypto-agility
|
||||
python scripts/agent.py --action assess_agility --scan-results scan.json --output agility.json
|
||||
|
||||
# Step 3: Test hybrid TLS on critical servers
|
||||
python scripts/agent.py --action test_hybrid_tls --target critical.example.com:443
|
||||
|
||||
# Step 4: Validate ML-KEM support
|
||||
python scripts/agent.py --action test_mlkem --output mlkem.json
|
||||
|
||||
# Step 5: Validate ML-DSA support
|
||||
python scripts/agent.py --action test_mldsa --output mldsa.json
|
||||
|
||||
# Step 6: Generate migration roadmap
|
||||
python scripts/agent.py --action roadmap --scan-results scan.json --agility-results agility.json --output roadmap.json
|
||||
```
|
||||
|
||||
### Quick Server Assessment
|
||||
|
||||
```bash
|
||||
# Single server PQC readiness check
|
||||
python scripts/agent.py --action scan_tls --target server.example.com:443
|
||||
```
|
||||
|
||||
## Validation Checklist
|
||||
|
||||
- [ ] Cryptographic inventory covers all TLS endpoints, certificates, and key stores
|
||||
- [ ] All quantum-vulnerable algorithms (RSA, ECDH, ECDSA, DH, DSA) are identified
|
||||
- [ ] Crypto-agility assessment documents library versions and upgrade paths
|
||||
- [ ] Hybrid TLS (X25519MLKEM768) tested on representative server configurations
|
||||
- [ ] ML-KEM key encapsulation validated at target security level (768 recommended)
|
||||
- [ ] ML-DSA signature verification validated for certificate chain use
|
||||
- [ ] SLH-DSA (FIPS 205) evaluated as backup signature algorithm
|
||||
- [ ] Migration roadmap prioritizes by data sensitivity and compliance timeline
|
||||
- [ ] OpenSSL version and oqs-provider compatibility confirmed
|
||||
- [ ] Key size increases accounted for in network and storage capacity planning
|
||||
- [ ] HSM/KMS compatibility with PQC algorithms verified
|
||||
- [ ] Performance impact of PQC algorithms benchmarked under production load
|
||||
- [ ] "Harvest now, decrypt later" risk assessed for sensitive data channels
|
||||
- [ ] Certificate Authority PQC readiness confirmed for certificate issuance
|
||||
|
||||
## References
|
||||
|
||||
- NIST PQC Standards: https://csrc.nist.gov/projects/post-quantum-cryptography
|
||||
- FIPS 203 (ML-KEM): https://csrc.nist.gov/pubs/fips/203/final
|
||||
- FIPS 204 (ML-DSA): https://csrc.nist.gov/pubs/fips/204/final
|
||||
- FIPS 205 (SLH-DSA): https://csrc.nist.gov/pubs/fips/205/final
|
||||
- NIST SP 1800-38 Migration Guide: https://www.nccoe.nist.gov/crypto-agility-considerations-migrating-post-quantum-cryptographic-algorithms
|
||||
- NIST IR 8547 Transition Timeline: https://csrc.nist.gov/pubs/ir/8547/ipd
|
||||
- Open Quantum Safe Project: https://openquantumsafe.org/
|
||||
- oqs-provider for OpenSSL: https://github.com/open-quantum-safe/oqs-provider
|
||||
- OQS TLS Integration: https://openquantumsafe.org/applications/tls.html
|
||||
- CISA PQC Migration Strategy: https://www.cisa.gov/sites/default/files/2024-09/Strategy-for-Migrating-to-Automated-PQC-Discovery-and-Inventory-Tools.pdf
|
||||
- IETF Hybrid Key Exchange Draft: https://datatracker.ietf.org/doc/draft-ietf-tls-hybrid-design/
|
||||
- CycloneDX Crypto BOM: https://cyclonedx.org/use-cases/cryptographic-key/
|
||||
@@ -0,0 +1,255 @@
|
||||
# API Reference: Post-Quantum Cryptography Migration
|
||||
|
||||
## NIST PQC Standards Summary
|
||||
|
||||
### FIPS 203 -- ML-KEM (Module-Lattice-Based Key-Encapsulation Mechanism)
|
||||
|
||||
Formerly CRYSTALS-Kyber. Primary standard for key exchange and encryption.
|
||||
|
||||
**Security Levels:**
|
||||
|
||||
| Parameter Set | NIST Level | Public Key | Ciphertext | Shared Secret |
|
||||
|---------------|-----------|------------|------------|---------------|
|
||||
| ML-KEM-512 | Level 1 | 800 B | 768 B | 32 B |
|
||||
| ML-KEM-768 | Level 3 | 1,184 B | 1,088 B | 32 B |
|
||||
| ML-KEM-1024 | Level 5 | 1,568 B | 1,568 B | 32 B |
|
||||
|
||||
**Operations:**
|
||||
- `KeyGen() -> (ek, dk)` -- Generate encapsulation/decapsulation key pair
|
||||
- `Encaps(ek) -> (K, c)` -- Encapsulate: produce shared secret K and ciphertext c
|
||||
- `Decaps(dk, c) -> K` -- Decapsulate: recover shared secret K from ciphertext
|
||||
|
||||
**Python (mlkem library):**
|
||||
```python
|
||||
from mlkem.ml_kem import ML_KEM
|
||||
|
||||
ml_kem = ML_KEM(768) # ML-KEM-768
|
||||
ek, dk = ml_kem.key_gen()
|
||||
shared_secret, ciphertext = ml_kem.encaps(ek)
|
||||
recovered_secret = ml_kem.decaps(dk, ciphertext)
|
||||
assert shared_secret == recovered_secret
|
||||
```
|
||||
|
||||
**OpenSSL 3.5+ (native):**
|
||||
```bash
|
||||
# Generate ML-KEM-768 key pair
|
||||
openssl genpkey -algorithm mlkem768 -out mlkem768_key.pem
|
||||
|
||||
# Display key details
|
||||
openssl pkey -in mlkem768_key.pem -text -noout
|
||||
|
||||
# Extract public key
|
||||
openssl pkey -in mlkem768_key.pem -pubout -out mlkem768_pub.pem
|
||||
```
|
||||
|
||||
### FIPS 204 -- ML-DSA (Module-Lattice-Based Digital Signature Algorithm)
|
||||
|
||||
Formerly CRYSTALS-Dilithium. Primary standard for digital signatures.
|
||||
|
||||
**Security Levels:**
|
||||
|
||||
| Parameter Set | NIST Level | Public Key | Secret Key | Signature |
|
||||
|---------------|-----------|------------|------------|-----------|
|
||||
| ML-DSA-44 | Level 2 | 1,312 B | 2,560 B | 2,420 B |
|
||||
| ML-DSA-65 | Level 3 | 1,952 B | 4,032 B | 3,293 B |
|
||||
| ML-DSA-87 | Level 5 | 2,592 B | 4,896 B | 4,595 B |
|
||||
|
||||
**Operations:**
|
||||
- `KeyGen() -> (pk, sk)` -- Generate signing/verification key pair
|
||||
- `Sign(sk, M) -> sigma` -- Sign message M with secret key
|
||||
- `Verify(pk, M, sigma) -> bool` -- Verify signature on message
|
||||
|
||||
**OpenSSL 3.5+ (native):**
|
||||
```bash
|
||||
# Generate ML-DSA-65 key pair
|
||||
openssl genpkey -algorithm mldsa65 -out mldsa65_key.pem
|
||||
|
||||
# Extract public key
|
||||
openssl pkey -in mldsa65_key.pem -pubout -out mldsa65_pub.pem
|
||||
|
||||
# Sign a file
|
||||
openssl dgst -sign mldsa65_key.pem -out signature.bin message.txt
|
||||
|
||||
# Verify signature
|
||||
openssl dgst -verify mldsa65_pub.pem -signature signature.bin message.txt
|
||||
```
|
||||
|
||||
### FIPS 205 -- SLH-DSA (Stateless Hash-Based Digital Signature Algorithm)
|
||||
|
||||
Formerly SPHINCS+. Backup signature standard using conservative hash-based approach.
|
||||
|
||||
**Parameter Sets (SHA2 variants):**
|
||||
|
||||
| Parameter Set | NIST Level | Public Key | Signature (fast) | Signature (small) |
|
||||
|---------------|-----------|------------|------------------|-------------------|
|
||||
| SLH-DSA-128 | Level 1 | 32 B | 17,088 B | 7,856 B |
|
||||
| SLH-DSA-192 | Level 3 | 48 B | 35,664 B | 16,224 B |
|
||||
| SLH-DSA-256 | Level 5 | 64 B | 49,856 B | 29,792 B |
|
||||
|
||||
**Variants:** Each level has fast (f) and small (s) variants with SHA2 or SHAKE hash.
|
||||
|
||||
## Hybrid TLS Configuration
|
||||
|
||||
### X25519MLKEM768 Key Exchange
|
||||
|
||||
The hybrid key exchange combines classical X25519 ECDH with ML-KEM-768 post-quantum
|
||||
KEM. Both must be broken for the handshake to be compromised.
|
||||
|
||||
**Apache httpd:**
|
||||
```apache
|
||||
# httpd.conf or ssl.conf
|
||||
SSLEngine on
|
||||
SSLProtocol -all +TLSv1.2 +TLSv1.3
|
||||
SSLOpenSSLConfCmd Curves X25519MLKEM768:X25519:prime256v1
|
||||
SSLCertificateFile /etc/ssl/certs/server.crt
|
||||
SSLCertificateKeyFile /etc/ssl/private/server.key
|
||||
```
|
||||
|
||||
**NGINX:**
|
||||
```nginx
|
||||
server {
|
||||
listen 443 ssl;
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_ecdh_curve X25519MLKEM768:X25519:prime256v1;
|
||||
ssl_prefer_server_ciphers on;
|
||||
ssl_certificate /etc/ssl/certs/server.crt;
|
||||
ssl_certificate_key /etc/ssl/private/server.key;
|
||||
}
|
||||
```
|
||||
|
||||
**Verification:**
|
||||
```bash
|
||||
# Test hybrid TLS connection
|
||||
openssl s_client -connect server.example.com:443 -groups X25519MLKEM768
|
||||
|
||||
# Verify negotiated group
|
||||
# Look for "Server Temp Key: X25519MLKEM768" in output
|
||||
```
|
||||
|
||||
## oqs-provider for OpenSSL 3.0+
|
||||
|
||||
### Installation
|
||||
|
||||
```bash
|
||||
# Clone and build oqs-provider
|
||||
git clone https://github.com/open-quantum-safe/oqs-provider.git
|
||||
cd oqs-provider
|
||||
mkdir build && cd build
|
||||
cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
|
||||
make -j$(nproc)
|
||||
sudo make install
|
||||
```
|
||||
|
||||
### Configuration
|
||||
|
||||
```ini
|
||||
# /etc/ssl/openssl-oqs.cnf
|
||||
openssl_conf = openssl_init
|
||||
|
||||
[openssl_init]
|
||||
providers = provider_sect
|
||||
ssl_conf = ssl_sect
|
||||
|
||||
[provider_sect]
|
||||
default = default_sect
|
||||
oqsprovider = oqsprovider_sect
|
||||
|
||||
[default_sect]
|
||||
activate = 1
|
||||
|
||||
[oqsprovider_sect]
|
||||
activate = 1
|
||||
module = /usr/lib/oqs-provider/oqsprovider.so
|
||||
|
||||
[ssl_sect]
|
||||
system_default = system_default_sect
|
||||
|
||||
[system_default_sect]
|
||||
Groups = x25519_mlkem768:X25519:P-256:P-384
|
||||
MinProtocol = TLSv1.2
|
||||
```
|
||||
|
||||
### Usage
|
||||
|
||||
```bash
|
||||
# Set environment variable
|
||||
export OPENSSL_CONF=/etc/ssl/openssl-oqs.cnf
|
||||
|
||||
# List available PQC algorithms
|
||||
openssl list -kem-algorithms | grep -i ml
|
||||
openssl list -signature-algorithms | grep -i ml
|
||||
|
||||
# Generate PQC key pair
|
||||
openssl genpkey -algorithm mlkem768 -out key.pem
|
||||
|
||||
# Test hybrid TLS
|
||||
openssl s_client -connect server:443 -groups x25519_mlkem768
|
||||
```
|
||||
|
||||
## Cryptographic Inventory Scanning
|
||||
|
||||
### NIST SP 1800-38 Discovery Architecture
|
||||
|
||||
```
|
||||
+------------------+ +------------------+ +------------------+
|
||||
| Source Code Scan | --> | | --> | Risk Assessment |
|
||||
+------------------+ | Central Analysis | +------------------+
|
||||
+------------------+ | Engine | |
|
||||
| Binary Analysis | -->| (Normalization | +------------------+
|
||||
+------------------+ | & Correlation) | | Migration |
|
||||
+------------------+ | | | Prioritization |
|
||||
| Network Traffic | -->| | +------------------+
|
||||
+------------------+ +------------------+
|
||||
+------------------+
|
||||
| Certificate Scan | -->
|
||||
+------------------+
|
||||
```
|
||||
|
||||
### Discovery Domains
|
||||
|
||||
| Domain | What to Scan | Tools |
|
||||
|--------|-------------|-------|
|
||||
| CI/CD Pipeline | Source code, build configs, dependencies | SCA tools, Semgrep |
|
||||
| Operational Systems | Running services, installed libraries, key stores | NIST SP 1800-38B tools |
|
||||
| Network Services | TLS endpoints, VPN configs, IPsec tunnels | This agent, sslyze, testssl |
|
||||
| Certificates | CA chains, code signing certs, TLS certificates | cert-manager, openssl |
|
||||
|
||||
## Quantum-Vulnerable Algorithm Reference
|
||||
|
||||
| Algorithm | NIST Status (IR 8547) | Quantum Threat | Replacement |
|
||||
|-----------|-----------------------|----------------|-------------|
|
||||
| RSA (all sizes) | Deprecated 2030, removed 2035 | Shor's algorithm | ML-KEM (encryption), ML-DSA (signing) |
|
||||
| ECDH / ECDHE | Deprecated 2030, removed 2035 | Shor's algorithm | ML-KEM / X25519MLKEM768 hybrid |
|
||||
| ECDSA | Deprecated 2030, removed 2035 | Shor's algorithm | ML-DSA |
|
||||
| DSA | Already deprecated | Shor's algorithm | ML-DSA |
|
||||
| DH / DHE | Deprecated 2030, removed 2035 | Shor's algorithm | ML-KEM |
|
||||
| AES-128 | Acceptable with caveat | Grover's halves to 64-bit | AES-256 |
|
||||
| AES-256 | Quantum-safe | Grover's reduces to 128-bit | No change needed |
|
||||
| SHA-256 | Quantum-safe | Grover's reduces to 128-bit | No change needed |
|
||||
| SHA-3 | Quantum-safe | Grover's reduces to 128-bit | No change needed |
|
||||
|
||||
## MITRE ATT&CK Relevance
|
||||
|
||||
| Technique | ID | PQC Relevance |
|
||||
|-----------|----|---------------|
|
||||
| Adversary-in-the-Middle | T1557 | Quantum computers can break key exchange in recorded sessions |
|
||||
| Encrypted Channel | T1573 | Harvest-now-decrypt-later targets encrypted C2 traffic |
|
||||
| Steal Application Access Token | T1528 | Quantum computers can forge digital signatures |
|
||||
| Forge Web Credentials | T1606 | Quantum computers can break certificate private keys |
|
||||
|
||||
## References
|
||||
|
||||
- NIST PQC Project: https://csrc.nist.gov/projects/post-quantum-cryptography
|
||||
- FIPS 203 Final: https://csrc.nist.gov/pubs/fips/203/final
|
||||
- FIPS 204 Final: https://csrc.nist.gov/pubs/fips/204/final
|
||||
- FIPS 205 Final: https://csrc.nist.gov/pubs/fips/205/final
|
||||
- NIST IR 8547 (Transition Timeline): https://csrc.nist.gov/pubs/ir/8547/ipd
|
||||
- NIST SP 1800-38 (Migration Guide): https://www.nccoe.nist.gov/crypto-agility-considerations-migrating-post-quantum-cryptographic-algorithms
|
||||
- CISA PQC Strategy: https://www.cisa.gov/sites/default/files/2024-09/Strategy-for-Migrating-to-Automated-PQC-Discovery-and-Inventory-Tools.pdf
|
||||
- Open Quantum Safe: https://openquantumsafe.org/
|
||||
- oqs-provider GitHub: https://github.com/open-quantum-safe/oqs-provider
|
||||
- OQS TLS Applications: https://openquantumsafe.org/applications/tls.html
|
||||
- IETF Hybrid Design Draft: https://datatracker.ietf.org/doc/draft-ietf-tls-hybrid-design/
|
||||
- kyber-py (Python ML-KEM): https://github.com/GiacomoPope/kyber-py
|
||||
- ml-kem (Python FIPS 203): https://github.com/AntonKueltz/ml-kem
|
||||
- CycloneDX Crypto BOM: https://cyclonedx.org/use-cases/cryptographic-key/
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user