BE1023400B1 - Een build-systeem - Google Patents

Een build-systeem Download PDF

Info

Publication number
BE1023400B1
BE1023400B1 BE2016/5992A BE201605992A BE1023400B1 BE 1023400 B1 BE1023400 B1 BE 1023400B1 BE 2016/5992 A BE2016/5992 A BE 2016/5992A BE 201605992 A BE201605992 A BE 201605992A BE 1023400 B1 BE1023400 B1 BE 1023400B1
Authority
BE
Belgium
Prior art keywords
application
build
code
improved
decryption
Prior art date
Application number
BE2016/5992A
Other languages
English (en)
Inventor
Eric Lafortune
Johan Leys
Heidi Rakels
Original Assignee
Guardsquare Nv
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guardsquare Nv filed Critical Guardsquare Nv
Application granted granted Critical
Publication of BE1023400B1 publication Critical patent/BE1023400B1/nl

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

Er wordt een build-systeem (10) beschreven voor het genereren van een verbeterde applicatie (130) omvattende ten minste één geëncrypteerde applicatiecomponent (134) tijdens een build-operatie. Het build-systeem (10) omvat een build-tool (20) en ten minste één build-tool plugin (40). De build-tool plugin (40) omvat een encryptiemodule (42) en een decryptiemodule (46).

Description

EEN BUILD-SYSTEEM
Gebied van de uitvinding [01] De onderhavige uitvinding heeft algemeen betrekking op het domein van de informatiebeveiliging. Ze heeft meer specifiek betrekking op systemen en methoden voor het beschermen van resources en assets van softwareapplicaties tegen ongeoorloofde toegang. Ze is specifiek nuttig in de context van softwareapplicaties die worden gedistribueerd voor gebruik in mobiele apparaten.
Achtergrond van de uitvinding [02] De groeiende populariteit van mobiele applicaties die worden gedistribueerd via verkoopplatformen als Google Play, Apple App Store, enz. die softwareapplicaties distribueren voor gebruik op mobiele apparaten omvattende een mobiel besturingssysteem, zoals Android of iOS, trekt ook de aandacht van hackers. Die hackers proberen toegang te krijgen tot de broncode, assets, resources, enz. van de gedistribueerde softwareapplicatie in een poging om ongeoorloofde rebranded varianten van de gedistribueerde mobiele applicatie te distribueren. Dergelijke activiteiten vinden in veel gevallen plaats door gebruik te maken van gratis tools en kunnen doorgaans binnen een enkele uren of minder worden uitgevoerd. Hierdoor kan de hacker vervolgens, bijvoorbeeld door middel van kleine wijzigingen aan de resources, de softwareapplicatie rebranden voor ongeoorloofde redistributie. Dergelijke operaties omvatten bijvoorbeeld wijzigingen aan de resources, zoals het startpictogram, logo of andere afbeeldingen van de applicatie, de naam van de applicatie, verwijzingen naar url's, enz.
[03] Java-softwareapplicaties bieden een efficiënt framework voor de ontwikkeling en inzet van bedrijfs- en server-applicaties of client-side applicaties. Tijdens een build-operatie in de ontwikkelingsfase van de softwareapplicatie, wordt de Java-broncode gecompileerd naar Java-bytecode. Op die manier worden bijvoorbeeld één of meerdere Java-klassebestanden gecompileerd, hetgeen bestanden zijn, vaak met de extensie .class, die Java-bytecode omvatten en die kunnen worden uitgevoerd op de Java Virtual Machine of JVM. Een dergelijk Java-klassebestand wordt geproduceerd door een Java-compiler op basis van bronbestanden in de Java-programmeertaal, hetgeen bestanden zijn, vaak met een .java-extensie, omvattende de programmeerinstructies van de broncode voor Java-klassen. Als een Java-bronbestand meer dan één Javaklasse omvat, wordt elke Java-klasse typisch gecompileerd naar een apart Javaklassebestand omvattende zijn bytecode. Na compilatie gaat de build-operatie verder door deze Java-klassebestanden te bundelen in een softwarepakket voor distributie, samen met gerelateerde metadata en applicatie-resources, bijvoorbeeld een beeldbestand omvattende een applicatiepictogram. Er zijn goedkope, wijdverspreide applicaties beschikbaar die bijvoorbeeld toelaten om deze softwarepakketten te inspecteren, wijzigingen van de applicatie-resources mogelijk te maken en de Java-klassebestanden automatisch te decompileren in bijna-originele broncode. Hackers kunnen dan op efficiënte wijze wijzigingen toepassen om hacks te implementeren of vervalsingen te creëren voor redistributie als een ongeoorloofde of gecompromitteerde versie van de originele applicatie, hetgeen bijvoorbeeld leidt tot een veiligheidsrisico en ongeoorloofd kopiëren van de applicatie. Dergelijke Java-applicaties worden ook gebruikt in de context van mobiele softwareapplicaties, bijvoorbeeld mobiele softwareapplicaties die geschikt zijn voor het Android-besturingssysteem. In een dergelijke context wordt Java-broncode van de mobiele applicatie bijvoorbeeld gecompileerd naar Dalvik-bytecode en opgeslagen in .dex of Dalvik Executable-bestanden en/of .odex of Optimized Dalvik EXecutable-bestanden. Deze Dalvik-bytecode kan bijvoorbeeld vervolgens worden uitgevoerd door een Dalvik Virtual Machine, of eventueel verder worden gecompileerd naar native code op het mobiele apparaat door de Android Runtime of ART. Tijdens de build-operatie wordt de applicatiecode, in de vorm van de Dalvik-bytecode, bijvoorbeeld in de vorm van één of meerdere .dex-bestanden, samen verpakt met verdere applicatie-items, bijvoorbeeld resources, assets, certificaten, een manifestbestand, enz. in een Android-applicatiepakket of APK voor verdere distributie. Op een soortgelijke manier als hierboven uitgelegd, zijn tools beschikbaar om de inhoud van dergelijke softwarepakketten te inspecteren, hun bytecode te decompileren en het efficiënt wijzigen van applicatie-items mogelijk te maken, bijvoorbeeld applicatiepictogrammen, -logo's, enz., wat leidt tot veiligheidsrisico's en ongeoorloofd kopiëren van de applicatie.
[04] Om compatibiliteit te voorzien met verschillende configuraties, worden resources van dergelijke Android-applicaties, zoals afbeeldingen, videobestanden, audiobestanden en strings van de broncode van de applicatie, onafhankelijk van de broncode bijgehouden en gegroepeerd per type en configuratie. Standaard resources zijn resources die worden gebruikt ongeacht de apparaatconfiguratie, en alternatieve resources zijn resources die zijn ontworpen voor gebruik in een specifieke configuratie. Het spreekt voor zich dat dergelijke geëxternaliseerde resources vatbaar zijn voor wijzigingen door een hacker. Een dergelijke hacker kan op efficiënte wijze een ongeoorloofde rebranded kopie van een dergelijke applicatie creëren door louter de resources te wijzigen of vervangen zoals de afbeelding voor het gerelateerde pictogram, afbeeldingen met bedrijfslogo's en andere gerelateerde resources die worden gebruikt om de applicatie weer te geven op het mobiele apparaat. Bovendien zou de hacker op efficiënte wijze de gedecompileerde broncode kunnen wijzigen om bijvoorbeeld verwijzingen naar de webserver van de originele applicatieontwikkelaar te wijzigen in nieuwe verwijzingen naar een andere webserver die wordt beheerd door de hacker.
[05] ProGuard, beschikbaar op http://proguard.sourceforge.net/, is een gekende softwareapplicatie voor gebruik tijdens een build-operatie die de Java-broncode obfusceert door bijvoorbeeld de klassen, velden en methodes te hernoemen gebruik makende van korte, betekenisloze namen. Een alternatieve, gekende softwareapplicatie voor gebruik tijdens de build-operatie is DexGuard, beschikbaar op http://www.guardsquare.com/dexguard. DexGuard concentreert zich op de beveiliging van mobiele softwareapplicaties, met extra functies zoals het obfusceren van resources, string-encryptie, klasse-encryptie en het splitten van uitvoerbare applicatiebestanden. DexGuard focust vooral op Android-applicaties en maakt rechtstreeks Dalvik-bytecode aan tijdens de build-operatie op Android, waarbij Android-programma's worden gecompileerd in .dex of Dalvik Executable-bestanden die op hun beurt worden verpakt in één enkel softwarepakket of .apk-bestand. Dergelijk obfusceren van broncode of resources maakt het voor een hacker moeilijker om de softwarecode te analyseren of om op een efficiënte manier standaard resources te identificeren, zoals de afbeelding van het applicatiepictogram. Dergelijke gekende Java-obfuscatoren maken, tijdens de build-operatie, gebruik van het hernoemen van klassen, velden, methode, enz. om reverse-engineering van de gedecompileerde broncode moeilijker te maken.
[06] Bovendien zorgen gesofisticeerdere applicaties zoals DexGuard ook voor het hernoemen van applicatie-resource-identificatoren, zoals de bestandsnaam van de applicatie-resource, en bijbehorende geobfusceerde verwijzingen in de bijbehorende broncode. Dit maakt het moeilijker om op een efficiënte manier een dergelijke softwareapplicatie te rebranden door in te werken op de applicatie-resources. Om het voor hackers nog moeilijker te maken om de broncode van de applicatie en/of de applicatie-resources te verstoren, kan encryptie worden gebruikt. Een dergelijke encryptie steunt echter vaak op een standaard encryptiealgoritme dat wordt voorzien door applicaties als DexGuard tijdens de build-operatie en vereist het gebruik en de distributie van standaard beveiligingssleutels samen met de verpakte applicatie om latere decryptie mogelijk te maken wanneer het softwarepakket wordt uitgevoerd op het mobiele apparaat. Hierdoor ontstaat het risico dat hackers kunnen scannen op detecteerbare encryptiehandtekeningen en/of beveiligingssleutels waarmee ze een aan de decryptie toegewijde applicatie kunnen ontwikkelen om alle softwareapplicaties te decrypteren die met een specifieke obfuscatietool zoals DexGuard werden geobfusceerd en geëncrypteerd.
[07] Daarom bestaat er nog steeds een behoefte aan een verbeterd build-systeem waarmee meer weerstand kan worden geboden tegen het hacken van applicatie-items omvattende applicatiecode en/of verdere applicatie-items, bijvoorbeeld resources omvattende gegevens die representatief zijn voor tekst, afbeeldingen, audio, enz. van een gedistribueerd softwarepakket.
[08] Het is daarom een doelstelling van de onderhavige uitvinding om een systeem en methode te beschrijven dat de bovenstaande geïdentificeerde tekortkomingen uit de stand van de techniek oplost. Meer in het bijzonder is het een doelstelling om een systeem en methode te beschrijven die, op een efficiënte, eenvoudige en flexibele manier, voor een verbetering zorgt van de weerstand tegen ongeoorloofde toegang tot en wijziging van een gedistribueerd softwarepakket, vooral met betrekking tot applicatiecode en -resources van mobiele applicaties.
Samenvatting [09] Volgens een eerste aspect van de uitvinding wordt een build-systeem voorzien om een verbeterde applicatie te genereren, omvattende ten minste één geëncrypteerde applicatiecomponent tijdens een build-operatie, genoemd build-systeem omvattende: - een build-tool die is geconfigureerd voor het ontvangen van een applicatie omvattende applicatiecode en ten minste één applicatiecomponent; en - ten minste één build-tool plugin, gekoppeld aan genoemde build-tool tijdens een build-operatie, de build-tool plugin omvattende een encryptiemodule en een bijbehorende decryptiemodule, - de build-tool die is geconfigureerd om tijdens de build-operatie een verbeterde applicatie te genereren omvattende ten minste één ten minste gedeeltelijk geëncrypteerde applicatiecomponent en verbeterde applicatiecode: - de ten minste één ten minste gedeeltelijk geëncrypteerde applicatiecomponent zijnde gegenereerd door de encryptiemodule op basis van de ten minste één applicatiecomponent, en - de verbeterde applicatiecode zijnde gegenereerd door de build-tool op basis van de applicatiecode door respectievelijk de bijbehorende decryptiemodule toe te voegen als een bijbehorende toegevoegde decryptiemodule zodat, tijdens het uitvoeren, wanneer benaderd door de verbeterde applicatiecode, de bijbehorende ten minste gedeeltelijk geëncrypteerde applicatiecomponent automatisch wordt gedecrypteerd door de bijbehorende toegevoegde decryptiemodule.
[10] Op deze manier zorgt de build-tool plugin voor extra flexibiliteit door aan encryptie en decryptie toegewijde modules te voorzien die aan encryptie en decryptie toegewijde algoritmes implementeren. Dit levert de flexibiliteit om af te wijken van ingebouwde algoritmes van standaard build-tools om zo de kans te verkleinen dat een standaard tool voor decryptie van de verbeterde applicatiecode beschikbaar is voor een hacker. Bovendien, door de decryptiemodule alleen toe te voegen aan de verbeterde applicatiecode van de verbeterde applicatie voor verdere distributie, is er geen makkelijke verwijzing of pointer naar het gebruikte encryptiealgoritme van de encryptiemodule beschikbaar voor een hacker. Op die manier wordt de weerstand verhoogd tegen ongeoorloofde toegang tot en wijziging van de verbeterde applicatie, bijvoorbeeld wanneer gedistribueerd als softwarepakket.
[11] Volgens een uitvoeringsvorm wordt een build-systeem voorzien met het kenmerk dat de ten minste één applicatiecomponent respectievelijk één of meerdere van het volgende omvat: - gegevens; - een verwijzing naar gegevens; - softwarecode, die, tijdens het uitvoeren, worden benaderd door de verbeterde applicatiecode.
[12] Op deze manier kunnen veiligheidsgevoelige applicatiecomponenten, zoals veiligheidsgevoelige gegevensbestanden, configuratiebestanden omvattende verwijzingen naar veiligheidsgevoelige gegevens, veiligheidsgevoelige softwarecode enz. worden geëncrypteerd zonder de noodzaak om het gebruikte encryptiealgoritme van de encryptiemodule openbaar te maken en zonder de noodzaak om een verwijzing naar het gebruikte encryptiealgoritme toe te voegen aan de ten minste gedeeltelijk geëncrypteerde applicatiecomponent om decryptie mogelijk te maken. De toegevoegde decryptiemodule die tijdens de build-operatie wordt toegevoegd aan de verbeterde applicatiecode volstaat om decryptie mogelijk te maken tijdens het uitvoeren van de applicatie. Het is duidelijk op basis van de hieronder vermelde voordelige uitvoeringsvormen dat de decryptiemodule bij voorkeur op geobfusceerde wijze wordt toegevoegd aan de verbeterde applicatiecode. Dat betekent dat op een manier ook het risico wordt verkleind op detecteerbare patronen in de verbeterde applicatiecode die ertoe zouden kunnen leiden dat een hacker een decryptiemodule zou kunnen detecteren.
[13] Volgens een verdere uitvoeringsvorm wordt een build-systeem voorzien, met het kenmerk dat de ten minste één applicatiecomponent respectievelijk één of meerdere van het volgende omvat: - gegevens omvattende of representatief zijnde voor één of meerdere van het volgende: - tekstgegevens, stringgegevens, afbeeldingsgegevens, audiogegevens, videogegevens, animatiegegevens, lay-outgegevens, stijlgegevens, kleurgegevens, menugegevens, configuratiegegevens, metadata, tokens; - een applicatie-resource; - een applicatie-asset; - een verwijzing naar gegevens omvattende één of meerdere van het volgende: - een identificator; - een naam; - een numerieke identificator; - een applicatie-resource-identificator; - een applicatie-asset-identificator; - softwarecode omvattende één of meerdere van het volgende: - een deel van de applicatiecode; - verdere applicatiecode, afzonderlijk van de applicatiecode; - verdere applicatiecode in een programmeertaal die verschilt van de applicatiecode; - native code; - bytecode; - broncode.
[14] Op deze manier worden de opties voor een hacker ingeperkt om een gedistribueerde applicatie te rebranden of om op efficiënte wijze bijvoorbeeld veiligheidskritieke componenten van de gedistribueerde applicatie te wijzigen. Deze applicatiecomponenten zijn bijvoorbeeld gegevensbestanden zoals applicatie-resources, enz. De applicatiecomponenten kunnen alternatief ook kritieke onderdelen van gegevensbestanden omvatten, bijvoorbeeld de header van een afbeeldingsbestand omvattende het gebruikte coderingsprotocol, enz. Volgens nog verdere, alternatieve uitvoeringsvormen, kunnen de applicatiecomponenten verwijzingen omvatten naar gevoelige gegevens, bijvoorbeeld namen of identificatoren van bestanden, resources, variabelen, enz. vervat in configuratiebestanden of applicatiecode, enz. Volgens nog verdere alternatieven kan de applicatiecomponent bijvoorbeeld een veiligheidsgevoelige softwarebibliotheek zijn, een toegewijde driver voorzien in native code, enz. Elk van deze applicatiecomponenten kan voordeligerwijze worden geëncrypteerd of gedeeltelijk geëncrypteerd, zonder de noodzaak om de encryptiemodule te onthullen tijdens distributie van de verbeterde applicatie, aangezien decryptie kan worden gegarandeerd door de decryptiemodule die is toegevoegd aan de verbeterde applicatie.
[15] Volgens een verdere uitvoeringsvorm wordt een build-systeem voorzien, met het kenmerk dat de build-tool is geconfigureerd om: - de applicatie te ontvangen als een input-softwarepakket omvattende de applicatiecode en de ten minste één applicatiecomponent; en - de verbeterde applicatie te genereren als een output-softwarepakket omvattende de verbeterde applicatiecode en de ten minste één ten minste gedeeltelijk geëncrypteerde applicatiecomponent.
[16] Op die manier kan de build-tool makkelijk worden geïntegreerd in of in de operationele keten van bestaande geautomatiseerde build-tools die softwarepakketten ontvangen en genereren omvattende verschillende applicatiecomponenten, zoals applicatiecode, applicatie-resources, enz.
[17] Volgens een verdere uitvoeringsvorm wordt een build-systeem voorzien, met het kenmerk dat de verbeterde applicatie geen encryptiemodule en/of een verwijzing naar de encryptiemodule omvat.
[18] Op die manier wordt het hackers nog moeilijker gemaakt om een pointer te detecteren naar de encryptiealgoritmes die tijdens de build-operatie door de encryptiemodule werden gebruikt.
[19] Volgens een verdere uitvoeringsvorm wordt een build-systeem voorzien met het kenmerk dat de build-tool is geconfigureerd om de toegevoegde decryptiemodule te genereren als één of meerdere van het volgende: - een kopie van de decryptiemodule; - een geconverteerde versie van de decryptiemodule; - een gecompileerde versie van de decryptiemodule; - een geobfusceerde versie van de decryptiemodule.
[20] Het moge dus duidelijk zijn dat de build-tool volgens een bijzonder eenvoudige uitvoeringsvorm, bijvoorbeeld waarbij zowel de decryptiemodule als de applicatiecode worden voorzien in bytecode, de verbeterde applicatiecode kan genereren door eenvoudigweg een kopie van de bytecode van de decryptiemodule op de correcte locatie toe te voegen aan de bytecode van de applicatiecode. Het is verder ook duidelijk dat de decryptiemodule en de applicatiecode bijvoorbeeld kunnen worden voorzien in verschillende soorten broncode, bijvoorbeeld elk omvattende broncode in een verschillende programmeertaal, waarbij de decryptiemodule native code omvat en het applicatieprogramma bytecode omvat, waarbij de decryptiemodule en het applicatieprogramma een verschillend type van bytecode omvatten, enz. In dat geval, zal het build-systeem de toegevoegde decryptiemodule genereren door een op geschikte wijze geconverteerde versie van de decryptiemodule te leveren, hetgeen een efficiënte toevoeging aan de applicatiecode mogelijk maakt om de verbeterde applicatiecode te genereren. Het is verder ook duidelijk dat, bijvoorbeeld wanneer de decryptiemodule wordt voorzien in broncode, de build-tool een gecompileerde versie zou kunnen toevoegen aan de verbeterde applicatiecode, bijvoorbeeld een versie van de decryptiemodule die is gecompileerd naar bytecode. Deze verbeterde applicatiecode kan in een dergelijk geval bijvoorbeeld ook een gecompileerde versie naar bytecode zijn van de broncode van de applicatiecode. Het is duidelijk dat in een dergelijk geval de broncode van de applicatiecode en de decryptiemodule niet noodzakelijk in dezelfde programmeertaal geschreven moeten zijn. Het is duidelijk dat bij voorkeur, in plaats van louter een exacte kopie van de decryptiemodule in zijn geheel aan de applicatiecode toe te voegen, een geobfusceerde versie van de decryptiemodule wordt toegevoegd, bijvoorbeeld door variabele namen, enz. van de decryptiemodule te wijzigen, door verschillende delen van de decryptiemodule over verschillende locaties in de verbeterde applicatiecode te distribueren en/of door middel van eender welke andere beschikbare, geschikte obfuscatietechniek die de detecteerbaarheid van patronen met betrekking tot de decryptiemodule vermindert.
[21] Volgens een verdere uitvoeringsvorm wordt een build-systeem voorzien, met het kenmerk dat de build-tool verder is geconfigureerd om, tijdens de build-operatie, de decryptiemodule toe te voegen aan de verbeterde applicatie als een toegevoegde decryptiemodule omvattende twee of meerdere aparte decryptiemoduleonderdelen op verschillende locaties in de verbeterde applicatiecode.
[22] Door middel van deze voordelige en eenvoudige obfuscatietechniek, toegepast op de decryptiemodule, wordt het risico op detecteerbare patronen in de decryptiemodules in de gedistribueerde verbeterde applicatie nog verder verkleind en wordt zo de weerstand tegen hackers vergroot.
[23] Volgens een verdere uitvoeringsvorm wordt een build-systeem voorzien met het kenmerk dat het build-systeem twee of meerdere build-tool plugins omvat, waarbij de build-tool is geconfigureerd om op verschillende tijdstippen tijdens de build-operatie gebruik te maken van een andere build-tool plugin.
[24] Het gebruik van meerdere build-tool plugins en een bijbehorend veelvoud aan encryptie- en bijbehorende decryptiemodules verhoogt verder de specifieke verscheidenheid van het type gebruikte encryptie en verkleint daarbij verder de kans dat een hacker in staat zal zijn om de verbeterde applicatie te decrypteren met behulp van standaard tools. Bovendien wordt dit op een flexibele en efficiënte manier gerealiseerd door de build-tool tijdens de build-operatie door het toevoegen van het bijbehorende meervoudige aantal decryptiemodules aan de verbeterde applicatiecode, zonder dat aan een hacker enige aanwijzingen worden geleverd naar welk specifiek encryptiealgoritme tijdens de build-operatie werd gebruikt. Bovendien maakt deze aanpak een dergelijke variatie mogelijk in het gebruik van tijdens de build-operatie toe te passen encryptie zonder dat moet worden opgevolgd welke specifieke encryptiemodule in de verbeterde applicatie werd gebruikt en wanneer. Tijdens het uitvoeren van de verbeterde applicatie volstaan de bijbehorende decryptiemodules die werden toegevoegd door de build-tool tijdens de build-operatie op de relevante locaties in de verbeterde applicatiecode om automatische decryptie van de geëncrypteerde applicatiecomponenten mogelijk te maken wanneer benaderd tijdens het uitvoeren.
[25] Volgens een verdere uitvoeringsvorm wordt een build-systeem voorzien, met het kenmerk dat de build-tool is geconfigureerd om voor een decryptiemodule van een build-tool plugin op verschillende tijdstippen tijdens de build-operatie verschillende variaties van de toegevoegde decryptiemodule te genereren.
[26] Op die manier wordt de toegevoegde decryptiemodule in de verbeterde applicatie verder geobfusceerd door de build-tool tijdens de build-operatie zonder de complexiteit tijdens het uitvoeren te verhogen.
[27] Volgens een verdere uitvoeringsvorm wordt een build-systeem voorzien, met het kenmerk dat: - de encryptiemodule twee of meerdere encryptiealgoritmes omvat en de decryptiemodule twee of meerdere bijbehorende decryptiealgoritmes omvat, en dat - op verschillende tijdstippen tijdens de build-operatie het build-systeem verder is geconfigureerd om: - applicatiecomponenten te encrypteren door middel van verschillende encryptiealgoritmes; en - verschillende bijbehorende toegevoegde decryptiealgoritmes toe te voegen aan de verbeterde applicatiecode die is gegenereerd op basis van de verschillende bijbehorende decryptiealgoritmes.
[28] Het gebruik van meerdere encryptiealgoritmes verhoogt nog verder de specifieke verscheidenheid van het type gebruikte encryptie en verkleint daarbij verder de kans dat een hacker in staat zal zijn om te decrypteren door middel van standaard tools. Bovendien wordt dit op een flexibele en efficiënte manier gerealiseerd door het toevoegen van het bijbehorende meervoudige aantal decryptiealgoritmes aan de verbeterde applicatiecode, zonder dat aan een hacker enige aanwijzingen worden geleverd naar welk specifiek encryptiealgoritme tijdens de build-operatie werd gebruikt. Het is duidelijk dat dit hogere niveau van obfuscatie van de toegevoegde decryptiemodule wordt gerealiseerd door het build-systeem tijdens de build-operatie, zonder de complexiteit van de verbeterde applicatie tijdens het uitvoeren te verhogen. Bij voorkeur is de build-tool plugin geconfigureerd om, op verschillende tijdstippen tijdens de build-operatie, door middel van zijn encryptiemodule applicatiecomponenten te encrypteren aan de hand van verschillende encryptiealgoritmes. Het is duidelijk dat op deze manier de build-tool niet hoeft te weten of de build-tool plugin verschillende encryptiealgoritmes omvat, aangezien de encryptiemodule van de build-tool plugin bij voorkeur automatisch zal bepalen welke van de encryptiealgoritmes moet worden gebruikt wanneer de build-tool tijdens de build-operatie een gevoelige applicatiecomponent aanlevert. De build-tool is bij voorkeur geconfigureerd om de decryptiemodule van de build-tool plugin toe te voegen aan de verbeterde applicatiecode als een toegevoegde decryptiemodule omvattende verschillende bijbehorende toegevoegde decryptiealgoritmes. Het is duidelijk dat de toegevoegde decryptiemodule op zo een manier aan de verbeterde applicatiecode wordt toegevoegd dat de toegevoegde decryptiemodule automatisch het bijbehorende toegevoegde decryptiealgoritme selecteert wanneer de verbeterde applicatiecode een geëncrypteerde applicatiecomponent benadert tijdens het uitvoeren van de verbeterde applicatie.
[29] Volgens een verdere uitvoeringsvorm wordt een build-systeem voorzien met het kenmerk dat het build-systeem verder is geconfigureerd om de applicatiecomponenten te encrypteren door middel van de verschillende build-tool plugins en/of verschillende encryptiealgoritmes, volgens één of meerdere van het volgende: - willekeurig; - afhankelijk van de gegevensgrootte van de applicatiecomponent; - afhankelijk van het gegevenstype van de applicatiecomponent; - afhankelijk van één of meerdere eigenschappen van de applicatiecomponent.
[30] Op deze wijze wordt het een hacker nog moeilijker gemaakt aangezien bijvoorbeeld het willekeurige gebruik van verschillende algoritmes de kans op detecteerbare patronen vermindert. Bovendien wordt dit gerealiseerd zonder enige extra complexiteit voor de gedistribueerde applicatie aangezien het leveren van de correlatie tussen de willekeurig gedistribueerde decryptiealgoritmes en de geëncrypteerde applicaties wordt verzorgd tijdens de build-operatie en niet leidt tot overmatige complexiteit tijdens het uitvoeren van de applicatie.
[31] Verder kunnen prestatieoptimalisaties tijdens de build-operatie en/of tijdens het uitvoeren van de verbeterde applicatiecode worden gerealiseerd. Applicatiecomponenten omvattende een gegevensgrootte die kleiner is dan een vooraf bepaalde drempel, kunnen bijvoorbeeld worden verwerkt door middel van veiligere, maar ook resource-intensievere encryptie- en/of decryptiemodules. Applicatiecomponenten omvattende een gegevensgrootte die groter is dan deze drempel kunnen dan weer bijvoorbeeld worden verwerkt door middel van minder veilige, maar resource-efficiëntere encryptie- en/of decryptiemodules. Volgens nog verdere uitvoeringsvormen kan bijvoorbeeld een applicatiecomponent omvattende afbeeldingsgegevens worden verwerkt door middel van een andere encryptie- en bijbehorende decryptiemodule dan een applicatiecomponent omvattende tekstgegevens. Aangezien afbeeldingsgegevens, in tegenstelling tot tekstgegevens, speciale eigenschappen omvatten, zoals een hoge mate aan redundantie en een hoge mate aan correlatie tussen gegevens van verschillende pixels, kan het gebruik van encryptiemodules die zijn geoptimaliseerd voor de verwerking van dergelijke afbeeldingsgegevens resulteren in efficiëntieverhogingen tijdens build-tijd en kan de toevoeging van bijbehorende decryptiemodules aan de verbeterde applicatie tijdens de build-operatie resulteren in een verhoogde berekeningsefficiëntie tijdens het uitvoeren van de verbeterde applicatie. Volgens nog verdere uitvoeringsvormen kan, in het algemeen, het gebruik van verschillende build-tool plugins en/of verschillende encryptiealgoritmes een functie zijn van één of meerdere eigenschappen van de applicatiecomponent, bijvoorbeeld veiligheidseigenschappen, bestandsattributen, versie-eigenschappen, metadata, enz.
[32] Volgens een verdere uitvoeringsvorm wordt een build-systeem voorzien met het kenmerk dat de build-tool plugin verder een beveiligingssleutelgenerator omvat die is geconfigureerd om encryptiesleutels te genereren voor gebruik door de encryptiemodule tijdens de build-operatie en bijbehorende decryptiesleutels voor gebruik door de toegevoegde decryptiemodule tijdens het uitvoeren, en waarbij de build-tool verder is geconfigureerd om tijdens de build-operatie de verbeterde applicatie te genereren door de decryptiesleutels toe te voegen als toegevoegde decryptiesleutels, zodat tijdens het uitvoeren, wanneer benaderd door de verbeterde applicatiecode, de bijbehorende ten minste gedeeltelijk geëncrypteerde applicatiecomponent automatisch wordt gedecrypteerd door de bijbehorende toegevoegde decryptiemodule gebruik makende van de bijbehorende toegevoegde decryptiesleutels.
[33] Het gebruik van beveiligingssleutels in de build-tool plugin verhoogt de flexibiliteit nog verder om een toegewijde vorm van encryptie te leveren die afwijkt van de standaard aanpak en beveiligingssleutels van kant-en-klare build-tools, om zo de weerstand van de gedistribueerde applicatie-items tegen hackers nog verder te verbeteren. Het is duidelijk dat naast de verhoogde diversiteit in gebruikte beveiligingssleutels, die bijdraagt tot een hogere weerstand tegen vervalsing van de verbeterde applicatie wanneer gedistribueerd, de weerstand verder nog kan worden verhoogd door bijvoorbeeld verdere lagen van encryptie of obfuscatie van de toegevoegde decryptiesleutels in de verbeterde applicatiecode door de build-tool tijdens de build-operatie.
[34] Volgens een verdere uitvoeringsvorm wordt een build-systeem voorzien, met het kenmerk dat de sleutelgenerator verder is geconfigureerd om tijdens de build-operatie automatisch verschillende encryptie- en bijbehorende decryptiesleutels te genereren: - willekeurig; - afhankelijk van de gegevensgrootte van de applicatiecomponent; - afhankelijk van het gegevenstype van de applicatiecomponent; - afhankelijk van één of meerdere eigenschappen van de applicatiecomponent; - voor elke applicatiecomponent; - voor elke vooraf bepaalde groep van applicatiecomponenten; en/of - voor elke encryptiemodule en bijbehorende decryptiemodule, de build-tool zijnde geconfigureerd om de verbeterde applicatie te genereren zodat, tijdens het uitvoeren, de verschillende toegevoegde decryptiesleutels worden benaderd door de bijbehorende toegevoegde decryptiemodule wanneer de bijbehorende ten minste gedeeltelijk geëncrypteerde applicatiecomponent automatisch wordt gedecrypteerd.
[35] Op deze manier wordt het herhaalde gebruik van identieke beveiligingssleutels in de verbeterde applicatiecode geminimaliseerd en wordt de kans op detecteerbare patronen voor een hacker verder verkleind. Nog verdere veiligheids- en prestatieoptimalisaties kunnen worden verkregen door te kiezen voor een beveiligingstype dat goed geschikt is om efficiënt samen te werken met een optimaal type encryptiemodule en/of bijbehorende decryptiemodule voor een specifiek type gegevens. Bovendien kan, bijvoorbeeld voor applicatiecomponenten met een gegevensgrootte die kleiner is dan een vooraf bepaalde drempel, een grotere encryptie- en bijbehorende decryptiesleutel worden gekozen dan voor applicatiecomponenten met een gegevensgrootte die groter is dan de drempel. Dat zorgt bijvoorbeeld voor een hoog beveiligingsniveau voor relatief kleine tekststrings omvattende minder dan 10 kB aan gegevens, terwijl de berekeningsefficiëntie bij het encrypteren en decrypteren van bijvoorbeeld grotere afbeeldings- of videobestanden omvattende verschillende MB's of GB's aan gegevens wordt gegarandeerd. Volgens nog verdere uitvoeringsvormen kan het gebruik van verschillende beveiligingssleutels een functie zijn van één of meerdere andere eigenschappen van de applicatiecomponent, bijvoorbeeld veiligheidseigenschappen, bestandsattributen, versie-eigenschappen, metadata, enz.
[36] Volgens een verdere uitvoeringsvorm wordt een build-systeem voorzien, met het kenmerk dat de build-tool verder is geconfigureerd om, tijdens de buikoperatie, de decryptiesleutel toe te voegen aan de verbeterde applicatie als een toegevoegde decryptiesleutel omvattende twee of meerdere aparte decryptiesleutelonderdelen op verschillende locaties in de verbeterde applicatie.
[37] Op die manier wordt de kans op detecteerbare patronen voor een hacker die op zoek is naar pointers naar de toegevoegde decryptiesleutels in de verbeterde applicatiecode verder verkleind. Door de decryptiesleutelonderdelen en de decryptiemodule toe te voegen tijdens de build-operatie door middel van de build-tool op zo een manier dat tijdens een volgende uitvoering van de verbeterde applicatie, wanneer een geëncrypteerde applicatiecomponent wordt benaderd, de bijbehorende decryptiemodule wordt getriggerd om gebruik te maken van de bijbehorende decryptiesleutelonderdelen, kan dit niveau van variatie en obfuscatie op het niveau van de beveiligingssleutels worden gerealiseerd tijdens de build-operatie zonder de noodzaak om vervolgens de verschillende sleutelonderdelen en bijbehorende gebruikte encryptiemodules op te volgen.
[38] Volgens een verdere uitvoeringsvorm wordt een build-systeem voorzien, met het kenmerk dat de build-tool verder is geconfigureerd om, tijdens de build-operatie, de decryptiesleutel toe te voegen aan de verbeterde applicatie als een toegevoegde decryptiesleutel die ten minste gedeeltelijk verweven is met een andere toegevoegde decryptiesleutel en/of een toegevoegde ten minste gedeeltelijk beveiligde applicatiecomponent.
[39] Op die manier wordt de kans op detecteerbare patronen voor een hacker die op zoek is naar pointers naar de decryptiesleutels die zijn toegevoegd aan de verbeterde applicatiecode verder verkleind.
[40] Volgens een verdere uitvoeringsvorm wordt een build-systeem voorzien, met het kenmerk dat het build-systeem verder is geconfigureerd om een applicatie te ontvangen waarvan: - de applicatiecode ten minste één van de applicatiecomponenten omvat; en/of - de applicatie ten minste één applicatiecomponent omvat bovenop de applicatiecode.
[41] Het is duidelijk dat dit betekent dat een dergelijke applicatiecomponent bijvoorbeeld een gevoelig onderdeel kan zijn van de applicatiecode, bijvoorbeeld een deel van een bestand omvattende applicatiecode. De applicatiecomponent kan bijvoorbeeld een gevoelige variabele en/of zijn bijbehorende waarde omvatten, een verwijzing in de applicatiecode naar een gevoelige applicatie-resource, zoals een naam, bestandsnaam of eender welke andere geschikte identificator van een configuratiebestand of een applicatie-resource omvattende een afbeelding voor het pictogram of logo van de applicatie, enz. Het is ook duidelijk dat de applicatiecode kan worden voorzien als een set van bestanden, bijvoorbeeld bestanden omvattende een hoofdgedeelte van de applicatiecode als broncode en andere bestanden, bijvoorbeeld omvattende toegewijde drivers die worden voorzien in native code of applicatiemodules die worden voorzien in bytecode. In een dergelijk geval kan de applicatiecomponent bijvoorbeeld een gevoelig bestand van deze verzameling van bestanden zijn, bijvoorbeeld een bestand omvattende een gevoelig deel van de applicatiecode of omvattende native driver code waarvan onafhankelijke distributie moet worden vermeden, enz.
[42] Het is duidelijk dat, als alternatief, de applicatiecomponent een deel kan zijn van de applicatie dat verschilt van de applicatiecode zelf. De applicatiecomponent kan bijvoorbeeld een gevoelige softwarebibliotheek zijn, een gegevensbestand omvattende afbeeldingsgegevens voor het logo of pictogram van de applicatie, een configuratiebestand omvattende configuratie-informatie, een beveiligingsgevoelig bestand omvattende beveiligingssleutels, tokens, enz.
[43] Volgens een verdere uitvoeringsvorm wordt een build-systeem voorzien, met het kenmerk dat het build-systeem verder is geconfigureerd om een verbeterde applicatie te genereren waarvan: - de verbeterde applicatiecode ten minste één van de ten minste gedeeltelijk geëncrypteerde applicatiecomponenten omvat.
[44] Het is duidelijk dat op deze manier bijvoorbeeld de verbeterde applicatiecode een geëncrypteerde applicatiecomponent kan omvatten, bijvoorbeeld een geëncrypteerde naam, identificator, tekststring, een gevoelige definitie van een variabele, methode of klasse, enz.
[45] Volgens een verdere uitvoeringsvorm wordt een build-systeem voorzien, met het kenmerk dat het build-systeem verder is geconfigureerd om een verbeterde applicatie te genereren waarvan: - de verbeterde applicatie ten minste één ten minste gedeeltelijk geëncrypteerde applicatiecomponent omvat naast de verbeterde applicatiecode.
[46] Het is duidelijk dat op deze manier bijvoorbeeld de ten minste gedeeltelijk geëncrypteerde component bijvoorbeeld een ten minste gedeeltelijk geëncrypteerde softwarebibliotheek, configuratiebestand, afbeeldingsbestand, enz. kan zijn.
[47] Volgens een verdere uitvoeringsvorm wordt een build-systeem voorzien, met het kenmerk dat het build-systeem verder is geconfigureerd om een verbeterde applicatie te genereren waarvan: - de verbeterde applicatie ten minste één ten minste gedeeltelijk geëncrypteerde applicatiecomponent omvat die gedeeltelijk vervat zit in de verbeterde applicatiecode en gedeeltelijk is toegevoegd aan de verbeterde applicatie naast de verbeterde applicatiecode.
[48] Het is duidelijk dat bijvoorbeeld voor beveiligingssleutels of andere gevoelige gegevens een eerste deel bijvoorbeeld kan worden toegevoegd aan de verbeterde applicatiecode, bijvoorbeeld samen met de bijbehorende decryptiemodule, en een tweede deel bijvoorbeeld kan worden toegevoegd aan een ander bestand van de verbeterde applicatie, bijvoorbeeld een gegevensbestand, configuratiebestand, afbeeldingsbestand, een bestand omvattende andere softwarecode dan de applicatiecode, enz.
[49] Volgens een verdere uitvoeringsvorm wordt een build-systeem voorzien, met het kenmerk dat het build-systeem verder is geconfigureerd om een verbeterde applicatie te genereren waarvan: - de verbeterde applicatie ten minste twee ten minste gedeeltelijk geëncrypteerde applicatiecomponenten omvat die met elkaar verweven zijn.
[50] Op deze manier worden geëncrypteerde applicatiecomponenten verder geobfusceerd en wordt het nog moeilijker om deze delen van de verbeterde applicatie vervolgens te decrypteren.
[51] Volgens een verdere uitvoeringsvorm wordt een build-systeem voorzien, met het kenmerk dat het build-systeem verder is geconfigureerd om de respectieve bijbehorende decryptiemodule in de vorm van bytecode toe te voegen aan de verbeterde applicatiecode. Het gebruik van bytecode door de build-tool om de decryptiemodule toe te voegen aan de bytecode van de verbeterde applicatie krijgt de voorkeur aangezien dit het toevoegen van de decryptiemodule op de gewenste geautomatiseerde manier en op de correcte locatie in de code van de verbeterde applicatie vereenvoudigt. Het is echter duidelijk dat alternatieve uitvoeringsvormen mogelijk zijn, waarbij gebruik wordt gemaakt van broncode, binaire code, native code of eender welke andere geschikte verzameling van computerinstructies.
[52] Volgens een tweede aspect van de uitvinding wordt een door een computer geïmplementeerde methode voorzien voor het bedrijven van een build-systeem volgens het eerste aspect van de uitvinding, de methode omvattende de volgende stappen: - de build-tool ontvangt de applicatie omvattende applicatiecode en de ten minste één applicatiecomponent; - de build-tool genereert, tijdens de build-operatie, een verbeterde applicatie omvattende ten minste één ten minste gedeeltelijk geëncrypteerde applicatiecomponent en verbeterde applicatiecode: - waarbij de encryptiemodule de ten minste één ten minste gedeeltelijk geëncrypteerde applicatiecomponent genereert op basis van de ten minste één applicatiecomponent, en - de build-tool de verbeterde applicatiecode genereert op basis van de applicatiecode door respectievelijk de bijbehorende decryptiemodule toe te voegen als een bijbehorende toegevoegde decryptiemodule zodat, tijdens het uitvoeren, wanneer benaderd door de verbeterde applicatiecode, de bijbehorende ten minste gedeeltelijk geëncrypteerde applicatiecomponent automatisch wordt gedecrypteerd door de bijbehorende toegevoegde decryptiemodule.
[53] Volgens een uitvoeringsvorm wordt een door een computer geïmplementeerde methode voorzien, waarbij de methode de stappen omvat van het uitvoeren van de methode van het iteratief bedrijven van het build-systeem, zodat de applicatie die door het build-systeem wordt ontvangen om een volgende iteratie uit te voeren van de methode om het build-systeem te bedrijven ten minste de verbeterde applicatie omvat die is gegenereerd door het build-systeem tijdens een vorige iteratie van de methode om het build-systeem te bedrijven.
[54] Op deze manier kunnen meerdere, onafhankelijke beveiligingslagen worden gerealiseerd tijdens de build-operatie, zonder extra eisen op te leggen aan de distributie en uitvoering van de verbeterde applicatie aangezien de vereiste decryptiemodules beschikbaar zijn in de verbeterde applicatie zelf op het moment dat geautomatiseerde decryptie nodig is tijdens het uitvoeren van de verbeterde applicatie.
[55] Volgens een verdere uitvoeringsvorm wordt een door een computer geïmplementeerde methode voorzien, met het kenmerk dat de methode de volgende stappen omvat: - het selecteren, als applicatiecomponenten voor de volgende iteratie, van ten minste een toegevoegde decryptiemodule en/of een toegevoegde decryptiesleutel van de verbeterde applicatie die werd gegenereerd tijdens de vorige iteratie; en - het genereren van ten minste gedeeltelijk geëncrypteerde applicatiecomponenten op basis van deze geselecteerde applicatiecomponenten tijdens de volgende iteratie.
[56] Door decryptiemodules en/of decryptiesleutels die zijn toegevoegd aan een verbeterde applicatie te behandelen als gevoelige applicatiecomponenten tijdens een volgende iteratie, wordt een veiligheidsniveau van meerdere lagen gerealiseerd tijdens de build-operatie, hetgeen automatisch en efficiënt kan worden opgelost tijdens het uitvoeren van de verbeterde applicatie na daaropvolgende distributie zonder de behoefte aan externe resources.
[57] Volgens een derde aspect van de uitvinding wordt een computerprogramma voorzien omvattende softwarecode die is aangepast om de door een computer geïmplementeerde methode volgens het tweede aspect van de uitvinding uit te voeren indien uitgevoerd door een computersysteem.
[58] Volgens een vierde aspect van de uitvinding wordt een door een computer leesbaar opslagmedium voorzien omvattende door een computer uitvoerbare instructies die, wanneer ze door een computersysteem worden uitgevoerd, de door een computer geïmplementeerde methode volgens het tweede aspect van de uitvinding uitvoeren.
Korte beschrijving van de tekeningen [59] Figuur 1 is een schematische voorstelling van een uitvoeringsvorm van het build-systeem; [60] Figuren 2 tot en met 9 zijn schematische voorstellingen van alternatieve uitvoeringsvormen van het build-systeem, soortgelijk aan de uitvoeringsvorm van Figuur 1; [61] Figuur 10 is een schematische voorstelling van een uitvoeringsvorm van een door een computer geïmplementeerde methode om een build-systeem volgens Figuur 1 te bedrijven tijdens een build-operatie; [62] Figuur 11 is een schematische voorstelling van een uitvoeringsvorm van een methode voor het uitvoeren van een verbeterde applicatie die is gegenereerd met de build-operatie van Figuur 10; en [63] Figuur 12 is een schematische voorstelling van een uitvoeringsvorm van een computersysteem voor het uitvoeren van de door een computer geïmplementeerde methode van Figuur 10.
Gedetailleerde beschrijving van de uitvoeringsvorm(en) [64] Figuur 1 is een schematische voorstelling van een uitvoeringsvorm van een build-systeem 10. Een dergelijk build-systeem 10, zijnde een softwaretool of een verzameling van softwaretools, wordt gebruikt tijdens een softwareontwikkelingsproces. Een dergelijk softwareontwikkelingsproces betreft bijvoorbeeld kernactiviteiten, zoals het ontwerpen, samenstellen, testen, debuggen, uitrollen, onderhouden, enz., hetgeen resulteert in de aanmaak van verdere ontwikkeling van softwareapplicaties of computerprogramma's. Een dergelijk build-systeem 10 omvat typisch één of meerdere softwaretools die worden gebruikt om een softwareapplicatie te bouwen tijdens een build-operatie. Tijdens een dergelijke build-operatie wordt een softwareapplicatie typisch geproduceerd in de vorm van een softwarepakket dat geschikt is voor verdere distributie. Het is duidelijk dat de softwareontwikkelingsfase waarvan de build-operatie deel uitmaakt op deze manier verschilt van de uitvoering van de softwareapplicatie. Wanneer de softwareapplicatie wordt uitgevoerd of bedreven, betekent dit dat een geschikt computersysteem de instructies van de softwareapplicatie uitvoert. Dit betekent typisch dat de gedistribueerde softwareapplicatie machinecode-instructies of binaire code omvat voor een centrale verwerkingseenheid of CPU van het computersysteem; of als alternatief meer draagbare instructies zoals bytecode, voor een software-interpreter die beschikbaar is op het computersysteem.
[65] Tijdens een build-operatie zal een build-tool typisch een meervoudig aantal verschillende operaties uitvoeren of coördineren om de vereiste componenten te leveren voor een distribueerbare softwareapplicatie, bijvoorbeeld één of meerdere van het volgende: genereren of wijzigen van broncode; compileren van broncode; compileren van testbroncode; uitvoeren van tests; verpakken van gecompileerde broncode, metadata, bibliotheken en resources, zoals tekst, afbeeldingen, geluid, enz. in een softwarepakket dat geschikt is voor distributie, enz. Het is duidelijk dat behalve het compileren van de broncode van de applicatie naar bytecode of binaire code ook andere operaties worden uitgevoerd tijdens de build-operatie. Sommige van deze operaties hebben mogelijk te maken met het wijzigen van ten minste een deel van de broncode van de applicatie vóór een compilatie-operatie en/of sommige van deze operaties omvatten mogelijk het wijzigen van ten minste een deel van de bytecode of binaire code van de applicatie na het compileren. In het algemeen wordt naar broncode, bytecode, binaire code of eender welke andere geschikte verzameling van computerinstructies van de softwareapplicatie verwezen als applicatiecode. Het is ook duidelijk dat de applicatie behalve applicatiecode ook, zoals hierboven uitgelegd, andere data-items kan omvatten, zoals applicatie-resources of applicatie-assets, enz., die bijvoorbeeld tekstgegevens, afbeeldingsgegevens, audiogegevens, videogegevens, animatiegegevens, lay-outgegevens, stijlgegevens, kleurgegevens, menugegevens, configuratiegegevens, metadata, enz. omvatten.
[66] Zoals afgebeeld in Figuur 1 omvat het build-systeem 10 volgens deze uitvoeringsvorm een build-tool 20. Het build-systeem 10 omvat verder ook een build-tool plugin 40, gekoppeld aan de build-tool 20. Voorbeelden van een dergelijk build-systeem 10 zijn Android Studio, Eclipse, Gradle, Ant, Maven, enz. Volgens de uitvoeringsvorm die wordt afgebeeld, kan build-tool 20 bijvoorbeeld soortgelijk zijn aan gekende build-tools als ProGuard, DexGuard, dat in build-systeem 10 kan worden geïntegreerd of als standalone applicatieonderdeel van de build-operatie kan worden uitgevoerd. De build-tool plugin 40 is een softwarecomponent die aanpasbare encryptiefunctionaliteit voorziet aan een bestaande build-tool 20. Het is echter duidelijk dat nog verdere alternatieve uitvoeringsvormen mogelijk zijn, op voorwaarde dat het build-systeem 10 algemeen een build-tool 20 en een daaraan gekoppelde build-tool plugin 40 omvat met functionaliteit om ten minste één applicatiecomponent 34 van een applicatie 30 die wordt ontvangen door de build-tool 20 tijdens een build-operatie ten minste gedeeltelijk te encrypteren.
[67] Volgens de uitvoeringsvorm afgebeeld in Figuur 1 ontvangt de build-tool 20 een applicatie 30. Volgens deze uitvoeringsvorm wordt de applicatie 30 bijvoorbeeld ontvangen als een input-softwarepakket. De uitvoeringsvorm van de applicatie 30 omvat applicatiecode 32, een applicatiecomponent 34 en een verdere applicatiecomponent 36. De applicatiecode 32 kan bijvoorbeeld één of meerdere bestanden of eender welke andere geschikte objecten omvatten, elk omvattende ten minste een deel van de applicatiecode 32 in de vorm van broncode of bytecode. Volgens een specifieke uitvoeringsvorm kan de applicatiecomponent 34 bijvoorbeeld een bestand of eender welk ander geschikt object zijn, omvattende gegevens, bijvoorbeeld tekstgegevens, afbeeldingsgegevens, audiogegevens, configuratiegegevens, enz., waarnaar vaak wordt verwezen als een applicatie-resource of applicatie-asset. Volgens een specifieke uitvoeringsvorm kan de applicatiecomponent 34 bijvoorbeeld afbeeldingsgegevens omvatten voor een logo dat wordt gebruikt in de gebruikersinterface van de applicatie tijdens het uitvoeren. Zoals hieronder in meer detail zal worden beschreven, is het duidelijk dat alternatieve uitvoeringsvormen van een dergelijke applicatiecomponent 34 mogelijk zijn, op voorwaarde dat de applicatie 30 die wordt ontvangen door het build-systeem 10 over het algemeen applicatiecode 32 en ten minste één applicatiecomponent 34 omvat bovenop de applicatiecode 32, soortgelijk aan wat in Figuur 1 is afgebeeld; en als alternatief of in combinatie omvat deze applicatie 30 applicatiecode 32 omvattende ten minste één van de applicatiecomponenten 34. Over het algemeen, zoals hieronder in meer detail zal worden beschreven, kan naar een dergelijke applicatiecomponent 34 worden verwezen als een gevoelige applicatiecomponent 34, hetgeen betekent dat het een applicatiecomponent 34 van de applicatie 30 is die wordt ontvangen door het build-systeem 10 waarvoor wordt verlangd dat de toegang ertoe bij voorkeur wordt beperkt na distributie, bijvoorbeeld indien geïncorporeerd in een gedistribueerd softwarepakket dat tijdens de build-operatie wordt gegeneerd. Volgens de uitvoeringsvorm afgebeeld in Figuur 1 kan de verdere applicatiecomponent 36 bijvoorbeeld een bestand of eender welk ander geschikt object zijn omvattende bijvoorbeeld een applicatiebibliotheek. Volgens deze uitvoeringsvorm verschilt deze verdere applicatiecomponent 36 van de gevoelige applicatiecomponent 34 doordat het geen gevoelige applicatiecomponent is waarvoor de toegang na distributie moet worden beperkt. Zoals verder getoond, volgens de uitvoeringsvorm van Figuur 1, genereert de build-tool 20 tijdens een build-operatie een verbeterde applicatie 130 omvattende een geëncrypteerde applicatiecomponent 134, verbeterde applicatiecode 132 en een niet-geëncrypteerde verdere applicatiecomponent 36. De verbeterde applicatie 130 kan bijvoorbeeld worden gegenereerd door de build-tool 20 als een geschikt output-softwarepakket dat volgens deze uitvoeringsvorm de geëncrypteerde applicatiecomponent 134, verbeterde applicatiecode 132 en een niet-geëncrypteerde verdere applicatiecomponent 36 omvat.
[68] Volgens een voorbeelduitvoeringsvorm kan de applicatie 30 bijvoorbeeld uitgevoerd zijn als één of meerdere directories omvattende de relevante bestanden voor de respectieve applicatiecode en applicatiecomponenten van de applicatie. Volgens een alternatieve uitvoeringsvorm kan de applicatie 30 bijvoorbeeld worden voorzien als een JAR- of Java Archive-pakketbestand dat typisch wordt gebruikt om applicatiecode, bijvoorbeeld omvattende applicatiecode 32 in de vorm van Java-klassebestanden, te aggregeren met één of meerdere gevoelige applicatiecomponenten 34, bijvoorbeeld bestanden omvattende geassocieerde metadata en resources zoals tekst, afbeeldingen, enz. of als alternatief een specifiek item of deel van de applicatiecode en/of bestanden omvattende verdere applicatiecode, en optioneel verdere niet-gevoelige applicatiecomponenten 36, bijvoorbeeld gegevens, code, of bibliotheken die niet geëncrypteerd dienen te worden. Het is duidelijk dat nog verdere alternatieve uitvoeringsvormen voor een dergelijke applicatie 30 en/of een bijbehorend input-softwarepakket mogelijk zijn, bijvoorbeeld een Android-applicatiepakket of APK, een zipbestand of eender welk ander geschikt archiefbestand omvattende één of meerdere bestanden of directories die gecomprimeerd kunnen zijn, een WAR of webapplicatiearchief, een AAR of een binair distributiepakket of een Android Library Project, Enterprise Archive of EAR, enz. Op een soortgelijke manier zijn voorbeelduitvoeringsvormen zoals hierboven omschreven met verwijzing naar de applicatie 30 en een bijbehorend input-softwarepakket ook mogelijk voor de verbeterde applicatie 130 en een bijbehorend output-softwarepakket. Het is duidelijk dat het input-softwarepakket van de applicatie 30 en het output-softwarepakket van de verbeterde applicatie 130 niet noodzakelijk uitgevoerd moeten zijn als hetzelfde type softwarepakket. Het input-softwarepakket van de applicatie 30 dat wordt ontvangen door de build-tool 20 kan bijvoorbeeld een JAR-bestand zijn, terwijl het output-softwarepakket van de verbeterde applicatie 130 dat is gegenereerd door de build-tool 20 bijvoorbeeld een APK-bestand kan zijn.
[69] Zoals verder afgebeeld in Figuur 1 omvat de build-tool plugin 40 een encryptiemodule 42 en een decryptiemodule 46. Tijdens een build-operatie is de build-tool plugin 40 gekoppeld aan de build-tool 20. Tijdens een dergelijke build- operatie genereert de build-tool 20 een verbeterde applicatie 130. Zoals hierboven reeds vermeld, volgens de afgebeelde uitvoeringsvorm, omvat deze verbeterde applicatie 130 de geëncrypteerde applicatiecomponent 134, de verbeterde applicatiecode 132 en de verdere, niet-geëncrypteerde, niet-gevoelige applicatiecomponent 36. Zoals hieronder meer gedetailleerd zal worden beschreven, is het duidelijk dat alternatieve uitvoeringsvormen van de verbeterde applicatie 130 mogelijk zijn, op voorwaarde dat die in het algemeen ten minste één ten minste gedeeltelijk geëncrypteerde applicatiecomponent 134 en verbeterde applicatiecode 132 omvatten. Volgens de uitvoeringsvorm afgebeeld in Figuur 1 is de encryptiemodule 42 bijvoorbeeld een programmeermodule omvattende een encryptiealgoritme en is de decryptiemodule 46 bijvoorbeeld een programmeermodule omvattende een bijbehorend decryptiealgoritme. Het encryptiealgoritme en bijbehorende decryptiealgoritme kan bijvoorbeeld eender welk geschikt encryptiealgoritme en bijbehorend decryptiealgoritme zijn, zoals een AES of Advances Encryption Standard-encryptie en bijbehorend decryptiealgoritme gebruik makende van een specifieke beveiligingssleutel. Het is echter duidelijk dat eender welk ander geschikt encryptie- en bijbehorend decryptiealgoritme kan worden gekozen voor gebruik in respectievelijk de encryptiemodule en de decryptiemodule. Het gebruik van de build-tool plugin 40 maakt flexibiliteit mogelijk in de keuze van een specifieke encryptie- en bijbehorende decryptiemodule. Zelfs wanneer bijvoorbeeld gebruik wordt gemaakt van een standaard build-tool 20, is een ontwikkelaar van een applicatie, door gebruik te maken van de build-tool plugin, niet beperkt tot een specifieke set van encryptie- en decryptiealgoritmes die door deze standaard build-tool 20 worden voorzien. In plaats daarvan stelt de build-tool plugin 40, door middel van de encryptiemodule en decryptiemodule, de ontwikkelaar van de applicatie in staat om gebruik te maken van een specifieke selectie van encryptie- en bijbehorende decryptiealgoritmes, of zelfs toegewijde encryptie- en bijbehorende decryptiealgoritmes. Zelfs wanneer de algoritmes die worden voorzien door de encryptiemethode en decryptiemodule eenvoudiger en efficiënter zijn dan de standaard algoritmes die doorgaans worden verdeeld met dergelijke standaard build-tools 20, kan nog steeds een hoger veiligheidsniveau voor geëncrypteerde applicatiecomponenten 134 worden gegarandeerd.
Aangezien een dergelijke, flexibelere en/of toegewijde build-tool plugin 40 omvattende een dergelijke encryptie- en decryptiemodule een encryptiemethode aanlevert die meer variatie mogelijk maakt en die minder gebruikelijk is dan standaard encryptiemethoden die worden geleverd door standaard build-tools 20, is de kans kleiner dat een bijbehorende decryptietool beschikbaar zal zijn voor een hacker.
[70] Zoals schematisch afgebeeld in Figuur 1, volgens deze uitvoeringsvorm, genereert de encryptiemodule 42 van de build-tool plugin 40 de geëncrypteerde applicatiecomponent 134. De geëncrypteerde applicatiecomponent 134 wordt bijvoorbeeld gegenereerd door de encryptiemodule uit te voeren en het encryptiealgoritme toe te passen op de applicatiecomponent 34 tijdens de build-operatie. Volgens de afgebeelde uitvoeringsvorm wordt de applicatiecomponent 34 volledig geëncrypteerd wanneer de geëncrypteerde applicatiecomponent 134 wordt gegenereerd, maar volgens alternatieve uitvoeringsvormen wordt de applicatiecomponent 34 alleen gedeeltelijk geëncrypteerd om zo een gedeeltelijk geëncrypteerde applicatiecomponent 134 te genereren. In het algemeen genereert de encryptiemodule 42 dus ten minste één ten minste gedeeltelijk geëncrypteerde applicatiecomponent op basis van ten minste één applicatiecomponent 34 van de applicatie 30.
[71] Zoals verder afgebeeld, volgens de uitvoeringsvorm van Figuur 1, wordt de decryptiemodule 46 van de build-tool plugin 40 toegevoegd aan de applicatiecode 32 om zo tijdens de build-operatie een verbeterde applicatiecode 132 te genereren. Deze verbeterde applicatiecode 132 wordt gegenereerd door de build-tool 20 tijdens de build-operatie. Zoals afgebeeld voegt de build-tool 20, wanneer tijdens de build-operatie de verbeterde applicatiecode 132 wordt gegenereerd, de decryptiemodule 46 toe aan de verbeterde applicatiecode 132 als een bijbehorende toegevoegde decryptiemodule 146. Op deze wijze wordt de verbeterde applicatiecode 132 omvattende de toegevoegde decryptiemodule 146 gegenereerd door de build-tool 20 voor de verbeterde applicatie 130. Wanneer deze verbeterde applicatiecode 132 wordt uitgevoerd op tijdstippen wanneer de verbeterde applicatiecode 132 de geëncrypteerde applicatiecomponent 134 benadert, zal de toegevoegde decryptiemodule 146 die aanwezig is in de verbeterde applicatiecode 132 worden opgeroepen om de geëncrypteerde applicatiecomponent 134 automatisch te decrypteren. Het is dus duidelijk dat op deze manier de geëncrypteerde applicatiecomponent 134 van de verbeterde applicatie 130 automatisch tijdens runtime van de verbeterde applicatie 130 kan worden gedecrypteerd door middel van deze toegevoegde decryptiemodule 146. Het is verder duidelijk dat deze automatische decryptie tijdens runtime van de verbeterde applicatie 130 kan plaatsvinden zonder kennis te eisen van of een verwijzing naar het encryptiealgoritme dat werd gebruikt door de encryptiemodule 42 in de verbeterde applicatiecode 132 of eender welke van de applicatiecomponenten van de verbeterde applicatie 130.
[72] De automatische decryptie van de geëncrypteerde gevoelige applicatiecomponent 134, wanneer die wordt benaderd door de verbeterde applicatiecode 132 tijdens het uitvoeren, wordt mogelijk gemaakt door de bijbehorende toegevoegde decryptiemodule 146 die aan de verbeterde applicatiecode 132 werd toegevoegd. Op deze manier is de verbeterde applicatiecode 132 van de verbeterde applicatie 130 tijdens het uitvoeren in staat om een gedecrypteerde versie van de geëncrypteerde applicatiecomponent 134 te benaderen, en bijvoorbeeld in staat om volgens deze uitvoeringsvorm de gegevens te benaderen, bijvoorbeeld de afbeeldingsgegevens van een logo om weer te geven in de gebruikersinterface van de applicatie tijdens runtime. Het is duidelijk dat verdere alternatieve uitvoeringsvormen mogelijk zijn, vooral zoals reeds hierboven vermeld wanneer de encryptiemodule 42 van de build-tool plugin ten minste één ten minste gedeeltelijk geëncrypteerde applicatiecomponent genereert om te worden vervat in de verbeterde applicatie door de build-tool. In het algemeen wordt de verbeterde applicatiecode 132 gegenereerd door de build-tool 20 op basis van de applicatiecode door respectievelijk de bijbehorende decryptiemodule 46 toe te voegen als een bijbehorende toegevoegde decryptiemodule 146. Dit wordt zodanig gedaan dat tijdens uitvoering van de verbeterde applicatie, wanneer een ten minste gedeeltelijk geëncrypteerde applicatiecomponent 134 wordt benaderd door de verbeterde applicatiecode 132, de ten minste gedeeltelijk geëncrypteerde applicatiecomponent 134 automatisch wordt gedecrypteerd door de bijbehorende toegevoegde decryptiemodule 146.
[73] Zoals verder afgebeeld, volgens de uitvoeringsvorm van Figuur 1, voegt de build-tool 20 ook een niet-geëncrypteerde, niet-gevoelige verdere applicatiecomponent 36 toe aan de verbeterde applicatie 130. Deze niet-geëncrypteerde, niet-gevoelige verdere applicatiecomponent kan bijvoorbeeld een niet-geëncrypteerde versie zijn van de niet-gevoelige verdere applicatiecomponent 36 van de applicatie 30 die werd ontvangen door de build-tool 20. Tijdens de build-operatie kan de build-tool 20 deze niet-gevoelige, verdere applicatiecomponent 36 ongewijzigd laten of als alternatief deze niet-gevoelige, verdere applicatiecomponent 36 onderwerpen aan één of meerdere bewerkingen, bijvoorbeeld compilatie, tests, enz. op voorwaarde dat de niet-gevoelige verdere applicatiecomponent 36 niet wordt onderworpen aan een encryptie-operatie door de build-tool plugin 40.
[74] Figuur 2 geeft een alternatieve uitvoeringsvorm weer van het build-systeem 10, soortgelijk aan de uitvoeringsvorm die is omschreven met verwijzing naar Figuur 1. Soortgelijke elementen werden voorzien van soortgelijke referenties en functioneren in het algemeen zoals hierboven omschreven met verwijzing naar Figuur 1. Het belangrijkste verschil, zoals afgebeeld, heeft betrekking op de werking van de build-tool 20 wanneer de decryptiemodule 46 van de build-tool plugin 40 wordt toegevoegd als een toegevoegde decryptiemodule 146 aan de verbeterde applicatiecode 132 van de verbeterde applicatie 130 tijdens de build-operatie. Zoals afgebeeld volgens de uitvoeringsvorm van Figuur 2, wordt hier de toegevoegde decryptiemodule 146 op een geobfusceerde manier toegevoegd aan de verbeterde applicatiecode 132 door de build-tool 20 tijdens de build-operatie door middel van twee afzonderlijke decryptiemoduleonderdelen 147.1 en 147.2 op verschillende locaties in de verbeterde applicatiecode 132. Vooral in een dergelijke uitvoeringsvorm draagt het de voorkeur weg dat het build-systeem 10 een toegevoegde decryptiemodule 146 genereert in de vorm van bytecode voor toevoeging aan de verbeterde applicatiecode, die bij voorkeur ook in de vorm van bytecode is opgesteld. Dit vereenvoudigt de invoeging van de decryptiemodule 146 in de verbeterde applicatiecode 132 tijdens de build-operatie en vereenvoudigt ook het obfusceren door bijvoorbeeld het splitsen van de toegevoegde decryptiemodule 146 in twee of meerdere decryptiemoduleonderdelen 147.1, 147.2 die op verschillende locaties in de verbeterde applicatiecode 132 moeten worden ingevoegd. Het is duidelijk dat alternatieve uitvoeringsvormen mogelijk zijn, waarbij in plaats van bytecode bijvoorbeeld gebruik wordt gemaakt van broncode of binaire code voor de toegevoegde decryptiemodule 146 en/of de verbeterde applicatiecode 132 waarin de toegevoegde decryptiemodule 146 wordt ingevoegd. Automatische invoeging van de decryptiemodule op een correcte locatie in de verbeterde applicatiecode 132 en/of het correct splitsen van de toegevoegde decryptiemodule 146 in twee of meerdere decryptiemoduleonderdelen 147.1, 147.2 is dan echter vaak complexer. Het is verder ook duidelijk dat alternatieve uitvoeringsvormen mogelijk zijn, vooral met betrekking tot het aantal decryptiemoduleonderdelen 147.1, 147.2 waarin de toegevoegde decryptiemodule 146 wordt gesplitst. Zolang in het algemeen de toegevoegde decryptiemodule 146 wordt gesplitst in twee of meerdere bijbehorende decryptiemoduleonderdelen 147.1, 147.2 die worden toegevoegd aan de verbeterde applicatiecode 132 op verschillende locaties.
[75] Figuur 3 beeldt nog een verdere alternatieve uitvoeringsvorm af die soortgelijk is aan de uitvoeringsvorm van het build-systeem 10 van Figuur 1. Soortgelijke elementen werden voorzien van soortgelijke referenties en functioneren in het algemeen zoals hierboven omschreven met verwijzing naar Figuur 1. De belangrijkste verschillen zijn dat de uitvoeringsvorm van het build-systeem 10 twee build-tool plugins 40.1, 40.2 omvat en dat de build-tool 20 een applicatie 30 ontvangt die twee gevoelige applicatiecomponenten 34.1, 34.2 omvat. Zoals afgebeeld, wordt volgens deze uitvoeringsvorm gevoelige applicatiecomponent 34.1 geëncrypteerd door middel van de encryptiemodule 42.1 van de build-tool plugin 40.1 tijdens de build-operatie. Zoals verder afgebeeld, wordt de verdere gevoelige applicatiecomponent 34.2 tijdens de build-operatie geëncrypteerd door middel van de verschillende encryptiemodule 42.2 van de verschillende build-tool plugin 40.2. Volgens de uitvoeringsvorm afgebeeld in Figuur 3, worden de verschillende gevoelige applicatiecomponenten 34.1 en 34.2 zodoende tijdens de build-operatie geëncrypteerd door verschillende encryptiemodules 42.1, 42.2. Zoals verder afgebeeld, worden beide verschillende respectieve decryptiemodules 46.1, 46.2 van de verschillende build-tool plugins 40.1, 40.2 toegevoegd aan de verbeterde applicatiecode 132 van de verbeterde applicatie 130 als toegevoegde decryptiemodules 146.1, 146.2 tijdens de build-operatie van de build-tool 20. Het is duidelijk dat, zoals hierboven omschreven, de toegevoegde decryptiemodules 146.1 en 146.2 respectievelijk op zo een manier aan de verbeterde applicatiecode 132 worden toegevoegd dat, wanneer de verbeterde applicatiecode 132 de geëncrypteerde gevoelige applicatiecomponent 34.1 tijdens het uitvoeren van de verbeterde applicatie 130 benadert, de toegevoegde decryptiemodule 146.1 die is ingevoegd in de verbeterde applicatiecode 132 wordt aangesproken om de geëncrypteerde applicatiecomponent 134.1 te decrypteren. Het is ook duidelijk dat, zoals hierboven omschreven, wanneer de verbeterde applicatiecode 132 tijdens het uitvoeren van de verbeterde applicatie 130 de verschillende geëncrypteerde applicatiecomponent 134.2 benadert, de verschillende decryptiemodule 146.2 die is ingevoegd in de verbeterde applicatiecode 132 wordt opgeroepen om automatisch de geëncrypteerde applicatiecomponent 134.2 van de verbeterde applicatie 130 te decrypteren.
[76] Volgens deze uitvoeringsvorm, bijvoorbeeld soortgelijk aan wat hierboven is omschreven, omvat de gevoelige applicatiecomponent 34.1 bijvoorbeeld gegevens, bijvoorbeeld afbeeldingsgegevens. De verdere gevoelige applicatiecomponent 34.2 kan bijvoorbeeld als alternatief softwarecode omvatten, bijvoorbeeld verdere applicatiecode. De verdere applicatiecode van de gevoelige applicatiecomponent 34.2 omvat bijvoorbeeld een specifiek deel van de algemene applicatiecode van applicatie 30 waarvoor een hoger veiligheidsniveau wenselijk is. Door dergelijke verdere applicatiecode te voorzien als een dergelijke gevoelige applicatiecomponent 34.2 van de applicatie 30, zoals afgebeeld, zal de build-tool 20 tijdens de build-operatie geëncrypteerde applicatiecomponent 134.2 produceren. Soortgelijk aan wat hierboven is omschreven, zullen zowel de geëncrypteerde component 34.1 als 34.2 tijdens de build-operatie worden toegevoegd aan de verbeterde applicatie 130 als geëncrypteerde applicatiecomponenten 134.1 en 134.2 die zijn geëncrypteerd door middel van de respectieve encryptiemodules 42.1 en 42.2. De geëncrypteerde applicatiecomponent 134.2 omvattende deze verdere applicatiecode blijft tijdens het uitvoeren toegankelijk voor de verbeterde applicatiecode 132 van de verbeterde applicatie 130 door middel van de bijbehorende toegevoegde decryptiemodule 146.2 die tijdens de build-operatie aan de verbeterde applicatiecode 132 werd toegevoegd op een soortgelijke manier als hierboven omschreven.
[77] Volgens een specifieke uitvoeringsvorm kan de gevoelige applicatiecomponent 34.2 bijvoorbeeld verdere applicatiecode omvatten, hetgeen applicatiecode is die gescheiden is van de applicatiecode 32, bijvoorbeeld voorzien in een apart bestand in het input-softwarepakket van de applicatie 30. Als alternatief of bovendien kan de gevoelige applicatiecomponent 34.2 bijvoorbeeld verdere applicatiecode omvatten in een programmeertaal die verschilt van de applicatiecode 32 van de applicatie. Volgens een dergelijke uitvoeringsvorm kan de applicatiecode 32 van de applicatie 30 bijvoorbeeld worden voorzien in Java-broncode of bytecode, terwijl de verdere applicatiecode van de gevoelige applicatiecomponent 34 van de applicatie bijvoorbeeld kan worden voorzien in broncode in een andere programmeertaal zoals C, C++, enz. of een type bytecode dat verschilt van de bytecode van de applicatiecode 32. Volgens nog een verdere uitvoeringsvorm kan de gevoelige applicatiecomponent 34.2 verdere applicatiecode omvatten die native code of machinecode omvat, omvattende een set programmeerinstructies die rechtstreeks door de centrale verwerkingseenheid of CPU van een computer kunnen worden uitgevoerd, bijvoorbeeld voor de specifieke uitvoering van kritieke delen van de applicatie.
[78] Volgens alternatieve uitvoeringsvormen, zoals bijvoorbeeld afgebeeld in Figuur 4, kan de encryptiemodule 42 van een build-tool plugin 40 in plaats van of in combinatie met twee of meerdere build-tool plugins 40 twee of meerdere encryptiealgoritmes 44.1,44.2 omvatten en kan de decryptiemodule 46 van deze build-tool plugin 40 twee of meerdere bijbehorende decryptiealgoritmes 48.1, 48.2 omvatten. Soortgelijk aan wat hierboven is omschreven, met verwijzing naar Figuur 3, ontvangt de build-tool 20 de applicatie 30 omvattende twee gevoelige applicatiecomponenten 34.1 en 34.2 tijdens de build-operatie. Zoals afgebeeld levert de build-tool deze gevoelige applicatiecomponenten 34.1 en 34.2 aan de encryptiemodule 42 van de build-tool plugin 40 tijdens de build-operatie. De encryptiemodule 42 van de build-tool plugin 40 zal automatisch deze twee verschillende gevoelige applicatiecomponenten 34.1, 34.2 encrypteren door middel van respectievelijk verschillende encryptiealgoritmes 44.1, 44.2. In het algemeen betekent dit dus dat de build-tool plugin, op verschillende tijdstippen tijdens de build-operatie, door middel van zijn encryptiemodule is geconfigureerd om applicatiecomponenten te encrypteren aan de hand van verschillende encryptiealgoritmes. De encryptiemodule 42 van de build-tool plugin 40 zal automatisch bepalen welke van de encryptiealgoritmes 44.1, 44.2 moet worden gebruikt wanneer een gevoelige applicatiecomponent 34.1, 34.2 wordt geleverd tijdens de build-operatie. Soortgelijk aan wat hierboven is omgeschreven voegt de build-tool 20 ook de decryptiemodule 46 van de build-tool plugin 40 in, die de respectieve verschillende bijbehorende decryptiealgoritmes 48.1,48.2 omvat, in de verbeterde applicatiecode 132 als een toegevoegde decryptiemodule 146 omvattende bijbehorende toegevoegde decryptiealgoritmes 148.1 en 148.2 tijdens de build-operatie. De build-tool 20 voegt zodoende de toegevoegde decryptiemodule 146 omvattende verschillende bijbehorende toegevoegde decryptiealgoritmes 148.1, 148.2 toe aan de verbeterde applicatiecode. Tijdens de build-operatie hoeft de build-tool 20 niet op de hoogte te zijn of de encryptiemodule 42 en de decryptiemodule 46 respectievelijk verschillende encryptie- en decryptiealgoritmes omvatten. Het is de build-tool plugin 40 en zijn encryptiemodule 42 die tijdens de build-operatie automatisch het te gebruiken encryptiealgoritme bepalen. De build-tool 20 voegt tijdens de build-operatie de toegevoegde decryptiemodule 146 in. De toegevoegde decryptiemodule 146 wordt op zo een manier aan de verbeterde applicatiecode 132 toegevoegd dat de toegevoegde decryptiemodule 146 automatisch het bijbehorende toegevoegde decryptiealgoritme 148.1, 148.2 selecteert wanneer de verbeterde applicatiecode 132 de geëncrypteerde applicatiecomponent 134.1, 134.2 benadert tijdens het uitvoeren van de verbeterde applicatie 130. Dit betekent dat de toegevoegde decryptiemodule 146 in de verbeterde applicatiecode 132 op zo een manier is geconfigureerd dat, tijdens het uitvoeren van de verbeterde applicatie 130, de geëncrypteerde applicatiecomponent 134.1 kan worden benaderd door de verbeterde applicatiecode 132 door middel van het toegevoegde decryptiealgoritme 148.1 van de toegevoegde decryptiemodule 146 in de verbeterde applicatiecode 132, en op zo een manier dat de geëncrypteerde applicatiecomponent 134.2 kan worden benaderd door de verbeterde applicatiecode 132 door middel van het toegevoegde decryptiealgoritme 48.2 van de toegevoegde decryptiemodule 146 in de verbeterde applicatiecode 132.
[79] Het is duidelijk dat nog verdere, alternatieve uitvoeringsvormen mogelijk zijn, met name met betrekking tot het aantal encryptiealgoritmes 44 en bijbehorende decryptiealgoritmes 48 en het aantal gevoelige applicatiecomponenten 34, op voorwaarde dat in het algemeen, wanneer de build-tool 20 een applicatie 30 omvattende twee of meerdere gevoelige applicatiecomponenten 34.1, 34.2 ontvangt, het build-systeem 10 op verschillende tijdstippen tijdens de build-operatie ten minste twee verschillende gevoelige applicatiecomponenten 34.1, 34.2 encrypteert door middel van verschillende encryptiealgoritmes 44.1, 44.2. Dit in combinatie met het toevoegen, tijdens de build-operatie, van verschillende bijbehorende decryptiealgoritmes 48.1, 48.2 aan de verbeterde applicatiecode 132 als verschillende bijbehorende toegevoegde decryptiealgoritmes 148.1 en 148.2 van een toegevoegde decryptiemodule 146.
[80] Volgens nog verdere alternatieve uitvoeringsvormen kunnen verschillende encryptie- en decryptiealgoritmes en/of verschillende build-tool plugins op verschillende tijdstippen tijdens de build-operatie worden gebruikt. Zolang het build-systeem 10 in het algemeen twee of meerdere gevoelige applicatiecomponenten 34.1, 34.2 encrypteert door middel van verschillende encryptiemodules 42.1, 42.2 en/of algoritmes 44.1, 44.2 en de verschillende bijbehorende decryptiemodules 46.1, 46.2 en/of decryptiealgoritmes 48.1, 48.2 toevoegt aan de verbeterde applicatiecode 132 als toegevoegde decryptiemodule 146.1, 146.2 en/of toegevoegde decryptiealgoritmes 148.1, 148.2. Aangezien de verschillende toegevoegde decryptiemodules en/of toegevoegde decryptiealgoritmes tijdens de build-operatie op zo een manier worden toegevoegd aan de verbeterde applicatiecode 132 door de build-tool 20 dat, wanneer de verbeterde applicatiecode 132 van de verbeterde applicatie 130 tijdens het uitvoeren de geëncrypteerde gevoelige applicatie-items 134 moet benaderen, de bijbehorende toegevoegde decryptiemodule 146 en/of het bijbehorende toegevoegde decryptiealgoritme 148 wordt opgeroepen, is het niet nodig om op te volgen welke specifieke encryptiemodule en/of welk specifiek encryptiealgoritme werd gebruikt voor welke specifieke gevoelige applicatiecomponent 34 tijdens de build-operatie. Volgens een voorkeursuitvoeringsvorm encrypteert het build-systeem 10 willekeurig de gevoelige applicatiecomponenten 34.1,34.2 tijdens de build-operatie door middel van de verschillende encryptiemodules 42.1, 42.2 en/of verschillende algoritmes 44.1, 44.2, aangezien dit het risico minimaliseert op detecteerbare patronen in de verbeterde applicatiecode 132 van de verbeterde applicatie, die een pointer zouden kunnen zijn voor een hacker om toegang te krijgen tot de geëncrypteerde applicatiecomponenten 134 van de verbeterde applicatie 130. Het is echter duidelijk dat nog verdere uitvoeringsvormen mogelijk zijn waarbij bijvoorbeeld het build-systeem 10 tijdens de build-operatie de applicatiecomponenten 34 van de applicatie encrypteert door middel van verschillende encryptiemodules 42.1,42.2 van verschillende build-tool plugins 40.1, 40.2 en/of verschillende encryptiealgoritmes 44.1, 44.2 afhankelijk van de gegevensgrootte of het gegevenstype van de applicatiecomponent 34. Dit maakt het bijvoorbeeld mogelijk om specifieke encryptiemodules en/of encryptiealgoritmes te gebruiken die zijn geoptimaliseerd voor het omgaan met een specifieke gegevensgrootte of gegevenstype. Bijvoorbeeld voor applicatiecomponenten 34 met een gegevensgrootte die kleiner is dan een vooraf bepaalde drempel, kan de encryptiemodule en bijbehorende decryptiemodule worden gekozen met meer complex beveiligingsalgoritme dan voor applicatiecomponenten met een gegevensgrootte die groter is dan de drempel. Dat zorgt bijvoorbeeld voor een hoog beveiligingsniveau voor relatief kleine tekststrings omvattende minder dan 10 kB aan gegevens, terwijl de berekeningsefficiëntie bij het encrypteren en decrypteren van bijvoorbeeld grotere afbeeldings- of videobestanden omvattende verschillende MB's of GB's aan gegevens wordt gegarandeerd. Dit maakt het bijvoorbeeld ook mogelijk om gebruik te maken van encryptie- en bijbehorende decryptiemodules die zijn geoptimaliseerd voor gebruik met een specifiek gegevenstype, bijvoorbeeld een afbeeldingsencryptiemodule en -decryptiemodule die zijn geoptimaliseerd om afbeeldingsgegevens te verwerken, een audio-encryptiemodule en -decryptiemodule die zijn geoptimaliseerd om audiogegevens te verwerken, enz.
[81] Nog een verdere uitvoeringsvorm van het build-systeem 10 wordt schematisch weergegeven in Figuur 5. Deze uitvoeringsvorm is soortgelijk aan die van Figuur 1 en soortgelijke elementen hebben soortgelijke referenties en functioneren over het algemeen op een soortgelijke manier. Volgens deze uitvoeringsvorm omvat de build-tool plugin 40 verder ook een beveiligingssleutelgenerator 50. Zoals afgebeeld genereert deze beveiligingssleutelgenerator 50 volgens deze uitvoeringsvorm een beveiligingssleutelpaar 52, 54. De beveiligingssleutelgenerator 50 van de build-tool plugin 40 genereert tijdens de build-operatie encryptiesleutels 52 voor gebruik door de encryptiemodule 42. Bovendien genereert de sleutelgenerator tijdens de build-operatie ook bijbehorende decryptiesleutels 54. Zoals afgebeeld maakt de build-tool 20 tijdens de build-operatie gebruik van de encryptiemodule 42 die gebruik maakt van de encryptiesleutel 52 die werd gegenereerd door de sleutelgenerator 50 om de gevoelige applicatiecomponent 34 van de applicatie te encrypteren. Soortgelijk aan wat hierboven is omschreven, wordt deze geëncrypteerde applicatiecomponent 34 tijdens de build-operatie door de build-tool toegevoegd aan de verbeterde applicatie 130. De build-tool 20 voegt bovendien tijdens de build-operatie niet alleen de toegevoegde decryptiemodule 46 in de verbeterde applicatiecode 132 in, maar voegt ook de door de sleutelgenerator 50 geleverde decryptiesleutel 54 toe aan de verbeterde applicatiecode 132 als een toegevoegde decryptiesleutel 154. Tijdens de build-operatie voegt de build-tool de decryptiesleutel 54 toe aan de verbeterde applicatie 130 op zo een manier dat hij kan worden gebruikt door de toegevoegde decryptiemodule 146 tijdens het uitvoeren van de verbeterde applicatie 130. Volgens de afgebeelde uitvoeringsvorm wordt de toegevoegde decryptiesleutel 154 ingevoegd in de verbeterde applicatiecode 132 van de verbeterde applicatie 130. Tijdens de build-operatie voegt de build-tool 20 de toegevoegde decryptiesleutels 154 op zo een manier toe aan de verbeterde applicatie 130 dat, wanneer de toegevoegde decryptiesleutels 154 worden benaderd door de verbeterde applicatiecode 132 tijdens het uitvoeren van de verbeterde applicatie, de bijbehorende ten minste gedeeltelijk geëncrypteerde applicatiecomponent 134 automatisch door de bijbehorende toegevoegde decryptiemodule 146 wordt gedecrypteerd, gebruik makende van de bijbehorende toegevoegde decryptiesleutels 154.
[82] Volgens een verdere uitvoeringsvorm afgebeeld in Figuur 6, soortgelijk aan die van Figuur 5, genereert de sleutelgenerator 50 van de build-tool plugin 40 tijdens de build-operatie bij voorkeur automatisch verschillende beveiligingssleutelparen 52.1,54.1 en 52.2, 54.2. Volgens deze uitvoeringsvorm wordt bijvoorbeeld voor elk van de gevoelige applicatiecomponenten 34.1, 34.2 een verschillende encryptie- en bijbehorende decryptiesleutel gegenereerd. Zoals afgebeeld tijdens de build-operatie voegt de build-tool de verschillende decryptiesleutels 54.1, 54.2 toe aan de verbeterde applicatie 130 als toegevoegde decryptiesleutels 154.1 en 154.2. Volgens de afgebeelde uitvoeringsvorm worden de toegevoegde decryptiesleutels ingevoegd in de verbeterde applicatiecode 132, maar volgens alternatieve uitvoeringsvormen kunnen de toegevoegde decryptiesleutels worden toegevoegd aan eender welke geschikte component van de verbeterde applicatie, zoals de niet-geëncrypteerde applicatiecomponent 36. Soortgelijk aan wat hierboven wordt beschreven, voegt de build-tool 20 tijdens de build-operatie de verschillende decryptiesleutels 154.1, 154.2 op zo een manier in de verbeterde applicatie in, dat tijdens het uitvoeren van de verbeterde applicatie 130, wanneer de verbeterde applicatiecode 132 toegang nodig heeft tot een respectieve geëncrypteerde applicatiecomponent 134.1 of 134.2, deze geëncrypteerde applicatiecomponent automatisch zal worden gedecrypteerd door middel van de toegevoegde decryptiemodule 146 en de respectieve bijbehorende toegevoegde decryptiesleutel 154.1 of 154.2. Het is duidelijk dat, als alternatief voor het gebruik maken van verschillende sleutels voor elke applicatiecomponent 34, nog verdere alternatieve uitvoeringsvormen mogelijk zijn waarbij het gebruik van verschillende toegevoegde decryptiesleutels in de verbeterde applicatie het nog moeilijker maakt voor een hacker om detecteerbare patronen te identificeren. Volgens dergelijke alternatieve uitvoeringsvormen geneert de sleutelgenerator 50 automatisch op verschillende tijdstippen tijdens de build-operatie willekeurig verschillende encryptie- en bijbehorende decryptiesleutels, afhankelijk van de gegevensgrootte van de applicatiecomponent 34, afhankelijk van het gegevenstype van de applicatiecomponent 34, afhankelijk van elke vooraf bepaalde groep van applicatiecomponenten 34, enz. Aangezien het type beveiligingssleutels typisch nauw verbonden is met de specifieke encryptiemodule en decryptiemodule, is het ook voordelig wanneer er verschillende sleutelgenerators 50 worden voorzien en/of de sleutelgenerator 50 verschillende encryptie- en decryptiesleutels genereert tijdens de build-operatie voor elke encryptiemodule 42 en bijbehorende decryptiemodule 46 van verschillende build-tool plugins van het build-systeem 10. Bij voorkeur wanneer het systeem een meervoudig aantal build-tool plugins omvat, omvat elke build-tool plugin een sleutelgenerator om samen te werken met zijn encryptiemodule tijdens de build-operatie en om decryptiesleutels te leveren aan de build-tool tijdens de build-operatie om te worden ingevoegd in de verbeterde applicatie, samen met de decryptiemodule.
[83] Volgens een specifieke voordelige uitvoeringsvorm, zoals afgebeeld in Figuur 7, en soortgelijk aan de uitvoeringsvorm in Figuur 5, voegt de build-tool 20 de decryptiesleutel 54 toe aan de verbeterde applicatie 130 als twee aparte toegevoegde decryptiesleutelonderdelen 155.1 en 155.2. Volgens deze uitvoeringsvorm wordt, zoals afgebeeld, de toegevoegde decryptiesleutel 154 gevormd door een toegevoegd decryptiesleutelonderdeel 155.1 in de verbeterde applicatiecode, terwijl een verder toegevoegd decryptiesleutelonderdeel 155.2 wordt ingevoegd in de toegevoegde niet-geëncrypteerde applicatiecomponent 136 van de verbeterde applicatie. Het is duidelijk dat de build-tool tijdens de build-operatie de decryptiesleutelonderdelen 155.1, 155.2 op zo een manier toevoegt aan de verbeterde applicatie, dat tijdens het uitvoeren van de verbeterde applicatie de toegevoegde decryptiemodule 146 en de toegevoegde decryptiesleutelonderdelen 155.1, 155.2 automatische decryptie mogelijk maken van de geëncrypteerde applicatiecomponent 134 wanneer die wordt benaderd door de verbeterde applicatiecode 132. Het is duidelijk dat volgens verdere uitvoeringsvormen de toegevoegde decryptiesleutels 154 in de verbeterde applicatiecode 132 bijvoorbeeld kunnen worden geobfusceerd door, tijdens de build-operatie, de decryptiesleutel 54 op zo een manier toe te voegen aan de verbeterde applicatie 130 dat de toegevoegde encryptiesleutel 154 ten minste gedeeltelijk verweven is met een andere toegevoegde decryptiesleutel 154. Volgens nog verdere alternatieve uitvoeringsvormen kan obfuscatie worden verkregen door, tijdens de build-operatie, de decryptiesleutel 54 op zo een manier toe te voegen aan de verbeterde applicatie 130 dat de toegevoegde decryptiesleutel 154 ten minste gedeeltelijk verweven is met een toegevoegde ten minste gedeeltelijk beveiligde applicatiecomponent 134. Het is duidelijk dat volgens nog verdere uitvoeringsvormen alternatieve of extra obfuscatiestappen kunnen worden toegepast, zoals het hernoemen van methoden en variabelen, het hashen en mixen van softwarecode op zo een manier dat ze operationeel blijft, maar tot een hogere moeilijkheidsgraad leidt voor een efficiënte demontage, enz.
[84] Figuur 8 beeldt nog een verdere uitvoeringsvorm af die soortgelijk is aan de uitvoeringsvorm van het build-systeem van Figuur 1. Volgens deze uitvoeringsvorm genereert de build-tool 20 voor de decryptiemodule 46 van een build-tool plugin 40 op verschillende tijdstippen tijdens de build-operatie verschillende variaties van de toegevoegde decryptiemodule 146. Bijvoorbeeld, zoals afgebeeld, zijn volgens deze uitvoeringsvorm beide gevoelige applicatiecomponenten 34.1 en 34.2 geëncrypteerd door middel van dezelfde encryptiemodule 42. De build-tool zal de bijbehorende decryptiemodule 46 toevoegen als twee verschillende variaties van de toegevoegde decryptiemodule 146.1 en 146.2, bijvoorbeeld beide door middel van een verschillende obfuscatiemethode.
[85] In het algemeen zijn er verschillende manieren mogelijk waarop de build-tool de toegevoegde decryptiemodule 146 zou kunnen genereren. Bijvoorbeeld kan de build-tool de toegevoegde decryptiemodule 146 genereren als een kopie van de decryptiemodule 46, een geconverteerde versie van de decryptiemodule 46, een gecompileerde versie van de decryptiemodule 46, een geobfusceerde versie van de decryptiemodule 46, enz. en/of eender welke geschikte combinatie daarvan.
[86] Volgens de uitvoeringsvormen van Figuren 1 t/m 8 wordt de applicatie 30 schematisch voorgesteld als een applicatie 30 omvattende ten minste één gevoelige applicatiecomponent 34 behalve de applicatiecode 32. Het is echter duidelijk dat, zoals afgebeeld in Figuur 9, verdere alternatieve uitvoeringsvormen mogelijk zijn waarbij de applicatie 30 applicatiecode omvat die ten minste één van de gevoelige applicatiecomponenten 34 omvat. De gevoelige applicatiecomponent 34 kan in dergelijke uitvoeringsvormen bijvoorbeeld een gevoelig deel zijn van de applicatiecode 32. Volgens sommige uitvoeringsvormen kan de gevoelige applicatiecomponent 34 bijvoorbeeld een identificator, een naam, een numerieke identificator, een applicatie-resource-identificator, een applicatie-asset-identificator, enz. omvatten die aanwezig is in de applicatiecode 32 en die wordt beschouwd als een gevoelige verwijzing of een verwijzing naar gevoelige gegevens. Het is duidelijk dat nog verdere alternatieve uitvoeringsvormen van een applicatie 30 mogelijk zijn die ten minste één gevoelige applicatiecomponent 34 omvatten die vervat zit in de applicatiecode 32 en ten minste één gevoelige applicatiecomponent 34 behalve de applicatiecode 32.
[87] Het is verder ook duidelijk dat het build-systeem 10 volgens verschillende uitvoeringsvormen in staat is om verschillende uitvoeringsvormen van de verbeterde applicatie 130 te genereren, bijvoorbeeld een verbeterde applicatie waarin: de verbeterde applicatiecode 132 ten minste één van de ten minste gedeeltelijk geëncrypteerde applicatiecomponenten 134 zoals afgebeeld in Figuur 9 omvat; de verbeterde applicatie 130 ten minste één ten minste gedeeltelijk geëncrypteerde applicatiecomponent 134 omvat naast de verbeterde applicatiecode 132, zoals afgebeeld in Figuren 1 t/m 8. Nog verdere alternatieve uitvoeringsvormen zijn echter mogelijk, bijvoorbeeld uitvoeringsvormen waarin de verbeterde applicatie 130 ten minste één ten minste gedeeltelijk geëncrypteerde applicatiecomponent 134 omvat die gedeeltelijk vervat zit in de verbeterde applicatiecode 132 en gedeeltelijk is toegevoegd aan de verbeterde applicatie 130 naast de verbeterde applicatiecode 132. Volgens nog verdere uitvoeringsvormen kan de verbeterde applicatie 130 bijvoorbeeld ten minste twee ten minste gedeeltelijk geëncrypteerde applicatiecomponenten 134 omvat die met elkaar verweven zijn.
[88] Volgens de uitvoeringsvormen die hierboven zijn weergegeven, wordt de applicatiecode 32 schematisch afgebeeld als één enkele component van de applicatie 30, het is duidelijk dat alternatieve uitvoeringsvormen mogelijk zijn waarin de applicatiecode 32 bijvoorbeeld wordt voorzien als een meervoudig aantal verschillende componenten, bijvoorbeeld twee klassebestanden omvattende Java-bytecode of twee dex-bestanden omvattende Dalvik-bytecode. Het mag duidelijk zijn dat hetzelfde ook geldt voor de verbeterde applicatiecode 132 van de verbeterde applicatie 130 van de afgebeelde uitvoeringsvormen. Volgens alternatieve uitvoeringsvormen kan de build-tool 20 de verbeterde applicatiecode 132 ook leveren als een meervoudig aantal verschillende componenten van de verbeterde applicatie. Het is duidelijk dat nog verdere alternatieve uitvoeringsvormen mogelijk zijn, op voordwaarde dat in het algemeen de build-tool 20 een applicatie 30 ontvangt omvattende ten minste één gevoelige applicatiecomponent 34 en applicatiecode 32 tijdens een build-operatie.
[89] Hoewel volgens de hierboven beschreven uitvoeringsvormen de geëncrypteerde gevoelige applicatiecomponenten 34 schematisch worden afgebeeld als zijnde in hun geheel geëncrypteerd, is het duidelijk dat alternatieve uitvoeringsvormen mogelijk zijn, op voorwaarde dat in het algemeen de geëncrypteerde gevoelige applicatiecomponenten ten minste gedeeltelijk geëncrypteerd zijn.
[90] Het is verder ook duidelijk dat, in het algemeen, de verbeterde applicatie 130 geen encryptiemodule 42 en/of een verwijzing naar de encryptiemodule 42 omvat. Toch is de verbeterde applicatie 130 tijdens het uitvoeren in staat om automatisch de geëncrypteerde applicatiecomponenten te decrypteren door middel van de toegevoegde decryptiemodules 146.
[91] Figuur 10 geeft een uitvoeringsvorm weer van een door een computer geïmplementeerde methode 100 voor het bedrijven van het build-systeem 10 tijdens een build-operatie zoals algemeen hierboven omschreven. De door een computer geïmplementeerde methode wordt dus algemeen uitgevoerd tijdens een build-operatie 100. Zoals afgebeeld in stap 102 ontvangt de build-tool 20 de applicatie 30 omvattende de applicatiecode en ten minste één gevoelige applicatiecomponent. In stap 104 genereren de build-tool 20 en de encryptiemodule 42 de ten minste één ten minste gedeeltelijk geëncrypteerde applicatiecomponent 134 op basis van de ten minste één gevoelige applicatiecomponent 34. In stap 106 genereert de build-tool 20 de bijbehorende toegevoegde decryptiemodules 146 die moeten worden ingevoegd in de verbeterde applicatiecode 132 die in stap 108 is gegenereerd. Zoals afgebeeld in stap 110, genereert de build-tool 20 daarbij de verbeterde applicatie 130.
[92] Tijdens een daaropvolgende uitvoering 200 van de verbeterde applicatie 130, zoals afgebeeld in Figuur 11, bijvoorbeeld tijdens gebruik door een eindgebruiker op een geschikte computer, worden de volgende stappen uitgevoerd. In stap 202 zal de verbeterde applicatiecode 132 worden uitgevoerd tot de verbeterde applicatiecode 132 in stap 204 toegang verzoekt tot een geëncrypteerde applicatiecomponent 134. In stap 206 wordt vervolgens toegang tot deze geëncrypteerde applicatiecomponent 134 voorzien door de bijbehorende toegevoegde decryptiemodule 146 in de verbeterde applicatiecode 132 die automatisch de ten minste gedeeltelijk geëncrypteerde applicatiecomponent 134 decrypteert. Zoals afgebeeld kan de uitvoering van de verbeterde applicatiecode 132 vervolgens verdergaan in stap 202. Het is duidelijk dat nog verdere uitvoeringsvormen van de methode voor het bedrijven van het build-systeem 10 mogelijk zijn, bijvoorbeeld in lijn met de verschillende uitvoeringsvormen van het build-systeem 10 zoals hierboven omschreven en variaties of combinaties daarvan.
[93] Het is duidelijk dat volgens een specifieke voorkeursuitvoeringsvorm, de methode om het build-systeem te bedrijven zoals beschreven met verwijzing naar Figuur 10, iteratief wordt uitgevoerd tijdens een meervoudige aantal iteraties. Dit betekent bijvoorbeeld dat de applicatie 30 die wordt ontvangen door het build-systeem 10 om een volgende iteratie van deze methode uit te voeren, ten minste gedeeltelijk de verbeterde applicatie 130 omvat die is gegenereerd door het build-systeem 10 tijdens een vorige iteratie van de methode. Dit kan bijvoorbeeld worden gerealiseerd door de verbeterde applicatie 130 die is gegenereerd door de build-tool als een output-softwarepakket 20, vervolgens tijdens ten minste één verdere iteratie opnieuw te leveren als een input-softwarepakket omvattende een applicatie 30 aan dezelfde of een andere build-tool 20 tijdens de build-operatie. Op deze manier kunnen meerdere onafhankelijke beveiligingslagen worden gerealiseerd tijdens de build-operatie. Volgens een dergelijke uitvoeringsvorm kan de methode, tijdens de build-operatie, bijvoorbeeld tijdens een eerste iteratie een verbeterde applicatie 130 genereren omvattende een toegevoegde decryptiemodule 146 en een toegevoegde decryptiesleutel 154, bijvoorbeeld zoals afgebeeld in de uitvoeringsvorm van Figuur 5. Tijdens een volgende iteratie kan de methode vervolgens verdergaan door de verbeterde applicatie 130 die is gegenereerd door de build-tool 20 volgens de uitvoeringsvorm van Figuur 5 aan te leveren als een applicatie 30 voor de build-tool volgens de uitvoeringsvorm van Figuur 9. Tijdens deze volgende iteratie zal de build-tool 20 van de uitvoeringsvorm van Figuur 9 bijvoorbeeld de toegevoegde decryptiemodule 146 of de toegevoegde decryptiesleutel 154 van de verbeterde applicatie 130 selecteren die is gegenereerd tijdens de vorige iteratie als een gevoelige applicatiecomponent 34 van de applicatie 30 voor deze volgende iteratie. Het is duidelijk dat vervolgens tijdens deze volgende iteratie de build-tool 20 van de uitvoeringsvorm van Figuur 9 bijvoorbeeld ten minste gedeeltelijk geëncrypteerde applicatiecomponenten 134 kan genereren op basis van deze geselecteerde applicatiecomponenten 34. Volgens deze uitvoeringsvorm wordt er op deze manier, door het aaneenschakelen of het itererend uitvoeren van beide uitvoeringsvormen van de build-tool, uiteindelijk een verbeterde applicatie 130 voorzien waarbij bijvoorbeeld de toegevoegde decryptiesleutel van een eerste iteratie verder werd geëncrypteerd tijdens een tweede iteratie. Door decryptiemodules en/of decryptiesleutels die werden toegevoegd aan een verbeterde applicatie te behandelen als gevoelige applicatiecomponenten 34 tijdens een volgende iteratie, wordt een beveiligingsniveau op meerdere niveaus gerealiseerd tijdens de build-operatie. Het is duidelijk dat dit kan worden gerealiseerd zonder de complexiteit van de build-operatie te verhogen. Het is ook duidelijk dat, zelfs wanneer een encryptiemethode met meerdere niveaus wordt toegepast, decryptie automatisch en efficiënt kan worden toegepast door de verbeterde applicatie zelf tijdens het uitvoeren van de verbeterde applicatie na daaropvolgende distributie en zonder de noodzaak aan enige externe resources.
[94] Figuur 12 geeft een geschikt computersysteem 300, 400 weer voor het hosten van het build-systeem 10 of eender welke van zijn componenten zoals de build-tool 20, de build-tool plugin 40, enz. zoals beschreven met verwijzing naar de hierboven vermelde uitvoeringsvormen. Computersysteem 300 kan algemeen worden gevormd als een geschikte computer voor algemene doeleinden en een bus 310, een processor 302, een lokaal geheugen 304, één of meerdere optionele invoerinterfaces 314, één of meerdere optionele uitvoerinterfaces 316, een communicatie-interface 312, een opslagelementinterface 306 en één of meerdere opslagelementen 308 omvatten. Bus 310 kan één of meerdere geleiders omvatten die communicatie toelaten tussen de componenten van het computersysteem. Processor 302 kan eender welk type conventionele processor of microprocessor omvatten die programmeringsinstructies interpreteert en uitvoert. Lokaal geheugen 304 kan een Random Acces Memory (RAM) of eender welk ander type dynamisch opslagapparaat omvatten dat informatie en instructies opslaat om te worden uitgevoerd door processor 302 en/of een Read Only Memory (ROM) of eender welk ander type statisch opslagapparaat dat statische informatie en instructies opslaat voor gebruik door processor 302. Invoerinterface 314 kan één of meerdere conventionele mechanismen omvatten die een operator in staat stellen om informatie in te voeren in het computersysteem 300, zoals een toetsenbord 320, een muis 330, een pen, stemherkenning en/of biometrische mechanismen enz. Uitvoerinterface 316 kan één of meerdere conventionele mechanismen omvatten die informatie uitvoeren naar de operator, zoals een display 340, een printer, een luidspreker enz.
Communicatie-interface 312 kan één of meerdere zendontvangerachtig mechanismen omvatten zoals twee ethernetinterfaces van 1 Gb die computersysteem 300 in staat stellen om te communiceren met andere apparaten en/of systemen, bijvoorbeeld mechanismen om te communiceren met één of meerdere andere computersystemen 400. De communicatie-interface 312 van computersysteem 300 kan verbonden zijn met dergelijk ander computersysteem 400 door middel van een LAN (local area network) of WAN (wide area network), zoals het internet. Opslagelementinterface 306 kan een opslaginterface omvatten zoals een SATA-interface (Serial Advanced Technology Attachment) of een SCSI (Small Computer System Interface) om bus 310 te verbinden met één of meerdere opslagelementen 308, zoals één of meerdere lokale schijven, bijvoorbeeld 1TB SATA-schijfstations, en het lezen en schrijven van gegevens naar en/of van deze opslagelementen 308 te besturen. Hoewel de opslagelementen 308 hierboven worden beschreven als een lokale schijf, kunnen algemeen ook eender welke andere door een computer leesbare media worden gebruikt, zoals een verwijderbare magnetische schijf, optische opslagmedia zoals een CD- of DVD-ROM, SSD's, flashgeheugenkaarten enz.
[95] Het build-systeem 10 volgens de hierboven vermelde uitvoeringsvormen kan worden geïmplementeerd door middel van een geschikt build-automatiseringshulpprogramma dat wordt uitgevoerd op een computersysteem 300 dat lokaal ter beschikking staat van een ontwikkelaar, zoals een persoonlijke computer, laptop, enz. of op een op afstand toegankelijk computersysteem zoals één of meerdere servers die ter beschikking staan van een meervoudig aantal applicatieontwikkelaars. Als alternatief kan het build-systeem 10 ook build-automatiseringsservers omvatten, bijvoorbeeld omvattende webgebaseerde build-tools die build-automatiseringshulpprogramma's uitvoeren op een geplande of getriggerde basis, bijvoorbeeld als een continue integratieserver. Het is duidelijk dat de componenten zoals de build-tool 20, de build-tool plugin 40, de encryptiemodule 42, de decryptiemodule 46, enz. en hun bijbehorende door een computer geïmplementeerde methode kunnen worden geïmplementeerd als programmeerinstructies die worden opgeslagen in het lokale geheugen 304 van het computersysteem 300 om te worden uitgevoerd door zijn processor 302. Als alternatief kunnen deze componenten worden opgeslagen op het opslagelement 308 of toegankelijk zijn vanaf een ander computersysteem 400 via de communicatie-interface 312. In het algemeen worden het build-systeem 10 en de bijbehorende door een computer geïmplementeerde methode op deze manier voorzien als een computerprogramma omvattende softwarecode die is aangepast om deze door een computer geïmplementeerde methode te realiseren indien uitgevoerd door een computersysteem. Als alternatief kunnen het build-systeem 10 en de bijbehorende door een computer geïmplementeerde methode ook worden voorzien als een door een computer leesbaar opslagmedium omvattende door een computer uitvoerbare instructies die, indien gerealiseerd door een computersysteem de door een computer geïmplementeerde methode uitvoeren.
[96] Hoewel de onderhavige uitvinding werd geïllustreerd aan de hand van specifieke uitvoeringsvormen, zal het voor de vakman duidelijk zijn dat de uitvinding niet is beperkt tot de details van de voorgaande illustratieve uitvoeringsvormen, en dat de onderhavige uitvinding kan worden uitgevoerd met verschillende wijzigingen en aanpassingen zonder daarbij het toepassingsgebied van de uitvinding te verlaten. De onderhavige uitvoeringsvormen moeten daarom op alle vlakken worden beschouwd als illustratief en niet restrictief, waarbij het toepassingsgebied van de uitvinding wordt beschreven door de bijgevoegde conclusies en niet door de voorgaande beschrijving, en alle wijzigingen die binnen het toepassingsgebied van de conclusies vallen, zijn hier derhalve mee opgenomen.
[97] Bovendien zal de lezer van deze octrooiaanvraag begrijpen dat de woorden "omvattende" of "omvatten" andere elementen of stappen niet uitsluiten, dat het woord "een" geen meervoud uitsluit, en dat een enkelvoudig element, zoals een computersysteem, een processor of een andere geïntegreerde eenheid de functies van verschillende hulpmiddelen kunnen vervullen die in de conclusies worden vermeld. Eventuele verwijzingen in de conclusies mogen niet worden opgevat als een beperking van de conclusies in kwestie. De termen "eerste", "tweede", "derde", "a", "b", "c" en dergelijke, wanneer gebruikt in de beschrijving of in de conclusies, worden gebruikt om het onderscheid te maken tussen soortgelijke elementen of stappen en beschrijven niet noodzakelijk een opeenvolgende of chronologische volgorde. Op dezelfde manier worden de termen "bovenkant", "onderkant", "over", "onder" en dergelijke gebruikt ten behoeve van de beschrijving en verwijzen ze niet noodzakelijk naar relatieve posities. Het moet worden begrepen dat die termen onderling verwisselbaar zijn onder de juiste omstandigheden en dat uitvoeringsvormen van de uitvinding in staat zijn om te functioneren volgens de onderhavige uitvinding in andere volgordes of oriëntaties dan hierboven beschreven of geïllustreerd.

Claims (17)

  1. CONCLUSIES
    1. Een build-systeem (10) voor het genereren van een verbeterde applicatie (130) omvattende ten minste één geëncrypteerde applicatiecomponent (134) tijdens een build-operatie, genoemd build-systeem (10) omvattende: - een build-tool (20) die is geconfigureerd voor het ontvangen van een applicatie (30) omvattende applicatiecode (32) en ten minste één applicatiecomponent (34); en - ten minste één build-tool plugin (40), gekoppeld aan genoemde build-tool (20) tijdens een build-operatie, de build-tool plugin (40) omvattende een encryptiemodule (42) en een bijbehorende decryptiemodule (46), - de build-tool (20) zijnde geconfigureerd om tijdens de build-operatie een verbeterde applicatie (130) te genereren omvattende ten minste één ten minste gedeeltelijk geëncrypteerde applicatiecomponent (134) en verbeterde applicatiecode (132): - de ten minste één ten minste gedeeltelijk geëncrypteerde applicatiecomponent (134) zijnde gegenereerd door de encryptiemodule (42) op basis van de ten minste één applicatiecomponent (34), en - de verbeterde applicatiecode (132) zijnde gegenereerd door de build-tool (20) op basis van de applicatiecode (32) door respectievelijk de bijbehorende decryptiemodule (46) toe te voegen als een bijbehorende toegevoegde decryptiemodule (146) zodat, tijdens het uitvoeren, wanneer benaderd door de verbeterde applicatiecode (132), de bijbehorende ten minste gedeeltelijk geëncrypteerde applicatiecomponent (134) automatisch wordt gedecrypteerd door de bijbehorende toegevoegde decryptiemodule (146).
  2. 2. Een build-systeem volgens conclusie 1, met het kenmerk dat de ten minste één applicatiecomponent (34) respectievelijk één of meerdere van het volgende omvat: - gegevens; - een verwijzing naar gegevens; - softwarecode, die, tijdens uit uitvoeren, worden benaderd door de verbeterde applicatiecode (132).
  3. 3. Een build-systeem volgens conclusie 1 of 2, met het kenmerk dat de ten minste één applicatiecomponent (34) respectievelijk één of meerdere van het volgende omvat: - gegevens omvattende of representatief zijnde voor één of meerdere van het volgende: - tekstgegevens, stringgegevens, afbeeldingsgegevens, audiogegevens, videogegevens, animatiegegevens, lay-outgegevens, stijlgegevens, kleurgegevens, menugegevens, configuratiegegevens, metadata, tokens; - een applicatie-resource; - een applicatie-asset; - een verwijzing naar gegevens omvattende één of meerdere van het volgende: - een identificator; - een naam; - een numerieke identificator; - een applicatie-resource-identificator; - een applicatie-asset-identificator; - softwarecode omvattende één of meerdere van het volgende: - een deel van de applicatiecode (32) - verdere applicatiecode, afzonderlijk van de applicatiecode (32); - verdere applicatiecode in een programmeertaal die verschilt van de applicatiecode (32); - native code; - bytecode; - broncode.
  4. 4. Een build-systeem volgens één van de vorige conclusies, met het kenmerk dat de build-tool (20) is geconfigureerd om: - de applicatie (30) te ontvangen als een input-softwarepakket omvattende de applicatiecode (32) en de ten minste één applicatiecomponent (34); en - de verbeterde applicatie (130) te genereren als een output-softwarepakket omvattende de verbeterde applicatiecode (132) en de ten minste één ten minste gedeeltelijk geëncrypteerde applicatiecomponent (134).
  5. 5. Een build-systeem volgens één van de voorgaande conclusies, met het kenmerk dat de verbeterde applicatie (130) geen encryptiemodule (42) en/of een verwijzing naar de encryptiemodule (42) omvat.
  6. 6. Een build-systeem volgens één van de vorige conclusies, met het kenmerk dat de build-tool (20) is geconfigureerd om de toegevoegde decryptiemodule (146) te genereren als één of meerdere van het volgende: - een kopie van de decryptiemodule (46); - een geconverteerde versie van de decryptiemodule (46); - een gecompileerde versie van de decryptiemodule (46); - een geobfusceerde versie van de decryptiemodule (46).
  7. 7. Een build-systeem volgens één van de voorgaande conclusies, met het kenmerk dat de build-tool (20) is verder geconfigureerd om, tijdens de buikoperatie, de decryptiemodule (46) toe te voegen aan de verbeterde applicatie (130) als een toegevoegde decryptiemodule (146) omvattende twee of meerdere aparte decryptiemoduleonderdelen (147.1, 147.2) op verschillende locaties in de verbeterde applicatiecode (132).
  8. 8. Een build-systeem volgens één van de vorige conclusies, met het kenmerk dat: - het build-systeem (10) twee of meerdere build-tool plugins (40) omvat, waarbij de build-tool (20) is geconfigureerd om op verschillende tijdstippen tijdens de build-operatie gebruikte maken van een verschillende build-tool plugin (40); en/of dat - de build-tool (20) is geconfigureerd om voor een decryptiemodule (46) van een build-tool plugin (40) op verschillende tijdstippen tijdens de build-operatie verschillende variaties te genereren van de toegevoegde decryptiemodule (146).
  9. 9. Een build-systeem volgens één van de vorige conclusies, met het kenmerk dat: - de encryptiemodule (42) twee of meerdere encryptiealgoritmes (44) omvat en de decryptiemodule (46) twee of meerdere bijbehorende decryptiealgoritmes (48) omvat, en dat - op verschillende tijdstippen tijdens de build-operatie het build-systeem (10) verder is geconfigureerd om: - applicatiecomponenten (34) te encrypteren door middel van verschillende encryptiealgoritmes (44.1,44.2); en - verschillende bijbehorende toegevoegde decryptiealgoritmes (148.1, 148.2) toe te voegen aan de verbeterde applicatiecode (132) die is gegenereerd op basis van de verschillende bijbehorende decryptiealgoritmes (48.1,48.2).
  10. 10. Een build-systeem volgens conclusie 8 of 9, met het kenmerk dat het build-systeem (10) verder is geconfigureerd om de applicatiecomponenten (34) te encrypteren door middel van de verschillende build-tool plugins (40) en/of verschillende encryptiealgoritmes (44.1, 44.2) volgens één of meerdere van het volgende: - willekeurig; - afhankelijk van de gegevensgrootte van de applicatiecomponent (34); - afhankelijk van het gegevenstype van de applicatiecomponent (34); - afhankelijk van één of meerdere eigenschappen van de applicatiecomponent (34).
  11. 11. Een build-systeem volgens één van de vorige conclusies, met het kenmerk dat de build-tool plugin (40) verder een beveiligingssleutelgenerator (50) omvat die is geconfigureerd om encryptiesleutels (52) te genereren voor gebruik door de encryptiemodule (42) tijdens de build-operatie en bijbehorende decryptiesleutels (54) voor gebruik door de toegevoegde decryptiemodule (146) tijdens het uitvoeren, en waarbij de build-tool (20) verder is geconfigureerd om tijdens de build-operatie de verbeterde applicatie (130) te genereren door de decryptiesleutels (54) toe te voegen als toegevoegde decryptiesleutels (154), zodat tijdens het uitvoeren, wanneer benaderd door de verbeterde applicatiecode (132), de bijbehorende ten minste gedeeltelijk geëncrypteerde applicatiecomponent (134) automatisch wordt gedecrypteerd door de bijbehorende toegevoegde decryptiemodule (146) gebruik makende van de bijbehorende toegevoegde decryptiesleutels (154).
  12. 12. Een build-systeem volgens conclusie 11, met het kenmerk dat de sleutelgenerator (50) verder is geconfigureerd om tijdens de build-operatie automatisch verschillende encryptie- en bijbehorende decryptiesleutels (52, 54) te genereren: - willekeurig; - afhankelijk van de gegevensgrootte van de applicatiecomponent (34); - afhankelijk van het gegevenstype van de applicatiecomponent (34); - afhankelijk van één of meerdere eigenschappen van de applicatiecomponent (34); - voor elke applicatiecomponent (34); - voor elke vooraf bepaalde groep van applicatiecomponenten (34); en/of - voor elke encryptiemodule (42) en bijbehorende decryptiemodule (46), de build-tool (20) zijnde geconfigureerd om de verbeterde applicatie (130) te genereren zodat, tijdens het uitvoeren, de verschillende toegevoegde decryptiesleutels (154) worden benaderd door de bijbehorende toegevoegde decryptiemodule (146) wanneer de bijbehorende ten minste gedeeltelijk geëncrypteerde applicatiecomponent (134) automatisch wordt gedecrypteerd.
  13. 13. Een build-systeem volgens conclusie 11 of 12, met het kenmerk dat de build-tool (20) verder is geconfigureerd om tijdens de build-operatie de decryptiesleutel (54) toe te voegen aan de verbeterde applicatie (130): - als een toegevoegde decryptiesleutel (154) omvattende twee of meerdere decryptiesleutelonderdelen (155.1, 155.2) op verschillende locaties in de verbeterde applicatie (130); en/of - als een toegevoegde decryptiesleutel (154) die ten minste gedeeltelijk verweven is met een andere toegevoegde decryptiesleutel (154) en/of een toegevoegde ten minste gedeeltelijk beveiligde applicatiecomponent (134).
  14. 14. Een build-systeem volgens één van de vorige conclusies, met het kenmerk dat het build-systeem verder is geconfigureerd om een applicatie (30) te ontvangen waarvan: - de applicatiecode (32) ten minste één van de applicatiecomponenten (34) omvat; en/of - de applicatie (30) ten minste één applicatiecomponent (34) omvat bovenop de applicatiecode (32), en/of dat het build-systeem verder is geconfigureerd om een verbeterde applicatie (130) te genereren waarvan: - de verbeterde applicatiecode (132) ten minste één van de ten minste gedeeltelijk geëncrypteerde applicatiecomponenten (134) omvat; - de verbeterde applicatie (130) ten minste één ten minste gedeeltelijk geëncrypteerde applicatiecomponent (134) omvat naast de verbeterde applicatiecode (132); - de verbeterde applicatie (130) ten minste één ten minste gedeeltelijk geëncrypteerde applicatiecomponent (134) omvat die gedeeltelijk vervat zit in de verbeterde applicatiecode (132) en gedeeltelijk is toegevoegd aan de verbeterde applicatie (130) naast de verbeterde applicatiecode (132); en/of - de verbeterde applicatie (130) ten minste twee ten minste gedeeltelijk geëncrypteerde applicatiecomponenten (134) omvat die met elkaar verweven zijn.
  15. 15. Een door een computer geïmplementeerde methode voor het bedrijven van een build-systeem (10) volgens één van de vorige conclusies, waarbij de methode de volgende stappen omvat: - de build-tool (20) ontvangt de applicatie (30) omvattende applicatiecode (32) en de ten minste één applicatiecomponent (34); - de build-tool (20) genereert tijdens de build-operatie een verbeterde applicatie (130) omvattende ten minste één ten minste gedeeltelijk geëncrypteerde applicatiecomponent (134) en verbeterde applicatiecode (132): - waarbij de encryptiemodule (42) de ten minste één ten minste gedeeltelijk geëncrypteerde applicatiecomponent (134) genereert op basis van de ten minste één applicatiecomponent (34), en - waarbij de build-tool (20) de verbeterde applicatiecode (132) genereert op basis van de applicatiecode (32) door respectievelijk de bijbehorende decryptiemodule (46) toe te voegen als een bijbehorende toegevoegde decryptiemodule (146) zodat, tijdens het uitvoeren, wanneer benaderd door de verbeterde applicatiecode (132), de bijbehorende ten minste gedeeltelijk geëncrypteerde applicatiecomponent (134) automatisch wordt gedecrypteerd door de bijbehorende toegevoegde decryptiemodule (146).
  16. 16. Een door een computer geïmplementeerde methode volgens conclusie 15, de methode omvattende de stappen van het uitvoeren van de methode om het build-systeem iteratief te bedrijven, zodat de applicatie (30) die door het build-systeem wordt ontvangen om een volgende iteratie uit te voeren van de methode om het build-systeem te bedrijven ten minste de verbeterde applicatie (130) omvat die is gegenereerd door het build-systeem tijdens een vorige iteratie van de methode om het build-systeem te bedrijven.
  17. 17. Een door een computer geïmplementeerde methode volgens conclusie 16, met het kenmerk dat de methode de volgende stappen omvat: - het selecteren, als applicatiecomponenten (34) voor de volgende iteratie, van ten minste een toegevoegde decryptiemodule (146) en/of een toegevoegde decryptiesleutel (154) van de verbeterde applicatie (130) die werd gegenereerd tijdens de vorige iteratie; en het genereren van ten minste gedeeltelijk geëncrypteerde applicatiecomponenten (134) op basis van deze geselecteerde applicatiecomponenten (34) tijdens de volgende iteratie.
BE2016/5992A 2015-12-29 2016-12-29 Een build-systeem BE1023400B1 (nl)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP15202885.8A EP3188063A1 (en) 2015-12-29 2015-12-29 A build system
EP15202885.8 2015-12-29

Publications (1)

Publication Number Publication Date
BE1023400B1 true BE1023400B1 (nl) 2017-03-08

Family

ID=55068884

Family Applications (1)

Application Number Title Priority Date Filing Date
BE2016/5992A BE1023400B1 (nl) 2015-12-29 2016-12-29 Een build-systeem

Country Status (4)

Country Link
US (1) US10713339B2 (nl)
EP (1) EP3188063A1 (nl)
BE (1) BE1023400B1 (nl)
WO (1) WO2017114931A1 (nl)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10394554B1 (en) * 2016-09-09 2019-08-27 Stripe, Inc. Source code extraction via monitoring processing of obfuscated byte code
CN108777611B (zh) * 2018-05-11 2021-06-18 吉林大学 基于双密钥流密码的双向链表顺序加密解密方法
CN110780884B (zh) * 2019-09-05 2022-04-12 腾讯科技(深圳)有限公司 一种信息处理方法、装置及设备
CN111159658B (zh) * 2019-12-16 2022-04-01 广州三七互娱科技有限公司 字节码处理方法、系统、装置、计算机设备和存储介质
CN111399846B (zh) * 2020-03-16 2023-03-31 北京五八信息技术有限公司 一种安卓手机应用程序容量监控方法及装置
CN111400736B (zh) * 2020-03-17 2022-07-22 同盾(广州)科技有限公司 应用程序加密的方法、装置、存储介质及电子设备
CN113765868B (zh) * 2020-08-17 2023-08-08 北京沃东天骏信息技术有限公司 一种业务处理方法和装置
CN113094665B (zh) * 2021-04-09 2022-08-05 每日互动股份有限公司 一种防止java程序被反编译的系统
CN115344832A (zh) * 2021-04-28 2022-11-15 开利消防及保安伊米有限公司 通过一起传递加密和数据的安全装置更新
CN113326481B (zh) * 2021-06-02 2023-07-14 北京联创新天科技有限公司 一种项目代码自动构建打包方法、装置、系统及介质
CN116204910B (zh) * 2023-04-27 2023-08-18 暗链科技(深圳)有限公司 插件化哈希加密方法、非易失性可读存储介质及电子设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2349250A (en) * 1998-02-13 2000-10-25 Nat Computer Board Method for protecting bytecode
US7877613B2 (en) * 2002-09-04 2011-01-25 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Protecting mobile code against malicious hosts
US9508218B2 (en) * 2006-11-10 2016-11-29 Bally Gaming, Inc. Gaming system download network architecture
US20080320463A1 (en) * 2007-06-25 2008-12-25 Harold Lee Peterson System, method and computer-readable medium for enhanced user deletion of software from a computer
EP2488982A4 (en) * 2009-10-12 2013-05-29 Safenet Inc SOFTWARE LICENSE EMBEDDED IN A SHELLCODE
EP2467800B1 (en) * 2009-11-13 2021-06-30 Irdeto B.V. System and method to protect java bytecode code against static and dynamic attacks within hostile execution environments
US20140173759A1 (en) * 2012-12-17 2014-06-19 Microsoft Corporation Rights-managed code
US8725645B1 (en) * 2013-01-04 2014-05-13 Cetrus LLC Non-invasive metering system for software licenses

Also Published As

Publication number Publication date
EP3188063A1 (en) 2017-07-05
WO2017114931A1 (en) 2017-07-06
US20180373848A1 (en) 2018-12-27
US10713339B2 (en) 2020-07-14

Similar Documents

Publication Publication Date Title
BE1023400B1 (nl) Een build-systeem
KR102107872B1 (ko) 컴파일러 기반 난독화 기법
US7730542B2 (en) Protecting software from unauthorized use by converting source code modules to byte codes
CN104166822B (zh) 一种数据保护的方法和装置
US7447912B2 (en) Protecting digital goods using oblivious checking
US7054443B1 (en) System and method for protecting digital goods using random and automatic code obfuscation
US8539459B2 (en) Code obfuscation and controlling a processor by emulation
CA2724793C (en) System and method for generating white-box implementations of software applications
US20170116410A1 (en) Software protection
US8583938B2 (en) From polymorphic executable to polymorphic operating system
US20050066181A1 (en) Method for watermarking computer programs
US20080288921A1 (en) Transformations for Software Obfuscation and Individualization
CN106663025A (zh) 用于混淆虚拟机上的应用程序的执行的方法、装置以及计算机可读介质
CN102982262B (zh) 用于开发的操作系统的安全机制
EP3398103B1 (en) A build system with plugins for encryption of application components
Mahan Exploring ransomware on the oculus quest 2
JP6752347B1 (ja) 情報処理装置、コンピュータプログラム及び情報処理方法
KR102177920B1 (ko) 원본코드 패킹장치 및 원본코드 패킹방법
TWI334573B (en) Application procedure processing methods and systems, and machine readable medium thereof
Dalla Preda et al. Exploiting number theory for dynamic software watermarking
Bove A Large-Scale Study on the Prevalence and Usage of TEE-based Features on Android
Lai et al. A Holistic Approach for Securing In-app Purchase (IAP) Vulnerability in Mobile Applications
Veseli HIKOS-Highly Secure, Intelligent Software Copy-Protection
Nilsson License protection for high-end software

Legal Events

Date Code Title Description
RC Pledge established (pawning)

Free format text: DETAILS PLEDGE: RIGHT OF PLEDGE, ETABLI

Name of requester: PNC BUSINESS CREDIT

Effective date: 20201201