보너스

보너스

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 에뮬레이션 레이어와 같은 일부 시스템에서는 비보안 시드로 대체될 수 있습니다.shufshuf
  • 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/wordsdict 파일에서 임의의 단어 5개 가져오기
  • sed 's/[^[:alnum:]]//g'영숫자가 아닌 문자 제거
  • paste -sd__, 단어를 밑줄( )로 연결하세요.

대신 인터넷에 있는 모든 단어 목록 파일을 사용할 수 있습니다 /usr/share/dict/words.

Vocabulary가 없으면 Vocabulary를 설치하세요. 배포 저장소에 있을 수 있습니다.https://packages.debian.org/sid/wordlist:

sudo apt install wamerican

관련 정보