Comment télécharger un fichier en vérifiant son empreinte via aria2

Comment télécharger un fichier en vérifiant son empreinte via aria2

En attendant que les navigateurs se bougent

Avatar de l'auteur
David Legrand

Publié dans

Logiciel

24/04/2019 3 minutes
25

Comment télécharger un fichier en vérifiant son empreinte via aria2

Télécharger un fichier, c'est bien. Vérifier son intégrité, c'est mieux. Mais rares sont les outils proposant les deux, c'est le cas d'aria2, en une seule ligne de commande.

Lorsque vous téléchargez un fichier depuis un serveur, il y a deux questions à vous poser : puis-je avoir confiance en l'émetteur et les données récupérées sont-elles les bonnes ?

Pour le vérifier, deux solutions s'offrent à vous. Dans le premier cas, la signature utilisée. Créée via la clé privée de l'émetteur du fichier, elle permet de s'assurer de la provenance à travers sa clé publique. Pour l'intégrité des données, on utilise une empreinte ou somme de contrôle (hash, checksum) prenant la forme d'une suite de caractères.

Mais si c'est à travers les navigateurs que l'on télécharge le plus souvent des fichiers, ils n'intègrent aucune mécanique de vérification de la provenance ou de l'intégrité des données une fois téléchargées. Seulement un chiffrement du canal de communication lorsque SSL/TLS est actif.

Le standard Metalink aurait pu favoriser un tel dispositif, mais il n'a jamais été intégré. Cinq mois après notre article sur le sujet et une intervention dans le bugtracker de Mozilla, son support par Firefox n'est toujours pas au programme. Il faut donc faire autrement, et utiliser de petits outils qui facilitent la procédure.

C'est le cas d'aria2, un outil de téléchargement en ligne de commande multiplateforme. Il vérifie l'empreinte d'un fichier créée via différents algorithmes (Adler32, MD5, SHA-1/224/256/512) après son téléchargement sans utiliser une mécanique en deux étapes comme les pipes.

La commande prend la forme suivante :

aria2c [nom du fichier] --checksum=[algorithme]=[empreinte]

Prenons l'exemple de la dernière ISO d'installation par le réseau de Fedora 30 Workstation 64 bits, proposée sur cette page. On trouve le fichier à cette adresse, les sommes de contrôle (SHA-256) dans ce fichier texte.

On arrive donc à la commande suivante :

aria2c https://download.fedoraproject.org/pub/fedora/linux/releases/test/30_Beta/Workstation/x86_64/iso/Fedora-Workstation-netinst-x86_64-30_Beta-1.8.iso --checksum=sha-256=9509becb586920a48f7c6518fba00c15707970b72aac15d2c29639738ecc4a11

Une fois la procédure terminée, le fichier sera vérifié et un message correspondant au résultat affiché. Une fonctionnalité intéressante, même si l'on aimerait qu'elle soit plus courante et directement intégrée aux navigateurs.

Surtout que dans le cas du protocole Metalink, plusieurs empreintes peuvent être déclarées, chacune correspondant à un morceau du fichier à récupérer. Ainsi, lorsqu'un élément n'est pas conforme, seule la partie défaillante peut être à nouveau téléchargée et remplacée, permettant un gain de temps.

aria2c  empreinte checksumaria2c  empreinte checksum

25

Écrit par David Legrand

Tiens, en parlant de ça :

Sommaire de l'article

Introduction

Le brief de ce matin n'est pas encore là

Partez acheter vos croissants
Et faites chauffer votre bouilloire,
Le brief arrive dans un instant,
Tout frais du matin, gardez espoir.

Commentaires (25)


Est vraiment utile de vérifier un fichier  s’il a été téléchargé en HTTPS. TCP devrait être suffisant pour garantir l’intégrité et l’authenticité est garanti par TLS.


@millman42: HTTPS garantit l’échange de données, pas les données. Si le site où tu télécharges a été corrompu ou hacké, tu télécharges un malware de façon sécurisé via HTTPS…


@millman42 Et surtout as tu vérifié au préalable que, malgré le protocole https et sûrement le joli cadenas dans ton navigateur, que le certificat émis était le bon ? Qu’il était attribué au bon nom de domaine ? Que tu ne passait pas à travers un p%*$^de proxy d’entreprise qui pète le chiffrement de bout en bout ? etc, etc, etc.


Certes, mais si le site a été hacké, qu’est-ce qui empêche le hackeur, qui aura donc été capable de remplacer le fichier, de modifier aussi le hash indiqué sur la page?


Si le fichier a été modifier dans un dépôt, le hacker n’a pas forcément l’accès au site de “présentation”.


Je vois pas l’intéret de l’outil quand PowerShell propose depuis la version 4.0 la fonction Get-FileHash. C’est aussi rapide et ça évite de télécharger un programme inutile


bah c’est simple: plein de gens n’utilisent pas powershell, parait-il même qu’il y a des gens qui n’utilisent pas windows du tout


N’importe quel OS fait du calcul d’empreinte depuis un bail, là l’idée c’est de permettre de tout faire en une étape. Je n’ai pas souvenir que ce soit possible sous PS avec une ligne de commande simple à retenir, pas plus que Get-File-Hash ne permet de télécharger un fichier (heureusement maintenant il y a curl, à quand wget ? <img data-src=" />)



PS : on a déjà rédigé un papier où on détaille ce que fait aria2, loin d’être inutile ;)


Je trouve ça dommage de devoir préciser le hash utilisé, une petite regex pourrait facilement reconnaître le type de hash automatiquement 🙁


On est bien d’accord que si la source n’a pas publié l’empreinte source de son fichier,&nbsp; cette manip ne sert à rien ?


Oui, le but étant de vérifier l’empreinte par rapport à ce que la source annonce. On peut par exemple s’étonner de ne pas voir de grand constructeur signer ou publier les empreintes de ses pilotes diffusés en ligne par exemple, ça montre bien le niveau ambiant de jmenfoutisme sur le sujet.


C’est bien ce qui me semblait. La seule fois où j’ai vu des signatures fournies par la source, c’était sur les images Linux et quelques sites de warez…








Bhou a écrit :



@millman42: HTTPS garantit l’échange de données, pas les données. Si le site où tu télécharges a été corrompu ou hacké, tu télécharges un malware de façon sécurisé via HTTPS…





Si le site est hacké le hash est également hacké. Il faudrait utiliser un mécanisme de signature pour éviter ce problème à condition d’avoir déjà la clé publique ou utiliser un certificat garanti par une autorité de confiance.



&nbsp;



Arnaud Minable a écrit :



@millman42 Et surtout as tu vérifié au préalable que, malgré le protocole https et sûrement le joli cadenas dans ton navigateur, que le certificat émis était le bon ? Qu’il était attribué au bon nom de domaine ? Que tu ne passait pas à travers un p%*$^de proxy d’entreprise qui pète le chiffrement de bout en bout ? etc, etc, etc.



&nbsp;

Dans ce cas là en quoi vérifier un hash change quelque chose ? Si on ne peut pas garantir l’authenticité de fichier télécharger il y a de grand de chance qu’il en soit de même pour le hash.

&nbsp;



Tu l’as pour pas mal d’applications tout de même, mais plus courant pour les ISO en général oui. Et comme les sites de téléchargement se préoccupent plus de leurs pages vues que de la sécurité ou du service aux utilisateurs… <img data-src=" />


Juste pour info, j’ai également remonté la demande de Metalink dans Vivaldi. Sans action jusqu’à présent.


Ils attendent peut être que ça arrive dans Chromium <img data-src=" />


C’est la manière la plus simple d’avoir de nouvelles fonctionnalités dans Vivaldi, en effet <img data-src=" />


Malheureusement, dès que “en ligne de commande” est précisé, c’est déjà quelque chose qui ne percera pas chez le grand public …

Perso je me suis fait un petit script en applescript pour faciliter la vérification, clic droit &gt; vérifier le somme MD5/SHA &gt; coller la somme &gt; résultat

Par contre il serait très possible de faire une extension de navigateur qui pop au moment du clic sur un lien de téléchargement et qui proposerait de faire la vérification en utilisant cet outil, non ?


ça doit être jouable, après comme dit, l’idéal ce serait que Metalink soit utisé parce qu’ils permet de récupérer un fichier et ses infos complémentaire pour une utilisation dans un outil compatible (ce que pourrait être un navigateur) : empreinte, signature, différentes sources HTTP/Bittorent, etc.&nbsp;








millman42 a écrit :



Si le site est hacké le hash est également hacké. Il faudrait utiliser un mécanisme de signature pour éviter ce problème à condition d’avoir déjà la clé publique ou utiliser un certificat garanti par une autorité de confiance.



  

Dans ce cas là en quoi vérifier un hash change quelque chose ? Si on ne peut pas garantir l’authenticité de fichier télécharger il y a de grand de chance qu’il en soit de même pour le hash.







Sur pas mal de site, les fichiers “à télécharger” sont héberger sur des plateformes prévu pour ça. Donc si le dépôt se fait pirater, ça ne veut pas dire que le site principale l’est.



Par exemple, je peux avoir mon petit site web sur un web plan de n’importe quel hébergeur à quelques euros par an pour un petit trafic, avec des pages dynamiques et une bases de données. Et héberger mes gros fichiers sur AWS car le tarif est plus intéressant.









smileyn a écrit :



Malheureusement, dès que “en ligne de commande” est précisé, c’est déjà quelque chose qui ne percera pas chez le grand public …

Perso je me suis fait un petit script en applescript pour faciliter la vérification, clic droit &gt; vérifier le somme MD5/SHA &gt; coller la somme &gt; résultat

Par contre il serait très possible de faire une extension de navigateur qui pop au moment du clic sur un lien de téléchargement et qui proposerait de faire la vérification en utilisant cet outil, non ?





Le maintenant disparu Download StatusBar dans Firefox le permettait.