it-swarm-ko.tech

Linux에서 강력한 암호를 만드는 방법은 무엇입니까?

Linux (일반 사용자와 관리자 모두)에서 강력한 암호를 만들 수있는 방법과이를 수행 할 특정 프로그램이 있는지 궁금합니다.

25
Gasuma

pwgen 은 암호를 생성하는 많은 프로그램 중 하나입니다.

23
theotherreceive

개인적으로 생성 된 암호는 기억하기가 매우 어렵 기 때문에 암호 생성기를 사용하지 않는 것을 선호하지만 휴대용 솔루션 중 하나는 / dev/urandom 을 사용하는 것입니다.

특수 문자가 포함되지 않은 임의의 암호를 생성하는 데 길이는 10 자입니다.

$ cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 10` 
dyxJRKldvp

이는/dev/urandom에서 바이트를 가져와 tr 명령에 지정된 패턴에 맞지 않는 바이트를 삭제하고 head를 사용하여 10 자로 제한하여 작동합니다.

특수 문자가 포함 된 임의 암호를 만드는 데 10 자 길이입니다.

$ cat /dev/urandom | tr -dc '[email protected]#$%^&*()_+{}|:<>?=' | fold -w 10 | grep -i '[[email protected]#$%^&*()_+{}|:<>?=]' | head -n 1
[email protected]

이것은 tr가 원하지 않는 바이트를 제거한 후 약간 다른 기술을 사용합니다. 아이디어는 적어도 하나의 특수 문자를 갖도록하는 것입니다. 이는 fold 명령을 사용하여 행을 10 개의 그룹으로 줄 바꿈 한 다음 grep을 사용하여 특수 문자가 포함 된 행만 가져 오는 방식으로 작동합니다. 그런 다음 head은 요구 사항을 충족하는 첫 번째 암호를 가져옵니다.

17
Hemant

저는이 작은 대본을 몇 년 전에 썼고 그 이후로 계속 사용해 왔습니다. 어쨌든 printf의 흥미로운 남용이며 불행히도 스크립트에서 거의 볼 수없는 BASH의 멋진 기능을 사용합니다 : typeset.

#!/usr/bin/env bash
# Released into public domain
# Aaron Bockover, 2005
# http://abock.org

typeset -i length; length=$1
typeset -i rounds; rounds=$2
[ $rounds -lt 1 ] && rounds=1
[ $length -lt 1 ] && {
    echo "Usage: $0 <length> [<rounds>]" 2>/dev/null; exit 1;
}
for ((i=0; i < $rounds; i++)); do
    for ((j=0; j < $length; j++)); do
        set=$(($RANDOM % 20))
        if   [ $set -le 6 ];  then o=65; l=26; # 35% uppercase
        Elif [ $set -le 13 ]; then o=97; l=26; # 35% lowercase
        Elif [ $set -le 17 ]; then o=48; l=10; # 20% numeric
        Elif [ $set -le 18 ]; then o=58; l=7;  # 10% symbolic
        Elif [ $set -le 19 ]; then o=33; l=15; fi
        ord=$(($o + $RANDOM % $l))
        printf \\$(($ord / 64 * 100 + $ord % 64 / 8 * 10 + $ord % 8))
    done
    echo
done
11
Aaron Bockover

또한 KeePassX 를 추가하여 시스템 엔트로피를 사용하여 몇 가지 Nice 기능으로 강력한 암호를 생성하는 옵션을 제공합니다. 모두 GUI를 사용합니다. 또한 암호를 관리하고 암호화 된 파일에 저장하는 옵션도 제공합니다.

KPX 암호 생성기 인터페이스는 다음과 같습니다.

enter image description here

4
pootzko

apg은 쉽게 기억할 수있는 비밀번호를 원한다면 나쁜 선택이 아닙니다.

; apg -m 16 -a 0 -t
ByajNudgolIston9 (Byaj-Nud-gol-Ist-on-NINE)
Af}ockhuecUjrak8 (Af-RIGHT_BRACE-ock-huec-Uj-rak-EIGHT)
IakijKadmomIvgig (Iak-ij-Kad-mom-Iv-gig)
NutIlOsyahodBeef (Nut-Il-Os-ya-hod-Beef)
anMechOybekazell (an-Mech-Oyb-ek-az-ell)
VumushCummAd{fra (Vum-ush-Cumm-Ad-LEFT_BRACE-fra)

this 에 따라 비밀번호는 12 자 이상이어야합니다.

나는 무작위가 아닌 것을 사용하지만 모든 공격 목적에 대해 충분히 다양합니다. 마스터 암호 및 마지막 패스 다른 암호를 생성합니다. 마스터 비밀번호를 생성하는 방법은 다음과 같습니다.

echo -n "some seed" |  openssl dgst -binary -sha1 | base64 | sed -e 's/.\{4\}/& /g'

및 출력

H1sI Wpbj JE2P CdVJ A1qb 9B/e u7M= 

이제 섹션 몇 개를 선택하고 암호를 만들고, 재정렬하고, 일부를 생략하고, 문자를 추가하거나, 2 개를 추가하여 무작위로 만듭니다. 시드를 기억할 수있는 한이를 다시 생성하고 비밀번호를 복구 할 수 있습니다 (너무 많이 수정하지 않는 한).

2
xenoterracide

다음은 XKCD-style 암호를 생성하는 일회성 스크립트입니다. /usr/share/dict/words는 대부분의 단어가 길기 때문에 좋은 사전이 아니지만 쉽게 구할 수 있습니다. 더 좋은 암호를 얻으려면 S/Key 일회용 암호 단어 목록 과 같은 짧은 단어 사전을 사용할 수 있습니다.

dict="/usr/share/dict/words"
max="`wc -l <"$dict"`" \
    Perl -e '$count=4;
        $/=\4; while (<>) {
            print unpack('L') % $ENV{max} + 1, qq(\n); last unless --$count
        }' /dev/urandom | 
    while read n ; do 
        tail -n "+$n" "$dict" | head -1
    done
1
Jander

pwgen은 복잡도, 생성 할 암호의 문자 클래스 수, 길이 등을 설정하기위한 여러 매개 변수를 지정할 수있는 멋진 작은 CLI 도구입니다.

1
slashdot

내가 틀렸다면 정정하되, 내가 이해하는 한, 컴퓨터가 완전히 임의의 문자열을 내놓을 수있는 방법은 아니 입니다. 그래서 저는 다음과 같은 아이디어를 생각해 냈습니다. [완전히 멍청하지 않기를 바랍니다] :

26면 주사위를 던지면 던질 기회, 즉 26은 1:26입니다. 즉, 26을 던질 확률은 약 0.04 %입니다. 또한 주사위에는 메모리가없고 버그도 없습니다. 나는 다음과 같은 아이디어를 생각 해냈다.

  • 각면이 알파벳 문자와 일치하는 26면 주사위를 얻습니다.
  • 각면이 0에서 9 사이의 숫자와 일치하는 10면 주사위를 얻습니다.
  • 동전을 뒤집어 라
  • 머리 의미 : 편지 주사위 던지기
  • 꼬리는 숫자 주사위 던지기를 의미합니다.

인쇄 할 종이 모델 :

참고 : 저는 수학 전문가가 아니며 2600 매거진에서 이것을 설명하는 기사를 읽은 후이 아이디어를 생각해 냈습니다. 기본 개념에 대한 내 아이디어를 추가했습니다.

또한 : 이것이 '첫 번째 무차별 암호 대입 암호 크래커를 작성하십시오'에 대한 완벽한 예가 아닌지 궁금합니다. . 그러나 귀하의 질문은 저에게이 아이디어를 논의 할 완벽한 이유를주었습니다.

0
erch

강력한 암호를 만들기 위해 .zshrc.local 파일에 두 개의 별칭을 추가했습니다.

첫 번째는 다음과 같습니다.

alias pw.graph="cat /dev/urandom | tr -dc '[:graph:]' | fold -w 1000 | Perl -pe 's/(.)(?=.*?\1)//g' | head -n 5"

Pw.graph 입력의 출력은 스페이스 바를 제외하고 키보드에서 입력 할 수있는 모든 문자의 5 줄입니다.

/d=|&mRq!g$QaNZ'L;CfEli,D3\)*h-jkerzv?{y"_Ic(0BtxJwF59:@G}KV1X2o>S~[#]s+W%A.<6bpTO^uP7U4HMYn`8
RIdW87{a4O3][?&rTn=m/:Y`_u*hqy2c%[email protected]!ZPM$5to1f-.U9ClK,)'jDi0"pw>EzN^|gX~BSAJk\VFG(H<bx}+Q6#vL;e
s^[email protected]/X$|d?_jw7-n'l>m"Cb\W5.tTe0APB1D!#69[p+(8x}F&~RM`q3Q%vhfOiUZz]ucJk:)*agGV;=NY4{,K2SLrI<
$/t|!s}og5u:X~hcJUyYHf>;l<zDedL`.T*K8]CBSW[(xw+Mm^E3r16b-97%'@jVR{ZG#0p4AP=,I?\n&"a)vqNkQ2iO_F
,7n|^Y\%MpeBqvhI3mE<9zPS/~+sU`4ZoCWl&uxd'ft"kjcOy0X!{a-T_6RKiVg5Hb21D)w>@*N8;A[(rLG=$Q:.#]FJ?}

두 번째는 다음과 같습니다.

alias pw.alnum="cat /dev/urandom | tr -dc '[:alnum:]' | fold -w 1000 | Perl -pe 's/(.)(?=.*?\1)//g' | head -n 5"

Pw.alnum을 입력하면 출력되는 모든 문자와 숫자는 대문자와 소문자입니다.

E6wgCfVBbXjyzYQ8USKl79LqPih0e5mvGrNHd3osaW2OxkJ1RM4nFTtcuZIpDA
GTvQON1dsZSpJmegBMK6bqnEciU7k0AoV2H4Wh53zr9YRfLlDxywXItu8CjPFa
6u1Db9MfyBApZdU7gqoV2PGwH5LcxWi3JNj8nkQCIThezSlYEXsOtrmF04KvaR
VFrsGwI9yAmabEnlRTKgZO23vUq4f6LHkzQP7tMjNW8ph1exuDoBCXSd50JciY
G3r6Em5tlfjQARJx9gWHes7bCVwkzcP48KaSIXyUFBMLqT0op1uDNdih2nYZOv

나는 일반적으로 pw.graph를 사용하고 라인의 임의의 부분을 복사합니다. 일부 암호는 기호를 허용하지 않으므로 pw.alnum의 일부를 사용합니다.

0
J363

.html 파일로 저장된 이것을 사용합니다.

<script>
var keylist="[email protected]#$%^&*_"
var temp=''

function generatepass(plength){
temp=''
for (i=0;i<plength;i++)
temp+=keylist.charAt(Math.floor(Math.random()*keylist.length))
return temp
}

function populateform(enterlength){
document.pgenerate.output.value=generatepass(enterlength)
}
</script>

<form name="pgenerate">
<input type="text" size=32 name="output">
<input type="button" value="Generate Password" onClick="populateform(this.form.thelength.value)"><br />
<b>Password Length:</b> <input type="text" name="thelength" size=3 value="32">
</form>
0
Michael Prokopec

그놈 사용자이고 다양한 계정에 대한 암호를 저장해야하는 경우 Revelation 암호 관리자를 사용해 볼 수 있습니다. 암호 길이 만 설정하고 문자와 숫자 외에 구두점 문자를 포함할지 여부를 선택하는 기본 암호 생성기 기능이 있습니다.

0
Francesco Turco