Question:
Comment savoir si un fichier texte a été édité ou falsifié?
Drew Gibson
2016-01-09 19:15:19 UTC
view on stackexchange narkive permalink

Est-il possible de savoir si un fichier texte, par exemple au format XML, a-t-il été modifié ou falsifié au fil du temps?

Le contexte de ma question est le suivant:

Je suis un scientifique dans l'industrie utilisant une technologie appelée 'spectrométrie de masse (MS) ». MS est une technique analytique utilisée, par ex. dans l'analyse médico-légale pour déterminer si un composé particulier est présent dans un échantillon (par exemple, une drogue d'abus dans le sang ou l'urine).

Spécification de masse. Les fichiers de données sont généralement stockés au format de fichier plat selon les spécifications binaires privées du fournisseur de l'instrument - leur logiciel peut les traiter, mais rien d'autre ne le peut. Cependant, il existe des normes ouvertes pour les données MS et la plupart des fournisseurs prennent en charge l'exportation vers au moins une spécification ouverte. Ces normes ouvertes sont principalement basées sur XML de nos jours (par exemple mzML) et permettent le traitement avec des applications open source, et permettent également le stockage à long terme (> 10 ans) des données dans un format qui ne exigent que nous maintenions un ordinateur archivé et le système d'exploitation (ou VM) et le logiciel de traitement pendant de longues périodes.

Le format binaire du fournisseur offre au moins une certaine sécurité contre la falsification des données, mais les formats XML ne le font pas. D'où le problème - les formats ouverts sont très utiles pour fournir l'accès aux données sur des échelles de temps d'archivage, mais la sécurité est un problème.

Vous pouvez calculer les hachages des fichiers et les conserver dans une base de données sécurisée (avec des sauvegardes des originaux). Ensuite, si jamais vous suspectez une falsification, vous pouvez simplement recalculer les hachages et comparer, puis les remplacer par les sauvegardes si nécessaire.
Qui craignez-vous de les falsifier? Quel est votre modèle de menace?
* Le format binaire du fournisseur offre au moins une certaine sécurité contre la falsification des données * - Je suis presque certain que ce n'est pas le cas. Ce n'est pas parce que * vous * ne pouvez pas le lire et le modifier lorsque vous l'ouvrez avec un éditeur de texte que personne d'autre ne peut procéder au reverse-engineering du format et créer un éditeur pour celui-ci.
@philipp est correct - au mieux, c'est "la sécurité par l'obscurité" et ce n'est pas du tout une protection contre quiconque ayant des connaissances rudimentaires, un éditeur hexadécimal et un minimum de patience.
@JonathanGray - en supposant que les fichiers d'origine ne sont pas si volumineux, en quoi votre solution de hachage est-elle meilleure que le simple stockage d'une sauvegarde des données?
@iAdjunct Je présume que l'OP est préoccupé par les résultats de test falsifiés. Lorsque vous traitez avec des tests de dépistage de drogues, c'est une préoccupation légitime - imaginez ce qui se passerait si quelqu'un faussait les données d'un concurrent pour un emploi bien rémunéré, donnant l'impression qu'il est un drogué!
Euh, lisez-le avant et après. Si c'est différent, alors il a été modifié. Sinon, c'est pareil.
Vous avez fait une faute de frappe: le format binaire du fournisseur offre une sécurité ** zéro ** contre la falsification des données
@NeilSmithline Parce que les hachages pourraient être envoyés pour vérification au lieu de fichiers entiers.
Comme le dit notre [aide / sur le sujet], «La sécurité est un sujet très contextuel: les menaces jugées importantes dans votre environnement peuvent être sans conséquence chez quelqu'un d'autre, et vice versa. [...] Pour obtenir les réponses les plus utiles, vous devrait nous dire: quels actifs vous essayez de protéger; qui utilise l'actif que vous essayez de protéger et qui, selon vous, pourrait vouloir en abuser (et pourquoi); quelles mesures vous avez déjà prises pour protéger cet actif; quelles les risques que vous pensez devoir encore atténuer ". Je vous encourage à modifier la question pour ajouter ces informations, afin que nous puissions vous fournir les réponses de la meilleure qualité.
@philipp fait un excellent point. La première chose qui m'est venue à l'esprit était "étant donné le XML en texte brut et le binaire, il ne me faudra pas longtemps pour faire de l'ingénierie inverse du format de fichier propriétaire". À moins qu'ils ne cryptent réellement, cela devrait être simple. Tout au plus, ils ajouteront un en-tête d'identification à chaque valeur (https://en.wikipedia.org/wiki/Type-length-value) Je crains que vous deviez contacter chaque fournisseur individuellement et, même dans ce cas, ne le faites pas ' t attendez d'eux qu'ils divulguent les détails de leur "sauce secrète"; tout au plus, je m'attendrais à de vagues assurances de sécurité, sans détails).
Vous voudrez peut-être examiner un produit logiciel spécialement conçu pour stocker et gérer des données de laboratoire, comme un LIMS, un ELN (cahier de laboratoire électronique) ou un SDMS (système de gestion de documents scientifiques) - ils sont souvent utilisés dans des systèmes de qualité qui doivent répondre à la réglementation. normes telles que GMP, de sorte que les fournisseurs devraient bien connaître ce à quoi ces normes s'attendent et comment les respecter.
Merci pour tous les commentaires utiles. Le problème est le respect des exigences de sécurité des données des agences de réglementation. Ces agences voudront peut-être examiner n'importe quel aspect du développement d'un composé pharmaceutique et l'intégrité des données est une priorité de leur ordre du jour, et à juste titre.
Si c'est pour l'industrie pharmaceutique, je soupçonne fortement que vous devriez embaucher une certaine expertise professionnelle sur la conformité réglementaire - je suppose que votre employeur n'est pas réellement une entreprise pharmaceutique, sinon vous l'auriez déjà en interne?
C'est une solution commerciale, mais ils cochent probablement toutes vos cases: preuve d'intégrité et de temps, auditabilité, solution à long terme ... [www.guardtime.com] (http://www.guardtime.com)
Huit réponses:
Philipp
2016-01-09 20:27:36 UTC
view on stackexchange narkive permalink

La solution par défaut serait d'utiliser des signatures cryptographiques. Demandez à chaque technicien de générer une paire de clés PGP, de publier la clé publique et de sécuriser la clé privée.

Lorsqu'un technicien effectue une analyse, il signe le fichier de résultat avec sa clé privée. Désormais, toute personne souhaitant vérifier le fichier peut vérifier la signature à l'aide de la clé publique du technicien. Lorsque quelqu'un modifie le fichier, la signature ne sera plus correcte.

Considérations de sécurité : si une clé privée d'un technicien est connue de quelqu'un d'autre, cette personne peut changer le fichiers et changez également la signature en une signature qui sera valide. Ce problème peut être atténué en demandant à plusieurs personnes de signer chaque fichier de résultats. Un attaquant aurait besoin de toutes clés pour remplacer toutes les signatures par des signatures valides.

Solution alternative low-tech: Imprimer chaque fichier de résultat, demandez au technicien de le signer à l'ancienne (avec un stylo) et déposez le fichier dans une archive physiquement sécurisée.

Au fait: Ne présumez pas que le format binaire spécifique au fournisseur offre plus de sécurité contre la falsification que XML. Ce n'est pas parce que vous ne pouvez pas le lire et le modifier lorsque vous l'ouvrez avec un éditeur de texte que personne d'autre ne peut procéder au reverse-engineering du format et créer un éditeur pour celui-ci.

Les binaires spécifiques au fournisseur peuvent être n'importe où entre très facile à changer (il y a du texte en clair, juste entouré de mots), à vraiment difficile (s'ils utilisent la cryptographie, comme cette réponse vous le suggère). Vous ne pouvez pas vraiment savoir sans essayer probablement (sauf si c'est open source).
Il est TRÈS improbable que le binaire du fournisseur inclue la cryptographie. S'ils l'avaient fait, cela aurait été fortement annoncé et serait un argument de vente, car sa mise en œuvre coûte de l'argent.
Pour éviter les fuites de clés privées d'utilisateurs uniques, des signatures séparées par deux utilisateurs différents peuvent être appropriées. Pour un stockage à très long terme (c'est-à-dire lorsque les clés doivent être considérées comme fuites simplement par leur âge), il peut être approprié de démissionner à intervalles réguliers ...
Une petite technicité mais n'y a-t-il pas un problème avec "Donner à chaque technicien une paire de clés", dans la mesure où la clé privée ne doit être connue que du propriétaire? Chaque technicien ne devrait-il pas créer sa propre paire de clés?
@Qwerky Dans un monde parfait, ce serait vrai, mais dans le monde réel, ils pourraient avoir besoin d'aide.
Stephane
2016-01-09 20:25:48 UTC
view on stackexchange narkive permalink

Toute forme de signature numérique fera l'affaire. Voici quelques conseils:

  • Pour les données XML, il existe un standard de signature numérique ( XMLSign). Malheureusement, cette norme est plutôt médiocre et présente une faille de sécurité importante (les documents doivent être normalisés via une transformation XML avant de pouvoir être signés. Ceci est extrêmement difficile à faire en toute sécurité car la transformation elle-même devient une partie importante de la signature).

  • Vous pouvez également utiliser PGP ou S / MIME pour signer numériquement des documents, ceux-ci produiront de nouveaux, basés sur du texte et principalement des documents lisibles mais toujours infalsifiables.

  • Enfin, vous pouvez utiliser des signatures détachées. En gros, c'est un autre fichier qui contient la signature numérique liée à un autre document et qui peut être utilisé pour valider les données d'origine (quel que soit le format d'origine).

Permettez-moi d'ajouter quelques infos supplémentaires ici:

  • Le choix des bonnes propriétés pour la signature (algorithme, type et taille de clé, etc.) dépend fortement de la condition que vous définissez: combien de temps comptez-vous avoir les données sécurisées, contre quel type d'adversaire comptez-vous les protéger (quelle est la valeur d'un faux? quelle serait la valeur d'une attaque qui casserait tous les documents signés avec la même clé?), existe-t-il une exigence réglementaire? Cela signifie que vous devriez consulter un spécialiste qui peut traduire ces exigences commerciales et les traduire en exigences techniques.
  • Je vous conseille vivement d'ajouter un horodatage sécurisé à votre signature. Cela vous permettra non seulement de prouver qu'un document n'a pas été falsifié, mais vous permettra également de prouver quand la signature a eu lieu.
Horodatage sécurisé? Comment prouver qu'une signature a eu lieu à un moment précis?
Le protocole est décrit dans la rfc 3161. En gros, vous prenez un hachage de vos données de signature, l'envoyez à un serveur d'horodatage sécurisé qui vous renvoie une version signée du hachage. Vous ajoutez ensuite cela à votre signature.
Ahh, il faut donc faire confiance à un tiers.
@BlacklightShining oui, mais cela empêche les vecteurs d'attaque très réels - par exemple, un initié malveillant (par exemple vos propres techniciens) ou un attaquant ayant accès à toutes * vos * clés sera toujours incapable de simuler les horodatages, et si ce tiers est malveillant ou compromis alors * par lui-même * il ne suffit pas de divulguer ou de modifier vos données. Un inconvénient est que la connexion réseau à ce serveur d'horodatage peut révéler la quantité de signatures que vous faites et quand exactement vous le faites, en fonction de votre situation, cela peut être non pertinent ou dangereux.
Vous pouvez intégrer le hachage de la signature dans la blockchain Bitcoin, alors vous n'avez pas à faire confiance à un tiers. Ce n'est pas tout à fait gratuit cependant.
Tout schéma de signature numérique reposera, à un niveau ou à un autre, sur la confiance placée sur un tiers: il est nécessaire de faire valoir l'identité de la clé utilisée pour la signature. Cela ne signifie pas que vous ayez besoin de faire confiance, à des tiers, difficile: par exemple, l'autorité d'horodatage est uniquement responsable de garantir qu'à un moment donné, une donnée spécifique existait déjà (via son hachage).
+1 pour l'horodatage, d'autant plus que de nombreuses affaires judiciaires ont des preuves clés rendues irrecevables en raison des ordinateurs les produisant ayant un temps incorrect. De nombreuses autorités de certification majeures x509 fournissent des services d'horodatage, mais vous devrez utiliser un format de fichier compatible.
@billc.cn En fait, non, vous n'avez pas besoin d'utiliser un format de fichier compatible. C'est ce que j'ai expliqué dans mon article: vous pouvez soit envelopper les données dans PGP / SMIME, soit simplement utiliser une signature détachée
Pourquoi ne pas simplement signer le fichier .xml avec PGP?
@Joshua PGP n'a pas d'horodatage sécurisé.
-1
Bien @Joshua, ils utilisent PGP / GPG, mais vous ne pouvez pas utiliser votre GPG / PGP et simplement obtenir un horodatage. Vous devez leur envoyer le fichier (donc cryptez-le avant!) Et ensuite ils le signeront avec PGP et vous devez leur faire confiance pour utiliser la date correcte et ne pas perdre les clés. Cela ne semble pas vraiment adapté à ce cas d'utilisation.Je ne connaissais pas ce service, alors merci de mentionner qu'il existe!
Vous pouvez simplement leur envoyer le fichier .asc de la signature détachée pour la faire signer.
Artelius
2016-01-11 02:02:39 UTC
view on stackexchange narkive permalink

Je vais décrire les trois options principales et les avantages / inconvénients de chacune.

Stockez les sauvegardes des fichiers dans un emplacement sécurisé

explicatif. L '«emplacement sécurisé» peut être un support en lecture seule (comme des CD), ou un lecteur réseau que tout le monde peut lire mais sur lequel seul le superviseur peut écrire, ou un service de stockage en ligne (par exemple Dropbox) qui rend raisonnablement difficile la falsification de fichiers dates de modification.

Avantages

  • Vous devriez quand même avoir un système de sauvegarde

Inconvénients

  • Si les fichiers sont volumineux, les télécharger pour vérification peut prendre du temps
  • Si le faussaire s'introduit dans l'emplacement sécurisé, il peut couvrir ses traces

Stocker les hachages dans un emplacement sécurisé

Un hachage est une empreinte digitale d'un fichier qui ressemble à quelque chose comme 8f2e3f53aa90b27bda31dea3c6fc72f6 ; si deux fichiers sont légèrement différents, ils auront un hachage différent. Prenez un hachage du fichier d'origine et stockez-le en toute sécurité, puis pour vérifier qu'un fichier n'a pas été modifié, prenez-en un hachage et comparez-le au hachage stocké.

Avantages

  • Vous devez stocker / vérifier en toute sécurité un code d'environ 32 chiffres au lieu d'un fichier entier

Inconvénients

  • Vous devez toujours accéder à une ressource externe pour vérifier le fichier
  • Si le faussaire s'introduit dans l'emplacement sécurisé, il peut couvrir ses traces

Signatures cryptographiques

Dans ce cas, une ou plusieurs personnes peuvent "signer" le fichier et si des modifications sont apportées, ces signatures seront invalides. Bien sûr, si tous ceux qui ont besoin de signer le fichier sont prêts à (ou trompés) signer un fichier falsifié, vous pouvez vous en sortir avec le fichier falsifié.

Avantages

  • Les informations de sécurité peuvent être conservées dans le fichier lui-même , ou autrement sur le même lecteur, ce qui signifie une vérification plus facile.

Inconvénients

  • Toute personne qui signe des fichiers doit être très attentive à empêcher quelqu'un de voler sa clé privée.
  • Toute personne qui signe des fichiers doit faire très attention à savoir quoi ils signent.
Per Alexandersson
2016-01-11 03:08:10 UTC
view on stackexchange narkive permalink

Prenez votre fichier xml et votre photo de vacances préférée. Concaténez les fichiers et calculez plusieurs valeurs de hachage du fichier résultant.

L'image de vacances garantit qu'il est extrêmement difficile de produire une collision, même si le fichier de photo de vacances est public. De plus, si vous utilisez plusieurs algorithmes de hachage, il est peu probable que tous ceux-ci soient interrompus sous 10 ans.

Concaténer tous les fichiers de données avec la même photo n'aidera pas beaucoup. Il vaut mieux utiliser des algorithmes de hachage plus coûteux en calcul sur des données pures.
N'est-ce pas "trivialement" vaincu par une attaque d'extension de longueur?
Si la photo de vacances n'est pas connue du public, elle est très difficile, et avec plusieurs hachages, encore plus difficile.
Chris H
2016-01-11 15:19:07 UTC
view on stackexchange narkive permalink

Aborder la sécurité du format de fichier du fournisseur, en développant ce que @Philipp dit dans les commentaires.

J'ai eu une fouille autour d'un format de fichier de fournisseur (pas une spécification de masse mais assez proche à ces fins). Cela a été beaucoup plus facile grâce à l'installation du logiciel, mais je ne suis pas un expert en la matière. Je pourrais facilement changer les métadonnées (extraire les métadonnées était mon objectif en premier lieu) des données réelles auraient été plus difficiles mais en aucun cas impossibles à modifier. Étant donné que les métadonnées incluent des éléments tels que l'ID de l'échantillon et la date du test, il s'agit d'une vulnérabilité suffisamment importante pour des éléments tels que "dont l'échantillon a été nettoyé et quand? " comme vous semble pertinent, ou "qui a découvert pour la première fois ce médicament? " dans d'autres domaines.

Certains logiciels fournissent certaines fonctionnalités anti-falsification (par exemple, utilisation interne de hachages - pas nécessairement de qualité cryptographique -; autorisations utilisateur lors de l'édition en utilisant leur logiciel ). L'ingénierie inverse ne serait guère plus que triviale pour quelqu'un avec un peu de compétence décente dans la plupart des cas. Avec le logiciel installé, même contourner les fonctionnalités intégrées pourrait être aussi simple que d'écrire un frontal pour appeler les DLL du fournisseur, car ces fonctionnalités anti-sabotage sont normalement des modules complémentaires facultatifs (dans de nombreux domaines, ils ne sont pas obligatoires ou obsolètes. ).

(Cela aurait pu être une séquence de commentaires, mais comme mon objectif était de clarifier le problème du fichier fournisseur, il semblait préférable de l'écrire correctement).

billc.cn
2016-01-11 16:30:26 UTC
view on stackexchange narkive permalink

Que diriez-vous de faire en sorte que les techniciens publient des paires d'identifiants de fichiers uniques et leurs hashs sur Twitter en utilisant leurs propres comptes?

Cela prouvera que:

  • Fichier de données avec L'identifiant et le hachage existaient au moment de la publication
  • La personne qui a accès au compte fait confiance au contenu du fichier à ce stade
  • Le fichier n'est pas modifié après coup en tant que Twitter ne permet pas de modifier les tweets

Cette méthode offre au moins une sécurité comparable à de nombreuses réponses basées sur la signature numérique et des avantages tels que:

  • Beaucoup plus simple à apprendre et à utiliser (pas de procédure compliquée de génération, d'ouverture ou de sauvegarde de clé privée)
  • Haute redondance (via les sauvegardes de Twitter et les sites de scraping Twitter tiers)
  • Horodatage intégré ( qui restera probablement dans une procédure judiciaire sans beaucoup d'explications)

Je recommande d'utiliser au moins SHA256 comme algo de hachage.

gbjbaanb
2016-01-11 21:14:43 UTC
view on stackexchange narkive permalink

L'un des moyens les plus simples est de créer un hachage du fichier et de le stocker ailleurs afin de savoir s'il est modifié. Les programmes de détection d'intrusion utilisent cette technique en permanence pour vérifier l'intégrité (ou au moins indiquer si un attaquant a manipulé des fichiers système).

Regardez un programme tel que AIDE , vous pouvez l'exécuter sur le répertoire contenant les fichiers (et éventuellement l'exécuter à la demande lorsqu'un fichier est ajouté) pour mettre à jour sa base de données de hachages. Tous les soirs, exécutez-le pour vérifier et vous envoyer par e-mail un rapport indiquant toutes les modifications apportées aux fichiers.

Si vous avez besoin de connaître l'original, un système de fichiers versionné pourrait être une bonne idée. Chaque modification apportée à un fichier est enregistrée et les anciennes versions peuvent être extraites. Alternativement, un système de sauvegarde qui détecte les nouveaux fichiers et les sauvegarde dans un emplacement sécurisé peut être utilisé (et conserve toutes les anciennes versions - ou un attaquant pourrait simplement modifier le fichier à plusieurs reprises jusqu'à ce que l'original soit supprimé).

user96474
2016-01-10 13:28:21 UTC
view on stackexchange narkive permalink

les formats ouverts sont très utiles pour donner accès aux données sur des échelles de temps d'archivage, mais la sécurité est un problème

Grande question: comment les archives sont-elles accessibles?

Le problème avec le hachage d'un fichier de texte brut est que le hachage est précis aux caractères. Changez un caractère et le hachage sera complètement différent. Fonctionne très bien pour les fichiers binaires comme les programmes exécutables (où un octet déplacé est généralement désastreux) mais échoue sur des choses comme les fichiers de balisage - la normalisation (ou le compactage) de l'espace blanc changera le hachage mais n'aura aucun effet sur les données.

Si vous transférez les fichiers par e-mail ou par partage réseau en lecture-écriture, vous devrez disposer d'un stockage sécurisé pour le hachage, ou toute personne ayant un demi-cerveau peut modifier le fichier puis mettre à jour le hachage. Si vous disposez d'un stockage sécurisé pour le hachage, pourquoi ne pas stocker le fichier de données au même endroit et oublier le hachage?

Cela va sembler étrange au début, mais regardez à télécharger le fichier et la description sur une installation locale de quelque chose comme wordpress ou mediawiki. L'accès peut être aussi ouvert ou sécurisé que vous le souhaitez, et les plates-formes disposent de contrôles de téléchargement de fichiers spécifiques à l'utilisateur. Une fois que le service informatique l'a correctement configuré, l'accès en écriture aux fichiers peut être verrouillé aussi étroitement que nécessaire.

"* ou n'importe qui avec un demi-cerveau peut éditer le fichier puis mettre à jour le hachage *": ce n'est pas possible lors de l'utilisation de la signature numérique à moins que la clé privée n'ait été compromise.
-1, manque les solutions standard, qui utilisent des signatures cryptographiques.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...