1

私たちのアプリケーションによってのみ認識される特別な暗号化されたドキュメント ファイル形式を読み取るために、Adobe Reader のようなアプリケーションを作成しました。

私たちがやりたいことは、ユーザーが自分のアカウントを使用して Web サイトからアプリケーションを購入できるようにすることです。その後、このプログラムを使用してそのドキュメントをダウンロードし、読み始めることができるようにします。

ここに私たちの懸念があります:

1) ドキュメント ファイルは別のユーザー コンピューターで読み取ってはなりません。つまり、ユーザー 1 が生のダウンロード ファイルを自分のコンピューターにアプリケーションを持っているユーザー 2 に渡した場合、2 番目のユーザーはそのファイルを読み取ることができてはなりません。

2)ユーザーがファイルをダウンロードした後、それらのファイルをオフラインで読むことができます(読むために常にオンラインになっているわけではありません)

3) これらの文書データは重要であり、ユーザー情報とアプリケーションはハッキングやクラッキングされてはならないため、このセキュリティは簡単に破られてはなりません!

4) おそらく後で Android/IOS バージョンが必要になるため、ソリューションはクロスプラットフォームでなければなりません

5) ユーザーは自分のファイルのコピーをユーザー名とパスワードと共に他のユーザーに渡すことができるため、各ドキュメントにログイン メカニズムを提供するようなソリューションは機能しません。

6) ファイルの暗号化メカニズムは、クラッカーによって破られてはならないため、クラッカーはドキュメントを解読し、無料版をインターネット上に投稿するだけです

プログラミング方法、セキュリティメカニズム、または提案はありますか?

4

3 に答える 3

4

公開鍵 (または非対称) 暗号化を使用できます。ユーザーの公開鍵でドキュメントを暗号化します。次に、秘密鍵にアクセスできる人 (理想的にはユーザーのみ) だけがそれを復号化できます。

ただし、ユーザーが自分のキーにアクセスできる場合 (アクセスする必要があります)、ユーザーがドキュメントを復号化して他のユーザーと共有する (または自分の秘密キーを他のユーザーと共有する) ことを妨げるものは何もありません。

結局のところ、ユーザーまたはプログラムが暗号化されていない製品にアクセスする必要があり、ユーザーがドキュメントを安全に保つことに関心がない場合、機密性は破られる可能性があり、製品が十分に興味深い場合は壊れます。

于 2013-04-12T17:56:44.237 に答える
1

これは.NETの問題であり、実行可能ファイルには大量のメタデータが保存されており、ネイティブ(asm)ではなくILにコンパイルされるため、簡単に元に戻すことができます。あなたの最善の策は、難読化ツールと .NET Seal のようなものを使用することです (ただし、私が正しければ、ユーザーはネット上にいる必要があります) http://forum.elitevs.net/

ここでも、クロス プラットフォームに移行する必要があり、C# でそれを行うには、Mono のようなものを使用する必要があります: http://www.mono-project.com/Main_Page

ただし、それにはエンドユーザーもモノを持っている必要があります。

今あなたの「ポイント」に答えてください。

1)各ファイルとアプリケーションが、各ファイルとアプリケーションに固有のある種の暗号化を共有するようにし、ファイルが特定のユーザーが持っているアプリケーションとのみ一致するようにします。

ユーザー X がアプリケーションをダウンロードします。ユーザー Y がアプリケーションをダウンロードします。

どちらのダウンロードも、ある種の暗号化アルゴリズムまたは暗号化キーで一意です。

ユーザー X がドキュメント A をダウンロードします。ドキュメント A は、ユーザー X のアプリケーションと同じアルゴリズム/キーを共有するため、ユーザー X だけに固有のものになります。

ユーザー X はドキュメント A をユーザー Y に渡します。ユーザー Y のアプリケーションはユーザー X と同じアルゴリズム/キーを共有していないため、ドキュメントを読み取ることはできません。

2) 私は私の答えで最初に言ったことを参照します。

3) 私は私の答えで最初に言ったことを参照します。

4) 私は私の答えで最初に言ったことを参照します。ただし、これは完全に悪い考えではないことを指摘しておきたいと思いますが、C# が本当にこれに最適な言語である場合は、考慮に入れる必要があります。

5) ここで #1 の回答を参照します。

6) ここで #1 の回答を参照します。

于 2013-04-12T17:48:47.033 に答える
0

ユーザーがファイルをダウンロードできるようにする場合、100% 安全にする方法はありません。その理由は、ユーザーが読み取れるように復号化する方法が必要だからです。この復号化プロセスは、ユーザーのマシンで実行する必要があります。これは、それを読み取るプログラムが復号化してユーザーのマシンで開く必要があるためです。

それを解読するプログラムがユーザーのマシンで実行されると、ユーザーはそれをリバース エンジニアリングしてハッキングすることができます (彼が十分に賢いと仮定します)。

そうは言っても、解読を困難にする方法はたくさんあります。オフラインで読む機能をなくすと、より細かく制御できます。ハッカーは、リモート サーバーで逆アセンブラーまたは逆コンパイラーを実行できません。

この情報が役立つことを願っています

于 2013-04-12T18:04:02.770 に答える