web-dev-qa-db-fra.com

Schémas / mécanismes qui pourraient fournir un décryptage unique?

Je connais bien la plupart des fondations de sécurité de premier cycle/diplômés courantes; mais je n'ai rien trouvé en rapport avec ce scénario:

Un schéma/système où un élément de données ne peut être "décrypté" ET lu qu'une seule fois (potentiellement dans un programme informatique).

Est-ce même possible? J'ai entendu dire que de telles choses existent dans le "monde du matériel" (?). Si ma question est imprécise/incomplète, je suis prêt à mettre à jour. Mais je suis en fait intéressé par un design/protocole générique en même temps.

38
DaveIdito

Il n'y a aucun moyen de le faire - c'est un sous-ensemble de ce que les schémas DRM tentent de faire.

Si un utilisateur final peut déchiffrer quelque chose une fois pour le voir, il peut le revoir. L'un des éléments suivants peut être possible:

  • prenez d'abord une copie et déchiffrez
  • copier l'écran
  • éditer l'application

La seule façon de vous rapprocher serait d'avoir un contrôle total sur le matériel et les logiciels, vous pouvez donc supprimer une fois qu'il a été montré, mais même alors, quelqu'un pourrait utiliser un appareil photo pour prendre des photos de l'écran, etc.

Donc, je voudrais plutôt demander à quoi vous avez l'intention d'utiliser un tel schéma - car il existe des moyens d'avoir le même effet dans de nombreux scénarios.

62
Rory Alsop

Comme vous l'avez déjà laissé entendre, une telle chose n'est possible que dans le matériel. Un logiciel ou une solution de données chiffrées souffrirait toujours de la possibilité de faire une copie avant le déchiffrement.

Dans le matériel, le schéma serait de détruire les informations sur le décryptage. Une approche naïve serait de simplement lire un bloc en mémoire, de le détruire sur le stockage et de le décrypter.

Cette approche, bien sûr, peut être victime de falsification - un attaquant pourrait manipuler le système afin que la suppression échoue, mais quoi qu'il fasse, le décryptage pense qu'il a réussi et procède donc au décryptage.

Une approche plus sophistiquée consisterait à exploiter certaines propriétés physiques de telle manière que la lecture des informations les détruise également. C'est en fait ce qui sécurise la cryptographie quantique en grande partie théorique - vous ne pouvez pas écouter (écouter) sans détruire les informations, révélant ainsi le fait que quelqu'un intercepte le message.

En dehors du domaine quantique, il peut y avoir des solutions utilisant des processus chimiques ou d'autres processus physiques, mais elles seront également sujettes à des altérations.

25
Tom

Si un réseau est disponible, vous pouvez décharger la procédure de déchiffrement (et la clé privée) vers un service exécuté sur un serveur sécurisé. Vous pouvez ensuite appliquer les règles de votre choix sur le serveur.

Le client soumettrait le texte opaque au service et lui demanderait de le déchiffrer et de renvoyer le contenu en texte brut, et le serveur pourrait décider si le client devait être autorisé en fonction de l'historique de déchiffrement - bloquant potentiellement plus d'une opération de déchiffrement.

Cependant, rien n'empêcherait l'appelant d'utiliser le résultat du déchiffrement encore et encore, ce qui est plus ou moins le même que de le déchiffrer encore et encore . Il y a eu des tentatives pour le faire pour la musique et les films (voir chemin multimédia protégé ) mais c'est une bataille perdue. Si rien d'autre, un pirate informatique pourrait usurper le matériel du moniteur et enregistrer le signal d'entrée, ou même simplement pointer une caméra vidéo HD vers le moniteur et enregistrer le contenu pendant sa lecture. Une technique d'interception similaire pourrait être utilisée pour tout type de contenu numérique. Donc, l'essentiel est ... non, ce n'est pas vraiment possible.

Une approche plus réalisable serait de faire un numéro de série dans le contenu lui-même et de le suivre dans un serveur d'autorisation, ou de faire un horodatage d'expiration. Vous devrez ensuite appliquer cela sur le côté récepteur, qui devrait être une application sécurisée. Voici comment fonctionne un mot de passe à usage unique , par exemple. Mais cela nécessite que vous possédiez les deux extrémités du chemin de données et que les données elles-mêmes soient inutiles en dehors de celui-ci.

10
John Wu

Ce n'est en aucune façon pratique et fondamentalement impossible (de manière fiable), mais il peut être possible dans une certaine mesure .

L'obstacle évident qui rend l'effort fondamentalement impossible est que quoi que ce soit que vous déchiffrez, une fois que vous l'avez lu, il est dans votre tête. Donc, pour être sûr que le secret reste secret, il devrait y avoir une sorte de mécanisme de pilule empoisonnée. Peut-être une capsule qui contient un moteur TTS et vous transmet le message via la conduction osseuse, puis explose, soufflant votre tête.
Parce que, vous savez, tant que vous respirez, vous pouvez simplement en parler à quelqu'un. Espérons tout de même que vous ne répéterez pas à haute voix ce que le TTS vous chuchote dans la tête.

Cela mis à part, il existe des systèmes de stockage de données qui ne peuvent être lus qu'une seule fois. La DRAM et le ferroélectrique RAM en tant qu'alternative non volatile en sont deux exemples. Ceux-ci nécessitent soit une écriture explicite après lecture intégrée, soit quelque chose de différent (par exemple, un circuit de condensateur). Sinon, lire les informations les détruit. Oubliez cela, et vous avez fait un grand pas en avant.
Maintenant, à tout le moins, il faudrait faire deux copies (une sur un stockage à lecture non destructive, puis une autre pour en avoir une copie). Pourtant, c'est tout à fait dans le domaine du "faisable", mais selon la compatibilité matérielle, cela peut être quelque peu un fardeau de toute façon (pas sûr que vous puissiez simplement câbler deux types de stockage incompatibles entièrement différents et copier des données comme dans Star Trek, pourrait très eh bien ça se révèle un peu plus difficile que ça!). Mais nous ne sommes pas à la fin.

La clé de déchiffrement, et même une partie, ou l'intégralité de l'exécutable de déchiffrement (en supposant que les boucles sont déroulées) pourraient également être stockées sur un stockage à lecture destructrice à l'intérieur du matériel de déchiffrement. La clé de déchiffrement n'a jamais besoin de quitter la puce, donc en dehors des "données", il ne doit pas y avoir de voie pour la transmettre. Il est lu pendant le décryptage, puis il a disparu. Alors ... voilà.

À moins que vous supposiez que quelqu'un pourrait percer des trous de la taille de quelques dizaines de nanomètres dans la puce et utiliser des nano-fils pour échanger en quelque sorte dans le stockage, il n'y a aucun moyen d'accéder aux données. Je ne dis pas que c'est impossible, juste ... que c'est un peu fou. Aucune information n'est suffisamment valable pour justifier cela. De plus, je suppose que cela pourrait être une procédure assez risquée, car une fuite accidentelle d'une minuscule charge ou un déplacement de quelques nanomètres trop à gauche ou à droite détruira inévitablement la clé également.

Comme la clé de déchiffrement est généralement très petite (32 octets ou moins), elle pourrait en fait être stockée dans un processeur d'enclave sécurisé ou similaire, comme cela se fait couramment sur de nombreux appareils mobiles de nos jours. Ce stockage pourrait également avoir des lectures destructrices (et aucun accès externe aux données enclavées, comme sur tous les téléphones modernes). Mais il n'en a même pas besoin.
Vous pourriez avoir des fusibles comme Knox de Samsung ou SEP d'Apple, qui vous permettent en principe de décrypter les données N fois (pas seulement une fois, mais exactement N fois, autant que vous le souhaitez). Après cela, le processeur ne rafraîchit tout simplement pas (ou écrase explicitement) la clé. Ou bien, beaucoup moins sûr (mais probablement encore assez bon), il refuse seulement de décrypter.
Ainsi, faire une copie des données chiffrées ne fera vraiment pas grand chose car vous ne pouvez pas déchiffrer la copie.

Bien sûr, quelqu'un peut toujours copier trivialement les données décryptées , s'il y a un moyen de le faire. Il y en a généralement, à la fois numérique et analogique. Si rien d'autre, vous pouvez avoir deux ou trois personnes regardant simultanément l'écran, ou prendre une photo.

Cependant, c'est un problème que vous ne pouvez pas résoudre fondamentalement (sauf par un appareil explosif ou un appareil libérant des gaz nerveux).

2
Damon

D'un point de vue purement théorique - cela n'est possible que si vous pouvez vous assurer qu'après le premier déchiffrement, il n'y a pas de copie les deux

  1. les données décryptées, et
  2. soit les données chiffrées ou la ou les clés nécessaires pour les déchiffrer.

En principe, vous ne pouvez le faire qu'avec coopération (volontaire ou contraint) des parties qui gèrent ces informations qui doivent être supprimées.

En pratique, cela peut suffire en fonction de ce que vous voulez réaliser et des composants du système auxquels vous êtes prêt à faire confiance.

Par exemple, si vous faites confiance à un iPhone typique (vous ne devriez pas, au sens absolu, mais comme toutes les choses en matière de sécurité, il y a peu d'absolu, il n'y a généralement que des probabilités et combien de risques vous êtes prêt à accepter), vous pourriez choisissez de supposer qu'une application iPhone que vous avez écrite et ses données ne peuvent pas être altérées par des logiciels malveillants ou par l'utilisateur humain, car c'est le genre de chose Apple semble essayer de s'assurer, et donc vous pouvez faites le décryptage et assurez-vous de supprimer les données de votre code après.

(Vous pouvez toujours imaginer un appareil méticuleusement sécurisé et audité que vous avez fabriqué vous-même si l'iPhone vous semble trop peu sûr ou indigne de confiance.)

Cela ne supprime pas le "trou analogique" si vous montrez ces données à l'utilisateur ou si vous les divulguez d'une manière observable, mais cela peut être acceptable pour certains cas d'utilisation - par exemple, vous ne le montrez peut-être pas à l'utilisateur, mais seulement utiliser les données déchiffrées dans le cadre d'un schéma de sécurité dans les détails d'implémentation que l'utilisateur n'a pas besoin de voir directement.

Nous pouvons étendre cet exemple à la transmission de données : vous pouvez envoyer les données cryptées via un canal de données, la clé via un autre, et tant que vous faites confiance à au moins un de ces canaux pour être sécurisé et pour ne pas conserver les données qui y transitent, ou vous pouvez être sûr que les intermédiaires qui peuvent écouter sur un canal ne pourront jamais transmettre des informations à ceux qui peuvent espionner sur l'autre, alors vous avez une garantie décente que la seule chose qui le déchiffre est votre code client coopérant.

TL; DR: Si vous comprenez pourquoi il n'y a pas de solution parfaite à ce problème en principe, vous pouvez identifier certaines situations où vous pouvez le réaliser avec des cotes suffisamment élevées pour être à l'aise dans la pratique. Mais ces situations pourraient ne pas chevaucher ce que vous espériez faire.

1
mtraceur

C'est l'une des promesses de la communication quantique - en théorie, puisque l'observation modifie fondamentalement les états quantiques, il serait possible de créer un protocole de communication "à lecture unique".

Bien sûr, des problèmes pratiques comme "l'utilisateur peut toujours prendre une photo de son écran avec son téléphone" demeurent.

0
Filips Jelisejevs