Resumo (PT):
A ofuscação de código tornou-se uma ferramenta essencial para a segurança de aplicações de soft-
ware, ao tornar o código-fonte mais difícil de compreender e de reverter através de engenharia
reversa. Embora a ofuscação seja amplamente utilizada em várias linguagens de programação,
ganhou particular destaque no JavaScript, uma tecnologia crítica para o funcionamento das apli-
cações web modernas. Através de uma série de transformações, como o achatamento de fluxo de
controlo, renomeação de variáveis e divisão de código, a ofuscação altera a estrutura do código sem
alterar o seu comportamento funcional. Contudo, apesar da sua eficácia em proteger a propriedade
intelectual, a ofuscação frequentemente introduz um compromisso: o aumento do tamanho do
código e um impacto negativo no desempenho, que pode afetar a capacidade de resposta das apli-
cações e a experiência dos utilizadores.
O problema de estimar com precisão esses impactos de forma antecipada é particularmente
desafiante devido à natureza não linear e combinatória das técnicas de ofuscação. O efeito cumu-
lativo de diferentes estratégias de ofuscação, aplicadas em várias sequências, pode resultar num
crescimento imprevisível do código, dificultando aos programadores o equilíbrio entre segurança
e desempenho. Assim, existe a necessidade de um modelo preditivo que permita prever o cresci-
mento do tamanho do código com base nas transformações específicas aplicadas.
Esta dissertação propõe uma abordagem inovadora que utiliza modelos de aprendizagem com-
putacional para prever o crescimento do tamanho do código em aplicações JavaScript sujeitas a
diferentes técnicas de ofuscação. Através do treino de modelos com um conjunto abrangente de
amostras de código ofuscado, esta pesquisa visa capturar as interações complexas entre vários
métodos de ofuscação. O resultado é um modelo preditivo que pode apoiar os programadores na
seleção das estratégias de ofuscação mais adequadas, servindo também como uma ferramenta de
suporte à decisão, permitindo-lhes antecipar e mitigar os compromissos de desempenho associa-
dos aos mecanismos de proteção de código. Em última instância, as conclusões desta pesquisa
poderão contribuir para o desenvolvimento de práticas de ofuscação mais eficientes e práticas na
indústria de software, apoiando a criação de aplicações web seguras e de alto desempenho.
Abstract (EN):
Code obfuscation has become an essential tool for securing software applications by making source code difficult to understand and reverse-engineer. While obfuscation is widely used across multiple programming languages, it has gained particular traction in JavaScript, which is integral to the functioning of modern web applications. Through a series of transformations such as control flow flattening, variable renaming, and code splitting, obfuscation alters the code's structure without changing its functional behavior. However, despite its efficacy in protecting intellectual property, obfuscation often introduces a trade-off: increased code size and performance overhead, which can adversely affect application responsiveness and user experience.
The problem of accurately estimating these impacts beforehand is particularly challenging due to the non-linear and combinatorial nature of obfuscation techniques. The cumulative effect of different obfuscation strategies, applied in various sequences, can lead to unpredictable code growth, making it difficult for developers to balance security and performance. Thus, there is a need for a predictive model that can forecast the growth in code size based on the specific transformations applied.
This thesis proposes a novel approach leveraging machine learning to predict the growth in code size for JavaScript applications subjected to different obfuscation techniques. By training models on a comprehensive dataset of obfuscated code samples, this research aims to capture the complex interactions between various obfuscation methods. The resulting predictive framework will not only assist developers in selecting optimal obfuscation strategies but also serve as a decision-support tool, enabling them to anticipate and mitigate the performance trade-offs associated with code protection mechanisms. Ultimately, the findings of this research can contribute to the development of more efficient and practical obfuscation practices in the software industry, supporting the creation of secure, high-performance web applications.
Language:
English
No. of pages:
113