Problèmes de protection contre la copie, de protection intellectuelle et de déploiement


10

Après un certain temps avec le Raspberry Pi 2 Model B v1.1., J'ai les préoccupations suivantes?

  1. Je sais qu'il est axé sur l'amélioration des secteurs éducatifs vulnérables, mais il est possible de vendre un produit, basé sur le RPi ?. Pour gagner de l'argent avec ça?. Devenez zillionaire avec ça?.
  2. Comment dois-je protéger un développement, disons, je ne veux pas que quelqu'un prenne ma carte SD RPi, la duplique et ait ses propres répliques ?. Mon alternative actuelle est de remplir le port SDCard avec de la superglue :). Un autre choix pourrait amener le RPi à envoyer un ping à un serveur de licences en ligne, ce qui nécessiterait bien sûr une connexion WiFi . Ou un ID HASH matériel (cela devrait être une meilleure réponse, je suppose ...)
  3. J'ai vérifié qu'il existe également des mécanismes pour récupérer l'installation même si vous n'avez pas la racine, en montant la carte SD. Encore une fois, ma meilleure solution est l'approche superglue ....

Merci d'avance.


2
Il s'agit d'une question générale sur Linux embarqué. Il s'agit d'un problème complexe tant sur le plan technique que juridique.
Craig

2
Bonjour et bienvenue sur RaspberryPi.SE! C'est trop de questions en une. Certains problèmes sont également très larges et non spécifiques à Pi. Vous devez tenir compte du temps et des efforts que tous les systèmes de protection contre la copie peuvent être contournés. Surtout si votre système est déployé et que vous n'avez aucun moyen d'empêcher le "méchant" d'utiliser tous les outils disponibles pour briser votre protection.
Ghanima

@craig: Existe-t-il une communauté Linux embarquée?
Brethlosze

WRT # 2: Vous ne pouvez pas empêcher le piratage techniquement sur n'importe quelle plate-forme, tout ce que vous pouvez faire est de le combattre légalement . Je pense que vous avez le chariot devant le cheval ici. Au moment où vous avez un projet logiciel basé sur pi où cela est un problème, vous reconnaîtrez qu'aucun projet basé sur pi n'est vraiment lié au pi. C'est juste un appareil à usage général, et la communauté est orientée vers le développement.
goldilocks

2
Ce n'est pas «leur plate-forme», en termes de développement d'applications, et ils le savent et s'en moquent. Ce n'est pas "leur but". Il s'agit d'un SoC Broadcom implémentant une architecture ARM. Il n'y a rien que quelqu'un puisse faire avec un pi qui ne pourrait pas être porté trivialement sur une très large gamme d'autres appareils. Donc, encore une fois: vous avez le chariot devant le cheval . Au moment où vous arriverez au point où votre préoccupation pour la propriété intellectuelle aura un sens ou une signification, vous comprendrez ce que j'essaie de vous dire ...
goldilocks

Réponses:


6

Si vous êtes vraiment soucieux de protéger votre propriété intellectuelle, vous pouvez combiner votre application basée sur Rapberry Pi avec un microcontrôleur externe personnalisé (MCU comme AVR, PIC, 8051 ...) basé sur une clé matérielle (connectée à Pi via USB, RXTX, I2C, SPI, 1 fil ...). Par exemple, l'application côté Pi génère un nombre aléatoire qui est envoyé au MCU, décodé et renvoyé comme clé de déverrouillage pour décrypter quelque chose d'important. Ensuite, vous avez également une fonction importante exécutée directement dans MCU (vous passez simplement des paramètres et obtenez le résultat de MCU). Vous pouvez imaginer comment cela augmenterait la difficulté de craquage pour un pirate par ordre de grandeur, car ses connaissances devraient être beaucoup plus larges que d'habitude. Il n'y a pas de protection parfaite, mais si vous voulez vraiment en faire un défi, cela pourrait être une solution.


1
C'est une bonne solution en effet .... Je vais essayer ce concept ....
Brethlosze

1
Malheureusement, la solution à une clé matérielle est la même qu'une clé logicielle - il suffit de supprimer la partie incriminée du code, de créer la bonne réponse, etc. Ainsi, les mêmes compétences fonctionneront avec une clé matérielle.
tomnexus

2
Pas si vous mettez une fonction importante dans la clé matérielle et rendez le résultat critique pour la fonctionnalité de votre application Pi. Comme la fonction n'existe que dans un micro contrôleur, il n'y a rien à retirer du côté Pi. Ce n'est pas impossible à briser, mais beaucoup, beaucoup plus difficile car cela nécessite des compétences beaucoup plus élevées que le crackage de code habituel.
avra

1
Bien que ces circuits externes ajoutent effectivement une protection, ces choses coûtent beaucoup d'argent: recherche, prototypage, fabrication, test, mise en œuvre, maintenance. Et si quelque chose se passe le long de la ligne? Et si Raspberry changeait d'interface (s) dans les futurs modèles? Si c'est une courte durée de vie ou un projet de loisir, allez-y. S'il s'agit d'un produit industriel / commercial, l'OEM est peut-être un pari plus sûr.
EDP

5
  1. Je pense que c'était l'idée avec le module de calcul tout au long. Faire un profit ne devrait pas être un problème.

  2. / 4. L'option superglue est probablement un bon compromis. En fin de compte, vous ne pouvez pas vaincre un attaquant avec un accès physique à l'appareil. Jetez un œil aux consoles de jeux qui ont probablement investi des millions dans l'infrastructure DRM et elles finissent toutes par tomber. Dans un esprit différent, vous pouvez également adopter l'ouverture et vendre une version de développement de votre produit et inclure une sorte de SDK. Les commentaires que vous obtenez d'un groupe d'utilisateurs axés sur la technique peuvent être précieux et fonctionner dans votre intérêt.


L'option superglue est probablement complètement folle, mais vous faites ici d'autres bons points. ; |
goldilocks

En fait, je pensais à un ID matériel du Raspberri Pi, afin que chaque logiciel RPi puisse être programmé pour chaque carte RPi, et donc, si je clone le logiciel, le système ne fonctionnera pas. Les anciens uProcessors étaient simplement programmés à bord, vous ne pouvez donc pas le débrancher :).
Brethlosze

1
Même si vous disposiez d'un ID matériel, toute autre personne disposant d'un accès physique pourrait le lire. Bien entendu, les processeurs programmés à bord fournissent également des interfaces de débogage, de sorte que vous pouvez réellement les lire. Dans les systèmes plus sophistiqués, le SOC se chargera probablement d'exécuter uniquement du code signé. Je ne serais pas trop surpris si la puce Broadcom a des fonctionnalités dans ce sens, mais vous n'avez pas de documentation pour cela. Si vous voulez planifier de vendre des millions d'unités, ils pourraient vous en parler;)
user1217949

LOL .. non, je suppose que je vais en vendre une quantité vraiment mineure !. Donc, si j'ai un code fonctionnant sous Raspbian, un autre pourrait prendre la carte SD et la lire? le déboguer? craque le?. Je suis totalement sûr, la réponse est bien sûr oui. Le meilleur choix sera-t-il de se faire proposerHardware Key par avra , et d'enterrer la carte SD avec SuperGlue à l'intérieur de son connecteur?
Brethlosze

4

Bien que cette pratique perd définitivement de sa couverture, vous seriez étonné par la quantité de connecteurs USB collés sur les ordinateurs de bureau dans les environnements de bureau d'entreprise. Et je parle ici de grandes sociétés multinationales.

Mais maintenant sur le sujet ...

Pour les projets commerciaux où la protection IP est un facteur majeur, le Pi est idéal pour le prototypage précoce / preuve de concept au mieux. Même si la protection ne serait pas un problème, les déploiements du Pi à plus grande échelle ne sont pas à mon humble avis la meilleure solution - pour un certain nombre de raisons que j'ai décrites dans un fil précédent sur ce forum.

Il n'y a aucun système sûr contre l'ingénierie inverse / le piratage / la reproduction. Tout système est exploitable. Chaque système a cependant un score de pénétration. Avec son approche ouverte et sa carte SD externe, le Pi en a une très basse. Une carte matérielle approuvée par les militaires conçue sur mesure avec un SoC personnalisé, des composants en sandwich et un PCB multicouche en combinaison avec un chargeur de démarrage personnalisé, le cryptage matériel aura un score plus élevé.

À cela s'ajoute le facteur de déploiement. Plus votre marché est large, plus il deviendra intéressant pour les gens de s'introduire et de voler votre technologie.

Si le matériel est votre résistance dans toute l'installation et que la protection de votre technologie est un facteur majeur, je ne pense pas que le Pi soit le produit qu'il vous faut. Si votre matériel est un facilitateur pour la vente de services, la protection de la technologie devrait peut-être être effectuée côté serveur plutôt que côté client.

Nous utilisons le Pi pour vendre de tels services. Notre logiciel sur le Pi a un niveau de protection élevé, nous utilisons une application C compilée, verrouillée sur le numéro de série MAC et / ou CPU. Mais à la fin, sans notre côté serveur, même le code source est pratiquement inutile.


3

Vous pouvez utiliser un ferroutage à l'intérieur de la framboise avec une clé de cryptage. Il existe quelques appareils commerciaux sur le marché. J'ai utilisé ce logiciel de protection série pour Raspberry Pi , qui fonctionne très bien.


2
Cela ne vous aidera pas à protéger le système contre le clonage - les pirates supprimeront la vérification de la clé HW de votre binaire s'ils le souhaitent ... La clé HW ne fournira qu'un certain niveau de protection (peut-être pour arrêter le passe-temps de premier niveau pirates).
Kozuch

2

Rendez-le open-source

Sérieusement, n'essayez pas de le protéger contre la copie. Rendez-le open-source. Si possible, laissez les autres rejoindre votre projet.

Ensuite, facturez les services. Vous pouvez faire des seaux d'argent si vous le faites bien.

Red-had le fait comme ça et quelques autres sociétés. Ils se portent tous bien et se développent.


1
Non, c'est un produit, pas un projet, ni un grand projet ni un projet de programmation très intéressant. Cela semble joli, mais encore une fois, non.
Brethlosze

1
Je ne suis pas d'accord. D'après mon expérience, chaque programme que j'ai écrit qui a été livré et utilisé activement par le client aurait des appels de support, des demandes d'amélioration et, bien sûr, une correction de bogues. Le seul logiciel qui n'en avait aucun était un logiciel qui, après l'avoir expédié, n'a jamais été utilisé.
MadMike


C'est le point, c'est pour un produit, un appareil. il n'y a pas du tout d'art dans le logiciel mais, la façon dont les variables sont traitées doit être protégée, comme tout contrôleur intelligent. Vous n'avez pas l'intention d'ouvrir vos développements en ce sens, c'est hors de question, c'est un autre type de travail. Peut-être que vous êtes dans une entreprise et que vous êtes énervé lorsque le client vous appelle, alors qu'en réalité cela vous donne plus de facturation à vos patrons et vous donne le service après-vente, ce qui est bon à long terme. En tout cas, l'open source est bon pour l'humanité, pas pour faire du profit.
Brethlosze

1
Encore une fois, c'est la discussion utopique de donner tout votre travail pour le bien de l'homme ou de facturer tout le monde pour tout ce que vous faites.
Brethlosze

1

Quelques cents à moi:

  1. Ne créez jamais de solution autour de scripts pouvant être lus directement.
  2. Fonctionnalités de répartition en termes de multiples logiciels / processus et matériels.
  3. Ajoutez une dépendance "fonctionnelle" du matériel de lecture.
  4. Ajoutez un lecteur de carte à puce et vendez la carte à puce «enabler» avec votre produit.
  5. Avoir un serveur de licences
  6. Avoir un compteur d'utilisation en EEPROM !!! Et il devrait y avoir un moyen de "recharger" en ligne .. ;-)

...


1

En tant que protection d'entrée de gamme, il existe un ID de carte SD unique sous /sys/block/mmcblk0/device/lequel n'est pas cloné par un logiciel de clonage d'image de disque typique. Cela a l'avantage de ne pas nécessiter un appareil séparé pour contenir l'identifiant unique et fonctionne plutôt bien comme une deuxième couche de protection après la super-colle. Cela arrêtera au moins les personnes capables de simplement cloner la carte SD.

Une autre astuce concernant la protection à l'aide des identifiants est d'éviter d'utiliser une simple vérification, c'est-à-dire

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

Des vérifications simples comme celle-ci sont faciles à découvrir (soit en recherchant l'ID connu, soit en surveillant les appels à exit()) et à supprimer. Une bien meilleure approche consiste à impliquer l'ID comme constante dans les calculs. Autrement dit, au lieu de i++quelque part dans votre code, vous écrirez

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

Cela sera beaucoup plus difficile à découvrir, car l'ID exact n'apparaîtra pas dans votre code mot à mot ( 0xDEADBEEF + 1 == 0xDEADBEF0), et inspecter tous les appels exit()ne révélera pas non plus l'emplacement de votre code de protection. Au lieu de cela, votre code plantera simplement sur un système avec le mauvais ID, et l'attaquant devra déboguer la logique de votre application pour comprendre et résoudre le problème.


0

En utilisant un composant externe, je voulais dire qu'un composant de sécurité résoudrait ce problème. Si vous pensez vraiment que votre idée est géniale et vaut un coût supplémentaire pour le faire, je vous suggère d'utiliser un MCU / CPU professionnel pour le faire. Comme la série Broadcom BCM58101, pas vraiment rentable et peu conviviale pour un nouvel utilisateur, mais un niveau de sécurité élevé peut également protéger votre idée / conception.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.