Cryptanalyse de messages OpenPGP par l’exploitation de fragilités cryptographiques du format


Les laboratoires de l’ANSSI publient une nouvelle cryptanalyse du format de messages OpenPGP. Des précautions sont nécessaires lorsque des bibliothèques cryptographiques basées sur ce format sont employées.

L’ANSSI a étudié le format de messages OpenPGP, normalisé par la RFC 4880. Les résultats démontrent deux fragilités théoriques. Trois solutions libres implémentant ce format, GnuPG, OpenPGP.js et End-to-End, ont été analysées afin d’évaluer l’impact opérationnel.

La première fragilité permet à un attaquant de modifier des messages chiffrés, à l’aveugle, sans que ces derniers soient rejetés d’emblée pendant le déchiffrement. À la place, les solutions étudiées retournent des messages d’erreur distinctifs lors du déchiffrement de messages malformés. Si le déchiffrement de messages est automatisé, un attaquant peut soumettre plusieurs messages chiffrés, variant chacun de seulement quelques bits. Chaque message soumis lui permet alors de récupérer, peu à peu, des informations sur un message chiffré ciblé par l’intermédiaire des erreurs renvoyées. Le message original peut ainsi être retrouvé, sans disposer de la clé de déchiffrement*.

L’autre fragilité concerne une protection que la RFC 4880 a introduite pour prévenir l’altération des messages par un attaquant. L’ANSSI a découvert qu’elle pouvait être contournée. Un attaquant peut en effet convertir le message protégé en un message d’une version antérieure du format, non protégée, et mener l’attaque comme précédemment. En outre, et même sans tenir compte de cette fragilité, certaines solutions ont implanté la protection de manière incorrecte. Dans ces cas, la protection participe, de façon contreproductive, à fournir à l’attaquant de l’information sur les messages.

En vue de prévenir l’exploitation de ces fragilités par des attaquants, l’ANSSI a pris contact avec les équipes des trois solutions étudiées, lesquelles ont confirmé ces découvertes. GnuPG et End-to-End ont documenté le risque associé au traitement automatisé de messages OpenPGP. Les solutions End-to-End et OpenPGP.js ont par ailleurs été modifiées afin de limiter le risque, sans pour autant le réduire à néant. L’ANSSI a d’ailleurs présenté ces résultats à la conférence internationale de cryptographie CT-RSA, le 22 avril 2015.

Cette étude montre que le déchiffrement automatisé de messages OpenPGP est très délicat à mettre en œuvre. L’approche recommandée consiste donc à demander à l’utilisateur une confirmation manuelle pour chaque opération de déchiffrement. Les multiples opérations déclenchées par l’attaquant pourront alors alerter l’utilisateur vigilant. Si le déchiffrement automatisé de documents OpenPGP est malgré tout implanté, il convient de :
Éviter de retourner de messages d’erreur révélant la nature exacte de l’erreur à l’expéditeur du document chiffré. Si la nature exacte de l’erreur est inscrite dans un journal d’évènements, il convient de s’assurer que l’attaquant ne pourra pas y avoir accès. Il suffirait de retourner un message d’erreur générique, sans précision de sa nature exacte.
Éviter de signifier le résultat du déchiffrement instantanément, afin d’éviter les fuites d’information temporelles. Le résultat du déchiffrement peut-être soit mis à disposition à intervalle prédéfini, ou bruité, si des précautions sont prises pour éviter les attaques statistiques.

 

Pour aller plus loin :
Consulter la publication scientifique Format Oracles on OpenPGP

 

*Il convient de noter que d’autres méthodes d’exploitation, nommées « attaques temporelles », étudient les variations de durée d’exécution du programme de déchiffrement, afin de récupérer des informations sur le message ciblé.