2016-03-25 6 views
6

私は、ユーザーの身元を完全に匿名に保つ方法を検討していたWebアプリケーションに取り組んでいます。ユーザーを匿名で保持する - セキュアなDBのみのオプション - 一般的な考え方?

私は結論に来ているしかし、あまりにも多くの私にできることはありません - ハッキングされてからデータベースを確保する上濃縮物を除きます。

これは一般的なStackOverflowのコンセンサスですか、私が逃した方法はありますか?

だから私は考えた:

  • ストレートbcryptのハッシュと塩しかし、これはその後、さまざまな理由でユーザに接触につながります。
  • パスワードリセット。私は回復質問/回答を保存することができますが、もちろん答えは物事を敗北させるように読解可能である必要があります。
  • もう1つのポイントは、セキュリティに関する質問や登録時に生成したユーザー名を忘れてしまったということでした。それらをアカウントにリンクする方法はありません。
  • また、(私が上記を克服したと仮定して)重複したユーザーを制限することになった。もし私がハッシュ/塩漬けして検索すると、処理にかなり重いでしょうか?私は単に使用された電子メールの長いリストを保持することができますが、問題を再び既存のアカウントにリンクしていますか?

あなたの考えを聞くことに興味があります。

ありがとうございました。

+0

あなたは、ユーザーが電子メール/パスワードでログインし、システムがすべての個人情報を暗号化して識別できないようにしたいと思っていますか? –

+0

ユーザー検証にSqrlを使用することを検討できます。 https://www.grc.com/sqrl/sqrl.htm。システムは、公開鍵暗号を使用して、パスワードの代わりにユーザーセッションに署名します。クライアントシークレットから派生したキーに基づいてユーザーを識別します。パスワードを忘れてしまっても、このようにする必要はありません。失われるパスワードがないためです。私はそれを試していないが、彼のポッドキャストでスティーブギブソンを聞いてから、それはうまくいくと思われる。 –

+0

@AaronFrancoはいそうです。 – userMod2

答えて

3

あなたが説明したシナリオが可能だと思います。ログイン時にユーザーに解読トークンを与えることができます。トークンは、フロントエンドのアプリケーションの変数に割り当てることができるため、サイトやページから離れるとトークンが失われ、再度ログインする必要があります。

トークンを使用すると、アプリケーションはサーバーからの暗号化されたデータを復号化できます。したがって、トークンを使用してすべてのデータを暗号化できます。次に、パスワードの変更が必要な場合は、新しいパスワードを生成するときに新しいトークンを生成する可能性があり、サーバーは新しいトークンを使用してすべてのデータを復号化してから再暗号化する必要があります。この方法では、SSLを使用している間にすべてのサーバーファイル、コード、およびデータベースを暗号化することができるため、ユーザーに表示されるまですべてのデータが匿名になります。ログインしているユーザーが、トークンを取得してサーバーからのデータを復号化する唯一の方法です。これにより、サーバーのパフォーマンスが大幅に低下します。

このテクニックは、デバイスからクラウドまで100%の暗号化を持つマイクロチップでAtmelによって使用されます。これは、ユーザーが視覚的に対話する必要がないため、チップにとって理にかなっています。 Webアプリケーションの場合、表示のためにデータを復号化する何らかの方法が必要です。可能性を制限します。ここで

は、これを行うのに有用であるかもしれないリンクのカップルです: https://www.jamesward.com/2013/05/13/securing-single-page-apps-and-rest-services https://www.fourmilab.ch/javascrypt/javascrypt.html

ここでは、上記のセキュリティ方式を使用していますアトメルチップへのリンクです。 http://www.atmel.com/products/security-ics/cryptoauthentication/

+0

興味深い - これがどのように機能するかを見ることができますが、ユーザーは電子メール/モバイルではなく、トークンを覚えておく必要があります。私はトークンを単純なものにすることができると思いますか? – userMod2

+0

ユーザーはトークンを見ることはありません。彼らはあなたのサーバーからトークンをフェッチするためにメールとパスワードのみを使用します。トークンは、暗号化されないサーバーから送信される唯一のものです。 –

+0

ああ、サーバー側/ DBにはまだトークンからユーザー権利へのリンクがありますか? – userMod2

2

まず、完全に匿名にする唯一の方法は、決してオンラインにならないことです。何も意味がなく、何も意味がなく、完全に安全です。任意のハッシュ、暗号化、DBなどがクラッキングされる可能性があります。悪意のある「ハッカー」が実際に情報を求めている場合、あなたがどれほど試しても、それを得る方法を見つけるでしょう。

これで、ユーザーから取得したすべての情報を完全に暗号化すれば、Tor、プロキシ、VPNなどを見ることができます。しかし、何かがうまくいかない場合、例えば、トリプルハッシュとすべてのハッシュをマルチソルトし、ユーザー情報を解読する必要がある問題が発生した場合、問題になる可能性があります(引数としてFBIが要求します)。 MD5暗号化を使用した単一の塩漬けのハッシュは、解読/クラックのために2〜5時間かかることがあります。あなたは、IP、ユーザー名、パスワード、電子メール、名前などのすべての情報を暗号化しました。

しかし、ブラウザ(VPNのようなもの)を実行するためにユーザがアクセスしなければならないブラウザへの暗号化されたトンネルを作成し、そこからブラウザのURLにプロキシを投げる不気味さをさらに深める。そのようにして、ユーザーは異なるIPで暗号化されたトンネル内にいて、トンネルを通じて与えられたIP以外のIPを使用します。 IPを頻繁にホッピングしたり、プロキシを変更したりすることさえ可能です。

ここでは、データベースのセキュリティを確保するために、複数のソルトハッシュを提案し、パスフレーズでそれらを保護し、データベースが存在するコンピュータからパスフレーズを削除します。これは、解読のためにハッシュにアクセスする必要がある場合、面倒なことも証明できます。

私はそれについて言います、最悪のことは起こるでしょう、あなたはユーザーのわずかな痕跡があるでしょう。ただし、これを正常に作成した場合、悪意のある意図を持つ人は、悪意のある人ができるかどうかを確かめるために悪用しようとします。

関連する問題