FireGPG n'est plus livré dans Tails.

Vous devriez plutôt utiliser notre Applet GPG pour :

Avertissement

FireGPG est une extension de Firefox qui permet d'utiliser facilement la cryptographie sur le contenu de pages HTML, par exemple pour vérifier des signatures qui apparaissent comme du texte HTML, ou pour chiffrer du texte écrit dans une fenêtre de texte HTML (<textarea>). Les interfaces webmail utilisent généralement ces fenêtres de texte pour écrire un email, c'est pourquoi FireGPG est l'outil idéal pour cet usage : l'utilisateur écrit son email dans la fenêtre de texte, le sélectionne et choisit l'action "Chiffrer" ou "Signer et chiffrer", disponibles depuis le menu FireGPG, pour transformer le texte en clair en texte chiffré.

La conception de FireGPG nous assure être sûre, alors qu'elle ne l'est pas, étant donné que le JavaScript tournant sur la page peut toujours contrôler et observer la plupart des choses qui s'y passent. Par exemple, un simple script peut mettre en place un minuteur qui transmet sans notification le contenu de la fenêtre de texte à un serveur, ceci chaque seconde, transmettant ainsi le texte en clair à mesure qu'il est écrit, outrepassant donc toute forme de chiffrement. Dans les faits, de nombreux webmails bien intentionnés le font à intervalles réguliers, pour sauvegarder un brouillon du message au cas où le navigateur web de l'utilisateur planterait. Le seul moyen pour l'utilisateur d'empêcher ce type d'attaques est d'interdire complètement le JavaScript, ce qui n'est pas toujours souhaitable. FireGPG ne fait rien à l'heure actuelle pour prévenir ses utilisateurs de ce souci. Au contraire, en rendant le chiffrement facilement accessible dans le menu FireGPG, il promeut cet usage non sûr.

La situation est exactement la même si un utilisateur déchiffre un bloc OpenPGP dans une fenêtre de texte : le bloc OpenPGP est remplacé par le texte en clair dans cette même fenêtre, le même script peut donc récupérer le texte en clair quand le minuteur se déclenche moins d'une seconde plus tard. Heureusement, les webmails présentent rarement les messages dans des fenêtres de texte (bien que les 'pastebins' le font souvent). Les emails reçus sont plus fréquemment affichés en tant que texte HTML, et quand l'utilisateur le déchiffre, FireGPG affiche le texte déchiffré dans une fenêtre séparée qui est hors de portée du JavaScript. Dans la fenêtre des options de FireGPG se trouve l'option extensions.firegpg.result_always_in_new_window, qui s'appelle "Toujours afficher le résultat du chiffrement ou de la signature dans une nouvelle fenêtre", qui oblige FireGPG à agir ainsi même quand il s'agit de déchiffrer un bloc OpenPGP dans une fenêtre de texte, mais cette option n'est pas cochée par défaut. De toute façon, cette option ne protège d'aucune manière contre la récupération de texte lorsque que l'utilisateur/ice écrit son message, comme décrit dans le paragraphe précédent.

FireGPG a également trois possibilités pour signer (mais sans chiffrer) des messages : "Signer en clair", "Signature découpée" et "Signer". Un programme JavaScript basique peut remplacer le contenu de la fenêtre de texte quand l'utilisateur le sélectionne, donc si l'utlisateur ne relit pas le texte après avoir sélectionné une de ces trois possibilités de signature, l'attaquant sera capable d'obtenir la signature de l'utilisateur depuis un message arbitraire. L'option toujours_afficher_dans_une_nouvelle_fenêtre ne protège pas contre cette attaque ; seule la vigilance de l'utilisateur peut être en mesure de la détecter et de l'empêcher.

Il est évident que le design actuel de FireGPG pour pratiquer le chiffrement et la signature du contenu de boîtes de texte est fondamentalement mauvais et impossible à sécuriser. Ce design entraîne les utilisateurs/ices à agir comme si le contenu des boîtes de texte était privé jusqu'à ce qu'il soit explicitement envoyé (en pressant le bouton "Envoyer" ou "Écrire"). Donc :

  1. Il est nécessaire que toutes les actions de chiffrement et de signature soient retirées du menu de FireGPG. La seule manière de les exécuter devrait être via l'éditeur de texte de FireGPG, qui se situe dans une fenêtre séparée, et donc à l'abri du JavaScript. L'éditeur de texte de FireGPG est déjà disponible dans le menu FireGPG et rend toutes ces actions facilement accessibles.
  2. FireGPG devrait dire de manière explicite que son éditeur de texte est le seul moyen sûr pour écrire un texte en clair devant être chiffré et/ou signé, ou pour déchiffrer des messages, sauf si l'option toujours_afficher_dans_une_nouvelle_fenêtreest cochée. Ceci pourrait permettre aux utilisateurs, induits en erreur par FireGPG depuis des années, de ne plus exposer leurs données à de tels risques, et leur faire comprendre pourquoi cette nouvelle, certes moins pratique, manière de faire est nécessaire. Autrement, ils risquent de continuer à écrire leurs textes en clair dans des fenêtres de textes accessibles au JavaScript, et ensuite le copier-coller dans l'éditeur de texte de FireGPG pour le chiffrer, au lieu de l'écrire à cet endroit depuis le début.
  3. L'option toujours_afficher_dans_une_nouvelle_fenêtre devrait être retirée -- son action devrait être le comportement par défaut et obligatoire.
  4. La commande "Vérifier" devrait afficher le contenu des messages signés dans l'éditeur de texte de FireGPG. Autrement, il est possible d'afficher à l'utilisateur un message différent de celui donné à FireGPG.

Après ces modifications, les seuls actions restantes dans le menu de FireGPG seront "Déchiffrer" et "Vérifier". "Déchiffrer" est sûr grâce au changement 3, et "Vérifier" est rendu sûr par le changement 4. Il peut être pertinent de supprimer également ces actions du menu, afin de promouvoir l'utilisation de l'éditeur de texte de FireGPG pour tout ce qui concerne la cryptographie. Si elles sont en effet supprimées, les points 3 et 4 deviennent non pertinents et peuvent être ignorés. Dans une discussion sur

tor-dev et ensuite sur #tails avec rransom et katmagic il est apparu que

FireGPG pouvait avoir de sérieux problèmes de sécurité et d'anonymat (katmagic alla même jusqu'à assurer être sûr à "85%" que ces problèmes font partie des principales raisons de l'interruption du développement de FireGPG) :

Exemples d'attaques

<html>
    <head>
        <script type="text/javascript">
            function decrypt() {
                var elem = document.getElementById("pgp_msg");

                if (elem.innerHTML != elem.value) {
                    elem.innerHTML = elem.value;
                    alert(elem.value);
                }
            }
            window.setInterval(decrypt, 1000);
        </script>
    </head>

    <body>
<textarea id="pgp_msg" style="height: 600px; width: 600px">
-----BEGIN PGP MESSAGE-----
<snip>
-----END PGP MESSAGE-----
</textarea>
    </body>
</html>

Une méthode similaire pourrait aussi fonctionner pour récupérer un texte écrit dans une fenêtre de texte avant son chiffrement.

Autres ressources

Autres soucis possibles

S'il est possible d'utiliser JavaScript pour vérifier des signatures, un attaquant pourrait potentiellement découvrir le trousseau de clés complet d'un utilisateur en rejouant des messages signés. Ceci donnerait à l'attaquant un très grand nombre de bits d'informations, identifiant l'utilisateur.