Spécification ISOF | Isotopic Secure Open Format
Spécification

La spécification ISOF

ISOF lie un résultat isotopique au contexte qui en fait une preuve, son incertitude, ses matériaux de référence, la géochimie mesurée sur le même échantillon et la profondeur de prélèvement, dans un document JSON unique que tout destinataire peut vérifier hors ligne.

Version du format1.3
SérialisationDocument JSON unique
SignatureSHA-256 / ECDSA P-256
LicenceCC-BY 4.0 (spéc.) / MIT (code)
Vue d'ensemble

Ce que spécifie ISOF

ISOF (Isotopic Secure Open Format) est un format ouvert pour échanger des mesures isotopiques et géochimiques accompagnées du contexte analytique qui les rend interprétables. Un artefact est un document JSON unique, portant conventionnellement l'extension .isof, et non une archive de fichiers séparés. Il peut être ouvert et lu avec un simple éditeur de texte.

Le document regroupe son contenu en blocs de haut niveau : les échantillons et leurs mesures, les méthodes analytiques, le registre de purification, les métadonnées d'auteur et de projet, et une signature. Comme chaque mesure réside dans l'échantillon auquel elle appartient, l'échantillon est l'unité naturelle du format, et un rapport isotopique ne voyage jamais détaché de son contexte élémentaire, moléculaire et de profondeur.

Un objet de preuve unique

Rapport, incertitude, matériaux de référence, géochimie mesurée conjointement et profondeur, liés dans un fichier qui voyage comme un tout.

Signé à la source

Une signature unique sur le périmètre signé permet à tout destinataire de confirmer que l'artefact est intact et, au niveau 2, authentique.

Hors ligne par conception

La vérification s'appuie sur des ancres de confiance embarquées avec l'implémentation, sans réseau, sans tiers et sans service cloud.

Ouvert et non destructif

Les valeurs brutes et corrigées sont toutes deux conservées, de sorte que la réduction de données peut être reproduite indépendamment depuis le même artefact.

Conteneur

Structure de haut niveau

Un artefact ISOF est un objet JSON unique. Un champ de version permet au schéma d'évoluer tout en gardant les anciens fichiers lisibles ; les trois classes de données additionnelles sont optionnelles, et un fichier qui les omet reste valide.

BlocPrésenceDescription
isof_versionrequisChaîne de version du format (actuellement 1.3). Détermine l'interprétation du document.
created_atoptionnelHorodatage de création, ISO 8601.
created_byoptionnelLogiciel producteur, version et opérateur.
projectoptionnelProjet ou étude, sous forme d'objet structuré ou de simple chaîne de titre.
doi, date, locationoptionnelDOI de publication, date d'étude et situation géographique lorsque les données sont publiées.
samplesrequisLa charge utile principale. Un tableau d'échantillons, chacun portant ses identifiants, sa provenance et ses familles de mesures imbriquées (section Modèle de contenu).
methods, purificationoptionnelMéthodes de préparation et d'analyse, et registre de purification, liés aux échantillons.
signatureoptionnelLa signature sur le périmètre signé (section Signature). Absente dans un artefact non signé.
encryptionoptionnelLorsqu'il est présent et actif, indique que la charge utile est chiffrée pour un destinataire nommé, ajoutant la confidentialité par-dessus l'intégrité.
Modèle de contenu

Les mesures et leur contexte

Chaque échantillon porte une famille isotopique et trois classes de données additionnelles. Les quatre font partie du modèle de contenu central, de sorte que le contexte voyage comme une donnée de premier ordre, cosignée, plutôt que dans des fichiers supplémentaires détachés.

FamilleChamps clésDescription
isotope_dataelement, system, ratio, ratio_2se, delta_notation, standardLe système isotopique exprimé canoniquement (par ex. 87Sr/86Sr, 123Sb/121Sb), la valeur avec son incertitude rapportée, et le matériau de référence auquel elle est rattachée.
geochem_dataelement, value_normalized, uncertainty, display_unit, method, depth_mConcentrations en éléments majeurs, mineurs et traces, avec leurs unités, incertitudes et méthode analytique.
physico_dataparameter, value, uncertainty, method, depth_mParamètres physico-chimiques comme le pH, le potentiel redox, la conductivité, l'oxygène dissous ou la température.
molecules_datanom, cas, valeur, unite, valeur isotopique par composéEspèces moléculaires individuelles pour l'analyse isotopique par composé (CSIA) et les travaux de géochimie organique.

La profondeur est une propriété de la mesure, pas seulement de l'échantillon. Un champ depth_m sur chaque enregistrement permet de représenter fidèlement un profil vertical, avec plusieurs analyses le long d'une carotte ou d'un forage, sous la forme d'un artefact signé unique.

Signature

Deux niveaux sur un périmètre

L'intégrité repose sur une signature unique calculée sur un périmètre signé défini : les blocs samples, methods et purification pris ensemble. Les deux niveaux signent ce même périmètre comme un seul objet, de sorte qu'un changement sur n'importe quelle valeur, dans n'importe quelle classe de données, invalide la signature. Aucune classe n'est signée séparément ni plus faiblement qu'une autre.

Niveau 1

Intégrité SHA-256

Un condensat SHA-256 sur le périmètre signé. Il permet à quiconque de confirmer que les données n'ont pas changé depuis l'export.

Il n'identifie pas le signataire, puisque n'importe qui peut recalculer le condensat. Champs : level, algorithm, scope, hash.

Niveau 2

Authenticité ECDSA P-256

Une signature ECDSA P-256 portant le certificat X.509 du laboratoire producteur. Elle ajoute l'authentification de l'origine par-dessus la même garantie d'intégrité.

Champs : level, algorithm, signed_scope, signature_b64, certificate_chain (certificat laboratoire à l'index 0, Issuing CA à l'index 1).

Canonicalisation

Sérialisation déterministe

Pour rendre la signature reproductible, le périmètre signé est sérialisé de manière déterministe avant hachage.

Le périmètre signé est encodé avec une sérialisation JSON compacte (sans espace non significatif, ordre des clés préservé tel que produit), partagée entre le logiciel producteur et le vérificateur afin que les deux hachent exactement les mêmes octets. Cela joue le même rôle qu'un schéma de canonicalisation formel tel que la RFC 8785 (JCS) : cela évite qu'une signature échoue simplement parce qu'un fichier a été reformaté en transit. Les règles exactes de sérialisation sont fixées par cette spécification.

Limitation connue. Le schéma actuel préserve l'ordre des clés plutôt que de les trier. Un fichier dont les clés seraient réordonnées par un outil intermédiaire, sans aucune modification des données, échouerait à la vérification. L'adoption du tri lexicographique de la RFC 8785 est la voie naturelle pour élargir l'interopérabilité avec des implémentations indépendantes, et elle est envisagée pour une révision future.

Modèle de confiance

Infrastructure à clés publiques hors ligne

Les signatures de niveau 2 sont émises sous une PKI X.509 à trois niveaux. Chaque niveau peut fonctionner hors ligne, ce qui rend le format utilisable dans les contextes isolés du réseau, forensiques, nucléaires et liés à la défense.

NiveauRôleValidité typique
Root CA (hors ligne)Ancre autosignée. Ne signe que les certificats d'Issuing CA. Conservée hors ligne.~20 ans
Issuing CA (hors ligne)Signe les certificats de laboratoire. Opérée par un organisme communautaire ou, dans les déploiements souverains, une autorité nationale.~5 ans
Certificat de laboratoireCertificat d'entité finale détenu par un laboratoire ou un analyste nommé. Sert à signer les artefacts ISOF.1 à 3 ans

La Root CA et l'Issuing CA sont distribuées comme ancres de confiance embarquées avec l'implémentation de référence, de sorte qu'un artefact est vérifié en contrôlant la signature sur le périmètre signé et en validant la chaîne de certificats jusqu'à l'ancre embarquée, sans aucun accès réseau à aucun niveau. La révocation de certificat est hors du périmètre du format : le vérificateur n'effectue aucune consultation de CRL ni d'OCSP, et la révocation est laissée à l'application de déploiement lorsque la connectivité le permet. ISOF ne présuppose rien de l'opérateur de la racine, de sorte qu'un institut national, une autorité de défense ou un consortium peut exploiter une racine indépendante et distribuer ses propres ancres.

Exemple

Un artefact en un coup d'oeil

Un artefact minimal de niveau 2, abrégé. La signature couvre les blocs samples, methods et purification ; la chaîne de certificats est embarquée pour que l'artefact se vérifie hors ligne.

sample.isof
{
  "isof_version": "1.3",
  "created_by": { "software": "IsoFind", "operator": "Lab" },
  "project": "Sb isotopes, Oruro, Bolivia",
  "doi": "10.1007/s11270-025-08445-6",
  "samples": [{
    "id": "OR-01", "matrix": "water",
    "isotope_data": [{
      "element": "Sb", "system": "123Sb/121Sb",
      "ratio": 0.46, "ratio_2se": 0.02,
      "standard": "SPEX CertiPrep"
    }],
    "geochem_data": [{ "element": "Sb", "value_normalized": 7824, "display_unit": "ug/L" }]
  }],
  "signature": {
    "level": 2,
    "algorithm": "ECDSA-P256-SHA256",
    "signed_scope": ["samples", "methods", "purification"],
    "signature_b64": "MEUCIQ...",
    "certificate_chain": ["<lab-cert>", "<issuing-ca>"],
    "signed_by": "IsoFind SAS"
  }
}
terminal
# Lire et vérifier un artefact avec le paquet de référence
pip install isof

import isof
report = isof.load("sample.isof")
result = report.verify()
print(result.valid, result.level, result.signer)

True 2 IsoFind SAS
Disponibilité

Implémentation de référence

Le paquet Python de référence lit, vérifie, construit et signe les artefacts ISOF. La vérification suffit à la plupart des flux de réception et ne nécessite aucun accès réseau.

La spécification est publiée sous licence CC-BY 4.0 et l'implémentation de référence sous licence MIT. Les deux sont développées de manière ouverte, et les contributions comme les relectures critiques de la communauté analytique sont bienvenues.