1

私のプログラムに必要なことは次のとおりです。

を。プログラムはランダムなパスワードを生成し、それを使用してファイルを暗号化します。b. そのパスワードを取得できるようにする必要がありますが、それは 1 日後までです。

些細なことのように思えますが、2 つの要件があります。

  1. プログラムは、Windows の時計の改ざんに対して耐性がなければなりません (単純に時計を 1 日進めてパスワードを取得することはできません)。
  2. プログラムは、デバッグの改ざんに対して耐性がなければなりません (ソース コードにアクセスできる人は、パスワードを取得できないはずです)。

タイムサーバーから時間を取得できることはわかっています。これにより、要件 1 を回避できますが、それでも要件 2 が残ります。ソース コードが利用可能であれば、誰でもタイム サーバーから受信したデータを変更するだけで、アプリケーションをだまして 1 日が経過したと思わせることができます。

私がやろうとしていることは(要件を考慮して)可能ですか?

編集: 暗号化段階が改ざん防止であると仮定します。

質問の 1 つに答えるには、アプリケーションの要点は、ユーザーが特定の期間、自分自身から情報を非表示にできるようにすることです (特定の時間が経過するまで情報を開くことができない安全な時間を考えてください)。

4

2 に答える 2

2

ファイル生成と暗号化ルーチンが改ざん防止されていれば、残りの問題は信頼できるサーバーを使用して解決できます。サーバーの助けなしにクライアントがファイルを復号化するのを防ぐことはできますが、強制的にファイルを実際に暗号化し、一時キーを破棄するのは困難です。

たとえば、キーとタイムスタンプをサーバーの公開キーで暗号化し、暗号化されたファイルと一緒に保存できます。その後、クライアントは、タイムスタンプが過去の場合にのみキーを提供するサーバーに問い合わせることなく、ファイルを復号化できません。

あなたの最大の問題は、ファイル生成と暗号化ルーチンが信頼されていないシステムで実行されている場合、改ざんを防止できないことです。したがって、基本設計を再考する必要があります。おそらくいくつかの要件を犠牲にしています。

于 2012-09-07T13:40:52.540 に答える
2

それは不可能だったと思います。それらは、あなたが制御できない時間に依存する重要なことです。理論的には、タイムサーバーから取得しようとしても、中間者攻撃スタイルの影響を受けやすくなります。これは、時間チェックで暗号化が行われる可能性が低いと思われるためです (間違っている可能性もあります)。ですから、時間の測定に頼ることができずに、あなたは不可能を追い求めていると思います。

于 2012-09-07T13:38:12.910 に答える