xkcd의 Correct Horse Battery Staple 또는 Bitcoin Seed와 같이 기억하기 쉬운 비밀번호를 생성할 수 있는 좋은 단일 라이너는 무엇입니까?
편집 1:
이는 다음과 관련이 있습니다.임의의 문자열 생성임의의 문자열은 기억하는 것이 불가능하기 때문입니다. 그리고강제 xkcd...
답변1
먼저 다음을 사용하여 익숙한 언어에 대한 사전을 설치하십시오.
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 "-"
이는 다음과 같이 출력됩니다.
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
확인합니다 . 이 생성기가 없으면 기본적으로 보안 시드로 설정되지만 Windows의 일부 Unix 에뮬레이션 레이어와 같은 일부 시스템에서는 비보안 시드로 대체될 수 있습니다.shuf
shuf
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 "-"
답변2
암호화 사용을 고려하지 않는 표준 유틸리티를 사용하면 이 작업을 수행하지 않을 것입니다. csPRNG를 사용하고 있거나 이를 올바르게 시딩하고 있다고 믿을 이유가 없으며 귀하의 방법을 아는 사람이 귀하의 암호 문구를 재현할 수 있습니다. 마찬가지로, 다목적 유틸리티를 올바르게 사용하는 방법을 잘 모르겠다면 한번 사용해 보세요.
pwqgen
~에서passwdqc
.
답변3
사전이 필요합니다. Bitcoin을 언급했으므로 다음이 필요할 가능성이 높습니다.
https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt
모국어가 영어가 아닌 경우 다른 언어의 단어 목록을 동일한 저장소에서 사용할 수 있습니다.
이 english.txt 파일이 주어지면 다음을 사용하여 무작위로 선택할 수 있습니다 shuf
.
$ shuf -n 4 english.txt
anchor
neck
trumpet
response
정말 안전한 비밀번호를 위해서는 4단어 이상이 필요합니다. 공격자가 시도할 수 있는 횟수가 매우 제한적인 온라인 서비스에는 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
답변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
dict 파일에서 임의의 단어 5개 가져오기sed 's/[^[:alnum:]]//g'
영숫자가 아닌 문자 제거paste -sd_
_
, 단어를 밑줄( )로 연결하세요.
대신 인터넷에 있는 모든 단어 목록 파일을 사용할 수 있습니다 /usr/share/dict/words
.
Vocabulary가 없으면 Vocabulary를 설치하세요. 배포 저장소에 있을 수 있습니다.https://packages.debian.org/sid/wordlist:
sudo apt install wamerican