03 Come funziona

Come funziona Quantsiv

Quattro passi, dalla scansione del tuo codice a un registro standard (CBOM CycloneDX 1.6).

1. Individuare

Quantsiv cerca gli elementi crittografici nel tuo codice sorgente. Le scansioni vengono eseguite di default nella tua CI, così il codice resta nel tuo ambiente e Quantsiv riceve la CBOM e i dettagli dei rilevamenti soltanto se decidi di caricarli. Puoi anche far scansionare a Quantsiv un repository pubblico sui suoi server; i repository privati non vengono scansionati lì.

2. Analizzare

Ogni rilevamento viene confrontato con gli algoritmi vulnerabili ad attacchi quantistici e classificato in base al periodo di conservazione.

3. Classificare

Per ogni rilevamento, Quantsiv spiega il motivo della priorità assegnata e, quando l'utilizzo è sufficientemente chiaro, indica lo standard verso cui migrare.

4. Documentare

Quantsiv genera una CBOM in formato CycloneDX 1.6, un file SARIF compatibile con gli strumenti di analisi del codice e un report con i risultati ordinati per priorità. Inoltre gli agenti di IA possono utilizzare queste informazioni per suggerire alternative resistenti agli attacchi quantistici e aiutare a pianificare le modifiche. Quantsiv confronta i risultati di ogni build con l'ultima build del ramo principale, segnalando le regressioni.

Esempio di rilevamento

Output*

example/billing-service branch main commit 1e94656 Scansione completata Anteprima illustrativa

Inventario crittografico

Asset trovati
10
Vulnerabili agli attacchi quantistici
9
Resistenti agli attacchi quantistici
1
File analizzati
8

Gravità

  • Critica 4
  • Alta 5

Esposizione

  • Harvest Now, Decrypt Later 4
  • Falsificazione delle firme 4
  • Uso non classificato 1

Rilevamenti

Altri 6 asset
  • criticoECDH-256, accordo di chiavi web/src/card-vault.ts:3
  • altoECDSA-256, chiave del certificato certs/api.crt:1
  • altoECDSA-256, generazione di chiavi services/ledger/sign.go:12
  • altoECDSA, firma services/ledger/sign.go:17
  • altoRSA-3072, uso non classificato scripts/make-release-key.sh:3
  • sicuroX25519MLKEM768, scambio di chiavi ibrido deploy/nginx.conf:6

Rilevamento: RSA-OAEP encryption

critico Harvest Now, Decrypt Later src/billing_export.py:10
Contesto aziendale
I dati dei clienti devono restare segreti per 25 anni (dichiarato nel file quantsiv.yml del repository)
Perché questa priorità
Protects data that must stay confidential for 25 years. (Protegge dati che devono restare riservati per 25 anni.)
Il rischio
La crittografia a chiave pubblica basata su RSA è vulnerabile a computer quantistici sufficientemente potenti. I dati intercettati oggi potrebbero diventare decifrabili in futuro, se i meccanismi di cifratura o di scambio di chiavi usati vengono compromessi.
Verso cosa migrare
Replace RSA encryption/key transport with ML-KEM (FIPS 203) plus an AEAD. (Sostituisci la cifratura e il trasporto di chiavi RSA con ML-KEM (FIPS 203) più un AEAD.)
Riferimenti normativi
EO 14412 (22 Jun 2026): post-quantum key establishment on high-value assets and high-impact systems by 31 Dec 2030. NIST IR 8547 (ipd): 112-bit RSA/ECC/DH deprecated after 2030, all quantum-vulnerable public-key algorithms disallowed after 2035. (EO 14412 (22 giu 2026): scambio di chiavi post-quantistico sugli high-value assets e sui sistemi ad alto impatto entro il 31 dic 2030. NIST IR 8547 (bozza pubblica iniziale): RSA, ECC e DH con sicurezza a 112 bit deprecati dopo il 2030, tutti gli algoritmi a chiave pubblica vulnerabili agli attacchi quantistici non consentiti dopo il 2035.)

Quantsiv AI: analisi di migrazione

Analisi completata Nella tua CI, con il modello che scegli Output simulato

L'implementazione attuale usa RSA-OAEP per proteggere i dati dei clienti esportati, che devono restare riservati per 25 anni.

Non è una sostituzione diretta. Qui RSA-OAEP cifra la chiave AES che protegge ogni esportazione. ML-KEM non cifra una chiave scelta: stabilisce un segreto condiviso, da cui si ricava la chiave dei dati. AES-256-GCM continua a cifrare i dati.

Migrazione consigliata
  1. Esamina l'attuale cifratura RSA-OAEP e il flusso di gestione delle chiavi.
  2. Valuta ML-KEM (FIPS 203) per lo scambio di chiavi post-quantistico, anche con approcci ibridi dove opportuno.
  3. Usa uno schema di cifratura simmetrica autenticata come AES-GCM per cifrare i dati.
  4. Individua le dipendenze, le integrazioni, i certificati e i requisiti di compatibilità coinvolti.
  5. Stabilisci la priorità della migrazione in base alla durata di riservatezza e all'esposizione crittografica.
  6. Convalida l'implementazione aggiornata ed esegui i controlli di regressione.
Priorità
Critica, riservatezza per 25 anni
Coinvolti
src/billing_export.py e il codice di decifratura del partner, fuori da questo repository
Standard
FIPS 203 (ML-KEM-768) per lo scambio di chiavi; AES-256-GCM per i dati
Compatibilità
Il formato di esportazione cambia, e il partner ha bisogno di una coppia di chiavi ML-KEM. Le esportazioni già inviate restano come erano.
Modifica proposta
--- a/src/billing_export.py
+++ b/src/billing_export.py
@@ -4,10 +4,11 @@
 from cryptography.hazmat.primitives import hashes
 from cryptography.hazmat.primitives.ciphers.aead import AESGCM
-from cryptography.hazmat.primitives.asymmetric import padding
+from cryptography.hazmat.primitives.kdf.hkdf import HKDF
 
 def seal_export(records, partner_key, export_id):
-    data_key = AESGCM.generate_key(bit_length=256)
-    wrapped_key = partner_key.encrypt(data_key, padding.OAEP(mgf=padding.MGF1(hashes.SHA256()), algorithm=hashes.SHA256(), label=None))
+    # Key establishment: ML-KEM-768 (FIPS 203); the records stay encrypted with AES-256-GCM
+    kem_ciphertext, shared_secret = partner_key.encapsulate()
+    data_key = HKDF(algorithm=hashes.SHA256(), length=32, salt=None, info=b"billing-export v2").derive(shared_secret)
     nonce = os.urandom(12)
     body = AESGCM(data_key).encrypt(nonce, json.dumps(records).encode(), export_id.encode())
-    return {"wrapped_key": wrapped_key, "nonce": nonce, "body": body}
+    return {"kem_ciphertext": kem_ciphertext, "nonce": nonce, "body": body}

Validazione

Controlli sulla modifica proposta
  • target is a post-quantum alternative: ML-KEM-768
  • rescanned: RSA is gone
  • nothing quantum-vulnerable added
  • policy passes

Output reale dei controlli di Quantsiv per la modifica qui sopra. Anche i tuoi test vengono eseguiti se imposti un comando di controllo; questo esempio non ne imposta. Una persona esamina la modifica, e non viene fatto alcun commit.

A ogni build successiva

Una pull request successiva aggiunge una chiave RSA. Il controllo delle modifiche la confronta con l'ultima build del branch principale:

gate
fail
new asset
RSA-2048 at src/partner_upload.py:6, high

Rilevamento: gruppi TLS per lo scambio di chiavi

critico Harvest Now, Decrypt Later deploy/nginx.conf:6
Trovato
ssl_ecdh_curve X25519MLKEM768:X25519:prime256v1; X25519MLKEM768 è registrato come resistente agli attacchi quantistici; X25519 ed ECDH-256 (P-256) no.
Contesto aziendale
I dati dei clienti devono restare segreti per 25 anni (dichiarato nel file quantsiv.yml del repository)
Perché questa priorità
Protects data that must stay confidential for 25 years. (Protegge dati che devono restare riservati per 25 anni.)
Il rischio
Un client che non può usare il gruppo ibrido ripiega su uno classico. Il traffico su quelle connessioni può essere registrato oggi e decifrato in seguito.
Verso cosa migrare
Migrate key establishment to ML-KEM (FIPS 203), deployed as a hybrid with X25519 (e.g. X25519MLKEM768 in TLS) during the transition. (Migra lo scambio di chiavi a ML-KEM (FIPS 203), adottato in forma ibrida con X25519 (ad es. X25519MLKEM768 in TLS) durante la transizione.)

Quantsiv AI: analisi di migrazione

Analisi completata Nella tua CI, con il modello che scegli Output simulato

Il server offre già per primo il gruppo ibrido, quindi il lavoro riguarda i client che non possono usarlo. Un file di configurazione riceve indicazioni, non una modifica del codice.

Migrazione consigliata
  1. Trova, nei log TLS del server, i client che negoziano ancora X25519 o P-256.
  2. Aggiorna o dismetti quei client, a partire da quelli che trasmettono dati dei clienti.
  3. Rimuovi i gruppi classici da ssl_ecdh_curve quando il traffico lo consente.
  4. Sonda di nuovo l'endpoint per confermare che venga negoziato il gruppo ibrido.
Priorità
Critica, riservatezza per 25 anni
Coinvolti
deploy/nginx.conf e i client di api.example.com
Standard
FIPS 203 (ML-KEM-768) nel gruppo ibrido X25519MLKEM768
Compatibilità
I client che non supportano nessuno dei gruppi rimasti non possono più connettersi una volta rimosse le alternative classiche.

Validazione

Controlli sulle indicazioni
  • target is a post-quantum alternative: X25519MLKEM768
  • no other classical algorithm named

Output reale dei controlli di Quantsiv per le indicazioni qui sopra. Le modifiche a configurazione, chiavi, certificati e formati dei token ricevono indicazioni, mai un diff.

A ogni build successiva

Una pull request successiva aggiunge una chiave RSA. Il controllo delle modifiche la confronta con l'ultima build del branch principale:

gate
fail
new asset
RSA-2048 at src/partner_upload.py:6, high

Rilevamento: JWT signing

alto Falsificazione delle firme src/auth/session_tokens.py:6
Contesto aziendale
Le firme devono restare affidabili per 10 anni (dichiarato nel file quantsiv.yml del repository)
Perché questa priorità
Signatures must stay trusted for 10 years; deadline 31 Dec 2031. (Le firme devono restare affidabili per 10 anni; scadenza 31 dic 2031.)
Il rischio
Un computer quantistico potrebbe ricavare la chiave di firma dalla sua chiave pubblica ed emettere token che ogni servizio accetta. Non serve registrare nulla prima: la chiave pubblica è pubblica per definizione.
Verso cosa migrare
Migrate to ML-DSA (FIPS 204) or SLH-DSA (FIPS 205). Prioritise long-lived signing keys: code/firmware signing, CA and token-issuer keys. (Migra a ML-DSA (FIPS 204) o SLH-DSA (FIPS 205). Dai priorità alle chiavi di firma di lunga durata: firma di codice e firmware, chiavi delle CA e degli emittenti di token.)
Riferimenti normativi
EO 14412 (22 Jun 2026): post-quantum digital signatures on high-value assets and high-impact systems by 31 Dec 2031. NIST IR 8547 (ipd): disallowed after 2035. (EO 14412 (22 giu 2026): firme digitali post-quantistiche sugli high-value assets e sui sistemi ad alto impatto entro il 31 dic 2031. NIST IR 8547 (bozza pubblica iniziale): non consentite dopo il 2035.)

Quantsiv AI: analisi di migrazione

Analisi completata Nella tua CI, con il modello che scegli Output simulato

Questi token di sessione sono firmati con RS256, e altri servizi li verificano. Cambiare algoritmo cambia il formato del token, quindi l'agente dà indicazioni invece di una modifica del codice.

Migrazione consigliata
  1. Elenca ogni servizio e libreria che verifica questi token.
  2. Verifica che ciascuno possa verificare firme ML-DSA (FIPS 204) prima che l'emittente cambi.
  3. Emetti i token con una nuova chiave ML-DSA, e accetta entrambi gli algoritmi durante il passaggio.
  4. Ritira la chiave RS256 quando nessun verificatore ne dipende più.
Priorità
Alta, scadenza per le firme 31 dic 2031
Coinvolti
src/auth/session_tokens.py e ogni servizio che verifica i token
Standard
FIPS 204 (ML-DSA)
Compatibilità
I token crescono: una firma ML-DSA-65 occupa 3.309 byte (FIPS 204), più di dieci volte una firma RS256 con una chiave a 2048 bit. Controlla i limiti di dimensione di cookie e header.

Validazione

Controlli sulle indicazioni
  • target is a post-quantum alternative: ML-DSA-65
  • no other classical algorithm named

Output reale dei controlli di Quantsiv per le indicazioni qui sopra. Le modifiche a configurazione, chiavi, certificati e formati dei token ricevono indicazioni, mai un diff.

A ogni build successiva

Una pull request successiva aggiunge una chiave RSA. Il controllo delle modifiche la confronta con l'ultima build del branch principale:

gate
fail
new asset
RSA-2048 at src/partner_upload.py:6, high

* Risultati reali di Quantsiv da repo dimostrativa

Contattaci

Ricevi aggiornamenti sulle scadenze della migrazione post-quantum, sugli standard e sulle release di Quantsiv.