Question:
Les images du micrologiciel pour l'IoT doivent-elles être chiffrées pour des raisons de sécurité?
VC_work
2017-09-01 18:28:49 UTC
view on stackexchange narkive permalink

Lorsque vous travaillez avec des appareils Internet des objets, est-il recommandé de masquer ou de crypter les images de micrologiciel transmises aux clients? Ceci pour rendre l'ingénierie inverse plus difficile.

(Ils devraient être signés bien sûr)

qu'est-ce que la «rétro-ingénierie» a à voir avec la sécurité?
simplifions les choses: le chiffrement est un outil pour atténuer les risques - si les risques que vous avez dans le micrologiciel IoT peuvent être atténués par le chiffrement, alors oui, le chiffrement a du sens
Le micrologiciel est un logiciel intégré à un élément matériel.Si vous transmettez via un réseau public, ce transfert doit être chiffré.
@LeonanCarvalho - il n'est pas nécessaire de crypter le micrologiciel pour la transmission, seulement de le signer et de le vérifier (ce qui n'est pas un chiffrement.) Peu importe si quelqu'un sait ce que contient le micrologiciel, cela n'a d'importance que si quelqu'un peut altérer le micrologiciel qui obtientinstallée.
Le micrologiciel doit-il être déchiffré pour fonctionner sur l'appareil?Si tel est le cas, les clients obtiennent-ils les clés d'une manière que les utilisateurs malveillants (qui peuvent également être des clients) ne peuvent pas?
"Nous avons apporté quelques améliorations au micrologiciel de votre caméra infrarouge de chambre à coucher connectée à Internet. Le nouveau micrologiciel est chiffré, mais nous promettons que sa seule intention est de faire quelque chose d'inoffensif"
C'est intéressant de trouver cette question car je viens d'en discuter en classe récemment.Voici une source que j'ai utilisée pour faire ma position dans le DQ (Question de discussion): https://www.symantec.com/content/dam/symantec/docs/white-papers/iot-security-reference-architecture-en.pdf
@schroeder, quelques choses (1) la conception peut elle-même avoir besoin d'être sécurisée, par ex.pour des raisons de propriété intellectuelle (2), il pourrait relever du problème de sécurité de «découverte», où la connaissance de la conception pourrait rendre possible des explosions réelles.
Huit réponses:
Polynomial
2017-09-01 18:38:54 UTC
view on stackexchange narkive permalink

Non. Vous ne devez pas vous fier à l'obscurité de votre micrologiciel pour masquer les vulnérabilités de sécurité potentielles qui existent indépendamment du fait que vous cryptez / obscurcissez ou non votre micrologiciel.

J'ai une suggestion radicale : faites exactement le contraire. Rendez les fichiers binaires de votre micrologiciel accessibles au public et téléchargeables, librement accessibles à tous ceux qui le souhaitent. Ajoutez une page sur votre site avec des détails sur la façon de vous contacter à propos des problèmes de sécurité. Engagez-vous avec la communauté de la sécurité pour améliorer la sécurité de votre produit.

Encore mieux - offrez un (gros) prix pour les vulnérabilités de sécurité, les vulnérabilités plus graves (mesurées en dommages _maximum_ qu'elles peuvent causer) gagnant un plus grand prix.Nous espérons que cela convaincra certains crackers en herbe de divulguer les détails (certains prix) plutôt que d'essayer de les exploiter (prix incertain, peut-être plus grand mais probablement plus petit, plus risque d'être pris).
J'encouragerais même à créer le firmware [logiciel gratuit] (https://en.wikipedia.org/wiki/Free_software) ou [open source] (https://opensource.org/).
@wizzwizz4 De nombreuses entreprises n'ont pas le capital nécessaire pour mettre en œuvre un programme complet de primes aux bogues, en particulier les PME et les startups autofinancées.En général, j'ai vu ces entreprises offrir des récompenses alternatives, telles que des produits gratuits ou fortement réduits, des t-shirts, des swag, etc. en fonction de la nature de l'entreprise et de la marque.Les primes de bogue n'ont pas nécessairement besoin d'être formelles et coûteuses.
@Polynomial De nombreuses entreprises n'ont pas le capital pour _pas_ exploiter un programme de prime de bogue.Si une violation importante est trouvée, cela vaut sûrement x $ pour qu'elle ne soit pas trouvée lorsque vos clients vous poursuivent pour des dommages causés par une violation.
@wizzwizz4 Je doute que l'absence d'un programme de prime de bogue soit jamais le facteur de confusion dans une brèche.Les primes sont excellentes, mais elles constituent une couche facultative dans presque toutes les entreprises du budget de défense, peut-être à l'exception des organisations hautement publiques.Si l'objectif est d'éviter une brèche, le coût et le temps nécessaires à la gestion d'un BBP peuvent être mieux investis dans des mesures de défense plus directes telles que la formation du personnel et l'amélioration des capacités de l'équipe bleue.Les BBP sont parfaits si vous avez déjà tout couvert et avez un budget disponible, ou si la perception des marchés de la sécurité est bien dans votre secteur.
La suggestion d'@BasileStarynkevitch's n'est pas aussi éloignée que cela puisse paraître.Vraisemblablement, le micrologiciel est de peu d'utilité non académique pour quelqu'un qui ne possède pas l'appareil en question.L'entreprise vend des gadgets physiques et peut-être des services, mais pas vraiment des logiciels.Dans de telles circonstances, publier le logiciel pour que tout le monde puisse le regarder pourrait très bien être au pire neutre, et éventuellement donner un coup de pouce aux relations publiques.Des points bonus s'il existe réellement un moyen pour un utilisateur ordinaire (mais techniquement compétent) de charger un micrologiciel modifié sur l'appareil.
Vraisemblablement, le firmware est utile à leurs concurrents.
C'est également le meilleur pour le monde entier, mais pas nécessairement pour la société qui publie le firmware.(Dans tous les cas, les vulnérabilités seront trouvées et l'entreprise en souffrira; veulent-elles souffrir plus tôt parce qu'elles étaient plus faciles à trouver?)
@immibis Si une vulnérabilité est découverte séparément et ne leur est pas divulguée de manière responsable, ils ont le PR élevé.L'alternative est de retarder l'inévitable et d'en faire une pire issue.
@Polynomial Peut-être parmi les personnes soucieuses de la sécurité.Le grand public voit toujours "le produit XYZ piraté".
Les chercheurs en sécurité ne verront pas un fournisseur local d'IOT qui fabrique un micrologiciel de merde.Pourquoi les gens vérifient-ils le micrologiciel?La renommée, la fortune?Quel genre de visibilité allez-vous gagner en trouvant un bogue dans un firmware mal écrit par une petite entreprise locale?Quelle prime devriez-vous donner?
@Silver Je suis un chercheur en sécurité et je regarde en permanence le firmware des fournisseurs IoT.Je ne m'attends pas à une prime.Je le fais pour m'amuser.
Josh Ross
2017-09-01 18:52:36 UTC
view on stackexchange narkive permalink

Je doute que ce soit bénéfique. C'est de loin une meilleure option pour le pousser à open-source que fermé. Cela peut sembler idiot et même controversé au début, mais ouvrir un projet au public présente de nombreux avantages.

Bien qu'il y ait des gens avec des intentions malveillantes, il y a aussi des gens qui veulent aider et faire d'Internet un meilleur endroit. L'open source permet à plus d'yeux de regarder le projet, non seulement pour voir les fonctionnalités, bogues et problèmes potentiels, mais aussi pour augmenter la sécurité et la stabilité de la "chose"

Et pour être d'accord avec la réponse de Polynomial, s'engager dans une communauté et la création d'une base de personnes qui vous aident avec la sécurité, augmentera la base de clients d'une marge significative.

L'open source peut être un pas trop loin pour un produit commercial, et le principe des "nombreux yeux" est généralement défectueux (voir: l'état d'OpenSSL avant Heartbleed).Cela dit, si le projet utilise un code sous licence GPL sans accord spécial de l'auteur, la source complète doit quand même être disponible.
@Polynomial Si le projet utilise un code sous licence GPL, alors * les parties qui touchent directement le code GPL * doivent être rendues disponibles comme code source.Pas tout cela.La simple agrégation s'applique toujours.
Je peux voir comment cela pourrait être un problème avec entièrement Open Source.En outre, il s'agit généralement de sémantique lorsqu'il s'agit d'Open Sourcing sur du code GPL.Je vais également examiner la question d'OpenSSL, merci pour cela!
Je pense vraiment qu'une bonne réponse devrait aborder la question de "si mon logiciel doit être propriétaire, vaut-il la peine de chiffrer / masquer".Il peut y avoir de nombreuses raisons de conserver des logiciels propriétaires qui n'ont rien à voir avec la sécurité (contrats avec les clients, bureaucratie par la direction, algorithmes précieux).Je pense également que publier votre code source n'est pas un bon moyen de réparer un processus de développement logiciel non sécurisé et ne devrait pas être surestimé en y consacrant toute la réponse.
Mavaddat Javid
2017-09-01 23:33:33 UTC
view on stackexchange narkive permalink

Un micrologiciel bien conçu doit s'appuyer sur la force de sa clé d'accès plutôt que sur l'ignorance de l'attaquant de la conception du système. Cela suit le principe fondamental de l'ingénierie de sécurité connu sous le nom de axiome de Kerckhoffs:

Un système d'information doit être sécurisé même si tout ce qui concerne le système, à l'exception de la clé du système, est de notoriété publique.

Le mathématicien américain Claude Shannon a recommandé en partant de l'hypothèse que "l'ennemi connaît le système", c'est-à-dire "on devrait pour concevoir des systèmes en supposant que l'ennemi se familiarisera immédiatement avec eux ".

Vous serez peut-être intéressé de savoir qu'avant la fin du XIXe siècle, les ingénieurs en sécurité préconisaient souvent l'obscurité et le secret comme moyen valable de sécuriser les informations. Cependant, ces approches antagonistes des connaissances sont antithétiques à plusieurs principes de conception de génie logiciel - en particulier la modularité.

Silver
2017-09-05 12:50:19 UTC
view on stackexchange narkive permalink

Certaines personnes affirment que le code open source peut être audité par beaucoup et qu'il contient donc de petits bugs. D'autre part, les attaquants ont le même accès facile et recherchent également ces mêmes vulnérabilités. Il y a certainement un compromis ici qui n'est pas correctement décrit dans les réponses précédentes.

D'autres mentionnent que le code doit être intrinsèquement sécurisé et ne nécessite donc aucune obfuscation / chiffrement / masquage. Il est vrai qu'un système doit être conçu pour être sécurisé même si vous savez comment il fonctionne. Cela ne veut pas dire que c'est toujours le cas ET que la mise en œuvre est sans faille. En pratique, le code n'est jamais sécurisé à 100%. (Jetez un œil à la sécurité des applications Web: pourquoi avons-nous besoin d'en-têtes de sécurité pour nous protéger contre les attaques XSS et CSRF s'il n'y a pas de vulnérabilités dans l'application Web?) Des mesures de sécurité supplémentaires peuvent être prises en essayant de masquer le code par cryptage et obfuscation . Dans le monde mobile, l'ingénierie inverse est même considérée comme un risque sérieux: Top 10 des risques OWASP Mobile.

Comme aucun système n'est sécurisé à 100%, nous ne pouvons qu'essayer d'augmenter l'effort requis pour le casser.

Alors maintenant, le compromis entre code open source / facilement disponible VS code chiffré et obscurci. Autoriser l'examen public de votre code source peut aider à réduire le nombre de bogues. Cependant, si vous êtes une petite entreprise où le public est peu incité à auditer librement votre code, il n'y a aucun avantage à publier votre code car personne ne le regardera avec de bonnes intentions. Cependant, il devient beaucoup plus facile pour les attaquants de découvrir des vulnérabilités. (Nous ne parlons pas de la dernière version d'iOS que tous les chercheurs en sécurité essaient de déchiffrer) ..

Dans ce cas, nous ne parlons même pas de l'open sourcing du code pour examen public. Nous parlons de crypter le firmware en transit. Les chercheurs en sécurité n'achèteront probablement pas votre appareil pour obtenir le code permettant de découvrir et de publier des vulnérabilités. Par conséquent, les chances que les gentils trouvent les vulnérabilités par rapport aux méchants diminuent.

Tom
2017-09-02 10:49:21 UTC
view on stackexchange narkive permalink

Êtes-vous sûr de ne pas confondre deux méthodes cryptographiques?

Vous devez certainement signer les mises à jour de votre firmware pour des raisons de sécurité. Cela permet à l'appareil de vérifier qu'ils viennent de vous.

Les chiffrer ajoute un peu d'obscurité et c'est tout. Puisque l'appareil de décryptage n'est pas sous votre contrôle, quelqu'un le piratera tôt ou tard, extraira la clé de décryptage et la publiera sur Internet.

Vous pouvez toujours rendre illégale la distribution de la clé de déchiffrement!Rendre les nombres illégaux fonctionne définitivement ...
Steve Sether
2017-09-02 00:40:08 UTC
view on stackexchange narkive permalink

Vous devez vous poser cette question. Quelqu'un est-il assez intelligent et suffisamment intéressé pour télécharger votre firmware et commencer à rechercher des vulnérabilités qui seront dissuadés par une couche de cryptage de firmware supplémentaire où la clé doit être révélée?

Ceci est juste un autre cerceau à franchir, non différent de celui de déterminer le format de disque de votre image de firmware. Ce n'est même pas un cerceau particulièrement difficile à franchir. Gardez à l'esprit que toutes les méthodes FAR plus sophistiquées de ce qui équivaut à DRM ont toutes été brisées.

Il y a des chances qu'une personne suffisamment déterminée pour pirater votre cafetière / lave-vaisselle connectée à Internet ne soit pas dissuadée par un autre couche de chiffrement.

Sergio A. Figueroa
2017-09-08 11:53:14 UTC
view on stackexchange narkive permalink

Dans le sens de "le chiffrement du firmware empêchera-t-il la détection de vulnérabilités dans mon code?" d'autres réponses ont abordé le cœur de celui-ci: bien que cela puisse décourager certains attaquants, la sécurité par l'obscurité conduit à un faux sentiment d'invulnérabilité qui est contre-productif.

Cependant, j'aimerais ajouter un peu plus sur le base de mon expérience. J'ai vu que les packages de micrologiciels sont parfois chiffrés, mais la motivation pour cela est uniquement de préserver la propriété intellectuelle d'une entreprise, plutôt que de contrôler les attaquants.

Bien sûr, les pirates trouvent souvent des moyens de contourner cela " control ", mais c'est une autre histoire.

gnasher729
2017-09-02 02:03:46 UTC
view on stackexchange narkive permalink

Plusieurs personnes ont dit qu'il ne fallait pas compter sur le brouillage du code en le chiffrant, mais simplement pour le sécuriser. Tout récemment, le cryptage de certains logiciels plutôt critiques dans les iPhones d'Apple a été fissuré (ce qui signifie que les pirates peuvent maintenant voir le code réel, pas plus). Cela a empêché quiconque d'examiner le code pendant trois ans, de sorte que le délai entre la publication et la première fissure a été augmenté de trois ans. Cela semble être une obfuscation très réussie.

Et le chiffrement va très bien avec la signature de code. Ainsi, lorsque votre appareil reçoit un nouveau micrologiciel, il peut rejeter tout faux micrologiciel. Maintenant cette partie n'est pas seulement recommandée, c'est absolument essentiel.

Le cryptage et la signature sont orthogonaux.Les deux peuvent avoir une valeur, mais ils résolvent des problèmes différents et le font séparément.
Les deux sont très difficiles si vous n'utilisez pas correctement une bibliothèque cryptographique, et faciles si vous le faites.Si vous en faites un, faire l'autre ne demande que très peu d'effort.Et les deux résolvent le même problème: aider à protéger le matériel.
Ce qui vous manque, c'est que le cryptage dans l'anecdote que vous mentionnez * n'est que même pertinent * car le code est crypté partout mais à l'intérieur de l'unité d'exécution de confiance.Pour un processeur ordinaire, même si la mise à jour est cryptée en vol ou en stockage, elle devra être décryptée * par quelque chose stocké sur l'appareil * pour s'exécuter.Il est assez difficile de faire en sorte qu'une personne en possession d'une copie du matériel ne puisse pas accéder au code déchiffré, et ce n'est que dans les situations inhabituelles où cela est fait efficacement que le chiffrement de la mise à jour en vol importe.
@gnasher729 En fait, plus le premier piratage est long, pire c'est.Trois ans plus tard, il est beaucoup plus difficile de corriger le bogue - le fabricant n'est peut-être même pas encore là et qui sait s'il dispose encore de l'outillage.Et trois ans plus tard, l'appareil pourrait être oublié et non entretenu.Trois ans plus tard, il y aura plus d'appareils sur le terrain: plus tôt les défauts sont détectés, plus tôt (et plus probablement) ils sont corrigés.(Et comment savez-vous qu'un très mauvais gars ne connaissait pas la faille et avait trois années supplémentaires pour l'exploiter?)


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...