Metalink, aria2 et uGet : le téléchargement, autrement

Yakafokon
Metalink, aria2 et uGet : le téléchargement, autrement

Pour télécharger un fichier en toute sécurité, il faudrait penser à vérifier son intégrité et sa provenance. Des procédures souvent mises de côté, alors que des outils clé en main existent. Ils ont en plus l'avantage d'être open source et très efficaces. 

Lorsque vous voulez télécharger un fichier accessible sur internet, vous passez en général par votre navigateur. Ces derniers gèrent pour cela quelques protocoles de base, FTP disparaissant peu à peu

Les gestionnaires de téléchargement sont une manière d'améliorer les choses. Ils ont pour principal avantage de centraliser leur gestion (parfois au niveau d'un NAS), de proposer des fonctionnalités complémentaires et parfois « d'accélérer » la procédure en découpant le fichier à télécharger en de multiples morceaux/connexions.

Pour certains protocoles comme BitTorrent, qui ne sont que rarement supportés, il faut souvent se tourner vers des clients tiers. La face visible d'un malaise plus profond dans l'évolution de nos téléchargements.

Efficacité, sécurité : peut mieux faire

 

En effet, le téléchargement en ligne a toujours été « bête » et finalement peu sécurisé. Il s'organise le plus souvent depuis une source unique, sans vérification de l'intégrité du fichier une fois la procédure terminée. Ne parlons même pas d'une vérification de signature numérique, qui permettrait de s'assurer de sa provenance. 

C'est notamment pour cela que la pratique des boutiques applicatives (ou Stores) s'est développée ces dernières années, avec la promesse d'une recherche centralisée, de mises à jours automatiques et autres sources identifiées. Cela n'empêche bien entendu pas la propagation de malwares, mais c'est un bon début.

Les systèmes d'exploitation libres ont pourtant fait depuis longtemps des choix intéressants dans ce domaine, en proposant une diversité dans les sources d'approvisionnement. Le cas d'APT dans le monde Debian est un bon exemple avec une liste de dépôts que l'utilisateur peut compléter avec une gestion de clés publiques permettant de vérifier les signatures. 

APT

Ainsi, on peut télécharger et installer simplement de nombreuses applications, depuis différents serveurs (miroirs), mais aussi les mettre à jour. Le tout avec une vérification de leur intégrité et provenance à travers une signature cryptographique, ce qui permet d'éviter les principaux problèmes de sécurité.

Certains tentent d'aller plus loin, en reproduisant la mécanique des Stores de manière plus ouverte. C'est notamment le cas de Canonical qui travaille sur les Snaps, des packages pour Ubuntu et 40 autres distributions, ou de Flatpak. De son côté, AppImage se concentre sur la création de packages « qui tournent partout », sans mode de distribution particulier.

Mais voilà : lorsque vous téléchargez l'exécutable d'une application, l'image ISO de votre système d'exploitation préféré, une vidéo ou même un simple document, rien de tout cela n'est utilisé, pas même une petite protection.

Metalink, une solution (malheureusement) délaissée

Pourtant, calculer l'empreinte (hash) d'un fichier ou le signer n'est guère complexe. Pas plus que de mettre ces informations à disposition puisque tout est fait pour qu'elles puissent être échangées en format texte. On pourrait alors se dire que c'est parce que rien n'a jamais été standardisé : encore raté.

Le format Metalink existe depuis plus de dix ans et a fait l'objet de deux Request for Comments auprès de l'IETF : la RFC 5854 pour sa description générale et la RFC 6249 pour l'intégration aux headers HTTP. Un site est consacré au projet, on peut y trouver la description de la version 3.0 (la dernière étant la 4.0) et une liste d'implémentations

Mais depuis 2010/2015, le projet n'est plus très actif, malgré ses multiples intérêts. Même constat pour des outils annexes tels que MirrorBrain, qui devait en faciliter l'usage côté serveur. Pourtant, on peut encore en tirer parti. 

Metalink Exemple Slackware
Un fichier Metalink permettant de télécharger l'ISO de Slackware Linux

Mais qu'est-ce que Metalink ? Un fichier comprenant des métadonnées et basé sur le format XML (ou d'une réponse HTTP). Son objectif : connaître, pour un fichier, des informations de base (nom, taille, version, description) et une liste de miroirs, de sommes de contrôle (hash) et/ou sa signature.

Plusieurs types de liens peuvent être fournis via des protocoles comme FTP, HTTP et BitTorrent. Deux précisions principales peuvent être apportées : le pays où se situe le serveur et son ordre de priorité.

Dans l'idéal, ces informations évoluent selon l'emplacement de l'utilisateur. L'idée de départ de Metalink était en effet de favoriser l'émergence d'une solution de type CDN (Content Delivery Network) tout en exploitant la galaxie de miroirs que l'on trouve dans le domaine de l'open source. OpenSUSE était l'un de ses promoteurs (voir ci-dessous). 

Ainsi, lorsqu'il veut par exemple télécharger l'ISO d'une distribution, un utilisateur n'a en théorie qu'à récupérer le fichier Metalink, son gestionnaire de téléchargement peut ensuite décider quels miroirs utiliser, s'il ne faut pas plutôt basculer sur un lien BitTorrent, et vérifier à la fois l'intégrité et l'origine du fichier une fois l'opération terminée.

Une solution tout de même préférable au fait de placer hash et autres signatures dans des fichiers tiers, à récupérer manuellement et à vérifier individuellement via différents outils, comme trop souvent aujourd'hui.

  • Metalink ApachCon 2008
  • Metalink ApachCon 2008
  • Metalink ApachCon 2008
  • Metalink ApachCon 2008
  • Metalink ApachCon 2008
  • Metalink ApachCon 2008
  • Metalink ApachCon 2008

Qui utilise Metalink (ou ses alternatives) ?

On aurait pu imaginer que des acteurs du monde du logiciel libre, tels que Mozilla, allaient s'emparer d'une telle possibilité, mais cela n'a malheureusement jamais été le cas. Certains ont bien proposé une intégration à Firefox il y a 13 ans déjà, sans succès malgré quelques relances. La plus récente a trois ans.

Certaines distributions exploitent quand même Metalink et le proposent pour le téléchargement de leurs ISO, notamment Ubuntu (voir cet exemple). Mais le fichier fourni se repose toujours sur la version 3.0 du standard et des sommes de contrôle MD5 (qui ne sont plus considérées comme sûres depuis des années). 

Slackware propose de son côté des fichiers Metalink en versions 3.0 et 4.0 (voir cet exemple). Ils sont cette fois bien plus complets avec une signature GnuPG, des empreintes MD5, SHA-1 et SHA-256 et même l'utilisation de l'élément pieces (SHA-1) qui permet de déclarer un hash pour un ensemble de portions contiguës du fichier.

Debian et Ubuntu ont fait le choix de Jigdo (Jigsaw Download) ou Zsync qui permettent de compléter un téléchargement depuis une ancienne version où certains fichiers n'auraient pas été modifiés (comme les versions quotidiennes). Mais ils ne prennent pas directement en compte la signature cryptographique du fichier par exemple. 

Jigdo a également la spécificité de télécharger les paquets depuis différents miroirs puis d'effectuer une reconstruction locale de l'image ISO à la fin de la procédure, ce qui limite le besoin de stocker de gros fichiers dans les miroirs.

Peu d'applications gèrent Metalink

Se pose ensuite la question du client de téléchargement. Comme nous avons pu le voir, Metalink n'est pas géré par les navigateurs. Il existe bien une extension Chrome, mais elle n'a pas été mise à jour depuis 2013 et ne semble pas fonctionner correctement. Il faut donc se tourner vers des applications tierces. 

Et malheureusement, rares sont les gestionnaires de téléchargement à être encore maintenus activement, d'autant plus lorsqu'il s'agit de solutions open source. DownThemAll! est un exemple du genre, l'extension n'ayant toujours pas été portée au format WebExtension, afin de fonctionner avec  les nouvelles versions de Firefox.  

cURL, un outil très utilisé par les développeurs, permet de télécharger les fichiers Metalink : 

curl --metalink http://lelien.extension

Il ne fonctionnera pas toujours. Par exemple, le portage effectué par Microsoft pour Windows 10 ne gère pas cette possibilité, un message d'erreur étant simplement affiché.

Même des outils récents comme EagleGet, Free Download Manager ou le gestionnaire de téléchargement intégré à des NAS QNAP ou Synology ne reconnaissent pas les fichiers et ne peuvent donc exploiter leur contenu. Il existe néanmoins une solution simple à utiliser, multiplateformes et utile au-delà de Metalink : aria2.

aria2 : le client pour les télécharger tous

Derrière ce nom se cache un outil discret, mais utilisé par un nombre croissant d'applications pour gérer leurs procédures de téléchargement. Il faut dire qu'il est diablement efficace, paramétrable et surtout très complet.

Léger (moins de 4 Mo) il gère aussi bien les liens HTTP(S) que (S)FTP, BitTorrent ou Metalink. Il peut découper un téléchargement, ce qui s'avère utile si vous utilisez de multiples connexions, le mettre en pause, utiliser plusieurs sources pour un même fichier, plusieurs connexions pour une même source, récupérer des fichiers depuis une liste, etc.

aria2

Il s'utilise en ligne de commande ou via des interfaces JSON-RPC/XML-RPC (Remote Procedure Call). Il est disponible sous Linux, OS X, Windows et même Android. Vous pouvez également en tirer parti via des outils tiers tels qu'apt-fast sous Ubuntu. Pour ceux qui préfèrent les interfaces graphiques, WebUI-aria2 peut être une solution. 

Attention tout de même : si les signatures sont bien récupérées, elles ne sont pas vérifiées par le client, qui laisse ce soin à l'utilisateur ou à des applications tierces. Les empreintes peuvent l'être (-V ou --check-integrity).

uGet pour vous simplifier la vie

uGet est une alternative open source et multiplateforme. Disponible dans les dépôts de nombreuses distributions Linux, ce gestionnaire de téléchargement est également proposé sous Android, BSD et Windows. Il se récupère parfois de manière indépendante d'aria2, tout comme son pack de langues (au format 7z). On a vu plus pratique.

Sous Windows, une fois les fichiers décompressés, l'exécutable se trouve dans le répertoire bin de l'application. Le pack de langues est à placer dans le répertoire share. Les paramètres sont complets, permettant d'adapter l'interface (GTK3), surveiller la présence de certaines extensions de fichiers dans le presse-papiers pour un téléchargement automatique, limiter la bande passante, n'activer le téléchargement que de telle à telle heure, tels ou tels jours, etc. 

uGet

Pour chaque téléchargement vous pourrez définir une catégorie, une priorité, des miroirs, un nombre maximal de connexions, quelques paramètres techniques comme la récupération de l'horodatage, un proxy, des identifiants ou même un cookie de session. Aria2 sera à sélectionner en remplacement de cURL dans les paramètres de plugins. 

Metalink et aria2 : actes manqués ?

Au final, on ne peut donc que regretter que des outils tels qu'aria2 ne soient pas plus utilisées dans des applications ou même des OS récents. Les navigateurs ne proposent que le strict minimum en matière de téléchargement et des projets comme Firefox pourraient avoir tout intérêt à mieux s'interfacer avec de telles solutions. 

Certes, uGet « fait le job » sur de nombreuses plateformes, mais une gestion intégrée est toujours préférable. On pense là aussi à BSD/Linux et aux différentes distributions qui n'ont pas vraiment su tirer parti d'un tel format. À l'heure où la question de la centralisation des téléchargements se pose, ainsi que la sécurité de leur distribution ou même la simplicité d'usage en évitant des modèles fermés (stores), Metalink pourrait être une solution viable.

Encore faut-il qu'au-delà des plaintes entendues régulièrement, les standards existants soient utilisés. Le format est facile à prendre en main, les implémentations déjà là pour la distribution et le téléchargement. « Il n'y a plus qu'à » comme on dit. Cette évolution apparaît de plus en plus nécessaire. Un choix face auquel se retrouveront tous ceux qui proposent des fichiers en téléchargement dans les années à venir. En cas de problème, ils ne pourront pas dire que rien n'avait été fait.

Vous n'avez pas encore de notification

Page d'accueil
Options d'affichage
Abonné
Actualités
Abonné
Des thèmes sont disponibles :
Thème de baseThème de baseThème sombreThème sombreThème yinyang clairThème yinyang clairThème yinyang sombreThème yinyang sombreThème orange mécanique clairThème orange mécanique clairThème orange mécanique sombreThème orange mécanique sombreThème rose clairThème rose clairThème rose sombreThème rose sombre

Vous n'êtes pas encore INpactien ?

Inscrivez-vous !