Google heeft de release van de Magika 1.0-toolkit aangekondigd, die is ontworpen om het type inhoud te bepalen op basis van de analyse van gegevens in een bestand. Magika kan nauwkeurig de programmeertalen, compressiemethoden, installatiepakketten, uitvoerbare code, soorten markup, audio-, video-, document- en afbeeldingsindelingen in de inhoud identificeren. De bij het project behorende toolkit en het kant-en-klare machine learning-model worden verspreid onder de Apache 2.0-licentie. Wrappers zijn voorbereid voor de talen Rust, Python, JavaScript/TypeScript en Go.
Magika onderscheidt zich van vergelijkbare projecten die de MIME-type op basis van inhoud bepalen door het gebruik van machine learning-methoden, performance en de nauwkeurigheid van de identificatie. Het model is getraind met behulp van het Keras-framework op 100 miljoen voorbeeldbestanden (de dataset is meer dan 3 TB groot) en ondersteunt de herkenning van 200 datatypes met een nauwkeurigheid van minimaal 99%. Het model is samengesteld in ONNX-indeling en heeft een grootte van slechts enkele megabytes. Het toepassen van diepgaande machine learning-methoden heeft de nauwkeurigheid van identificatie met 50% verhoogd in vergelijking met het eerder door Google gebruikte systeem op basis van handmatig gedefinieerde regels.
In Google wordt het systeem gebruikt voor het classificeren van bestanden in de diensten Gmail, Drive, Code Insight en Safe Browsing tijdens beveiligings- en conformiteitscontroles. Er is integratie van Magika in de platforms VirusTotal en abuse.ch als een schakel voor de initiƫle filtering van bestanden voordat specifieke analyzers worden uitgevoerd. De in de infrastructuur van Google uitgerolde configuratie van Magika zorgt voor de scanning van meerdere miljoenen bestanden per seconde en enkele honderden miljarden bestanden per week. Na het uploaden van het model bedraagt de tijd voor outputgeneratie 5 ms bij testen op ƩƩn CPU-core. De identificatietijd is bijna niet afhankelijk van de bestandsgrootte.
Om Magika in uw projecten te gebruiken, zijn er een opdrachtregelhulpprogramma, pakketten voor Python, Rust en Go, en een JavaScript-bibliotheek die kan werken in de browser of in Node.js-projecten. De opdrachtregelinterface en API ondersteunen batchverwerkingen, wat betekent dat meerdere bestanden in ƩƩn verzoek kunnen worden gecontroleerd. Er is een recursieve scanmodus voor de inhoud van de map en drie voorspellingsmodi om de fouttolerantie te optimaliseren (hoge zekerheid, gemiddelde zekerheid en beste gok).
Aanvankelijk werd het project ontwikkeld in Python, maar voor de release 1.0 is de engine voor het bepalen van de inhoudstypen herschreven in Rust, wat hogere prestaties mogelijk maakte zonder de benodigde beveiligingsniveaus van de code in gevaar te brengen. Voor het uitvoeren van het machine learning-model wordt het ONNX Runtime-framework gebruikt en voor parallelle asynchrone verwerking van verzoeken de Tokio-bibliotheek. Op een MacBook Pro (M4) kan de engine ongeveer 1000 bestanden per seconde verwerken.
Naast de nieuwe engine zijn er in release 1.0 veranderingen te zien, zoals een uitbreiding van het aantal ondersteunde types van ongeveer 100 naar 200; toevoeging van een nieuwe opdrachtregelclient, geschreven in Rust; verhoging van de nauwkeurigheid van de detectie van tekstformaten, zoals configuratiebestanden en code; herziening van de modules voor Python en TypeScript om hun integratie met andere projecten te vergemakkelijken. Ondersteunde nieuwe inhoudstypen zijn onder andere formaten gebruikt in machine learning en AI; programmeertalen zoals Swift, Kotlin, TypeScript, Dart, Solidity (solidity), Web Assembly en Zig; DevOps-componenten (Dockerfiles, TOML, HashiCorp, Bazel-buildbestanden en YARA-regels); SQLite-databases; AutoCAD-bestanden (dwg, dxf), Adobe Photoshop (psd) en lettertypen (woff, woff2). De code-scheiding is verbeterd voor C++ en C, JavaScript en TypeScript.
Bron: opennet.ru
