- ベストアンサー
INIファイルの改ざんを検出する
- INIファイルの改ざんを検出するための効率的な方法はありますか?
- ソフトウェアでINIファイルを使用している際に、改ざんを防ぐ方法はありますか?
- INIファイルの改ざんを検出しやすい方法はありますか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
質問者さんも気づいているように、データとチェックロジック(ハッシュ値も含む)を同じ PC 上においたら改竄はできちゃうよ。 だから、せいぜい .ini ファイルを難読化して(↑の状態は暗号化とはいわない)、改竄する気をそぐことぐらいしかできないなぁ ということで、ユーザが自由に操作できない、ネットワーク上のサーバ(S)を使うことにするね。 あと、話がややこしくなるから、前提として、プログラムの開始で .ini ファイルを読み込むところから、終了の .ini を書き込むまでは安全だとするよ。 1) .ini のデータをべつのサーバ(S)に保存する サーバ(S)との受送信のタイミングで改竄可能だけど、前提があるので無視。 欠点はサーバに繋がらないと .ini ファイルが読めなくてプログラムが開始でできないこと。 2)公開鍵暗号技術を利用 .ini ファイルを保存するときは、サーバ(S)に秘密鍵で暗号化してもらう。 .ini ファイルを読み込むときはローカルに保存してある公開鍵で復号する。 これなら .ini ファイルを保存するときだけ、サーバ(S)に繋がればOk!。 ネットワーク接続がそもそも不可なら、暗号ロジックをプログラムに組み込むしかないなぁ(単なる難読化になるけど)。そうなると、アクティベーションキー方式で、鍵がかえられるようにしたほうがいいね。 こんなところかな?
その他の回答 (2)
安直な方法ですが… 1)iniファイルに書き出す値そのものを暗号化する 2)1つの値を複数のキーに持たせ、かつ異なるキーワードで暗号化する 3)複数キーを起動時に照合する これで改変の有無は検出できるのでは? 後はソーシャルエンジニアリング的手法として、目立つところにそれっぽいダミーのiniファイルを置いて、書き換えているふりをしているけど値は適当で、実体は別のところにある…なんてのも一時的には騙されてくれるかも知れません。
お礼
お礼が遅くなり申し訳御座いません。 ダミーはいいですね。 一時的にでも効果が期待できそうですね。 それに技術的にもそれほど難しいことでもありませんし。 ありがとうございました
- saijyo_739
- ベストアンサー率53% (119/222)
> 自分で考えたのは、 > アプリケーション終了時に > ・INIファイルのMD5ハッシュを取得、それを記憶。 > ・INIファイルのタイムスタンプを記憶。 > をして、次回起動時に現在のINIファイルのMD5,タイムスタンプと比較して、改ざんを検出するというものです。 > >ですが、この方法だと結局はMD5のハッシュ値やタイムスタンプをどこかに保存しておかねばならず、 >そうなるとそれらも改ざんされる恐れがあって結局意味を成さなく成ってしまいます。 保存先を実行ファイルの中、数カ所に分けてなどすれば簡単には改竄し難くなるのでは。 『それらも改ざんされる恐れがあって結局意味を成さなく成ってしまいます』そこまでする方は少ないかと思いますよ。 要するに、少しでもやれば書き換えれる方法に辿り着く者は減る。それがより面倒にすれば更に減るのだと思います。 インストーラで実行ファイル中に埋め込んだって、インストール前のアーカイブから抽出したデータとバイナリ差分とればわかるかも知れませんが、そこまでする者はずっと減るのでは。 MD5ハッシュもちょっと値を組み替えるだけでもそのまま使うより減らせるかも知れませんし。
お礼
お礼が遅くなり申し訳御座いません。 やっぱり完全な改ざん防止は出来ないようですね。 難読化に努めたいと考えています。 ありがとうございました
お礼
お礼が遅くなり申し訳ありません。 たしかに、ローカルに保存して置く以上改ざんは防げないですよね。 暗号化(難読化)やサーバへのアップロードする方法がよさそうですね。