▚ Echoes of Hackers · divulgation responsable

Thales Luna 8 - ce qu'un HSM certifié garantit vraiment, et où se trouve le risque réel

La plateforme HSM 2026 de Thales est bien réelle, et ses certifications aussi. Mais une certification couvre un périmètre précis : en sortir, c'est déplacer le risque. On démonte le marketing sans rien inventer, sources à l'appui.

// analyse factuelle sources vérifiables rédigé le 16 oct. 2026 par Platon-Y · président ÉOH

00 En bref - l'angle honnête

Avant de plonger : ni « c'est troué », ni « c'est inviolable ». La vérité est plus utile que les deux.

✓ Ce qui est vrai

  • Luna 8 existe : nouvelle plateforme matérielle lancée le 4 août 2026 (modèles réseau Luna 100 / 150 / 190), à ne pas confondre avec un firmware.
  • Un HSM Luna = coffre-fort cryptographique matériel : les clés ne sortent jamais en clair du boîtier anti-intrusion.
  • Les certifications sont réelles et vérifiables : FIPS 140-3 niveau 3 (CMVP #4684), CC EAL4+, QSCD eIDAS.

⚠ Ce qu'on ne te vendra pas

  • La seule CVE publique propre à Luna est CVE-2015-5464 (2015, sévérité Low, nécessite un utilisateur déjà authentifié).
  • Le vrai sujet n'est pas le matériel : c'est la config PKCS#11, les rôles, les attributs de clés et la chaîne de confiance.
  • Hors mode FIPS, le HSM sort de son périmètre certifié - la doc Thales le dit elle-même.
// position ÉOH

Une certification protège un périmètre précis. En dehors de ce périmètre, rien n'est « 100 % sûr ». Ce dossier montre exactement ce que la certification couvre, où le risque se trouve réellement, et comment le corriger.

01 Luna 8, c'est quoi vraiment

« Luna 8 » n'est pas un numéro de firmware. C'est la génération matérielle 2026, distincte de la génération Luna 7.

La plateforme Luna 8 (2026)

Annoncée le 4 août 2026, la plateforme Luna 8 Network HSM se décline en trois modèles réseau. Elle embarque un processeur cryptographique conçu par Thales (custom), une architecture multi-conteneurs, et une source d'entropie double incluant un QRNG (générateur quantique).

Luna 100
1

conteneur · 128 MB de stockage de clés

Luna 150
≤6

conteneurs · 1024 MB de stockage de clés

Luna 190
≤15

conteneurs · 4096 MB de stockage de clés

  • Chaque appliance peut contenir 1 ou 2 crypto-modules ; chaque module héberge jusqu'à 15 instances HSM → max 30 instances / appliance. Chaque conteneur = une instance HSM isolée, jusqu'à 10 partitions.
  • Possibilité de faire tourner plusieurs versions de firmware Luna 8 dans des conteneurs isolés sur le même matériel.
  • Réseau : 4×10G SFP+ (fibre mono/multimode) + RJ45, port BMC 1G.
  • Annoncée 20× plus efficace énergétiquement par transaction que Luna 7 (chiffre marketing, voir §04).

vs la génération Luna 7

La génération précédente reste très répandue - c'est elle qui porte aujourd'hui les certificats détaillés plus bas.

Modèle (Luna 7)MémoirePartitions (max)RSA-2048ECC P-256AES-GCM
A7002 MB (4 MB dès fw 7.7.0)5 (5)1 000 tps2 000 tps2 000 tps
A75016 MB (32 MB dès 7.7.0)5 (20)5 000 tps10 000 tps10 000 tps
A79032 MB (64 MB dès 7.7.0)10 (100)10 000 tps22 000 tps17 000 tps

Appliance 1U, double alim hot-swap, IPv4/IPv6, port bonding, MTBF 171 308 h. Autres form factors de la gamme : Luna PCIe HSM 7, Luna USB HSM 7, Luna Backup HSM 7 (G7), et Luna Cloud HSM / DPoD (service cloud).

Sources : annonce Luna 8 (Thales, 4 août 2026) · Luna 8 Network HSM - Product Brief (PDF) · Luna 7 Network HSM - Product Brief (PDF).

✔ Correctif / recommandation ÉOH
  • Ne dimensionne pas sur un slogan : « 20× plus efficace » ou « orders of magnitude » ne remplacent pas une mesure. Avant achat ou migration, exige des chiffres sur ta charge (algos, tailles de clés, nombre de partitions) et compare-les aux tps publiés de la datasheet.
  • Luna 7 ou Luna 8 ? Si ton contexte exige une certification accordée aujourd'hui, c'est la génération Luna 7 / K7 qui la porte (§04).

02 Ce que ça fait (le rôle réel)

Un HSM stocke et protège les clés, et exécute les opérations crypto à la place des serveurs - en gardant les clés dans du matériel inviolable.

🔑 Coffre crypto

Génération et stockage de clés dans le matériel. Les clés marquées non-exportables restent dans le HSM : elles n'en sortent jamais en clair. Le boîtier est « tamper-evident » (inviolable à preuve d'effraction).

👤 Rôles séparés

HSM SO (Security Officer) et Partition SO pour l'administration ; Crypto Officer (CO) = gestion des clés + opérations ; Crypto User (CU) = usage des clés seulement. La séparation des rôles est le premier rempart.

🖐 Authentification PED

Deux modes : par mot de passe (série A) ou multifacteur PED (série S, haute assurance) avec clés PED colorées - bleu = SO, noir = CO, gris = CU/LCO.

🧱 Partitions

Plusieurs HSM virtuels isolés dans un même boîtier (multi-tenant). Backup/restore matériel-à-matériel, haute dispo (HA) / load-balancing, clustering « quantum-safe ».

🎲 QRNG

Sur Luna 8, source d'entropie double incluant un générateur quantique (QRNG) + source externe possible. Sur Luna 7, RNG conçu pour AIS 20/31 DRG.4 + HMAC_DRBG conforme NIST SP 800-90A.

🔌 Interfaces

Administration via LunaSH (console série / SSH), connexion applicative via client PKCS#11 (+ Java JCA/JCE, CAPI/CNG, OpenSSL), transport NTLS en TLS mutuel sur le port 1792.

// ce qu'un HSM ne garantit PAS

Clés non-exportables ≠ système sûr. Un HSM ne protège pas d'une application mal codée qui signe n'importe quoi, d'un rôle CO compromis, ou d'un attribut CKA_DERIVE laissé ouvert par défaut. Le risque se déplace vers la configuration et le code - c'est là qu'on travaille.

✔ Correctif / recommandation ÉOH
  • Séparation des rôles stricte : SO, CO et CU sur des personnes distinctes ; le CU (usage seul) pour les applications, jamais le CO.
  • Authentification forte pour les opérations sensibles : PED (série S) et quorum M-of-N plutôt que mot de passe seul.
  • Attributs de clés durcis dès la génération (CKA_SENSITIVE=TRUE, CKA_EXTRACTABLE=FALSE, CKA_DERIVE=FALSE) - détail dans le tuto §10.
  • Contrôle applicatif : l'application qui demande une signature doit elle-même valider ce qu'elle fait signer ; le HSM exécute, il ne juge pas.

03 Crypto & post-quantique (avec les versions de firmware)

Le détail compte : tel algorithme PQC n'existe qu'à partir de telle version de firmware, avec telles limites honnêtes.

Asymétrique & ECC

  • RSA jusqu'à 4096 bits (PKCS#1 v1.5, OAEP, PSS).
  • ECC NIST P-192…P-521, Brainpool P192–P512, secp256k1 (BIP32), Montgomery X25519/X448, Edwards Ed25519/Ed448. ECDSA/ECDH/ECIES.

Symétrique & hash

  • AES 128/192/256 (ECB, CBC, CBC-PAD, CTR, GCM, GMAC, Key Wrap, AES-XTS 512-bit), ARIA, SEED ; 3DES legacy (déchiffrement/unwrap).
  • SHA-2 et SHA-3 (224–512), HMAC, SHAKE-128/256, KDF SP 800-108, Key Wrapping SP 800-38F.

Télécom & wallet

  • MILENAGE, TUAK, COMP128 (authentification abonné 3GPP/5G).
  • BIP32 et SLIP10 (HD keys / portefeuilles).

RNG

  • Luna 7 : AIS 20/31 DRG.4 (bruit matériel) + HMAC_DRBG NIST 800-90A.
  • Luna 8 : entropie double dont QRNG.

Post-quantique (PQC) - ce qui marche à partir de quelle version

AlgorithmeStandardDispo à partir deLimites honnêtes
LMS / HSS
signatures à base de hachage
RFC 8554 · NIST SP 800-208 firmware 7.8.9
(client 10.8.0+)
Clés HSS non clonables → pas de backup/restore, pas de HA.
ML-DSA FIPS 204 firmware 7.9.0+ Clés clonables, sauvegardables et utilisables en HA.
ML-KEM FIPS 203 firmware 7.9.0+ Clés clonables, sauvegardables et utilisables en HA.
Multi-part signing HSS - firmware 7.9.1 -

Luna 8 annonce ML-KEM, ML-DSA et LMS/HSS en standard. Mécanismes LMS/HSS : CKM_HSS, CKM_HSS_KEY_PAIR_GEN.

✔ Correctif / recommandation ÉOH
  • Vérifie ta version avant de promettre du PQC : firmware ≥ 7.8.9 + client 10.8.0+ pour LMS/HSS, firmware ≥ 7.9.0 pour ML-DSA/ML-KEM.
  • Clés HSS non clonables → pas de backup ni de HA : documente une procédure de perte/remplacement de clé avant la mise en production, et réserve HSS aux usages qui la tolèrent.
  • Pour les usages qui exigent sauvegarde et haute dispo, privilégie ML-DSA / ML-KEM, clonables et utilisables en HA.

Sources : Thales - Post-Quantum Algorithms · Release notes firmware 7.8.9 · LMS & HSS.

04 Certifications réelles (certifié vs marketing)

Les certificats existent, portent des numéros, des versions de firmware et des dates. Mais ils ne couvrent qu'un périmètre précis.

FIPS 140-3 (NIST CMVP)

CMVP #4684 · Active
140-3

Thales Luna K7 Cryptographic Module - niveau global 3, type « Multi-Chip Embedded » (carte PCIe). Firmwares validés 7.8.4 et 7.8.5. Sunset 1/4/2029.

Certificat #4684

CMVP #4962
G7

Luna Backup HSM 7 (G7) - firmware 7.7.3.

Doc conformité FIPS

CMVP #5450 · Active
T7

Luna T7 (variante Thales TCT, US) - FIPS 140-3 niveau 3, sunset 28/7/2031.

Certificat #5450

Contexte réel : le CMVP n'accepte plus de soumissions 140-2, et les certifs 140-2 deviennent « historical » à partir de septembre 2026. Thales revendique avoir été le premier HSM à obtenir FIPS 140-3 niveau 3.

Common Criteria / eIDAS

  • CC EAL4+ - certificat NSCIB-CC-2400054-01, EAL4 augmenté (ALC_FLR.2 + AVA_VAN.5), conformité stricte au profil EN 419221-5:2018. Émis le 5 sept. 2025, valide jusqu'au 5 sept. 2030. Certificat (PDF)
  • QSCD eIDAS - certificat eIDAS-2400055-01 (TrustCB, organisme désigné néerlandais), même périmètre, émis 2025-09-05. Liste eIDAS TrustCB
  • Certificat CC antérieur (Singapour) CSA_CC_19003, EAL4+ AVA_VAN.5, émis 20/11/2020, expiré le 19/11/2025.
// encart critique - ce que la certif NE dit PAS

1. Le périmètre est étroit. C'est un module précis (le K7, carte PCIe interne), dans une config évaluée précise, pour des firmwares précis (7.7.0–7.7.2 et 7.8.5 côté CC ; 7.8.4/7.8.5 côté FIPS). Le certificat ne s'applique qu'à ces versions/configs.

2. Hors mode FIPS = hors périmètre. La doc Thales l'écrit elle-même : les pleines capacités du HSM dépassent les limites prescrites par FIPS ; pour être conforme, il faut configurer/restreindre le HSM. Donc un Luna sorti du mode FIPS n'est plus dans son périmètre certifié.

3. Pour Luna 8, c'est encore « in process ». Les certifs FIPS 140-3 niveau 3 et CC EAL4+ sont marquées « in process » / « being independently assessed » dans la datasheet d'août 2026 - annoncées, pas encore accordées.

4. Le reste est du marketing. « quantum-safe root of trust », « unparalleled performance », « 20× plus efficace » : les perfs chiffrées (§01) sont sourcées, mais les superlatifs ne sont pas des faits certifiés.

✔ Correctif / recommandation ÉOH
  • Aligne ta version sur le certificat : garde un tableau « firmware en production ↔ firmwares couverts par le certificat » (7.8.4/7.8.5 pour FIPS #4684) et vérifie-le à chaque mise à jour.
  • Active et vérifie le mode FIPS si ton contexte exige la conformité : c'est la seule configuration dans le périmètre certifié.
  • Luna 8 : pas de conformité sur parole. Tant que le certificat n'apparaît pas sur csrc.nist.gov / commoncriteriaportal.org, considère la conformité comme « non acquise » dans tes dossiers d'audit.
  • Surveille les dates : sunset du #4684 (1/4/2029), fin du CC (5/9/2030), certifs 140-2 « historical » dès septembre 2026, CSA_CC_19003 déjà expiré.

Source clé : Thales - FIPS compliance.

05 Le processeur crypto « custom » - faits matériels (K7 / Luna 8)

Le « custom crypto processor » du K7 a un nom et une architecture réels : PowerPC 476 + co-processeur Andretta, pas une boîte noire magique. Tout ce qui suit vient des docs de certification publiques - sauf pour Luna 8, où on reste au conditionnel.

Nature du module K7

Le « Thales Luna K7 Cryptographic Module » est un module « multi-chip embedded » au sens ISO/IEC 19790:2012 : plusieurs puces sur un même circuit imprimé, sous forme de carte PCIe logée dans l'appliance. La frontière cryptographique est l'enceinte métallique sur les faces supérieure et inférieure de la carte. Ventilateurs, dissipateurs et batterie de backup amovible sont dans la frontière mais hors des exigences de test. Le K7 n'est ni un FPGA ni un simple ASIC générique : c'est un assemblage multi-puces sous résine (les termes « ASIC » ou « SoC » n'apparaissent pas dans les docs).

// frontière cryptographique - enceinte métallique + époxy (carte PCIe)
CPU principalPowerPC 476bibliothèque K7 validée CAVP sur cet environnement
Co-processeur cryptoAndretta 2.0micro-code OTP chargé en usine, non lisible ensuite
EntropieTRNG · ESV #98+ CTR_DRBG AES-256
Capteurs EFP5 / 3,3 / 1,8 V · temp.hors plage → shutdown
Mémoireclés & objetspermanents protégés crypto · session effacés
Anti-tamperépoxy opaque + pottingK7 passif · K7+ actif
ComposantFait documentéSource
CPUPowerPC 476 - « Luna K7 Cryptographic Library » (firmware 7.0.1) validée CAVP (SHA2, ECDSA, RSA, AES, DSA, KAS)CAVP product=8382
Co-processeurAndretta 2.0 - micro-code programmable une seule fois (OTP) chargé pendant la fabrication ; l'utilisateur ne peut pas lire la version du micro-code ensuiteCC Security Target, note 1 p.9
TRNG« Thales K7 Hardware Platform TRNG », ESV #98 - bruit physique en direct, conditionnement SHA2-512, SP 800-90B, full entropyFIPS Security Policy #4684
DRBGCTR_DRBG AES-256, SP 800-90A r1, 256 bits de sécurité (cert algo #C1707)FIPS SP, table 2-2
EFP3 rails (5 V, 3,3 V, 1,8 V) + température. Seuils −2 °C / +80 °C ; ex. 5 V hors 4,76–5,26 V → shutdown (et effacement des clés sur K7+)FIPS SP §7.3, table 7-2
EffacementsSignal externe (jumper) et retrait du slot PCIe détectés à chaud ET hors tension → effacement de la TVK (Token Variable Key), journalisationFIPS SP §7.1.2–7.1.3

Nuance RNG : la Security Policy FIPS documente un CTR_DRBG AES-256 ; la mention HMAC_DRBG / AIS 20/31 DRG.4 vient des datasheets produit. Les deux formulations coexistent - on les cite prudemment.

Anti-tamper : deux niveaux souvent amalgamés

Enceinte métallique opaque + résine époxy dure et opaque coulée directement sur le PCB : toute tentative de retrait endommage et rend le module inopérant, et l'opacité empêche l'inspection visuelle du design et le sondage physique (probing). Mais le niveau de détection dépend de la variante :

K7 · blindage PASSIF
détection visuelle

Simple coating époxy. Détection passive uniquement - une intrusion se constate a posteriori, à l'inspection.

✗ Pas d'effacement actif des clés sur intrusion physique.

vs
K7+ · blindage ACTIF
effacement des clés

Blindage électriquement câblé. Détection active ET passive - une attaque du blindage déclenche l'effacement.

✓ Efface toutes les clés en cas d'intrusion.

// point honnête

Le marketing « tamper-resistant » recouvre deux niveaux très différents. Le K7 « de base » repose sur la détection visuelle ; seul le K7+ efface les clés sur attaque du blindage. Un acheteur doit savoir lequel il prend. (CC ST §1.4.1 table 1-2, §7.7.2–7.7.3 ; FIPS SP §7)

✔ Correctif / recommandation ÉOH
  • Demande explicitement la variante (K7 ou K7+) et vérifie-la dans la Security Policy / le Security Target, pas dans la plaquette.
  • Si ta menace inclut l'accès physique, choisis le K7+ (effacement actif des clés).
  • Avec un K7 « de base » (détection passive) : inspection visuelle régulière et journalisée de l'enceinte, contrôle d'accès physique à la baie - une détection passive n'a de valeur que si quelqu'un regarde.

Lignée de la puce

K5 · legacy ProtectServerARM
→
K6 · Luna gén. 6PPC440EPxAMCC, embedded · fin de vie
→
K7 / K7+ · Luna gén. 7PPC476 + Andrettacertifié #4684

Propriété : SafeNet → Gemalto (clôture le 8 janvier 2015) → Thales (2019). Après 2015, la marque « Luna » a un temps été retirée au profit de « SafeNet », puis réintroduite sous Thales. Le G5 désigne un form factor USB / Backup HSM, pas une génération de puce. Sources : CAVP K6 (product=3364) · CAVP K7 (product=8382) · Gemalto finalise le rachat de SafeNet · Thales - rebranding.

Et Luna 8 ?

// non confirmable publiquement - pas encore de Security Policy

Sourcé (datasheet) : 1 ou 2 crypto-modules par appliance, jusqu'à 15 instances HSM par module (30 par appliance), Luna 100/150/190, 4×10G, entropie double incluant un QRNG.

Marketing, non vérifiable à ce jour : « processeur cryptographique custom conçu par Thales », « orders of magnitude faster », « 20× plus efficace par transaction que Luna 7 », « side-channel protection ». Le type exact de la puce Luna 8 (ASIC ? SoC ? FPGA ? fondeur ?) n'est pas divulgué. Certifs encore « in process » : les Security Policy / Security Target qui révéleraient le vrai matériel n'existent pas encore publiquement. À surveiller sur csrc.nist.gov et commoncriteriaportal.org.

Confirmé vs non confirmable

✓ Confirmé publiquement (K7)

  • Multi-chip embedded, carte PCIe, frontière = enceinte métallique.
  • CPU PowerPC 476 + co-processeur custom Andretta 2.0 (micro-code OTP).
  • Époxy opaque + potting ; K7 = passif (visuel), K7+ = actif avec effacement des clés.
  • EFP : rails 5/3,3/1,8 V, −2/+80 °C ; détection retrait PCIe et signal externe à chaud et hors tension.
  • TRNG ESV #98 (bruit physique, SHA2-512, SP 800-90B, full entropy) + CTR_DRBG AES-256.
  • Lignée SafeNet → Gemalto (2015) → Thales (2019) ; K5 (ARM) → K6 (PPC440EPx) → K7 (PPC476).

✗ Non confirmable publiquement

  • Le fondeur exact des puces K7 et le détail interne d'Andretta (micro-code propriétaire, non lisible - le Security Target le dit explicitement).
  • Pour Luna 8 : type de puce, fondeur, architecture réelle, validité des « 20× » / « orders of magnitude » → marketing non encore adossé à une Security Policy/ST publique.
  • Toute mesure réelle de résistance side-channel (hors l'évaluation AVA_VAN.5 déjà obtenue pour le K7).
// lecture ÉOH

Démonter le marketing, ici, c'est être précis : une archi réelle nommée, deux niveaux de protection à ne pas confondre, une entropie validée NIST (fait, pas pub), et pour Luna 8 des superlatifs à garder au conditionnel. La vraie force pédagogique : savoir lire un rapport de certification pour distinguer le certifié du slogan.

✔ Correctif / recommandation ÉOH
  • Luna 8 : attends la Security Policy / le Security Target publics pour toute affirmation sur la puce, le QRNG ou la résistance side-channel ; d'ici là, garde tes rapports au conditionnel.
  • Pour un déploiement réglementé aujourd'hui, appuie-toi sur un module dont la Security Policy est publiée (K7, #4684).
  • Pour la résistance side-channel, la seule référence vérifiable reste l'évaluation AVA_VAN.5 du K7 - cite-la, ne la remplace pas par un slogan.

06 Un HSM = un assemblage multi-fournisseurs

« Processeur crypto Thales » ? Le K7 n'est pas une puce Thales unique : c'est un assemblage de composants d'origines différentes, dont un CPU d'origine IBM. Et les autres gammes de HSM Thales reposent sur des architectures différentes.

Ce qu'il y a dans le K7

// K7 = au moins 5 briques, plusieurs fournisseurs
① CPU · origine IBMPowerPC 476 (476FP)co-développé IBM + LSI · annoncé sept. 2009 · 45 nm SOI chez IBM · ~1,6 GHz · bus CoreConnect PLB6
② Co-processeur · ThalesAndrettacustom, micro-code OTP usine
③ Anti-tampercapteursEFP tension/température, blindage
④ EntropieTRNG matérielESV #98
⑤ Mémoirebatterie / BBRAMmémoire sauvegardée par batterie
? Non confirmableSE / TPM / FPGA ?aucun doc public ne le détaille

Sources : phys.org (IBM 476FP, 2009) · EE Times (IBM + LSI, 45 nm) · CAVP #8382 (« PowerPC 476 ») · CC Security Target + FIPS Security Policy (voir §05).

Nuance de lignée : 440 ≠ 476

K6 · Luna 6 / ProtectServer 2PPC440EPxgamme PPC-400 cédée par IBM à AMCC en 2004
≠
K7 · Luna 7PPC476resté côté IBM (pas dans le lot AMCC) · IBM/LSI

En 2004, AMCC a racheté à IBM la gamme PowerPC 400 + une licence Power : le cœur du K6 est donc un PPC 400 ex-IBM commercialisé par AMCC/Applied Micro. Le 476, plus récent, est resté chez IBM. SEC/EDGAR (accord AMCC–IBM, 2004).

Les autres gammes : autres architectures

GammeArchitectureStatut
Luna K7PowerPC 476 (IBM) + Andretta (Thales)confirmé
ProtectServer (ex-Eracom)K5 = ARM (PSE/PSI-E, little-endian) → K6 = PowerPC (PSE2/PSI-E2, big-endian)confirmé migration guide 5.2 · 5.0
payShield 10K (paiement)PS10-S/D/F, 25 → 10 000 cps, LMK, FPE - silicium non divulguénon confirmé datasheet
DPoD / Luna Cloud HSMservice cloud adossé à des HSM Luna - pas une puce distincteconfirmé
Luna 8« processeur custom Thales » - type de puce et fondeur non divulguésnon confirmé
// avertissement - nShield n'est PAS Thales

nShield = gamme Entrust (ex-nCipher). Thales a cédé nCipher à Entrust en 2019. Attribuer un résultat nShield à Thales - ou l'inverse - est une erreur fréquente. Même logique que §08 : ProtectServer ≠ Luna, et nShield ≠ Thales.

✓ Confirmé

  • CPU K7 = PowerPC 476 (IBM/LSI, 45 nm SOI) - presse + CAVP.
  • Co-processeur Andretta (Thales) - CC Security Target.
  • ProtectServer K5 = ARM, K6 = PowerPC - guides de migration Thales.
  • nShield = Entrust, pas Thales.

✗ Non confirmable publiquement

  • Le fondeur exact des puces assemblées par Thales.
  • La présence éventuelle d'un secure element / smartcard chip / TPM / FPGA distinct dans le K7, au-delà d'Andretta et du PPC476.
  • L'architecture silicium de payShield et de Luna 8.
✔ Correctif / recommandation ÉOH
  • Raisonne en chaîne d'approvisionnement, pas en marque : un HSM = plusieurs fournisseurs. Dans ton analyse de risque, liste les composants documentés (CPU, co-processeur, TRNG, capteurs) et marque explicitement ce qui n'est pas documenté.
  • Exige la Security Policy du module exact que tu achètes : c'est elle qui fixe la frontière cryptographique et les composants couverts - pas la plaquette commerciale.
  • Ne transpose jamais un résultat d'une gamme à l'autre (ProtectServer, payShield, nShield, Luna) : vérifie la gamme, la génération et le firmware avant de citer une faille ou une garantie.
  • Ce qui n'est pas divulgué (fondeur, SE/TPM/FPGA, silicium Luna 8) reste au conditionnel dans tes rapports.

Sources en accès libre - ce qu'on trouve vraiment

On a cherché des « open directories » (dorks intitle:"index of" "parent directory" et variantes) sur toute la gamme. Résultat honnête : aucune fuite sensible, surtout d'anciens guides officiels en accès libre.

TrouvailleContenuCrédibilité
public.dhe.ibm.com/cloud/bluemix/hsm/
open directory live (HTTP 200 vérifié le 16/10/2026)
3 guides officiels SafeNet Luna 7.2 : Appliance Administration Guide (2,0 Mo), Installation Guide (4,2 Mo), LunaSH Command Reference (2,1 Mo) - déposés par IBM pour son offre Bluemix/Cloud HSM. Version 7.2, ancienne. haute
miroir officiel IBM
sc-journal.com/gemalto-docs/ Manuel d'installation SafeNet Luna Network HSM 7.0 - agrégateur de manuels non officiel, à recouper. moyenne
miroir tiers
thalesdocs.com - index des firmwares Source canonique, firmwares Luna 7 jusqu'à 7.9.3. Firmwares = packages signés (.spkg appliance, .fuf PCIe) - téléchargeables mais inexploitables hors HSM. haute
officiel
Faux positifs « Luna » = instruments optiques de Luna Innovations ; « Thales » = composants semi-conducteurs (diacrodes/tubes/diodes) ; rôle Ansible OpenStack = code d'intégration, pas une datasheet. écartés
homonymie
// méthode - « Open ≠ True »

Notre discipline de cotation s'appuie sur la revue systématique OSINT + IA / GELSI (Ghioni, Taddeo, Floridi, AI & Society, 2024 - 571 publications) haute. L'OSINT y pèse 80–90 % de l'activité de renseignement, et les risques relevés sont la vie privée (même sur données publiques), l'effet mosaïque, les biais algorithmiques, l'admissibilité en justice, la provenance et l'intégrité des sources, et la sur-confiance dans l'automatisation. Deux enseignements pour nous : (1) « Open ≠ True » - toute trouvaille, dont celles de §08, est vérifiée et corroborée avant d'être présentée ; (2) on reste en reconnaissance passive, on respecte le RGPD et la vie privée, on documente la provenance. publication (ResearchGate)

Sources marketing / concurrentielles

Fortanix « HSM migration » marketing

Page commerciale d'un concurrent : HSM « nouvelle génération » FIPS 140-2 niveau 3, cloud / on-prem / hybride (HSMaaS), API PKCS#11, migration « sans rip-and-replace ». Superlatifs (« minutes, not months ») non vérifiables.

Valeur technique sur le K7 : nulle - point de comparaison concurrentiel uniquement. page Fortanix

Thales ebook « Foundations of Digital Trust » vendeur

HSM comme ancre de confiance (SSL, DNS, paiements mobiles, identité, 5G, IoT), clés stockées en matériel, appliance tamper-evident / FIPS-validated, intégration Crypto Command Center - des faits déjà corroborés ailleurs.

« highest level of security », « rigorous design » = slogans. Rien de neuf sur le silicium. ebook Thales

✔ Correctif / recommandation ÉOH
  • Prends la doc à la source : thalesdocs.com pour la version que tu exploites réellement - un guide 7.2 trouvé en open directory ne décrit pas un firmware 7.9.x.
  • Cote chaque source (officielle / miroir tiers / marketing / anonyme) et recoupe un miroir tiers avec la source officielle avant de t'en servir.
  • Écarte les homonymes (Luna Innovations, composants Thales) avant toute conclusion.
  • Côté éditeurs et hébergeurs : un open directory, même de docs publiques, mérite un inventaire régulier - on vérifie ce qui est exposé plutôt que de le découvrir par hasard.
  • Ne fonde aucune décision technique sur une plaquette (Fortanix, ebook Thales) : exige le certificat et la Security Policy correspondants.

07 Faiblesses réelles (et anti-sensationnalisme)

Une seule CVE propre à Luna, plus une classe d'attaque académique qui vise la norme PKCS#11, pas un bug matériel Thales.

CVE-2015-5464 - la seule CVE publique propre à Luna

« The Gemalto SafeNet Luna HSM allows remote authenticated users to bypass intended key-export restrictions by leveraging (1) crypto-user or (2) crypto-officer access to an HSM partition. »

  • Sévérité Low (EPSS ~0,05 %), CWE-284 (Improper Access Control). Publiée le 22/07/2015.
  • Il faut déjà être authentifié comme CO ou CU sur la partition. Ce n'est pas une extraction de clé à distance non authentifiée.
  • Produits affectés selon l'avis Thales : Luna SA 5.4.1 & 5.4.2 et Luna SP 3 ; la plupart des autres produits Luna = No impact.
  • Racine du problème : le mécanisme PKCS#11 C_Derive avec CKM_EXTRACT_KEY_FROM_KEY. Toute implémentation PKCS#11 conforme supportant ce mécanisme est concernée - ce n'est pas propre à Thales.
  • Mitigation : CKA_DERIVE=CK_FALSE, CKA_MODIFIABLE=CK_FALSE, restreindre CKA_ALLOWED_MECHANISMS, limiter les rôles.

NVD · CVE.org · déclaration Utimaco (racine PKCS#11).

✔ Correctif / recommandation ÉOH
  • Restreins les mécanismes de dérivation que tu n'utilises pas : CKA_DERIVE=CK_FALSE, CKA_ALLOWED_MECHANISMS minimal (sans CKM_EXTRACT_KEY_FROM_KEY si inutile).
  • Verrouille les attributs : CKA_MODIFIABLE=CK_FALSE pour qu'un utilisateur authentifié ne puisse pas les rouvrir.
  • Limite les comptes CO/CU et surveille leur usage - la CVE exige un utilisateur authentifié : le contrôle des comptes est la première barrière.
  • Applique l'avis Thales sur les produits concernés (Luna SA 5.4.1/5.4.2, Luna SP 3).

Recherche académique PKCS#11 (pas des CVE Thales)

Tookan - CCS 2010

« Attacking and Fixing PKCS#11 Security Tokens », Bortolozzo, Centenaro, Focardi, Steel. Rétro-ingénierie de l'API PKCS#11 de tokens réels, modélisation formelle, attaques d'extraction de clés : 9 tokens sur 17 testés étaient vulnérables.

DOI · PDF · projet Tookan

Clulow - CHES 2003

« On the Security of PKCS #11 » : attaques « Trojan public-key », « Trojan wrapped-key », conflits d'attributs (wrap+decrypt sur une même clé). Le correctif de recherche CryptokiX introduit attributs « sticky », vérifs de conflits, templates sécurisés.

DOI · CryptokiX

Nature de ces travaux : ils visent la norme PKCS#11 et ses mauvaises configurations, pas un bug matériel Luna spécifique. C'est l'angle pédagogique le plus solide (voir §10). Pour les pistes non officielles, voir §08.

// encart anti-sensationnalisme

Peu de CVE ≠ invulnérable. Pour un matériel propriétaire, fermé, à firmware signé, l'absence de CVE reflète surtout la difficulté d'audit externe autant qu'une vraie robustesse. À dire tel quel, sans surinterpréter.

Et on n'invente rien. Un avis Luna de janvier 2021 circule chez un agrégateur (vigilance.fr) mais aucun ID CVE ni détail technique public n'a pu être confirmé → non confirmé. Aucune CVE trouvée pour le client Luna / KSP / CKLog → non trouvé. Affirmer qu'il existe une faille non publiée serait de l'invention.

✔ Correctif / recommandation ÉOH
  • Peu de CVE publiques = audite toi-même ce que tu contrôles : templates de clés, rôles, mécanismes autorisés, versions - c'est là que se trouvent les risques mesurables.
  • Intègre les leçons Tookan/Clulow : une clé = un usage (jamais CKA_WRAP et CKA_DECRYPT sur la même clé), templates imposés, attributs « sticky » (approche CryptokiX).
  • Suis les avis éditeur et documente ce qui reste « non confirmé » au lieu de le combler.

08 Pistes underground / non officielles - avec note de crédibilité

Ce qui circule hors doc officielle : talks de conf, rapports académiques, blogs de chercheurs, fils de commentaires. Chaque trouvaille porte une note haute moyenne faible selon qu'elle est sourcée, nommée, reproductible et corroborée - ou simple rumeur.

// ne pas amalgamer ProtectServer et Luna

Rien ici n'est à présenter comme un fait acquis sur le K7 actuel. La plupart de ces travaux visent d'anciennes générations (Chrysalis / Luna CA3) ou une autre gamme Thales (ProtectServer, lignée Eracom). Le hack Ledger de 2019 porte sur le ProtectServer PSI-E2/PSE2, pas sur Luna - Gemalto l'a confirmé publiquement. Dire « le Luna a été dumpé » est faux.

TravailCible réelleCrédibilitéVise le K7 actuel ?
Unwrapping the Chrysalis
Cambridge, 2004
Luna CA3 (Chrysalis)hauteNon (ancêtre)
Ledger « This is a Robbery! »
Black Hat USA 2019
ProtectServer PSI-E2/PSE2hauteNon (autre gamme)
LunaSP unsigned code
Black Hat Europe 2021
LunaSP (couche Java)haute moyenne
fait / détails
Non (couche appli)
Random Oracle / CVE-2015-5464
2015
SafeNet Luna 2015 (G5…)hauteNon (gén. antérieure, auth requise)
Forum « Luna 7 = puce différente »
commentaire, 2019
-faibleIndirectement cohérent
Teardown K7 / Andretta dédiéK7 / PPC476non trouvé-

Unwrapping the Chrysalis haute

Rétro-ingénierie du token Chrysalis-ITS Luna CA³ (PCMCIA) : lecture du code ARM/flash, interception du bus PCMCIA, abus du protocole de cloning pour extraire des clés privées PKCS#11 en clair (fonctions ajoutées acceptant n'importe quel certificat, même auto-signé). Mike Bond, Daniel Cvrček, Steven J. Murdoch - rapport UCAM-CL-TR-592, juin 2004.

Portée : Luna CA3 de ~2003-2004, pas le K7 ; l'attaque exigeait aussi l'autorisation d'un Security Officer. Valeur pédagogique/historique.

rapport (PDF) · slides M. Bond · récit du co-auteur

Ledger, BH USA 2019 haute

14 vulnérabilités (corruptions mémoire) trouvées par fuzzing de l'implémentation PKCS#11, dont une type-confusion exploitable sans authentification → exécution de code, extraction des clés, et firmware non signé persistant via un bug de vérification de signature. Jean-Baptiste Bédrune & Gabriel Campana. Divulgation responsable, correctifs confirmés.

⚠ Cible = ProtectServer, PAS Luna. Leçon transférable : l'implémentation PKCS#11 d'un vendeur est la vraie surface d'attaque, et un module FIPS 140-2 L3 n'y est pas immunisé.

Ledger · Schneier · CERT-EU

LunaSP, BH EU 2021 haute moyenne

Contournement de la vérification de signature JAR de LunaSP via réécriture/patch de ZIP → exécution de code non signé dans la couche applicative protégée. Przemysław Duda (Intel).

Haute sur l'existence et l'auteur (talk officiel), moyenne sur les détails (pas de write-up long public). Vise la plateforme Java, pas le module crypto K7.

InfoconDB · vidéo

Random Oracle - CVE-2015-5464 haute

Write-up des découvreurs : extraction via les mécanismes PKCS#11 extract-key-from-key et XOR-base-and-data, récupération octet par octet par brute-force HMAC (« quelques secondes sur Luna G5 »).

Gamme SafeNet Luna de 2015, utilisateur authentifié requis ; mitigation = attributs PKCS#11 (§07). Transférable conceptuellement, pas une faille du K7 actuel.

blog Random Oracle (part I)

Forum « Luna 7 = puce différente » faible

Commentaire anonyme (blog Schneier, 2019) : Luna 6 et PS2 auraient la même puce avec des FW différents, Luna 7 une puce et un FW totalement différents, plus orientés ECC.

Non sourcé - mais cohérent avec les faits officiels (K7 = PPC476 vs K6 = PPC440EPx, voir §05). À citer comme « cohérent avec les faits », jamais comme preuve.

fil de commentaires

Teardown K7 / Andretta non trouvé

Aucun talk DEFCON, CCC ou Hardwear.io ni teardown public spécifique au K7 (Andretta / PPC476) trouvé. L'absence de résultat n'est pas une preuve d'inexistence.

« cklog », parfois cité côté offensif, est en fait le Cryptoki Logging Facility officiel de Thales (journalisation des appels PKCS#11 pour debug) - pas un exploit ; masque les données sensibles par défaut depuis UC 10.9.1. haute doc officielle

// fil rouge honnête

Il existe un vrai corpus de recherche offensive sérieuse sur les HSM SafeNet/Thales, mais aucune attaque publique vérifiée ne porte directement sur le module K7 / Luna 7 certifié #4684. La surface faible récurrente et transférable : l'implémentation PKCS#11 et la chaîne de vérification de signature (firmware / JAR) - bien plus que la puce crypto elle-même. C'est exactement ce que le tuto ci-dessous travaille, sans prétendre que le K7 d'aujourd'hui est cassé.

✔ Correctif / recommandation ÉOH - piste par piste
PisteLeçonCorrectif recommandé
Chrysalis (CA3)Abus du protocole de cloningRestreins le cloning / backup aux HSM de ta propre infrastructure, sous autorisation SO + quorum, et journalise chaque opération de clonage.
Ledger (ProtectServer)Bugs mémoire dans l'implémentation PKCS#11 + vérif de signature firmwareApplique les correctifs éditeur sans délai, limite l'accès réseau à l'interface PKCS#11 (clients enregistrés, NTLS mutuel), n'installe que du firmware signé et suis sa version.
LunaSP (couche Java)Contournement de la vérif de signature JARContrôle strict de ce qui est déployé dans la couche applicative (liste blanche, origine, intégrité) et mises à jour éditeur appliquées.
CVE-2015-5464Dérivation / extraction via PKCS#11Attributs durcis (CKA_DERIVE=FALSE, CKA_MODIFIABLE=FALSE, mécanismes restreints), comptes CO/CU limités - voir §07 et le tuto §10.
Rumeur / forumInfo non sourcéeNe publie jamais sans corroboration officielle (« Open ≠ True », §06) ; cote-la « faible ».
cklogOutil officiel de journalisation PKCS#11Client ≥ UC 10.9.1 (masquage des données sensibles par défaut), activation limitée au temps du debug, journaux protégés puis purgés.

09 Ce qu'on peut analyser sans matériel Thales

Soyons clairs sur ce qui est à notre portée en labo, et ce qui exige l'appliance physique.

✓ Analysable sans matériel

  • Toute la doc publique (thalesdocs.com), rapports de certification (CMVP, NSCIB/TrustCB), datasheets.
  • Comportement du client PKCS#11 sur une bibliothèque générique (SoftHSM, p11-kit) - une appliance de test n'est pas obligatoire.
  • Reproduire la classe d'attaque CVE-2015-5464 sur un HSM logiciel → démonstration pédagogique légale et sans matériel Thales.
  • Observer le protocole NTLS (TLS, port 1792) en labo si on dispose d'un client + d'une appliance de test.
  • Littérature académique reproductible (Tookan / CryptokiX).

⚠ Exige l'appliance physique

  • Analyse side-channel (consommation, EM, timing) et tampering physique.
  • Extraction/analyse de firmware (signé, chiffré - impossible de flasher un firmware non signé).
  • Validation des perfs réelles, du vrai QRNG, du vrai comportement NTLS/PED.
  • Résistance side-channel effective : seule l'évaluation AVA_VAN.5 existe, pas nos propres mesures.
// verdict

Sans appliance Thales, l'ÉOH fait un travail d'analyse documentaire + reproduction en labo sur HSM logiciel, pas d'attaque matérielle. C'est exactement ce que le tuto ci-dessous assume - honnêtement.

✔ Correctif / recommandation ÉOH
  • Pour ce qui exige l'appliance, ne conclus pas sans mesure : appuie-toi sur les rapports d'évaluation publics (AVA_VAN.5, Security Policy) et cite-les comme tels.
  • Un besoin réel d'analyse side-channel ou firmware passe par un cadre contractuel avec le fournisseur (accord écrit, appliance de test, périmètre défini) - jamais par du matériel en production ou appartenant à un tiers.
  • Côté exploitant : si tu ne peux pas mesurer, réduis ce qui en dépend - accès physique contrôlé, variante K7+ si la menace est physique, supervision syslog/SNMP.

10 Lab pratique ÉOH - COMPRENDS → MONTE → TESTE → CORRIGE

Devise : « Comprendre pour mieux défendre ». On ne te donne pas un catalogue d'exploits : on te donne une expérience en labo isolé, sur SoftHSM2 (HSM logiciel open source), pour voir de tes yeux où le risque se déplace - puis le correctif. Pas de matériel Thales, pas de cible réelle.

// cadre légal & éthique - à lire avant toute commande
  • Tout se fait sur ton propre poste, en labo isolé (VM, conteneur, machine dédiée). Aucun HSM, aucune partition, aucun service tiers.
  • SoftHSM2 = simulateur logiciel open source : 100 % légal, aucun matériel Thales, aucune licence Thales. Ce qu'on observe ici illustre une classe de mauvaise configuration PKCS#11, pas une faille Luna / K7.
  • Ne teste jamais ces commandes sur un HSM, une appliance ou un service que tu ne possèdes pas, ou pour lequel tu n'as pas d'autorisation écrite explicite.
  • Finalité défensive : comprendre pour durcir. Pas de démo à sensation, pas de catalogue d'exploits - une école de défense. Si une vraie trouvaille émerge un jour : divulgation responsable (esprit YesWeHack).

1 · Comprends - ce qu'un HSM garantit, et ce qu'il ne garantit pas

✓ Ce que le HSM garantit

  • Clés marquées non-exportables restent dans le matériel.
  • Opérations crypto exécutées en matériel (pas sur le serveur).
  • Rôles séparés (SO / CO / CU), anti-tamper (selon variante).

✗ Ce qu'il ne garantit PAS

  • Une appli qui signe n'importe quoi.
  • Un rôle CO compromis.
  • Des attributs PKCS#11 laxistes (CKA_EXTRACTABLE, CKA_DERIVE, wrap+decrypt).

Le lab montre concrètement ce troisième point : deux clés AES, mêmes commandes PKCS#11, deux attributs différents → l'une sort en clair, l'autre refuse. La robustesse ne vient pas (seulement) du matériel - elle vient de la configuration. C'est exactement la leçon de CVE-2015-5464 et de Clulow/Tookan (§07–§08), transférable à toute implémentation PKCS#11.

2 · Monte ton lab SoftHSM2 (Debian / Kali)

Copie le script ci-dessous, sauvegarde-le sous eoh-lab-setup.sh, rends-le exécutable, lance-le. Il installe SoftHSM2 + OpenSC, crée un token isolé dans ~/eoh-lab/, et exporte les variables d'environnement.

bash - eoh-lab-setup.sh (copier-coller)
#!/usr/bin/env bash
# Echoes of Hackers - lab SoftHSM2 isolé
# Usage : bash eoh-lab-setup.sh
# Cadre : labo local uniquement. SoftHSM = HSM logiciel. Aucun matériel Thales.
set -euo pipefail

LAB_DIR="${HOME}/eoh-lab"
TOKEN_DIR="${LAB_DIR}/tokens"
CONF="${LAB_DIR}/softhsm2.conf"
MODULE="/usr/lib/softhsm/libsofthsm2.so"
LABEL="eoh-lab"
SO_PIN="3737"
USER_PIN="1234"

echo "[ÉOH] 1/4 - installation SoftHSM2 + OpenSC (nécessite sudo)…"
if ! command -v softhsm2-util >/dev/null || ! command -v pkcs11-tool >/dev/null; then
  sudo apt-get update -qq
  sudo apt-get install -y softhsm2 opensc
fi

# chemin du module selon la distro
for cand in /usr/lib/softhsm/libsofthsm2.so /usr/lib/*/softhsm/libsofthsm2.so; do
  [ -f "$cand" ] && MODULE="$cand" && break
done
[ -f "$MODULE" ] || { echo "Module SoftHSM introuvable"; exit 1; }

echo "[ÉOH] 2/4 - lab isolé dans ${LAB_DIR}"
mkdir -p "${TOKEN_DIR}"
cat > "${CONF}" <<EOF
directories.tokendir = ${TOKEN_DIR}
objectstore.backend = file
log.level = ERROR
EOF
export SOFTHSM2_CONF="${CONF}"

echo "[ÉOH] 3/4 - init token « ${LABEL} » (SO_PIN=${SO_PIN}, PIN=${USER_PIN})"
# --free choisit un slot libre ; le token est ensuite réassigné
softhsm2-util --init-token --free --label "${LABEL}" \
  --so-pin "${SO_PIN}" --pin "${USER_PIN}"

echo "[ÉOH] 4/4 - variables d'environnement"
cat > "${LAB_DIR}/env.sh" <<EOF
export SOFTHSM2_CONF="${CONF}"
export EOH_P11_MODULE="${MODULE}"
export EOH_PIN="${USER_PIN}"
alias eoh-p11='pkcs11-tool --module ${MODULE}'
EOF

cat <<MSG

[ÉOH] Lab prêt.
  source ${LAB_DIR}/env.sh
  eoh-p11 --list-slots

MSG
bash - eoh-lab-reset.sh (nettoyage / reset)
#!/usr/bin/env bash
# Efface le token SoftHSM du lab ÉOH et le réinitialise à zéro.
set -euo pipefail
LAB_DIR="${HOME}/eoh-lab"
CONF="${LAB_DIR}/softhsm2.conf"
export SOFTHSM2_CONF="${CONF}"

echo "[ÉOH] Suppression des tokens dans ${LAB_DIR}/tokens …"
rm -rf "${LAB_DIR}/tokens"
mkdir -p "${LAB_DIR}/tokens"

softhsm2-util --init-token --free --label eoh-lab \
  --so-pin 3737 --pin 1234
echo "[ÉOH] Lab remis à zéro. Relance : source ${LAB_DIR}/env.sh"
// première commande après le setup
source ~/eoh-lab/env.sh
eoh-p11 --list-slots          # pas besoin de --login pour lister

Tu dois voir un token nommé eoh-lab. Si oui, le lab tourne - on passe aux tests.

3 · Teste toi-même - mauvaise config, puis durcissement

Deux temps nettement séparés. Les sorties marquées sortie réelle SoftHSM ont été capturées sur SoftHSM2 dans ce lab. Les commandes non exécutées ici sont marquées résultat attendu - on ne fabrique rien.

A · MAUVAISE CONFIG - à ne PAS mettre en prod

On génère volontairement une clé AES avec --extractable (soit CKA_EXTRACTABLE=TRUE, CKA_SENSITIVE=FALSE). C'est la faute classique : un utilisateur déjà authentifié (comme dans CVE-2015-5464) peut alors lire la clé en clair.

bash - générer une clé faible
source ~/eoh-lab/env.sh

eoh-p11 --login --pin 1234 --keygen --key-type aes:32 \
  --label cle-faible --extractable
sortie réelle SoftHSM (extrait)
Key generated:
Secret Key Object; AES length 32
  VALUE:      86f6ef7a069274b2a376db5c6ea3dd6f59e8811a073e9cc33994acc337340616
  label:      cle-faible
  Usage:      encrypt, decrypt, sign, verify, wrap, unwrap
  Access:     extractable, local

Ce qu'on observe : la clé est affichée en clair dès la génération. Les usages par défaut cumulent déjà wrap et decrypt - le conflit d'attributs décrit par Clulow (CHES 2003).

bash - relire la valeur brute (CKA_VALUE)
eoh-p11 --login --pin 1234 \
  --read-object --type secrkey --label cle-faible | od -An -tx1
sortie réelle SoftHSM
 86 f6 ef 7a 06 92 74 b2 a3 76 db 5c 6e a3 dd 6f
 59 e8 81 1a 07 3e 9c c3 39 94 ac c3 37 34 06 16

Ce qu'on observe : 32 octets - la clé AES entière - sortent du « HSM ». SoftHSM n'est qu'un fichier sur disque ; sur un vrai HSM, la même logique d'attributs ouvre une porte de sortie à tout utilisateur authentifié.

bash - lister et comparer les Access
eoh-p11 --login --pin 1234 --list-objects --type secrkey

Ce qu'on observe (réel) : Access: extractable, local pour cle-faible.

// nuance SoftHSM - on ne prétend pas ce qu'on n'a pas exécuté

C_Derive / CKM_EXTRACT_KEY_FROM_KEY (racine de CVE-2015-5464) : SoftHSM2 n'implémente pas ce mécanisme. On ne montre donc pas de sortie SoftHSM pour une dérivation réussie - ce serait inventer. La leçon reste valable : CKA_DERIVE=TRUE + mécanismes de dérivation = porte ouverte sur toute implémentation qui les expose (dont d'anciens Luna, cf. §07). Ici on démontre le cousin direct et observable : CKA_EXTRACTABLE qui laisse sortir CKA_VALUE.

Conflit wrap+decrypt (Clulow) : SoftHSM accepte de créer une clé avec WRAP et DECRYPT à la fois (observé). Son mécanisme AES_KEY_WRAP refuse ensuite de « décrypter » le blob wrappé (MechanismInvalid / EncryptedDataLenRange - observé). SoftHSM est donc mieux bâti que les tokens vulnérables de Tookan sur ce point précis ; la mauvaise pratique d'attributs, elle, reste visible et doit être corrigée partout.

B · DURCISSEMENT - la bonne config

Même API, autres attributs : --sensitive --private → CKA_SENSITIVE=TRUE, CKA_EXTRACTABLE=FALSE.

bash - générer une clé durcie
eoh-p11 --login --pin 1234 --keygen --key-type aes:32 \
  --label cle-durcie --sensitive --private
sortie réelle SoftHSM (à la génération)
warning: C_GetAttributeValue(VALUE) failed: rv = CKR_ATTRIBUTE_SENSITIVE (0x11)

Key generated:
Secret Key Object; AES length 32
  label:      cle-durcie
  Usage:      encrypt, decrypt, sign, verify, wrap, unwrap
  Access:     sensitive, always sensitive, never extractable, local

Ce qu'on observe : SoftHSM refuse déjà d'afficher VALUE à la génération. L'accès est never extractable.

bash - même tentative de lecture qu'en A
eoh-p11 --login --pin 1234 \
  --read-object --type secrkey --label cle-durcie
sortie réelle SoftHSM
warning: C_GetAttributeValue(VALUE) failed: rv = CKR_ATTRIBUTE_SENSITIVE (0x11)
error: get CKA_VALUE failed
Aborting.                                 # code retour = 1

Ce qu'on observe : la même commande qui récupérait 32 octets en clair échoue maintenant. Deux attributs, deux mondes.

Attributs cibles (template applicatif) - à fixer dans ton code

résultat attendu - SoftHSM via pkcs11-tool ne permet pas de fixer tous ces attributs en une ligne CLI ; ils se fixent dans le template C_GenerateKey de ton application (Java JCE, Python python-pkcs11, C…). Cible :

CKA_SENSITIVE           = CK_TRUE     # la clé ne sort jamais en clair
CKA_EXTRACTABLE         = CK_FALSE    # interdit l'extraction / wrap sortant
CKA_DERIVE              = CK_FALSE    # coupe C_Derive (racine CVE-2015-5464)
CKA_MODIFIABLE          = CK_FALSE    # empêche de rouvrir les attributs après coup
CKA_ALLOWED_MECHANISMS  = {liste minimale}  # réduit la surface
# + une clé de WRAP ≠ une clé de DECRYPT (usages exclusifs - leçon Clulow)
# + sur un vrai Luna : activer le MODE FIPS = rester dans le périmètre certifié (§04)
// ce que ça prouve

La même API PKCS#11, deux configs : l'une laisse fuir la clé, l'autre renvoie CKR_ATTRIBUTE_SENSITIVE. Un HSM certifié avec de mauvais attributs n'est pas plus sûr qu'un SoftHSM bien configuré sur ce point précis. La certification couvre un périmètre - la config décide du reste.

4 · Corrige - checklist de durcissement & divulgation responsable

✔ Correctif / recommandation ÉOH - checklist à emporter
  • Attributs de clés : CKA_SENSITIVE=TRUE, CKA_EXTRACTABLE=FALSE, CKA_DERIVE=FALSE, CKA_MODIFIABLE=FALSE.
  • Réduire CKA_ALLOWED_MECHANISMS au strict nécessaire ; une clé = un usage (jamais wrap + decrypt sur la même clé).
  • Mode FIPS activé sur un vrai Luna → rester dans le périmètre certifié (§04).
  • Séparation des rôles SO / CO / CU ; authentification PED et quorum M-of-N pour les opérations sensibles.
  • Rotation des clés, backup/restore maîtrisé (attention aux clés HSS non clonables, §03).
  • Supervision : syslog / SNMP, suivi des accès partition ; cklog seulement le temps du debug, client ≥ UC 10.9.1 (§08).
  • Transport : NTLS en TLS mutuel (port 1792), activer STC si disponible.
  • Chaîne d'approvisionnement : firmware signé uniquement, version alignée sur le certificat (§04–§06).
  • Rejoue ce lab après chaque changement de template applicatif - la régression d'attributs se voit en une commande.
// divulgation responsable - l'esprit ÉOH

Si une vraie trouvaille émerge (sur un HSM que tu es autorisé à tester) : documente, préviens l'éditeur en privé, laisse un délai de correction raisonnable, publie après. Pas de démo à sensation, pas de CVE inventée. « Découvrir les failles et proposer des correctifs » - dans cet ordre, et avec le correctif toujours au bout. C'est l'esprit YesWeHack, c'est la ligne ÉOH.

// pour aller plus loin - si on avait le matériel Thales

Ce lab SoftHSM couvre la classe PKCS#11 (attributs, extraction, conflits d'usage) - surface faible historique (§08). Il ne couvre pas : side-channel (conso, EM, timing), tampering physique, extraction/analyse de firmware signé, vraies latences, vrai QRNG, vrai comportement NTLS/PED. Ces analyses exigeraient l'appliance et un accord écrit du fournisseur. C'est une perspective, pas une promesse - et surtout pas un prétexte pour toucher à un matériel qui ne t'appartient pas. En attendant : appuie-toi sur les rapports publics (AVA_VAN.5, Security Policy #4684) et cite-les comme tels.

11 Sources vérifiables

Tout ce dossier s'appuie uniquement sur ces références publiques. Vérifie par toi-même - c'est le principe.

Mentions « non confirmé / non trouvé » assumées : avis Luna de janv. 2021 (vigilance.fr) sans ID CVE public ; aucune CVE publique pour le client Luna / KSP / CKLog à ce jour.