Intégrité (cryptographie)

De manière générale, l'intégrité des données désigne l'état de données qui, tout au long de leur cycle de vie (notamment traitement, conservation ou transmission), ne subissent aucune forme de corruption, volontaire ou accidentelle, et conservent un format permettant leur utilisation. Elle constitue un aspect critique de la conception, de l'implémentation et de l'utilisation de tout système stockant, traitant ou extrayant des données.
Le terme d'intégrité des données est vaste et peut revêtir des significations différentes selon le contexte : il est notamment parfois utilisé par abus de langage comme synonyme de qualité des données.
Définition
[modifier | modifier le code]Toutes les techniques mises en œuvre pour garantir l'intégrité de données ont le même objectif : garantir que les données sont enregistrées exactement comme prévu. Lors d'une récupération future, il faut s'assurer que les données seront identiques à celles enregistrées initialement. Il ne faut pas confondre l'intégrité des données avec la sécurité des données, qui consiste à protéger les données contre les accès non autorisés.
Toute modification des données résultant d'une opération de stockage, de récupération ou de traitement, y compris en cas de malveillance, de panne matérielle ou d'erreur humaine, constitue une atteinte à l'intégrité des données. Il peut également s'agir d'une atteinte à la sécurité des données dans le cas où ces modifications sont dues à un accès non autorisé.
Selon la nature des données affectées, une atteinte à l'intégrité des données peut se manifester par des conséquences allant, de manière bénigne, du changement de la couleur d'un pixel d'une photo enregistrée, à, plus gravement, la perte complète d'une base de données centrale pour une entreprise, voire jusqu'à des pertes humaines catastrophiques dans le cas d'un système critique.
Types d'intégrité
[modifier | modifier le code]Intégrité physique
[modifier | modifier le code]L'intégrité physique fait face aux défis liés au bon stockage et à la récupération correcte des données. Ces défis peuvent inclure des défaillances électromécaniques, des défauts de conception, la fatigue des matériaux, la corrosion, les coupures de courant, les catastrophes naturelles et d'autres risques environnementaux spécifiques tels que les rayonnements ionisants, les températures et pressions extrêmes, et les forces g. Garantir l'intégrité physique passe notamment par des méthodes telles que la redondance matérielle, une alimentation sans interruption (ASI), certains types de baies RAID, des puces durcies aux rayonnements, une mémoire à code correcteur d'erreurs, l'utilisation d'un système de fichiers organisé par bloc de serveurs, l'utilisation de systèmes de fichiers employant des sommes de contrôle au niveau des blocs (comme ZFS), des baies de stockage effectuant des calculs de parité tels qu'un OU exclusif ou utilisant une fonction de hachage cryptographique, voire la mise en place d'un chien de garde (watchdog) sur les sous-systèmes critiques.
Les vérifications autour de l'intégrité physique des données reposent souvent sur des algorithmes de détection d'erreurs appelés codes correcteurs d'erreurs. Les erreurs d'intégrité des données dues à des interventions humaines sont généralement détectées grâce à des contrôles et algorithmes plus simples, tels que l'algorithme de Damm ou l'algorithme de Luhn. Ces derniers servent à maintenir l'intégrité des données après leur transcription manuelle d'un système informatique à un autre par un opérateur (par exemple, les numéros de carte bancaire ou de routage bancaire). Les erreurs de transcription causées par un ordinateur peuvent, elles, être détectées grâce à des fonctions de hachage.
Dans les systèmes de production, ces techniques sont utilisées conjointement pour garantir différents niveaux d'intégrité des données. Par exemple, un système de fichiers peut être configuré sur une architecture RAID tolérante aux pannes, mais ne pas fournir de sommes de contrôle au niveau des blocs afin de détecter et prévenir les corruptions de données silencieuses. De la même manière, un système de gestion de base de données peut être conforme aux propriétés ACID, mais le contrôleur RAID ou le cache d'écriture interne du disque dur peuvent ne pas l'être.
Intégrité logique
[modifier | modifier le code]L'intégrité logique inclut des sujets tels que l'intégrité référentielle et l'intégrité des entités dans une base de données relationnelle, ou, par exemple, dans le cas de systèmes robotiques, le fait d'ignorer correctement des données de capteurs aberrantes : il s'agit de s'assurer que les données sont cohérentes avec leur environnement. Peuvent faire obstacle à l'intégrité logique des bugs logiciels, des défauts de conception et des erreurs humaines. Les méthodes courantes pour garantir l'intégrité logique incluent les contraintes de vérification (une contrainte d'intégrité spécifiant, en SQL, une exigence pour chaque rang d'une base de données), les contraintes de clés étrangères, les assertions et d'autres contrôles de cohérence à l'exécution.
Si un secteur de données ne présente qu'une erreur logique, il peut être réutilisé en écrasant les données fautives avec de nouvelles données correctes. En cas d'erreur physique cependant, le secteur de données concerné est définitivement inutilisable.
Bases de données
[modifier | modifier le code]L'intégrité des données comprend des directives relatives à leur conservation, spécifiant ou garantissant la durée de conservation de données dans une base de données (généralement relationnelle). Pour garantir l'intégrité des données, ces règles sont appliquées de manière systématique et continue à toutes les données entrant dans le système. L'implémentation de contrôles au plus près de la source des données (comme la saisie humaine) réduit la quantité de données erronées introduites dans le système. L'application rigoureuse de règles d'intégrité des données permet de réduire les taux d'erreur ; ainsi que de gagner du temps lors du dépannage et de la recherche des données erronées et des erreurs qu'elles provoquent dans les algorithmes.
L'intégrité des données comprend également des règles définissant les relations qu'une donnée peut avoir avec d'autres données. L'intégrité des données inclut souvent des contrôles et des corrections des données invalides, selon un schéma fixe ou un ensemble de règles prédéfinies.
Types de contraintes d'intégrité
[modifier | modifier le code]L'intégrité des données est généralement assurée dans un système de base de données par un ensemble de contraintes ou de règles d'intégrité. Trois types de contraintes d'intégrité sont inhérents au modèle de données relationnel : l'intégrité des entités, l'intégrité référentielle et l'intégrité du domaine.
- L'intégrité des entités concerne le concept de clé primaire. L'intégrité des entités est une règle d'intégrité qui stipule que chaque table doit posséder une clé primaire et que la ou les colonnes choisies comme clé primaire doivent être uniques et non-nulles.
- L'intégrité référentielle concerne le concept de clé étrangère. La règle d'intégrité référentielle stipule que toute valeur de clé étrangère ne peut être que dans deux états. Généralement, la valeur de la clé étrangère fait référence à une valeur de clé primaire d'une table de la base de données. Occasionnellement, et cela dépend des règles du propriétaire des données, la valeur d'une clé étrangère peut être NULL. Dans ce cas, cela signifie explicitement qu'il n'existe aucune relation entre les objets représentés dans la base de données, ou que cette relation est inconnue.
- L'intégrité du domaine exige que toutes les colonnes d'une base de données relationnelle soient déclarées sur un domaine défini. Un domaine est un ensemble de valeurs de même type. Les domaines sont donc des ensembles de valeurs à partir desquels sont tirées les valeurs apparaissant dans les colonnes d'une table.
- L'intégrité définie par l'utilisateur fait référence à un ensemble de règles spécifiées par un utilisateur, qui n'appartiennent pas aux trois catégories précédentes.
Si une base de données prend en charge ces fonctionnalités, il lui incombe de garantir l'intégrité des données ainsi que le modèle de cohérence pour leur stockage et leur récupération.
Si une base de données ne prend pas en charge ces fonctionnalités, il incombe alors aux applications de garantir l'intégrité des données, tandis que la base de données assure le modèle de cohérence pour leur stockage et leur récupération.
Disposer d'un système d'intégrité des données unique, bien contrôlé et bien défini augmente :
- la stabilité (un système centralisé effectue toutes les opérations d'intégrité des données)
- la performance (toutes les opérations d'intégrité des données sont effectuées au même niveau que le modèle de cohérence)
- la réutilisabilité (toutes les applications bénéficient d'un système centralisé d'intégrité des données)
- la maintenabilité (un système centralisé pour l'administration de l'intégrité de toutes les données).
Les bases de données modernes prennent en charge ces fonctionnalités, et il leur incombe désormais de fait de garantir l'intégrité des données. De nombreuses entreprises et de nombreux systèmes de bases de données proposent des produits et des services pour migrer les systèmes existants (legacy) vers des bases de données modernes.
Systèmes de fichiers
[modifier | modifier le code]Diverses études montrent que ni les systèmes de fichiers répandus (parmi lesquels UFS, Ext, XFS, JFS et NTFS) ni les solutions RAID matérielles n'offrent une protection suffisante contre les problèmes d'intégrité des données[1],[2],[3],[4],[5].
Certains systèmes de fichiers (dont Btrfs et ZFS) proposent un système de calcul de sommes de contrôle interne pour les données et les métadonnées, utilisé pour détecter les corruptions silencieuses et améliorer l'intégrité des données. Si une corruption est détectée de cette manière et que les mécanismes RAID internes de ces systèmes de fichiers, fournissant la redondance des données, sont également utilisés, ces derniers peuvent reconstruire les données corrompues de façon transparente[1]. Cette approche permet une meilleure protection de l'intégrité des données, couvrant l'intégralité du chemin d'accès aux données ; on parle alors de protection de bout en bout[6].
L'intégrité des données appliquée à divers secteurs d'activité
[modifier | modifier le code]- Aux États-Unis, la Food and Drug Administration (FDA) a élaboré un projet de lignes directrices quant à l’intégrité des données à l’intention des fabricants de produits pharmaceutiques, tenus de se conformer au Code des réglementations fédérales des États-Unis (21 CFR, parties 210 à 212)[7]. Des lignes directrices similaires sur l’intégrité des données ont été publiées par le Royaume-Uni (2015), la Suisse (2016) et l’Australie (2017)[8].
- Diverses normes de fabrication de dispositifs médicaux abordent l'intégrité des données de manière directe ou indirecte, notamment les normes ISO 13485, ISO 14155 et ISO 5840[9].
- Début 2017, la Financial Industry Regulatory Authority (FINRA), constatant des problèmes d'intégrité des données liés aux systèmes de trading automatisés et de surveillance des mouvements de fonds, a déclaré qu'elle ferait de « l'élaboration d'un programme d'intégrité des données visant à contrôler l'exactitude des données soumises » une priorité[10]. Début 2018, la FINRA a annoncé qu'elle étendrait son approche en matière d'intégrité des données, entre autres, aux « politiques et procédures de gestion des changements technologiques » des entreprises[11].
- D’autres secteurs tels que l’exploitation minière [12] et la fabrication de produits [13] se concentrent de plus en plus sur l’importance de l’intégrité des données au sein des actifs d’automatisation et de surveillance de la production.
- Les fournisseurs de stockage cloud sont confrontés depuis longtemps à des défis importants pour garantir l'intégrité et la provenance des données clients et pour suivre les violations à l'intégrité de ces données[14],[15],[16].
Notes et références
[modifier | modifier le code]- (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Data integrity » (voir la liste des auteurs).
- What is Data Integrity? Learn How to Ensure Database Data Integrity via Checks, Tests, & Best Practices
- ↑ « Parity Lost and Parity Regained »
- ↑ « An Analysis of Data Corruption in the Storage Stack » [archive du ]
- ↑ « Impact of Disk Corruption on Open-Source DBMS » [archive du ]
- ↑ « Baarf.com », Baarf.com (consulté le )
- ↑ (en) Yupu Zhang, Abhishek Rajimwale, Andrea C. Arpaci-Dusseau et Remzi H. Arpaci-Dusseau, « End-to-end data integrity for file systems: a ZFS case study », USENIX Conference on File and Storage Technologies, (lire en ligne).
- ↑ « Data Integrity and Compliance with CGMP: Guidance for Industry » [archive du ], U.S. Food and Drug Administration, (consulté le )
- ↑ Davidson, J., « Data Integrity Guidance Around the World », Contract Pharma, Rodman Media, (consulté le )
- ↑ Scannel, P., « Data Integrity: A perspective from the medical device regulatory and standards framework » [archive du ] [PDF], Data Integrity Seminar, Parenteral Drug Association, (consulté le ), p. 10–57
- ↑ Cook, R., « 2017 Regulatory and Examination Priorities Letter », Financial Industry Regulatory Authority, (consulté le )
- ↑ Cook, R., « 2018 Regulatory and Examination Priorities Letter », Financial Industry Regulatory Authority, (consulté le )
- ↑ « Data Integrity: Enabling Effective Decisions in Mining Operations » [archive du ], Accenture, (consulté le )
- ↑ « Industry 4.0 and Cyber-Physical Systems Raise the Data Integrity Imperative » [archive du ], Nymi Blog, Nymi, Inc, (consulté le )
- ↑ Priyadharshini, B. et Parvathi, P., « Data integrity in cloud storage », Proceedings from the 2012 International Conference on Advances in Engineering, Science and Management, (ISBN 978-81-909042-2-3)
- ↑ Zafar, F., Khan, A. et Malik, S.U.R., « A survey of cloud computing data integrity schemes: Design challenges, taxonomy and future trends », Computers & Security, vol. 65, no 3, , p. 29–49 (DOI 10.1016/j.cose.2016.10.006)
- ↑ Imran, M., Hlavacs, H. et Haq, I.U.I., « Provenance based data integrity checking and verification in cloud environments », PLOS ONE, vol. 12, no 5, (PMID 28545151, PMCID 5435237, DOI 10.1371/journal.pone.0177576, Bibcode 2017PLoSO..1277576I)