J'utilise un microprocesseur - PIC32MZ2048efm144 MCU qui reçoit des commandes chiffrées avec une clé spécifique , les déchiffre et exécute la commande. Les commandes cryptées sont stockées hors ligne , donc je ne peux pas simplement changer la clé quand je veux. La clé est FIXE . Les commandes sont cryptées par un serveur et téléchargées par un téléphone . Le téléphone envoie les commandes cryptées au MCU ultérieurement, lorsqu'il n'est pas en ligne . Les commandes sont cryptées avant que le téléphone ne les communique au MCU, donc une clé de session n'est pas possible.
Je suis autorisé à connecter un module de cryptage / décryptage externe au PIC, mais les données passeront ensuite décryptées dans au moins une direction.
La solution apportée ici: Stockage d'une clé sécurisée dans la mémoire d'un appareil embarqué
utilise des clés à usage unique pour crypter, mais je dois stocker une seule clé super-secrète
Ce que mon employeur exige, c'est que les clés ne soient pas accessibles, donc la protection physique en plus de celle offerte par les modules de mémoire sécurisés et le MCU, n'est pas prise en compte.
En supposant qu'aucun équipement de qualité militaire n'est utilisé, y a-t-il des solutions connues que vous connaissez et pouvez recommander?
Merci d'avance!
Réponses:
Je suis désolé, cette réponse ne résoudra pas réellement votre problème. Mais il est trop long pour tenir dans un commentaire, et il vous permettra de repenser votre problème de la bonne manière (car tel qu'il est, je pense qu'il est imparfait).
Ce type de problèmes doit être résolu en tenant compte de tous les composants du système et en faisant des hypothèses raisonnables sur ce qu'un pirate potentiel peut ou ne peut pas faire.
Par exemple:
Vous dites: "le PIC32MZ2048efm144 (MCU) reçoit des commandes chiffrées avec une clé spécifique, les déchiffre et exécute la commande". Je suppose que le résultat de l'exécution de la commande fait basculer certains GPIO pour actionner des choses.
Alors, pourquoi avez-vous peur que, potentiellement, certaines données passent décryptées entre le MCU et un module de cryptage / décryptage? Un pirate qui a accès au matériel pour voir les commandes décryptées serait, de toute façon, capable d'agir directement sur les GPIO du MCU et "d'activer les choses" aussi facilement.
Deuxième exemple:
L'utilisation de touches à temps est une idée. Mais comme vous le dites, où stockez-vous la clé principale principale utilisée pour générer les clés à usage unique? Vous serez confronté exactement aux mêmes questions que dans votre problème d'origine.
En fait, il n'y a aucun moyen de sécuriser votre système si vous supposez qu'un pirate peut potentiellement se faufiler à n'importe quel endroit de votre système (c'est ce que vous supposez actuellement, il me semble).
Qu'est-ce qui rend un système sûr, alors?
Une carte à puce est sécurisée car il est déraisonnable de supposer qu'un pirate peut sonder les routes internes au sein du CI, entre la mémoire et le bloc CPU.
Un verrou de porte électrique est sécurisé car il est déraisonnable de supposer qu'un pirate peut atteindre les fils qui actionnent le verrou.
Etc ... Fondamentalement, vous devez commencer par identifier les choses qu'un pirate ne pourra pas faire, et élaborer votre solution à partir de là. Par exemple, est-il possible de placer l'ensemble de votre système dans une boîte sécurisée et physiquement inviolable? Dans ce cas, vous pouvez librement faire décrypter des commandes via un bus interne.
Vous ne pouvez pas construire un système sécurisé sans savoir ce que le pirate ne peut raisonnablement pas faire. Tu ne nous l'as pas dit. Nous ne pouvons donc pas proposer de solution complète.
la source
Cela ressemble à un cas classique où un cryptage à clé asymétrique serait utile. Dans le cryptage à clé asymétrique, vous avez deux clés, une privée et une publique. Vous souhaitez protéger pleinement la clé privée, mais la clé publique peut être rendue publique et ne nécessite aucune protection. vous pourrez peut-être conserver la clé privée sur le système sécurisé et la clé publique sur le périphérique intégré.
la source
Vous n'expliquez pas pourquoi vous souhaitez que les commandes soient chiffrées (en d'autres termes, quel est votre modèle de menace). Votre objectif est-il d'empêcher un adversaire en possession du périphérique basé sur PIC de déterminer quelles sont les commandes qui lui sont envoyées? Ou essayez-vous d'empêcher le périphérique basé sur PIC d'exécuter un ensemble de commandes substitué par un adversaire et de lui permettre uniquement d'exécuter des commandes provenant de votre serveur?
Dans le premier cas, vous faites face à une tâche presque impossible: votre appareil doit décrypter les commandes afin de les exécuter - la possession de l'appareil PIC signifie la possession de la clé de déchiffrement. Un adversaire peut soit extraire la clé (stockée dans le périphérique PIC qu'il possède), soit simplement attendre que votre micrologiciel déchiffre les commandes, puis les capturer de la mémoire.
Si, en revanche, vous essayez seulement de vous assurer que votre appareil n'exécutera que des commandes provenant de votre serveur, vous avez de la chance. Dans ce cas, vous pouvez utiliser le chiffrement à clé publique (par exemple RSA) ou un schéma de signature numérique à clé publique (par exemple DSS). Dans ceux-ci, votre appareil stocke uniquement la clé publique: cela suffit pour déchiffrer les commandes (ou vérifier la signature numérique), mais ne peut pas être utilisé pour chiffrer les commandes (ou générer une signature numérique) que l'appareil acceptera. Cela nécessite la clé privée, que vous utilisez pour crypter (ou signer) les commandes avant de les envoyer. La clé privée n'a jamais besoin de quitter votre serveur. Encore mieux, cryptez ou signez les commandes sur une machine qui ne communique pas en externe et copiez-les uniquement sur le serveur afin que la clé privée ne soit jamais trouvée sur un serveur accessible en externe.
la source