web-dev-qa-db-fra.com

Existe-t-il un algorithme de chiffrement qui permet à une seule charge utile d'avoir deux sorties différentes en fonction du mot de passe?

Supposons que j'ai des informations confidentielles chiffrées et que je suis obligé/contraint de divulguer ce mot de passe.

Mon objectif est de faire en sorte que la charge utile déchiffrée semble significative/et que le mot de passe soit valide.

Existe-t-il un tel algorithme qui permet d'appliquer un mot de passe différent à la même charge utile, afin que les autres données déchiffrées soient divulguées?

61
goodguys_activate

Avec de nombreux algorithmes courants, en changeant la clé, il est tout à fait possible d'obtenir des données arbitraires dans le premier bloc. Lorsque vous rencontrez des problèmes, c'est lorsque les données sont plus longues que la taille du bloc clé. Le reste des données (au-delà du premier bloc) semblerait aléatoire après l'échange de clés, en supposant que vous utilisez une méthode de chaînage sécurisée. Vous pouvez utiliser une méthode de chaînage non sécurisée, mais je ne la recommanderais pas.

Vous pouvez utiliser le cryptage XOR OTP . Ceci est différent de la plupart des cryptages où la clé est mathématiquement réutilisée. Avec OTP (One Time Pad), la clé a la même longueur que les données. Avec XOR (l'un des OTP les plus courants), vous avez la possibilité de produire arbitrairement le message souhaité.
(Votre adversaire est peut-être conscient de cette possibilité?)

Pour commencer, créez des fichiers de longueur égale:

  • message original
  • données aléatoires (la vraie clé)

XOR ensemble vous donne

  • message crypté

puis prenez

  • faux message
  • message crypté

XOR ensemble vous donne

  • fausse clé

Pour décrypter, prenez

  • message crypté
  • clé réelle ou fausse

XOR les pour obtenir

  • message réel ou faux

Comme @ Alpha3031 a commenté , vous pouvez réellement crypter un message (par exemple, le faux) avec AES traditionnel, (plus courant, et nécessite un fichier de clé plus petit), puis utiliser XOR ( moins courant) pour produire l'autre. (par exemple, le vrai message?)

XOR peut être appliqué à tous les fichiers suffisamment imprévisibles/aléatoires. (par exemple, des données cryptées)

25
Bryan Field

La question théorique ici est une question taille/entropie. La règle clé est que l'entropie du message crypté est la même que l'entropie du message initial. Si l'algorithme n'implique aucune compression, la taille du message chiffré est la taille du message d'origine.

Pour que le message crypté soit décodé de deux manières différentes selon la clé dont vous avez besoin, il contient 2 messages différents. Un moyen serait de crypter un message réel avec une clé et un faux message avec une autre clé, et de combiner les deux messages codés (après le remplissage du plus court) par exemple avec un octet de chacun. Pourvu que vous ajoutiez un identifiant connu au début des messages avant de les crypter, au moment du décodage, l'algorithme ne peut que rendre le message qui avait l'ID initial correct.

Le problème est qu'il y a deux messages différents + quelques informations supplémentaires. Et avoir un message crypté plus long que le message initial n'est pas si plausible ...

C'est la raison pour laquelle je ne connais aucun algorithme implémentant un déni plausible, mais seulement des conteneurs , c'est-à-dire un système de fichiers crypté complet. Cela a été implémenté dans l'excellent TrueCrypt avant l'arrêt de son support. Heureusement, un fork du projet le propose toujours, VeraCrypt .

VeraCrypt propose en fait des volumes cachés. En fait, une partie de l'espace vide d'un volume normal est utilisée pour stocker un volume distinct avec une clé distincte. Lorsque vous présentez une clé, une tentative est faite pour trouver un volume caché, sinon pour trouver un volume normal. Lorsque vous ouvrez le volume normal en mode normal, rien ne permet de deviner qu'il contient également un volume caché, il dispose simplement d'un espace inutilisé, ce qui n'est pas surprenant pour un système de fichiers. Bien sûr, si vous écrivez beaucoup de données dans ce mode, vous écraserez et détruirez définitivement les données de volume cachées. Mais un mode spécial existe pour donner les deux clés et utiliser le volume externe sans risque d'écraser le volume interne.


Ci-dessus, la partie technique. Mais le déni plausible nécessite également que le contenu du conteneur externe en vaille la peine, car la capacité des conteneurs cachés est une caractéristique bien connue. À mon humble avis, il existe deux façons acceptables:

  • Triez vos informations en 3 classes, simples, sensibles et secrètes et stockez-les en conséquence: simple hors du conteneur, sensible dans la partie externe (utilisez le double accès par mot de passe ) et secret dans la partie cachée. De cette façon, comme le conteneur externe contient plus que des fichiers innocents, l'existence d'un conteneur caché n'est pas évidente. Mais vous devez réellement utiliser le conteneur externe, au moins autant que le conteneur interne et être prêt à divulguer son contenu

  • Utilisez le conteneur externe comme stockage principal. Il s'agit d'une utilisation courante sur les ordinateurs portables d'entreprise, car elle garantit qu'en cas de vol ou de perte de l'ordinateur portable, aucune information confidentielle n'est immédiatement accessible (traite de la partie confidentialité de la sécurité ...). L'arrière est que vous devez monter le conteneur comme un seul au démarrage et, en utilisation normale, le démonter immédiatement pour le remonter manuellement en mode double .

Et en fonction de l'adversaire, VeraCrypt pages sur déni plausible et exigences de sécurité pour les volumes cachés a des conseils supplémentaires, tels que l'utilisation du volume caché uniquement lors du démarrage à partir d'un CD en lecture seule /DVD...

Comme d'habitude, la sécurité technique n'est qu'une partie de la sécurité mondiale. Si les informations sont suffisamment sensibles pour que vous puissiez craindre pour votre intégrité physique, vous devez utiliser des mesures de sécurité physiques et ne pas vous fier uniquement à un déni plausible: c'est un outil agréable qui peut aider à cacher des informations sécurisées, mais pas une solution miracle. Seul Snake Oil Company peut fournir ces ...

35
Serge Ballesta

Camouflage cryptographique

CA technologies a breveté une technologie connue sous le nom de Cryptographic Camouflage .

Un point sensible de la cryptographie à clé publique est de savoir comment protéger la clé privée. Nous décrivons une méthode de protection des clés privées à l'aide du camouflage cryptographique. Plus précisément, nous ne chiffrons pas la clé privée avec un mot de passe trop long pour une attaque exhaustive. Au lieu de cela, nous le chiffrons afin qu'un seul mot de passe le déchiffre correctement, mais de nombreux mots de passe le déchiffreront pour produire une clé qui semble suffisamment valide pour tromper un attaquant. Pour certaines applications, cette méthode protège une clé privée contre les attaques par dictionnaire, comme le fait une carte à puce, mais entièrement dans un logiciel.

Alors oui, vous pouvez prendre un message (dans ce cas, une clé), et le crypter de telle manière qu'il existe une clé correcte et de nombreuses "fausses" clés qui produisent un faux texte en clair.

6
John Wu

Ce que vous demandez, c'est comment implémenter un déni plausible en plus du chiffrement basé sur le secret. Bien qu'il n'y ait pas d'algorithmes spécifiques pour le faire, vous pouvez facilement l'implémenter au niveau de l'application - il suffit de combiner deux conteneurs symétriques en un et d'essayer chaque mot de passe sur chaque conteneur.

Je me souviens que TrueCrypt avait une telle fonctionnalité dans le passé, bien que je ne sois pas sûr de savoir si leur implémentation a fait quelque chose comme je le suggère ou l'a implémentée autrement.

5
pFarb

Oui, avec des mises en garde.

Exigences:

1) Vous fournissez le programme de cryptage, il ne pourra pas résister à un examen minutieux.

2) Le faux message doit être du texte ou quelque chose comme ça - faible entropie.

3) Le est une restriction de taille sur le faux message - il doit probablement être au moins proche de la taille du vrai, si le vrai est binaire, le faux doit être sensiblement plus grand. Toute paire de faux et réels messages peut être essayée, si les tailles sont fausses, elles seront refusées.

Algorithme:

Le fichier crypté de sortie aura toujours exactement la taille du faux fichier d'entrée. Cela ressemble à le chiffrer simplement, mais en réalité, les faux et les vrais fichiers sont compressés avant le chiffrement, le fichier chiffré est rembourré avec du charabia à la taille du faux fichier. Si les deux fichiers totalisent plus que la fausse taille non compressée, ils sont rejetés.

Pour extraire le fichier, vous prenez le mot de passe fourni et déchiffrez le fichier réel et l'exécutez via le décompresseur. Si le décompresseur a un problème, essayez à nouveau sur le faux fichier. Si le décompresseur a toujours un problème, vous sortez simplement du charabia de la taille du fichier d'entrée.

2
Loren Pechtel

Comme @Serge Ballesta l'a déjà noté, le contenu d'informations du message crypté ne peut pas être plus petit que le contenu d'informations du vrai message plus le contenu d'informations du faux message. Ainsi, tout message chiffré qui est significativement plus grand que le faux message serait automatiquement suspect.

D'un autre côté, n'oubliez pas que le contenu lisible par l'homme a beaucoup de redondance, qui est essentiellement "un lieu de stockage d'informations gratuit". Pour citer quelques exemples: masquer des messages dans des images et du son ou modifier le texte par le biais de synonymes, de phrasé, etc. Dans cette optique, le "mot de passe spécial" consisterait à transmettre le fichier habituellement décrypté via un décodeur supplémentaire (généralement également crypté, de sorte que cela ressemble à du bruit).

Pour donner un exemple concret facile (pour être sûr qu'il est clair: c'est juste un exemple pour illustrer l'idée, veuillez ne pas l'utiliser n'importe où), imaginez un chiffre de substitution simple dans lequel chaque lettre a plusieurs représentations pour éviter l'analyse de fréquence. Cependant, au lieu de choisir une substitution aléatoire, vous choisissez celle dictée par le texte chiffré du message caché (qui devrait être assez aléatoire).

J'espère que cela t'aides ;-)

1
dtldarek

Si vous autorisez une certaine "tricherie".

Cryptage:

  • Prenez 2 charges utiles différentes
  • Les inscrire
  • Échapper leurs octets sous forme de texte esadécimal (caractères de 0 à 9 et de A à F)
  • Prenez un personnage d'une charge utile et 1 personnage d'une autre charge utile. Chaque troisième octet est sorti de manière aléatoire.
  • étant donné que les charges utiles peuvent avoir une longueur différente à la fin d'un texte esadécimal, elles auront le caractère "G" et ensuite autant de caractères aléatoires que nécessaire.

Le mot de passe est composé comme suit:

  • 127 bits pour décrypter le flux
  • 1 bit pour sélectionner la charge utile
  • 128 bits pour décrypter la charge utile.

Fondamentalement, vous obtenez 1 paquet de la taille de 3 charges utiles, il doit être décrypté, puis vous devez sélectionner un groupe d'octets et le décrypter également.

Déchiffrement:

  • Décrypter le flux en utilisant la première partie du mot de passe
  • Sélectionnez la charge utile (chaque premier ou deuxième caractère tous les 3 caractères)
  • Échapper aux personnages
  • décrypter le paquet aussi.

Il est évident que ce format de fichier contient 2 charges utiles à l'intérieur, ce qui n'est pas évident, c'est que vous pouvez y mettre des ordures et seulement 1 charge utile réelle au lieu de 2.

1
CoffeDeveloper