Inventaire cryptographique et CBOM¶
On ne migre pas ce qu'on ne voit pas.
Quatre sources complémentaires¶
Aucune méthode ne suffit seule. Il faut croiser :
| Source | Ce qu'elle révèle | Angle mort |
|---|---|---|
| Scan réseau actif | Protocoles, suites, groupes, certificats réellement exposés | Flux non joignables depuis le point de scan, chiffrement applicatif |
| Capture passive (miroir de port, sondes NDR) | Ce qui est réellement négocié en production, clients compris | Volume, confidentialité des captures, trafic intra-hôte |
| Analyse statique du code et des dépendances | Appels crypto, bibliothèques, algorithmes codés en dur | Configuration à l'exécution, binaires tiers |
| Inventaire déclaratif (PKI, HSM, CMDB, fournisseurs) | Clés, certificats, contrats, produits sur étagère | Fiabilité dépendant de la qualité des données |
Scan réseau¶
Le script scripts/pqc-tls-scan.sh du dépôt teste, pour une liste de cibles, la version TLS négociée, le groupe d'échange de clés et la prise en charge de X25519MLKEM768, et produit un CSV.
Pour un inventaire plus large des suites et des certificats :
# testssl.sh : protocoles, suites, groupes, chaîne de certificats, en JSON
testssl.sh --jsonfile-pretty resultats.json --severity LOW https://appli.interne.banque.example
# nmap : balayage d'une plage, uniquement sur périmètre autorisé
nmap -p 443,8443,636,993,5671 --script ssl-enum-ciphers,ssl-cert -oX tls.xml 10.20.0.0/24
# SSH : algorithmes d'échange de clés proposés par le serveur
ssh-audit bastion.interne.banque.example
Habilitation
Un scan actif sur un SI bancaire est une opération sensible : il peut déclencher le SOC, perturber des équipements anciens (TPE, automates, mainframes) ou violer un contrat d'infogérance. Toujours : ordre de mission écrit, périmètre IP précis, fenêtre horaire, information préalable du SOC et des exploitants. Voir Gouvernance et habilitation.
Capture passive¶
Extraire les groupes proposés par les clients et ceux choisis par les serveurs dans une capture :
# Groupes négociés (ServerHello) — 0x11ec = X25519MLKEM768, 0x001d = x25519, 0x0017 = secp256r1
tshark -r capture.pcapng -Y "tls.handshake.type == 2" \
-T fields -e ip.src -e tls.handshake.extensions_key_share_group \
| sort | uniq -c | sort -rn
En production, privilégiez les métadonnées fournies par vos sondes NDR ou par les journaux des terminaisons TLS (voir Supervision) plutôt que des captures complètes.
Analyse du code¶
- Semgrep avec des règles ciblant les API cryptographiques (exemples dans Pipeline CI/CD) ;
- CBOMkit / sonar-cryptography (IBM, open source) : détection des usages crypto en Java et Python et génération de CBOM ;
- SCA classique : versions d'OpenSSL, BouncyCastle, Go, JDK — un composant récent est souvent la condition préalable à PQC.
Le format CBOM¶
CycloneDX (depuis la version 1.6) définit un type de composant cryptographic-asset qui décrit algorithmes, protocoles, certificats et clés, et les relie aux composants qui les utilisent.
{
"bomFormat": "CycloneDX",
"specVersion": "1.6",
"components": [
{
"type": "cryptographic-asset",
"bom-ref": "crypto/protocol/tls13@api-paiement",
"name": "TLS 1.3 — api-paiement.banque.example:443",
"cryptoProperties": {
"assetType": "protocol",
"protocolProperties": {
"type": "tls",
"version": "1.3",
"cipherSuites": [
{ "name": "TLS_AES_256_GCM_SHA384", "identifiers": ["0x13", "0x02"] }
]
},
"oid": "1.3.6.1.5.5.7.3.1"
}
},
{
"type": "cryptographic-asset",
"bom-ref": "crypto/algorithm/x25519mlkem768",
"name": "X25519MLKEM768",
"cryptoProperties": {
"assetType": "algorithm",
"algorithmProperties": {
"primitive": "kem",
"parameterSetIdentifier": "768",
"nistQuantumSecurityLevel": 3,
"cryptoFunctions": ["encapsulate", "decapsulate"]
}
}
}
]
}
Attributs minimaux par actif¶
Pour pouvoir prioriser, chaque entrée de l'inventaire doit porter, au-delà de la technique :
- Application / service et propriétaire métier
- Exposition : Internet, partenaires, interne, intra-datacenter
- Classification et durée de confidentialité des données transportées
- Algorithmes : échange de clés, signature, chiffrement symétrique, hachage
- Bibliothèque / produit et version, fournisseur
- Emplacement des clés (fichier, HSM, KMS cloud) et durée de vie des certificats
- Capacité de changement : configuration, mise à jour, développement, remplacement matériel