FireGPG n'est plus livré dans Tails.
Vous devriez plutôt utiliser notre Applet GPG pour :
- Chiffrer du texte avec une phrase de passe
- Chiffrer et signer du texte avec une clé publique
- Déchiffrer et vérifier du texte
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 :
- 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.
- 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être
est 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. - L'option
toujours_afficher_dans_une_nouvelle_fenêtre
devrait être retirée -- son action devrait être le comportement par défaut et obligatoire. - 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
[tor-talk] Tor Browser Bundle: PGP encryption built-in?
Un fil de discussion sur la liste [tor-talk] au sujet des soucis du maintien de GPG dans un navigateur web.Corrompre les signatures OpenPGP grâce à FireGPG
Une autre attaque possible contre FireGPG.
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.