Connaissant le texte en clair, comment découvrir le schéma de cryptage utilisé? [fermé]

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

  •  04-07-2019
  •  | 
  •  

Question

J'ai quelques champs char () dans une table DBF qui ont été laissés chiffrés par un ancien développeur du projet.

Cependant, je connais le résultat en clair du déchiffrement de plusieurs enregistrements. Comment puis-je déterminer la fonction / algorithme / schéma pour déchiffrer les données d'origine? Voici quelques exemples de champs:

Pour cryptext:

b5 01 02 c1 e3 0d 0a

le texte en clair doit être:

3543921 or 3.543.921

Et pour le cryptext:

41 c3 c5 07 17 0d 0a

le texte en clair devrait être

1851154 or 1.851.154

Je pense que 0d 0a ne fait que compléter. Était à partir de données recueillies dans le codage win-1252 (dunno si compte)

MODIFIER: C’est dans un souci de curiosité et d’apprentissage. Je veux pouvoir comprendre le chiffrement utilisé (cela semble simple, bien que ce soit des données binaires) pour récupérer la valeur des champs pour les n-uplets dont je ne connais pas le texte en clair.

EDIT 2: ajout de quelques échantillons.

Était-ce utile?

La solution

Il n'y a pas de solution de facilité dans les cas généraux. Cette question est trop générale. Essayez de poster ces chaînes simples et cryptées.

EDIT:

  • pour apprendre, vous pouvez lire cet article: Cryptographie sur Wikipedia
  • si vous croyez vraiment que le cryptage est simple - vérifiez si c'est un octet (ou un mot) de niveau XOR - voir le pseudocode suivant

    for (i in originalString) {
    newString[i] = originalString[i] ^ CRYPT_BYTE;
    }
    

Autres conseils

En supposant que ce ne soit pas aussi simple qu’un chiffrement de substitution (essayez l’analyse de fréquence) ou un XOR mal appliqué (par exemple, réutiliser la clé; essayez XOR avec deux textes cryptés avec des textes en clair connus, puis voyez si le résultat est le XOR des textes en clair; ou essayez XORing le texte chiffré avec lui-même décalé d’un certain nombre d’octets), vous devriez probablement supposer qu’il est bien connu comme un flux / bloc chiffré avec une clé inconnue (qui est probablement constituée de caractères ASCII). Si vous avez un assez grand échantillon de paires ciphertext-texte clair, vous pouvez commencer par vérifier si les textes en clair avec les mêmes premiers caractères / octets ont des textes cryptés avec les mêmes premiers caractères / octets. Vous pourrez également voir s’il s’agit d’un chiffrement de bloc ou de flux et s’il existe un mécanisme de rétroaction en cause. Le rembourrage, s'il est présent, pourrait également suggérer qu'il s'agisse d'un chiffrement par bloc plutôt que d'un chiffrement par flux.

En fonction des efforts que vous souhaitez déployer, vous devriez pouvoir aller quelque part. Commencez par lire sur la la cryptanalyse , en particulier le méthodes de cryptanalyse .

Les éléments déterminants pour la facilité de cette tâche sont les suivants:

  • quelle est la qualité de la méthode de cryptage utilisée; s'il s'agit d'une méthode récente et appréciée telle que RSA ou AES, vous n'avez probablement pas de chance
  • combien de texte crypté et de texte en clair vous avez - le plus sera le mieux
  • de quel type de données il s'agit - le texte simple est le plus facile, alors que les données aléatoires sont les plus difficiles
  • si les données sont toutes cryptées avec la même clé ou si plusieurs clés ont été utilisées.

La clé du succès est de ne pas être découragé; l'histoire de la cryptanalyse est remplie d'histoires de codes prétendument incassables en train d'être déchiffrés; La machine la plus célèbre est peut-être la machine Enigma datant de la Seconde Guerre mondiale, dont la fissuration a contribué au développement des ordinateurs modernes.

Nous pouvons dire quelques choses à partir de ce que vous avez fourni:

  • Avec une longueur de texte crypté de 7 octets dans chaque cas, il est peu probable qu'il s'agisse d'un chiffrement par bloc (puisque les chiffreurs par bloc chiffrent un bloc à la fois, leur longueur sera un multiple de la taille de bloc, et une taille de bloc de 56 bits est jolie. peu probable *).
  • La longueur du texte chiffré et le nombre de caractères dans le texte en clair sont identiques dans chaque cas. Il pourrait donc s'agir d'un codage simple de nombres en tant qu'ascii avec un codage par flux appliqué.
  • XORing le texte en clair (ascii) et le texte chiffré ne donne ensemble ni un seul octet répété ni le même flux crypté, donc ce n'est pas un chiffre trivial. Ce n'est pas non plus un simple chiffrement de flux utilisant la même clé pour les deux, à moins que certains octets de texte chiffré ne soient un IV.
  • Les deux derniers octets sont identiques en texte crypté mais pas en texte brut. Cela pourrait être une coïncidence mais aussi une indication du rembourrage que vous suggérez. S'ils remplissent, il faut utiliser un autre mécanisme d'encodage.

Savez-vous si toutes les valeurs chiffrées sont des entiers ou si d'autres valeurs sont également possibles?

Déterminer l'algorithme utilisé sans la clé correspondante peut ne pas être entièrement utile.

Si le texte est suffisamment petit et que vous avez le texte en clair, pourquoi voudriez-vous le découvrir? Autre que, bien sûr, par curiosité?

Il n'y a pas de moyen déterministe de le savoir, mais il y a souvent des allusions dans le texte chiffré. Est-ce vraiment crypté (avec une sorte de clé)? Ou est-ce juste haché et (éventuellement) salé.

S'il est haché, vous pouvez avoir de la chance et simplement rechercher Google pour une paire correspondante (en supposant que vous ayez des mots du dictionnaire) car il existe déjà des dictionnaires pré-hachés.

Si vous avez un exemple de texte chiffré, vous pouvez le poster, quelqu'un pourrait reconnaître le format de chiffrement ...

Je pense que c'est une idée fausse que XOR est un schéma facile à déchiffrer. La forme de cryptage la plus puissante en théorie est un tampon à usage unique: il s’agit simplement d’une chaîne de bits prédéterminés avec lesquels vous ...

XOR finis, d’autre part ...

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