Machine learning methode die bepaalt of nepwebwinkels merklogo’s gebruiken

95,9% van de domeinnamen die we detecteerden tijdens een praktijkevaluatie toont daadwerkelijk een iDEAL-logo

Auteurs: Thymen Wabeke (SIDN Labs) en Alice van den Wittenboer (Currence)

2 belangrijke aspecten van webwinkels zijn de domeinnaam en een betaalmogelijkheid. Dit geldt ook voor malafide webwinkels: zonder domeinnaam bereikt een oplichter geen slachtoffers en zonder betaalmogelijkheid verdient hij niets. Een robuuste aanpak van nepwebwinkels richt zich dus op beide aspecten. In deze blogpost beschrijven we hoe SIDN Labs en Currence een machine learning model ontwikkelden dat 87% van de webwinkels herkent die een iDEAL-logo tonen. Als vervolgens blijkt dat een webwinkel fraudeert, kan SIDN de domeinnaam laten blokkeren en Currence de webwinkel van iDEAL laten afsluiten.

Currence en SIDN staan voor een veilig internet

Bijna 4.500 nepwinkels offline gehaald in 2019 dankzij detectie SIDN Studie naar nepwebwinkels brengt werkwijze van oplichters in kaart en haalt duizenden fakeshops offline Statistiek van de maand: gedetecteerde nepwebwinkels Op weg naar een veiliger internet met machine learning

Currence is de merkeigenaar van iDEAL en SIDN beheert het .nl-domein. Beide organisaties opereren in de digitale wereld en zijn typisch Nederlands. iDEAL is verreweg het meest gebruikte online betaalmiddel door Nederlandse consumenten en 80% van de Nederlandse internetgebruikers koopt het liefst bij een .nl-domein. Currence en SIDN willen dat consumenten zorgeloos online kunnen shoppen en zetten zich dan ook in voor een veilig internet voor iedereen.

De afgelopen maanden hebben SIDN en Currence verkend hoe we gezamenlijk nepwebwinkels kunnen aanpakken. We richtten ons hierbij op een methode waarmee kan worden vastgesteld of een webwinkel iDEAL als betaalmiddel toont. De vraag of een webwinkel daadwerkelijk iDEAL als betaalmethode heeft geïmplementeerd, viel buiten de scope van ons onderzoek. Ook wilden we vooral toetsen of onze methode kansrijk is en helpt bij het aanpakken van misbruik. Zaken als schaalbaarheid en efficiëntie vonden we in deze verkenning dus iets minder belangrijk.

iDEAL-logo’s herkennen met algoritme voor objectdetectie

Webshops tonen op hun webpagina vaak logo’s van de betaalmethodes die ze ondersteunen. Hierdoor zie je als consument snel op welke manieren je kunt betalen. Onze onderzoeksmethode maakt gebruik van deze gewoonte: we maken een schermafbeelding van een webshop en analyseren deze afbeelding vervolgens met een machine learning algoritme voor objectdetectie. Zo’n algoritme kan objecten in afbeeldingen detecteren, zoals iDEAL-logo’s in schermafbeeldingen.

Visuele objectdetectie gaat het beste met een deep learning algoritme. Dit zijn artificiële neurale netwerken die zijn opgebouwd uit tientallen lagen van neuronen. Deze netwerken zijn complex, maar erg succesvol. Ze vormen bijvoorbeeld het fundament van Google Lens en applicaties die gezichten herkennen. Succesvolle neurale netwerken voor objectdetectie zijn gedocumenteerd in wetenschappelijke artikelen en vaak zijn er één of meer implementaties (als prototype) beschikbaar. Dit maakt dat objectdetectie behoorlijk toegankelijk is geworden.

In deze verkenning kozen we voor het YOLOv3 algoritme (You Only Look Once). YOLO verdeelt een afbeelding in vakjes (zie Figuur 1). Voor iedere vakje wordt een inschatting gemaakt van de begrenzingskaders van eventuele objecten en de klassenkansen. Vervolgens worden de begrenzingskaders en klassenkansen gewogen waardoor de gedetecteerde objecten ontstaan. Alle stappen worden in één keer doorlopen waardoor YOLO relatief snel is. Daarnaast is het accuraat en zijn er meerdere implementaties beschikbaar. Wij gebruikten de implementatie van Ultralytics LLC.

Figuur 1: Schematische werkwijze van YOLO.

Ontwikkeling van detectiemodel door experimenten

Het feit dat implementaties van neurale netwerken vrij beschikbaar zijn, betekent niet dat je een netwerk altijd direct kan toepassen. De gewichten in het netwerk moeten namelijk eerst worden afgestemd op de invoer en uitvoer. Deze fase heet het trainen van een model. Geannoteerde voorbeelden zijn hiervoor het belangrijkste ingrediënt. Deze voorbeelden hebben we verkregen door met COCO Annotator de locaties van iDEAL-logo’s te annoteren op schermafbeeldingen van willekeurige webshops in het .nl-domein. Dit resulteerde in 1.400 bruikbare voorbeelden waarvan we er 1.120 (80%) gebruikten voor het trainen van het model en 280 (20%) voor de evaluatie.

Het trainen van een model is een empirische dans: er zijn veel keuzes die de kwaliteit beïnvloeden. Tijdens onze verkenning kwamen we er bijvoorbeeld achter dat grijsafbeeldingen beter werken dan kleurenafbeeldingen. Dit komt waarschijnlijk omdat kleuren afleiden: een andere tint roze of een extra glans verandert de RGB-waarde van pixels, terwijl de uitvoer niet verandert (wel/geen iDEAL-logo). Het hielp ook om voorbeelden vaker, maar ietwat aangepast, te gebruiken tijdens het trainen. Bijvoorbeeld door de afbeeldingen een paar graden te roteren. Deze techniek staat bekend als data augmentation. Ten slotte waren er ook experimenten die niet goed uitpakten. Het automatisch genereren van extra voorbeelden door het iDEAL-logo willekeurig op een schermafbeelding te plaatsen resulteerde bijvoorbeeld niet in een beter model (Figuur 2). Dit komt mogelijk doordat onze taak relatief simpel is waardoor deze goedkope, maar minder representatieve voorbeelden weinig toevoegen.

Figuur 2: Unsupervised voorbeelden genereren door een logo willekeurig op een schermafbeelding te plaatsen hielp niet veel.

Bovenstaande experimenten richtten zich op de invoer van het neurale netwerk. YOLO heeft ook veel instellingen, zogenaamde hyper-parameters, die invloed hebben op het model. De YOLO-implementatie die wij gebruikten heeft een handig script waarmee het algoritme richting de beste instellingen evolueert. Dit werkt als volgt: het model wordt 300 keer getraind. Na iedere trainingsronde of generatie wordt gekeken welke generatie tot dan toe het beste resultaat opleverde. De instellingen van deze generatie worden een klein beetje aangepast (gemuteerd) en daarna gebruikt voor de volgende generatie. De resultaten van de 300 generaties staan in Figuur 3. Iedere grafiek toont een hyper-parameter waarbij de x-as de gebruikte instelling laat zien en de y-as de verkregen fitheid (hoger is beter). Oranje bolletjes representeren generaties. Het blauw omcirkelde bolletje is de generatie met de hoogste fitheid. We gebruiken deze instellingen om het uiteindelijke model te trainen.

Figuur 3: Uitkomsten van de evolutie richting de beste hyper-parameter waarden. Iedere grafiek toont een hyper-parameter waarbij de x-as de gekozen waarde toont en de y-as de verkregen fitheid (hoger is beter). Klik op de figuur voor een grotere versie.

Figuur 4 laat de ontwikkeling van het uiteindelijke model zien. De x-as toont iteraties. Tijdens iedere iteratie wordt het model iets meer afgestemd op de voorbeelden. De y-as bevat twee loss scores. Deze scores meten op een slimme manier de fout tussen voorspellingen van het model en de annotaties. Je ziet dat de loss aan het begin snel afneemt. Dit betekent dat het model snel leert. Na verloop van tijd neemt de verbetering af. Langer trainen heeft dan geen zin en kan zelfs resulteren in overfitting.

Figuur 4: De loss scores gedurende het trainen van het model. De x-as bevat iteraties en de y-as 2 loss scores.

Evaluatie van uiteindelijke detectiemodel

De loss scores in Figuur 4 zijn veelbelovend, maar zijn berekend over de trainingsvoorbeelden en daardoor geen goede evaluatiemaat. Het is beter om het model te evalueren met nieuwe, ongeziene voorbeelden. We gebruikten hiervoor de 280 testvoorbeelden.

De resultaten van de evaluaties zijn goed: 87% van de iDEAL-logo's wordt gedetecteerd (recall) en 88% van de detecties is correct (precision). Figuur 5 laat 2 webshops zien waar een iDEAL-logo is gedetecteerd.

Figuur 5: 2 schermafbeeldingen waarop een iDEAL-logo is gedetecteerd. Klik op de afbeelding voor een grotere versie.

Detectiemodel toepassen op COVID-19 webshops

De laatste fase van de verkenning bestond uit een praktijkvalidatie. Hiermee probeerden we te achterhalen of het detectiemodel nuttige inzichten kan opleveren. We richtten de validatie op webshops gerelateerd aan COVID-19 vanwege een opvallende stijging in aan COVID-19 gerelateerde domeinnamen en het feit dat criminelen zich graag richten op ‘populaire’ en schaars verkrijgbare producten. Dit zijn bijvoorbeeld webwinkels waar je plexiglas, mondkapjes of zelftests kan kopen.

Van 16 april t/m 13 mei maakten we dagelijks een schermafbeelding van COVID-19 webshops met een .nl-domein. Als het detectiemodel op de webpagina een iDEAL-logo herkende stuurden we deze domeinnaam door naar Currence. Het Riskteam van Currence analyseerden deze webshops vervolgens. Deze analyse heeft veel inzichten opgeleverd in het type webshops dat COVID-19 gerelateerde producten aanbiedt, wat voor producten dit zijn, of je er daadwerkelijk met iDEAL kunt betalen en zo ja, via welke iDEAL-betaaldienstverlener.

139 van de 145 (95,9%) gedetecteerde domeinnamen bevatten daadwerkelijk een iDEAL-logo. Na een handmatige controle van 138 webshops bleek dat er bij 90% daadwerkelijk met iDEAL betaald kon worden. Voor een deel van deze domeinnamen is nader onderzoek ingesteld door Currence.

Conclusie en vervolg

Al met al kijken we terug op een succesvolle verkenning. De methode waarmee wordt vastgesteld of een webwinkel iDEAL als betaalmiddel vermeldt, is veelbelovend en de eerste praktijktoepassing resulteerde veel inzichten en vervolgvragen.

We zouden in de toekomst bijvoorbeeld kunnen kijken of webwinkels die iDEAL promoten daadwerkelijk iDEAL als betaalmiddel aanbieden. Daarnaast is het relevant om te onderzoeken hoe we dit systeem schaalbaar kunnen inzetten. Het maken en analyseren van een schermafbeelding voor alle 5.9 miljoen .nl-domeinnamen kost namelijk tijd en rekenkracht. Ook zijn er manieren waarop we de accuratesse kunnen verhogen. Bijvoorbeeld door meer voorbeelden te annoteren of de schermafbeeldingen beter te normaliseren.

Tenslotte zien we ook andere toepassingen waar logodetectie relevant kan zijn, zoals het herkennen van keurmerken. Malafide webwinkels plaatsen vaak keurmerklogo’s om betrouwbaar over te komen. De domeinnamen van deze webwinkels komen echter niet voor in de openbare registers van keurmerken. Het onterecht plaatsen van een keurmerklogo zou daarom een goed signaal kunnen zijn om verdachte webwinkels te detecteren.