2009-07-21 17 views
7

これが可能かどうかはわかりませんが、文字列で始めることができるようにしたい場合は、この文字列を取り出すために入力をcryptに入力する必要があります。cのcrypt()を元に戻す方法はありますか?

これは不可能なのでしょうか、とにかくその目的は全然ですか?

はい、私はこれを試しているコードに塩があります。

+0

はいパスワードクラッキングと呼ばれています。http://en.wikipedia.org/wiki/Password_cracking – newacct

答えて

13

設計意図によって、crypt()は片方向ハッシュです。誰もが言ったように、それは、同じハッシュを生成する平文文字列を発見することが計算上実行不可能であるということを意味する。

いくつかの要因がその設計意図に影響します。

  1. 計算はcrypt()が設計したときと比べてたくさん安いです。さらに悪いことに、計算がより安くなった速度は予期されていなかったため、想像していたよりずっと安くなっています。

  2. DESはそれだけではないと考えられていました。しかし、それは当時の知識の公的状態を考えれば、おそらく最良の選択でした。

  3. 計算がまだ自分のクラッキングを行うのに十分安くない場合でも、インターネットであるクラウドはすでにあなたのために多くの作業を行っています。人々は、特定のハッシュを逆転させるのに必要な多くの計算を短時間で行うことを可能にする、Rainbow Tablesを計算し公開している。 (Jeff had a blog post on rainbow tables too。)塩は、虹のテーブルから保護するのに役立ちます(塩の可能な値ごとにテーブルを設定する必要があるため)crypt()の古典的な実装で使用される塩のサイズはわずか12ビットなので、望むかもしれない巨大なブロック。

さらに悪いことには、一定の高値のハッシュ関数(LM hashのような古いLAN ManagerのMicrosoftのパスワードのために発明されたがVistaの前にWindowsのすべてのバージョンでは、短いパスワードに使用)のためのハッシュとそれらの逆のほぼ完全な辞書が存在します。

-1

いいえ..一方向機能です。

1

crypt()は暗号化された値に塩を添加することによって強引に、より困難にされる可逆アルゴリズム(それは一方向関数を使用する)ではありません。

コメントごとに編集されました。

+3

塩はそれを不可逆にしません。 「塩」は、その範囲のサブセットの逆行列を見つけるために、徹底したテーブルルックアップを用いて別個のアルゴリズムを使用することをより困難にするものです。 –

2

いいえ、これは片方向ハッシュ関数の背後にあるアイデアですが、場合によってはgoogleを使用して対応することもできます。

この回答にコメントするには(塩があればGoogleは助けません)私は言う:はい、いいえ。このソルトは解の空間を広げ、完全な辞書の作成は簡単ではありません(各単語に対して、可能な2文字の塩ごとに1つの暗号化されたバージョンを計算して保存する必要があるため)。インターネットが巨大なデータベースであり、Googleのインデックスであると仮定した場合、Googleでは、ウェブ上で暗号化された文字列がどこかに存在するかどうかを検索することができます。塩の存在はあなたがそれを見つけられる可能性を減らしますが、その出来事が存在するほど幸運であり、それも平文と一緒なら、あなたはパスワードを持っています。

this article on slashdotも参照してください。

結論:この塩はウェブ上でその特定の暗号化された文字列を見つけ出す可能性を低くしますが、実際にはGoogleは塩の量に無関心ですし、もしあなたが運が良ければ私が与えた場合)。

+1

塩があればGoogleは助けません。 – Brian

0

ありません、それは、このサイトを見てみることはできませんhttp://www.gnu.org/s/libc/manual/html_node/crypt.html

暗号が塩漬けされている方法(あなたがGNU Cライブラリを使用していると仮定)はあなたが「ISNをやろうとしているものということはかなり保証仕事に行く。

+3

塩は、アルゴリズムが可逆的であるかどうかとは無関係です。この塩は、虹テーブルのルックアップ攻撃から保護するためのものです。 –

0

その機能は一方向であり、世界のすべてのパスワードスキームのバックボーンです。もし誰かが「はい、ここには..」と答えるならば、政府は彼らのコメントをすぐに削除し、家を焼き払い、非公開の場所に追い払わなければならない。

要するに、

+1

nah、彼らは毎日ラップトップで機密データを失う。時代遅れの一方向ハッシュを解読すれば本当に気になると思いますか? ;)もちろん、あなたが最新のブリトニースピアーズDRMをクラックした場合、グアンタナモへの休暇のために荷物を用意してください:) –

+0

crypt()はmd5またはdesベースのアルゴリズムに基づいています(http://www.gnu.org /s/libc/manual/html_node/crypt.html)。 Md5は十分に有効ではないことでよく知られています。また、古いDESアルゴリズムも効果がありません。新しいバージョンがたくさんあります。政府がこの実装をハッシュのバックボーンとして正確に使用するとは思わない特に、DESの責任を負うNSAがSHAベースのアルゴリズムを代わりに作成している)。 –

+2

両方に:アルゴリズムが問題を抱えているわけではないため、Md5はバットフォース攻撃に耐えるのに十分なビットを使用しないため、「古くなった」とみなされます。アルゴリズムを逆にする方法を理解できれば、同じ数学的方法を使用する* crypt(ビットサイズに関係なく)をクラックすることができます。世界中のパスワードと暗号化された通信があなたに公開されます。 –

4

crypt(3)の古い実装の場合は、DESを使用するとほとんど(しかしそれほど強くはない)ことができます。

この方式では、入力は8文字に切り詰められ、各文字は7ビットに切り詰められます。つまり、検索する別々のパスワードの56ビットのスペースがあります。

DESだけでは、$ 10K相当のFPGA(http://en.wikipedia.org/wiki/Data_Encryption_Standard#Brute_force_attack)で約18日で全体のスペースを検索できるので、予想される時間は9日間です。しかし、私はあなたが問題に費やすために1万ドルを持っていないと仮定しています。 DESクラッカーがPCのGPU上でもっともらしい時間内に動作するかどうかは、もう少し分かります。

それでも、crypt(3)には25ラウンドのDESが含まれていますが、塩に基づいたアルゴリズムにわずかな変更が加えられているため、ブルートフォースよりも少なくとも25倍遅くなることが予想されます。

crypt(3)の新しい実装は、古いcrypt(3)が使用していたDESベースのアルゴリズムよりも優れたハッシュアルゴリズムに基づいているため、無理強いです。

もちろん、文字列がランダムでない場合(たとえば、人間によって選択されたパスワードの場合)、ブルートフォースよりもはるかに良い予想時間を得ることができます。

+0

Btw、ちょうどおもちゃのテストを実行し、私のラップトップの1つのコアを使用してキースペースをカバーする私の "最も単純な可能な"暗号クラッカーは約30万年かかります。 gccを使って '-lcrypt'を実行すると、8char x 7bit版の暗号が得られます。だから、それは私によってひどくなることはありませんが、それが誰かによってひどくならないと仮定することは安全ではありません。 –

関連する問題