FreeHSM C

An open-source PKCS#11 v3.2 cryptographic module under Simorgh Labs

View the Project on GitHub afchine1337/freehsm

FreeHSM C — Cible d’évaluation Common Criteria EAL4+

English version: EAL4_PLUS.md. In case of discrepancy, the English version prevails.

Nom de la TOE : FreeHSM Cryptographic Module Version : 1.0.0-FIPS EAL cible : EAL4 augmenté de ALC_FLR.2 (remédiation de défauts) et AVA_VAN.5 (analyse avancée de vulnérabilités) Profil de protection revendiqué : eIDAS QSCD (EN 419211-2) ou cPP for Cryptographic Modules (NIAP, dès publication)


1. Description de la TOE (ASE_INT.1)

1.1 Type de TOE

La TOE est un module cryptographique logiciel (« Soft HSM ») fournissant des services PKCS#11 v3.2 aux applications. Elle est livrée sous la forme d’un seul objet partagé libfreehsm.so plus le fichier de configuration freehsm.conf. Elle dépend du provider FIPS d’OpenSSL 3.x, traité comme module évalué séparément dans le même environnement opérationnel.

1.2 Fonctions de sécurité majeures

1.3 Matériel / firmware / logiciel hors TOE

2. Revendications de conformité (ASE_CCL.1)

3. Objectifs de sécurité (ASE_OBJ.2)

3.1 Objectifs de sécurité pour la TOE

Identifiant Énoncé
O.CRYPTO La TOE doit fournir des services cryptographiques utilisant uniquement les primitives FIPS-validées chargées depuis le provider FIPS OpenSSL.
O.AUTH La TOE doit authentifier les opérateurs (CO, USER) avant tout accès au matériel de clé privée.
O.AUDIT La TOE doit enregistrer les événements pertinents pour la sécurité dans un log append-only résistant à l’insertion, à la suppression et à la modification par un attaquant sans la clé MAC d’audit.
O.SSP La TOE doit protéger les SSP (DEKs, clés privées, PINs) de la divulgation non autorisée durant l’opération et à la terminaison (zéroisation).
O.SELFTEST La TOE doit exécuter des auto-tests pré-opérationnels et conditionnels ; en cas d’échec, la TOE doit entrer dans un état ERROR irrécouvrable.
O.ROLE_SEP La TOE doit imposer la séparation entre rôles CO et USER : seul le CO peut ré-initialiser le token ou déverrouiller un PIN USER ; seul le propriétaire du rôle peut changer son propre PIN.

3.2 Objectifs de sécurité pour l’environnement opérationnel

Identifiant Énoncé
OE.OS L’OS opérationnel doit fournir l’isolation de processus (pas de ptrace depuis un autre UID) et la capacité mlock.
OE.STORAGE Le système de fichiers stockant les tokens doit fournir un remplacement atomique (rename + fsync).
OE.OPENSSL Le provider FIPS OpenSSL doit être installé, validé et en mode approuvé.
OE.OP Les opérateurs doivent protéger leurs credentials d’authentification (PIN) et ne pas se connecter via un canal non fiable.
OE.PHYS L’hôte doit être physiquement protégé contre les accès non autorisés (salle serveur ou équivalent).

4. Exigences de sécurité (ASE_REQ.2)

4.1 Classe FAU — Audit

4.2 Classe FCS — Support cryptographique

4.3 Classe FDP — Protection des données utilisateur

4.4 Classe FIA — Identification et authentification

4.5 Classe FMT — Gestion de la sécurité

4.6 Classe FPT — Protection de la TSF

4.7 Classe FTA — Accès à la TOE

5. Conception modulaire (ADV_TDS.3)

Sous-système Fichier(s) TSFI exposé
State machine src/fhsm_state.c (interne uniquement)
Secure memory src/fhsm_memory.c (interne uniquement)
Primitives crypto src/fhsm_crypto.c + kat/ (interne uniquement)
Token store src/fhsm_token.c (interne uniquement)
Session table src/fhsm_session.c (interne uniquement)
Audit log src/fhsm_audit.c (interne uniquement)
Façade PKCS#11 src/fhsm_pkcs11.c C_* (PKCS#11 v3.2 complet)

La TSFI est exclusivement l’ensemble des symboles C_* exportés par libfreehsm.so. Tous les autres symboles sont cachés par -fvisibility=hidden et le script de version du linker.

6. Cycle de vie (ALC_*)

6.1 ALC_CMC.4 — Support de production, procédures d’acceptation, automatisation

6.2 ALC_FLR.2 — Procédures de signalement de défauts

6.3 ALC_TAT.1 — Outils de développement bien définis

7. Analyse de vulnérabilités (AVA_VAN.5)

La TOE est conçue pour résister à des attaquants avec potentiel d’attaque au-dessus du Haut (Beyond-High), la cible AVA_VAN.5. Preuves :

8. Livraison (ALC_DEL.1)

La TOE est livrée sous forme d’archive source .tar.xz signée (make dist) et un package binaire RPM/DEB compilé reproductiblement. Les deux bundles sont signés par la même clé GPG. Les clients vérifient la signature et l’empreinte SHA-256 publiée sur le site du projet via HTTPS.

9. Liste des TSF — ajouts v1.1.0

Le rafraîchissement pré-soumission CST ajoute 4 TSF transverses qui complètent la couverture fonctionnelle EAL4+ :

Identifiant TSF Famille Description Source
FCS_RBG_EXT.1 FCS (Support cryptographique) DRBG durci avec seed multi-source (getrandom + RDRAND + /dev/urandom + jitter TSC), conditionneur SHA-384 selon SP 800-90C, health tests NIST SP 800-90B (RCT, APT, CRNGT), reseed auto 1 MiB ou 1 h. src/fhsm_drbg.c, include/fhsm_drbg.h, RNG.md
FCS_CKM_EXT.4 FCS Pair-wise consistency check post C_GenerateKeyPair (RSA, EC, ML-KEM, ML-DSA, SLH-DSA). Échec → ERROR latché + refus de persister. Conforme FIPS 140-3 §7.10.2.b. src/fhsm_pairwise.c, include/fhsm_pairwise.h
FPT_TST_EXT.1 FPT (Protection des TSF) Sealing TPM 2.0 de la DEK par token (opt-in via FHSM_TPM_SEALING=1). DEK liée aux PCR 0-7 de la chaîne de boot. Mismatch à l’unseal traité comme PIN incorrect (résistance aux oracles). src/fhsm_token_tpm.c, src/fhsm_tpm.c
FMT_SMR_EXT.1 FMT (Gestion sécurité) Bascule mode runtime entre permissive (défaut) et strict via env FHSM_MODE ou directive mode = ; les anciennes orthographes legacy et fips restent acceptées. Permet à un binaire unique de satisfaire l’évaluateur FIPS 140-3 ET les opérateurs qui ont besoin d’interopérer avec des systèmes anciens. src/fhsm_mode.c, src/dispatch/fhsm_dispatch_legacy.c

9.1 Couverture ADV_FSP mise à jour

Interface externe TSF couvertes
C_GenerateKeyPair FCS_CKM_EXT.4 (pair-wise check) + FCS_CKM.1 existante
Tout consommateur de fhsm_rng_bytes FCS_RBG_EXT.1 (RCT + APT + CRNGT)
fhsm_token_init / fhsm_token_login FPT_TST_EXT.1 (sealing TPM optionnel)
Tout appel C_* de mécanisme FMT_SMR_EXT.1 (dispatch mode-dépendant)