Pour permettre à une petite application C++ de se mettre à jour chez des clients connectés sur Internet, j'ai besoin d'un mécanisme qui valide le téléchargement à partir d'une clé publique. Des algorithmes tels que DSA ou RSA semblent pouvoir le faire correctement. Cependant, en regardant les librairies disponibles bien connues pour cela (Crypto ++, LibTomCrypt), elles finissent toutes par rendre mon binaire> 500k plus grand, alors qu'il me semble qu'une telle logique peut être implémentée en quelques k. Existe-t-il des bibliothèques qui implémente la vérification de hachage RSA/DSA dans un encombrement de 20k, disons <?Minuscule implémentation de chiffrement asymétrique pour valider le téléchargement
Répondre
Comme je n'ai trouvé aucune bibliothèque répondant à mes besoins spécifiques, j'ai créé ma propre bibliothèque pour cela: http://github.com/paiq/dsa_verify. La mise en œuvre actuelle a une empreinte de mémoire de programme de ~ 50k, principalement en raison de la bibliothèque mathématique bignum incluse, mais les futures versions peuvent être dépouillées encore plus.
Si vous utilisez uniquement Windows, vous pourrez peut-être créer un lien avec l'API Crypto de Windows tant que vos applications sont déployées sur win2k ou supérieur. Windows Crypto MSDN article.
EDIT: Une autre solution possible, si vous avez juste besoin de vérifier le téléchargement n'a pas corrompue un peu rapide de googleing trouvé la source à this small implementation of MD5. selon le read-moi au top 3k du code objet compilé.
MD5 est essentiellement déconseillée par les cryptographes sérieux, SHA-1 est probablement un meilleur choix. – jsl4tv
MD5 est une surpuissance absolue pour détecter la corruption, CRC64 est probablement un meilleur choix. –
Dans http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.143.3049&rep=rep1&type=pdf une bibliothèque de courbe elliptique est décrite qui, selon les auteurs peuvent être configurés pour avoir besoin que d'environ 7k ROM et au-dessous de 200 octets de RAM sur un microcontrôleur
Avez-vous vraiment besoin chiffrements? Généralement, pour valider un téléchargement, vous pouvez utiliser une fonction de hachage comme MD5 ou SHA. Peut-être que vous pouvez trouver une petite bibliothèque en utilisant ceux-ci.
De toute façon, vous pouvez essayer la bibliothèque openssl. Cependant le .a sur ma machine est environ 400K et 250K dépouillé.
Il ne s'agit pas de vérifier le téléchargement si les octets sont dans le bon ordre, mais de vérifier leur authenticité et d'empêcher quelqu'un sur le même segment de réseau de forcer une mise à jour avec un binaire malveillant. –
Je pense que vous pourriez trouver que la bibliothèque MIRACL répond à vos besoins. Les totaux de contrôle peuvent facilement gérer des tâches de validation comme celles-ci.
Il ne s'agit pas de vérifier le téléchargement si les octets sont dans le bon ordre, mais de vérifier leur authenticité et d'empêcher quelqu'un sur le même segment de réseau de forcer une mise à jour avec un binaire malveillant. –
- 1. Python X.509 chiffrement asymétrique
- 2. chiffrement SQL - clé asymétrique - 2ème serveur
- 3. Comment valider la clé de chiffrement javax?
- 4. Grails: valider le téléchargement de fichiers
- 5. implémentation regex pour remplacer le groupe par sa version en minuscule
- 6. Est-ce que mcrypt supporte le cryptage asymétrique?
- 7. Problème de sécurité avec le navigateur minuscule
- 8. Comment faire un chiffrement asymétrique avec des certificats X509 et C#?
- 9. chiffrement et déchiffrement
- 10. WCF, certificats auto-signés pour le chiffrement
- 11. Meilleures pratiques pour le chiffrement MySQL?
- 12. Chiffrement TEA avec C#
- 13. Téléchargement d'un fichier avec le streaming WCF, lecture minuscule à partir du flux
- 14. La meilleure façon de valider un formulaire de téléchargement?
- 15. Sérialiseur minuscule
- 16. x509 certificat clé de l'algorithme asymétrique
- 17. Implémentation d'un simple téléchargement de fichier dans extjs
- 18. Combinaison de chiffrement recommandée pour les signatures numériques
- 19. Implémentation de cet algorithme de chiffrement de mot de passe Java en PHP
- 20. Aide pour valider le champ
- 21. Bibliothèque de chiffrement de fichiers pour .NET
- 22. Chiffrement de chaîne de base MCrypt avec implémentation de mot de passe en C++
- 23. Comportement asymétrique pour les classes __getattr__, newstyle vs oldstyle
- 24. JavaScript pour valider le mot de passe
- 25. Regex pour valider le nom de fichier
- 26. Le prototypage minuscule introduit une erreur?
- 27. Le chiffrement garantit-il l'intégrité?
- 28. regex pour un seul mot en minuscule
- 29. nouvel algorithme de chiffrement pour ssh
- 30. minuscule gestionnaire de la mémoire
Et le problème avec 500k est? Sérieusement. Dont le disque dur ou la connexion ne peut pas survivre 500kb? – Puppy
500k est beaucoup en fait. Surtout quand un peu de googling peut donner des implémentations autonomes de RSA et MD5. Tout ce dont vous avez besoin est un algorithme de hachage (MD5), puis RSA pour effectuer la partie clé publique/privée. –