Autor Tópico: Criptografia para microcontroladores ... help !  (Lida 6431 vezes)

Description:

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

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Criptografia para microcontroladores ... help !
« Online: 19 de Março de 2011, 22:58 »
Amigos foristas, boa noite.

Gostaria de saber dos colegas, suas experiências com a encriptação de firmware (.hex) para gravação de microcontroladores via bootloader.
Vc´s criptografam ou já criptografaram algo?
O que vc´s tem usado para criptografar? na unha ?.. software específico?
E no microcontrolador para decriptografar tem o codigo? adaptou de algum bootloader?
Quais os maiores problemas enfrentados?

Agradeço a toda e qualquer ajuda referente ao assunto do tópico.

abrax!

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re:Criptografia para microcontroladores ... help !
« Resposta #1 Online: 20 de Março de 2011, 08:23 »
O que voce quer proteger o que exatamente? Um arquivo hex supostamente está pronto para ser carregado num microcontrolador e não estaria critptografado, podendo passar por um desassembly.

Já implementei proteções para evitar que um código fosse alterado, mas não usei criptografia.

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re:Criptografia para microcontroladores ... help !
« Resposta #2 Online: 20 de Março de 2011, 10:24 »
Grande Mestre !!!

Citar
O que voce quer proteger o que exatamente?

Eu quero proteger um firmware para que não seja utilizado por um curioso qualquer.

Citar
Um arquivo hex supostamente está pronto para ser carregado num microcontrolador

Exatamente, eu quero proteger o meu .hex para que seja gravado somente com o uso do bootloader.
Necessito atualizar um sistema que está a uma certa distância de mim e não posso a cada atualização ir até o circuito, pedir que o cara envie ou traga o circuito para que eu atualize vai inviabilizar $$, e enviar simplesmente o .hex é a mesma coisa que dizer "pega o arquivo e não me pague".
Quero me precaver de depois de finalizar o projeto não copiarão o meu projeto, que pelo menos seja difícil para os mais curiosos e menos experientes.

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re:Criptografia para microcontroladores ... help !
« Resposta #3 Online: 20 de Março de 2011, 12:27 »

Se é para carregar com um bootloader, voce poderia customizar o bootloader de maneira a só reconhecer o seu hex.

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re:Criptografia para microcontroladores ... help !
« Resposta #4 Online: 20 de Março de 2011, 14:36 »
Citar
Se é para carregar com um bootloader, voce poderia customizar o bootloader de maneira a só reconhecer o seu hex.

é um caminho, mas meu hex ainda não fica protegido ... com uns testes que eu realizei em minha casa, se eu pegar o meu firmware que fiz e simplesmente gravá-lo no microcontrolador com um gravador (ICD2, JDM e outros) sem o auxílio do bootloader ele funcionará normalmente .. e é isso que eu quero evitar, ou dificultar.
Eu quero um firmware que só grave no microcontrolador que eu coloquei o bootloader e de nenhuma outra forma.
Eu pensei em imbutir o firm em um arquivo e atualizá-lo através do win, igual estes tocadores de mp3 e outros pqnos eletronicos ... mas me ocorreu que se um cara "ouvir" a serial ele poderá copiar o meu firm em um microcontrolador limpo.

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re:Criptografia para microcontroladores ... help !
« Resposta #5 Online: 20 de Março de 2011, 15:54 »

Quanto a questão do bootloader, depende..., o SEU bootloader poderá remover algumas travas de seu hex já carregado em memória Flash e só permitirá que rode aquilo que voce pré-determinar. Se o hex for carregado com um programador comum (ICD2, ICD3,...) então o programa não vai rodar.

Outro esquema possível, seu programa pode se autoverificar, inicialmente após o reset, e só rodar se não tiver sido alterado.

Mas perceba que nenhum esquema é 100% eficaz, pode ser apenas mais dificil para a maioria.
« Última modificação: 20 de Março de 2011, 15:59 por minilathe »

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re:Criptografia para microcontroladores ... help !
« Resposta #6 Online: 20 de Março de 2011, 16:05 »
Seu programa também pode ler o número de série do microcontrolador e só rodar se for o sistema que voce pré-definir.

Ou então criptografar o arquivo hex, de modo que o SEU bootloader antes de carregar, descriptografa cada byte antes de carregar em memória Flash. Evidentemente que o arquivo criptografado não vai funcionar se for carregado usando um programador comum. Nesse caso, o seu bootloader possui a CHAVE para a descriptografia.
« Última modificação: 20 de Março de 2011, 16:13 por minilathe »

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re:Criptografia para microcontroladores ... help !
« Resposta #7 Online: 20 de Março de 2011, 16:35 »
Citar
Quanto a questão do bootloader, depende..., o SEU bootloader poderá remover algumas travas de seu hex já carregado em memória Flash e só permitirá que rode aquilo que voce pré-determinar. Se o hex for carregado com um programador comum (ICD2, ICD3,...) então o programa não vai rodar.

tah ae uma opção ... como fazer estas travas? e com um diassembly o cara vê o programa?


Citar
Mas perceba que nenhum esquema é 100% eficaz, pode ser apenas mais dificil para a maioria

sim eu sei e para mim já está bom, não quero que curiosos utilizem de má fé com o meu trabalho ... só isso.


Citar
Ou então criptografar o arquivo hex, de modo que o SEU bootloader antes de carregar, descriptografa cada byte antes de carregar em memória Flash. Evidentemente que o arquivo criptografado não vai funcionar se for carregado usando um programador comum. Nesse caso, o seu bootloader possui a CHAVE para a descriptografia.

é isso que falo desde o início !! :)  criptografar o hex !!

Offline Coiote

  • Novato
  • *
  • Posts: 22
  • Sexo: Masculino
  • Estou aqui para aprender.
  • Cidade - UF: S.Bernardo do Campo-SP
Re:Criptografia para microcontroladores ... help !
« Resposta #8 Online: 20 de Março de 2011, 17:08 »
Blackmore, não sei como funciona com os programadores ICD2 e ICD3, mais nos que eu uso (GPIC USB software
próprio e RCD com Winpic800 ou ICprog), na aba de configuração tem a opção code protect CP. Se ativado na hora
de gravar, outra pessoa não poderá ver nem modifica o seu código hex. Só gravá-lo.
Caso tente ler só aparecera zeros.
« Última modificação: 20 de Março de 2011, 17:16 por Coiote »

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re:Criptografia para microcontroladores ... help !
« Resposta #9 Online: 20 de Março de 2011, 17:11 »
Citar
Quanto a questão do bootloader, depende..., o SEU bootloader poderá remover algumas travas de seu hex já carregado em memória Flash e só permitirá que rode aquilo que voce pré-determinar. Se o hex for carregado com um programador comum (ICD2, ICD3,...) então o programa não vai rodar.

tah ae uma opção ... como fazer estas travas? e com um diassembly o cara vê o programa?


Com um disassembly o programa sempre pode ser lido e submetido a "disassembly", se não estiver criptografado. Mas analisar um código pode ser bem complexo, se o código for extenso ou gerado por um compilador, por exemplo. A idéia é difcultar, já que impedir não é possível...

Citar
Ou então criptografar o arquivo hex, de modo que o SEU bootloader antes de carregar, descriptografa cada byte antes de carregar em memória Flash. Evidentemente que o arquivo criptografado não vai funcionar se for carregado usando um programador comum. Nesse caso, o seu bootloader possui a CHAVE para a descriptografia.

é isso que falo desde o início !! :)  criptografar o hex !!


Criptografar o hex é outra opção, mas aí o seu bootloader deve ser bem protegido no seu sistema, pois fornece a chave para abrir o código. Mas, novamente, também é outra maneira de dificultar, não impedir...

Existem várias maneiras de criptografar. Mas, com certeza, a maneira que voce usará não será colocada aqui, em público, não é??

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re:Criptografia para microcontroladores ... help !
« Resposta #10 Online: 20 de Março de 2011, 17:15 »
Acho que esquemas próprios bem construídos, e sendo desconhecidos, podem ser mais seguros não é?

Além disso, estamos falando de duas maneiras diferentes de carregar o programa, a saber: por um programador ou bootloader.

Usando em conjunto com o bootloader, a criptografia do hex impede que o hex ao ser submetido a disassembly gere um código coerente.

O bootloader possui uma vantagem, pois não requer que o usuário possua ou compre um programador, a menos que este seja fornecido com o sistema.
 
« Última modificação: 20 de Março de 2011, 17:23 por minilathe »

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re:Criptografia para microcontroladores ... help !
« Resposta #11 Online: 20 de Março de 2011, 17:24 »
Coiote

a proteção para leitura de código já no microcontrolador é definida no meu firmware, sem problemas quanto a isso, além da proteção de código no microcontrolador eu preciso proteger o arquivo .hex ANTES de gravá-lo pois eu devo enviar o arquivo .hex para que ele faça as atualizações através de qqer software de comunicação serial, lá nos cafundó que ele estiver.
Obrigado pela sua atenção.


minilathe

Citar
A idéia é difcultar, já que impedir não é possível...

sim dificultar, um cara que tem conhecimentos de programação normalmente não se dá ao trabalho de tentar quebrar uma criptografia, ele já parte para o seu próprio firmware ...

Citar
mas aí o seu bootloader deve ser bem protegido no seu sistema, pois fornece a chave para abrir o código

sim, a memória será protegida ...

Citar
Existem várias maneiras de criptografar. Mas, com certeza, a maneira que voce usará não será colocada aqui, em público, não é??

sim existem várias, vc manja muito mais de criptografia que eu e nem preciso lhe dizer nada, quanto a colocar aqui, acho que discutir formas trechos de códigos, e trocar idéias como já foi feito com vários outros assuntos, será algo que muitos podem podem aproveitar, e é isso que eu preciso trocar idéias e através de delas transpor esta barreira.

abrax!

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re:Criptografia para microcontroladores ... help !
« Resposta #12 Online: 20 de Março de 2011, 17:30 »
Citar
Acho que esquemas próprios bem construídos, e sendo desconhecidos, podem ser mais seguros não é?

Não entendi ...

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re:Criptografia para microcontroladores ... help !
« Resposta #13 Online: 20 de Março de 2011, 17:40 »
Citar
Acho que esquemas próprios bem construídos, e sendo desconhecidos, podem ser mais seguros não é?

Não entendi ...

Me referi a não usar soluções "públicas", que todos conhecem como funciona.

Offline luciano g

  • Hobby
  • ****
  • Posts: 922
  • Sexo: Masculino
Re:Criptografia para microcontroladores ... help !
« Resposta #14 Online: 20 de Março de 2011, 17:44 »
boas blackmore

oque vc quer fazer só é possivel se o seu programa conseguir escrever na memoria de programa se vc consegue o resto da ideia e facil de implementar

 

/** * */