[RESOLVIDO] CI com ID code fixo para, para evitar clonagem de projetos em Arduíno ?

Olá Galera,

    Essa semana tivemos um usuário questionando a licença open do arduino, e o que percebemos é que a melhor forma de evitar problemas em projetos comerciais é evitando a clonagem do codigo.  Afinal, sem ele, qualquer projeto baseado em microcontrolador é só um monte de componentes sem utilidade.

   Parti para ler sobre o bloqueio de leitura e gravação dos atmegas atraves de fuse bits, e o que descobri é que esse método não é totalmente confiável, podendo ser possível sim, ler o codigo hex do microcontrolador ainda que os fuse bits tenham sido bloqueador, devendo-se para isso entretanto ter hardware especifico a esse fim,  mas que é possível é.

   Logo, em foruns vi que a duvida era pertinente, e que muitos procuravam uma forma de bloqueio.

   Como os CIs atmegas não possuem IDs,  individuais, não dá pra bloquear usando esse método.

   Dai sobraria a anexação ao projeto de Componentes externos que pudessem ser identificados e sem eles mesmo copiando o codigo hex, o projeto não executaria.

   O primeiro pensamento seria colocar um EEPROM com um code gravado,  porem, esse tambem poderia ser copiado e clonado.

   Logo a minha duvida é:    Vocês conhecem algum CI que possua um ID code fixo do hardware que possa ser acessado pelo microcontrolador,  de tal forma que somente aquele componente estando na placa o code principal seria executado ?

Exibições: 833

Responder esta

Respostas a este tópico

Acho que já ta virando paranoia esse negocio...

Sim, sempre foi possível copiar um CI mesmo com os fusebits acionados, pq existem tecnicas avançadas que apagam os fusebits... Essas tecnicas envolvem remover a tampa do integrado e dar tiros de laser (similar aos gravadores de CD) certeiros sobre os fusebits.

Isso é pra "Chines ninja" (pleonasmo ???). Acho que eles não querem perder tempo copiando nossos produtos, podem copiar os resultados, utilizando os engenheiros deles para fazer um novo codigo similar.

Integrado de numero unico que conheço são os controles de garagem. Eles são baratos, pequenos (8 pinos) e geram numeros unicos. Mas são uma facilidade de clonar tb. Poe um microcontrolador gerando o mesmo pulso e pronto.

Enfim, acho que devemos dificultar até certo ponto, por ex os fusebits. Pq se o infeliz tiver energia pra vencer os fusebits ele tem tb pra refazer a programação.

Entendo que hj em dia vale mais o modelo de negocio, o marketing, colocar (vender), o conceito que a programação ou a eletronica. O kra querendo copiar acaba refazendo e pronto. 

Aêeee Achei....

    Super Marconde,  obrigado pelo seu ponto de vista,   bem, no momento não tô com nenhum projeto que precise do recursos, mas com certeza é uma informação que deverá ser muito util no futuro.

   Tá aqui a solução:

          http://pdfserv.maximintegrated.com/en/ds/DS2401.pdf

Acabei de mandar vir 3 peças da china pra testar,  baratinho, menos de 7 reais cada.

Vai pra lista de Próximas coisas a serem estudadas kkk.

Ah, sim continuando,

    Marcondes,  viu que maravilha? esse ds2401 só usa 1 pino do arduino e tem um ID code gravado fixo a laser nele, ou seja, não dá pra apagar ou clonar, e estando na inicialização do seu sketch que se aquele componente com aquele ID não estiver presente, nada funciona, ou dá uma mensagem sei lá o que,  a gente que manda.

   Bem,  pessoalmente meu medo não é dos chineses,  até porque se um dia eu desenvolver uma coisa que os chineses vierem a se interessar, vai ser mais motivo de orgulho do que de preocupação.

   Meu medo é justamente com os "amigos".

   Eu já tive perdas de cifras muito altas devido a ter abrido a boca na hora errada e pras pessoas erradas, e olha que eram ex socios e amigos, e depois ser passado pra trás.

    Uma coisa que aprendi com minha parca experiencia de vida, é que na maioria das vezes aqueles que mais pode nos gerar problemas, são aqueles que menos esperamos,  as vezes os que estão mais próximos.

    Quando a reengenharia, a coisa a depender do que seja feita, pode ser simples, ou bem complexa,  você pode ter por exemplo descoberto um principio,  uma formula,  algo que resolve um problema que ninguém pensou, e tá tudo ali dentro, codificado em linguagem de maquina ou dentro da sua cabeça,  não conheço patente mais segura.

   Acredito que caras como você, eu, o Rui, o CK, o Wiechert e muitos outros aqui já dão sua contribuição passando e disseminando conhecimento gratuitamente,  mas existem ninchos, projetos que são proprios,  pessoais,  que são a chance de um ganha pão a mais,  e isso não dá pra brincar.

Oi WD, bom dia.

Utilizo muito este DS2401. Ele é um  Unique 64-Bit ROM ID Silicon Serial Number.

Desenvolvi um projeto utilizando 6 x PIC 16F1847 comunicando entre si com I2C

 e  128 x DS2401 ligados nos PICs.

Como era PIC e não tinha biblioteca, tive que escrever tanto as rotinas de I2C quanto a rotina 

1 Wire na mão (bit banging).

O DS2410 usa o protocolo 1 Wire para comunicação entre ele e o processador.

Agora fiquei bem curioso com a seu projeto.

Como você pretende usar o DS2401 (externo) para proteger um code no arduino?

Rui

É o mesmo componente que tem nas HardLocks da minha central telefônica, só que elas são plugadas na porta paralela.

Graaaaande mestre Rui,

    Sobre sua curiosidade de como utilizar o DS2410 para evitar clonagem do código hex,  seria no inicio do sketch, no setup, solicitar a leitura do componente, como pelo que li ele retorna mais de um valor,  criar uma variável matematica, com um ou mais desses codes,    por exemplo digamos que fazendo a leitura ele me retorne int id_code = 123.   eu não colocaria um identificador tipo se id_code == 123;    eu passei anos editando jogos de games e editavamos diretamente no codigo hex,   e se trabalha nele diretamente sem disasemblar utilizando padrões,  dai se você coloca um code de verificação direta,  com certeza alguem chegará nele.

   Já se você coloca algo como ((1+2)*3)^2  e pede pra ele ver se  o code é 9^, isso é dificilimo de quebrar, já que não há valores diretos dentro do seu code hex,  principalmente se vocÊ utilizar numeros primos na equação matematica de validação.

    Logo, com esse componente presente,  o cara pode até extrair o arquivo hex do seu microcontrolador,  mas quando gravar em outro, ele não ira funcionar, a não ser que o cara pegue aquele seu componente e o coloque no novo aparelho,  mas ai não é clonagem.

    O truque tambem estara em distribuir validações ao longo do sketch,  visto que existe a possibilidade da disasemblação,  mas esse não retorna o code ao C,  mas dá a possobilidade de retirar sua validação se ela estiver em apenas um ponto,  porem, se você coloca a validação em diversos locais,  ai a coisa fica bem complicada.

    Bem, imagino que deva ser feito assim.

    Agora se não for incomodo,  e como o bicho ainda vai chegar,  me fala um pouco mais sobre ele.

   No projeto que você utilizou com PIC,  porque tantos?  qual a finalidade deles no seu projeto?

Ah, e tô exatamente na minha frente agora com um "brinquedo"  com dois nucleos, ao qual talvez eu coloque um terceiro, se comunicando por I2C, entre eles, e via SPI externo(componente),   o que achei chato pacas do I2C, é que o chato só se comunica em bytes ( 0 a 255)   dai quando se trabalha com arrays e variaveis multiplas, a coisa complica pacas, tem que ter muita matematica na brincadeira.

Weider, com um analisador logico conectado na sua placa, acho que é possível cloná-la. 

Sim, dá pra clonar a placa e o code,  mas como se clonaria o componente que tem code fixo e físico(ds2401) que sem ele nada roda se o code não bater?  Como colocaria então esse code em um outro componente que se comunique pelo mesmo protocolo oneWire ?

   Deu pra entender agora?  mesmo que se clone o code Hex e toda a placa,  não iria servir de nada sem a chave única para com o code que chega via oneWire.

   Na verdade dá até pra o cara retirar o componente(ds2401) colocar em uma simples placa arduino e lêr o codigo dele e saber qual é.

   O que não vai dar é pra o cara gravar esse code em um outro componente que se comunique por OneWire,  ele pode ate gravar numa EEprom oneWire,  mas de nada adiantaria, pois tem questões como endereçamento.

    O rodrigo ai matou a pau,  é o metodo usado em Hardlocks de programas, no caso desses proporcionalmente é até mais simples quebrar, pois toda comunicação do PC passar por um barramento que pode ser interceptado,  mas no caso de um microcontrolador, é beeeem dificil.

 

Com uma placa montada com Atmega e DS2401 e um analisador lógico, estuda-se o que esse DS2401 esta fazendo e quando é usado. 

Acho que dá para clonar. 

Eu já desbloquei Módulo de injeção de Peugeot ( ha muitos anos atrás) e o código ficava numa EEPROM ( mais difícil de encontrar a senha) . 

Ainda raspa o DS2401 e na placa como ele parece com um transistor escreve BC548 e coloca algum resistor no pino NC dele para enganar.

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2020   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço