mercredi, 1 avril, 2026
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
| Champ | Contenu |
|---|---|
| v | Version du format (actuellement 2). |
| payload | JSON encodé en base64url contenant : émetteur, empreinte machine, horodatages d'émission et d'expiration, type de licence, fonctionnalités, numéro de série. |
| sig | Signature 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ème | Démarrage, arrêt du logiciel. |
| Authentification | Connexion réussie, échec de connexion, expiration de session. |
| Données analytiques | Création, modification, suppression d'échantillon ; mise à jour de données isotopiques. |
| Imports et exports | Import CSV complété, export créé. |
| Analyses | Exécution d'analyse, recherche de correspondances. |
| Format ISOF | Signature d'un fichier ISOF, vérification, export, import. |
| Protection | Activation/désactivation de la protection, changement de mot de passe, verrouillage/déverrouillage de la base, sauvegarde créée, sauvegarde restaurée. |
| Licence | Activation de licence, désactivation. |
| Intégrité | Vérification de la chaîne de logs, effacement des logs (action réservée aux administrateurs). |
| Erreurs API | Erreurs 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 URL | Bloqué. Seule l'installation depuis fichier local (.isplugin ou .isoplugins) est autorisée. |
| Vérification de mises à jour des plugins | Bloquée avec notification. |
| Bibliothèque de plugins en ligne | Masquée. L'onglet "Depuis une URL" dans l'installeur disparaît. |
| Chargement de Pyodide depuis CDN | Bloqué. Un chemin local configurable permet de charger Pyodide depuis une copie locale. |
| Base de données communautaire | Inaccessible (connexion réseau désactivée). |
| GeoReM et données de référence en ligne | Inaccessibles. |
| Fonds de carte | Les 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.
| Étape | Action | Outil |
|---|---|---|
| 1 | Générer l'empreinte machine sur le poste cible | IsoFind, menu Licence, Obtenir mon empreinte |
| 2 | Transmettre l'empreinte à IsoFind SAS | Email à colin.ferrari@isofind.tech |
| 3 | IsoFind SAS génère et signe le fichier .license avec la clé privée | Outil keygen (hors binaire distribué) |
| 4 | Importer le fichier .license sur le poste cible | IsoFind, menu Licence, Activer une licence |
| 5 | Vé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-256 | Oui | Non | Tous |
| Effacement sécurisé mémoire (zeroize) | Oui | Non | Tous |
| Intégrité du binaire backend (SHA-256) | Oui | Non | Tous |
| Blocage clic droit et outils dev | Oui | Non | Tous |
| Protection BDD par mot de passe | Non | Oui | Research |
| Chiffrement AES-256-GCM exports/sauvegardes | Non | Oui (niveau Standard/Avancé) | Research |
| Audit trail chaîné HMAC-SHA256 | Non (Avancé) | Oui | Research |
| Mode hors-ligne air-gap | Non | Oui | Tous |
| Fonds de carte hors-ligne | Non | Oui (packs à installer) | Tous |
| Clé de sécurité physique FIDO2/WebAuthn | Non | Oui | Research |
| Signatures numériques ISOF (PKI labo) | Non | Oui (certificat requis) | Pro |
| Traçabilité juridique complète | Non | Oui | Pro |
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.