• 締切済み

ハッシュ値について

ハッシュ値をHDDやメディアのファイル破損調査に使用しようかなと思っているのですが、いかがでしょうか? 例えばファイルの保管前にハッシュ値を取得し、その1年後ぐらいに改めてハッシュ値を取得、それを前回のハッシュ値と較べて、一緒であればファイルは破損していません、という考え方でいいのでしょうか? 何らかの理由でHDD・メディア上でファイルが破損し、しかし同じハッシュ値が検出されるということは有り得ないですよね? すいません、どなたかご返事お待ちしております。

みんなの回答

  • qaaq
  • ベストアンサー率36% (146/404)
回答No.5

>前回のハッシュ値と較べて、一緒であればファイルは破損していません、という考え方でいいのでしょうか? 違います。 ”前回と同じ可能性がある”だけです。 完全に一致している事を証明するには、『コピーと照合』するしかありません。 ハッシュ関数は、”衝突”が避けられないです。 実際に、数年前に同じファイルサイズで、md5の値が同じもの(これを”衝突”という)が発見されています。 http://itpro.nikkeibp.co.jp/free/ITPro/Security/20041008/151030/ 利用者の立場では、単一のハッシュ関数に頼るのではなく、 複数のハッシュ関数の一致を確認した方がより安全でしょう。 # これも、『コピー(バックアップ)』より劣りますが。 参考までに、FreeBSDのportsコレクション(*1)では、md5とsha1とファイルサイズが一致した場合”正しい”として動作するように作られています。 *1:FreeBSDでのアプリケーションを手軽にインストールする仕組み。 インターネットを介してファイルの正常性を確認する必要がある。 この手の話題は、”暗号化 ハッシュ関数 md5 sha1”等をキーに検索すると沢山出て来ますね。

全文を見る
すると、全ての回答が全文表示されます。
  • natu2000
  • ベストアンサー率69% (83/119)
回答No.4

>同じハッシュ値が検出されるということは有り得ないですよね? 例えばAとBのファイルがそれぞれあって 両者はファイルサイズが違っていて明らかに違うだろうと思っていても ハッシュ値が同じなんてことはあります。 これはハッシュの精度?(何パターンの種類?)だと思うのですが 例えばAとBをCRC16でハッシュ値をとってみると同じだが CRC32で取ってみると異なるハッシュ値だった ということがあります。 単純にCRC16とCRC32ではbit?の桁数が上がったので ハッシュパターンも増え、異なった数字が出たに過ぎないわけです とはいえ、やはりCRC32も限界になってくるので md5なんてものがあるわけですが md5もやはり同じ値を示す場合があります(あきらかにファイルサイズが違いのに同一のmd5値など) 現状、ハッシュをとるというのは 精度や普及状態をみるとmd5がモアベターなのですが ほかの人も言うように、ハッシュをとると必然的に ハッシュ値をもとめている時間が掛かります。 例えばファイルサイズにもよるのですが、 数Gだと1-3分ほど待つことになります。 md5は精度が高いので時間が掛かるのですが 例えばCRC16に変更してもG単位では1-3分かかって大差ありません。 当方は、dcfさんと違うのですが、 ・ファイルサイズが同じでもmd5でみたら異なるファイル ・ファイル名はまったく違うがファイルサイズは同じでmd5も同じ (ファイルがなんらかの経路をわたる際に名前を変えた可能性) ・書庫の種類・圧縮率が異なるものの中身は同じ書庫ファイル というのを検索したかったので つまりファイルの重複チェックをしたかったのですが ベクターにこういうソフトって無いんですよね。 結構md5で修復チェックするようなのもあるのですが 総ファイル数1万超えて1つ1つが200Mとか2G単位とか色々あるので もうそんなのまでmd5だと、何時間あっても足りないんですよね でまぁ仕方ないから自分で要件を満たすソフトを自作したんですけどね おかげで2G以上もあるファイルも、 わずか1-2秒足らずでハッシュ値出しますし180秒ぐらいあれば 250-300GのHDぐらいは、丸ごとハッシュ値出せるようになったわけで・・・・・ おっと少し脱線してしまいましたが、 >しかし同じハッシュ値が検出されるということは有り得ないですよね? md5なら確立は低いと思います。 やはりどうしても、md5値が同一でもファイルサイズがハナから 異なっているという状況があることは何万分、何億万分の1程度は あるはずで・・・・・・ありえないことはないという状況です。 ただファイルサイズは同じで、md5値が同じであるけど 実は中身のファイルは異なるなどは、かなり稀でしょう たぶん皆無だと思います。 これだと最早、ファイルサイズは同じで、md5値が同じ ファイルの中身も開いてみたけど同じようだという状況と 一見して開いて黙視して見るまでは同じに見えるわけですから 始末に悪いですよね。 あと老婆心ながら言いますが少し思ったので良いますが md5値からファイルの中身は復元できません。 その時点で壊れていると思うという判断は出来ますが 正常なmd5があれば壊れたファイルで何とか、もとのファイルに戻す なんてことは出来ないので、そこのところは気をつけたほうが良いです。 また海外のソフトでmd5からファイルを作るというソフトがありますが オリジナルと同一のモノは出来ません。 これは先ほど説明したとおりです。念のため。

dcf
質問者

お礼

ありがとうございました。 ハッシュ値はMD5を使用しようと考えております。

全文を見る
すると、全ての回答が全文表示されます。
  • dekopa-
  • ベストアンサー率42% (161/378)
回答No.3

>何らかの理由でHDD・メディア上でファイルが破損し、しかし同じハッシュ値が検出されるということは有り得ないですよね? 異なるファイルから同じハッシュ値が算出される、という可能性はあります。 ただまあ、確率的にあり得ませんが。 ファイルが壊れているかどうかを調べるには、ハッシュはあまり向いていないと思いますよ。 理由は、ファイルの破損は別の手段(破損を防ぐファイルシステムの機能)などで既に保護されているのが一般的で、わざわざハッシュ値を計算する手間を増やしてもメリットがないからです。 また、壊れているのが分かっても回復する手段が無いですし。バックアップでも取った方がよほど前向きです。

dcf
質問者

お礼

ありがとうございました。 バックアップは外付けHDDとCD-RまたはDVD-Rで取ろうと考えております。

全文を見る
すると、全ての回答が全文表示されます。
  • chirubou
  • ベストアンサー率37% (189/502)
回答No.2

「前回のハッシュ値と較べて、一緒であればファイルは破損していません、という考え方でいいのでしょうか?」 というのは正しくないです。 「ハッシュ値が違えば、ファイルの内容が変化している(壊れている)」というのは正しいです。逆に言えば「ハッシュ値が一緒でもデータの一部が異なる場合がある」ことになります。 例えば、簡単なハッシュ値の計算として排他的論理和(xor)をとる場合を考えてみましょう。これはデータの値を全て xor することでハッシュ値を求めることができますが、例えばデータの順序が入れ替わってもハッシュ値は変わりません。 基本的に、ハッシュ値で表すことができる場合の数は、ファイルのデータ全てによって表す事ができる場合の数より小さいので、避けようがありません。ハッシュ値が、何ギガバイトもあるデータファイルでも 例えば 256 bit とか程度の数値で表現できる、ことに大きな意味があるからです。 例えばあるディスク内にあるファイルの数が、10 の 9 乗(10億!)個あったとしても、これは 30 bit で表すことができる数ですので、ディスクにあるファイルが同じ、例えば 256 bit のハッシュ値を持つ「可能性」は非常に低いと考えられます。つまりハッシュ値を使えば「同じ内容(かもしれない)ファイル」を容易に識別することが可能になります。 以前、質問者さんと同じような目的で md5 を計算し、ファイルの変更の有無を検出できるよう、簡単なスクリプトを書いたことがありますが、基本的にハッシュの計算にはファイルを全て読み込むため、期待した程高速にはなりませんでした。まあ、以前のバックアップデータを取っておく必要がない、2つのファイルを比べるよりは速い、というのが利点ということでしょうか。 確かに No.1 さんのおっしゃる通り、破損、変更、改ざんを見つけるためにハッシュ値が実際に使われていますが、これは、他により有効な方法がない(見つかっていない)ためです。ということで、100% 確実な方法ではないことにご注意ください。つまりは、全くチェックする方法がない、というよりマシという考え方で使われているのです。

dcf
質問者

お礼

ありがとうございました。 >例えばデータの順序が入れ替わってもハッシュ値は変わりません。 ですが、データの順序とは「1」「0」の順序が変わるということですか? 順序が変わるとファイルの中身ももちろん変わるということですよね。 同じデータで順序が変わったり、「1」「0」の数値が抜けたり増えたりするということは、 データが壊れている、という認識でよろしいでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • venzou
  • ベストアンサー率71% (311/435)
回答No.1

>ファイル破損調査に使用しようかなと思っているのですが、いかがでしょうか? 既に利用されていますよ。 特に通信中のデータの破損チェックなどに使われていると思います。 HDD・メディアの破損による、データ破損チェックにも有効だと思います。 フリーソフトも、色々出てますよ。 http://www.vector.co.jp/vpack/filearea/win/util/bin/

dcf
質問者

お礼

ありがとうございます。紹介して頂いたソフトの中でbkhashesを利用していました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ハッシュ関数について質問です。

    プログラミング・数学? 初心者です。 IDやパスワード管理によく出てくる一次方向(ハッシュ)関数ですが、 よくパスワードとSALTを一緒にしてハッシュ関数を通してハッシュ値を取得しますよね。 そしてその結果(データベースなどに記録済み)とログイン時に入力した値とを照らし合わせるわけですが、 昔まだ若いころ、これとは別のタイプのハッシュ関数を使用したことがあります。 それはある(パスワードなどの)値をハッシュ関数で処理すると「いろんなハッシュ値」が生成され、 そのハッシュ値から当然パスワードは予測できないのですが、 しかしその複数のハッシュ値は全て、そのパスワードから生成されたハッシュ値だということは分かる、という関数を使用したことがあります。 その時はperlのcpanモジュール(名前を覚えていません。すいません。)を使ったのですが、この別のタイプのハッシュ関数はどういう仕組みで作られているのでしょうか? SALTが複数あり、そのそれぞれについて照合している?だけでしょうか? それとも私が無知で、そんな関数がそもそも存在するだけでしょうか? わかりません。教えてください。

  • オフライン117のハッシュを教えてください

    (株)ユアネーム制作のフリーソフト,オフライン117を お使いの方・お持ちの方にお願いします。 お持ちのオフライン117のバージョンと offline117.exeのハッシュを教えてください。 ハッシュはMD5等フリーソフトで算出できるもの であれば何でも構いません。 (株)ユアネームのWebページ・Vector 以外 から入手された方はその旨併記してください。 (できれば入手元を教えてください) 最近のウイルスは出来が良く,本体を暗号化するので ウイルス対策ソフトで検出できないものもあるとか。 私自身現用しており,怪しい兆候も無いのですが, 一応,改変が無いことを確認したいのです。 私が使用しているもの: ver. 20110201 MD5: D5CAB188D2D5B6F240D1029C5FFF9918 前回の質問: okwave.jp/qa/q8818822.html

  • 破損ファイルの復元

    破損ファイルの復元の仕方を教えて下さい 自分で調べたりしましたがお手上げです 経緯は 1,旧PC(XP・ハンダ付けメモリー破損)のHDDを取り外す(この時点では、破損の兆候はなかったと思います) 2.そのHDDを、ケースに入れて新PC(7)につなぐ 3.リカバリ領域しか認識しなかったため、リカバリ領域のパーティションをソフトで消す 4.中身(旧PCのCドライブ)を見ると、ところどころに破損ファイル 現在の状態は ・HDD内の一部ファイルが破損状態 ・破損ファイルに決まった法則はないと思わます ・ファイルの容量は同じです ・ハッシュ値、バイナリは全て違うようです ・画像などのメディアファイルだけでなく一部のシステムファイルも破損?(レジストリに依存しないソフトをコピーしても起動しない。もちろん、7で動くことは確認してるソフトです) ・ファイナルデータ(製品9.0)で復元しても、破損ファイルのまま出てきます ・チェックディスクをしても変わらず 今は以上のことしかわかってません どうか、データを救出する方法があったら教えて下さい。 あと、情報不足なら、言ってもらえれば調べます よろしくお願いします

  • 大容量のデータの保管方法

    皆さん、こんにちは。 データの保管に関して相談させてください。 大体半年で500GB程度の増加が見込まれるデータを取り扱っています。 今のところそのデータ群はHDDの破損が心配なので、500GBx2のHDDでミラーリングして格納しています。 しかし、そろそろデータが一杯になってきたので、データの保管の事も考えなくてはいけなくなってきました。 HDDが壊れるのが心配なので、同一ファイルを二重にして5年程度は保存しておきたいのですが、こういったデータはどのように保管しておくのが安全かつ一般的なのでしょうか? 今の状態ですと、500GHDD2台をそのまま引き抜いて、倉庫にでもしまっておくという感じになりそうですが、どうなんでしょう。 もっと良い方法なり保管メディアがあるようでしたら、ご紹介頂けますと幸いです。 よろしくお願いいたします。

  • Windowsログ セキュリティ イベント6281

    コードの整合性によって、イメージファイルのページハッシュが有効でないと判断されました。このファイ ルはページハッシュを使用せず正しくない方法で署名されたか無許可の変更によって破損した可能性 があります。無効なハッシュはディスクディバイスエラーの可能性を示している場合もあります。 \Device\HarddiskVolume3\Window\System32\sxs.dll ファイルを指名して実行 ..........別の場所に移動した可能性があります。 これは何のプログラムのファイルですか、なるべく簡単に説明をお願いします。

  • Windowsログ セキュリティ イベント6281

    コードの整合性によって、イメージファイルのページハッシュが有効でないと判断されました。このファイ ルはページハッシュを使用せず正しくない方法で署名されたか無許可の変更によって破損した可能性 があります。無効なハッシュはディスクディバイスエラーの可能性を示している場合もあります。 \Device\HarddiskVolume3\Window\System32\sxs.dll ファイルを指名して実行 ..........別の場所に移動した可能性があります。 これは何のプログラムのファイルですか、なるべく簡単に説明をお願いします。

  • Media player11を使用できません

    Media player11でネット上の画像を見ようとすると「Windows Media デジタル著作権管理 (DRM) コンポーネントによってエラーが検出されました。オンライン ストアから取得したファイルを使用している場合は、オンライン ストアに移動して、適切な使用権限を取得してください。」とのコメントがでます、どうすればよいのでしょうか?

  • KNOPPIXで破損したlinuxを救済できますか?

    KNOPPIXで破損したlinuxを救済できますか? 下記のアイテムがあります。 1.OSの破損したlinux(centos5)のマシン 2.USB外付けHDD 3.KNOPPIXを焼いたメディア 1のマシンに2のHDDを接続して、3のメディアから起動し、 1の内蔵HDDのファイルを2の外付けHDDにコピーしたいのですが可能ですか?

  • yahoo動画を閲覧するとメディアプレーヤーのエラーがでます

    yahooの無料動画を見ようとしたら下記のメディアプレーヤのエラー が表示されます。 「Windows Media デジタル著作権管理 (DRM) コンポーネントによって エラーが検出されました。 オンライン ストアから取得したファイルを使用している場合は、 オンライン ストアに移動して、適切な使用権限を取得してください。」 で、ヘルプをクリックすると英語のページがでてエラーコード(だと思います) が C00D11E2 とでます。ネットで自分なりに調査したのですが 解決方法がわかりません・・・どなたかご教授頂けないでしょうか? OSはvista Home Premiunmです。宜しくお願い致します。

  • ウィルス駆除ソフトって、

    どこまで検出できるのですか? 1.HDD内の無圧縮ファイル 2.HDD内の圧縮(LZH,ZIP)ファイル 3.HDD内の(圧縮後)分割ファイル 4.マウントされているリムーバブルメディア 時々HDDのウィルスチェックをかけるのですが、 どこまで検索しているのかわからないのです。 よろしくお願いします。