問題タブ [rainbowtable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - レインボーテーブルなしでハッシュを逆にする方法はありますか?
重複の可能性:
md5 デコード。彼らはどのようにそれをしますか?
このページでは、md5() や sha1() などのハッシュ アルゴリズムは、現在の処理能力が非常に高いため、逆にすることができることを示唆しています。この時点で、Rainbow Tables でのみ可能だと思いました。私は間違っていましたか?
レインボーテーブルが唯一の方法である場合、ソルトで作成されたハッシュを元に戻すにはどうすればよいでしょうか?
salt - ソルティングは、パスワード ハッシュにアクセスする攻撃者からどのように保護しますか?
パスワードのソルティングに関するかなりの数の質問を読みましたが、ほとんどの場合、(私が思うに) 私が既に理解していることをカバーしています。あれは; パスワード ハッシュにランダムなソルトを含めるポイントは、まず、パスワードが同じ場合でも 2 つのハッシュが同じになるのを防ぐことです。次に、プリコンパイル済みリストに対してハッシュを照合するレインボー テーブル攻撃を阻止します (プリコンパイル済みハッシュのいずれも、使用したソルトを使用していないため、ソルト/ハッシュごとに新しいレインボー テーブルを生成する必要があります)。誤解している場合は、お気軽に修正してください。
私の質問: 攻撃者があなたのハッシュにアクセスできる場合 (私たちが保護しているシナリオ)、それは彼らがあなたのデータベースにアクセスしていることを意味します. その場合、ハッシュが何であるかは問題ではなく、必要なものに置き換えることができますか?
passwords - レインボーテーブルはどのくらいの長さのパスワードを使用しますか?
私の銀行はパスワードを14文字に制限しており、無塩のMD5またはSHAハッシュで暗号化されていると思われます。
14文字までのすべての可能なハッシュを含むレインボーテーブルはありますか?
cryptography - なぜ塩はレインボーテーブルを止めるのですか?
あなたがそれを言う前に、私はすでにこの質問を読みました。私はフォローしませんでした。
これがソルト/レインボーテーブルについての私の理解です。私が間違っているところを訂正してください。
ユーザーはrawを入力し
password
ます。password
またはsalt
を与えるために連結されます。passwordsalt
saltpassword
passwordsalt
/saltpassword
は値にハッシュされますhash
。ハッカーを入力してください。
ハッカーはレインボーテーブルを使用して/に反転
hash
します。passwordsalt
saltpassword
ハッカーは(例)文字列を手にしています
letmein1horse
。
とするとletmein1horse
、これは単に2つのオプションがあることを意味するのではありません。
パスワードは
letmein1
で、ソルトはhorse
です。パスワードは
horse
で、ソルトはletmein1
です。
だからあなたは私が混乱している理由がわかります。私の理解には明らかに欠陥があります。なぜなら、これがこのように機能した場合、明らかに塩は役に立たないからです。
または:私の理解は正しいですか、そしてこの明らかな弱点を完全に元に戻すのは反復スキーム全体ですか?
java - レインボーテーブル - ハッシュリダクション - Java
レインボー テーブル ハッシュを Java で実装するための適切なリダクション関数についてアドバイスをいただけますか? 私が C++ で見たリダクション関数は、Java が現在ネイティブで使用できない符号なし 64 ビット整数をほとんど使用していたため、別の解決策を見つけたいと考えています。(Java 8 で利用できるはずです。)
あるいは、レインボーテーブルの使用(およびおそらく作成)をサポートする(少なくとも非効率的ではない)Javaのライブラリを誰かが知っている場合は、教えてください。それを自分で実装しないのは素晴らしいことです。
悲しいことに、私はプラットフォームとして Java に縛られているので、市場に出回っている優れた C++ 実装を使用することはできません。
c# - パスワード パディングによる「レインボー テーブル」リバース エンジニアリングに対するパスワード ハッシュ保護
いわゆる「レインボーテーブル」を使用したリバースエンジニアリングの対象となる可能性がある、「ソルト化されていない」パスワードハッシュをデータベースに保存することの危険性について説明しているこの記事に出くわしました。
また、この C# コード サンプルも付属しています。このC# コード サンプルでは、ユーザー パスワード データベース テーブルに 2 つのハッシュ列を格納する必要があります (従来の 1 つではなく)。ハッシュ、および新しい列を追加するには、データベースの再構築が必要になります。そのため、それを行う前に、別の代替案を探していましたが、ここに思いつきました。
パスワードの SHA1 ハッシュを単純に計算する代わりに、疑似乱数 (ただし一貫性のある) データの長いシーケンスをパディングしてからハッシュを計算する関数を次に示します。
だから私の質問は、誰かがこのコードを見直して、この方法でそれを行うことの危険性と、作者が彼のコードで提案したことの危険性を教えてもらえますか? 私のコード サンプルの場合、データベースには 2 つのハッシュ (パスワード ハッシュ + ソルト ハッシュ) ではなく 1 つのハッシュのみを格納する必要があります。
php - PHPでハッシュコンバーターの入力をサニタイズするにはどうすればよいですか?
ユーザーがプレーンテキストを入力してハッシュを生成する Web サイトを作成しました。ユーザーは単語/フレーズを入力して、MD5 または SHA1 (またはその両方) から選択できます。次に、サイトはこの入力を受け取り、MD5 と SHA1 に変換してデータベースに保存し、ユーザーに返します。ユーザーは検索バーにハッシュを入力することもできます。データベースにハッシュがある場合、元の単語が返されます。目的は、ユーザーに利益を提供しながら、クラウドソースのハッシュ テーブルを生成することです。主な機能は動作していますが、何をサニタイズする必要があるかについてジレンマがあります。検索機能が結果を返す可能性が向上するため、ユーザーが特殊文字を入力できるようにしたいと考えています。アドバイスをいただければ幸いです。ありがとうございます。
python-2.7 - Python ルックアップによるレインボー アタックが失敗します。
与えられた課題にいくつか問題があります。要点は、「カーフォップ」に虹の攻撃をしなければならないということです。ジェネレーター テーブルを使用すると、RainbowAttack.py
スクリプトは次のようになります。
- キーは車にブロードキャストします (この場合は敵対者)
- カー/イブはチャレンジで応答し
u
ます。 - キーは、
MD5(s||u)
. - Eve は、Rainbow テーブルを使用して
s
.
MD5 を使用して、応答とキーをハッシュします。次に、ハッシュでリダクション関数を使用し、最初の 28 ビットを取得します。
f_i(x) = (f(x)+i) mod 2^28.
私のハッシュと削減関数
とにかく、スクリプトを実行すると、すべてのサクセサーを計算し、それらをレインボーテーブルのエンドポイントと比較します。一致が見つかった場合は、コリジョンの開始ポイントを取得し、キーがチェーンにあるかどうかを確認します始点から終点まで、ここにあるキーの 1 つが fop から得た応答と同じであれば、前のキーが車のドアを開けるための秘密であることがわかります。
現時点では、レインボー テーブルの開始位置または終了位置にあるキーのみを実際に見つけることができ、チェーン内にある場合は見つかりません。次のループのコードは、successors をチェックし、successor のいずれかがレインボーテーブルにあるかどうかをチェックし、もしそうなら、カー fop からの応答がそこにあるかどうかをチェックします。
リダクション関数はキーで使用されるものとは異なるため、後継者を計算するときに発生する問題である可能性があります(チェーン内のすべてのキーに対してリダクション関数がわずかに異なるようにインクリメントします)。
レインボー テーブルとファイルはこちら (github)にあります。
(derp.py(レインボーアタック)とtable1.csv(名前をtable.csvに変更))
python - TypeError: int ではなく、string または buffer でなければなりません
私はRainbow Tables
パスワード暗号化の問題を解決しようとしていますが、ここまでしか来ていません。
このエラーが発生しています:
私は非常に些細なことを見逃していることを知っていますが、どこに行方不明なのかわかりません。助けてください。
encryption - レインボー テーブル分析で、md5 値から単純な平文パスワードを抽出できますか?
ハッシュ値 (例: md5 値) は、'^&#%we242eweqweqweqwedfdfdfee2'、'%$#%3423efffe435%%^#' のような複数の値と接続できることを知っています。
しかし、ほとんどのユーザーは実際には非常に単純なパスワードを使用しているため、これらの md5 値は限られた単純な cleartxt パスワードとのみ関係を持つことができますか?
つまり、「cfcd208495d565ef66e7dff9f98764da」が「0」、「tom123」、「goodcar」などの 30 個の単純な値に関連付けられている場合、データベースから md5 データを取得したハッカーは、ユーザー名とクリアテキスト パスワードの関係を簡単に突き止めることができます。 、そしてこの値のペアを使用して、他の Web サイトで同じアカウントをハッキングする可能性があります。
では、指定された md5 値は、限られた単純な値に対してのみ責任がありますか?
PS: ソルトを追加したり、sha512、sha3 などのより良い方法を使用したりできることはわかっていますが、上記の質問について非常に興味があります。