2011-07-12 2 views
3

だから、現在のプロジェクトにどの暗号化方法を使うべきかアドバイスが必要です。ここでのこの件に関するすべての質問は、ネットワーキングと暗号化されたデータをあるマシンから別のマシンに渡すことです。私は使用するべき暗号化方法に関する助言

システムがどのように動作するかの概要は次のとおりです。

私は、テキスト形式でテーブルに保持されているいくつかのデータを持っています。私はツールを使ってこのデータを解析し、それをdatファイルにシリアル化します。これは正常に動作しますが、公開された場所にアプリケーションとともに格納されるため、このデータを暗号化する必要があります。データはどこにでも送信されることはありません。単純にアプリケーションによって読み取られます。私はそれが暗号化されている必要があるので、間違った手に落ちるとデータを読み取ることができなくなります。

私は暗号化にcrypto ++ライブラリを使用しており、ほとんどのタイプの暗号化アルゴリズムを実行できることを読んでいます。しかし、私は、ほとんどのアルゴリズムが公開鍵と秘密鍵を使用してデータを暗号化/復号化することに気づきました。これは、私が私に直観に反しているようなデータを秘密鍵に格納しなければならないことを意味します。データに秘密鍵を格納せずに暗号化を実行できる方法はありますか?

+1

参照対称対非対称暗号 –

答えて

4

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

  1. サーバーにキーを格納します。プログラムのユーザがサーバにログインした場合にのみ、鍵を自分のローカルストレージに戻す。
  2. PBKDF2などのキー導出機能を使用して、パスワードからキーを派生させます。

もちろん、攻撃者が忍耐強く、キーロガーをインストールして、次回にファイルにアクセスするまで待っていると、このすべてが失敗します。あなたのマシンが侵害されたら、データを保護する方法はありません。

+0

アドバイスをいただきありがとうございます。キー導出関数法を使っていないと思います。そして、ええ、この場合、マシンが改ざんされていないことを確認するのは、主にハードウェアオペレータの責任です。 – Hubbo

1

アプリケーションがデータを読み取ることができ、人々はそのアプリケーションへのアクセスを持っている場合、十分なモチベーションと時間を持つ人は、最終的にデータを読み取る方法(アプリケーションを分解して)把握します。

つまり、暗号化されたデータを解読するために必要なすべての情報は、既に攻撃者の手元にあります。すべてのDRM関連のデザインで消費者=攻撃者の問題があるため、人々はDVD、BluRays、M4As、暗号化電子書籍などを簡単に解読できます。

1

publicを使用すると非対称暗号化と呼ばれます。 /秘密鍵のペア。

対称暗号化アルゴリズムを使用すると、1つのキーだけが必要になります。

その鍵はまだどこかに格納する必要があります(実行ファイル内にある可能性があります)。しかし、ユーザーが.datへのアクセス権を持っている場合、彼はおそらくexeへのアクセスも持っています。彼はまだその情報を引き出すことができるという意味です。しかし、彼がPC(および必要な権利)にアクセスできる場合、彼はメモリからすべての情報をとにかく読み取ることができました。

あなたは(パスワード別名)パスフレーズをユーザーに尋ねると対称的に暗号化するためにそれを使用することができます。パスフレーズをどこにでも保存する必要はありません。

3

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

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

と言われていますが、何度もデータが暗号化されているという事実は、データが問題にならないだけのため、保護が十分です。これがあなたのケースであれば、コードにキーを埋め込み、対称アルゴリズムを使用することができます(AESが最適です)。あなたの問題を解決するために

2

一般的な方法は次のとおりです。

  • は、データを暗号化するために対称型鍵アルゴリズムを使用し、一般的なアルゴリズムはAES、twofishですです。おそらく、あなたはCBC連鎖を使いたいと思うでしょう。
  • プライベートキーを使用してダイジェスト(sha-256)を使用して非対称アルゴリズム(RSA)で署名します。この方法で、署名と公開鍵を埋め込んで確認し、スクランブリングキーが侵害された場合他の人はあなたの個人データを偽造することはできません。もちろん、これらのデータを更新する必要がある場合は、この秘密鍵のメカニズムを使用することはできません。いずれの場合においても

、あなたはブロック暗号については、次のいずれかに1つのブロックをチェーンどのように意味、操作の

  • モードを暗号対非対称なもの
  • 署名対

    • 対称型暗号をチェックする必要があります、AES、3DES(CBC vs ECB)のように

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

  • +0

    「連鎖」とは、通常「操作モード」として知られています。 –

    +0

    が同意し、私の投稿を更新しました – Bruce

    関連する問題