Znaki, których należy unikać w automatycznie generowanych hasłach

Muszę wygenerować kilka haseł, chcę uniknąć znaków, które mogą być dla siebie mylone. Czy istnieje ostateczna lista postaci, których powinienem unikać? moja aktualna lista to

Il10o8B3Evu![]{}

Czy są jakieś inne pary znaków, które łatwo pomylić? dla znaków specjalnych miałem zamiar ograniczyć się do tych pod klawiszy numerycznych, choć wiem, że to różni się w zależności od narodowości klawiatury!

Jako pytanie o jeźdźca, chciałbym, aby mój hasła "słowopodobne" czy masz do tego preferowany algorytm?

Dzięki:)

Author: Raedwald, 2008-09-11

12 answers

Oto zestawy znaków, które Steve Gibson używa dla swojego systemu"Perfect Paper Password". Są to "znaki, aby pozwolić", a nie "znaki, aby uniknąć", ale wydają się całkiem rozsądne dla tego, co chcesz: {]}

Standardowy zestaw 64 znaków

!#%+23456789:=?@ABCDEFGHJKLMNPRS
TUVWXYZabcdefghijkmnopqrstuvwxyz

Większy zestaw 88 znaków

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

W przypadku haseł wymawialnych nie znam algorytmów, ale jako punkt wyjścia warto przyjrzeć się APG i pwgen.

 36
Author: dF.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-11 01:24:43

Moją preferowaną metodą jest uzyskanie listy słów 3, 4 i 5 liter. Następnie wybierz co najmniej 2 z nich i umieść losową 2-cyfrową liczbę lub specjalny symbol (%&*@#$) między każdym słowem. Jeśli chcesz, możesz losowo pisać wielkimi literami do jednego znaku na słowo.

W zależności od wymagań siłowych otrzymujesz łatwe do zapamiętania i komunikowania hasła takie jak:

  • lemon % desk
  • paper&boy32hat

Pamiętaj, że od czasu do czasu interesują Cię lub nieodpowiednie kombinacje słów(pozwolę ci użyć wyobraźni). Zwykle mam przycisk pozwalający na wygenerowanie nowego hasła, jeśli prezentowane jest nielubiane.

Z reguły używaj tylko symboli, dla których ludzie powszechnie znają tę nazwę. Na standardowej klawiaturze US unikałbym ~ " / \^

Myślę, że to bardziej odpowiadało na twoje pytanie jeźdźca niż na twoje główne pytanie . ..

Powodzenia!

 9
Author: Jim McKeeth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-06 00:25:51

Read Choosing Secure Passwords.

Jedna ciekawa ciekawostka: aby uzyskać bezpieczniejsze hasła, upewnij się, że niektóre cyfry i znaki specjalne pojawiają się pośrodku. Cracking programy sprawdzić dla nich na początku i kończy się wcześniej.

 6
Author: erickson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-11 04:18:23

Aby dodać odpowiedź Jima, możesz również użyć listy słów i losowo zastąpić niektóre znaki symbolami (@dla A, A 0 (zero) dla O lub a 5 dla S) i/lub usunąć samogłoski ze słów.

  • LMN%Desk
  • p@per & b0y32H@t

Nadal w większości czytelny dla człowieka.

 3
Author: Chuck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-11 01:16:54

Jako inna opcja, możesz użyć czcionki monospace/terminal, takiej jak courier do drukowania haseł. Podobne znaki powinny być w ten sposób znacznie bardziej rozróżnialne.

 3
Author: Dana the Sane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-11 02:25:17

Dla Klienta międzynarodowego kilka lat temu musiałem wygenerować losowe, bezpieczne hasła, które następnie były łączone pocztą w dokumenty przez mojego klienta i wysyłane pocztą do odbiorców w 40 krajach. Nie wiedząc, jaki krój pisma będzie używany w dokumentach, użyłem listy znaków, takich jak zestaw Steve Gibson 64-znakowy , aby wyeliminować zamieszanie między podobnymi glifami.

Aby wynikowe hasła były wymowne, a co za tym idzie łatwiejsze do zapamiętania, sparowałem spółgłoski i samogłoski razem, z niektórymi spółgłoskami dygraficznymi (sh, th, wh itp.) dodane do mieszanki.

Aby zmniejszyć szanse na wygenerowanie niewłaściwych lub obraźliwych słów (w języku angielskim lub w językach odbiorców), ograniczyłem bieg kolejnych znaków alfa do dwóch, z cyframi lub znakami interpunkcyjnymi między:

Es4tU$sA6
wH@cY8Go2

Patrząc wstecz na moją metodę teraz, zdaję sobie sprawę, że było miejsce na poprawę w algorytmie niewłaściwości. Korzystanie z just the rules powyżej, niektóre obraźliwe słowa są możliwe teraz, gdy niektóre cyfry i interpunkcja są zastępowane literami.

 3
Author: flamingLogos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-14 15:03:15

Dla haseł czytelnych dla człowieka, ostatnio użyłem skryptu PHP bardzo podobnego do tego poniżej. Zadziałało dobrze. Oczywiście hasła nie będą niesamowicie bezpieczne (ponieważ są podatne na ataki słownikowe), ale dla zapamiętywalnych, a przynajmniej czytelnych haseł działa dobrze. Jednak ta funkcja nie powinna być używana jako-is, jest bardziej dla ilustracji niż cokolwiek innego.

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
Author: James B,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-11 21:46:54

W moim (Elektrotechnika, techie) Graduate school, wszystkie konta komputerowe były inicjowane hasłami, które, jak zakładam, zostały wygenerowane przez standardowe narzędzie linuksowe. Składały się z trzech losowych sylab, z trzema małymi literami w każdej sylabie. Wynik był w miarę bezpieczny (na porządku miliardów możliwych kombinacji), ale tak wymawiany,że nadal używam niektórych z tych haseł ponad dekadę później. Przykład Jakuba jest doskonałą demonstracją to.

Komentarz do haseł w ogóle, od specjalisty od zabezpieczeń sieciowych: są straszne, z kilku powodów, m.in.:

  • Ogólnie łatwo złamać, albo przez socjotechnikę, albo za pomocą oprogramowania atakującego, zwłaszcza jeśli wiesz cokolwiek o swoim celu.

    przykład 1: ostatnio musiałem zmienić chroniony hasłem dokument techniczny. Patrząc na datę, wiedziałem, kim był nasz Technolog w tym czasie, wpisał pierwsze słowo, które przyszło mi do głowy i natychmiast otworzyło dokument.

    przykład 2: Standardowe programy do łamania haseł pozwalają programowi cracker określić zestaw reguł, które działają na dostarczonym przez użytkownika słowniku. Trywialne jest zastąpienie pewnych liter $ymb01$, lub przełożenie na 1337 itd.

  • "bezpieczne" hasła nie są. biorąc pod uwagę liczbę haseł, które większość ludzi musi zapamiętać, najczęstszym sposobem "zapamiętania ""silnego" hasła, takiego jak "a4$n!8_q " polega na zapisaniu go na kartce papieru (lub, co gorsza, zapisaniu go w pliku tekstowym). - Nuff powiedział.

Jeśli potrzebujesz naprawdębezpiecznego uwierzytelniania , multi-factor (lubtwo-factor ) jest akceptowanym w branży mechanizmem. "Dwa czynniki" to zazwyczaj coś, co posiadasz (np. karta dostępu) i coś, co znasz , co na to pozwala (np. PIN). Żadne z nich nie działa bez drugiego - potrzebujesz obu.

Z drugiej strony rozważ poziom bezpieczeństwa, którego naprawdę potrzebujesz. Co chronisz? Jak bardzo "źli faceci" chcą to dostać i jakie są konsekwencje, jeśli to zrobią? "Its @ Secret!"jest więcej niż wystarczająco dobre. :-)

 2
Author: Adam Liss,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-28 05:02:40

Nie podoba mi się podejście wordlist. Na przykład w /usr/share/dict / words na OSX jest 5110 4-znakowych słów. Użycie dwóch z nich o charakterze seperatora tworzy kombinacje ~600m. Ale jeśli użyjesz zestawu znaków bezpośrednio z silnym generatorem liczb losowych, będziesz miał 88^9 możliwych haseł, 3,16 e+17 kombinacji.

Tak czy inaczej, prawdopodobny atak na ten system będzie przeciwko generatorowi liczb losowych, więc upewnij się, że używasz kryptograficznie silny. Jeśli używasz standardowej funkcji rand PHP, zostanie ona zaatakowana przez rejestrację i zresetowanie tysięcy haseł, aby sprawdzić stan RNG, a następnie przewidzieć pozostały stan RNG, co zmniejszy liczbę możliwych haseł, które atakujący musi przetestować.

 1
Author: tqbf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-11 19:35:26

Pierwszym podejściem może być wygenerowanie w większości poprawnych sylab angielskich, zmieszanie ich, a następnie dorzucenie konwersji tekstu - > l33t. Były prace nad gramatykami języka naturalnego, więc jedna z nich może pomóc.

Np. ah ul ING są wszystkie poprawne sylaby lub blisko niego... wymieszaj je - > Ingulah...l33t it - > 1ngu4h. czy jest najlepszy? Nie. Ale przynajmniej jest semipronouncable (jeśli mówisz l33t) i bardziej obliczeniowo bezpieczne.

 1
Author: Paul Nathan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-14 15:15:06

Jeśli jesteś zainteresowany generowaniem haseł, jest port C# na: http://www.hoogervorst.ca/arthur/?attachment_id=1708

W kodzie znajdziesz przydatne linki, aby dowiedzieć się więcej. http://www.multicians.org/thvv/gpw.html

Powodzenia. James

 1
Author: James Russell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
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
Author: Anonym,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-10 23:30:54