Google a publié Magika 1.0, un outil pour déterminer le type de contenu des fichiers

L'entreprise Google a présenté la sortie de l'outil Magika 1.0, conçu pour déterminer le type de contenu en analysant les données présentes dans le fichier. Magika peut identifier avec précision les langages de programmation utilisés dans le contenu, les méthodes de compression, les paquets d'installation, le code exécutable, les types de balisage, les formats audio, vidéo, documentaires et d'image. L'outil lié au projet et le modèle de machine learning prêt à l'emploi sont diffusés sous la licence Apache 2.0. Des wrappers ont été préparés pour les langages Rust, Python, JavaScript/TypeScript et Go.

Contrairement aux projets similaires qui déterminent le type MIME à partir du contenu, Magika se distingue par l'application de méthodes de machine learning, une grande performance et une précision de détection. Le modèle a été entraîné avec le framework Keras sur 100 millions d'exemples de fichiers (taille de l'ensemble de données supérieure à 3 To) et prend en charge la reconnaissance de 200 types de données avec une précision d'au moins 99 %. Le modèle est empaqueté au format ONNX et ne pèse que quelques mégaoctets. L'utilisation de méthodes de deep learning a permis d'augmenter la précision de détection de 50 % par rapport au système basé sur des règles manuelles précédemment utilisé par Google.

Chez Google, le système est utilisé pour classifier les fichiers dans les services Gmail, Drive, Code Insight et Safe Browsing lors des vérifications de sécurité et de conformité aux règles des services. L'intégration de Magika dans les plateformes VirusTotal et abuse.ch est réalisée en tant que lien pour le filtrage primaire des fichiers avant l'exécution d'analyseurs spécifiques. La configuration déployée dans l'infrastructure de Google permet de scanner plusieurs millions de fichiers par seconde et plusieurs centaines de milliards de fichiers par semaine. Après le chargement du modèle, le temps de génération des résultats est de 5 ms lors des tests sur un cœur de CPU. Le temps de détection dépend peu de la taille du fichier.

Pour utiliser Magika dans vos projets, des outils en ligne de commande, des packages pour Python, Rust et Go ainsi qu'une bibliothèque JavaScript fonctionnant dans le navigateur ou dans des projets basés sur Node.js ont été préparés. L'interface en ligne de commande et l'API prennent en charge l'exécution d'opérations en mode batch, c'est-à-dire qu'elles permettent de vérifier plusieurs fichiers en une seule requête. Un mode de scan récursif de tout le contenu d'un répertoire est disponible ainsi que trois modes de prévision pour ajuster la tolérance aux erreurs (haute confiance, confiance intermédiaire et meilleure estimation).

Le projet a initialement été développé en Python, mais lors de la préparation de la version 1.0, le moteur de détection des types de contenu a été réécrit en Rust, ce qui a permis d'obtenir de meilleures performances tout en maintenant un niveau de sécurité adéquat du code. Pour l'exécution du modèle d'apprentissage automatique, le framework ONNX Runtime a été utilisé, et pour le traitement asynchrone des requêtes, la bibliothèque Tokio a été intégrée. Sur MacBook Pro (M4), les performances du moteur permettent de traiter environ 1000 fichiers par seconde.

Outre le nouveau moteur, la version 1.0 se distingue par un élargissement du nombre de types pris en charge, passant d'environ 100 à 200 ; l'ajout d'un nouveau client en ligne de commande, écrit en Rust ; l'augmentation de la précision de la détection de formats textuels tels que les fichiers de configuration et de code ; la refonte des modules pour Python et TypeScript pour simplifier leur intégration avec d'autres projets. Parmi les nouveaux types de contenu pris en charge figurent : les formats utilisés dans le machine learning et l'IA ; les langages de programmation Swift, Kotlin, TypeScript, Dart, Solidity, Web Assembly et Zig ; les composants DevOps (Dockerfiles, TOML, HashiCorp, fichiers de construction 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 en C++ et C, JavaScript et TypeScript a été améliorée.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster