私はデータを持っています。現時点では、XMLファイルですが、アーキテクチャが変更される可能性があります。だから、それがC#クラスであると仮定しましょう。一部のデータの改ざん防止署名の生成?
データをディスクまたはデータベースに保存するときに、誰かがデータを変更できないように、何らかの種類の署名や指紋、チェックサムなどを追加する必要があります。警告:すべてのソースコードにアクセスできる管理者または開発者であっても、それを変更できないはずです。
完全なコードアクセス権を持っている人が簡単に新しい署名を作成できるので、署名には手作業でパスフレーズを入力する必要はありません。署名には何らかの追加データが必要です。理想的には、私は署名からこのデータを取り戻すことができます。例えば、署名の日付といくつかの文字列。
私の一般的なアプローチは、対称暗号化を使用することです。すべてのフィールドからハッシュ(SHA-512)を生成し、そのハッシュと追加データを暗号化して、ハッシュをパスワードとして使用して署名を取得します。解読するために、私の関数はファイル内の実際のデータからハッシュを生成し、その署名を解読しようとします。署名日や追加情報がまだ損なわれていない場合でも署名を生成するのは簡単だから、それは改ざんの可能性はありません。
私はこの分野の熟練者ではないので、私はホイールを再発明しようとしていると思うし、それは非常に良いホイールではない。標準的なアプローチがあるのだろうか?私は、私の要求の一部は不可能だと信じています(誰もが環境全体をコントロールすると、その人もシステム時間を制御します)が、これは一般的にどのように対処されているのでしょうか?
管理者と開発者がソースコードに完全にアクセスできることを確認したかっただけですが、非対称キーを使用すると、キーのプライベート部分にもアクセスできますか? – Ants