Google hat Magika 1.0 veröffentlicht, ein Tool zur Bestimmung des Inhalts von Dateien

Das Unternehmen Google hat die Veröffentlichung des Tools Magika 1.0 angekündigt, das zur Bestimmung des Inhalts nach Analyse der in einer Datei vorhandenen Daten dient. Magika kann die in den Inhalten verwendeten Programmiersprachen, Komprimierungsmethoden, Installationspakete, ausführbaren Code, Markup-Arten, Audio-, Video-, Dokument- und Bildformate präzise identifizieren. Das mit dem Projekt verbundene Tool und das fertige Modell für maschinelles Lernen werden unter der Lizenz Apache 2.0 verbreitet. Wrapper sind für die Sprachen Rust, Python, JavaScript/TypeScript und Go vorbereitet.

Im Gegensatz zu ähnlichen Projekten, die den MIME-Typ anhand des Inhalts bestimmen, hebt sich Magika durch den Einsatz von Methoden des maschinellen Lernens ab, hoher Leistung und der Genauigkeit bei der Bestimmung. Das Modell wurde mit dem Keras-Framework auf 100 Millionen Beispielen von Dateien trainiert (Größe des Datensatzes über 3 TB) und unterstützt die Erkennung von 200 Datentypen mit einer Genauigkeit von mindestens 99 %. Das Modell ist im ONNX-Format kompaktiert und hat nur einen geringen Speicherplatzbedarf von wenigen Megabyte. Der Einsatz von Techniken des tiefen maschinellen Lernens hat die Genauigkeit der Bestimmung im Vergleich zu dem zuvor von Google verwendeten regelbasierten System um 50 % erhöht.

Bei Google wird das System zur Klassifizierung von Dateien in den Diensten Gmail, Drive, Code Insight und Safe Browsing während Sicherheitsprüfungen und der Einhaltung von Diensten verwendet. Die Integration von Magika in die Plattformen VirusTotal und abuse.ch dient als Schnittstelle für die erste Filterung von Dateien, bevor spezifische Analysatoren durchgeführt werden. Die in der Google-Infrastruktur implementierte Konfiguration von Magika ermöglicht das Scannen von mehreren Millionen Dateien pro Sekunde und mehreren hundert Milliarden Dateien pro Woche. Nach dem Laden des Modells beträgt die Ausgabedauer 5 ms bei Tests auf einem CPU-Kern. Die Bestimmungszeit ist nahezu unabhängig von der Dateigröße.

Um Magika in Ihren Projekten zu verwenden, wurden eine Befehlszeilen-Utility, Pakete für Python, Rust und Go sowie eine JavaScript-Bibliothek vorbereitet, die in Browsern oder in Node.js-basierten Projekten arbeiten kann. Die Befehlszeilenoberfläche und die API unterstützen die Ausführung von Operationen im Batch-Modus, d.h. sie ermöglichen es, mehrere Dateien in einer Anfrage zu überprüfen. Es gibt einen Modus für rekursives Scannen des gesamten Inhalts eines Verzeichnisses und drei Vorhersagemodi zur Anpassung an Fehlertoleranz (hohe Zuversicht, mittlere Zuversicht und beste Schätzung).

Ursprünglich wurde das Projekt in der Programmiersprache Python entwickelt, doch bei der Vorbereitung des Releases 1.0 wurde die Engine zur Bestimmung von Inhaltsarten in Rust neu geschrieben, was eine höhere Leistung bei gleichbleibendem Sicherheitsniveau des Codes ermöglichte. Für die Ausführung des maschinellen Lernmodells wurde das Framework ONNX Runtime eingesetzt, während die Bibliothek Tokio für die parallele asynchrone Verarbeitung von Anfragen verwendet wird. Auf einem MacBook Pro (M4) ermöglicht die Leistung der Engine die Verarbeitung von etwa 1000 Dateien pro Sekunde.

Neben der neuen Engine sind im Release 1.0 die Erweiterung der unterstützten Typen von etwa 100 auf 200 zu vermerken; die Einführung eines neuen Befehlszeilenclients, der in Rust geschrieben wurde; die Verbesserung der Genauigkeit bei der Bestimmung von Textformaten wie Konfigurations- und Code-Dateien; die Überarbeitung von Modulen für Python und TypeScript zur Vereinfachung ihrer Integration in andere Projekte. Zu den neu unterstützen Typen zählen Formate, die im maschinellen Lernen und AI verwendet werden; Programmiersprachen wie Swift, Kotlin, TypeScript, Dart, Solidity (solidity), Web Assembly und Zig; DevOps-Komponenten (Dockerfiles, TOML, HashiCorp, Bazel-Bau-Dateien und YARA-Regeln); SQLite-Datenbanken; AutoCAD-Dateien (dwg, dxf), Adobe Photoshop (psd) und Schriftarten (woff, woff2). Die Trennung des Codes in C++ und C, JavaScript und TypeScript wurde verbessert.

Quelle: opennet.ru

60GB SSD 8Gb DDR4