Google a publié Magika 1.0, un ensemble d'outils permettant d'identifier les types de contenu des fichiers.

Google a publié Magika 1.0, une boîte à outils conçue pour identifier les types de contenu des fichiers grâce à l'analyse de leurs données. Magika peut identifier avec précision les langages de programmation, les méthodes de compression, les packages d'installation, le code exécutable, les types de balisage, ainsi que les formats audio, vidéo, de document et d'image. La boîte à outils et le modèle d'apprentissage automatique associés sont distribués sous licence Apache 2.0. Des interfaces sont disponibles pour Rust, Python, JavaScript/TypeScript et Go.

Magika se distingue des projets similaires de détection de types MIME par son utilisation de méthodes d'apprentissage automatique, ses hautes performances et sa précision de détection. Le modèle a été entraîné avec le framework Keras sur 100 millions d'exemples de fichiers (un ensemble de données de plus de 3 To) et prend en charge la reconnaissance de 200 types de données avec une précision d'au moins 99 %. Conçu au format ONNX, il ne pèse que quelques mégaoctets. L'utilisation de méthodes d'apprentissage profond a permis d'améliorer de 50 % la précision de détection par rapport au système précédemment utilisé par Google, qui reposait sur des règles définies manuellement.

Chez Google, le système Magika est utilisé pour classer les fichiers dans Gmail, Drive, Code Insight et Safe Browsing lors des contrôles de sécurité et de conformité. Magika est intégré aux plateformes VirusTotal et abuse.ch comme couche de filtrage principale avant l'exécution d'analyseurs spécifiques. La configuration Magika déployée dans l'infrastructure de Google analyse plusieurs millions de fichiers par seconde et plusieurs centaines de milliards par semaine. Après le chargement du modèle, le temps d'inférence est de 5 ms sur un seul cœur de processeur. Le temps de détection est quasiment indépendant de la taille du fichier.

Pour vous permettre d'utiliser Magika dans vos projets, nous avons développé un utilitaire en ligne de commande, des packages pour Python, Rust et Go, ainsi qu'une bibliothèque JavaScript exécutable dans le navigateur ou dans des projets Node.js. L'interface en ligne de commande et l'API prennent en charge le traitement par lots, vous permettant d'analyser plusieurs fichiers en une seule requête. Un mode d'analyse récursive est disponible pour l'ensemble du répertoire, ainsi que trois modes de prédiction pour ajuster la tolérance aux erreurs (haute confiance, confiance moyenne et meilleure estimation).

Initialement développé en Python, le projet a vu son moteur de détection de type de contenu réécrit en Rust lors de la préparation de la version 1.0. Cette réécriture a permis d'obtenir de meilleures performances tout en préservant le niveau de sécurité requis. Le framework ONNX Runtime est utilisé pour exécuter le modèle d'apprentissage automatique, et la bibliothèque Tokio pour le traitement parallèle et asynchrone des requêtes. Sur un MacBook Pro (M4), le moteur est capable de traiter environ 1 000 fichiers par seconde.

Outre le nouveau moteur, la version 1.0 apporte des améliorations significatives : le nombre de types de données pris en charge passe d’environ 100 à 200 ; un nouveau client en ligne de commande écrit en Rust est désormais disponible ; la détection des formats de texte (fichiers de configuration, code, etc.) est plus précise ; et les modules Python et TypeScript ont été retravaillés afin de simplifier leur intégration avec d’autres projets. Parmi les nouveaux types de contenu pris en charge figurent les formats utilisés en apprentissage automatique et en intelligence artificielle ; les langages de programmation Swift, Kotlin, TypeScript, Dart, Solidity, WebAssembly et Zig ; les composants DevOps (Dockerfiles, TOML, fichiers de construction HashiCorp et Bazel, et règles YARA) ; les bases de données SQLite ; les fichiers AutoCAD (dwg, dxf), Adobe Photoshop (psd) et les polices (woff, woff2). La séparation du code entre C++ et C, JavaScript et TypeScript a été optimisée.

Source: opennet.ru

Ajouter un commentaire