Detection of LLM-assisted Code Plagiarism Using k-gram Software Birthmarks
Este artigo demonstra que as marcas de nascimento de software baseadas em k-grams de opcodes Java permanecem eficazes na detecção de plágio de código assistido por LLM através de vários modelos e medidas de similaridade, apesar dos desafios impostos pela paráfrase de código.
Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo
Imagine que você tem uma receita secreta de um bolo delicioso. Nos velhos tempos, se alguém quisesse roubar sua receita, teria que copiá-la palavra por palavra. Era fácil pegá-los porque a caligrafia ou a digitação seriam exatamente iguais.
Mas agora, imagine um robô chef superinteligente (uma IA) que pode olhar para sua receita, reescrevê-la inteiramente e entregar uma nova versão que tem exatamente o mesmo sabor, mas parece completamente diferente. Ele muda a fonte, troca "açúcar" por "adoçante", reorganiza os passos e usa xícaras de medida diferentes. Para o olho humano, parece uma receita totalmente nova. Isso é o que o artigo chama de plágio de código assistido por LLM.
Aqui está como os pesquisadores abordaram o problema de pegar esses ladrões "robô-chef", explicado de forma simples:
O Problema: A Reescrita "Mágica"
Desenvolvedores de software escrevem código (as instruções para computadores). Modelos de Linguagem Grande (LLMs) são ferramentas de IA que podem pegar um código existente e "parafraseá-lo". Eles mudam a aparência e a estrutura do código tanto que os detectores de plágio tradicionais (que procuram por palavras ou linhas idênticas) são enganados. O programa ainda faz exatamente a mesma coisa, mas parece ter sido escrito por uma pessoa diferente.
A Solução: A "Impressão Digital do Software"
Os pesquisadores não tentaram ler o código reescrito como um humano. Em vez disso, eles usaram algo chamado Marcas de Nascença de Software (Software Birthmarks).
Pense em uma marca de nascença como uma impressão digital única. Mesmo que você mude de roupa, corte de cabelo ou óculos, sua impressão digital permanece a mesma.
- Como eles fizeram: Eles pegaram a "receita" do computador (o código), traduziram para uma lista de instruções básicas de máquina (chamadas de opcodes) e as fragmentaram em pequenos pedaços de 2 a 6 instruções por vez.
- A Analogia: Imagine que você tem uma frase: "O gato sentou no tapete."
- Um 1-grama (pedaço de 1) é apenas as palavras: "O", "gato", "sentou"... (Muito comum; muitas frases têm "o").
- Um 2-grama (pedaço de 2) são pares: "O gato", "gato sentou", "sentou no"... (Mais único).
- Um 3-grama são trios: "O gato sentou", "gato sentou no"... (Ainda mais único).
Eles transformaram todo o programa em um "saco" desses pedaços. Mesmo que a IA reorganizasse as frases, o tipo específico de pedaços (a impressão digital) provavelmente ainda estaria lá.
O Experimento: Quem é o Melhor Ladrão?
Os pesquisadores testaram três "robôs chefs" (modelos de IA) diferentes:
- ChatGPT-5.1-Codex-Mini
- DeepSeek-V4-Flash
- Claude-Haiku-4.5
Eles pegaram programas Java reais de código aberto, pediram para essas IAs reescreverem o código e depois tentaram pegar as IAs usando o método da "impressão digital". Eles também testaram diferentes formas de comparar as impressões digitais (como contar quantos pedaços coincidem versus o quão próxima é a ordem).
As Descobertas: O Que Funcionou?
1. O Tamanho do Pedaço Importa (A "Zona Goldilocks")
- Muito pequeno (1 pedaço): Era como tentar identificar uma pessoa apenas pela palavra "o". Muitas pessoas usam essa palavra, então não era uma boa impressão digital.
- Muito grande (6 pedaços): Era como tentar combinar um parágrafo inteiro. Se a IA movesse apenas uma frase, o parágrafo inteiro não combinava e a impressão digital quebrava.
- No ponto certo (2 ou 3 pedaços): Este foi o ponto ideal. Esses pequenos grupos de instruções eram únicos o suficiente para identificar o código original, mas robustos o suficiente para sobreviver à reescrita da IA.
2. Como Você Compara Importa
- A ordem não importa: Os pesquisadores descobriram que observar a ordem das instruções (como verificar se os passos estavam exatamente na mesma sequência) era uma má ideia. A IA embaralhou a ordem tanto que esse método falhou.
- Contar importa: O melhor método foi simplesmente contar quantos pedaços únicos apareciam tanto no código original quanto no código reescrito, independentemente da ordem. É como dizer: "Ambas as receitas contêm 'farinha' e 'ovos'?" em vez de "Eles adicionaram os ovos antes da farinha?".
3. Qual IA foi a Mais Difícil de Pegar?
- ChatGPT-5.1-Codex-Mini foi a mais sorrateira. Ela conseguiu reescrever o código tão profundamente que foi a mais difícil de detectar, mas ainda assim produziu um código que realmente funcionava (compilava sem erros).
- As outras duas IAs (DeepSeek e Claude) foram mais fáceis de pegar porque suas reescritas deixavam "impressões digitais" mais óbvias para trás.
A Conclusão
Mesmo que a IA possa reescrever o código para parecer completamente diferente, ela não consegue mudar o "DNA" fundamental de como o computador pensa. Ao observar padrões pequenos e únicos de instruções de máquina (marcas de nascença) e contar quantos deles coincidem, podemos ainda pegar o ladrão, mesmo que ele esteja usando um robô superinteligente para disfarçar o crime.
O artigo conclui que este método funciona bem contra o plágio de IA moderno, especialmente quando se utiliza pequenos pedaços de código (2 ou 3 instruções) e foca no que está no código, em vez de onde ele está.
Afogado em artigos na sua área?
Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.