どのようにパスワードを生成しますか?
- ランダムなキャラクター?
- パスフレーズ?
- High Ascii?
このようなもの?
cat /dev/urandom | strings
どのようにパスワードを生成しますか?
このようなもの?
cat /dev/urandom | strings
Mac OS X の「キーチェーン アクセス」アプリケーションを使用すると、優れた OS X パスワード ジェネレータにアクセスできます。command-N を押して、鍵のアイコンをクリックします。パスワードのスタイル (覚えやすい、数字、英数字、ランダム、FIPS-181) を選択し、長さを選択できます。また、脆弱なパスワードについても警告します。
これを使用して、強打します:)
cat /dev/urandom | tr -dc 'a-zA-Z0-9-!@#$%^&*()_+~' | fold -w 10 | head -n 1
人数を変更して、パスワードの数を生成します。
もともとpythonクックブックからパスワードを生成するための短いpythonスクリプト。
#!/usr/bin/env python
from random import choice
import getopt
import string
import sys
def GenPasswd():
chars = string.letters + string.digits
for i in range(8):
newpasswd = newpasswd + choice(chars)
return newpasswd
def GenPasswd2(length=8, chars=string.letters + string.digits):
return ''.join([choice(chars) for i in range(length)])
class Options(object):
pass
def main(argv):
(optionList,args) = getopt.getopt(argv[1:],"r:l:",["repeat=","length="])
options = Options()
options.repeat = 1
options.length = 8
for (key,value) in optionList:
if key == "-r" or key == "--repeat":
options.repeat = int(value)
elif key == "-l" or key == "--length":
options.length = int(value)
for i in xrange(options.repeat):
print GenPasswd2(options.length)
if __name__ == "__main__":
sys.exit(main(sys.argv))
オープンソースのKeepassツールには、強化されたランダム化など、パスワード生成のための優れた機能がいくつかあります。
私はパスワードセーフを使用してすべてのパスワードを生成および保存します。これにより、非常に強力なパスワードを覚えておく必要がなくなります(金庫のロックを解除するパスワードを除く)。
あなたの提案のわずかなバリエーション:
head -c 32 /dev/random | base64
必要に応じて、末尾をトリミングして改行を取得するために=
使用できます。echo
echo $(head -c 32 /dev/random | base64 | head -c 32)
これにより、印刷可能な文字のみを確保しながら、より予測可能な出力長のパスワードが得られます。
apgのアルゴリズムはかなりクールです。しかし、私は主に自分で定義したリストからランダムな文字を使用します。それは主に数字、大文字と小文字、そしていくつかの句読点です。「1」、「l」、「I」、「O」、「0」などの別の文字と間違えられがちな文字を削除しました。
ランダムな文字のパスワードは好きではありません。それらは覚えるのが難しいです。
通常、私のパスワードは、その情報が私にとってどれほど重要であるかに基づいて階層に分類されます。
私の最も安全なパスワードは、私が若すぎて愚かで、変更して記憶する方法を知ることができない、古いBBSランダム生成パスワードの組み合わせを使用する傾向があります。シフトキーを自由に使用して、それらのいくつかを追加するとうまくいきます。それらを使用しない場合は、パスフレーズの方が適しています。おそらく、私が楽しんでいる本のフレーズですが、ここでも、大文字と小文字が混在し、特別な記号が付いています。多くの場合、複数のフレーズ、または1つのフレーズからの複数の単語を、別のフレーズからのいくつかと連結して使用します。
優先度の低いサイトでは、私のパスワードはかなり短く、一般的にはいくつかの使い慣れたトークンの組み合わせです。
私が最大の問題を抱えているのは仕事です。30日ごとにパスワードを変更する必要があり、パスワードを繰り返すことができません。私は他のみんなと同じように、パスワードを考え出し、最後に増え続けるインデックスを追加します。そのようなパスワード規則はばかげています。
Webサイトでは、ハッシュ関数(MD5に基づく)を使用して、マスターパスワードとドメイン名からサイト固有のパスワードを取得するSuperGenPassを使用します。そのパスワードをどこにでも保存する必要はありません(SuperGenPass自体はブックマークレットであり、完全にクライアント側です)。マスターパスワードを覚えておいてください。
パスワードを何に使用するか、およびデータの機密性に大きく依存すると思います。クライアント用にある程度安全なパスワードを生成する必要がある場合は、通常、覚えやすい文を使用し、各単語の最初の文字を使用して数字を追加します。'stackoverflow で使用する極秘パスワード' => 'tspfuos8' のようなもの。
ただし、ほとんどの場合、Linux の「pwgen」ユーティリティを使用してパスワードを作成します。複雑さと長さを指定できるため、非常に柔軟です。
pwgen と呼ばれる標準の UNIX ユーティリティ。ほぼすべての UNIX ディストリビューションで利用できます。
私はKeePassを使用して複雑なパスワードを生成しています。
https://www.grc.com/passwords.htmを使用して、WPAキーなどの長いパスワード文字列を生成します。ある種の登録サイトを実装する必要がある場合は、これを(スクリーンスクレイピングを介して)使用して、認証パスワードハッシュ用のソルトを作成することもできます。
状況によっては、PerlのCrypt :: PassGenモジュールを使用します。このモジュールは、単語のコーパスでマルコフ連鎖分析を使用します(たとえば、合理的なUnixシステムでは/ usr / share / dict / words)。これにより、適度に発音可能で覚えやすいパスワードを生成できます。
とはいえ、$ workでは、ハードウェアチャレンジ/レスポンストークンメカニズムに移行しています。
強力なマスター パスワードを好きなように選択し、各サイトのパスワードを cryptohash(masterpassword+sitename) で生成します。サイト B のパスワードが悪用されても (悪意のある管理者、WLAN スニッフィング、サイト侵害などにより)、サイト A のパスワードを失うことはありませんが、覚えておく必要があるパスワードは 1 つだけです。
最近、パスワードを生成するための珍しい方法を使用しました。それらは非常に強力である必要はなく、ランダムなパスワードは覚えるのが非常に困難です。私のアプリケーションには、北米の都市の巨大なテーブルがありました。パスワードを生成するために、乱数を生成し、ランドンシティを取得して、別の乱数を追加しました。
boston9934
数字の長さはランダムであるため(追加、追加、またはその両方の場合のように)、ブルートフォース攻撃は簡単ではありませんでした。
JoelSpolskyが短い記事を書きました:パスワード管理がついに可能になりました
…ついに、すべてのパスワードを管理するための良い方法があります。このシステムは、定期的に使用するコンピューターの数に関係なく機能します。Mac、Windows、およびLinuxで動作します。安全です。パスワードはインターネットサイトに公開されません(信頼できるかどうかは関係ありません)。サイトごとに安全性の高いランダムなパスワードを生成します。すべての設定が完了すると、かなり使いやすく、パスワードファイルのオンラインバックアップがオンラインで維持され、無料で利用できます。
彼は、 DropBoxとPasswordSafeまたはPasswordGorillaの使用を推奨しています。
ええと、私のテクニックは、好きな曲の単語の最初の文字を使用することです。例が必要です: 毎晩夢の中で、あなたに会い、あなたを感じます...
ください:
enimdisyify
...そして、i=1、o=0 などの数字を少し挿入します...
en1md1sy1fy
...大文字?常に自分自身を大切にしてください:)
そして最後のパスワードは…
en1Md1sy1fy
ほとんどの場合、dd if=/dev/urandom bs=6 count=1 | mimencode
結果をパスワードセーフに入力して保存します。
ここでいくつかの優れた回答を読んで試してみましたが、微調整が簡単で、非常に一般的な Linux ユーティリティとリソースを使用できる生成手法をまだ探していました。
答えはとても気に入りましたgpg --gen-random
が、少しぎこちなく感じましたか?
さらに検索した後、この宝石を見つけました
echo $(</dev/urandom tr -dc A-Za-z0-9 | head -c8)
パスワード:
$ gpg --gen-random 1 20 | gpg --enarmor | sed -n 5p
パスフレーズ:
import random
length = 12
charset = "abcdefghijklmnopqrstuvwxyz0123456789"
password = ""
for i in range(0, length):
token += random.choice(charset)
print password
MacではRPGを使用しています。
PHPでは、ASCIIテーブルからランダムな文字列を生成します。(疑似)ランダム英数字文字列の生成を参照してください。
私は外国語の文のイニシャルから始め、それらのいくつかを大文字にするためのいくつかの慣習があります。次に、文の特定の部分に、アプリケーションまたはWebサイトの名前から派生した数字と記号の組み合わせを挿入します。
このスキームは、アプリケーションごとに一意のパスワードを生成します。このパスワードは、頭の中で毎回問題なく(つまり、暗記することなく)再導出でき、辞書に表示される可能性はありません。
パスワードを作成するシステムでパスワードが受け入れられるかどうかを確認するには、追加のルールをコーディングする必要があります。一部のシステムには、「2桁以上2つの大文字」などのポリシーがあります。パスワードを1文字ずつ生成するときは、必要に応じて数字/アルファ/大文字のカウントを保持し、パスワードの生成をdo..でラップします。その間、パスワードの生成は(digitCount> 1 && alphaCount> 4 && upperCount)まで繰り返されます。 > 1)、または何でも。
http://www.wohmart.com/ircd/pub/irc_tools/mkpasswd/mkpasswd+vms.c
http://www.obviex.com/Samples/Password.aspx
https://www.uwo.ca/its/network/security/passwd-suite/sample.c
Excelでも! https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-1032050.html
パスワードモンキー、iGoogleウィジェット!
Perl プログラムで印刷可能な ASCII 文字をランダムに生成し、より「安全な」パスワードを生成するのに役立つ追加のルールがある場合は、スクリプトを微調整します。パスワードを付箋に書いておいて、1 日か 2 日後に破棄することもできます。私の指はそれを記憶し、私のパスワードは完全に推測不可能になります.
これは、私が毎日使用するメインのログイン パスワードであり、実際、座って画面のロックを解除するときに 1 日に何度も使用します。これにより、簡単にすばやく覚えることができます。明らかに、他の状況のパスワードは別のメカニズムを使用する必要があります。
Firefox アドオンの Password Hasher は、パスワードを生成するのに非常に優れています: Password Hasher
Web サイトには、アドオンのオンライン代替機能もあります: Online Password Hasher
ウェブサイトの場合、これは登録しているサイトにとって記憶に残る何かと組み合わされた「秘密の」言葉です。
それ以外の場合は、ランダムに生成されたパスワードを使用します。
ユーザーが覚えやすいパスワードを生成したい場合は、マルコフ連鎖を見てください。http://en.wikipedia.org/wiki/Markov_chain
このアルゴリズムは、発音可能な無意味な単語を生成できるため、覚えやすくなり、電話で中継しやすくなります。ちょっとした Google-fu で、ほぼすべての言語のコード サンプルを入手できます。
また、実際の単語として出てくるパスワードを除外するために、優れた辞書を入手する必要があります。
もちろん、これらは強度の高いパスワードではありませんが、基本的なアクセス制御が必要で、覚えにくいパスワードでユーザーに負担をかけたくない場合には非常に適しています。
通常はleetspeakのように見える、かなり覚えにくい記号、数字、大文字と小文字の文字列を手動で生成します。
例:
&p0pul4rw3b$ite!
次に、Web メールを介してどこからでもアクセスできるように、それらを電子メールの下書きとして保存します。
Githubで入手できる、自分で書いた Perl スクリプトをいくつか使用しています。
gen-password
7bp4ssi02d4i
長さと文字セットを指定するオプションを使用して、 のようなパスワードを生成します。(私の銀行が知る限り、それは私の母の旧姓です。)
gen-passphrase
この XKCD 漫画porcine volume smiled insert
に触発された辞書の単語を使用して、 のようなランダムなパスフレーズを生成します。
どちらもデフォルトでランダム データを取得/dev/urandom
しますが、代わりに使用するように指示できます/dev/random
。
パスワードは暗号化されたデータベースに保管しており、複数のサイトで同じパスワードを使用することはありません。私は実際にそれらのほとんどを覚えています。
Crypt::GeneratePasswordモジュールを使用します。
Jeff Atwoodは、パスワードではなくパスフレーズに切り替えることを提案しています。
かなり重要なものについては、「xme7UpOK」のように、文字と数字の組み合わせを使用するのが好きです。これらは、このワンライナーで生成できます。
perl -le 'print map { (a..z,A..Z,0..9)[rand 62] } 1..8'
あまり重要でないものについては、「loskubov」や「gobdafol」など、入力、発音、覚えやすいパスワードを使用するのが好きです。これらは次のように生成できます。
perl -le '@l=("aeiou", "bdfgjklmnprstv");
print map {(split "",$l[$_])[rand length $l[$_]]} split "", "10110101"'
ここで、「10110101」は母音と子音のパターンです。
makepasswdは、Linux の /dev/random 機能を使用して真のランダム パスワードを生成し、発音可能性よりもセキュリティを重視します。また、コマンド ラインで指定された平文のパスワードを暗号化することもできます。
最も注目すべきオプションは
--crypt-md5 MD5 ダイジェスト アルゴリズムを使用して暗号化されたパスワードを生成します --string STRING STRING 内の文字を使用してランダムなパスワードを生成します
前者は、/etc/passwd、/etc/cvspasswd などのエントリを自動的に生成するために使用できます。後者は、パスワードに句読点を追加するのに便利です (デフォルトでは、生成されたパスワードには英数字のみが含まれます)。
makepasswd はもともと、Linux Internet Support Cooperative IRC ネットワークを集中管理するために使用される mkircconf プログラムの一部でした。
私は通常、パスワードセーフを使用してランダムなパスワードを生成します。パスワードセーフなしで実際に覚えておきたいパスワードの場合、通常、単語と数字を取り、文字をインターリーブします
だからあなたは言葉を取ります。
野球
と数字
24681357
そして、あなたはパスワードを取得します
b2a4s6e8b1a3l5l7
それはかなりランダムに見え、おそらく力ずくで攻撃するのは難しいでしょう. また、ほとんどの場合、入力するのは非常に簡単です。単語を入力し、カーソルを 2 番目の文字に戻し、数字を入力し、各文字の間に右カーソル キーを押します。これにより、入力が簡単になるだけでなく、キーロガーが実際に入力しているものを記録することも難しくなります.
$ echo `cat /etc/dictionaries-common/words | sort --random-sort | head -n 4`
consented upsurges whitewall balderdash
非常に非効率的ですが、機能します。
この Perl ワンライナーは時々役立ちます (rand
安全ではありませんが、多くの場合問題にはなりません):
$ perl -E"say map { chr(33 + rand(126-33)) } 1..31
出力例:
ET<2:k|D:!z)nBPMv+yitM8x`r.(WwO
からシーケンスを選択します
md5 random_file
<?php
print md5(rand(0, 99999));
?>