Dynamic code obfuscation

The dynamic code obfuscation system using an AI model generates and regenerates a code obfuscation layer in response to trigger events, effectively preventing attackers from exploiting the underlying software by continuously changing its structure, offering superior security over traditional static methods.

WO2025160725A1PCT designated stage Publication Date: 2025-08-07LENOVO (BEIJING) LTD
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2024/074603
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-01-30
Publication Date
2025-08-07

AI Technical Summary

Technical Problem

Existing code obfuscation techniques are ineffective against persistent attackers due to their static nature, allowing attackers to gradually decipher the code over time, leading to successful exploitation.

Method used

A dynamic code obfuscation system using an artificial intelligence model generates and regenerates a code obfuscation layer in response to trigger events, making it difficult for attackers to understand the underlying software by continuously changing its structure.

Benefits of technology

The dynamic approach significantly enhances code security by thwarting attackers, requiring continuous resource investment to decipher the ever-changing obfuscation layer, thus providing superior protection compared to traditional static methods.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024074603_07082025_PF_FP_ABST
    Figure CN2024074603_07082025_PF_FP_ABST
Patent Text Reader

Abstract

One embodiment provides a method, the method including: generating, using an artificial intelligence model, a code obfuscation layer to be deployed for software, wherein the code obfuscation layer is locked to at least one input condition; deploying, using a code obfuscation system, the code obfuscation layer with the software; and dynamically regenerating, while the code obfuscation layer is deployed and using the code obfuscation system, the code obfuscation layer to change a structure of the code obfuscation layer, wherein the dynamically regenerating occurs in response to detection of at least one trigger event. Other aspects are claimed and described.
Need to check novelty before this filing date? Find Prior Art

Description

DYNAMIC CODE OBFUSCATIONBACKGROUND

[0001] Many different technologies utilize software code. In some cases, software code may be the only part of the technology. For example, in the artificial intelligence field, the software code is the basis of the artificial intelligence. Thus, software code is extremely important to the entity that is creating or implementing the code. The more complex the software code, the more resources and time is required for creating and implementing the software code. However, there is also incentive for attackers to attack and exploit the software code. Thus, it is crucial for the entity that is developing or implementing the software code to take steps to prevent attackers from exploiting the software code. Such prevention becomes more critical when sensitive information could be involved, when the software code is particularly significant or essential to the entity, and / or the like.

[0002] BRIEF SUMMARY

[0003] In summary, one aspect provides a method, the method including: generating, using an artificial intelligence model, a code obfuscation layer to be deployed for software, wherein the code obfuscation layer is locked to at least one input condition; deploying, using a code obfuscation system, the code obfuscation layer with the software;  and dynamically regenerating, while the code obfuscation layer is deployed and using the code obfuscation system, the code obfuscation layer to change a structure of the code obfuscation layer, wherein the dynamically regenerating occurs in response to detection of at least one trigger event.

[0004] Another aspect provides a system, the system including: a processor; a memory device that stores instructions that, when executed by the processor, causes the system to: generate, using an artificial intelligence model, a code obfuscation layer to be deployed for software, wherein the code obfuscation layer is locked to at least one input condition; deploy, using a code obfuscation system, the code obfuscation layer with the software; and dynamically regenerate, while the code obfuscation layer is deployed and using the code obfuscation system, the code obfuscation layer to change a structure of the code obfuscation layer, wherein the dynamically regenerating occurs in response to detection of at least one trigger event.

[0005] A further aspect provides a product, the product including: a computer-readable storage device that stores executable code that, when executed by a processor, causes the product to: generate, using an artificial intelligence model, a code obfuscation layer to be deployed for software, wherein the code obfuscation layer is locked to at least one input condition; deploy, using a code obfuscation system, the code obfuscation layer with the software; and dynamically regenerate, while the code obfuscation layer is  deployed and using the code obfuscation system, the code obfuscation layer to change a structure of the code obfuscation layer, wherein the dynamically regenerating occurs in response to detection of at least one trigger event.

[0006] The foregoing is a summary and thus may contain simplifications, generalizations, and omissions of detail; consequently, those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way limiting.

[0007] For a better understanding of the embodiments, together with other and further features and advantages thereof, reference is made to the following description, taken in conjunction with the accompanying drawings. The scope of the invention will be pointed out in the appended claims.

[0008] BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

[0009] FIG. 1 illustrates an example of information handling device circuitry.

[0010] FIG. 2 illustrates another example of information handling device circuitry.

[0011] FIG. 3 illustrates an example method for generating and deploying a code obfuscation layer with software so as to obfuscate code of the software and dynamically regenerating the code obfuscation layer while it is deployed upon detection of a trigger event.DETAILED DESCRIPTION

[0012] It will be readily understood that the components of the embodiments, as generally described and illustrated in the figures herein, may be arranged and designed in a wide variety of different configurations in addition to the described example embodiments. Thus, the following more detailed description of the example embodiments, as represented in the figures, is not intended to limit the scope of the embodiments, as claimed, but is merely representative of example embodiments.

[0013] Reference throughout this specification to “one embodiment” or “an embodiment” (or the like) means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. Thus, the appearance of the phrases “in one embodiment” or “in an embodiment” or the like in various places throughout this specification are not necessarily all referring to the same embodiment.

[0014] Furthermore, the described features, structures, or characteristics may be combined in any suitable manner in one or more embodiments. In the following description, numerous specific details are provided to give a thorough understanding of embodiments. One skilled in the relevant art will recognize, however, that the various embodiments can be practiced without one or more of the specific details, or with other  methods, components, materials, et cetera. In other instances, well known structures, materials, or operations are not shown or described in detail to avoid obfuscation.

[0015] Software can be susceptible to different attacks. For example, attackers may want to steal the software code, exploit weaknesses or vulnerabilities in the code in order to gain access to sensitive information, modify the software code to perform functions desired by the attacker, and / or the like. Generally, attackers examine the software code to identify potential vulnerabilities, mistakes, coding errors, security flaws, misconfigurations, weak algorithms, and / or the like, in order to carry out the desired attack. This results in entities spending significant time and resources in order to prevent such attacks. Additionally, if such an attack is successful, the entity spends time and resources to address the attack. For example, the entity may have to spend time and resources to fix the software code to address any exploited vulnerabilities, provide restitution to any consumers or other entities who were affected by the successful attack, spend time and resources in attempting to recoup any reputation loss, and / or the like.

[0016] Accordingly, entities expend time and resources to prevent attackers from accessing and exploiting software code. One technique for preventing attackers from accessing and exploiting software code is to obfuscate the software code. This makes it harder for an attacker to get a full view of the software code, thereby making it difficult to exploit the code and carry out a successful attack. One technique of code obfuscation is  code splitting. In this technique, the code is broken into smaller files or functions and then distributed among different locations. This makes it harder to locate and understand the entire codebase. Another technique is code encryption where the some or all of the code is encrypted using encryption algorithms. At runtime, the code is decrypted. The encryption makes the code difficult to read and understand without proper decryption keys. Another technique is dead code injection where irrelevant or redundant code snippets are injected into the code to make it harder to understand the actual functionality of the code. A final example technique is string obfuscation. In string obfuscation, string literals, such as passwords, API keys, and / or the like, in the code are encrypted or encoded to prevent them from being easily discovered through simple text searches. Additionally, combinations of these obfuscation techniques may be utilized.

[0017] Traditional methods of code obfuscation, even when used in combination, have been proven to be ineffective in preventing attacks because attackers have access to tools that are able to be used to learn about the software code and reduce the length of time it takes for an attack to be successful. For example, attackers may use automatic scanners, code de-obfuscators, and other tools that are designed to learn about software code. Additionally, because the traditional obfuscation techniques are static, the attackers have a significant length of time to perform a successful attack. In other words, the attackers can continually review the software code and learn new information about the  code over time, thereby allowing for a successful attack. For example, with encrypted code, the attacker can continuously try different decryption techniques. Over time, the attacker can eventually learn the decryption keys and unlock the code.

[0018] Accordingly, the described system and method provides a technique for generating and deploying a code obfuscation layer with software so as to obfuscate code of the software and dynamically regenerating the code obfuscation layer while it is deployed upon detection of a trigger event. Rather than providing a static obfuscation technique, the described technique results in a dynamic obfuscation technique that allows for the obfuscation to change over time, making it harder for an attacker to get an overall picture of the code, thereby preventing an attacker from being able to exploit the code. Additionally, the described dynamic code obfuscation technique can be used in conjunction with the traditional static obfuscation techniques which increases the magnitude of difficult in exploiting the code.

[0019] The described system utilizes an artificial intelligence model to generate a code obfuscation layer to be deployed for software. The code obfuscation layer is used in conjunction with the software code and appears to be genuine source code and is first encountered by an attacker. The code obfuscation layer is located with at least one input condition. If the input condition is met, the code obfuscation layer is unlocked and the software code executes as designed. If, however, the input condition is not met, the code  obfuscation layer remains locked and effectively prevents an entity who is attempting to access the software code from accessing the software code. The input condition may be a device dependent condition, for example, the machine the software code is to run upon, Digital Rights Management (DRM) conditions, authorizations, and / or other factors. The code obfuscation layer is then deployed with the software.

[0020] During deployment, the code obfuscation layer is dynamically regenerated, thereby causing the code of the code obfuscation layer to change. For example, the structure of the code obfuscation layer may change. This creates an ever-changing layer of code that makes it very difficult for an entity who cannot satisfy the input condition to ever get access to the software code or even get a picture of the code obfuscation layer so that it can be exploited. The regeneration may occur at any time and may occur in response to detection of a trigger event. The trigger event may be a non-device specific event, for example, a change in time, a change in weather, a change in the stock market, meeting a particular constraint (e.g., a time frame, a geographical region, etc. ) , and / or the like. The trigger event can be modifiable and the frequency of the dynamic regeneration may also be adjustable.

[0021] Therefore, a system provides a technical improvement over traditional methods for code obfuscation. Instead of relying on static obfuscation techniques that can be identified and broken over time, the described system and method provides a dynamic  obfuscation technique. This makes it extremely difficult for an entity that is unable to meet the input condition to understand the code obfuscation layer, let alone the underlying software code that is being protected. Thus, the underlying software code is afforded more security than using traditional static obfuscation techniques. Additionally, since the parameters of the dynamic regeneration can be adjusted, entities deploying such a strategy can adjust the parameters to increase or decrease a level of security. The tradeoff for an increase in security is an increase in resources required for regenerating the obfuscation layer. Accordingly, the described system and method provides a more secure technique for protecting software code than traditional obfuscation techniques.

[0022] The illustrated example embodiments will be best understood by reference to the figures. The following description is intended only by way of example, and simply illustrates certain example embodiments.

[0023] While various other circuits, circuitry or components may be utilized in information handling devices, with regard to smart phone and / or tablet circuitry 100, an example illustrated in FIG. 1 includes a system on a chip design found for example in tablet or other mobile computing platforms. Software and processor (s) are combined in a single chip 110. Processors comprise internal arithmetic units, registers, cache memory, busses, input / output (I / O) ports, etc., as is well known in the art. Internal busses and the like depend on different vendors, but essentially all the peripheral devices (120) may  attach to a single chip 110. The circuitry 100 combines the processor, memory control, and I / O controller hub all into a single chip 110. Also, systems 100 of this type do not typically use serial advanced technology attachment (SATA) or peripheral component interconnect (PCI) or low pin count (LPC) . Common interfaces, for example, include secure digital input / output (SDIO) and inter-integrated circuit (I2C) .

[0024] There are power management chip (s) 130, e.g., a battery management unit, BMU, which manage power as supplied, for example, via a rechargeable battery 140, which may be recharged by a connection to a power source (not shown) . In at least one design, a single chip, such as 110, is used to supply basic input / output system (BIOS) like functionality and dynamic random-access memory (DRAM) memory.

[0025] System 100 typically includes one or more of a wireless wide area network (WWAN) transceiver 150 and a wireless local area network (WLAN) transceiver 160 for connecting to various networks, such as telecommunications networks and wireless Internet devices, e.g., access points. Additionally, devices 120 are commonly included, e.g., a wireless communication device, external storage, etc. System 100 often includes a touch screen 170 for data input and display / rendering. System 100 also typically includes various memory devices, for example flash memory 180 and synchronous dynamic random-access memory (SDRAM) 190.

[0026] FIG. 2 depicts a block diagram of another example of information handling device circuits, circuitry, or components. The example depicted in FIG. 2 may correspond to computing systems such as personal computers, or other devices. As is apparent from the description herein, embodiments may include other features or only some of the features of the example illustrated in FIG. 2.

[0027] The example of FIG. 2 includes a so-called chipset 210 (agroup of integrated circuits, or chips, that work together, chipsets) with an architecture that may vary depending on manufacturer. The architecture of the chipset 210 includes a core and memory control group 220 and an I / O controller hub 250 that exchanges information (for example, data, signals, commands, etc. ) via a direct management interface (DMI) 242 or a link controller 244. In FIG. 2, the DMI 242 is a chip-to-chip interface (sometimes referred to as being a link between a “northbridge” and a “southbridge” ) . The core and memory control group 220 include one or more processors 222 (for example, single or multi-core) and a memory controller hub 226 that exchange information via a front side bus (FSB) 224; noting that components of the group 220 may be integrated in a chip that supplants the conventional “northbridge” style architecture. One or more processors 222 comprise internal arithmetic units, registers, cache memory, busses, I / O ports, etc., as is well known in the art.

[0028] In FIG. 2, the memory controller hub 226 interfaces with memory 240 (for example, to provide support for a type of random-access memory (RAM) that may be referred to as “system memory” or “memory” ) . The memory controller hub 226 further includes a low voltage differential signaling (LVDS) interface 232 for a display device 292 (for example, a cathode-ray tube (CRT) , a flat panel, touch screen, etc. ) . A block 238 includes some technologies that may be supported via the low-voltage differential signaling (LVDS) interface 232 (for example, serial digital video, high-definition multimedia interface / digital visual interface (HDMI / DVI) , display port) . The memory controller hub 226 also includes a PCI-express interface (PCI-E) 234 that may support discrete graphics 236.

[0029] In FIG. 2, the I / O hub controller 250 includes a SATA interface 251 (for example, for hard-disc drives (HDDs) , solid-state drives (SSDs) , etc., 280) , a PCI-E interface 252 (for example, for wireless connections 282) , a universal serial bus (USB) interface 253 (for example, for devices 284 such as a digitizer, keyboard, mice, cameras, phones, microphones, storage, other connected devices, etc. ) , a network interface 254 (for example, local area network (LAN) ) , a general purpose I / O (GPIO) interface 255, a LPC interface 270 (for application-specific integrated circuit (ASICs) 271, a trusted platform module (TPM) 272, a super I / O 273, a firmware hub 274, BIOS support 275 as well as various types of memory 276 such as read-only memory (ROM) 277, Flash 278, and non- volatile RAM (NVRAM) 279) , a power management interface 261, a clock generator interface 262, an audio interface 263 (for example, for speakers 294) , a time controlled operations (TCO) interface 264, a system management bus interface 265, and serial peripheral interface (SPI) Flash 266, which can include BIOS 268 and boot code 290. The I / O hub controller 250 may include gigabit Ethernet support.

[0030] The system, upon power on, may be configured to execute boot code 290 for the BIOS 268, as stored within the SPI Flash 266, and thereafter processes data under the control of one or more operating systems and application software (for example, stored in system memory 240) . An operating system may be stored in any of a variety of locations and accessed, for example, according to instructions of the BIOS 268. As described herein, a device may include fewer or more features than shown in the system of FIG. 2.

[0031] Information handling device circuitry, as for example outlined in FIG. 1 or FIG. 2, may be used in devices such as tablets, smart phones, personal computer devices generally, and / or electronic devices, which may be used in devices or systems that are set up for zero touch configuration, environments that communicate with devices, and / or the like. For example, the circuitry outlined in FIG. 1 may be implemented in a tablet or smart phone embodiment, whereas the circuitry outlined in FIG. 2 may be implemented in a personal computer embodiment.

[0032] FIG. 3 illustrates an example method for generating and deploying a code obfuscation layer with software so as to obfuscate code of the software and dynamically regenerating the code obfuscation layer while it is deployed upon detection of a trigger event. The method may be implemented on a system which includes a processor, memory device, output devices (e.g., display device, printer, etc. ) , input devices (e.g., keyboard, touch screen, mouse, microphones, sensors, biometric scanners, etc. ) , image capture devices, and / or other components, for example, those discussed in connection with FIG. 1 and / or FIG. 2. While the system may include known hardware and software components and / or hardware and software components developed in the future, the system itself is specifically programmed to perform the functions as described herein to obfuscate software code and continually update the obfuscation so as to reduce the ability of attackers or other unauthorized entities to understand the software code. Additionally, the code obfuscation system includes modules and features that are unique to the described system.

[0033] The code obfuscation system may run in the background of an information handling device and may be activated when the device is activated. Additionally, or alternatively, the system may be activated when a software coding application, application associated with the underlying software code, and / or the like, is activated, detected, or otherwise opened. The system may also be activated upon detecting the  underlying software code is or has been deployed and is being executed. The code obfuscation system may also be activated independently of any underlying software code. For example, the code obfuscation system may be activated in order to train one or more artificial intelligence models corresponding to the code obfuscation system, generate a code obfuscation layer for an underlying software code, change parameters for one or more deployed code obfuscation layers, and / or the like. Thus, the code obfuscation system may be activated either manually or automatically when the code obfuscation system is needed for training, generating, executing, and / or deploying a code obfuscation layer and / or also when software that includes a code obfuscation layer is activated.

[0034] The code obfuscation system may be a standalone system, may be accessible through other computing devices, and / or a combination thereof. For example, the code obfuscation system may be a standalone system that can be accessed by a user and / or may be or provide an application that is accessible by a user on another computing device. The code obfuscation system may be accessible using any type of computing device, for example, personal computer, laptop computer, smartphone, tablet, smartwatch, head-mounted display, smart television or other smart appliance, and / or the like.

[0035] It should be noted that a single code obfuscation system can be used to generate, execute, and regenerate a code obfuscation layer for multiple underlying software codes. Thus, there may be a single or multiple instances of the code obfuscation  system, a single or multiple instances of code obfuscation layers managed by a single code obfuscation system, and / or a combination thereof. The code obfuscation system may also be deployed over a plurality of data storage locations. For example, a portion and / or instance of the system that is used to initially generate and deploy a code obfuscation layer may be stored in one data storage location and a portion and / or instance of the system that manages a single code obfuscation layer may be in a different data storage location, for example, it may be stored with the underlying software code that it is being used to protect.

[0036] The code obfuscation system may have an associated graphical user interface. The graphical user interface may be provided on a display or monitor, which may or may not be associated with the code obfuscation system. In other words, the code obfuscation system may have a dedicated display or monitor or may be accessible using any display or monitor. In either case, the code obfuscation system may provide instructions to generate and display the graphical user interface on the display device being used to access the code obfuscation system. The graphical user interface may also be updated and managed based upon instructions provided by the code obfuscation system. In other words, the code obfuscation system generates and transmits instructions to create and update the graphical user interface.

[0037] The graphical user interface may include a plurality of tabs, windows, and / or unique interfaces. The graphical user interface may include graphical user interface icons or elements. Graphical user interface icons or elements may include static non-selectable elements (e.g., headers, footers, logos, global information areas, graphics, etc. ) , dynamic non-selectable elements (e.g., local information areas applying to a specific element, dynamic graphics, information areas that update based upon the information provided therein, indicators, statistics displays, etc. ) , static selectable elements (e.g., radio buttons, menu icons, selectable indicators, etc. ) , dynamic selectable elements (e.g., form field input areas, pull-down menus, pop-up windows, etc. ) , and / or any other elements that may be found in a graphical user interface.

[0038] The graphical user interface may allow a user to provide input identifying parameters to be used in generating a code obfuscation layer for an underlying software code. Input may be provided by the user using any type of input modality, including, but not limited to, mechanical input (e.g., keyboard input, mouse input, etc. ) , touch input, audible or voice input, gesture input, haptic input, and / or the like. When generating a code obfuscation layer, the system may utilize at least one artificial intelligence model. Thus, the graphical user interface may allow a user to provide training information to the model (s) , validate analyses made by the model (s) , fine tune the model (s) , adjust parameters for a particular model (e.g., performance parameters, frequency of  regeneration parameters, selection of a use or application for the model, type of model, etc. ) , provide the code to be used for creation of the code obfuscation layer, and / or the like. Additionally, the graphical user interface may allow a user to select one or more models to be used for a particular application, adjust any model parameters for the application, and then deploy the application for the application. In other words, the user can set up a model to provide a code obfuscation layer for a particular software application or code.

[0039] The graphical user interface may also provide one or more displays in relation to generation, execution, and deployment of the code obfuscation layer. For example, the graphical user interface may provide a display confirming parameters and inputs for a code obfuscation layer to be deployed. As another example, the graphical user interface may provide statistics or information related to the deployment of the obfuscation layer. The statistics or information may identify the performance of the obfuscation layer, for example, how often the layer has been regenerated, how often an unauthorized entity has attempted to access the layer, how effective the layer is / was against an unauthorized entity, any recommendations for improvement of the layer, any inputs provided by a customer or other entity deploying the underlying software, and / or the like. Thus, the graphical user interface may provide displays and / or input areas that  allow a user to maintain and manage the code obfuscation layer and / or artificial intelligence model used in generating and regenerating the code obfuscation layer.

[0040] It should be noted that different users may configure the graphical user interface per their preferences. Thus, the graphical user interface layout and configuration may be different between users. How much a user can configure the layout may be restricted or set by a system administrator and / or the like. Additionally, different users or different user roles may have different levels of access, which may also change how and what information is displayed. Thus, different graphical user interfaces may be displayed by the system.

[0041] As mentioned, the code obfuscation system may utilize one or more artificial intelligence models in generating and managing or regenerating one or more code obfuscation layers. For ease of readability, the majority of the description will refer to a single artificial intelligence model and a single code obfuscation layer for a single underlying software. However, it should be noted that an ensemble of artificial intelligence models or multiple artificial intelligence models may be utilized, multiple code obfuscation layers can be generated and deployed, even for a single underlying software, and multiple underlying software codes and / or applications can have code obfuscation layers which may be the same or different across the codes.

[0042] The artificial intelligence model may be a pre-trained model that is fine-tuned for the particular application or underlying software or may be a model that is created from scratch. One model that may be utilized by the system is a large language model that may be pretrained as a large language model or a large language model that is created from scratch. Other model types may be utilized, but models that are useful or trained for natural language processing may be the most advantageous starting model. This is because the model will be utilized to read software code and generate an output that is also software code. Thus, other example model types, may include those that are trained or utilized for reading / outputting software code, reading / outputting a specific type of software code, reading / outputting textual information, previously generated software obfuscation layer generation models, and / or the like. As previously mentioned, an ensemble of models or multiple models may also be utilized. The model structure may be based upon Transformers, which is currently one of the most commonly used language structures in the field of natural language processing. However, other model structures may be utilized, for example, a recurrent neural network, convolutional neural network, deep neural network, autoencoders, random forest, decision tree, gradient boosting machine, extreme gradient boosting, multimodal machine learning, unsupervised learning models, and / or the like, including models that may be developed in the future. The chosen model structure may be dependent on the particular task that will be performed with that model.

[0043] At 301, the code obfuscation system generates, using the one or more artificial intelligence models, a code obfuscation layer to be deployed for software. A code obfuscation layer will be deployed with underlying software that is trying to be protected against unauthorized entities from accessing the underlying software. For example, the underlying software may be source code for a particular application or program. As another example, the underlying software may be code for performing a particular function. As a final, non-limiting example, the underlying software may be a training dataset, deployment code, or other code associated with or corresponding to an artificial intelligence model. The code obfuscation layer will be deployed such that the underlying software is inaccessible except through the code obfuscation layer. In other words, the code obfuscation layer has to be unlocked before the underlying software can be accessed.

[0044] To generate the code obfuscation layer, the artificial intelligence model or models are trained or fine-tuned to the desired task or application. In other words, each underlying software has an artificial intelligence model that is fine tuned to that underlying software. There may be situations where a single artificial intelligence model (or group of models) may be used across multiple underlying softwares. In this case, the artificial intelligence model (s) may be fine-tuned for an overall application. For example, if the underlying softwares have similarities or are pieces of software that perform the  same function, a single artificial intelligence model (or group of models) may be fine-tuned for the group of underlying softwares. As the artificial intelligence model is deployed and used within a particular application it can learn and become more fine-tuned for the particular application. Thus, even when using a single starting model for a group of underlying softwares, after a length of time, the models may diverge because they are being more refined for the particular application during deployment.

[0045] To fine tune the artificial intelligence model (s) , a task-specific dataset is prepared. The task-specific dataset is a set of data that includes data of a type that may or will be seen by the artificial intelligence model. Additionally, the dataset is labeled with the desired output for the task. As an example, a task-specific dataset for a model that is intended to output software code for a particular coding language may include snippets of code for that particular coding language. The snippets of code may be annotated with labels that identifies the purpose or type of code for code segments or portions of code. This dataset may include multiple datasets, or different datasets for different portions of the underlying software. This is the training dataset for the model (s) .

[0046] The model is trained using the training dataset, which may take multiple rounds. Each round may include training on the training dataset, validation on the validation set, and hyperparameter tuning to optimize the performance of the model. Thus, the model may be trained using the training dataset. The model may be provided, as input,  the validation dataset. The validation set is used to tune the parameters of the model. Specifically, the validation set is used to evaluate different parameters of the model. Generally, the validation set has a known or expected output. Parameters of the model are chosen and the validation set is provided to the model. The parameters of the model are modified (or a second model is set with different parameter values) , and the validation set is provided to the model. The outputs can then be compared to determine which model parameters of the model resulted in a more desirable performance. This allows for tuning of the hyperparameters.

[0047] Hyperparameters are those parameters of the model that are set by the developer of the model and that are not changed by model as it learns. Generally, parameters which can be or are changed by the model as it learns are referred to simply as parameters. Example hyperparameters include train-test split, optimization algorithm, choice of activation function, number of hidden layers, pooling size, batch size, a number of nodes, a number of branches in a decision tree, a number of decision trees in a forest, and / or the like. Hyperparameters are those parameters whose values control the learning process.

[0048] The artificial intelligence model (s) can then be applied to a test set to evaluate the model. This helps to assess the performance of the model on unseen data. The test dataset is a dataset which includes a set of data that may be encountered by the  artificial intelligence model. This set of data is not labeled with the desired output for the task. However, the entity creating the model knows what the output should be. Thus, after the model ingests and processes the test set, the model will provide an output. This output can be compared, either manually or using a computing system, to the expected output, thereby allowing for evaluation of the performance of the model. Using the code example as above, once trained on the training dataset, the model would be provided a test dataset which includes source code or other code having an expected output code, but with the excepted output code being hidden or unknown to the model. Once the model processes the test dataset, the output code of the model can be compared to the expected output code.

[0049] Depending on the accuracy or performance of the model on the test dataset as compared to the expected output, the model may be subjected to further training, validation, and / or tuning. Determining whether the model needs to be further tuned or refined may be based upon how close to the output of the model is to the expected output. This may include computing a similarity score or other score for the performance of the model in view of the model output versus the expected output. Scores below a predetermined threshold may indicate that the model needs further refinement, whereas scores meeting or exceeding a predetermined threshold may indicate the model has been sufficiently trained. The threshold may be a default value, may be set by a user, and / or  the like. Additionally, different models may be subject to different thresholds. For example, models that will be utilized in an application having access to large amounts of sensitive data may require a higher threshold than other applications. As another example, an entity that will utilize the model for generating the code obfuscation layer may have requirements regarding the performance of the model, which may dictate the threshold. As a final, but non-limiting example, different types of underlying software may have different performance requirements, which may dictate the threshold.

[0050] While the artificial intelligence model is deployed, it will become more refined. Specifically, while deployed the artificial intelligence model can receive feedback and retrain itself. In other words, it ingests feedback and learns from the feedback and then modifies parameters to become more accurate or tuned to the specific application or use case over time. Thus, while there is an initial training dataset that is used to initially train the model, the model is learning over time based upon new information received by the model, thereby evolving to become more accurate and / or increase the performance of the model. This is generally referred to as a reinforcement training. Other techniques for training the model (s) are contemplated and possible, including, unsupervised learning, a combination of learning techniques, and / or the like.

[0051] Once the artificial intelligence model is trained to a desired level of performance, the artificial intelligence model is provided code for generating the code  obfuscation layer. The entity employing the dynamic code obfuscation technique may decide the code that is provided to the artificial intelligence model for generating the code obfuscation technique. If the entity wants to protect the privacy or intellectual property of the code of the underlying software, the code provided to the artificial intelligence model may be mock source code. However, the source code of the underlying software may also be utilized. Other code may also be utilized by the artificial intelligence model in generating the code obfuscation layer. Whatever code that is used will be ingested by the artificial intelligence model as an input. The artificial intelligence model will process the code in view of its training, and then provide output code. This output code is the code obfuscation layer. In generating the code obfuscation layer, a unique signature can be added to the code that designates the original source of the code for the code obfuscation layer. This allows for a tracing of the code obfuscation layer to a particular source, which may be useful in identifying an originating entity of the code obfuscation layer.

[0052] The code obfuscation layer is a set of software code deployed as a layer upon an underlying software. When accessing the underlying software, an entity will be presented with or would first access the code obfuscation layer instead of the underlying software. If the entity is an authorized entity, the entity will be able to unlock the code obfuscation layer and access the underlying software. The code obfuscation layer does not change the functionality of the underlying software and the underlying software will  perform as designed. In other words, the code obfuscation layer maintains the functionality of the underlying software. As mentioned, the code obfuscation layer is generated by an artificial intelligence model (or models) . During deployment, the code obfuscation layer is maintained and regenerated by the artificial intelligence model.

[0053] The artificial intelligence model generates the code obfuscation layer with deceptive features to deceive an attacker or other unauthorized entity. These deceptive features include, but are not limited to, creating nested complicated structures, face and deceptive variable and function names, fake and deceptive logic, deceptive crypto blocks and checks, anti-debug traps, a combination thereof, and / or the like. Additionally, the artificial intelligence model may introduce deceptive vulnerabilities into the code of the code obfuscation layer. These deceptive vulnerabilities will cause an authorized entity and one trying to exploit the code to spend significant amounts of time trying to exploit the vulnerability. However, since the vulnerability is fake or deceptive, even if the entity succeeds in figuring out how to exploit the vulnerability, such success will not result in an actual exploitation of either the code obfuscation layer or the underlying software. Thus, the code obfuscation layer will include a range of deceptive features. However, in creating the code obfuscation layer, the artificial intelligence model ensures that the code within the code obfuscation layer appears indistinguishable from other valid programs.  This indistinguishability will make it difficult for an unauthorized entity to identify the obfuscated sections or differentiate them from non-obfuscated code.

[0054] The code obfuscation layer is locked to at least one input condition. An input condition may be considered any requirement that needs to be satisfied in order to authenticate the entity attempting to access the underlying software and unlock the code obfuscation layer. Locking the code obfuscation layer to at least input condition provides a technique to allow access to the underlying software to an authorized entity, but ensures that an unauthorized entity cannot unlock the code obfuscation layer and access the underlying software. If an entity attempts to access the underlying software, they must first satisfy the at least one input condition of the code obfuscation layer. Upon successful satisfaction of the at least one input condition, the code obfuscation layer will be unlocked and provide access to the underlying software. It should be noted that providing access to the underlying software may include an entity being able to access and change the underlying software, or may simply mean that the underlying software is allowed to execute as designed. Upon an unsuccessful or failed satisfaction of the at least one input condition, the code obfuscation layer will remain locked and access to the underlying software will be denied.

[0055] The input condition may be a set or combination of input conditions, or may be a single input condition. The number of input conditions may be based upon how  secure the underlying software needs to be, a number set by default, a number set by the entity employing the dynamic code obfuscation technique, and / or the like. The input condition (s) may be any type of condition to which an entity wants to tie the code obfuscation layer and underlying software. However, the input condition (s) should be one that is known to and providable by an authorized entity. In other words, while a dynamic input condition could be utilized, it would need to be a recoverable dynamic input condition or one that could be determined by an authorized entity. For example, a dynamic input condition could be one where the underlying code has to be accessed from one geographical region on a certain day of the week, and accessed from a different geographical region on a different day of the week. A simpler type of input condition may be a static device-specific condition. In this case, the input condition would be tied to the device that is executing or housing the underlying software. Examples of such input conditions include, but are not limited to, device information, license conditions, digital rights management conditions, authorizations, particular encryption keys, and / or the like.

[0056] Once the artificial intelligence model has generated the code obfuscation layer at 301, the code obfuscation layer can be deployed with the underlying software at 302. Deployment means that the code obfuscation layer will be attached to or layered upon the underlying software. Deployment of the code obfuscation layer also means that  the artificial intelligence model will monitor the code obfuscation layer and any attempts to access the code obfuscation layer. In monitoring the code obfuscation layer and any attempts to access it, the artificial intelligence model can learn how entities are interacting with the layer. By learning how entities interact with the layer, the model can utilize this information as feedback into itself and learn what deceptive techniques, or combination of techniques, are useful or best for thwarting unauthorized entity access and retrain itself to become better at generating deceptive code obfuscation layers. This new training becomes useful when regenerating the code obfuscation layer. The monitoring information may also be provided to other entities, for example, the entity employing the dynamic code obfuscation technique, the entity developing the dynamic code obfuscation technique, and / or the like.

[0057] While the code obfuscation layer is deployed, the code obfuscation system determines whether at least one trigger event has been detected at 303. A trigger event is an event that occurs that causes the code obfuscation system, via the artificial intelligence model, to regenerate the code obfuscation layer. The trigger event is a dynamic event, meaning the condition tied to the event changes from one value to another value or the condition tied to the event could change from one value to another value. The timing of changing of the value of the condition may occur randomly or may occur on a set or semi-regular schedule. Thus, the trigger event is a detection of the changing of the value  of the condition. One type of trigger event may be a dynamic non-device specific condition. This type of trigger event may be any condition whose value changes over time and that is not tied to the device housing the underlying software. While this condition may be anything that is detectable and whose value changes over time, some non-limiting examples of conditions include weather, particular changes in time (e.g., when a certain number of minutes have passed, when a certain time value is met, etc. ) , changes in a stock on the stock market, and / or the like.

[0058] Additionally, detection of the trigger event may be based upon device context, location constraints, and / or the like. In this case, the system may only watch for trigger events when the device context, location constraints, and / or the like, is met. Non-limiting examples of such conditions are geographical regions, where the trigger event is detected when the code obfuscation layer is located within or accessed from a specific region, a certain time range, where the trigger event is only detected during a particular time frame, and / or the like. The trigger event could then be identified as detected when the device context, location constraints, and / or the like, meet the predetermined value or context. The trigger event and any constraints placed on the trigger event may be variable and can be controlled or set by an entity.

[0059] Different conditions may be selected to modify the frequency at which a trigger event is detected. The system may also identify that a trigger event has been  detected upon a certain number of value changes of the condition being met. For example, the trigger event may not be identified as detected until a value of the condition has changed five times, thereby extending a length of time between regenerations of the code obfuscation layer. The more frequently the code obfuscation layer is regenerated, the more secure the underlying software will be. However, regenerating the code obfuscation layer does require resources. Thus, the frequency of the dynamic regeneration is variable and may be set by default, selected by an entity developing the code obfuscation system, selected by an entity employing the code obfuscation system, based upon a desired security of the code obfuscation system, based upon a desired resource usage of the code obfuscation system, and / or the like.

[0060] It should also be noted that a list of conditions or combination of conditions may be utilized as the trigger event. In a list of conditions, if any of the conditions are met, the trigger event would be identified as detected. As an example, if the list included three different conditions, if a change in the value of any of the three conditions was detected, the system would identify that a trigger event has been detected. In a combination of conditions, changes in values for all of the conditions in the combination would have to be detected before a trigger event would be identified as being detected. As an example, if the combination of conditions included three conditions, a trigger event would not be identified as being detected until all three of the condition  values have been changed. While a change in values for all the conditions would need to be detected, it may not be necessary that the change in values for all of the conditions occur at the same time or even approximately at the same time. In other words, the system may detect that a change in a value in one condition has been met, and identify that condition as changed. After some time, which may be any length of time, when another condition value has been changed, the system may identify that condition as changed. This may continue until all conditions have changed. At that time, the system will identify that a trigger event has been detected. A combination of a list of conditions and combination of conditions may also be utilized.

[0061] If a trigger event is not detected at 303, the code obfuscation system may take no action at 305. Taking no action means that the code obfuscation layer will remain unchanged from its current state. In other words, the system will not cause the code obfuscation layer to be regenerated. If, on the other hand, the trigger event is detected at 303, the code obfuscation system dynamically regenerates the code obfuscation layer to change a structure of the code obfuscation layer at 304.

[0062] Regenerating the code obfuscation layer means that the artificial intelligence model creates a new code obfuscation layer to replace or modify the current code obfuscation layer. The regeneration and replacement occur while the code obfuscation layer is deployed, meaning the code obfuscation layer is not removed,  changed, and then redeployed, but rather replaced or modified while the code obfuscation layer is deployed. Thus, the underlying software is not unprotected. In regenerating the code obfuscation layer, the artificial intelligence model may regenerate a complete layer, or may only regenerate portions of the layer. Even if the model regenerates the entire layer, the model may replace portions of the layer at different points in time with portions of the newly generated layer. Alternatively, the model may replace the entire layer at a single time. The model may also replace the entire layer at one time, and then upon the next regeneration may replace portions of the layer, and may otherwise randomly determine when portions should be replaced and when the entire layer should be replaced.

[0063] Regenerating the code obfuscation layer occurs in much the same manner as the generation of the code obfuscation layer with the trained model. In other words, the trained model takes input code, which may be code of the code obfuscation layer, code from the underlying software, mock code, or other code, and may be the original input code, and generates a code obfuscation layer or portion thereof. Even if using the original input code that was used to initially generate the code obfuscation layer, the output from the model is different than the original code obfuscation layer. This occurs due to multiple factors which may include, for example, the fact that code that performs the same function can be written or produced in many different ways, a focus of a different portion of code for generation / regeneration, the fact that the model has retrained itself  based on feedback or monitoring information, and / or the like. Regeneration of the layer results in effectively a moving target for an unauthorized entity. This dynamic changing means that the unauthorized entity will have a very difficult time getting a full picture of the entire code base.

[0064] Thus, the described system and method provides a technique for obfuscating software in a dynamic manner. The described system and method maintains the functionality of the original or underlying software, meaning the underlying software performs the intended functionality even in view of the code obfuscation layer. The difference is that an unauthorized user will encounter the code obfuscation layer instead of the underlying software, but the functionality of the underlying software is retained. Additionally, the dynamic obfuscation technique described is computationally difficult to reverse-engineer or de-obfuscate making it at least magnitudes more unbreakable than conventional static obfuscation techniques. The code obfuscation layer is indistinguishable from other programs or code making it difficult to determine that it is obfuscated code. Finally, the code obfuscation process does not introduce significant performance overhead or resource requirements, thereby preserving the efficiency of the underlying software. While the regeneration does require resources, once deployed, the code regeneration layer itself does not significantly add to the resource requirements of  the underlying software. Thus, the described system and method provides a secure obfuscation technique that is more effective than traditional statis obfuscation techniques.

[0065] As will be appreciated by one skilled in the art, various aspects may be embodied as a system, method, or device program product. Accordingly, aspects may take the form of an entirely hardware embodiment or an embodiment including software that may all generally be referred to herein as a “circuit, ” “module” or “system. ” Furthermore, aspects may take the form of a device program product embodied in one or more device readable medium (s) having device readable program code embodied therewith.

[0066] It should be noted that the various functions described herein may be implemented using instructions stored on a device readable storage medium such as a non-signal storage device that are executed by a processor. A storage device may be, for example, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples of a storage medium would include the following: a portable computer diskette, a hard disk, a random-access memory (RAM) , a read-only memory (ROM) , an erasable programmable read-only memory (EPROM or Flash memory) , an optical fiber, a portable compact disc read-only memory (CD-ROM) , an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this  document, a storage device is not a signal and is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable) , or electrical signals transmitted through a wire. Additionally, the term “non-transitory” includes all media except signal media.

[0067] Program code embodied on a storage medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, radio frequency, et cetera, or any suitable combination of the foregoing.

[0068] Program code for carrying out operations may be written in any combination of one or more programming languages. The program code may execute entirely on a single device, partly on a single device, as a stand-alone software package, partly on single device and partly on another device, or entirely on the other device. In some cases, the devices may be connected through any type of connection or network, including a local area network (LAN) or a wide area network (WAN) , or the connection may be made through other devices (for example, through the Internet using an Internet Service Provider) , through wireless connections, e.g., near-field communication, or through a hard wire connection, such as over a USB connection.

[0069] Example embodiments are described herein with reference to the figures, which illustrate example methods, devices, and program products according to various example embodiments. It will be understood that the actions and functionality may be implemented at least in part by program instructions. These program instructions may be provided to a processor of a device, a special purpose information handling device, or other programmable data processing device to produce a machine, such that the instructions, which execute via a processor of the device implement the functions / acts specified.

[0070] It is worth noting that while specific blocks are used in the figures, and a particular ordering of blocks has been illustrated, these are non-limiting examples. In certain contexts, two or more blocks may be combined, a block may be split into two or more blocks, or certain blocks may be re-ordered or re-organized as appropriate, as the explicit illustrated examples are used only for descriptive purposes and are not to be construed as limiting.

[0071] As used herein, the singular “a” and “an” may be construed as including the plural “one or more” unless clearly indicated otherwise.

[0072] This disclosure has been presented for purposes of illustration and description but is not intended to be exhaustive or limiting. Many modifications and variations will be apparent to those of ordinary skill in the art. The example embodiments  were chosen and described in order to explain principles and practical application, and to enable others of ordinary skill in the art to understand the disclosure for various embodiments with various modifications as are suited to the particular use contemplated.

[0073] Thus, although illustrative example embodiments have been described herein with reference to the accompanying figures, it is to be understood that this description is not limiting and that various other changes and modifications may be affected therein by one skilled in the art without departing from the scope or spirit of the disclosure.

Claims

1.A method, the method comprising:generating, using an artificial intelligence model, a code obfuscation layer to be deployed for software, wherein the code obfuscation layer is locked to at least one input condition;deploying, using a code obfuscation system, the code obfuscation layer with the software; anddynamically regenerating, while the code obfuscation layer is deployed and using the code obfuscation system, the code obfuscation layer to change a structure of the code obfuscation layer, wherein the dynamically regenerating occurs in response to detection of at least one trigger event.2.The method of claim 1, wherein the artificial intelligence model generates the code obfuscation layer with deceptive features to deceive an attacker.3.The method of claim 1, wherein the generating comprises utilizing software code as input to the artificial intelligence model and wherein the code obfuscation layer comprises output from the artificial intelligence model.4.The method of claim 1, wherein a frequency of the dynamically regenerating is variable.5.The method of claim 1, wherein the at least one input condition is a static device-specific condition.6.The method of claim 1, wherein the at least one trigger event comprises a dynamic non-device specific condition.7.The method of claim 1, wherein, upon satisfaction of the at least one input condition, the code obfuscation layer is unlocked.8.The method of claim 1, wherein, upon detecting the at least one input condition is not satisfied, the code obfuscation layer remains locked.9.The method of claim 1, wherein the generating comprises adding a signature to the code obfuscation layer.10.The method of claim 1, wherein the code obfuscation layer is generated from source code of the software.11.A system, the system comprising:a processor;a memory device that stores instructions that, when executed by the processor, causes the system to:generate, using an artificial intelligence model, a code obfuscation layer to be deployed for software, wherein the code obfuscation layer is locked to at least one input condition;deploy, using a code obfuscation system, the code obfuscation layer with the software; anddynamically regenerate, while the code obfuscation layer is deployed and using the code obfuscation system, the code obfuscation layer to change a structure of the code obfuscation layer, wherein the dynamically regenerating occurs in response to detection of at least one trigger event.12.The system of claim 11, wherein the artificial intelligence model generates the code obfuscation layer with deceptive features to deceive an attacker.13.The system of claim 11, wherein the generating comprises utilizing software code as input to the artificial intelligence model and wherein the code obfuscation layer comprises output from the artificial intelligence model.14.The system of claim 11, wherein a frequency of the dynamically regenerating is variable.15.The system of claim 11, wherein the at least one input condition is a static device-specific condition.16.The system of claim 11, wherein the at least one trigger event comprises a dynamic non-device specific condition.17.The system of claim 11, wherein, upon satisfaction of the at least one input condition, the code obfuscation layer is unlocked.18.The system of claim 11, wherein the generating comprises adding a signature to the code obfuscation layer.19.The system of claim 11, wherein the code obfuscation layer is generated from source code of the software.20.A product, the product comprising:a computer-readable storage device that stores executable code that, when executed by a processor, causes the product to:generate, using an artificial intelligence model, a code obfuscation layer to be deployed for software, wherein the code obfuscation layer is locked to at least one input condition;deploy, using a code obfuscation system, the code obfuscation layer with the software; anddynamically regenerate, while the code obfuscation layer is deployed and using the code obfuscation system, the code obfuscation layer to change a structure of the code obfuscation layer, wherein the dynamically regenerating occurs in response to detection of at least one trigger event.

Citation Information

Patent Citations

  • A method and apparatus for providing front-end pages

    CN109145535A

  • Dynamic asymmetric encryption and decryption JavaScript code obfuscation method and system

    CN113010856A

  • Code protection method and device, electronic equipment and readable storage medium

    CN115391752A

  • Systems and methods to facilitate authorization key obfuscation validation

    US11238138B1