Sécuriser le logiciel

IsoFind est conçu pour des contextes où les données ont une valeur stratégique, forensique ou juridique. Cette page détaille l'ensemble des mesures de sécurité implémentées dans le logiciel, ainsi que les options configurables par l'utilisateur selon son niveau d'exigence.

Les mesures sont distinguées selon leur nature : Dev indique une mesure implémentée au niveau du code et active par défaut, Utilisateur indique une mesure que l'utilisateur configure, et Les deux indique une mesure dont une partie est structurelle et une partie est configurable.

Système de licence hors-ligne

Dev Le système de licence d'IsoFind est entièrement hors-ligne. Aucune connexion à un serveur de validation n'est effectuée ni au démarrage ni en cours d'utilisation. La vérification est cryptographique et locale.

Chaque fichier de licence .license est un JSON signé avec une clé privée ECDSA P-256 conservée exclusivement sur l'infrastructure d'IsoFind SAS. Il contient un payload horodaté avec le type de licence, les fonctionnalités autorisées, la date d'expiration et l'empreinte matérielle de la machine cible. La clé publique de vérification est compilée directement dans le binaire IsoFind.

Empreinte machine

La licence est liée à une machine spécifique via une empreinte matérielle combinant plusieurs identifiants hardware. Cette combinaison est délibérément tolérante aux remplacements partiels de composants : le remplacement d'un composant seul ne rend pas la licence invalide. L'empreinte est générée par IsoFind au moment de la demande de licence et transmise à IsoFind SAS, qui signe la licence pour cette machine précise.

Format du fichier de licence

ChampContenu
vVersion du format (actuellement 2).
payloadJSON encodé en base64url contenant : émetteur, empreinte machine, horodatages d'émission et d'expiration, type de licence, fonctionnalités, numéro de série.
sigSignature ECDSA P-256 en base64url du payload. Toute modification du payload invalide la signature.

Protection de la base de données

Les deux IsoFind propose trois niveaux de protection de la base de données analytiques, activables depuis le menu Protection.

Menu Protection Protection de la base de données Activer la protection

Basique

Protection par mot de passe maître. Le démarrage de session IsoFind requiert la saisie du mot de passe avant d'accéder aux données. Sans le mot de passe, la base de données est inaccessible depuis l'interface.

Standard

Chiffrement AES-256-GCM des sauvegardes et des exports, plus protection par mot de passe. La clé de chiffrement est dérivée du mot de passe maître via PBKDF2-HMAC-SHA256 (600 000 itérations, sel aléatoire de 32 octets). Chaque export ou sauvegarde produit un fichier chiffré qui ne peut être déchiffré qu'avec le mot de passe maître.

Avancé

Chiffrement complet, protection par mot de passe, et génération automatique de sauvegardes chiffrées à chaque modification significative. Ce niveau active également la journalisation complète dans l'audit trail (voir section suivante).

Le mot de passe maître ne peut pas être récupéré par IsoFind SAS. En cas de perte, les données chiffrées sont définitivement inaccessibles. Conserver le mot de passe dans un gestionnaire de mots de passe sécurisé distinct du poste IsoFind.

Changement de mot de passe

Le changement de mot de passe requiert la saisie du mot de passe actuel. Il entraîne la re-dérivation de la clé et le rechiffrement de toutes les sauvegardes existantes. L'opération est enregistrée dans l'audit trail avec horodatage.

Audit trail et journalisation des modifications

Les deux IsoFind maintient un journal d'audit persistant de toutes les actions critiques. Ce journal est stocké dans une table SQLite dédiée, distincte des données analytiques, et protégé par une chaîne de hachage HMAC-SHA256.

Principe de la chaîne de hachage

Chaque entrée du journal inclut un hash HMAC-SHA256 calculé sur les champs de l'entrée et sur le hash de l'entrée précédente. Ce chaînage garantit que toute modification, suppression ou insertion dans le journal est détectée à l'entrée exacte concernée, avec son horodatage. La clé HMAC est générée à l'installation et stockée dans un fichier .audit_key avec des permissions d'accès restreintes. Sans cette clé, recalculer des hashs valides est impossible.

Événements enregistrés

CatégorieÉvénements journalisés
SystèmeDémarrage, arrêt du logiciel.
AuthentificationConnexion réussie, échec de connexion, expiration de session.
Données analytiquesCréation, modification, suppression d'échantillon ; mise à jour de données isotopiques.
Imports et exportsImport CSV complété, export créé.
AnalysesExécution d'analyse, recherche de correspondances.
Format ISOFSignature d'un fichier ISOF, vérification, export, import.
ProtectionActivation/désactivation de la protection, changement de mot de passe, verrouillage/déverrouillage de la base, sauvegarde créée, sauvegarde restaurée.
LicenceActivation de licence, désactivation.
IntégritéVérification de la chaîne de logs, effacement des logs (action réservée aux administrateurs).
Erreurs APIErreurs critiques du backend FastAPI.

Vérification de l'intégrité du journal

Menu Protection Audit et Logs Vérifier l'intégrité

La vérification recalcule l'ensemble de la chaîne et signale toute rupture avec l'entrée exacte concernée. Le résultat de la vérification est lui-même enregistré dans le journal (sévérité critique en cas de chaîne rompue).

Export du journal

Le journal peut être exporté en CSV depuis le menu Protection. Le fichier exporté inclut les champs entry_hash et prev_hash pour permettre une vérification externe indépendante d'IsoFind.

La clé HMAC peut optionnellement être fournie via la variable d'environnement ISOFIND_AUDIT_KEY (hexadécimal, 64 caractères minimum), ce qui permet une vérification centralisée dans les déploiements multi-postes.

Effacement sécurisé de la mémoire

Dev Le composant Rust d'IsoFind (couche Tauri) utilise le crate zeroize pour effacer les secrets cryptographiques de la mémoire vive dès qu'ils ne sont plus nécessaires. Cette mesure s'applique au token de sécurité de session et à ses copies temporaires.

L'effacement sécurisé utilise des barrières mémoire qui empêchent le compilateur d'optimiser les writes considérés comme "inutiles". Sans cette précaution, un compilateur optimisateur peut supprimer les effacements si la variable n'est pas réutilisée, laissant les secrets lisibles dans les pages mémoire du processus.

Intégrité du binaire backend

Dev Au démarrage, le composant Rust d'IsoFind vérifie l'intégrité du binaire backend Python (isofind_backend.exe) avant de le lancer. Cette vérification est réalisée par hash SHA-256 comparé à un hash de référence signé, compilé dans le binaire principal.

Si le hash du fichier backend ne correspond pas au hash de référence, le backend n'est pas démarré et l'utilisateur est informé d'une anomalie d'intégrité. Ce mécanisme protège contre l'injection de code malveillant dans le composant backend qui est distinct du binaire Tauri principal.

Protection de l'interface et du contenu

Dev IsoFind bloque plusieurs vecteurs d'extraction du contenu de l'interface :

Le clic droit est désactivé sur l'ensemble des pages du logiciel. Les options de sauvegarde de page (Ctrl+S, menu contextuel du WebView) sont bloquées. L'ouverture des outils de développement (F12, Ctrl+Maj+I) est désactivée en dehors du mode développement. Les raccourcis clavier standard d'extraction de contenu sont neutralisés.

Ces mesures empêchent l'extraction directe du code source de l'interface depuis une installation déployée, en complément de la compilation Nuitka qui offusque le backend Python.

Mode hors-ligne (air-gap)

Utilisateur IsoFind peut être configuré en mode hors-ligne complet, adapté aux déploiements en environnement isolé (air-gap, réseaux classifiés, laboratoires sans connexion internet). Ce mode se détermine lors de l'installation du logiciel et ne peut être changé que par une réinstallation complète.

En mode air-gap, les vecteurs réseau suivants sont bloqués :

FonctionnalitéComportement en mode air-gap
Téléchargement de plugins depuis une URLBloqué. Seule l'installation depuis fichier local (.isplugin ou .isoplugins) est autorisée.
Vérification de mises à jour des pluginsBloquée avec notification.
Bibliothèque de plugins en ligneMasquée. L'onglet "Depuis une URL" dans l'installeur disparaît.
Chargement de Pyodide depuis CDNBloqué. Un chemin local configurable permet de charger Pyodide depuis une copie locale.
Base de données communautaireInaccessible (connexion réseau désactivée).
GeoReM et données de référence en ligneInaccessibles.
Fonds de carteLes tuiles cartographiques en ligne sont remplacées par les tuiles hors-ligne si des packs locaux sont installés.

Export et import de plugins en mode air-gap

Pour transférer des plugins vers une machine en mode air-gap, IsoFind propose un système d'export/import de bundle. L'export sérialise tous les plugins installés dans un fichier isofind-plugins-YYYY-MM-DD.isoplugins. Ce fichier peut être transféré physiquement (clé USB, réseau isolé) et importé sur la machine cible. L'import ajoute les plugins manquants sans écraser les versions existantes.

Fonds de carte hors-ligne

Le module cartographique d'IsoFind utilise un proxy FastAPI local pour servir les tuiles. En mode air-gap avec des packs de tuiles locaux installés (format MBTiles), le proxy bascule automatiquement vers la source locale. Des packs régionaux sont disponibles pour éviter de devoir embarquer les tuiles mondiales qui représentent un volume important.

Système de licences : flux opérateur

Les deux Le flux d'activation d'une licence est conçu pour fonctionner sans connexion réseau.

ÉtapeActionOutil
1Générer l'empreinte machine sur le poste cibleIsoFind, menu Licence, Obtenir mon empreinte
2Transmettre l'empreinte à IsoFind SASEmail à colin.ferrari@isofind.tech
3IsoFind SAS génère et signe le fichier .license avec la clé privéeOutil keygen (hors binaire distribué)
4Importer le fichier .license sur le poste cibleIsoFind, menu Licence, Activer une licence
5Vérification locale par le binaire (clé publique embarquée)Automatique au démarrage

La clé privée de signature n'est jamais incluse dans le binaire distribué aux utilisateurs. Le binaire contient uniquement la clé publique de vérification. Même avec un accès complet au binaire IsoFind décompilé, il est impossible de générer une licence valide sans la clé privée.

Clés de sécurité physiques (YubiKey / FIDO2)

Utilisateur IsoFind supporte l'authentification par clé de sécurité physique conforme au protocole FIDO2/WebAuthn comme alternative ou complément au mot de passe pour le déverrouillage de session et du keyring ISOF.

Cette option est disponible pour les utilisateurs disposant d'une clé matérielle compatible (YubiKey 5 series, clés FIDO2 génériques). L'enregistrement de la clé s'effectue dans les paramètres de compte. Plusieurs clés peuvent être enregistrées sur un même compte pour permettre une clé de secours. En cas de perte de toutes les clés enregistrées, le déverrouillage par mot de passe maître reste disponible comme fallback.

Signatures numériques des données : format ISOF

Les deux Le format d'échange ISOF intègre un système de signatures numériques ECDSA P-256 permettant de certifier l'authenticité et l'intégrité des données exportées. Un fichier ISOF signé lie cryptographiquement les données analytiques à l'identité du laboratoire signataire.

Ce système repose sur une infrastructure à clés publiques (PKI) à deux niveaux : une autorité de certification racine IsoFind, une autorité de certification émettrice qui signe les certificats de laboratoire, et les certificats individuels de chaque laboratoire. Un fichier ISOF signé contient le hash SHA-256 des données, la signature ECDSA, le certificat du signataire et la chaîne de certificats jusqu'à la CA racine.

La vérification d'un fichier ISOF signé est possible hors-ligne, via IsoFind ou via le module open-source isof disponible sur PyPI, et via le vérificateur en ligne sur isofind.tech. La page dédiée à ce sujet est accessible ici : Signatures numériques.

Résumé des mesures par niveau

Mesure Actif par défaut Configurable Plan requis
Licence hors-ligne ECDSA P-256OuiNonTous
Effacement sécurisé mémoire (zeroize)OuiNonTous
Intégrité du binaire backend (SHA-256)OuiNonTous
Blocage clic droit et outils devOuiNonTous
Protection BDD par mot de passeNonOuiResearch
Chiffrement AES-256-GCM exports/sauvegardesNonOui (niveau Standard/Avancé)Research
Audit trail chaîné HMAC-SHA256Non (Avancé)OuiResearch
Mode hors-ligne air-gapNonOuiTous
Fonds de carte hors-ligneNonOui (packs à installer)Tous
Clé de sécurité physique FIDO2/WebAuthnNonOuiResearch
Signatures numériques ISOF (PKI labo)NonOui (certificat requis)Pro
Traçabilité juridique complèteNonOuiPro
Pour les déploiements en environnement sensible (défense, forensique judiciaire, recherche classifiée), la combinaison recommandée est : mode air-gap activé, protection avancée avec audit trail, clé de sécurité physique enregistrée, et fonds de carte locaux installés. Ces quatre mesures combinées donnent un logiciel fonctionnel sur réseau isolé, sans aucun appel réseau sortant, avec journalisation infalsifiable de toutes les opérations.