2012-04-21 10 views
3

現在、ログインシステムをRSAクラス(PHPでRSAアルゴリズムを実装したクラス)に接続しています。私はこのアルゴリズムに関するいくつかの情報を読んだことがあるが、私はそれに疑問を持ち、誰かがそれを明確にできることを願っている。RSAアルゴリズムを使用したPHPログインシステム

RSAは、パブリックとプライベートの2つのキーで動作しています。どちらもアルゴリズムを使用して生成されています。それらのキーは一度しか生成されず、サイトコードに含まれていますか(管理者のものとユーザーサイトのもの)?

これを実装する主な考え方は、ログインフォームを使用してlogin.phpをコードに公開鍵とし、ログインとパスワードを検証用に送信して公開鍵で暗号化することです。サーバー側では、このメッセージは秘密鍵を使用して解読され、情報が正しいかどうかがチェックされ、真偽情報が返送されます。あなたはそれが安全で正しい使用だと教えてくれますか?

+0

このログインシステムは、Webサイトで使用される予定ですか? – tftd

+0

設計目標が何であるかを明確にしてください。資格情報を受け取る最初のサーバーが認証を行っていない、何らかのマルチシステムアーキテクチャを実装していますか? – Devin

答えて

2

これらのアルゴリズムの実装ではなく、HTTPSを使用してください。私はJavascriptの実装がクライアント側で大きなオーバーヘッドを意味するだろうと確信しています。あなたのポケットを暗号化したいときは、トランスポートレイヤーまたはアプリケーションレイヤー(HTTPS)にそれを実行させます - テスト済みで、速く動作しています。セットアップに数分かかります。

+1

セットアップに数分かかるとは言いませんが、これはこれまでのところ最善の方法です。 –

0

トランスミッションを保護したい場合は、サーバー側のスクリプト言語を使用することはできません。暗号化と復号化は、クリアテキストパスワードがサーバーに到達したときに最初に行われ、聴取者が傍受するのに十分な時間を与えます。あなたはRSAのjavascript実装を使用してパスワードをクライアントサイドで暗号化し、次にサーバ側でphpを使用して解読することができます。

暗号化用の公開鍵と復号化用の秘密鍵がサーバー上にあります。

+0

OK、情報ありがとうございます。しかし、それは一つのことを言っていません - それらのキーはコード内にあるべきです、またはどこで、javascriptを使うとこのコードが非常に目立つようになるはずです。 – sebap123

+2

ここでの目標がクライアントからサーバーへの安全な送信である場合は、SSLが正しい方法です。 – Devin

+1

はい、公開鍵は公開されています。誰もがそれを見ることが許されているので、RSAはすごくいいです。秘密鍵は自分自身(またはこの場合はサーバー)のために隠されているはずです – Mads

2

これを実装しないでください。代わりにHTTPSを使用してください。あなたが提案したものは、まったく安全ではありません。フォームデータは、JavaScriptを使用してクライアント側で暗号化すれば安全です。 JavaScriptは暗号化には適していません。

基本的なルールは、クライアント上で実行されるすべてのものが悪意のあるものです。クライアントで暗号化を実行することは本当に悪い考えです。

HTTPSを再度使用するか使用しないでください。

+0

私はPOSTメソッドを使用して、ログインとパスワードをサーバーに送信して、データベースに接続し、このようなものをhttpsが最も安全な方法ですか?また、私がdb(SELECT ...)から情報を取得していて、dbが自分のサーバー上にある場合、そこにセキュリティを気にする必要はありませんか、それを保護する方法もありますか? – sebap123

+0

悪意のあるわけではありません。あなたが持っていれば、あなたは望むように公開鍵をハックします。秘密鍵所有者はそれに興味がありません。それは効果的ではありません - 大胆な動き。 – Dyin

+2

@ sebap123:HTTPSはトラフィックを暗号化するだけですが、データベースに入力/クエリするために使用するすべての文字列を適切にエスケープするためには、デューデリジェンスを使用する必要があります。 –

関連する問題