# Segurança de um Microcontrolador PIC

**URL:** <https://forum.fazedores.com/t/seguranca-de-um-microcontrolador-pic/3824>\
**Category:** Microcontroladores\
**Created:** [Janeiro 10, 2017, 9:51pm UTC](https://forum.fazedores.com/t/seguranca-de-um-microcontrolador-pic/3824 "2017-01-10T21:51:50Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![thiagomg95](https://avatars.discourse-cdn.com/v4/letter/t/c0e974/32.png) [@thiagomg95](https://forum.fazedores.com/u/thiagomg95)\
**Post date:** [Janeiro 10, 2017, 9:51pm UTC](https://forum.fazedores.com/t/seguranca-de-um-microcontrolador-pic/3824/1 "2017-01-10T21:51:50Z")

</div>

Boa noite pessoal, sou novo no fórum, estou desenvolvendo um projeto com uma empresa para criar um produto a ser exportado pelo Brasil todo, no caso do projeto estou optando, por enquanto, a utilização do PIC 18f4620. Porém a partir de pesquisas minhas feitas pela internet e conversas com meus colegas, parece haver formas de burlar a segurança para o PIC 18 e adquirir o código do programa, o que seria um grande problema, já que o programa em si é a chave para o produto. Dessa forma meu colega me recomendou a utilização do PIC 24 e PIC32 para maior segurança. Porém o problema da utilização destes seria a necessidade da importação dos produtos, que todos sabem, é complicado no Brasil, não encontrei ainda uma loja para adquirir estes tipos de PIC no Brasil, fácil exportação e com PICs populares dessas famílias.  
A minha pergunta seria, o que vocês recomendam que seria a melhor atitude a ser tomada? Uma migração para outra família do PIC, para ter a maior segurança no projeto e enfrentar a problematização das importações de produtos exteriores (caso ninguém conheça um local pelo menos online para compra destes produtos), ou vocês acham que a segurança disposta pelos PIC 18 é o suficiente para ser feita a venda do produto por todo o país? Gostaria de avaliar esses prós e contras para tomada de decisão  
Obrigado à quem puder ajudar

---

<div class="post-metadata">

**Author:** ![sksdutra](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/sksdutra/32/442_2.png) [@sksdutra](https://forum.fazedores.com/u/sksdutra)\
**Post date:** [Janeiro 10, 2017, 11:51pm UTC](https://forum.fazedores.com/t/seguranca-de-um-microcontrolador-pic/3824/2 "2017-01-10T23:51:20Z")

</div>

Olá @thiagomg95 todo fabricante de MCU se preocupa com segurança e, por isso, até onde eu sei, a maioria ( **senão todos** ) os fabricantes disponibilizam, no mapa de memória do seu produto os chamados **_LOCK BITS_** e **um** dos objetivos destes é prevenir que alguém com intuito malicioso, adquira uma cópia do _firmware_ compilado, já que, de posse deste binário, o produto poderá ser clonado, podendo causar prejuízos gigantescos aos clientes do fabricante e arruinando a reputação do mesma.

**_LOCK BITS_** de forma bem simples, são bits de configuração do MCU que servem para definir vários comportamentos deste. em MCU’s da Atmel, isto é também chamado de _**[FUSE PROGRAMMING](http://www.atmel.com/webdoc/atmelstudio/atmelstudio.programmingdialog.fuses.html)**_ e, como pode ver neste link, é facilmente acessível pela **_IDE Atmel Studio_** , quem usa LUFA ou AVR GCC, pode importar um header específico que dá acesso a este tipo de configuração programáticamente.

Para a sua questão específica: Em MCU’s da Atmel, existe um bit chamado **_[Security Bit](http://www.atmel.com/webdoc/atmelstudio/atmelstudio.section.securitybit.html)_**, para todos os efeitos, ele é um **_LOCK BIT_** mas tem um comportamento especial que, se você setar, a memória do MCU ficará travada para acesso externo, não poderá ser feita uma leitura externa do _firmware_, o _chip_ precisará ser completamente apagado para que possa ser acessível novamente para programação ou leitura externa.

Como isso funciona em PIC, eu realmente não sei, pois, apesar da vontade, nunca peguei um PIC para trabalhar, mas tenho absoluta certeza que a IDE oficial tem métodos bem semelhantes para setar este tipo de proteção.

Existe uma forma de burlar isso? Provavelmente existe, já vi vários artigos referentes a isso, mas não é nada trivial, mas é perfeitamente possível, a placa de desenvolvimento _Teensy_, por exemplo, tem este tipo de trava setado para proteger o seu _bootloader_ e até hoje não vi clones dela, claro, há produtos que levam o mesmo nome, para se aproveitar da fama, mas não tem o _bootloader_ da _Teensy_ original.

---

<div class="post-metadata">

**Author:** ![thiagomg95](https://avatars.discourse-cdn.com/v4/letter/t/c0e974/32.png) [@thiagomg95](https://forum.fazedores.com/u/thiagomg95)\
**Post date:** [Janeiro 11, 2017, 11:26pm UTC](https://forum.fazedores.com/t/seguranca-de-um-microcontrolador-pic/3824/3 "2017-01-11T23:26:55Z")

</div>

Obrigado pela resposta,

Um dia um professor meu comentou que existe uma maneira de apagar todo o conteúdo do Chip do PIC caso ele fosse retirado do suporte ou placa, vocês sabem alguma coisa sobre isso?

---

<div class="post-metadata">

**Author:** ![Andre\_Xavier](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/andre_xavier/32/1645_2.png) [@Andre\_Xavier](https://forum.fazedores.com/u/Andre_Xavier)\
**Post date:** [Janeiro 17, 2017, 4:57pm UTC](https://forum.fazedores.com/t/seguranca-de-um-microcontrolador-pic/3824/4 "2017-01-17T16:57:04Z")

</div>

Olá Thiago, a página 249 do [Data Sheet do PIC18F4620](http://ww1.microchip.com/downloads/en/DeviceDoc/39626e.pdf), diz que ele possui _Code Protection_. Porém acho melhor usar, se for possível, um microcontrolador de 32 bits como o [PIC32MM0064GPL028-I/SP](http://www.microchipdirect.com/productsearch.aspx?Keywords=PIC32MM0064GPL028-I/SP), por ser mais barato, mais moderno e ainda contar com o [MPLAB® Harmony](http://www.microchip.com/mplab/mplab-harmony) que fornece um conjunto de bibliotecas de periféricos de uso facilitado.

---

<div class="post-metadata">

**Author:** ![beck](https://avatars.discourse-cdn.com/v4/letter/b/a183cd/32.png) [@beck](https://forum.fazedores.com/u/beck)\
**Post date:** [Abril 25, 2019, 6:35am UTC](https://forum.fazedores.com/t/seguranca-de-um-microcontrolador-pic/3824/5 "2019-04-25T06:35:55Z")

</div>

Também precisa excluir o conteúdo do chip, use o quadro [https://www.allicdata.com/list.html?category\_id=1816](https://www.allicdata.com/list.html?category_id=1816)

---

<div class="post-metadata">

**Author:** ![skullcrusher777](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/skullcrusher777/32/2562_2.png) [@skullcrusher777](https://forum.fazedores.com/u/skullcrusher777)\
**Post date:** [Abril 25, 2019, 11:12am UTC](https://forum.fazedores.com/t/seguranca-de-um-microcontrolador-pic/3824/6 "2019-04-25T11:12:59Z")

</div>

Amigo já participei de vários projetos de engenharia reversa e posso dizer que na maioria dos casos a abordagem da engenharia reversa não se dá por estes meios.  
Essa de tentar chupinhar código é uma péssima idéia e vou explicar o pq o que está no microcontrolador é o código já compilado. E isso por si se porventura precisar alterar algo ferrou.  
A abordagem é á seguinte tem um produto ou uma maquina e vc precisa de outra igual, é feito da seguinte maneira, com uma equipe multidiciplinar o desenvolvedor vai fazer uma (árvore de estados de todas entradas e saidas) ou seja ele entende a lógica de trabalho da maquina ou produto e simplesmente faz uma programação nova que atenda aqueles requisitos da mesma forma que a existente. Posso falar por experiencia própria que é uma perda de tempo seguir a linha de raciocino que vc esboçou. Quem entende o processo de como a coisa funciona seja ela o que for é fácil replicar e muitas vezes nesse processo corrige ou aperfeiçoa muitas coisas do projeto original…  
Tem muita gente aqui no furum que vai confirmar o que eu vou dizer agora:  
É uma merda tentar arrumar, alterar ou acabar o que foi feito por outra pessoa.  
É mais fácil, mas barato, fazer um novo mesmo que o objetivo seja o mesmo.  
É claro tudo tem suas exceções.
