Фонетически незабываемые алгоритмы поколения пароля

Простейшим для вас может быть введение компонента «poll» библиотеки ajax4jsf: https://ajax4jsf.dev.java.net/nonav/documentation/ajax-documentation/entire.html#d0e1955

Это не потребует реконфигурации приложения и больших изменений на странице JSF (добавление компонента a4j: poll добавлено)

Он работал очень хорошо в нескольких моих проектах.

48
задан George Stocker 11 July 2009 в 20:07
поделиться

17 ответов

Вы могли бы хотеть посмотреть на:

  • pronouncable алгоритм поколения пароля, используемый apg и, объяснил в FIPS-181
  • Koremutake
30
ответ дан Raedwald 26 November 2019 в 18:39
поделиться

Я был бы действительно любовь , чтобы видеть, что кто-то реализует пароли с управляющими символами как" <Ctrl>+N" или даже комбинированные символы как" A+C" одновременно. Преобразование этого к некоторому двоичному эквиваленту, по моему скромному мнению, сделало бы требования пароля намного легче помнить, быстрее ввести и тяжелее расколоться (Намного больше комбинаций для проверки).

0
ответ дан Mike 26 November 2019 в 18:39
поделиться

Один способ генерировать пароли, которые 'походят' на слова, состоял бы в том, чтобы использовать цепь Маркова. Цепь Маркова n-градуса является в основном большим набором n-кортежей, которые появляются в Вашем входном корпусе, наряду с их частотой. Например, "муравьед", с цепью Маркова 2-го градуса, генерировал бы кортежи (a, a, 1), (a, r, 2), (r, d, 1), (d, v, 1), (v, a, 1), (r, k, 1). Дополнительно, можно также включать 'виртуальное' начинать-слово и словоупотребления конца.

для создания полезной цепи Маркова в целях, Вы питались бы в большом корпусе английских данных языка - существуют многие доступные, включая, например, Проект Гутенберг - для генерации ряда записей, как обрисовано в общих чертах выше. Для генерации слов естественного языка или предложений, которые по крайней мере главным образом следуют правилам грамматики или составу, 3-я цепь Маркова градуса обычно достаточна.

Затем для генерации пароля Вы выбираете случайный 'стартовый' кортеж от набора, взвешенного его частотой, и производите первую букву. Затем неоднократно выбирайте наугад (снова взвешенный частотой) 'следующий' кортеж - то есть, тот, который запускается с тех же букв, которыми заканчивается Ваш текущий, и имеет, только один обозначает буквами отличающийся. Используя пример выше, предположите, что я запускаю в (a, a, 1), и произвожу 'a'. Мой единственный следующий выбор (a, r, 2), таким образом, я произвел другой 'a'. Теперь, я могу выбрать любого (r, d, 1) или (r, k, 1), таким образом, я выбираю тот наугад на основе их частоты возникновения. Предположим, что я выбираю (r, k, 1) - я произвел 'r'. Этот процесс продолжается, пока Вы не достигаете маркера конца слова или решаете остановиться независимо (так как большинство цепей Маркова формирует циклический график, Вы никогда не можете потенциально заканчивать генерировать, если Вы не применяете искусственное ограничение длины).

В уровне слова (например, каждый элемент кортежа является словом), эта техника используется некоторыми 'ботами разговора' для генерации разумно кажущихся предложений ерунды. Это также используется спаммерами, чтобы попытаться уклониться от спам-фильтров. На уровне буквы, как обрисовано в общих чертах выше, это может использоваться для генерации слов ерунды, в этом случае для паролей.

Один недостаток: Если Ваш входной корпус ничего не содержит кроме букв, ни будут Ваши выходные фразы, таким образом, они не передадут самые 'безопасные' требования пароля. Можно хотеть применить некоторую последующую обработку для заменения некоторыми символами числа или символы.

1
ответ дан Nick Johnson 26 November 2019 в 18:39
поделиться

Бросьте взгляд на gpw инструмент . Пакет также доступен в репозиториях Debian/Ubuntu.

1
ответ дан George Stocker 26 November 2019 в 18:39
поделиться

Пароли, генерируемые системой, являются плохой идеей для чего-либо кроме внутренних сервисных учетных записей или временного сброса (и т.д.).

необходимо всегда использовать собственные "пароли", которые легки для Вас помнить, но которые почти невозможно предположить или грубая сила. Например, пароль для моей старой университетской учетной записи был.

Here to study again!

, Который является 20 символами с помощью верхнего регистра и нижнего регистра с пунктуацией. Это - невероятно сильный пароль и нет никакой части программного обеспечения, которое могло генерировать более безопасный, который легче помнить за меня.

1
ответ дан George Stocker 26 November 2019 в 18:39
поделиться

Я полностью с rjh. Преимущество просто использования стартовых букв пароля состоит в том, что это выглядит случайным, который делает это чертовски трудным, чтобы помнить, не знаете ли Вы фразу позади него, в случае, если Eve смотрит через Ваше плечо, поскольку Вы вводите пароль.
OTOH, если она видит, что Вы вводите приблизительно 8 символов, среди которых' дважды, и затем 'o' и 'r' она может предположить это правильно в первый раз.
Принуждение использования по крайней мере одной цифры действительно не помогает; Вы просто знаете , что это будет "pa55word" или "passw0rd".

лирика Песни является неистощимым источником паролей.

"But I should have known this right from the start"

становится "bishktrfts". 10 букв, даже только нижний регистр дает Вам 10^15 комбинации, который является много , тем более, что нет никакого ярлыка для взламывания его. (В 1 миллионе комбинаций в секунду требуется 30 лет для тестирования всех 10^15 комбинации.)
Как дополнительное (в случае, если Eve знает, что Вы - полицейский поклонник), Вы могли подкачать, например, 2-я и 3-я буква или взять вторую букву третьего слова. Бесконечные возможности.

2
ответ дан stevenvh 26 November 2019 в 18:39
поделиться

Вращение на идее 'пароля' должно взять фразу и записать первые буквы каждого слова во фразе. Например,

"A specter is haunting Europe - the specter of communism."

Становится

asihe-tsoc

, Если фраза, оказывается, имеет punctation, такой как!?, и т.д. - мог бы также пихнуть его там. То же идет для чисел, или просто замените буквами или добавьте соответствующие числа до конца. Например, Karl Marx (кто сказал, что эта кавычка) умер в 1883, итак, почему не 'asihe-tsoc83'?

я уверен, что творческая атака перебором могла извлечь выгоду из статистических свойств такого пароля, но это - все еще порядки величины, более безопасные, чем атака с подбором по словарю.

<час>

Другой большой подход должен только составить смешные слова, например, 'Barangamop'. После использования его несколько раз Вы выучите его, но это твердо к "в лоб". Добавьте некоторые числа или пунктуацию для дополнительной защиты, например, '386Barangamop!'

3
ответ дан rjh 26 November 2019 в 18:39
поделиться

Вот часть 2 Вашей идеи, смоделированной в сценарии оболочки. Это берет 4, 5 и 6 слов буквы (примерно 50 000) из файла словаря Unix на Вашем компьютере, и свяжите те слова на первом символе.

#! /bin/bash

RANDOM=$
WORDSFILE=./simple-words
DICTFILE=/usr/share/dict/words
grep -ve '[^a-z]' ${DICTFILE} | grep -Ee '^.{4,6} 

Как большинство генераторов пароля, я обманываю путем вывода их в наборах двадцатых. Это часто защищается с точки зрения "безопасности" (кто-то смотрящий через Ваше плечо), но действительно его просто взлом для разрешения пользователю просто выбрать самый дружественный пароль.

я нашел 4 к 6 слова буквы из файла словаря, все еще содержащего неясные слова.

А лучший источник для слов был бы записанным документом. Я скопировал все слова на этой странице и вставил их в текстовый документ и затем выполнил следующий набор команд для получения фактическим английские слова.

perl -pe 's/[^a-z]+/\n/gi' ./624425.txt | tr A-Z a-z | sort -u > ./words
ispell -l ./words | grep -Fvf - ./words > ./simple-words

Тогда я использовал эти приблизительно 500 очень простых слов от этой страницы для генерации следующих паролей со сценарием оболочки - сценарий, между прочим, показывает слова, которые составляют пароль.

backgroundied (background died)
soundecrazy (sounding decided crazy)
aboupper (about upper)
commusers (community users)
reprogrammer (replacing programmer)
alliterafter (alliteration after)
actualetter (actual letter)
statisticrhythm (statistical crazy rhythm)
othereplacing (other replacing)
enjumbling (enjoying jumbling)
feedbacombination (feedback combination)
rinstead (right instead)
unbelievabut (unbelievably but)
createdogso (created dogs so)
apphours (applications phrase hours)
chainsoftwas (chains software was)
compupper (computer upper)
withomepage (without homepage)
welcomputer (welcome computer)
choosome (choose some)

Некоторыми результатами там являются победители.

прототип показывает, что может, вероятно, быть сделан, но аналитика, которой Вы требуете об аллитерации или информации о слоге, требует лучшего источника данных, чем просто слова. Вам была бы нужна информация о произношении. Кроме того, я показал, что Вы, вероятно, хотите, чтобы база данных хороших простых слов выбрала из, а не весь слова, лучше удовлетворила Ваше требование незабываемого пароля.

Генерация единого пароля в первый раз и каждый раз - что-то Вам нужно для сети - возьмет и лучший источник данных и больше изощренности. Используя лучший язык программирования, чем Bash с текстовыми файлами и использованием базы данных мог заставить это работать мгновенно. Используя систему баз данных Вы могли использовать алгоритм SOUNDEX или некоторых такой.

Отличная идея. Удача.

> ${WORDSFILE} N_WORDS=$(wc -l < ${WORDSFILE}) for i in $(seq 1 20); do password="" while [ ! "${#password}" -ge 8 ] || grep -qe"^${password}$" ${DICTFILE}; do while [ -z "${password}" ]; do password="$(sed -ne "$(( (150 * $RANDOM) % $N_WORDS + 1))p" ${WORDSFILE})" builtfrom="${password}" done word="$(sort -R ${WORDSFILE} | grep -m 1 -e "^..*${password:0:1}")" builtfrom="${word} ${builtfrom}" password="${word%${password:0:1}*}${password}" done echo "${password} (${builtfrom})" done

Как большинство генераторов пароля, я обманываю путем вывода их в наборах двадцатых. Это часто защищается с точки зрения "безопасности" (кто-то смотрящий через Ваше плечо), но действительно его просто взлом для разрешения пользователю просто выбрать самый дружественный пароль.

я нашел 4 к 6 слова буквы из файла словаря, все еще содержащего неясные слова.

А лучший источник для слов был бы записанным документом. Я скопировал все слова на этой странице и вставил их в текстовый документ и затем выполнил следующий набор команд для получения фактическим английские слова.

perl -pe 's/[^a-z]+/\n/gi' ./624425.txt | tr A-Z a-z | sort -u > ./words
ispell -l ./words | grep -Fvf - ./words > ./simple-words

Тогда я использовал эти приблизительно 500 очень простых слов от этой страницы для генерации следующих паролей со сценарием оболочки - сценарий, между прочим, показывает слова, которые составляют пароль.

backgroundied (background died)
soundecrazy (sounding decided crazy)
aboupper (about upper)
commusers (community users)
reprogrammer (replacing programmer)
alliterafter (alliteration after)
actualetter (actual letter)
statisticrhythm (statistical crazy rhythm)
othereplacing (other replacing)
enjumbling (enjoying jumbling)
feedbacombination (feedback combination)
rinstead (right instead)
unbelievabut (unbelievably but)
createdogso (created dogs so)
apphours (applications phrase hours)
chainsoftwas (chains software was)
compupper (computer upper)
withomepage (without homepage)
welcomputer (welcome computer)
choosome (choose some)

Некоторыми результатами там являются победители.

прототип показывает, что может, вероятно, быть сделан, но аналитика, которой Вы требуете об аллитерации или информации о слоге, требует лучшего источника данных, чем просто слова. Вам была бы нужна информация о произношении. Кроме того, я показал, что Вы, вероятно, хотите, чтобы база данных хороших простых слов выбрала из, а не весь слова, лучше удовлетворила Ваше требование незабываемого пароля.

Генерация единого пароля в первый раз и каждый раз - что-то Вам нужно для сети - возьмет и лучший источник данных и больше изощренности. Используя лучший язык программирования, чем Bash с текстовыми файлами и использованием базы данных мог заставить это работать мгновенно. Используя систему баз данных Вы могли использовать алгоритм SOUNDEX или некоторых такой.

Отличная идея. Удача.

2
ответ дан ashawley 26 November 2019 в 18:39
поделиться

Когда Вы генерируете пароль для пользователя и отправляете его по электронной почте, первая вещь, которую необходимо сделать, когда они сначала входят в систему, если вынуждают их изменить свой пароль. Пароли, созданные системой, не должно быть легко помнить, потому что они должны только быть необходимы однажды.

Наличие, легкое помнить, трудно предположить пароли, является полезным понятием для Ваших пользователей, но не является тем, которое система должна некоторым способом осуществлять. Предположим, что Вы посылаете пароль на счет Gmail своего пользователя, и пользователь не изменяет пароль после входа в систему. Если пароль в учетную запись Gmail поставлен под угрозу, то пароль к Вашей системе поставлен под угрозу.

Настолько генерирующий легкий помнить пароли за Ваших пользователей не полезно, если они должны сразу изменить пароль. И если они не изменяют его сразу, у Вас есть другие проблемы.

4
ответ дан jmucchiello 26 November 2019 в 18:39
поделиться

FWIW мне вполне нравится смешивать слоги слова для легкого, но чрезвычайно случайного пароля. Возьмите "Бонго", например, в качестве случайного слова. Подкачайте слоги, Вы получаете "Gobong". Подкачайте o's для нулей на вершине (или некоторая другая общая замена), и у Вас есть чрезвычайно случайная последовательность символов с некоторым следом, который помогает Вам помнить это.

Теперь, как Вы выбираете слоги программно - это - целый другой вопрос!

5
ответ дан MarcE 26 November 2019 в 18:39
поделиться

Я несколько раз использовал следующий алгоритм:

  1. Помещенный все строчные гласные (от a-z) в массив Гласные
  2. Помещенный все строчные согласные (от a-z) в другой массив Согласные
  3. Создают третий массив Пары из двух букв таким способом, что Вы создаете всех возможных пар букв между Гласные и Согласные ("ab", "ba", "ac", и т.д....)
  4. Случайным образом выбор 3-5 элементов от Пары и связываете их вместе как строку , Пароль
  5. Случайным образом выбирает true или false
    1. , Если true, удалите последнюю букву от [1 111] Пароль
    2. , Если false, ничего не делайте
  6. Замена 2-4 случайным образом выбранных символа в [1 112] Пароль с его прописным эквивалентом
  7. Замена 2-4 случайным образом выбранных символа в [1 113] Пароль со случайным образом выбранным целым числом 0-9

VoilГЎ - теперь у Вас должен быть пароль длины между 5 и 10 символами с алфавитно-цифровыми символами нижнего регистра и верхним регистром. Наличие гласных и согласных сменяется, часто делают их полуудобопроизносимыми и таким образом легче помнить.

6
ответ дан Henrik Paul 26 November 2019 в 18:39
поделиться

Я удивлен, что никто не упомянул алгоритм Multics, описанный в http://www.multicians.org/thvv/gpw.html , который подобен алгоритму FIPS, но на основе trigraphs, а не диграфов. Это производит, производит такой как

ahmouryleg
thasylecta
tronicatic
terstabble

, я портировал код к Python также: http://pastebin.com/f6a10de7b

12
ответ дан Joe Koberg 26 November 2019 в 18:39
поделиться

После многих лет я решил использовать первую букву слов в пароле. Невозможно расколоться, универсальный для длины, и ограничения как "Вы должны иметь цифру", и трудно совершать ошибки.

Это работает путем создания фразы. сумасшедшая забавная яркая тема полезна! "Посторонние объекты Переполнения стека посажены, не применяя ракеты или колеса". Возьмите первую букву, Ваш пароль является "soalwurow"

, можно ввести это быстро и точно , так как Вы не помните побуквенный, Вы просто говорите предложение в голове.

я также как наличие слов чередуюсь от левой и правой стороны клавиатуры, это дает Вам незначительно более быструю скорость печати и более приятный ритм. Заметьте в моем примере, Ваши руки чередуют left-right-left-right.

8
ответ дан SPWorley 26 November 2019 в 18:39
поделиться

В первую очередь, удостоверьтесь, что пароль долог. Рассмотрите использование "пароля" вместо единственного "пароля". Повреждение паролей как "Собаки и волки ненавидит друг друга". очень твердо все же, их довольно легко помнить.

Некоторые сайты могут также дать Вам совет, который может быть полезным, как Сильные пароли: Как создать и использовать их (связанный от средство проверки Пароля , который является полезным инструментом самостоятельно).

кроме того, вместо того, чтобы пытаться создать легкий помнить пароль, в некоторых случаях намного лучшая альтернатива должна постараться не помнить пароль вообще при помощи (и обучать Ваших пользователей использовать) хорошая утилита управления паролями (см. , Каков Ваш любимый инструмент устройства хранения данных пароля? ) - при выполнении это, единственная оставленная часть должно создать твердое для взламывания пароля, который легок (немного достаточно долго случайное предложение сделает).

19
ответ дан Community 26 November 2019 в 18:39
поделиться

Вы могли использовать Цепи Маркова для генерации слов, который походит на английский язык (или любой другой язык, который Вы хотите), но они не фактические слова.

вопрос легких помнить действительно субъективен, таким образом, я не думаю, что можно записать алгоритм как это, которое будет хорошо для всех.

И почему использование короткие пароли на веб-сайтах/компьютерных приложениях вместо паролей? Их легко помнить, но трудно расколоться.

11
ответ дан Alex Reitbort 26 November 2019 в 18:39
поделиться

Я предпочитаю давать пользователям "трудный" пароль, требуя, чтобы они изменили его на первом использовании и предоставлении им руководство о том, как создать хороший, долгий пароль. Я также связал бы это с разумными требованиями сложности пароля (8 + символы, верхнее соединение / соединение нижнего регистра, и пунктуация или цифры). Мое объяснение для этого - то, что люди, намного более вероятно, будут помнить что-то, что они выбирают сами и менее вероятно записать его где-нибудь, если они могут помнить это.

3
ответ дан tvanfosson 26 November 2019 в 18:39
поделиться

править: После ответа я понял, что это никоим образом не запоминается фонетически. В любом случае оставляя ответ b / c, мне это интересно. / edit

Старый тред, я знаю ... но попробовать стоит.

1) Я бы, наверное, построил самый большой словарь, который вы можете собрать. Разложите их по сегментам по частям речи.

2) Затем постройте грамматику, которая может составлять несколько типов предложений. «Тип» предложения определяется перестановками частей речи.

3) Случайно (или как можно ближе к случайному) выберите тип предложения. Возвращается шаблон с заполнителями для частей речи (nvn будет существительное-глагол-существительное)

3) Выбирать слова случайным образом в каждой части речевого сегмента, чтобы заменить заполнители. Заполните их. (Пример выше может быть чем-то вроде велосипеда на машине. )

4) произвольно просканируйте каждый символ, решая, хотите ли вы заменить его либо похожим по звучанию символом (или набором символов), либо похожим. Это самый сложный этап проблемы.

5) полученный пароль будет примерно таким:kaR @ tebyCICle

6) смейтесь над юмористическими результатами, подобными приведенным выше, которые выглядят как «велосипед для карате»

1
ответ дан 26 November 2019 в 18:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: