2

特定のクエリ文字列パラメーターを使用したリダイレクトの行為を通じて、ターゲットサーバーに詳細を提供する必要があるオリジンサーバーがあるとしましょう。ただし、これらの詳細がオリジン サーバーからのみ取得されたことを確認する必要があります。

また、ターゲット サーバーの整合性もわかりません。具体的には、ターゲット サーバーが侵害されている可能性があるため、暗号化キーが悪意のある人物によって読み取られた可能性があります。

何らかの形式の公開鍵と秘密鍵のペアを使用して、クエリ文字列に署名できると考えています。オリジンサーバーは秘密鍵を使用して文字列に署名し、ターゲットサーバーは公開鍵を使用して、それがオリジンサーバーからのものであり、メッセージが改ざんされていないことを確認します.

私は暗号化の専門家などとはかけ離れているため、ここで行った仮定は間違っている可能性があります。間違っている場合は修正してください:)

私は基本的に、Ruby でこれを行う (できれば) 簡単な方法を求めています。

4

1 に答える 1

1

おそらく、クエリデータ(この場合はリダイレクトURL)に署名する最も簡単な形式は、HMACを使用することです。この場合、発信元サーバーと宛先サーバーは共通のキーを共有する必要があります。HMACは、公開/秘密キー暗号化の形式ではなく、キー付きハッシュの形式です。

探しているモジュールはruby-hmacであり、ソースサーバーと宛先サーバーは次のようなことを行う必要があります。

require 'hmac-md5'
HMAC::MD5.new("<your shared key>").update("<your URL to check>").hexdigest

そして、宛先側で、ソース側のHMACによって計算されたダイジェストが同等であることを比較します。したがって、両方の側が同じ計算を実行します。HMACのhexdigestは、追加のクエリパラメータによって送信元から宛先に簡単に転送できます。

于 2012-04-09T10:27:05.520 に答える