2011-02-09 49 views
0

私のサーバーが暗号化された文字列をクライアントで復号化できますが、クライアントで再暗号化できない方法はありますか?私はこれが後方にあるように思える...ここに私の必要性がある。サーバーから暗号化し、クライアントで暗号化を解除します(クライアントでは暗号化しません)。

リモートサーバーに対してアクティブ化する必要があるソフトウェアキーがあります。サーバーは、「あなたはアクティブである」というクライアントに何かを戻す必要があり、有効期限、ライセンス数などの情報が含まれていなければなりません。ただし、ライセンスを増やすために簡単に改ざんされないようにする必要があります(つまり、コンパイルされていないバイナリまたはw/eで見つかったキーを使用して新しい日付で値を再暗号化します)。

公開鍵/秘密鍵を使用することは可能ですか?それともハッシュですか?

EDIT代わり

、サーバが検証できるクライアントは、クライアントになりすましたり、それ自身の上のハッシュを生成する能力を与えることなく、サーバーから実際にあるというハッシュを提供することができますか?

ありがとうございます。

答えて

1

公開鍵/秘密鍵の暗号化は、必要な処理を行う必要があります。ハッシュは一方向関数です。良いハッシュ関数は、元の値を取得することが不可能になります。

この場合、サーバーには公開鍵と秘密鍵のペアがあり、クライアントには公開鍵と秘密鍵のペアがあります。サーバーの公開鍵はクライアントに組み込まれており、サーバーにはクライアントの公開鍵もあります。サーバーは、秘密鍵とクライアントの公開鍵を使用してペイロードを暗号化できるようになりました。クライアントがペイロードの復号化を行う場合、クライアントは秘密鍵とサーバーの公開鍵を使用します。クライアントは、サーバーの秘密鍵にアクセスせずにデータを再暗号化することはできません。

http://en.wikipedia.org/wiki/Public-key_cryptography - それはすべての

http://msdn.microsoft.com/en-us/library/e970bs09.aspxをどのように動作するかの説明については - ネットクラスのための出発点として、それが簡単に

+0

私はあなたが言っていることは、単一のメッセージを暗号化することです。送信者はそれを自分の秘密鍵で暗号化し、その後再び受信者の公開鍵で暗号化するということです。これは可能ですが、実際には正しくありません。一方向にメッセージを暗号化するには、送信者はそれを受信者の公開鍵で暗号化します。受信者は、秘密鍵でそれを解読することができます。お互いに話している2台のコンピュータは、それぞれ鍵ペアを生成し、公開鍵を他のコンピュータに送信し、他方の公開鍵で暗号化されたメッセージを送信します。 – KeithS

+0

@KeithS - ああ、はい、データの暗号化と鍵交換の仕組みを混ぜていました。私はあなたが説明したようなコンセプトは今でも効くと信じています。 –

1

を確認します。 RSAのような非対称鍵アルゴリズムを使用してください。どちらのキーもクリアテキストからクリアテキストに移行する必要があります。一方は暗号化され、他方は暗号化解除されます。暗号化したものと同じものを使用することはできません。したがって、クライアントは暗号文を取得してそれを解読し、同じ暗号文を出す必要のある情報を使用することができませんでした。

ただし、非対称キーアルゴリズムでは、暗号化に使用されるまで、暗号化キーと復号化キーは区別されません。彼らは、他の鍵が最初の鍵で暗号化されたメッセージを解読するために使用されることを要求するだけです。したがって、理論的には、お客様のクライアントは、「暗号化キー」を使用してサーバーが解読できる「解読」キーを使用してメッセージを「再暗号化」することができます。私はこれを許さないアルゴリズムを知らない。解読以外の目的で解読キーを使用する方法を省略することで、コミュニケーション・ライブラリーに組み込む必要があります。

関連する問題