Caractères à éviter dans les mots de passe générés automatiquement

j'ai besoin de générer quelques mots de passe, je veux éviter les caractères qui peuvent être confondus les uns pour les autres. Y a-t-il une liste définitive de caractères que je devrais éviter? ma liste actuelle est

il10o8B3Evu![] {}

existe-il d'autres paires de caractères qui sont faciles à confondre? pour les caractères spéciaux j'allais me limiter à ceux sous les touches de nombre, mais je sais que cela diffère selon votre nationalité de claviers!

en tant que question de rider, Je voulez-vous que mes mots de passe soient des mots de passe?avez-vous un algorithme préféré pour cela?

Merci :)

21
demandé sur Raedwald 2008-09-11 04:27:50

12 réponses

"Parfait De Papier Le Mot De Passe" système. Ce sont des" caractères à permettre " plutôt que des "caractères à éviter", mais ils semblent assez raisonnables pour ce que vous voulez:

Un ensemble standard de 64 caractères

!#%+23456789:=?@ABCDEFGHJKLMNPRS
TUVWXYZabcdefghijkmnopqrstuvwxyz

un plus grand ensemble de 88 caractères

!"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHJKLMNO
PRSTUVWXYZ[\]^_abcdefghijkmnopqrstuvwxyz{|}~

pour les mots de passe prononçables, Je ne suis pas familier avec les algorithmes mais vous pourriez vouloir regarder APG et pwgen comme point de départ.

36
répondu dF. 2008-09-11 01:24:43

Ma méthode préférée est d'obtenir une liste de mots de 3, 4 et 5 lettres. Ensuite, sélectionnez au moins deux d'entre eux et placez un nombre aléatoire de deux chiffres ou un symbole spécial (%&*@#$) entre chaque mot. Si vous voulez vous pouvez capitaliser jusqu'à un caractère par mot au hasard.

en fonction de vos besoins de force, vous vous retrouvez avec des mots de passe faciles à mémoriser et à communiquer comme:

  • citron%bureau
  • papier&boy32hat

Conserver à l'esprit que vous parfois obtenir des combinaisons intéressantes ou inappropriées de mots (je vais vous laisser utiliser votre imagination). J'ai habituellement un bouton permettant la génération d'un nouveau mot de passe si celui présenté n'est pas aimé.

en règle générale, n'utilisez que des symboles pour lesquels les gens connaissent généralement le nom. Sur un clavier américain Standard j'éviterais ~`/\^

je suppose que cela a répondu plus à votre question de pilote que votre question principale . ..

Bonne chance!

9
répondu Jim McKeeth 2011-05-06 00:25:51

Lire Choisir Des Mots De Passe Sécurisés.

une information intéressante à partir de là: pour des mots de passe plus sûrs, assurez-vous que certains nombres et caractères spéciaux apparaissent au milieu. Les programmes de fissuration les vérifient au début et se terminent plus tôt.

6
répondu erickson 2008-09-11 04:18:23

pour ajouter à la réponse de Jim, vous pouvez aussi utiliser la liste de mots et remplacer au hasard certains caractères par des symboles (un @ pour un A, un 0 (zéro) pour un O ou un 5 pour un S) et/ou supprimer les voyelles des mots.

  • lmn%Bureau
  • P@per&b0y32H@t

encore en grande partie lisible par les humains.

3
répondu Chuck 2008-09-11 01:16:54

comme autre option, vous pouvez utiliser une police monospace/terminal comme courier pour imprimer les mots de passe. Des caractères similaires devraient être beaucoup plus distinguables de cette façon.

3
répondu Dana the Sane 2008-09-11 02:25:17

pour un client international il y a plusieurs années, j'ai dû générer des mots de passe aléatoires et sécurisés qui ont ensuite été fusionnés dans des documents par mon client et envoyés par courrier postal à des destinataires dans 40 pays. Ne sachant pas quelle police de caractères devait être utilisée dans les documents, j'ai utilisé une liste de caractères comme le Steve Gibson 64 caractères ensemble pour éliminer la confusion entre des glyphes.

pour rendre les mots de passe résultants prononçables, et donc plus facile à retenir, je consonnes et voyelles jumelées ensemble, avec quelques digraphes consonnes (sh, th, wh, etc.) ajouté au mélange.

pour réduire les risques de production de mots inappropriés ou offensants (en anglais ou dans les langues des destinataires), j'ai limité les passages de caractères alpha consécutifs à deux, avec des chiffres ou des caractères de ponctuation entre:

Es4tU$sA6
wH@cY8Go2

en regardant en arrière sur ma méthode maintenant, je me rends compte qu'il y avait place pour l'amélioration dans l'algorithme inadéquation. Utiliser juste les règles ci-dessus, quelques mots offensants sont possibles maintenant que quelques chiffres et la ponctuation sont substitués pour les lettres.

3
répondu flamingLogos 2008-10-14 15:03:15

pour les mots de passe lisibles par l'utilisateur, j'ai récemment utilisé un script PHP très similaire à celui ci-dessous. Il a bien fonctionné. Certes, les mots de passe ne vont pas être incroyablement sûrs (car ils sont sujets à des attaques de dictionnaires), mais pour mémorisable, ou au moins lisible, mots de passe, il fonctionne bien. Cependant, cette fonction ne devrait pas être utilisé comme tel, c'est plus pour l'illustration qu'autre chose.

function generatePassword($syllables = 2, $use_prefix = true)
{

    // Define function unless it is already exists
    if (!function_exists('arr'))
    {
        // This function returns random array element
        function arr(&$arr)
        {
            return $arr[rand(0, sizeof($arr)-1)];
        }
    }

    // Random prefixes
    $prefix = array('aero', 'anti', 'auto', 'bi', 'bio',
                    'cine', 'deca', 'demo', 'dyna', 'eco',
                    'ergo', 'geo', 'gyno', 'hypo', 'kilo',
                    'mega', 'tera', 'mini', 'nano', 'duo',
                    'an', 'arch', 'auto', 'be', 'co',
                    'counter', 'de', 'dis', 'ex', 'fore',
                    'in', 'infra', 'inter', 'mal', 
                    'mis', 'neo', 'non', 'out', 'pan',
                    'post', 'pre', 'pseudo', 'semi',
                    'super', 'trans', 'twi', 'vice');

    // Random suffixes
    $suffix = array('dom', 'ity', 'ment', 'sion', 'ness',
                    'ence', 'er', 'ist', 'tion', 'or',
                    'ance', 'ive', 'en', 'ic', 'al',
                    'able', 'y', 'ous', 'ful', 'less',
                    'ise', 'ize', 'ate', 'ify', 'fy', 'ly'); 

    // Vowel sounds 
    $vowels = array('a', 'o', 'e', 'i', 'y', 'u', 'ou', 'oo', 'ae', 'ea', 'ie'); 

    // Consonants 
    $consonants = array('w', 'r', 't', 'p', 's', 'd', 'f', 'g', 'h', 'j', 
                        'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm', 'qu');

    $password = $use_prefix?arr($prefix):'';
    $password_suffix = arr($suffix);

    for($i=0; $i<$syllables; $i++)
    {
        // selecting random consonant
        $doubles = array('n', 'm', 't', 's');
        $c = arr($consonants);
        if (in_array($c, $doubles)&&($i!=0)) { // maybe double it
            if (rand(0, 2) == 1) // 33% probability
                $c .= $c;
        }
        $password .= $c;
        //

        // selecting random vowel
        $password .= arr($vowels);

        if ($i == $syllables - 1) // if suffix begin with vovel
            if (in_array($password_suffix[0], $vowels)) // add one more consonant 
                $password .= arr($consonants);

    }

    // selecting random suffix
    $password .= $password_suffix;

    return $password;
}
2
répondu James B 2008-09-11 21:46:54

dans mon école de troisième cycle (génie électrique, technologie), tous les comptes informatiques ont été initialisés avec des mots de passe qui, je suppose, ont été générés par un utilitaire linux standard. Ils se composait de trois syllabes aléatoires, avec trois minuscules dans chaque syllabe. Le résultat était raisonnablement sûr (de l'ordre de milliards de combinaisons possibles) mais si prononçable que j'utilise encore certains de ces mots de passe plus d'une décennie plus tard. L'exemple de James est une excellente démonstration de ce.

un commentaire sur les mots de passe en général, d'un professionnel de la sécurité réseau: ils sont terribles, pour plusieurs raisons, y compris:

  • généralement facilement cassé, soit par l'ingénierie sociale ou avec le logiciel d'attaque, surtout si vous savez à propos de votre cible.

    exemple 1: j'ai récemment dû réviser un document technique protégé par un mot de passe. En regardant la date, je savais qui était notre rédacteur technique. dans résidence était à l'époque, a tapé le premier mot qui est entré dans mon esprit, et immédiatement déverrouillé le document.

    exemple 2: les programmes Standard de craquage de mot de passe permettent au cracker de spécifier un ensemble de règles qui fonctionnent sur un dictionnaire fourni par l'utilisateur. C'est trivial de remplacer certaines lettres par $ymb01$, ou de traduire en 1337, etc.

  • les mots de passe"sûrs" ne le sont pas. Étant donné le nombre de mots de passe que la plupart des gens doivent se rappeler, la façon la plus commune de "se souvenir" d'un mot de passe "fort" comme "a4$n!8_q" est de l'écrire sur un morceau de papier (ou, pire, de le stocker dans un fichier texte). 'Nuff said.

Si vous avez besoin vraiment sécurisé authentification, multi-facteur (ou deux-facteur) est le mécanisme accepté par l'industrie. Les" deux facteurs " sont habituellement quelque chose que vous (comme une carte d'accès) et quelque chose que vous qui permet (comme broches.) Ni l'un fonctionne sans l'autre-vous avez besoin de deux.

d'un autre côté, considérez le niveau de sécurité dont vous avez vraiment besoin. De quoi êtes-vous protéger? Dans quelle mesure les "méchants" veulent l'avoir, et quelles sont les conséquences s'ils le veulent? Les Chances sont, " son@Secret!"il est plus que suffisant. : -)

2
répondu Adam Liss 2008-10-28 05:02:40

je n'aime pas la liste des mots de l'approche. Par exemple, dans/usr/share/dict / words sur OSX, il y a 5110 mots de 4 caractères. En utilisant deux d'entre eux avec un caractère de seperateur produit ~600m combinaisons. Mais si vous utilisiez le jeu de caractères directement avec un générateur de nombres aléatoires puissant, vous auriez 88^9 mots de passe possibles, 3.16 E + 17 combinaisons.

de toute façon, l'attaque probable contre ce système va être contre le générateur de nombres aléatoires, donc assurez-vous que vous utilisez un cryptage fort. Si vous utilisez la fonction Rand standard de PHP, il sera attaqué en enregistrant et en réinitialisant des milliers de mots de passe pour échantillonner l'état RNG et ensuite prédire l'état RNG restant, ce qui réduira le nombre de mots de passe possibles qu'un attaquant doit tester.

1
répondu tqbf 2008-09-11 19:35:26

une approche de départ pourrait être de générer des syllabes anglaises pour la plupart valides, de les mélanger, puis de lancer une conversion texte->l33t. Il y a eu des travaux sur les grammaires générationnelles du langage naturel, donc l'une d'elles pourrait aider.

Ingulah...l33t it - > 1ngu4h. C'est le meilleur? Nah. Mais au moins il est semiprononcable (si vous parlez l33t) et plus sûr sur le plan informatique.

1
répondu Paul Nathan 2008-10-14 15:15:06

si vous êtes intéressé à générer des mots de passe prononçables, il y a un port C# à: http://www.hoogervorst.ca/arthur/?attachment_id=1708

Dans le code, vous trouverez des liens utiles pour en savoir plus. http://www.multicians.org/thvv/gpw.html

Bonne Chance. James

1
répondu James Russell 2010-05-13 15:00:34
function random_readable_pwd($length=12){
    // special characters
    $sym="!\"§$%&/()={[]}\,.-_:;@>|";

    // read words from text file to array
    $filename="special.txt";
    if (!file_exists($filename)) { die('File "'.$filename.'" is not exists!'); }
    $lines = file($filename);
    foreach ($lines as $line_num => $line) {
        $line=substr($line, 0, -2);
        $words[].=$line;
    }

    // Add words while password is smaller than the given length
    $pwd = '';
    $ran_date=date("s");
    while (strlen($pwd) < $length){
        $r = mt_rand(0, count($words)-1);
        // randomly upercare word but not all in one time
        if ($ran_date % 3 == 0) $words[$r]=ucwords($words[$r]);
        $pwd .= $words[$r];
        //randomly add symbol
        if ($ran_date % 2 == 0) $pwd .= $sym{mt_rand(0,strlen($sym))};
        $ran_date++;
    }

    // append a number at the end if length > 2 and
    // reduce the password size to $length
    $num = mt_rand(1, 99);
    if ($length > 2){
        $pwd = substr($pwd,0,$length-strlen($num)).$num;
    } else { 
        $pwd = substr($pwd, 0, $length);
    }

    return $pwd;

}
1
répondu Anonym 2012-03-10 23:30:54