2010-07-21 3 views
7

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

+0

Et le problème avec 500k est? Sérieusement. Dont le disque dur ou la connexion ne peut pas survivre 500kb? – Puppy

+4

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. –

Répondre

2

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.

1

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é.

+0

MD5 est essentiellement déconseillée par les cryptographes sérieux, SHA-1 est probablement un meilleur choix. – jsl4tv

+0

MD5 est une surpuissance absolue pour détecter la corruption, CRC64 est probablement un meilleur choix. –

1

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é.

+1

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. –

0

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.

0

+1

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. –

Questions connexes