Como posso proteger o código do meu robô?

Como posso proteger o código do meu robô?

Quero construir um robô usando alguns minicomputadores como Raspberry-Pi e usando sistema operacional Linux. Acho que essas placas (RPi, NanoPi, etc) possuem um cartão SD externo para inicializar o sistema operacional, e meu código irá para lá (no cartão SD). Então, como posso proteger meu código de alguém que queira copiá-lo?

Do meu código, quero dizer meus programas escritos usando CMUsphinx, Opencv, etc.

Existe alguma maneira de especificar cada cartão SD para uma placa específica? Quero dizer, o cartão SD nom.1 só funciona na placa nom.1.

Ou talvez colocar um código oculto em placas e cartões SD que usam um algoritmo e devem ser compatíveis para serem executados?

Responder1

Você não pode proteger alguém que tenha acesso físico ao dispositivo de copiar seu código. Se a placa pode ler seu código, qualquer outra pessoa também pode.

Para proteger o código contra cópia, você precisará usar um dispositivo que possua algum armazenamento resistente a violações. Esse hardware existe, mas está em uma faixa de preço mais elevada.

Você pode testar seu código para verificar algum identificador de hardware e recusar a inicialização se estiver executando em um dispositivo de hardware diferente. Isto torna impossível executar umexatocopie diretamente, mas ainda é fácil alterar o código para ignorar a verificação ou executá-lo em um ambiente virtualizado que alimenta seu código com a identificação de hardware que ele espera. Basicamente, é uma forma de manter a honestidade das pessoas honestas, mas não impedirá ninguém de querer copiar o código.

Responder2

Para proteger seus dados você precisa ter uma chave, de qualquer tipo, que você possa guardar e controlar fisicamente e estar separada de seus dados secretos. A senha em seu cérebro é um exemplo dessa solução - ela é guardada fisicamente pelo proprietário, memorizando-a.

Como senha pode haver algum token visual para o seu super robô, como um pedaço de papel com código de barras que descriptografa o seu software e permite que ele funcione dessa forma. Pode valer a pena considerar, já que o mesmo pedaço de papel pode ser usado para encerrar sua criação, com ajuda de openvc e scripts, é claro.

Uma maneira menos prática, mas mais fácil de implementar, é ter 2 cartões SD, um contém a chave e é usado para inicializar o sistema e espera até você trocar o cartão SD e continuará inicializando depois disso.

você deve ver comoinitramfsé usado para inicializar todo o sistema. Você deve ver como criarinitramfs personalizadose ser capaz de modificar o script de inicialização para aguardar e descriptografar a montagem de sua segunda placa com o sistema principal.

O sistema não é perfeito, mas sujo e barato.

Também não precisa ser uma solução initramfs, você pode usar soluções como copiar seus códigos executáveis ​​​​para o disco ram de algum usbdrive, que você insere apenas para iniciar sua criação e removê-lo quando ele começar a funcionar.

Quando você tem segredo e chave em uma mídia (é aquele truque inteligente, algo escondido, etc.), ela pode ser submetida a engenharia reversa.

Quanto a mim, a solução initramfs precisa de menos esforço, muitas informações sobre como fazer initramfs personalizados.

informação relacionada