2010-12-27 7 views
0

オリジナルのスタートクラフトをプレイし、ブリザードによって作成された公式マップを選択したことがある場合は、マップの横に小さな「ブリズ」アイコンが表示され、サードパーティ製ではない。アドオンとファイルの認証

自分のアプリケーションに類似のシステムを実装して、アドオンとファイルを認証して、自分や他の誰かから来たものかどうかをユーザーに知らせることができます。

私はセキュリティについてはほとんど知りませんが、この点については助けてください。

答えて

3

Public key cryptography。クライアントアプリケーションには公式著者の公開署名鍵のコピーがあり、作成者の秘密鍵で作成されたアドオン/ファイルに適用された署名が検証されます。

+0

+1。ようこそ。 –

0

Macの答えは間違いありません。具体的に次のように、プロセスは、一般に行くために:

署名:

  1. ハッシュ(例えばSHA-1)は、コンテンツから作成されます。
  2. ハッシュは、秘密鍵を使用して署名され、署名(例えば、DSAまたはRSAアルゴリズムを使用する)が得られる。
  3. 署名はコンテンツに含まれています。コンテンツが変更された場合、署名は無効になります。

検証:

  1. クライアントがコンテンツからハッシュを計算します。
  2. 署名は、作成者(すなわちあなた)の既知の公開鍵で復号化されます。
  3. 署名の中のハッシュが#1の計算されたハッシュと一致する場合、それは問題ありません。それ以外の場合は、コンテンツが変更された/実際には作成者(つまりあなた)からではありません。

いくつかの注意事項:

  1. あなたが強制的にブルートを阻止するのに十分な大きさのキーサイズを使用する必要があります。
  2. これらのアルゴリズムでは、鍵の生成時や署名時など、ランダムなデータのソースが必要です。これに違反した場合、しばしば秘密鍵を自明に公開することができます。
  3. 「公開鍵でハッシュを暗号化する」というのは簡単な説明です。たとえば、RSAでは、ハッシュに他のデータを埋め込む必要があります。検証時には、埋め込みもチェックする必要があります。さもなければ、署名は容易に偽造できるかもしれません。 (参照:数年前のOpenSSLの失敗)。

標準的なアドバイスは、実績のある既製の暗号ライブラリを使用して、より多くの経験を積んだユーザーによって書かれたものです。ライブラリにキーペアと、署名/検証するデータを供給し、最小限のコードで「署名/検証する」と言う必要があります。あなたが詰め物の詳細について心配しているのなら、それは間違っているかもしれません。参照:Microsoft .NETのSystem.Security.Cryptography名前空間(非常に使いやすい)、または標準のWindows C/C++プログラミングを行っている場合はMicrosoft CryptoAPI他のクロスプラットフォームのライブラリもあります:あなたのプラットフォームでうまくいくものを選んでください。