web-dev-qa-db-ja.com

実際の単語を組み合わせたパスワードジェネレータ

私はこのxkcdウェブコミックに触発されました:

トピックについてもここで説明します: https://www.ted.com/talks/lorrie_faith_cranor_what_s_wrong_with_your_pa_w0rd

今、私は疑問に思う:
4つのランダムな辞書ワードwithoutからパスワードを作成する方法インターネット?

5
dessert

コンピューターの側面

多くの場合ビット単位で測定される、十分なランダムエイリアスエントロピーを提供するメソッドを使用します。

ランダムプロセスから最初に提示された選択肢を受け入れます。そうしないと、エントロピーが低下し(多くの場合、予想よりも多くなります)、セキュリティレベルが低下します。

人間の側面

人間の側面を考慮すると、できることが重要です

  • 受け入れる

  • 覚えている

  • スペル

パスワード/パスフレーズの単語。

ランダム性、エントロピーを保持するには、最初に提示された選択肢を受け入れることが非常に重要であり、Wordリストが違いを生むことができます。

大きなWordリストを使用すると、Wordごとにエントロピーが増えますが、ITセキュリティを管理しているあなたまたはグループのユーザーが、最初に提供されたパスワード/パスフレーズの使用を拒否する可能性があります。非常にまれなケースでは、名前、市、またはその他の個人データがWordリストから選択される場合がありますが、多くの場合、政治的、民族的、宗教的、性的または一般的に失礼なWordに腹を立てることがあります。もちろん、あなたがそのような単語が好きなら、あなたはあなた自身の単語リストにそれらを加えることができます;-)他の人にそれらを強制しないでください。

この特定の目的のために選択されている最も一般的な単語のリストを使用すると、パスワード/パスフレーズの受け入れ、覚え、綴りが簡単になります。

自分でWordリストを作成する

このようなリストは自分で作成できます(また、自分の言語で作成し、一部のソフトウェアで問題を引き起こす可能性があるため、特殊文字を含む単語を削除します)。

次のシェルスクリプトprunerが役立つ場合があります。入力しやすい小文字(特殊文字が削除されます)と、間隔[4,10]文字(短すぎず、長すぎない)の単語のみを取得します。ただし、これらのファイルを受け入れるのが簡単であるかどうかによるソートはありません。珍しい、難しい、潜在的に不快な言葉を削除するには、他の情報が必要です。または、手動で行うこともできます。

#!/bin/bash

LANG=C

for wordlist in \
$(find /usr/share/dict/ /usr/lib/python3/dist-packages/xkcdpass/static -type f -size +10k) \
$(ls -1 Word-list.txt 2> /dev/null)
do
# prunedlist="${wordlist##*/}"
 prunedlist="${wordlist//\//_}"
 prunedlist="${prunedlist/.txt}-pruned.txt"

 echo "source:  $wordlist"
 echo -n "Total number of words in list:              "
 < "$wordlist" wc -l

 echo "target:  $prunedlist" 
 echo -n "Used lower case words ( 4 < length < 10 ):  "

 < "$wordlist"  tr -d '\015'| \
 grep '^[a-z]\{4,10\}$' | \
 tee "$prunedlist" | \
 wc -l
 echo "-------"
done

シェルスクリプトは、デフォルトのWordリスト、およびインストールされている場合はxkcdpassおよびcracklibのWordリストも検索します。

shufコマンドラインを実行して、プルーニングされたWordリストをテストできます。

$ for i in *pruned*; do echo "$i:";shuf -n4 "$i"| awk NF=NF RS= OFS=' ';echo "-----";done

しかし、私はxkcdpassを好むでしょう。

単語リストをダウンロードする

このようなリストをダウンロードできます(一意の単語で構成され、少なくとも2048単語= 2 ^ 11単語で、11ビットのエントロピーに対応する十分な長さであることを確認してください)。

このようなファイルをインターネットからダウンロード、確認、使用することは安全です。通常、信頼できるWebサイトのみを使用する必要があります。

セキュリティにとって重要なことは、単語そのものではなく、ランダムプロセス(サイコロなど)または優れた擬似ランダムコンピュータプロセス単語を選択です。パスワードを手動で選択または変更して、ランダムプロセスを改ざんしないでください。

これで buntuヘルプwikiページ:XKCDメソッド-xkcdpass を見つけることができます

カスタムWordリスト-'Word-list.txt'

Xkcdpassを使用した便利なコマンドライン

特定のケースで必要なセキュリティレベルに最適なものを決定し、

  • 奇妙で複雑な単語の数が少ない
  • 一般的で簡単な単語の数が多い

人(および組織のポリシーまたはカスタムツールの設定方法を検討している場合は、人のグループ)によって異なる場合があります。

xkcdpassにランダムさのエイリアスエントロピーを計算させることができます冗長オプション-Vを追加することにより、ビット単位で。これらの例では、UbuntuヘルプページWord-list.txtのデフォルトのWordリストとカスタムWordリストを使用しています。

xkcdpass -V -n 3
xkcdpass -V -n 4 --min 4 --max 10 -d . -w Word-list.txt

デフォルトのWordファイルを使用:奇妙で複雑な単語の数を減らす

# Normal security level at home, entropy = 45 bits;

$ xkcdpass -n 3
demeanour basely extrude

# Next security level, entropy = 60 bits:

$ xkcdpass -n 4
metal cottager advocacy soursop

# High security level, entropy = 76 bits:

$ xkcdpass -n 5
hostile impounder Caledonia ramie Goddard

# Very high security level, entropy = 91 bits:

$ xkcdpass
ambrosia Cossack vivify Barbudan royal Campinas

これがデフォルト設定であることに注意してください。ただし、セキュリティレベルが非常に高いのは、ユーザーが

  • 提供された最初のパスワード/パスフレーズを受け入れることができます、
  • モニター/ラップトップ(またはその他の「ショートカット」)にポストイットステッカーがなくても記憶できます。
  • モニター/ラップトップ(または他の「ショートカット」)にポストイットステッカーなしで綴ることができます。

カスタムWordファイルの使用:一般的で簡単なより多くの単語

# Normal security level at home, entropy = 47 bits:

$ xkcdpass -n 4 --min 4 --max 10 -d . -w Word-list.txt
sharp.hockey.steal.backyard

# Next security level, entropy = 59 bits:

$ xkcdpass -n 5 --min 4 --max 10 -d . -w Word-list.txt
initially.assistant.barely.framework.regional

# Next security level, entropy = 71 bits:

$ xkcdpass -n 6 --min 4 --max 10 -d . -w Word-list.txt
snake.food.dress.perception.club.waste

# High security level, entropy = 83 bits:

$ xkcdpass -n 7 --min 4 --max 10 -d . -w Word-list.txt
stand.mentor.know.cream.automatic.treatment.effect
4
sudodus

ローカルにインストールされた辞書は、/usr/share/dict/に保存されます。次に例を示します。

$ ls -1 /usr/share/dict/
american-english
british-english                                                                                                          
cracklib-small                                                                                                             
README.select-wordlist                                                                                                  
words                                                                                                                    
words.pre-dictionaries-common

ここで、最初の2つは興味深いものです。これらの辞書は、1行に1ワードの単純なWordリストです。 shufを使用して、そのうちの1つから4ランダムな行を出力できます(そして、awkを使用して改行をスペースに置き換えます)。

shuf -n4 /usr/share/dict/american-english | awk NF=NF RS= OFS=' '

出力例を次に示します。

contributions autumn's catalepsy's hemline's
footlights Levi's awfuller rascals
fogies flavoring preregistering requital's
Coleman's cartel halfpennies Williamson
étude's maintainers reviler's dapperest
pizazz Galahads McDowell derby
corroborate bureaucracies anchovy meager
filet Tawney feudalistic backstabbing
Beatriz sitcom surpasses guttural's
warehouse's unfamiliarity's Ashlee's sanguinary
5
dessert

おそらく、XKCDパスワードジェネレーターの実装は数多くあります。

  • xkcdpassxkcdpassパッケージから入手可能、Python(CSPRNGを使用していないようです)

    $ xkcdpass
    baroque viand blindfold hooch notion ravening
    $ xkcdpass -n4
    useless elated liveable overfly
    
  • xkcd-password 、NodeJSモジュール
  • 数十のウェブサイト
  • diceware 、同様のプロセスに従いますが、ウェブサイトを使用します
  • ...

あなたの毒を選んでください。

参照:

3
muru

これをしないでください。

  • おそらく、一部のツールは文字を使用してパスワードのみを推測しますが、複数の一般的な単語をまだ推測していない場合はすぐに推測します。
  • パスワードを覚えているのであれば、ほぼ間違いなく、さまざまなサイトでそれらを再利用しています(おそらくバリエーションを使用しています)。インターネット上に30個のアカウントがある場合、毎年少なくとも1つのパスワードが危険にさらされているに違いありません。あるサイトのパスワードを知っている人が、他のアカウントのバリエーションを使ってパスワードを試してみます。したがって、horseBatteryStapleLinkedInパスワードを使用すると、GmailのパスワードがhorseBatteryStapleGoogle、horseBatteryStapleGmail、horseBatteryStapleLiamg(Gmailの逆スペル)であると推測できます。あなたがそれを考えることができれば、他の誰かもできます。

私はそれが苦痛であることを知っていますが、代わりにパスワードマネージャーを使用してください。すべてのサイトに対して一意のランダムなパスワードを生成します。私のように妄想している場合は、ジェネレータの(擬似)ランダムアルゴリズムが危険にさらされた場合に備えて、提案されたパスワードのいくつかの文字を変更できます。 DropBoxにデータベースをバックアップしたKeePassXが好きですが、LastPassは一部の人にとって使いやすいです。多くの有料パスワードマネージャーもあります。

良いニュース

人間の脳は、秩序がなくても強要できます。カオスの秩序を認識するまで、それらを見つめることでランダムなキャラクターを覚えることができます。順序はありません。これはまさにあなたの脳がすることです。例えば:

bJbRpZ2S9

あなたにとって何かを意味します。十分な回数入力すると、次のようなものが思い浮かびます。

black Jack beyond Re post Zaps 2 Surly 9's

そのようにして、最終的に2つまたは3つのマスターパスワードを覚えることができます。 1つはOS用、もう1つはパスワードマネージャー用です。必要なのはそれだけです。

追伸パスワードマネージャーを使用する場合は、パスワードを定期的に印刷して、どこかにある安全な改ざん防止用封筒に入れて、紛失しないようにします。理想的には、セーフティボックスのような何かがあなたに起こった場合、あなたの近親者がそれらを手に入れることができる場所です。

2
GlenPeterson