Bibliothèque de chiffrement pour Arduino


9

J'utilise un Arduino pour lire un clavier et ouvrir une gâche électrique lors de la saisie du code PIN du clavier. Pour cette esquisse, je voulais utiliser une sorte de cryptage léger pour stocker les codes PIN dans EEProm. Quelqu'un connaît-il une telle bibliothèque? J'ai entendu dire qu'il était possible d'utiliser TwoFish.

Réponses:


12

Vous ne voulez pas crypter les mots de passe (PIN) - vous voulez les hacher . Lorsque quelqu'un entre un mot de passe, vous hachez ce mot de passe et comparez le hachage avec le hachage stocké. L'avantage de cette méthode (utilisée depuis plus de 30 ans) est que même si quelqu'un s'empare de la source et des hachages, il ne peut toujours pas dire quels codes PIN correspondent aux hachages, tant que vous choisissez une fonction de hachage suffisamment forte .

Vous ne voulez pas implémenter le chiffrement vous-même - vous voulez utiliser la bibliothèque de quelqu'un d'autre, en particulier celle avec une implémentation ouverte qui a été testée par une grande communauté. Le cryptage est difficile, les tests sont difficiles et les tests de cryptage sont sacrément durs, alors demandez à quelqu'un d'autre de le faire pour vous.

Vous devriez vérifier la bibliothèque AVR Crypto , qui est sous licence GPLv3. Il existe également une implémentation de Skein pour AVR .


1
Upvoted - Une bonne ressource, et cela devrait être défini comme la réponse à la question.
Lou

9

Ce lien publié par Hristos, bien qu'il soit peut-être utile, ne compte certainement pas comme un "cryptage". Ce n'est vraiment que de "l'obscurcissement".

Une cryptographie appropriée est notoirement facile à se tromper, même pour les personnes qui connaissent les mathématiques.

En réponse au message d'origine - quelles sont les méthodes d'attaque qui permettraient à quelqu'un d'accéder aux codes PIN dans l'EEProm? Certes, s'ils ont atteint ce point dans vos appareils électroniques, ils peuvent simplement "couper le fil rouge" et ouvrir la porte?

Si vous en quelque sorte faire un système où les attaquants pourraient mettre la main sur le contenu EEProm sans avoir déjà suffisamment d' accès pour ouvrir votre porte, vous voulez probablement le redessiner. Vous pouvez regarder des fonctions de hachage unidirectionnelles similaires au hachage de mot de passe Unix - de cette façon, l'EEProm n'a pas besoin de contenir de clé de déchiffrement - le problème est que l'espace de recherche des codes PIN est très petit - si je peux télécharger la version hachée du PIN, je peux essayer assez rapidement les 10 000 codes PIN possibles, je pense que n'importe quel ordinateur portable moderne les exécutera tous en quelques secondes.


Je suis d'accord (et convenu ci-dessus), un hachage à sens unique serait utile et si vous programmez le système, vous pouvez créer la broche aussi longtemps que vous le souhaitez, par exemple 8 chiffres donne 100 000 000 combinaisons, ce qui devrait prendre beaucoup plus de temps.
Amos

1

Le problème que je prévois est que s'ils peuvent voir vos épingles, ils peuvent également voir votre programme qui chiffre / vérifie / déchiffre vos épingles. De plus, s'ils ont votre puce, peuvent-ils non seulement modifier le programme pour toujours donner un résultat positif (contourner efficacement le contrôle) pour toute broche entrée.


1

Comment prévoyez-vous de décoder les codes PIN cryptés, afin de vérifier si l'utilisateur a entré un code PIN valide? Vous devrez stocker la clé de déchiffrement ... à quel moment si l'attaquant peut lire votre eeprom, il peut également lire votre flash pour trouver la clé de chiffrement. Rendant fondamentalement votre cryptage entier complètement inutile. De plus, comme l'ont dit les autres personnes, s'il a déjà la capacité de lire votre puce, il pourrait simplement écrire un nouveau programme. Beaucoup plus simple de simplement ouvrir la porte, je doute que quiconque se donne la peine d'essayer de pirater votre puce.


1

Voici une méthode de simple inscription en C qui pourrait facilement être portée sur l'Arduino. Cela semble être le moyen le plus simple de crypter les données avec les ressources limitées de l'arduino.

-EDIT- Pour garder la clé hors de votre programme, vous pouvez faire de la moitié du code PIN la clé. Cela signifie que votre programme utilise la moitié clé du code PIN pour décrypter le 1/2 code PIN crypté stocké dans EEProm. Si la clé décryptée d'EEProm correspond à la partie de votre code PIN qui n'est pas la clé, la porte se déverrouillerait. Cela ne fonctionnerait que dans une situation où il n'est pas possible pour les intrus de casser la porte ou de reprogrammer l'Arduino.


Mais s'ils n'ont pas accès à votre puce, vous n'avez pas besoin de crypter la broche.
Amos

1

Je déteste ne pas répondre à la question tout en en posant une autre, mais ...

Y a-t-il une raison pour laquelle votre appareil n'est pas inviolable? J'ai vu des interrupteurs à bouton-poussoir dans les trous de vis mis en place `` sur le banc '' pour détecter le type de falsification qui vous inquiète. Ensuite .. voici le gamin avec une micro torche au butane qui parvient à obtenir votre puce sans rien dévisser (ou endommager la puce) .. d'une manière ou d'une autre, il connaissait la conception de votre système inviolable qui (aussi, espérons-le) comprend la détection de changements dans lumière et / ou son ambiant. Lorsque le couvercle se détache, les deux deviennent très différents .. de jour comme de nuit.

Si tel est le cas, ce devrait être un système en deux parties où les pièces exposées communiquent avec quelque chose où le cryptage est plus facilement implémenté. De plus, les sommes de contrôle (aide) représentent l'enfant avec la torche.

Je pense que vous demandez à un tournevis d'être un marteau.


1

Ces commentaires sont vraiment précis. Il n'y a rien de mal à essayer d'expérimenter pour en savoir plus sur le cryptage, mais ce n'est pas vraiment un bon projet pour apprendre de telles choses. Vous voulez vraiment un bon manuel et un ordinateur, et comme @bigiain le dit, les mathématiques sont notoirement faciles à se tromper.

Pour une meilleure compréhension du fonctionnement de la cryptographie et de ce que vous affrontez, le Handbook of Applied Cryptography est excellent et gratuit:

Si vous voulez simplement sécuriser votre projet, c'est une manière inefficace de le faire. Si vous êtes intéressé par la cryptographie, commencez par ce livre et un ordinateur.


Je comprends la cryptographie, lis Bruce Schneier et je programme depuis plus de vingt ans. Je comprends que la vraie menace est simplement de casser la porte et de passer devant n'importe quelle sorte de contrôleur Arduino. Je ne peux pas en toute bonne conscience l'installer avec des codes PIN en texte clair dans l'EEProm si cela peut être évité. Voler

Il existe un certain nombre de méthodes d'obfuscation simples qui seraient tout aussi efficaces dans ce rôle si vous souhaitez éviter de stocker des codes PIN en texte clair. Les répondants ci-dessus essayaient seulement de vous aider à comprendre ce que la cryptographie fait et ne fait pas. Voici une bibliothèque AES: hoozi.com/Articles/AESEncryption.htm J'aimerais également dire que ce n'est pas parce que vous avez programmé depuis 20 ans que vous "comprenez" la cryptographie. C'est un domaine totalement différent. Un mécanicien automobile de 20 ans est une personne qualifiée, mais je ne m'attendrais pas à ce qu'il conçoive un bus CAN à partir de zéro. Vérifiez votre attitude, s'il vous plaît.
Lou

Oh mon dieu ... 20 ans de codage et vous pensez qu'il est possible de crypter les données d'exécution ????? Quitter.
MickLH
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.