私は、特定のクエリ文字列パラメータを持つリダイレクトの動作によってターゲットサーバに詳細を提供する必要があるオリジナルサーバを持っているとします。しかし、私はそれらの詳細が私のオリジンサーバーから来たものであることを保証する必要があります。Ruby:真正性を保証するために文字列に暗号で署名しますか?
また、ターゲットサーバの完全性を確認できません。または、具体的には、ターゲットサーバが侵害されて、悪意のある人が暗号鍵を読み取った可能性があります。
公開鍵/秘密鍵ペアを使用してクエリ文字列に署名できると思っています。オリジンサーバーはプライベートキーを使用して文字列に署名し、ターゲットサーバーは公開キーを使用してオリジンサーバーからのものであることを確認し、メッセージは改ざんされていません。もしそうなら
私は私が作った、ここで任意の仮定が間違っているかもしれない、遠く暗号の専門家か何かからだ、私を修正してください:)
を私がする(うまくいけば)簡単な方法の後、基本的ですこれはRubyで行います。
これは興味深いですが、私は元のサーバーとターゲットサーバーの間で全く同じキーを共有する必要がないことを望んでいました。基本的に私は起点サーバーへの物理的なアクセスしか持たず、ターゲットサーバーは第三者によってホストされています。これは現在の変更ではありませんが、標的サーバが侵害される可能性のある行と、悪意のある者によって使用されている暗号化キーが存在する可能性があります。私は各ターゲットサーバに固有のHMACキーを使用することができますが、複雑さを増やすので回避したいと思います:) – jimeh
HMACを使用してホスト固有のHMACキーを派生させることができます。 HMAC :: MD5.new(HMAC :: MD5.new( "<あなたの秘密鍵>"))update( "").hexdigest).update( "あなたのチェックするURL>")。hexdigest'、 HMAC :: MD5.new( "<あなたの秘密鍵>")。( "").hexdigest'を秘密鍵としてリモートパーティーに与えます。これはおそらく、公開鍵/秘密鍵の暗号化を設定するより簡単です。公開鍵/秘密鍵の暗号化の署名は、システム間で転送される多くのデータであることを忘れないでください。 –
modelnine
[MD5が壊れている](http://www.kb.cert.org/vuls/id/836068)、暗号化目的では使用しないでください(推奨)。 – dbenhur