2010-08-27 23 views
8

Je dois créer des empreintes digitales pour les clés RSA que les utilisateurs peuvent mémoriser ou au moins reconnaître facilement. Les idées suivantes sont venues à l'esprit:Facile à retenir les empreintes digitales pour les données?

  • Briser le hachage SHA1 en portions de, disons 4 bits et de les utiliser comme coordonnées pour les cannelures de Bézier. Dessinez les splines et utilisez cette image comme empreinte digitale.
  • Utilisez le hachage SHA1 comme entrée pour un algorithme fractal. Le résultat devrait être unique pour une entrée donnée, c'est-à-dire que la sortie ne peut pas être un carré solide la moitié du temps.
  • Mappez le hachage SHA1 aux entrées d'une liste de mots (comme dans les vérifications orthographiques ou les listes de mots de passe). Cela créerait une phrase secrète composée de mots réels.
  • Au lieu d'une liste de mots, utiliser d'autres grandes ensemble de données comme des cartes Google (carte le hachage SHA1 pour cartographier les coordonnées et utiliser la région de la carte (s) comme une empreinte digitale)

D'autres idées? Je suis sûr que cela a été mis en œuvre sous une forme ou une autre.

Répondre

5

OpenSSH contient quelque chose comme ça, sous le nom "visual host key". Essayez ceci:

ssh -o VisualHostKey=yes somesshhost 

somesshhost est une machine avec un serveur exécutant SSH. Il imprimera une « empreinte digitale » de la clé du serveur, à la fois en hexadécimal, et comme une image ASCII-art qui peut ressembler à ceci:

+--[ RSA 2048]----+ 
| .+   | 
| + o   | 
| o o +   | 
| + o +   | 
| . o E S  | 
| + * .   | 
| X o .  | 
| . * o   | 
| .o .   | 
+-----------------+ 

Ou comme ceci:

+--[ RSA 1024]----+ 
|  .*BB+ | 
|  . .++o | 
|  = oo. | 
|  . =o+.. | 
|  So+.. | 
|  ..E.  | 
|     | 
|     | 
|     | 
+-----------------+ 

Apparemment, ceci est inspiré des techniques décrites dans this article. OpenSSH est opensource, avec une licence de type BSD, il est donc probable que vous puissiez simplement réutiliser leur code (il semble que ce soit dans le fichier key.c, fonction key_fingerprint_randomart()).

+0

Cela vaut la peine d'examiner si vous êtes limité à la sortie ASCII. – ApplesOranges

0

Votre première suggestion (dessiner le chemin des splines pour chaque quatre octets, puis remplir en utilisant le nonzero fill rule) est exactement ce que j'utilise pour la visualisation en hashblot.

2

Pour le point 3 (entrées dans une liste de mots), voir RFC-1751 - Une Convention pour l'homme-Readable 128 bits clés, qui note que

Les auteurs de S/Key a conçu un système pour rendre le mot de passeunique 64 bits unique, facile à saisir pour les utilisateurs.

Leur idée était de transformer le mot de passe en une chaîne de petits mots anglais . Les mots anglais sont significativement plus faciles à mémoriser et à taper à . Les auteurs de S/Key ont commencé avec un dictionnaire de 2048 mots anglais, d'une longueur allant de un à quatre caractères . L'espace couvert par une clé de 64 bits (2^64) pourrait être couvert par six mots de ce dictionnaire (2^66) avec la pièce restante pour la parité . Par exemple, un S/Key mot de passe unique de valeur hexadécimale:

EB33 F77E E73D 4053 

deviendrait six mots suivants en anglais:

TIDE ITCH SLOW REIN RULE MOT 

Vous pouvez également utiliser une empreinte digitale composé pour améliorer mémorabilité, comme les mots anglais suivis (ou précédés) par une ou plusieurs images dépendant de la clé.

Pour générer l'image, vous pouvez utiliser des choses comme Identicon, Wavatar, MonsterID ou RoboHash.

Exemple:

enter image description here enter image description here

enter image description here enter image description here

TIDE ITCH LENT

RULE REIN MOT