web-dev-qa-db-ja.com

テキストファイルが編集または改ざんされたかどうかを知る方法は?

テキストファイルかどうかを知ることは可能ですか? XML形式で、時間の経過とともに編集または改ざんされていますか?

私の質問の背景は次のとおりです:

私は「質量分析(MS)」と呼ばれる技術を使用している業界の科学者です。 MSは、使用される分析手法です。特定の化合物がサンプルに存在するかどうかを判断するための法医学分析(例:血液または尿中の乱用薬物).

質量スペック。データファイルは通常、フラットファイル形式で計測器ベンダーのプライベートバイナリ仕様に格納されます。ソフトウェアはデータファイルを処理できますが、それ以外のことはできません。ただし、MSデータにはオープンスタンダードが存在し、ほとんどのベンダーは少なくとも1つのオープン仕様へのエクスポートをサポートしています。これらのオープンスタンダードは、主に最近のXMLベース(例 mzML )であり、オープンソースアプリケーションでの処理を可能にし、また、アーカイブされたコンピューターとOS(またはVM)および処理ソフトウェアを長期間維持する必要があります。

ベンダーのバイナリ形式は、データの改ざんに対して少なくともある程度のセキュリティを提供しますが、XML形式は提供しません。したがって、問題-オープン形式は、アーカイブタイムスケールでデータへのアクセスを提供するのに非常に役立ちますが、セキュリティが問題です。

38
Drew Gibson

デフォルトのソリューションは、暗号署名を使用することです。すべての技術者にPGP鍵ペアを生成させ、公開鍵を公開して秘密鍵を安全に保ちます。

技術者が分析を行うと、秘密鍵で結果ファイルに署名します。これで、ファイルを確認したい人は誰でも、技術者の公開鍵を使用して署名を確認できます。誰かがファイルを変更すると、署名は正しくなくなります。

セキュリティに関する考慮事項:技術者の秘密鍵が他の誰かに知られている場合、その人はファイルを変更し、署名を有効なものに変更することもできます。この問題は、複数の人に各結果ファイルに署名させることで軽減できます。攻撃者は、allキーをall署名を有効なものに置き換える必要があります。

代替のローテクソリューション:各結果ファイルを印刷し、技術者に旧式の方法(ペンで)で署名してもらい、物理的に安全なアーカイブにファイルを保管します。

ところで:ベンダー固有のバイナリ形式が、XMLよりも改ざんに対するセキュリティを強化するとは限りません。テキストエディターで開いたときにそれを読んだり編集したりできないからといって、他の誰もフォーマットをリバースエンジニアリングしてそのためのエディターを構築できないということではありません。

81
Philipp

あらゆる形式のデジタル署名で十分です。ここにいくつかのポインタがあります:

  • XMLデータには、デジタル署名標準( XMLSign )があります。残念ながら、この標準はかなり貧弱で、重要なセキュリティの抜け穴があります(署名する前に、ドキュメントをXML変換で正規化する必要があります。変換自体が署名の重要な部分になるため、これを安全に行うことは非常に困難です)。

  • [〜#〜] pgp [〜#〜] または S/MIME を使用してドキュメントにデジタル署名することもできます。これらは新しいテキストベースのほとんどが読み取り可能なものになりますが、改ざん防止文書。

  • 最後に、分離された署名を使用できます。基本的に、これは別のドキュメントにリンクされたデジタル署名を含む別のファイルであり、(元の形式に関係なく)元のデータの検証に使用できます。

ここにいくつかの追加情報を追加しましょう:

  • 署名に適切なプロパティ(アルゴリズム、キーのタイプとサイズなど)を選択することは、設定した条件に非常に依存します。データを安全に保持する期間と、それらを保護する敵のタイプ(偽造の価値は何ですか?同じキーで署名されたすべてのドキュメントを破壊する攻撃の価値は何ですか?)、規制要件はありますか?つまり、これらのビジネス要件を翻訳し、技術要件に翻訳できる専門家に相談する必要があります。
  • 安全なタイムスタンプ を署名に追加することを強くお勧めします。これにより、ドキュメントが改ざんされていないことを証明できるだけでなく、署名がいつ発生したかを証明することもできます。
27
Stephane

3つの主なオプションとそれぞれの長所と短所を概説します。

ファイルのバックアップを安全な場所に保存します

かなり自明です。 「安全な場所」は、読み取り専用メディア(CDなど)、または誰でも読み取ることはできるがスーパーバイザーのみが書き込みできるネットワークドライブ、またはファイルを偽造するのがかなり困難になるオンラインストレージサービス(Dropboxなど)にすることができます。変更日。

長所

  • とにかくバックアップシステムが必要です

短所

  • ファイルが大きい場合、検証のためにダウンロードするのに時間がかかる可能性があります
  • 偽造者が安全な場所に侵入した場合、彼は彼のトラックをカバーすることができます

ハッシュを安全な場所に保存する

ハッシュは次のようなファイルのフィンガープリントです 8f2e3f53aa90b27bda31dea3c6fc72f6; 2つのファイルが少しだけ異なる場合、それらのハッシュは異なります。元のファイルのハッシュを取得して安全に保存し、ファイルが変更されていないことを確認するには、ハッシュを取得して、格納されているハッシュと比較します。

長所

  • ファイル全体ではなく、32桁以下のコードを安全に保存/確認する必要がある

短所

  • ファイルを確認するには、引き続き外部リソースにアクセスする必要があります
  • 偽造者が安全な場所に侵入した場合、彼は彼のトラックをカバーすることができます

暗号化署名

この場合、1人以上のユーザーがファイルに「署名」でき、変更があった場合、これらの署名は無効になります。もちろん、ファイルに署名する必要があるすべての人が改ざんされたファイルに署名する意思がある(またはだまされている)場合は、改ざんされたファイルを回避できます。

長所

  • セキュリティ情報は、ファイルitself内に保存するか、同じドライブに保存できるため、検証が容易になります。

短所

  • ファイルに署名するすべての人は、誰かが自分の秘密鍵を盗むのを防ぐために非常に注意する必要があります。
  • ファイルに署名するすべての人は、自分が署名していることを知っている非常に注意する必要があります。
6
Artelius

Xmlファイルとお気に入りの休日の写真を撮ります。ファイルを連結し、結果のファイルのいくつかのハッシュ値を計算します。

休日の写真は、休日の写真ファイルが公開されている場合でも、衝突を発生させることが非常に困難であることを保証します。また、複数のハッシュアルゴリズムを使用する場合、これらすべてが10年のスパンで壊れる可能性はほとんどありません。

2

@Philippのコメントでの説明を拡張して、ベンダーのファイル形式のセキュリティに対処します。

私はベンダーのファイル形式(質量仕様ではありませんが、これらの目的には十分近い)を試してみました。ソフトウェアをインストールすることではるかに簡単になりましたが、私はこれらのことの専門家ではありません。メタデータは簡単に変更できました(メタデータを抽出することが最初の目標でした)実際のデータはより困難でしたが、決して変更することは不可能ではありませんでした。メタデータにはサンプルIDやテストの日付などが含まれているため、これは"サンプルがクリーンだったのはいつか?"に関係があるように思われる、または"最初にだれがこの薬を発見しましたか? "他の分野で。

一部ソフトウェアが提供する一部改ざん防止機能(例:内部使用-必ずしも暗号化グレードではない-ハッシュ;編集時のユーザー権限ソフトウェアを使用)。これらのリバースエンジニアリングは、ほとんどの場合、ある程度のスキルを持つ人にとっては些細なことです。ソフトウェアがインストールされていれば、組み込み機能を回避するだけで、ベンダーのDLLを呼び出すフロントエンドを作成するのと同じくらい簡単になります。 )。

(これは一連のコメントだったかもしれませんが、私の目標はベンダーファイルの問題をより明確にすることでしたので、適切に書く方が良いように思われました)。

2
Chris H

技術者に、独自のアカウントを使用して、一意のファイルIDとハッシュのペアをTwitterに投稿してもらいませんか?

これは次のことを証明します:

  • 投稿時に存在したIDとハッシュのデータファイル
  • アカウントへのアクセス権を持つユーザーが、その時点でファイルのコンテンツを信頼している
  • Twitterはツイートの編集を許可していないため、ファイルは事後変更されません

この方法は、デジタル署名ベースの回答の多くに少なくとも匹敵するセキュリティと次のような利点を提供します。

  • 学習と使用がはるかに簡単(複雑な秘密鍵の生成、オープンまたはバックアップ手順なし)
  • 高い冗長性(TwitterのバックアップとサードパーティのTwitterスクレイピングサイトによる)
  • 組み込みのタイムスタンプ(それはおそらく多くの説明なしで法的手続きに立つでしょう)

ハッシュアルゴとして少なくともSHA256を使用することをお勧めします。

1
billc.cn

最も簡単な方法の1つは、ファイルのハッシュを作成して別の場所に保存し、変更されたかどうかを確認することです。侵入検知プログラムは常にこの手法を使用して整合性を検証します(または、少なくとも一部の攻撃者がシステムファイルを操作しているかどうかを示します)。

[〜#〜] aide [〜#〜] などのプログラムを見てください。ファイルを含むディレクトリに対してこれを実行できます(ファイルが追加されたときにオンデマンドで実行できます)。ハッシュのデータベースを更新します。毎晩、それを実行して、すべてのファイルの変更を示すレポートを確認してメールで送信します。

オリジナルを知る必要がある場合は、 versioned filesystem をお勧めします。ファイルに加えられたすべての変更が記録され、古いバージョンを抽出できます。または、新しいファイルを検出して安全な場所にバックアップするバックアップシステムを使用することもできます(すべての古いバージョンを保持します-または、攻撃者は元のファイルが削除されるまで繰り返しファイルを変更する可能性があります)。

1
gbjbaanb