0

Node.js、Redis、 MongoDB使用してモバイルAPIをコーディングしました。しかし今、私は私たちのシステムにセキュリティを提供するための具体的な方法を探しています。私がAugusteKerckhoffの悪名高い原則に触発した質問。

「秘密にする必要はなく、不便を感じることなく敵の手に渡ることができなければならない」

この原則を調べた後、スニファがデータパッケージ全体をキャプチャした後、データを保護する安全な方法がないことがわかりました。もちろん、APIキーを使用する、 MD5&MD6Triple DESSHA1などの暗号化アルゴリズムを使用するなどの代替方法があります。ただし、データパッケージ全体がキャプチャされている場合もこれは機能しません。また、HTTPS、SSL証明書などのセキュリティ予防策があります。ただし、才能のある人がデータパッケージをキャプチャした場合も、システムで確認済みのユーザーのように振る舞うことができます。

データパッケージ全体がキャプチャされたとしても、システムが検証済みのユーザーからではなく外部ソースからのリクエストを区別できるように、セキュリティ方式を適用するにはどうすればよいでしょうか。

PS:この問題を防ぐために、タイムスタンプを使用してカスタム暗号化アルゴリズムを適用するのは少し混乱するかもしれないと思いました。

4

1 に答える 1

1

Kerckhoffs の原則によると、「鍵を除くシステムに関するすべてが公開されている場合でも、暗号システムは安全でなければなりません。」したがって、暗号システムが機能する方法は、システムを解読するために使用できるのはキーだけです。キーが敵に落ちた場合、それはすべてです。

実際には、インターネット経由で通信したり、パスワードを使用してメール アカウントを認証しようとしたりするときに使用します。パスワードが平文でサーバーに送信されたり、保存されたりすることはありません。その場合、安全ではありません。最善のセキュリティ プラクティスは、パスワードをまったく (暗号化もせずに) 保存するのではなく、暗号化されたパスワードのソルト付きハッシュを保存することです。

これは、1 人のユーザーに対して 1 つのハッシュです。これは 1 つの方法です。ユーザー情報を取得することはできません。データベースにあるかどうかをテストするだけです。敵がデータベースを乗っ取ったとしても、あなたのユーザー名/パスワードにアクセスすることはできません.

要するに、通信チャネルは敵なので、通信チャネルで何を送信してもかまいません!!! 他のユーザーが利用でき、誰でも盗聴できます。敵が無線でお互いをスキャンしているようなものです。

チャネルを介して送信されたハッシュは、傍受して認証に使用できます。確かに、サーバーは HTTPS 接続を使用して、なりすましの試行と実際の試行を区別できます。サーバーは HTTPS セッションを追跡し、このようなことが発生した場合に再検証を求めます。HTTPS は、スニッフィングされたデータの使用 / MITM 攻撃をブロックします。スニファーがハッシュ (一時的なチケット) を取得したとしても、悪意のあることはできず、ユーザー名とパスワードをクラックすることはできません。

Kerckhoff のおかげで、私たちのパスワードは安全です。

node.jsに実装する方法?? Passport.js パッケージを探します。現在の標準の OpenAuth を実装しています。

于 2013-02-11T16:59:53.267 に答える