Proteção contra cópia, proteção intelectual e questões de implantação

10

Depois de um tempo com o Raspberry Pi 2 Modelo B v1.1., Tenho as seguintes preocupações?

  1. Sei que o foco é aprimorar setores educacionais vulneráveis, mas é possível vender um produto, com base no RPi ?. Ganhar dinheiro com isso? Tornar-se bilionário com isso?
  2. Como devo proteger um desenvolvimento, digamos, não quero que alguém pegue meu cartão RPi SD, o duplique e tenha suas próprias réplicas ? Minha alternativa atual é preencher a porta SDCard com super cola :). Outra opção poderia fazer o RPi executar ping em um servidor de licenças on-line, o que obviamente exigiria uma conexão WiFi . Ou um ID de HASH de hardware (essa deve ser uma resposta melhor, eu acho ...)
  3. Eu verifiquei também existem mecanismos para recuperar a instalação, mesmo se você não tiver a raiz, montando o cartão SD. Mais uma vez, minha melhor solução é a abordagem de super cola.

Desde já, obrigado.

Brethlosze
fonte
2
Esta é uma questão geral do Linux incorporado. É um problema complexo, tanto técnica como legalmente.
Craig
2
Olá e bem-vindo ao RaspberryPi.SE! São muitas perguntas em uma. Alguns problemas também são muito amplos e não específicos do Pi. Você precisa considerar que, com tempo e esforço, todos os sistemas de proteção contra cópia podem ser contornados. Especialmente se o seu sistema estiver implantado e você não tiver como impedir que o "bandido" use todas as ferramentas disponíveis para quebrar sua proteção.
Ghanima
@ Craig: Existe uma comunidade Linux embarcada?
Brethlosze
WRT # 2: Você não pode impedir a pirataria tecnicamente em qualquer plataforma, tudo o que você pode fazer é combatê-la legalmente . Eu acho que você tem o carrinho antes do cavalo aqui. Quando você tiver um projeto de software baseado em pi, onde isso for uma preocupação, você reconhecerá que não há um projeto baseado em pi que esteja realmente vinculado ao pi. É apenas um dispositivo de propósito geral, e a comunidade é orientada para o desenvolvimento.
goldilocks
2
Não é "a plataforma deles", no desenvolvimento de aplicativos, e eles sabem disso e não se importam. Esse não é "o objetivo deles". É um Broadcom SoC implementando uma arquitetura ARM. Não há nada que alguém faça com um pi que não possa ser portado trivialmente para uma ampla variedade de outros dispositivos. Então, mais uma vez: você tem a carroça diante do cavalo . Com o tempo você chegar ao ponto onde a sua preocupação com a propriedade intelectual tem qualquer sentido ou significado, você vai entender o que estou tentando dizer a você ...
goldilocks

Respostas:

6

Se você está realmente preocupado com a proteção de sua propriedade intelectual, pode combinar seu aplicativo baseado no Rapberry Pi com uma chave de hardware baseada em microcontrolador externo personalizado (MCU como AVR, PIC, 8051 ...) (conectado ao Pi via USB, RXTX, I2C, SPI, 1 fio ...). Por exemplo, o aplicativo do lado Pi gera um número aleatório que é enviado ao MCU, decodificado e enviado de volta como uma chave de desbloqueio para descriptografar algo importante. Além disso, você tem alguma função importante executada diretamente no MCU (você apenas passa os parâmetros e obtém o resultado do MCU). Você pode imaginar como isso aumentaria a dificuldade de invasão de hackers na ordem de uma magnitude, já que seu conhecimento teria que ser muito mais amplo do que o habitual. Não existe uma proteção perfeita, mas se você realmente quiser fazer disso um desafio, esse pode ser um caminho a percorrer.

avra
fonte
11
Esta é uma boa solução, na verdade .... eu vou ter-lhe uma tentativa a este conceito ....
Brethlosze
11
Infelizmente, a solução para uma chave de hardware é a mesma que uma chave de software - basta remover a parte incorreta do código, criar a resposta certa etc. Assim, as mesmas habilidades funcionarão contra uma chave de hardware.
tomnexus
2
Não se você colocar alguma função importante na chave de hardware e torná-la crítica para a funcionalidade do aplicativo Pi. Como a função existe apenas em um micro controlador, não há nada a remover no lado Pi. Isso não é impossível de ser quebrado, mas muitas e muitas vezes mais difícil, pois exige habilidades muito mais altas que a quebra de código usual.
Avra
11
Embora esses circuitos externos realmente adicionem proteção, essas coisas custam muito dinheiro: pesquisa, prototipagem, fabricação, teste, implementação e manutenção. E se algo acontecer ao longo da linha? E se o Raspberry alterar sua interface (s) em modelos futuros? Se for uma vida útil curta ou um projeto de hobby, vá em frente. Se é um produto industrial / comercial, talvez o OEM seja uma aposta mais segura.
EDP
5
  1. Eu acho que essa foi a idéia com o módulo de computação o tempo todo. Não deve ser um problema obter lucro.

  2. / 4. A opção supercola é provavelmente uma boa escolha. Por fim, você não pode derrotar um invasor com acesso físico ao dispositivo. Dê uma olhada nos consoles de jogos que provavelmente investiram milhões em infraestrutura de DRM e acabam caindo. Em um espírito diferente, você também pode abraçar a abertura e vender uma versão de desenvolvimento do seu produto e incluir algum tipo de SDK. O feedback que você recebe de um grupo de usuários com foco técnico pode ser valioso e funcionar no seu interesse.

user1217949
fonte
A opção supercola provavelmente é completamente louca, mas você faz alguns outros bons pontos aqui. ;
goldilocks
Na verdade, eu estava pensando em alguma identificação de hardware do Raspberri Pi, para que todo software RPi pudesse ser programado para cada placa RPi e, portanto, se eu clonar o software, o sistema não funcionará. Os uProcessadores antigos foram simplesmente programados a bordo, portanto você não pode desconectá- lo :).
Brethlosze 02/04
11
Mesmo se você tivesse um ID de hardware, qualquer outra pessoa com acesso físico poderia lê-lo. Os processadores programados a bordo também oferecem interfaces de depuração, para que você possa lê-los. Em sistemas mais sofisticados, o SOC provavelmente cuidará apenas da execução de código assinado. Eu não ficaria surpreso se o chip Broadcom tivesse alguma funcionalidade nessa direção, mas você não possui documentação para isso. Se você quer plano para milhões venda de unidades, eles podem falar com você sobre isso;)
user1217949
LOL .. não, eu acho que vou vender uma quantidade muito menor deles !. Então, se eu tiver um código rodando no Raspbian, alguém poderia pegar o cartão SD e lê-lo? depurar isso? quebrar?. Tenho certeza absoluta de que a resposta é sim. A melhor opção será Hardware Keysugerir a avra e enterrar o cartão SD com o SuperGlue dentro do conector?
Brethlosze 18/04
4

Embora essa prática definitivamente esteja perdendo cobertura, você ficaria surpreso com a quantidade de conectores USB que foram colados em máquinas de desktop em ambientes de escritório corporativo. E eu estou falando de grandes corporações multinacionais aqui.

Mas agora no tópico ...

Para projetos comerciais em que a proteção de IP é um fator importante, o Pi é bom para a prototipagem precoce / prova de conceito, na melhor das hipóteses. Mesmo que a proteção não seja um problema, as implantações do Pi em uma escala maior não são a melhor solução - por várias razões que descrevi em um tópico anterior deste fórum.

Não existe um sistema seguro contra engenharia reversa / hacking / reprodução. Qualquer sistema é explorável. Todo sistema, no entanto, tem uma pontuação de penetração. Com sua abordagem aberta e cartão SD externo, o Pi possui uma versão muito baixa. Uma placa de hardware aprovada militarmente projetada com SoC personalizado, componentes em sanduíche e PCB de várias camadas em combinação com um gerenciador de inicialização personalizado, a criptografia de hardware terá uma pontuação maior.

Além disso, há o fator de implantação. Quanto maior o seu mercado, mais interessante se tornará para as pessoas invadirem e roubarem sua tecnologia.

Se o hardware é sua peça de resistência em toda a configuração e a proteção de sua tecnologia é um fator importante, não acho que o Pi seja o produto para você. Se o seu hardware é um facilitador para a venda de serviços, talvez a proteção da tecnologia deva ser feita no lado do servidor e não no lado do cliente.

Usamos o Pi para vender esses serviços. Nosso software no Pi tem um nível elevado de proteção; estamos usando um aplicativo C compilado, bloqueado no número de série do MAC e / ou da CPU. Mas, no final, sem o lado do servidor, até o código fonte é praticamente inútil.

EDP
fonte
3

Você pode usar um piggy-back inside framboesa com uma chave de criptografia. Existem alguns dispositivos comerciais no mercado. Eu usei este Software Serial Protection para Raspberry Pi , que funciona muito bem.

Paulo Arede
fonte
2
Isso não ajudará você a proteger o sistema da clonagem - os hackers removerão a verificação da chave HW do seu binário, se quiserem ... A chave HW fornecerá apenas um certo nível de proteção (talvez para interromper o hobby de primeiro nível hackers).
Kozuch
2

Torne-o de código aberto

Sério, não tente protegê-lo contra cópia. Torne-o de código aberto. Se possível, permita que outras pessoas participem do seu projeto.

Em seguida, cobrar pelos serviços. Você pode ganhar dinheiro se fizer isso da maneira certa.

Red-had faz assim e algumas outras empresas. Todos estão indo bem e estão crescendo.

MadMike
fonte
11
Não, este é um produto, não é um projeto, nem um grande projeto, nem um projeto de programação muito interessante. Parece bonito, mas, novamente, não.
Brethlosze, 12/0317
11
Discordo. Pela minha experiência, todos os programas que eu escrevi, enviados e usados ​​ativamente pelo cliente, tinham chamadas de suporte, solicitações de aprimoramento e, é claro, correção de erros. O único software que não possuía nenhum deles era o software que, após o envio, nunca era usado.
madmike
Esse é o ponto, isto é para um produto, um dispositivo. não há arte alguma no software, mas a maneira pela qual as variáveis ​​são processadas precisa ser protegida, como qualquer controlador inteligente. Você não pretende abrir seus desenvolvimentos nesse sentido, isso está fora de questão, esse é outro tipo de trabalho. Talvez você esteja em uma empresa e fique chateado quando o cliente ligar, quando na verdade isso lhe dará mais cobrança aos seus chefes e o serviço de pós-venda, que a longo prazo é bom. De qualquer forma, o código aberto é bom para a humanidade, não para obter lucro.
Brethlosze 17/03/19
11
Novamente, esta é a discussão utópica de presentear todo o seu trabalho para benefício humano ou cobrar a todos por tudo que você faz.
Brethlosze 17/03/19
1

Poucos centavos meus:

  1. Nunca crie uma solução em torno de scripts que possam ser lidos diretamente.
  2. Funcionalidades de detalhamento em termos de vários softwares / processos e hardware.
  3. Adicione alguma dependência "funcional" do hardware de leitura.
  4. Adicione um leitor de cartão inteligente e venda o cartão inteligente "capacitador" com seu produto.
  5. Tenha um servidor de licenças
  6. Tenha um contador de uso na EEPROM !!! E deve haver uma maneira de "recarregar" on-line .. ;-)

...

Jatin Gandhi
fonte
1

Como uma proteção de nível de entrada, existe um ID do cartão SD exclusivo, /sys/block/mmcblk0/device/que não é clonado pelo software típico de clonagem de imagem de disco. Isso tem a vantagem de não exigir um dispositivo separado para armazenar o ID exclusivo e funciona muito bem como uma segunda camada de proteção após a supercola. Pelo menos isso impedirá as pessoas capazes de simplesmente clonar o cartão SD.

Outra dica sobre a proteção usando IDs é evitar o uso de uma verificação simples, ou seja,

if(readID() != 0xDEADBEEF) exit();

É fácil descobrir verificações simples como essa (pesquisando o ID conhecido ou monitorando as chamadas para exit()) e removendo. Uma abordagem muito melhor é envolver o ID como uma constante nos cálculos. Ou seja, em vez de i++algum lugar no seu código, você escreverá

i = i + readID() - 0xDEADBEEF + 1;

Isso será muito mais difícil de descobrir, pois o ID exato não aparecerá no seu código literalmente ( 0xDEADBEEF + 1 == 0xDEADBEF0) e a inspeção de todas as chamadas exit()também não revelará a localização do seu código de proteção. Em vez disso, seu código simplesmente trava em um sistema com o ID errado e o invasor precisa depurar a lógica do aplicativo para entender e corrigir o problema.

Dmitry Grigoryev
fonte
0

Usando um componente externo, quis dizer que o componente de segurança resolveria esse problema. Se você realmente acha que sua ideia é ótima e vale um custo extra, sugiro que você use um MCU / CPU profissional para fazer isso. Como a série Broadcom BCM58101, não é realmente rentável e não é amigável para um novo usuário, mas um alto nível de segurança também pode proteger sua ideia / design.

Benjamin LIiiiiiiii
fonte