2012-03-19 7 views
3

そのユーザー/攻撃者がデータを暗号化してサーバーに送信したい。今では、標準的なアルゴリズムとは全く反対のアルゴリズムが必要です(高速に使用すること、解読するのが難しい)。つまり、ランダムな攻撃から保護するために、サーバーが送信する鍵を使用してパスワードのようなデータを暗号化するのは非常に困難です。解読するとサーバの消費時間が非常に短くなりますが、攻撃者にとってはサーバごとに鍵を送信して新しい試行パスワードを暗号化するたびに非常に困難になります。コストの高い暗号化ではあるが暗号化のコストがより低い

私は再びSSLについて語っていません。

+0

SSLのような信頼できるチャンネルをお持ちの場合は、パスワードを送信してPBKDF2のようなものを使用して検証するデータを保存してください。他のすべてのシナリオでは、途中の攻撃で人の世話をする必要があり、何らかの種類の信頼システム(PKIなど)がない限り、それに従うスキームはありません。 –

+0

こんにちはowlstead、私は正直なところ、SSLが辞書攻撃からどのように保護されるのか分かりません。また、PBKDF2についてのAFAIKでは、塩はサーバー上にのみ存在するため、サーバーが危険にさらされていない限り、どのように役立ちますが、これは困難です。 –

+0

PBKDF2は辞書攻撃から保護するために使用され、SSLは転送中のデータ(パスワード)を保護するために使用されます。独自の認証方式を作成しようとしていますが、これには重大な欠点があります**。 –

答えて

5

proof-of-workスキームを探しているかのように聞こえますが、そのようなスキームのアプリケーションの1つは、あなたが何を記述しているかだけです。クライアントに一定量の作業を強制し、要求を伴うサーバー。

+0

リンクをありがとう、これは私が探しています。 –

+0

だから、私はhashcashについて読んでいます。それは仕事をするためにも見えますし、既に実装が利用可能ですhttps://github.com/007/hashcash-js –

5

本当にうまくいくかもしれない愚かなアイデアは、暗号化スキームに「パズル」を付けることです。暗号化されたデータをサーバーに投稿するには、既知のNP困難な問題(たとえば、大きなブール式に対する満足度の高い課題を見つける)を解決し、その答えを一緒に送信する必要があります。サーバーはそのソリューションを簡単に検証できますが、P ≠ NPという前提で、データをポストしようとするクライアントは超多面的な余分な作業をしなければならず、サーバーのフラッディングを防ぐことができます。

希望すると便利です。

+0

興味深いですが、私は数学では弱いですが、問題の種類やMartin Bのようなリンクのいくつかの例がありますか? –

+0

「NP完全問題」を検索すると、根本的に解決するのが難しいと思われる膨大な問題が見つかります。この種の問題にはあらゆる種類の問題があります。あなたが実装できる単純なものを見つけることができると確信しています。 – templatetypedef

0

RSA署名(例:PKCS#1)を使用できます。

あなたのサーバーは、前に配布したプライベート部分を持つ特定のRSAキーで署名されている場合にのみ、回答を受け入れることができます。サーバーはパブリック部分を使用します。

RSAは、検証は、キーの長さにし、あなたのクライアントがあるかどうかに応じて、あなたが(例えばe=3ため、通常の電子と呼ばれる、)小さな公開指数を選択すると、因子またはX10またはX100によって署名するよりもはるかに高速であるという性質を持っていますCRTを使用するのに十分スマートです。

RSA鍵の生成は非常に遅いですが、リプレイ攻撃に挑戦するためにプロトコルにチャレンジを含める限り、すべてのクライアントに1つの鍵を使用すれば十分です。

最後に、RSA署名はあなたに機密性を与えるものではありません。

関連する問題