-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathpqc_framework.yaml
More file actions
175 lines (168 loc) · 5.19 KB
/
Copy pathpqc_framework.yaml
File metadata and controls
175 lines (168 loc) · 5.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
schema_version: 1
framework_id: universal-multi-agent-pqc-framework
framework_version: 0.1.0
canonical_doc: doc/UNIVERSAL_MULTI_AGENT_PQC_FRAMEWORK.md
generated_for_package:
name: pqcrypto
version: 0.4.0
runtime_dependencies: 0
native_wrappers:
codex: .codex/skills/universal-pqc-framework/SKILL.md
claude: .claude/skills/universal-pqc-framework/SKILL.md
antigravity: .gemini/antigravity/skills/universal-pqc-framework/SKILL.md
evidence_boundary:
no_cmvp_fips_140_claim: true
zeroization: best_effort_dart
side_channel_posture: best_effort_dart
allowed_claims:
- FIPS 203-aligned ML-KEM implementation with checked-in KAT evidence.
- OpenSSL interop A-G passes for ML-KEM-512/768/1024.
- Native-provider interop tooling covers ML-KEM, ML-DSA, and SLH-DSA outside the runtime package boundary.
- FIPS 204-aligned ML-DSA implementation byte-exact on the checked-in KAT corpus.
- FIPS 205-aligned SLH-DSA for all 12 parameter sets, byte-exact on 1,248 checked-in official NIST ACVP sample cases.
forbidden_claims:
- fully FIPS validated
- CMVP validated
- certified
- hard constant-time Dart guarantee
- hard memory-erasure guarantee
- 0.4.0 is published to pub.dev before the maintainer completes the tag and publication
primitive_profile:
hybrid_required: true
classical_kex:
default: X25519
shared_secret_bytes: 32
supplied_by: application_stack
lattice_kem:
algorithm: ML-KEM-768
public_key_bytes: 1184
ciphertext_bytes: 1088
secret_key_bytes: 2400
shared_secret_bytes: 32
identity_signature:
algorithm: ML-DSA-65
public_key_bytes: 1952
secret_key_bytes: 4032
signature_bytes: 3309
context_max_bytes: 255
optional_hash_signature:
algorithm: SLH-DSA-SHAKE-128f
status: low_frequency_artifact_or_archival_signing
caveats:
- development_tree_release_candidate_until_v0_4_0_publication
- large_signatures
- slow_s_sets_require_explicit_opt_in
- buff_gap_except_128f_sets
hkdf:
output_bytes: 32
ikm: "ss_classical || ss_lattice"
salt: "deployment_salt || transcript_hash"
info_prefix: "pqcrypto universal-pqc-framework v1"
roles:
cryptographic_architect:
order: 1
owns:
- primitive selection
- byte alignment
- transcript binding
- HKDF input contract
- cryptographic misuse rules
must_not_own:
- Serverpod endpoint code
- Vault provider configuration
- Flutter UI code
secops_infrastructure_engineer:
order: 2
owns:
- KMS/HSM loading contract
- 14-day rotation policy
- break-glass eviction
- high-severity telemetry
- fail-secure ceiling
must_not_own:
- primitive changes
- endpoint serialization design
distinguished_engineer:
order: 3
owns:
- Serverpod model sketches
- endpoint and middleware placement
- immutable key bundle contract
- strict byte filters
- nonce replay defense
- circuit breaker and cache purge behavior
must_not_own:
- cryptographic claim upgrades
- provider-specific KMS secrets
client_integration_engineer:
order: 4
owns:
- Flutter isolate offload contract
- client handshake sequence
- secure local session handling
- re-handshake on eviction
must_not_own:
- server key lifecycle policy
- certification wording
serverpod_contract:
status: contract_sketch_not_implemented
source_docs_required_before_code: true
models:
PqcPublicKeyBundle:
keyId: String
epoch: int
mlKem768PublicKey: ByteData
mlDsa65PublicKey: ByteData
notBefore: DateTime
expiresAt: DateTime
signature: ByteData
PqcHandshakeRequest:
keyId: String
clientNonce: ByteData
clientTimestampMs: int
clientX25519PublicKey: ByteData
mlKem768Ciphertext: ByteData
clientMlDsa65PublicKey: ByteData
clientSignature: ByteData
transcriptHash: ByteData
PqcHandshakeResponse:
accepted: bool
sessionId: String?
serverNonce: ByteData?
expiresAt: DateTime?
errorCode: String?
strict_filters:
mlKem768PublicKey: 1184
mlKem768Ciphertext: 1088
mlDsa65PublicKey: 1952
mlDsa65Signature: 3309
nonce: 32
replay_window_ms: 2000
lifecycle_contract:
long_term_secret_disk_storage: forbidden
plaintext_env_secret_storage: forbidden
boot_token_ttl_max_minutes: 5
boot_token_max_uses: 1
scheduled_rotation_days: 14
metadata_poll_max_hours: 12
hard_validation_ceiling_days: 15
break_glass_required_actions:
- zeroize local key bundles best effort
- clear session mappings
- clear nonce replay windows
- purge local caches
- force client re-handshake
validation_gates:
docs_setup:
- dart run tool/agent_framework/check_setup.dart
implementation_readiness:
- tested Serverpod generated model round trip
- tested endpoint byte-length rejection
- tested authenticated server-key bundle path
- tested nonce replay rejection
- tested key eviction and client re-handshake
pqcrypto_regression:
- dart analyze
- dart test test/kat_evaluator_test.dart
- dart test test/mldsa_kat_test.dart
- dart test