Comment implémenter / utiliser un système sécurisé d'accès aux fichiers locaux 'en lecture unique'?

StackOverflow https://stackoverflow.com/questions/1422730

Question

Quelqu'un connaît-il un système d'accès sécurisé aux fichiers en lecture unique? Ou comment on pourrait en créer un? Je me rends compte que si les données doivent être utilisées sur un système, elles doivent pouvoir être lues, mais je pense qu'il est possible de limiter sévèrement la manière dont les données sont mises à disposition et de réduire le risque de copie ou d'utilisation ailleurs.

Voici mes exigences:

Je veux stocker un fichier de données 'sécurisé / crypté' sur une clé USB (peut être un CD / DVD en lecture seule, mais c'est mieux si un lecteur USB en lecture / écriture ou même une disquette) et que ce fichier puisse être lu une fois (et principalement une seule fois), décodé bloc par bloc, une fois le mot de passe entré. Le contenu du fichier est probablement texte / xml de base (ou données codées en texte) et doit être lu principalement comme un flux séquentiel. Les données (idéalement) peuvent être lues par les méthodes normales d’accès aux fichiers Windows, c’est-à-dire: un fichier std, des objets FSO (flux et fichier texte), toutes les méthodes de traitement de fichiers BASIC PC (VB6 / VB.NET), voire du texte Excel (importation). ). oui, je sais que cela détruit probablement l’objet (puisqu’un tel fichier peut ensuite être ouvert / sauvegardé), mais je voudrais quand même avoir cette possibilité. Enfin, une fois les critères "d'accès" remplis, l'appareil empêcherait tout accès ultérieur.

L’accès aux données se fera uniquement sur un ordinateur local. Pas de réseau local, pas de partage de périphérique pris en charge. Les données sur le périphérique ne doivent pas être copiées par des moyens normaux. Les données seraient écrites sur le périphérique en utilisant des méthodes normales si possible ou une application spéciale si nécessaire.

Pour simplifier les choses, un seul mot de passe, un seul fichier, une seule utilisation et un seul utilisateur serait bien, mais d’autres améliorations sont possibles: (comme la cerise sur le gâteau) ...

  • autorisant 'n' ouvre
  • ayant plusieurs mots de passe, 2 utilisateurs ou plus, agissant individuellement
  • mots de passe silo, si deux autres utilisateurs se connectent pour obtenir un accès (ou même avoir au moins n utilisateurs sur plus de m connectés pour obtenir un accès)
  • L'invite de mot de passe doit être donnée lors du premier accès au bloc, indépendamment de application appelant le premier bloc
  • Le mot de passe pourrait être intégré / automatique
  • lie l’accès à un numéro de série machine / mac / ip / disk désigné (ou autre code machine)
  • lier l'accès à un programme / à une candidature
  • si possible, supprimez et écrasez le fichier de données en toute sécurité

Mon premier essai en ce sens suggère qu'il aurait besoin d'un pilote "périphérique psuedo" qui apparaîtrait comme une extension du pilote de périphérique amovible standard (ou son remplacement). Le pilote traiterait chaque bloc de fichier, secteur par secteur, et refuserait au serveur de décoder à nouveau les blocs s'il n'était pas autorisé. Le périphérique ne doit pas afficher de listes de répertoires normales, mais un résumé du contenu peut être fourni à un utilisateur (facultatif).

Contrairement à un système DRM, je ne souhaite aucune forme d’accès / d’authentification en ligne (mais l’envisage), je préférerais un système autonome.

J'ai longuement cherché un appareil / système de ce type et je ne l'ai pas encore trouvé. La plupart des périphériques et des outils système (Iomega / Ironkey, par exemple) semblent permettre de déverrouiller l’accès aux fichiers, mais sans limite, c’est-à-dire: plusieurs lectures une fois déverrouillées.

Les performances ne sont pas un problème. Une lecture lente de la disquette serait acceptable. La méthode d’enccyption est agnostique, tout ce qui est raisonnablement fort 40 bits + (128 bits) serait acceptable. Je ne peux pas vous dire en quoi consistent les données ni leur utilité, il me faut simplement un moyen de transmettre des données à une personne, de limiter son utilisation autant que possible et de déterminer ce qu’elles peuvent en faire. C’est une obligation réelle de protéger les données confidentielles et non destinée aux logiciels DRM, MP3 / Vidéos ou similaires.

Je suis un développeur 'office' et je ne connais pas vraiment les pilotes de périphériques ou les DRM - par où commencerais-je avec un tel projet? Y a-t-il déjà quelque chose de disponible pour Joe-public?

Merci, Tim.

PS: mise à jour

Je tiens à signaler que je souhaite simplement transmettre des données entre nous-mêmes et un seul fournisseur de services désigné. Je ne veux pas qu'ils copient les données que nous fournissons. Il sera utilisé une fois pour prendre en charge un processus ponctuel «singulier» et sera ensuite terminé. Lorsque les données sont "diffusées / lues", elles doivent être "consommées". si le processus échoue, nous réémettons les données au fournisseur de services. les données restent notre propriété, elles ne sont ni vendues ni concédées sous licence.

Je me rends bien compte qu'aucune solution ne sera infaillible, mais le rapport risque / rendement devrait dissuader les tentatives occasionnelles de casser le système. Les données n'ont aucune valeur commerciale explicite.

PPS: C’est une exigence réelle ... Que feriez-vous?

À en juger par les votes positifs de la réponse réfléchie de @eriksons, vous dites: "Ce n’est pas possible / ne vous dérange pas" - mais en plus de vous assurer personnellement que les données sont utilisées conformément à nos souhaits, que feriez-vous?

Était-ce utile?

La solution

Votre approche présente plusieurs problèmes.

  1. Si vous pouvez lire les données à partir de n'importe quelle application, vous pouvez les protéger n'importe où. Je pense que cela irait à l'encontre de l'objectif de toute politique "accès unique".
  2. Pour qu'un pilote de périphérique gère votre scénario, vous avez besoin d'une connaissance approfondie de la programmation de système de fichiers, ce qui au moins sous Windows n'est pas une tâche facile. Même dans ce cas, il serait difficile d’appliquer les conditions préalables d’accès unique.
  3. Les programmes ont différentes stratégies d’accès aux fichiers, ce qui pourrait briser vos hypothèses. Par exemple. une application peut ouvrir un fichier une fois pour obtenir sa taille, puis le fermer et le rouvrir pour charger ses données. Comment cela devrait-il être appliqué? Voulez-vous limiter les appels 'OpenFile'? voulez-vous limiter les appels 'read byte'? Voulez-vous limiter ... la navigation dans le fichier?
  4. Lorsque votre support est copié, quel que soit le moyen utilisé, vous n'avez aucun moyen de le savoir. L’industrie du jeu tente de lier le jeu au CD original pendant des années mais a échoué lamentablement pendant des années.

Je pense que ce qui serait réalisable serait un format de conteneur, avec un encodeur / décodeur, ou quelque chose comme ça. (Voir Bitlocker dans Windows7). Cela garantirait que vous ne pouvez décoder les données qu'une seule fois sur un disque local, puis supprimer le conteneur sur votre support (méfiez-vous, vérifiez d'abord si le support est en écriture, et liez le conteneur à un numéro ou nom du support afin que le conteneur ne puisse pas être copié).

Une autre possibilité serait un périphérique USB séparé, que vous ne pouvez utiliser qu'une fois pour en extraire les données. Ensuite, il vous suffira d'écrire un pilote une fois en mode utilisateur avec WinUSB. Les clés USB cryptées utilisent cette approche.

Mais je pense vraiment que c'est une mauvaise idée, car vous pouvez très facilement contourner n'importe quelle mesure de comptage, lorsque le destinataire peut lire toutes les données du support et les sauvegarder n'importe où.

Autres conseils

Résumé: ce n’est pas une solution réaliste. Repensez le processus pour que " lise une fois " n'est pas nécessaire.

Quelques entreprises (on pense notamment à Disappearing Inc., et elles avaient au moins un concurrent) ont tenté de créer un système "auto-destructeur". Courriel sur du matériel à usage général à la fin des années 90. Ils ont dépensé des millions de dollars pour développer des systèmes qui ne fonctionnaient pas vraiment.

À ma connaissance, la seule solution potentielle consiste à utiliser un module de plateforme sécurisée . sont assez communs, car ils sont nécessaires dans tous les ordinateurs achetés par le gouvernement américain. Cependant, leurs capacités varient. Il vous en faudrait un qui prenne en charge un élément appelé attestation à distance, qui permet au logiciel d’effectuer des contrôles d’intégrité sur lui-même. Avec cette fonctionnalité, vous pourriez écrire un logiciel qui appliquerait votre politique de destruction de données. Cependant, je ne pense pas que cette fonctionnalité soit largement utilisée. Mon ordinateur portable a un TPM, mais il ne le supporte pas.

Vous devez également savoir qu’il ya beaucoup d’hostilité à l’égard de "confiance en l'informatique". car il peut être utilisé pour limiter les fonctionnalités d’une machine. Cela viole le droit de faire ce que vous voulez avec votre propriété. Les TPM peuvent avoir un sens pour les machines de l'entreprise ou du gouvernement, mais pas pour les ordinateurs personnels.

D'autres aspects de votre problème, tels que l'octroi d'un accès aux données à plusieurs utilisateurs, obligeant plusieurs utilisateurs à accéder aux données, sont plus faciles.

Le cryptage des données pour plusieurs utilisateurs est généralement réalisé en générant une clé, en cryptant les données avec cette "clé de cryptage de contenu", puis en cryptant la clé (qui est relativement petite) avec une "clé de cryptage de clé". (qui pourrait être un mot de passe) appartenant à chaque destinataire prévu.

Demander à un certain nombre d'utilisateurs de saisir un mot de passe peut être effectué de manière sécurisée avec Shamir Secret Sharing, , comme je l'ai appris ici sur SO.

D'après les commentaires sur la question, en particulier le "service d'impression d'étiquettes postales". analogie, je crains que ma réponse initiale ne soit pas vraiment pertinente.

Dans un cas comme celui-là, je ne vois qu'une solution juridique. Interdit le stockage de vos données dans le contrat. Si cela vaut la peine de les poursuivre pour violation du contrat, faites-le.

Cryptographiquement, la meilleure chose à laquelle je puisse penser serait de "marquer en filigrane". une telle "liste de diffusion" avec des informations qui pourraient m'aider à prouver qu'une copie de la liste a été divulguée par un fournisseur particulier. Le fait de savoir qu'il existe un filigrane pourrait dissuader toute divulgation délibérée et aider à obtenir un règlement rapide en cas de divulgation accidentelle. Cela pourrait utiliser des techniques de stéganographie dans les enregistrements ainsi que de faux enregistrements dans la collection.

Les algorithmes permettant de faire cela existent peut-être déjà, mais je ne connais pas bien le terrain. Recherche sur les "filigranes numériques" pourrait être utile. Même si cela n’affiche que des algorithmes pour la vidéo et l’audio protégés, ils pourraient peut-être être adaptés pour fonctionner avec d’autres médias.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top