collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Arduino - Criptografia de Código  (Lida 9575 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline luisjustin

  • Mini Robot
  • *
  • Mensagens: 161
    • Meu site
Arduino - Criptografia de Código
« em: 03 de Junho de 2013, 00:18 »
Olá a todos no forum, queria saber se existe algum jeito de eu mandar a Firmware(OS) para o cliente sem que ele tenha o código fonte.
Algum outro jeito não precisa nem ser usando o arduino IDE sim outro programa que se comunica direto com o Atmel algo assim.

Codigo Criptografada -> Interpretador ou Uploader -> Arduino

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Arduino - Criptografia de Código
« Responder #1 em: 03 de Junho de 2013, 00:36 »
A maneira mais segura é se for um micro DIP num socket, é mandar outro micro já com o código gravado via ISP e com os fuses de modo a que não seja possivel ler de novo o código, se não, tens de lhe mandar o .hex que é facilmente convertido em assembly(se bem que assembly compilado não seja lá muito legivel...) e ele tem de usar avrdude para programar o micro que ele tem(isto se tiver bootloader)..
Avr fanboy

Offline luisjustin

  • Mini Robot
  • *
  • Mensagens: 161
    • Meu site
Re: Arduino - Criptografia de Código
« Responder #2 em: 03 de Junho de 2013, 00:45 »
O que seria o micro DIP ? que as fotos que achei é de umas mine chaves isto ? Vamos dizer algum equipamento, acho que PS3 ou Xbox, como eles fazem a atualização ? eu sei que é via internet em PHP sou profissional.

Mas fugindo um pouco do assunto, queria saber como fazer os meus códigos ficarem dentro do SD, por exemplo o meu código é muito grande dai eu crio um código menor coloco dentro do Arduíno que ele interpreta o que está no SD existe possibilidades ?

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Arduino - Criptografia de Código
« Responder #3 em: 03 de Junho de 2013, 00:54 »
É possivel fazer o que queres mas duvido seriamente que compense mas vou explicar a minha ideia. Basicamente encriptas o código usando uma criptografia qualquer, por exemplo criptografia assimétrica. No firmware do microcontrolador vais ter que desenvolver um bootloader em que para alem de ler o que vem da porta serie e gravar na flash vai antes desencriptar.

Compilar=>Hex=>encriptar=>Hex encriptado
Hex encriptado=>bootloader=>desencriptar=>flash

Suponho que seja possivel fazer algo deste genero num bootloader. Os recursos de um arduino não devem ser muitos para implementar um metodo de criptografia muito complexo.

Offline luisjustin

  • Mini Robot
  • *
  • Mensagens: 161
    • Meu site
Re: Arduino - Criptografia de Código
« Responder #4 em: 03 de Junho de 2013, 01:03 »
Sim, mas saindo do assunto de criptografia, eu tenho um projeto que é criar uma especia de um OS para meu Arduíno mas para isto queria que dentro do CHIP do popio Arduíno ficasse apenas o codigo para dar o boot no cartão SD existe isso tem algum exemplo ? Porque se tiver quer começar a criar um OS simples somente para controlar minha casa mas para isto eu escreveria um código normal de Arduíno dentro de um cartão SD.

Exemplo:

Boot(Arduino Ligando) -> Abri o SD lê o código -> Executa o código como se fosse dele ou melhor como se estivesse nele, porque não sei até quanto pode chegar pesar esse meu sistema..

Offline tarquinio

  • Mini Robot
  • *
  • Mensagens: 529
Re: Arduino - Criptografia de Código
« Responder #5 em: 03 de Junho de 2013, 03:12 »
Não percebi bem o objectivo do que tu queres fazer... A idéia da criptografia é que as pessoas não consigam copiar o projecto, ou é mais para não conseguirem interferir com o sistema.

Em relação à questão do OS, não me parece que de para fazer o que tu queres... O arduino é muito limitado a nível de recursos para esse tipo de coisas. Aliás, mesmo que a memória não fosse uma limitação, nem sei se seria possível fazer isso.

Eu estou a desenvolver um projecto parecido, que permite criar projectos com arduino com interface web sem sem preciso programar (configura-se tudo atraves da interface web). Como disseste que percebias de programação web, provávelmente seria uma boa opção para ti fazer algo do genero tambem, podes ter toda a interface num browser e apenas as coisas mais simples no arduino.

Offline luisjustin

  • Mini Robot
  • *
  • Mensagens: 161
    • Meu site
Re: Arduino - Criptografia de Código
« Responder #6 em: 03 de Junho de 2013, 03:30 »
Sim, mas tecnicamente é isto que estou fazendo, mas queria algo mais tipo interfaces usando Arduíno e eu achei uns códigos em uns sites:
Esses sites mostraram códigos para dar o boot do Arduíno em um SD alguém pode me ajudar a entender como se usa ?

https://github.com/thseiler/embedded/tree/master/avr/2boots

http://baldwisdom.com/bootdrive/

https://github.com/osbock/Baldwisdom/tree/master/BootDrive

Offline tarquinio

  • Mini Robot
  • *
  • Mensagens: 529
Re: Arduino - Criptografia de Código
« Responder #7 em: 03 de Junho de 2013, 04:04 »
Esses projectos não são para correr código que está no SD, são é para fazer upload de programas para o arduino a partir de um cartão. Podes programar no PC, copiar o programa para um SD card, depois programar o arduino com o cartão sem precisar de estar ao pé do PC, por exemplo... Mas o código não é executado directamente do SD, a unica vantagem parece-me mesmo ser não precisares do PC... Mas isso não parece ter muito a ver com o que tu querias fazer.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Arduino - Criptografia de Código
« Responder #8 em: 03 de Junho de 2013, 04:16 »
Porquê a obsessão com codificar o programa?
Se não queres que ninguem tenha (fácil) acesso é activar os lock fuses, impedem que o programa seja lido, se usas um bootloader genérico(principalmente) os de Arduino é muito facil ler de novo o código que já lá está, e se realmente for um produto que venda a pontapé tens serviços na China e na Russia que por 1000-1500€ fazem um decap ao chip, rebentam com os transistores que controlam os lock-fuses e fazem dump ao código ou simplesmente lêem o código directamente da flash com meia duzia de needle probes no sitio certo, podes ir ao extremo de se ler os bits 1 a 1 com um microscópio de eletrões, nada é realmente seguro...

Ler um programa de um cartão SD ou de qualquer outra memória externa tem o inconveniente de estar sempre a usar a memória flash, que tem um ciclo tipicamente de 10-100 mil escritas e erases, não me parece que vá durar muito tempo se a cada boot vais re-programar.

Outra opção é programar um interpretador e ter código no cartão que é interpretado, por exemplo á lá picaxe que tem(pelo menos os antigos era assim), um interpretador de Basic no micro e o teu código era lá metido e executado, a questão é que isso torna-se lento, e perdes recursos no micro assim como flexibilidade.

O mais simples é um one time pad, agarras no .hex original, fazes um XOR com um valor qualquer(de preferência 8 ou 16 bits) e está feito, impossivel de ter os dados originais de novo, sim com 8 bits é relativamente rápido de se ter a solução na mão, a questão é que fazendo isso vais ter muitos falsos positivos, mas é facil de lá chegar, algo muito mais pesado que isso não deve caber no tamanho máximo de boot dos atmega que penso ser 8Kb nos 1280/1284/2560/2564.

O que eu disse inicialmente é que se o micro-controlador for DIP e tiver num socket e não soldado directamente, podes enviar updates, enviando um chip novo, tira o velho, mete o novo, feito, cliente nunca vê sequer um hex.

Mas fazer um SO?
Já existe uma duzia deles só para atmegas, mas para mim é overkill, e consumo desnecessário de recursos..
Avr fanboy

Offline luisjustin

  • Mini Robot
  • *
  • Mensagens: 161
    • Meu site
Re: Arduino - Criptografia de Código
« Responder #9 em: 03 de Junho de 2013, 04:33 »
Desculpe, é que eu estou complicando mesmo pensei sim nisto de enviar o chip novo para o cliente sempre que preciso é mais fácil, é que quero criar um OS mas tecnicamente ele não é um OS ou SO, é que tenho um projeto de automoção mas ao mesmo tempo quero algo multi ponto em todos lados da casa com um servidor central pensei em fazer tudo em um programa o Arduíno apenas como hardware vai ser melhor, eu aqui tenho um rack de telecomunicações com 2 servidores e alguns switchs e equipamentos da cisco, poderia interligar todos arduinos com Ethernet ? Isto teria como controlar tudo com um servidor central desculpe posso ter deixado vocês confusos mas só consigo falar explicando com voz, mas meu intuito da criptografia não é vender o código só que ninguém altere-o mas nem vou mais criptografar porque o que vou criptografar é o programa do servidor, mas obrigado a todos e desculpe pelo texto gigante que pode estar confundindo vocês.

Offline tarquinio

  • Mini Robot
  • *
  • Mensagens: 529
Re: Arduino - Criptografia de Código
« Responder #10 em: 03 de Junho de 2013, 06:02 »
Se o que tu queres é apenas ter vários Arduinos a comunicarem entre si por ethernet n é nada de muito complicado. Os proprios exemplos que vem com a library Ethernet do arduino chegam para fazer isto.
Podes ter um como servidor que comunica com a interface que tiveres implementada, e depois outros como clientes, que comunicam com o servidor... Isto não é dificil de fazer. Mas não sai muito barato teres arduinos ethernet espalhados por todo o lado

Offline luisjustin

  • Mini Robot
  • *
  • Mensagens: 161
    • Meu site
Re: Arduino - Criptografia de Código
« Responder #11 em: 03 de Junho de 2013, 06:29 »
Sim, entendo, eu tenho uma placa de ethernet do arduino mas nunca fiz funcionar ela não é a shield é aquelas que vem em um bloquinho tipo modulo essa aqui:

http://img1.mlstatic.com/modulo-ethernet-shield-enc28j60-arduino-pic-atmel-avr-id870_MLB-O-3224159870_102012.jpg

aqui no brasil essas placas são baratas, custam em torno de 20 a 30 reais, ou em euros é 7 a 10 euros cada uma delas mas esse modelo ai.

Offline dio123

  • Mini Robot
  • *
  • Mensagens: 1.032
Re: Arduino - Criptografia de Código
« Responder #12 em: 03 de Junho de 2013, 10:10 »
para isso pegas no chip  apagas as letras, assim a pessoa não sabe que  integrado é, e já é mais difícil.

Offline tarquinio

  • Mini Robot
  • *
  • Mensagens: 529
Re: Arduino - Criptografia de Código
« Responder #13 em: 03 de Junho de 2013, 14:43 »
Essas placas não usam o mesmo chip de ethernet que os arduinos... Já tenho visto dessas, mas nunca usei. Imagino que nesse caso seja necessário utilizar uma library diferente da que vem com o arduino, deves ter de uasr uma que seja compatível com esses módulos.

Offline luisjustin

  • Mini Robot
  • *
  • Mensagens: 161
    • Meu site
Re: Arduino - Criptografia de Código
« Responder #14 em: 03 de Junho de 2013, 18:56 »
Sim, só que a dela é muito mais complicada por isso vou trocar por outra placa.