3

では、現在のプロジェクトでどの暗号化方式を使用すべきかについてアドバイスが必要です。ここでのこの主題に関するすべての質問は、ネットワークを構築し、暗号化されたデータをあるマシンから別のマシンに渡すことに関するものです。

システムがどのように機能するかの簡単な要約は次のとおりです。

テキスト形式のテーブルに保持されているデータがいくつかあります。次に、ツールを使用してこのデータを解析し、datファイルにシリアル化します。これは正常に機能しますが、アプリケーションとともに公共の場所に保存されるため、このデータを暗号化する必要があります。データは、アプリケーションによって読み取られるだけの場所には送信されません。暗号化する必要があるので、悪意のある人の手に渡った場合、データを読み取ることができなくなります。

暗号化にcrypto++ライブラリを使用していますが、ほとんどの種類の暗号化アルゴリズムを実行できることを読みました。ただし、ほとんどのアルゴリズムは公開鍵と秘密鍵を使用してデータを暗号化/復号化することに気づきました。これは、私には直感に反しているように見えるデータとともに秘密鍵を保存する必要があることを意味します。データに秘密鍵を保存せずに暗号化を実行する方法はありますか?

4

5 に答える 5

4

あなたの場合、非対称暗号を使用する理由はわかりません。インターネットアクセスの可用性に応じて、2つの適切な解決策があります。

  1. キーをサーバーに保存します。プログラムのユーザーがサーバーにログインした場合にのみ、ローカルストレージへのキーを取得します。
  2. PBKDF2などの鍵導出関数を使用して、パスワードから鍵を導出します。

もちろん、攻撃者が辛抱強くキーロガーをインストールし、次にファイルにアクセスするまで待つ場合、これはすべて失敗します。マシンが危険にさらされた後は、データを保護する方法はありません。

于 2011-07-12T09:01:41.343 に答える
3

簡単な答え:気にしないでください。

長い答え:.DATファイルをアプリケーションと一緒に保存する場合は、キーもどこかに保存する必要があります。おそらく同じ場所にあります(おそらくコードに隠されています)。したがって、悪意のあるユーザーが暗号化を破りたい場合、彼がしなければならないのはそのキーを探すことだけです。それだけです。どの方法やアルゴリズムを使用するかは実際には重要ではありません。アプリケーションに復号化キーを保存しなくても、最終的にはそこに到達し、悪意のあるユーザーが実行時にデバッガーでそれをキャッチする可能性があります(専用のセキュリティで保護されたメモリチップを使用していて、必要な保護があります)

とは言うものの、データが問題を起こすだけの価値がないため、データが暗号化されているという事実だけで十分な保護が得られることがよくあります。これが当てはまる場合は、コードにキーを埋め込んで、使用可能な任意の対称アルゴリズムを使用できます(AESが最適です)。

于 2011-07-12T09:02:50.477 に答える
2

問題を解決する一般的な方法は次のとおりです。

  • 対称鍵アルゴリズムを使用してデータを暗号化します。一般的なアルゴリズムはAES、twofishです。ほとんどの場合、CBCチェーンを使用する必要があります。
  • ダイジェスト(sha-256)を使用し、秘密鍵を使用して非対称アルゴリズム(RSA)で署名します。このようにして、署名と公開鍵を埋め込んで確認し、スクランブリング鍵が危険にさらされた場合に他の人が確認できるようにします。個人データを偽造することはできません。もちろん、これらのデータを更新する必要がある場合は、この秘密鍵メカニズムを使用することはできません。

いずれにせよ、あなたはチェックする必要があります

  • 対称暗号と非対称暗号
  • 署名と暗号化
  • 動作モード。これは、AES、3DES(CBCとECB)などのブロック暗号用に1つのブロックを次のブロックにチェーンする方法を意味します。

前述のように、データが同じアプリケーションによって読み書きされる場合、悪意のあるユーザーがこれらのデータを盗むのを防ぐことは非常に困難です。コード内のキーを非表示にする方法はありますが(ホワイトボックス暗号化を検索できます)、それは間違いなくかなり複雑になります(そして、キーを盗むために簡単にテンプレート化できる単純な外部暗号化ライブラリに依存しないことは明らかです)。

于 2011-07-12T09:43:15.237 に答える
1

アプリケーションがデータを読み取ることができ、人々がそのアプリケーションにアクセスできる場合、十分な動機と時間を持つ誰かが、最終的に(アプリケーションを分解することによって)データの読み取り方法を理解します。

言い換えれば、暗号化されたデータを解読するために必要なすべての情報は、すでに攻撃者の手に渡っています。あなたはすべてのDRM関連のデザインでconsumer=attackerの問題を抱えています。これが人々がDVD、BluRay、M4A、暗号化された電子書籍などを簡単に解読できる理由です...

于 2011-07-12T09:02:06.630 に答える
1

これは、公開鍵と秘密鍵のペアを使用する場合の非対称暗号化と呼ばれます。

対称暗号化アルゴリズムを使用できます。そうすれば、必要なキーは1つだけになります。

そのキーはまだどこかに保存する必要があります(実行可能ファイルにある可能性があります)。ただし、ユーザーが.datにアクセスできる場合は、おそらくexeにもアクセスできます。つまり、彼はまだその情報を抽出することができました。しかし、彼がPC(および必要な権限)にアクセスできる場合は、とにかくメモリからすべての情報を読み取ることができます。

ユーザーにパスフレーズ(別名パスワード)を要求し、それを使用して対称的に暗号化することができます。このように、パスフレーズをどこにでも保存する必要はありません。

于 2011-07-12T09:02:18.060 に答える