web-dev-qa-db-fra.com

Est-ce une coïncidence si les 4 premiers octets d'un fichier PGP / GPG sont des points de suspension, un sourire, un signe féminin et un cœur?

Comme le titre l'indique, ces 4 octets ont-ils un sens (je suppose qu'ils le font car, apparemment, le sourire change en fonction du témoin clé)?

Les deux fichiers ci-dessous ont été chiffrés avec les différentes clés, mais dans la même clé ces 4 octets sont toujours les mêmes.

Si ces 4 octets sont toujours les mêmes, existe-t-il un moyen intégré dans PGP/GPG pour empêcher un attaquant de savoir quel fichier il a pu obtenir/intercepter, autre que supprimer ces octets en transit et les recréer à destination?

enter image description hereenter image description here

42
ajeh

Oui, c'est une coïncidence que les premiers octets vous apparaissent comme ces symboles. Ils font partie de la spécification du format de message OpenPGP ( RFC 488 ) et varient en fonction des propriétés du paquet.

Créons un fichier contenant uniquement ces octets et essayons de le lire comme un message GPG:

 $ echo "\ x85\x02\x0c\x03"> foo.gpg && gpg --list-packets foo.gpg 
 # off = 0 ctb =85 tag = 1 hlen = 3 plen =524
: paquet enc clé de pub: version 3, algo 255, keyid 0AFFFFFFFFFFFFFF 
 algorithme non pris en charge 255 
  • Le premier octet (0x85 = 0b10000101) est l'octet de type de chiffrement (CTB) qui décrit le type de paquet. Nous pouvons le décomposer comme suit:
    1: Bit indicateur CTB
    0: ancien format de paquet (voir RFC 1991 )
    0001: paquet chiffré par clé publique
    01: le champ de longueur de paquet est long de 2 octets

  • Les deuxième et troisième octets indiquent la longueur du paquet (0x020c = 524).

  • Le quatrième octet (0x03) signifie qu'il est au format de paquet de la version 3.

Comme vous pouvez le voir, ces octets sont des constantes de nombre significatives et non magiques que vous pouvez supprimer sans perdre d'informations. Si vous les coupez, vous corrompez le paquet GPG et il vous faudra des conjectures pour le reconstruire.


Les octets sont affichés sous forme de smileys et de coeurs car c'est ainsi que votre terminal (probablement DOS) affiche les caractères de contrôle non imprimables. Dans les jeux de caractères qui proviennent de page de codes 437 , les octets faibles en dehors de la plage imprimable ASCII sont traditionnellement représentés sous forme d'icônes. Voici l'original CP437 sur un PC IBM:

enter image description here

(Source de l'image)

67
Arminius

En règle générale, les formats de fichiers binaires bien conçus¹ auront leurs premiers octets sous la forme d'un nombre magique identifiant le format. Les quatre premiers octets des exécutables ELF sont toujours 7f 45 4c 46, les huit premiers octets des fichiers PNG sont toujours 89 50 4e 47 0d 0a 1a 0a, etc. Les formats de fichiers bien conçus cryptés suivront toujours ce nombre magique avec un "en-tête" non crypté qui révèle l'algorithme de cryptage, la longueur des données cryptées, les choses comme ça.

Ceci n'est normalement pas considéré comme une vulnérabilité de sécurité, en raison de principe de Kerckhoffs , qui dit qu'un cryptosystème doit être sécurisé même si l'attaquant sait tout ce que l'en-tête du fichier peut leur dire (comme l'algorithme).

Il est possible de concevoir un format de fichier ou un protocole, dont tous les octets ne peuvent pas être distingués du hasard à moins que vous ne connaissiez déjà la clé de déchiffrement, mais c'est étonnamment difficile (saviez-vous que le chiffrement de la longueur attendue des données chiffrées peut introduire une vulnérabilité ?) et qu'il ne gagne pas réellement vous quoi que ce soit. Un fichier qui ne se distingue pas complètement de la sortie de cat /dev/random sera tout aussi suspect pour la police secrète qu'un fichier évidemment chiffré par GPG. Peut-être plus suspect, même, car il existe toutes sortes de raisons inoffensives pour crypter des fichiers.

Si vous craignez qu'un attaquant apprenne simplement que vous utilisez le cryptage pour communiquer avec quelqu'un, vous avez besoin de stéganographie , qui cache des informations secrètes dans ordinaire - fichiers non cryptés à la recherche. Soyez conscient que l'état de l'art en stéganographie n'est pas aussi sophistiqué que l'état de l'art en cryptographie; la dernière fois que j'ai vérifié, toutes les approches connues étaient cassables par un adversaire déterminé. (Si la première impression de la police secrète est "oh, c'est une carte mémoire pleine de photos de vacances", elle pourrait ne pas prendre la peine de creuser plus profondément ... à moins qu'elle n'ait déjà une raison de vous soupçonner.)


¹ Je n'ai aucune opinion sur la bonne conception du format de fichier GPG.

16
zwol