Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 Re : Cryptographie » besoin de retours sur un algo » 11-09-2024 11:39:42

Bonjour,
avant toute remarque concernant des algos de crypto/sécurité, votre code comporte un bug :

dans la fonction create_key_3, vous calculez  key3 = letter_to_number(sha_key_3)
et letter_to_number convertit son argument en string avec letter = list(str(letter))

Or la fonction str appliquée au résultat d'un hash renvoie un identifiant python qui ressemble à :
<sha512 _hashlib.HASH object @ 0x000001485D694B90>
C'est à dire que :
1 - il n'a rien à voir avec le résultat du hachage
2 - il change à chaque execution puisqu'il contient une adresse mémoire qui dépend de l'execution en cours
Je suis d'ailleurs surpris que vous n'ayez pas remarque que le résultat change d'une execution à l'autre..

Pour corriger ce problème, il faut modifier l'avant dernière ligne de create_key_3 comme suit :
return letter_to_number( sha_key_3.digest() )

Concernant la sécurité, c'est souvent une mauvaise idée d'essayer d'inventer ses propres algorithmes.
Je le sais d'experience : chacun de mes algos "géniaux" ont été cassés par mes collègues assez rapidement.
La sagesse est de se reporter à la littérature.
Pour votre cas, je vous suggère de vous intéresser aux fonction PRF qui permettent de générer une séquence pseudo aléatoire à partir d'éléments constant (typiquement vos 2 clefs).
voici un lien vers la RFC 3830 qui décrit une fonction PRF idéale pour votre besoin.
Si j'ai le temps je tâcherais d'ajouter une implémentation python sur cette discussion.

Bonne journée

Pied de page des forums