web-dev-qa-db-ja.com

パスワードとしてのソースコード

文字、数字、特殊文字が混在するパスワードは、覚えにくい場合があります。代わりに、覚えやすい少量のソースコードを「パスフレーズ」として使用することは安全ですか?

例として、Goの単純なforループを見てみましょう:fori:=1;i<5;i++{fmt.Println(i)}

通常の人は不可解な構文しか見ることができませんが、プログラミングの背景を持つ人としては、これは覚えやすいかもしれません。少なくとも通常のパスワードと同じくらい安全ですか?

24
user3147268

ソースコードをパスワードとして使用できます。

しかし、私は強くお勧めしますソースコードをパスフレーズとして使用します。
これの理由はエントロピーです。
パスワード/パスフレーズは多くのエントロピー(100ビット以上)を提供する必要があり、プログラミング言語は通常、命令の定式化に厳しい制約を課すため、標準のパスフレーズを使用した場合よりも、文字ごとのエントロピーが少なくなります。

それとは別に、ソースコードファイル(100行以上)を多数の複雑な命令とともに使用し、マシンでコード化できないキーファイルとして使用できます。

27
SEJPM

ほとんどのパスワード生成アルゴリズムと同様に、これはあいまいさを介してセキュリティに依存しています。

この方法を使用していると誰も疑わない限り、ランダムな有効なソースコードスニペットを試すクラッキングツールは誰も使用せず、strength = possible_characters ^ number_of_charactersのルールは有効なままです。しかし、誰かがあなたがそれを使用しているのではないかと疑うや、それがWebサイトで「非常に良いアイデア」として宣伝し始めたために、それが一般的な方法になるとすぐに、これは変わります。

誰かが仕立てのクラッキングルーチンを書くように強いられたと感じたらすぐに、ソースコードにどれだけのエントロピーがあるかを調べる必要があります。また、「一般的なプログラミング言語での記憶に残る小さなコードスニペット」に限定されている場合、パスフレーズが数十億に達する可能性があり、深刻な総当たり攻撃に耐えるには不十分です。

21
Philipp

誰もがそれを使用したとしても安全を保つ方法を使用するのが最善です。メソッドを秘密にしておく必要がないため、心配する必要が少なくなり、メソッドを調整して最も安全になるように他のユーザーと共同作業できます。

この「敵はシステムを知っている」というアプローチは、情報セキュリティの革新と進歩の大きな原動力です。そうでなければ、あなたはそれぞれが独自の曖昧な、おそらく予想外のデザインと原則に取り組んでいる独立したグループを持っているでしょう。

さらに、システムの安全性を定量化する方法はありません。システムはすべて心理学と他人があなたについて知っていることに依存しているからです。

いくつかの人生の歩みでは、創造的であり、秘密を守らなければならない個人的でユニークな洞察に基づいて戦略を構築する必要がありますが、情報セキュリティはそのようなものではありません。

3
isarandi

一見すると、これは良い考えかもしれません。パスワードに関連する多くの提案と同様に、状況によっては、それでも問題のないソリューションである場合があります。ただし、より詳細に検討すると、多くの不足が明らかになります。

私が誰かのパスワードを解読しようとした場合、私が最初に行うことの1つは、その人について可能な限り多くの情報を見つけることです。あなたがプログラマーであることがわかっている場合は、パスフレーズにコードを使用していると思います。可能な検索スペースを絞り込みました。

好みのプログラミング言語がわかっている場合は、検索スペースをさらに減らしました。私はあなたの好みの言語からの法的フォームを考慮する必要があるだけです。

ここで、優先言語で許可されている法的形式を検討すると、検索スペースがさらに削減されました。パスフレーズに既知の最大文字数制限がある場合、その検索スペースはさらに小さくなります-実際、ほとんどの言語では、多くの場合に許可されている文字数制限に適合する、可能な法的フォームの非常に小さなセットしかありません。パスワード。

他の回答で示されているように、「巧妙な」パスワード/パスフレーズスキームの実際の問題は、他の人があなたのスキームが何であるかを推測できないことに依存していることです。スキームの人気が高まるにつれて、そのスキームの利点は減少します。何よりも、選択するスキームは、簡単には関連付けられないものである必要があります。

巧妙なパスワードスキームのもう1つの問題は、彼らがあなたが思うほど賢いことはほとんどないということです。盗まれたパスワードリポジトリからダンプされたパスワードを分析すると、これらの巧妙なスキームの多くがどれほど「一般的」であるかに驚くでしょう。また、巧妙なスキームがパスワードの元のドメインに関連している頻度に驚くかもしれません。たとえば、私は空軍システムから盗まれたパスワードを見て、パスワードの大部分は、さまざまな航空機の名前とモデル番号、または軍隊または空軍をテーマにした映画や本のキャラクター名のいずれかから派生したものだと思いました。同様に、数年前にキリスト教の出会い系サイトから投棄されたパスワードには、聖書の句、章、詩の番号を含む多数のパスワードがありました。 githubのパスワードを解読しようとすると、コードを可能なパターンと見なすことがほぼ確実です。

コードを使用する小さな利点の1つは、パスワード/パスフレーズが長くなる可能性が高いことです。これは、多くの場合、基礎となる複雑さと同じくらい重要またはより重要です。簡単ですばやく入力できるため、短いパスワードを使用することがよくあります。最近では、ほとんどの人は、可能な限り2要素認証または2ステップ認証を使用し、ランダムなパスワードを生成するパスワードマネージャーを使用して、ほとんどの場合、それらを覚えておく必要がないようにする方がはるかに良いと思います。

2
Tim X