2011-08-04 13 views
3

私は、安全性が高いと思われるSSLのない認証システムを考えました。私は何か重要なことを見落としていますか?SSLを使用しない安全な認証

  1. ユーザーは
  2. Serverが
  3. サーバがそのログイン・ページの一部としてユーザにT-塩を送るセッションで伝送(T-塩)及び店舗の塩を生成し、ログインページにヒット負荷
  4. ユーザーユーザー名での種類とパスワードとクリック提出
  5. MD5はT-塩と一緒に自分のパスワードを暗号化し
  6. ブラウザ
  7. ブラウザが送信し、サーバへのユーザ名とMD5(パスワード+ T-塩)
  8. サーバは
  9. サーバMD5 2
  10. サーバからMD5sの両方を比較するステップでセッションに格納されたT-塩と一緒にステップ7から取り出されたパスワードを暗号化の下にユーザ名(*注)を使用してデータベースからパスワードを取得しますステップ6とステップ8
  11. それらが同一である場合は、ログインが成功し
  12. を認証されているサーバーは、潜在的なリプレイ攻撃に

を防ぐために(ステップ2で追加)セッションからT-塩を取り除く*注取得したパスワードはi nステップ7は、ステップ8を動作させるために(一般的な方法であるように)一方向暗号化することはできません。しかし、データベースレベルでパスワードを保護するために2ウェイ暗号化システムを使用することは可能です。 (ちょっと、ユーザーフレンドリーなパスワード回復プロセスを可能にすることの副次的な利点があります。)

このスキームの長所と短所は何ですか?

+2

SSLを使用するだけで何が問題になりますか? – ceejayoz

+2

私が見ていることから、強みと多くの弱点はありません。これはひどい考えのようです。あなたのパスワードを平文で保存する方が、それよりも安全です。プレーンテキストのパスワードを送信し、サーバー側で暗号化してハッシュし、格納されているパスワードハッシュと比較するか、SSLを使用するか、またはその両方を行うだけです。 – netcoder

+0

ceejayoz:SSLを使用することで問題になるのは、システムに追加するもう1つのコンポーネントだということです。プロジェクトにドロップできるPHPライブラリは簡単になります。 netcoder:パスワードをプレーンテキストで保存することは、パスワードをプレーンテキストで保存する代わりの方法よりも安全ではなく、おそらく数学的に証明できます。私は新しいアイデアを学び、探求しようとしているので、私は業界の教義に興味がありません。私は学問的に正しい人がこの価値がないと知っていますが、私は思っていた以上に複雑な解決法があるかもしれないという強い確信を持っています。 – OCDev

答えて

7

t塩とハッシングアルゴリズムをお送りします。ハッシュの中でパスワードを計算するのに時間がかかりません。

私の意見では、SSLを再考する必要があります。

+0

これは実際には本当に良い点です。この問題を防ぐためには、おそらくもっと多くの(おそらくあまりにも多くの)計画が必要です。 SSLはおそらく良いです。 :) – OCDev

+1

@DavidPestaもう1つの解決策は、http経由でセキュリティのカスタムレイヤーを備えたカスタムブラウザーを作成することです。しかし、現時点では、httpsは私の考える仕事です:) – Manhim

0

認証されている間に送信されるデータは安全ではなく、独自のスキームを実装することは通常はかなり悪い考えです。

+1

認証にSSLを使用する多くのシステムでも、認証後にデータが機密扱いされていないため、SSLを破棄します。転送用に暗号化します。そして、私たち自身のスキームを実装することは、通常、プログラマーが毎日行うことです。 – OCDev

+1

暗号化は問題ではなく、最近はCPUが簡単に処理できます。問題は余分なトリップであり、ネットワークの待ち時間が長くなります。そして、私たちのプログラマーは独自のスキームを実装していますが、独自のセキュリティスキームを実装することは、まだまだ良い考えではありません。 – msc

+0

本当にありがとう。 – OCDev

10

これはman-in-the-middle攻撃に対して広く開かれています。何も攻撃者がリンクを盗聴して、サーバー - >クライアントまたはハッシュされたパスワードからクライアント - >サーバーに移動し、そのいずれかを再生するのを止めることはありません。

各試行後に無効化して新しい塩を生成すると、単純な再生が妨げられますが、競合状態になります。攻撃はユーザーの前にログイン試行を提出できますか?それでも、攻撃者が真ん中に座っているので、おそらくユーザーのリンクを中断し、塩漬けされたパスワードを取得し、それを送信してセッションを取得することができます。

+1

攻撃者は、パスワードを取得するためにクライアントのマシンに座っているキーロガーを持つこともできます。すべてのユーザーにハードウェアセキュリティトークンを使用させ、コンピュータを盗難中にロックする必要がない限り、SSLの有無にかかわらず、耐久性のある金庫。ある時点で、エンドユーザーがアクセスしているコンテンツの性質と機密性を考えれば、セキュリティ上妥当と判断されるしきい値を認識する必要があります。 SSLを使用しない認証は、合理的に安全にすることができれば、特定のシステムでは依然として価値があるかもしれません。それを念頭に置いて、これにメリットはありますか? – OCDev

+2

man-in-the-middleは、ルーター/スイッチではるかに可能性が高いです。あなたが銀行のドアを通過するすべての人々をマグカップすることができますときになぜあなたは人を路上で渡すか?あなた自身のセキュリティプロトコルをローリングすることは決して良い考えではありません。特に広く利用されている/安全な/検証されたプロトコルが利用可能な場合は特にそうです。 –

+0

広く使用されている/安全な/検証済みのプロトコルをご利用いただきました。 SSLを使用していない人はいますか?これまで試みられたことはありますか? SSLを嫌うわけではありません。私はリスクに対するメリットを測り、私のプロジェクトに手をつないで自分のオプションを探っています。 – OCDev

2

あなたの意図は良いと思いますが、実際には、あなたのアプローチではセキュリティは全く提供されていないという事実があります。他の人が指摘しているように、合理的に有能なハッカーなら、電線を通るデータを傍受してリプレイ攻撃を実行することができます。ワイヤを通過するデータは暗号化されず、ユーザーの潜在的に機密性の高い情報は誰でもに公開されます。

+0

リプレイ攻撃に言及していただきありがとうございます。私はそれらを防ぐためにステップ11を加えました。あなたが見るかもしれない他の弱点を教えてください。暗号化されていないデータがワイヤを通過するのは、ログインプロセスでのみSSLを使用する多くのシステムで同様です。このような場合、内部(認証されている間)のデータは暗号化に十分な機密性を持たないと仮定します。 – OCDev

1

SSLは、(暗号化を使用して)全体のデータストリームに機密性と完全性の保護を提供するだけでなく、サーバーのIDの妥当性を確認するレベルでもあります。

あなたの例では、DNSスプーフィング攻撃や他のMITM攻撃が効果的であるため、クライアントがパスワードを提供する前に実サーバに話していることを検証する方法はありません。

また、前述のように、攻撃者がserver - > clientから行く塩を傍受し、次にハッシュされたパスワードが戻って来るので、ユーザーのパスワードを非常に簡単に強制することが可能です。 MD5は高速のハッシュアルゴリズムであるため、標準のユーザーパスワードに対してはかなり効果的です。

+1

SSLは、CAの整合性に依存します。多くのCAが直接的または間接的な政府の管理下にあり、悪意のある政府が独自の「amazon.com」SSL証明書を発行し、国内の通信会社/ ISPの範囲内のすべての人を詐称することは自明であることがわかっています。 –

+0

@Marc B:本当です。私は最近、悪いCAが業界全体のサーバのアイデンティティの検証を損なうという問題について長い間暴言と議論を読んだので、SSLはあなたに余分なものを与えてくれません。 – OCDev

+1

セキュリティ上の何かと同様、絶対的な保護はなく、リスクを軽減できるものだけです。あなたの可能性の高い攻撃者が国家レベルであれば、標準のSSLは疑わしい使用になります(あなた自身のCAを信頼できるルートとして使用し、他のものをすべて削除することもできますが)。非常に広い範囲の攻撃。低レベルの攻撃者に対して、ほとんどの人がSSLに直面している(正しく実装され、うまく使用されていれば)、妥当なレベルの保護が提供されます。 –

2

この問題は、SSLが暗号化に関するものであることを前提としていることです。 SSL is not about encryptionをご覧ください。これに基づいて、ステップ1でスキームが崩れます。なぜなら、ログインページがロードされたときに実際にあなたが所有していると思われるサイトから来たものであり、改ざんされていないという保証はないからです。

この事件の多くの先例がありますが、Tunisian government harvesting usernames and passwordsは良いものです。ブラウザにヒットする前にログインページが変更される可能性があるため、この攻撃スタイルは広く公開されています。

もちろん、認証の永続性(クッキーを使用していると想定しています)が暗号化されていないネットワークを経由して転送されているという点で、Firesheepの問題があります。誰かがそれをつかんでリクエストを再発行することができれば、あなたはセッションハイジャックの問題を抱えています。これらのクッキーを暗号化しても問題ありません。

MD5にも既知の弱点がありますが、より安全なハッシュアルゴリズムを使用しても、上記の他の問題からあなたを救うことはできません。ごくわずかな資金を費やし、最小限の設定を行い、SSLをログインプロセスの一部にする。詳細は、OWASP Top 10 on Insufficient Transport Layer Securityを参照してください。

最後に、SSLは万能薬ではありません。キーロガーからあなたを守ることはできません。データベースの侵害からあなたを守ることはできず、パスワードを開示するまではwhacking your end users over the head with a wrenchからあなたを保護しません。しかし、それはこれらのことを意味するものではなく、より幅広いセキュリティ戦略の一環である、防衛のもう一つの層であることを意図しています。

関連する問題