Как указано в списке рассылки , мы обновили инструкции по загрузке последней версии Firefox. Если это по-прежнему не удается с последней версией Amazon Linux AMI и Firefox, сообщите нам об этом.
Благодарим вас за использование пакетов Lambda Linux Project.
Прежде всего, установите словарь знакомого вам языка, используя:
sudo apt-get install <language-package>
Чтобы увидеть все доступные пакеты:
apt-cache search wordlist | grep ^w
Примечание:все инструкции по установке предполагают, что вы используете ОС на основе Debian -.
После установки словаря запустите:
WORDS=5; LC_ALL=C grep -x '[a-z]*' /usr/share/dict/words | shuf --random-source=/dev/urandom -n ${WORDS} | paste -sd "-"
Что выведет ex:
blasphemous-commandos-vasts-suitability-arbor
Разбить:
WORDS=5;
— выберите, сколько слов вы хотите в своем пароле. LC_ALL=C grep -x '[a-z]*' /usr/share/dict/words
— выбирать только слова, содержащие строчные буквы алфавита (исключаются слова, в которых есть '
или забавные символы, как вéclair
). LC_ALL=C
гарантирует, что [a-z]
в регулярном выражении не будет соответствовать букве -, например символам, отличным от строчных букв без диакритических знаков. shuf --random-source=/dev/urandom -n ${WORDS}
— выберите столько СЛОВ , сколько вы запросили. --random-source=/dev/urandom
гарантирует, что shuf
надежно запустит генератор случайных чисел; без него shuf
по умолчанию является безопасным начальным числом, но может вернуться к небезопасному начальному числу -в некоторых системах, таких как некоторые уровни эмуляции Unix в Windows. paste -sd "-"
— объединить все слова с помощью-
(не стесняйтесь менять символ на что-то другое ). В качестве альтернативы вы можете обернуть его в функцию:
#!/bin/bash
function memorable_password() {
words="${1:-5}"
sep="${2:--}"
LC_ALL=C grep -x '[a-z]*' /usr/share/dict/words | shuf --random-source=/dev/urandom -n ${words} | paste -sd "$sep"
}
или
#!/bin/sh
memorable_password() {
words="$1"
if [ -z "${words}" ]; then
words=5
fi
sep="$2"
if [ -z "${sep}" ]; then
sep="-"
fi
LC_ALL=C grep -x '[a-z]*' /usr/share/dict/words | shuf --random-source=/dev/urandom -n ${words} | paste -sd "$sep"
}
И то, и другое можно назвать таковым:
memorable_password 7 _
memorable_password 4
memorable_password
Возвращение:
skipped_cavity_entertainments_gangway_seaports_spread_communique
evaporated-clashes-bold-presuming
excelling-thoughtless-pardonable-promulgated-forbearing
Для занудного и забавного, но не очень безопасного пароля, который не требует установки словаря, вы можете использовать (любезно предоставленный @jpa):
WORDS=5; man git | \
tr ' ' '\n' | \
egrep '^[a-z]{4,}$' | \
sort | uniq | \
shuf --random-source=/dev/urandom -n ${WORDS} | \
paste -sd "-"
У меня есть это:
xkcd_password () {
command grep "^[[:alpha:]]\{5,8\}$" "${1-/usr/share/dict/words}" | sort --random-source=/dev/urandom -R | head -4
}
Попробуйте это,
shuf --random-source=/dev/urandom -n5 /usr/share/dict/words | sed 's/[^[:alnum:]]//g' | paste -sd_
Выход:
Quayles_knockwursts_scrotums_Barrie_hauler
Пояснение:
shuf --random-source=/dev/urandom -n5 /usr/share/dict/words
Получить 5 случайных слов из файла dict sed 's/[^[:alnum:]]//g'
Удалить не -буквенно-цифровые символы paste -sd_
, соедините слова символом подчеркивания(_
)Вы можете использовать любой файл списка слов из Интернета вместо /usr/share/dict/words
.
Установите список слов, если у вас его нет. Это может быть в вашем репозитории дистрибутивов, например.https://packages.debian.org/sid/wordlist:
sudo apt install wamerican
Вам нужен словарь со списком слов, поскольку вы упоминаете биткойн, скорее всего, вам нужен этот словарь:
https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt
Если ваш родной язык не английский, в том же репозитории доступны списки слов для других языков.
Учитывая этот файл english.txt, вы можете сделать случайный выбор с помощьюshuf
:
$ shuf -n 4 english.txt
anchor
neck
trumpet
response
Обратите внимание, что для действительно надежной фразы-пароля вам понадобится гораздо больше четырех слов. 4 слова для онлайн-сервиса, где количество попыток злоумышленника очень ограничено. Я думаю, что рекомендация по биткойнам составляет 16 слов, не уверен.
Также в этом примере каждое слово может встречаться только один раз. Если вы хотите разрешить повторяющиеся слова, добавьте опцию --repeat
:
$ shuf -n 4 -r english.txt
Это позволило бы каждому слову появляться более одного раза.
Если вам нужен вывод в одну строку, вы можете просто добавитьxargs echo
:
$ shuf -n 4 english.txt | xargs echo
math easily cube daughter
Или, если вы предпочитаете подстановку команд:
$ echo $(shuf -n 4 -r english.txt)
photo milk roast ozone
Кстати, я не считаю этот стиль пароля легко запоминающимся.
Ну, на самом деле мне очень повезло с math easily cube daughter
, так как это просто помогает придумать сказку, в которой ваша дочь может легко решать математические задачи с кубиками или что-то в этом роде. Это то, к чему люди могут относиться, как лошадь в примере XKCD.
Но что, черт возьми, такое anchor neck trumpet response
? Я не автор комиксов, у меня есть творческий потенциал, чтобы придумать мнемонику для этого. Так забудется в мгновение ока.
Даже если вы помните слова, сложно запомнить их правильный порядок. Было ли это math easily cube daughter
или daugher easily math cube
или что-то еще?
И пароль должен быть случайным, вы не можете его выбрать и изменить.
Что касается сидов биткойнов, вы не должны их запоминать.Это просто способ легко записать это. Любой может написать 16 слов на листе бумаги и правильно прочитать их; со случайными буквами гораздо больше шансов сделать ошибки.
Если вас беспокоит случайность shuf
, добавьте параметр --random-source=/dev/urandom
ко всем командам shuf
.
См. такжеhttps://www.gnu.org/software/coreutils/manual/html_node/Random-sources.html#Random-sources
Я не делаю этого со стандартными утилитами, которые не предназначены для использования в криптографии. Нет никаких оснований полагать, что они используют csPRNG или что они правильно его раздают, и кто-то, кто знает ваш метод, сможет воспроизвести ваши парольные фразы. Точно так же поступайте с многоцелевыми -утилитами, если вы не знаете, как правильно их использовать.
pwqgen
из passwdqc
.
Как предложил @R..но для машин RHEL/CentOS (доступно в репозитории EPEL):
pwgen
Обратите внимание на этот отрывок из man-страницы pwgen (акцент мой):
The pwgen program generates passwords which are designed to be easily memorized by humans, while being as secure as possible. Human-memorable passwords are never going to be as secure as completely completely random passwords.
Если вы хотите, чтобы его было еще легче запомнить, вы также можете использовать метод хеширования пароля (запомнить одну фразу-пароль для генерации множества других фраз-паролей из ). Вместо того, чтобы запоминать сотни фраз-паролей, вы просто запоминаете метод их генерации.
Используя shuf
с openssl
для предоставления случайного источника , вы можете повторно -генерировать парольные фразы по мере необходимости. Обратите внимание, что безопасность этого подхода зависит только от надежности вашей парольной фразы, так что учитывайте ее.
В следующем примере случайное начальное число зависит от
user@site
, wallet#number
, любая)Измените любой из них, и вы получите другой результат.
get_seeded_random() {
seed=$(printf "%s:" "$@")
openssl enc -aes-256-ctr -pass pass:"$seed" -nosalt \
< /dev/zero 2>/dev/null
}
get_random_words() {
dictionary=$1
number=$2
passphrase=$3
purpose=$4
dictionary_hash=$(sha1sum < "$dictionary")
shuf -n "$number" \
--random-source=<(get_seeded_random
"$passphrase" "$purpose" "$dictionary_hash" "$number") \
"$dictionary" \
| xargs echo
}
Таким образом, если бы моя парольная фраза былаWienerSchnitzel
(не лучшим выбором по очевидным причинам ), и если бы я везде использовал пароли в стиле XKCD:
$ get_random_words english.txt 4 WienerSchnitzel wallet:1
robust lottery ugly stone
$ get_random_words english.txt 4 WienerSchnitzel wallet:2
vapor comfort various bitter
$ get_random_words english.txt 4 WienerSchnitzel frostschutz@unix.stackexchange.com
any actor tobacco tattoo
И вы можете выполнить его несколько раз, всегда будет один и тот же результат:
$ get_random_words english.txt 4 WienerSchnitzel wallet:1
robust lottery ugly stone
$ get_random_words english.txt 4 WienerSchnitzel wallet:1
robust lottery ugly stone
Но запрос еще одного слова — это совершенно другой результат (, как и использование другого словаря и т. д.):
$ get_random_words english.txt 5 WienerSchnitzel wallet:1
crash category extra hollow cloud
Недостатком этого подхода является то, что если кто-то узнает, что вы используете этот метод, он может попытаться -взломать вашу секретную фразу-пароль, а затем приступить к генерации всех остальных ваших фраз-паролей.
В этом примере не требуется много времени, чтобы угадать Венский шницель. Чтобы улучшить это,вам нужно будет применить дорогой (, но повторяемый хеш )к самой фразе-паролю.
# poor man's expensive hash replacement
seed=$( (echo "$seed" ; head -c 1G /dev/zero) | sha1sum)
И в первую очередь используйте гораздо лучшую кодовую фразу.
Вы также можете жестко -закодировать по-настоящему случайный пароль с высокой -энтропией, но это полностью противоречит аспекту "легко запоминающегося" аспекта вещей.
Кроме того, эта реализация зависит от shuf
всегдаго выбора слов одним и тем же способом, что может измениться в будущих версиях в долгосрочной перспективе.
Для полноты:
git clone git@gitlab.com:victor-engmark/xkcd-passphrase-generator.git
cd xkcd-passphrase-generator
./generate.sh
В двух словах:
random.sample(open("/usr/share/dict/words").readlines(), 4)
Производит, например.:
['controverts\n', "Queensland's\n", 'plaids\n', 'aback\n']
Полный код был бы немного длиннее, что-то вроде
import random; print("".join(random.sample(open("/usr/share/dict/words").readlines(), 4)))
Weyden
Geronimo's
Jidda
enumerate
С другой стороны, вы иногда получаете такие перлы:
polyamory
replicates
unmarried
diseases
С другой стороны, вы можете получить слова, которые трудно написать по буквам или даже напечатать:
fezzes
Lumière's
tercentenary's
Liliuokalani
И, конечно же, если вы выберете один результат из нескольких вариантов, вы резко сузите пространство поиска, поэтому вам придется придерживаться первого (, то есть действительно случайного )набора слов.
xkcdpass — это простой способ получить это без написания одного -вкладыша.
$ xkcdpass
optimal mycology Kumamoto thorny chrism unsavoury
Имеются параметры для установки количества слов и т. д.
Для установки:
pip install xkcdpass
(вам может понадобитьсяsudo
). python
и python-pip
, для Python 2 или 3.