Fonction de hachage faible pour les adresses IPv6 mémorables

10

Les adresses IPv6 sous forme de 862A:7373:3386:BF1F:8D77:D3D2:220F:D7E0sont beaucoup plus difficiles à mémoriser ou même à transcrire que les 4 octets d'IPv4.

Il y a eu des tentatives pour atténuer cela, rendant les adresses IPv6 plus mémorables.

Existe-t-il une fonction de hachage intentionnellement faible qui pourrait être inversée pour trouver que la phrase, par exemple, "Ceci est relativement bénin et facile à repérer si la phrase est pliée de manière à ne pas valoir la peine d'être payée" , hacherait une adresse IPv6 cible? Le hachage aurait, bien sûr, de nombreuses entrées en collision parmi lesquelles choisir, et une phrase potentiellement plus mémorable, telle que cette phrase d'exemple, pourrait être automatiquement proposée.

Je suppose qu'il y a deux parties: d'abord un hachage faible avec une bonne distribution dans les deux sens. Le deuxième est un algorithme pour sélectionner des phrases mémorables parmi les nombreuses collisions (courtes, composées de mots d'une langue spécifiée, peut-être même suivant une grammaire simplifiée).

Bien que la fonction de hachage doive être faible, je ne doute pas que l'effort soit toujours important - cependant, une fois la phrase connue, le calcul du hachage vers l'adresse cible est très rapide.

ÉDITER

J'ai trouvé cette idée connexe, la piphilologie , pour mémoriser certains chiffres de π:

Comme je souhaite un verre, alcoolisé bien sûr, après les lourds cours de mécanique quantique!

Jason Kleban
la source
2
La fonction doit-elle être définie sur tout l'espace d'adressage ou une partie de l'adresse peut-elle être sélectionnée pour la mémorisation? La transformation doit-elle être réalisable par un humain sur place? La redondance doit-elle être supprimée pour détecter les erreurs?
Gilles 'SO- arrête d'être méchant'
Tout l'espace d'adressage est préféré. Il peut nécessiter un ordinateur pour calculer le hachage. La redondance serait bien! (Mais les mots en langage humain n'ont-ils pas déjà une bonne quantité de redondance?)
Jason Kleban
1
Pourquoi ne pas simplement utiliser le nom de domaine? Les adresses IP ne sont pas destinées à la consommation humaine en premier lieu, et l'ajout d'un aide-mémoire nécessitant un ordinateur ne semble pas si chaud.
vonbrand
Parce que les noms de domaine nécessitent un enregistrement et une recherche. Les noms de domaine sont corrects, mais nous utilisons toujours des adresses IPv4 pour certaines choses - pourquoi n'y a-t-il pas toujours la même utilisation que pour les adresses IPv6?
Jason Kleban
Connaissez-vous le système majeur mnémonique ? Il associe les consonnes aux chiffres et ajoute des voyelles pour former des mots. Même si IPv6 se traduirait par une quarantaine de mots et qu'il est difficile de leur faire raconter une histoire ...
Karolis Juodelė

Réponses:

2

Prenez l'adresse IP et une liste de mots. Transformez ensuite l'adresse IP en une liste de mots de la liste de mots basée sur les chiffres de l'adresse, base {longueur de la liste de mots}.

Ainsi, par exemple, en prenant la liste de mots de Diceware et votre exemple, j'obtiens: 862A:7373:3386:BF1F:8D77:D3D2:220F:D7E0-> mew hades cup viii 72 grit photo pick raid dey(ou potentiellement l'inverse, et / ou rembourré à l'autre extrémité).

Notez que ce n'est pas avec perte. Bien que vous puissiez appliquer relativement facilement toutes les techniques avec perte à cela. Vous pouvez simplement souhaiter tronquer l'adresse IP, ou sélectionner uniquement chaque deuxième bit ou quelque chose avant de l'exécuter via ce mappage.

TLW
la source
1
Hé c'est plutôt bien!
Jason Kleban
-1

Il semble que vous ayez deux cas d'utilisation:

  • Étant donné une phrase, il hachera une adresse IPv6 unique
  • Étant donné une adresse IPv6, plusieurs phrases peuvent y être hachées (entrées en collision). Corollaire: étant donné une adresse IPv6, plusieurs phrases mémorables générales, parmi lesquelles l'utilisateur peut choisir.

Je pense que vous devrez déployer votre propre solution ici. Les adresses IPv6 sont suffisamment longues pour que vous deviez probablement utiliser une fonction comme SHA1 pour pouvoir couvrir l'espace d'adressage.

Pour maximiser le nombre de phrases en collision, vous pouvez essayer d'ignorer les voyelles ou les cent mots les plus courants.

trapèze
la source
1
SHA1 fonctionnerait pour le premier cas d'utilisation mais pas pour le deuxième cas d'utilisation (vous ne pouvez pas inverser SHA1 dans un laps de temps raisonnable; étant donné une valeur de 128 bits, vous ne pouvez pas trouver une entrée qui le hache dans une quantité raisonnable de temps).
DW