Des mises à jour plus petites pour Google Chrome

Le logo Google Chrome

Les petits génies de Google ont encore frappé. Cette fois ci ils se sont attaqué à la taille des mises à jour de Google Chrome. Jusqu'ici, ils utilisaient bsdif pour produire un patch binaire. La taille des fichiers produits étant encore trop importante à leurs yeux, ils ont mis au point leur propre algorithme nommé Courgette (oui, il lui ont donné le nom d'un légume).

Le fonctionnement du programme est très ingénieux. Il tire parti des caractéristiques des binaires exécutables. Quand on modifie quelques lignes dans un programme source la version compilée est souvent modifiée dans de très larges proportions, car on trouve beaucoup de références à des adresses mémoires ou à des décalages dans un binaire qui sont déplacées lors de l'ajout de nouveau code.

Si on génère un diff au niveau du code source, on produit des patch très petits car les langages de programmation de haut niveau manipulent des symboles qui sont ensuite convertis en adresse mémoire au moment de la compilation. Partant de ce constat, les développeurs de Google ont créé un désassembleur primitif qui génère un code source à partir du binaire. Le diff est alors généré à partir de ce code source. Lorsqu'il arrive sur le poste client, la version actuelle du programme est désassemblée. Le patch est appliqué sur le code source généré, puis ce dernier est assemblé pour former le nouvel exécutable.

Fonctionnement de Courgette

Avec cette méthode, on produit des diffs qui font environ 10% de la taille des diff générés par bsdiff. Google peut donc se permettre de proposer des mises à jour plus fréquentes, ce qui est très intéressant pour maintenir le niveau de sécurité du navigateur.

Ce genre d'innovations pourrait profiter au grand frère, Google Chrome OS, annoncé depuis peu. Plus qu'un simple navigateur posé sur Linux, ce pourrait être un système plus sécurisé, qui se mettrait à jour de façon très fréquente, sur un rythme adapté à l'internet d'aujourd'hui où de nouvelles menaces apparaissent quotidiennement.

Vous pouvez trouver plus d'informations sur Courgette ici.

Add new comment