Script met hash codes maakt gerommel in software herkenbaar

Nadat vele jaren cybersecurity voornamelijk was gericht op het beveiligen van de poorten van computersystemen is nu een terugkeer naar de basis waarneembaar. Het gaat weer om het afschermen van de software tegen ongeoorloofd gebruik. Door het opnemen van een script met hash codes tussen de instructieregels is met zekerheid vast te stellen of bepaalde programma’s nog dezelfde kenmerken hebben als toen ze voor het eerst werden geactiveerd.

Marcel Hartgerink

Met authenticode biedt Microsoft ontwikkelaars de mogelijkheid om informatie over zichzelf en de door hen ontwikkelde code aan hun programma’s te linken. Dat is een goede stap in de richting van een beveiliging aan de bron. Het niveau is alleen te beperkt. We moeten veel verder gaan wanneer we willen voorkomen dat processen van buitenaf het verloop van software gaan verstoren. Cross-checks lenen zich hiervoor; de eerste ’executable’ test de tweede en vice versa.

Met uitzondering van Windows bieden de meeste moderne besturingssystemen aan ’embedded’ applicaties de mogelijkheid om op het niveau van de ’boot loader’ de integriteit van het OS te laten checken alvorens deze te activeren. Op deze wijze inspecteert elke volgende laag (applicatie runtime, applicatie configuratie data ) het verloop in de vorige laag.

In de industriële wereld is het heel gebruikelijk om door middel van encryptie via hash codes en handtekeningcertificaten de verschillende lagen te controleren. Wanneer producten, voortgekomen uit de ontwikkelingen rond Internet of Things volop gaan communiceren met standaard softwarepakketten, lijkt een dergelijke integriteitcontrole de aangewezen oplossing om kwaadwillige code buiten de deur te houden. Op een nog hoger niveau ligt een controle waarbij niet alleen in voorwaartse richting de processen in de diverse lagen elkaar inspecteren, maar waarbij ook de applicatie achterwaarts, dus richting het OS, kan nagaan of de status daarvan correspondeert met de zijne. Een reeds langer geleden uitgegeven certificaat kan bijvoorbeeld verlopen zijn. Omdat doorgaans een laag in het systeem maar een geringe toegangsmogelijkheid naar de vorige laag heeft, is er dus een vertrouwde referentie buiten de lagen nodig, bijvoorbeeld in de vorm van een in hardware uitgevoerde token (dongle).

Trusted Platform Module

Wie geen externe dongle wil, omdat bijvoorbeeld op het aangesloten apparaat geen USB poort voorhanden is, kan ook gebruik maken van een Trusted Platform Module (TPM). Meer en meer systemen en apparaten worden standaard uitgerust met dit stukje extra elektronica met een eigen processor en geheugen waarin de correcte status van de diverse registers in diverse lagen vanaf de ’boot loader’ tot en met de applicatie wordt bijgehouden. Maar een TPM is niet voldoende. Zo kan het ook voor de beveiliging wenselijk zijn om het gebruik van de software alleen toe te staan aan houders van licentierechten. Het is dan zinvol om die rechten op een centraal punt aan te maken, te distribueren en te beheren. Daarnaast heb je ook nog gereedschap nodig om de integriteitcontrole en authenticatie in de software in te bouwen. In de ontwikkelfase doe je dat door met API’s een test ’shell’ rondom je C-Sharp, Delphi of Java code heen te bouwen. Maar het is ook mogelijk die tests achteraf aan bestaande ’executables’ en DLL’s te verbinden.

Nemen van vingerafdruk

‘Self Check in Executable / Library’

Ook zonder extra security-hardware zijn er volop mogelijkheden. Daartoe nemen we eerst een vingerafdruk van het systeem, waarop de software moet draaien. Voor praktisch elk OS en hardwareplatform zijn tools beschikbaar om sluitende ’checks’ op basis van gangbare encryptietechnieken in de softwarecode in te bouwen. Het moeilijkste deel van het traject zit aan het begin wanneer je als ontwikkelaar samen met vertegenwoordigers van de gebruikers het beveiligingsniveau en het bijbehorende beleid moet uitstippelen. Op welke manier gaan we een vingerafdruk nemen? Soms denken mensen dat met een simpele controle op een MAC-adres applicaties al voldoende beveiligd zijn. De praktijk leert dat dat niet genoeg is. De uitdaging is om eerst alle mogelijke variabelen in OS’en in kaart te brengen en de verschillen in eigenschappen van de gebruikte hardware. Zo kennen AMD processoren geen CPU-ID, maar die van Intel wel. Laptops werken vaak met meer dan één MAC-adres, terwijl ook Raid-opslagsystemen zich kenmerken door een aantal hardware id’s .

‘Cross Check voor Executable / Library’

Het doel moet zijn om een maximale beveiliging voor elk binnen het project toegepast apparaat of systeem te krijgen. Daarvoor is het nodig om vooraf vast te stellen of er sprake kan zijn van een ’tight’, ‘medium’ of ’loose binding’ van de beveiliging met de hardware. In het eerste geval is geen enkele verandering toegestaan. Komt een kenmerk in de check niet overeen, dan vervalt direct het gebruiksrecht. Het tweede en derde scenario biedt meer tolerantie. Zo kan het bijvoorbeeld toegestaan zijn om geheugen in ’devices’ bij te steken of zelfs complete cpu’s te vervangen zonder dat die wijziging consequenties heeft voor de licentierechten.

Licenties zijn sterk verbonden aan een vergoedingregeling voor het gebruik van software. In een wereld vol open source code en cloud-toepassingen rekenen we met andere financiële modellen. Maar in dezelfde wereld, waar straks alles met alles elektronisch verbonden is, lijkt het licentiemodel met de certificeringmethodiek de meest adequate oplossing om individuele personen en hun persoonlijke IT-hulpmiddelen te identificeren en de integriteit van de door hen ingevoerde of ontsloten data te controleren. Digitale Certificaten en private ’keys’ maken het beveiligingsproces een stuk veiliger en de inrichting een stuk simpeler dan een stelsel van wachtwoorden en het misplaatste vertrouwen dat de individuele mens daar omzichtig mee omgaat.

‘SmartBind voor een optimale binding’

Wibu-Systems AG is in 1989 opgericht in het Duitse Karlsruhe als producent van beveiligingstechnologie voor wereldwijd softwarelicentiebeheer. De brede reeks producten van het bedrijf bieden een oplossing voor het afschermen van alle vormen van digitale content, inclusief intellectueel kapitaal en software-applicaties voor computersystemen, mobiele toepassingen, industriële automatiseringsoplossingen en cloud-diensten. Deze oplossingen laten zich eenvoudig implementeren via speciaal daarvoor samengestelde development kits.

Marcel Hartgerink is Zaakvoerder Wibu-Systems NV