Question

J'ai utilisé un joli domaine public Implémentation DES C++ avant, mais maintenant j'ai besoin d'une cryptographie simple, basique et rapide pour un système embarqué.

Il n'est pas nécessaire qu'il soit incassable, mais il doit contrecarrer le pirate informatique occasionnel (c'est-à-dire rien qui puisse être utilisé pour de l'argent ou un vol d'identité, mais d'autres informations personnelles transférées sur des cartes mémoire qui pourraient se perdre ou tomber entre de mauvaises mains). ).

En raison de la mémoire limitée de ce processeur, je préférerais quelque chose qui puisse encoder en morceaux discrets (512 octets ou moins).

Le projet n'est pas open source et n'utilisera pas de bibliothèques, ce qui, je le sais, restreint davantage les options - le domaine public étant le meilleur, mais BSD/Apache/etc est probablement acceptable...

J'hésite à rouler le mien (comme tout le monde devrait l'être).

-Adam

Était-ce utile?

La solution

Si vous recherchez simplement une obscurcissement, XOR avec une constante secrète est une implémentation aussi petite que possible.Il serait également trivial de le casser, car il est vulnérable à l'analyse de fréquence pour rechercher les lettres anglaises les plus courantes.

Si vous avez besoin d'un algorithme plus puissant, je vous recommande de regarder le poisson-globe qui a tendance à être petit et rapide.Cela nécessite toujours de la mémoire pour les tables, mais j'espère que cela fonctionnera pour votre application.

Bruce Schneier a explicitement placé l'algorithme Blowfish dans le domaine public, désavouant les brevets.Vous pouvez obtenir son implémentation en C (et d'autres implémentations également) à partir de son site.Cette source ne comporte pas de mention de droit d'auteur.Je soupçonne que le code source est également dans le domaine public, mais une vérification un peu plus approfondie peut être nécessaire.

Autres conseils

RC4 est simple et rapide.

La même personne qui a publié l'implémentation C++ DES a également publié un Algorithme de chiffrement C Rijndael - J'aurais dû fouiller un peu plus sur son site Web, Le Petit algorithme de cryptage (article académique ici) a également une très petite empreinte d’implémentation C.

Poisson-globe a l'air bien et est probablement le meilleur des trois en termes de sécurité.

Je vais commencer par le TEA (petit code et empreinte mémoire), mais je l'envelopperai pour pouvoir passer à un autre algorithme plus tard si nécessaire.Il présente des faiblesses notables dans ses implémentations antérieures, mais pour ce projet, cela pourrait même être excessif.

-Adam

Vous pourriez utiliser un Générateur de nombres pseudo-aléatoires (PRNG) pour générer une séquence répétable de mots, que vous XOR ensuite avec le mot correspondant dans votre flux de données.(L'émetteur et le récepteur doivent connaître à l'avance les paramètres utilisés pour générer la séquence pseudo-aléatoire.)

Cette approche n'est pas incassable, mais elle constitue une avancée par rapport à l'utilisation d'une constante pour le XOR-ing - et les PRNG sont très simples à mettre en œuvre, consistant généralement en une opération de multiplication et de modulo pour chaque mot.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top