2009-03-04 8 views
6

私はデータを持っています。現時点では、XMLファイルですが、アーキテクチャが変更される可能性があります。だから、それがC#クラスであると仮定しましょう。一部のデータの改ざん防止署名の生成?

データをディスクまたはデータベースに保存するときに、誰かがデータを変更できないように、何らかの種類の署名や指紋、チェックサムなどを追加する必要があります。警告:すべてのソースコードにアクセスできる管理者または開発者であっても、それを変更できないはずです。

完全なコードアクセス権を持っている人が簡単に新しい署名を作成できるので、署名には手作業でパスフレーズを入力する必要はありません。署名には何らかの追加データが必要です。理想的には、私は署名からこのデータを取り戻すことができます。例えば、署名の日付といくつかの文字列。

私の一般的なアプローチは、対称暗号化を使用することです。すべてのフィールドからハッシュ(SHA-512)を生成し、そのハッシュと追加データを暗号化して、ハッシュをパスワードとして使用して署名を取得します。解読するために、私の関数はファイル内の実際のデータからハッシュを生成し、その署名を解読しようとします。署名日や追加情報がまだ損なわれていない場合でも署名を生成するのは簡単だから、それは改ざんの可能性はありません。

私はこの分野の熟練者ではないので、私はホイールを再発明しようとしていると思うし、それは非常に良いホイールではない。標準的なアプローチがあるのだろうか?私は、私の要求の一部は不可能だと信じています(誰もが環境全体をコントロールすると、その人もシステム時間を制御します)が、これは一般的にどのように対処されているのでしょうか?

+1

管理者と開発者がソースコードに完全にアクセスできることを確認したかっただけですが、非対称キーを使用すると、キーのプライベート部分にもアクセスできますか? – Ants

答えて

6

digital signaturesecure digital timestampの組み合わせが必要なように聞こえます。

簡単に言えば、データに署名した後、正式なタイムスタンプとそのタイムスタンプを署名値にリンクする独自のデジタル署名を提供するサードパーティーのWebサービスを呼び出して、元の署名(したがって元のデータ)が作成されました。このスキームでは、元の署名鍵が後に破られ、取り消されるか、または他の方法で無効にされたとしても、失効前に作られた署名は、タイムスタンプのおかげでまだ有効です。

改ざんに強いハードウェア署名デバイスが役立ちます。ターゲットハードウェアがかなり新しい場合は、既にマザーボードにTPMという形でサポートを提供しているかもしれませんが、hardware security modulesの場合は腕と脚を充電してくれるベンダーがたくさんありますが、smart card

テクノロジだけでは十分なセキュリティを達成できない場合があります。システムの独立した検証が必要な場合があります。リモートCCTVの監視と、機械の場所やその他の物理的なセキュリティ対策を記録して、不正操作を検出または停止する必要があります。マシンにロードされたコードが意図されたものであることを保証し、バックドアロジックのコードへの挿入を阻止および/または検出するために、サードパーティのコードエスクロー、レビューおよび署名が必要な場合があります。

結論は、レコードが偽造された場合に負うべきものに非常に多くの費用、時間、労力を費やす必要があることです。

0

digital signatureに非対称暗号を使用します。

このarticleには、良い例と説明があるようです。

0

これは基本的にはcode signingを除いて、あなたの状況では、実際には署名されているコードではありません。購入する証明書を手配するか、独自の証明書サーバーを設定する必要があります。

3

digital signaturetrusted timestampの両方が必要です。信頼できるタイムスタンプは、メッセージを検証するために第三者が関与するようになります。その後、攻撃者はシステム全体の「完全な制御」を持っていません。

+0

23秒でNinja'd! :) –

1

GPGME(GnuPG Made Easy)を使ってPGPを活用して、GnuPGに簡単にアクセスできるように設計されたライブラリが必要な場合があります。

1

Jeffrey Hantinの答えはあなたができると思う最高のものです。しかし、ではなくが完璧です:

1)あなたのブラックハットが完全に偽の取引をするのを止めることはありません。

2)トランザクションの改ざんを完全に停止するわけではありません。はい、新しいトランザクションは異なるタイムスタンプを持ちますが、関連するデータをクリーンアップすると、タイムスタンプが乱されていることをどのように証明できますか?たとえあなたが不正改ざんの領収書(ハッシュ&のデータに署名する)を与えても、対決になるとどのようにレコードが偽造されたと証明されますか?

関連する問題