チェックサム法
マルウェアの検出手法の1つ。感染していないことを保証する情報(チェックサムなど)を、あらかじめ検査対象に付加しておき、検査時にそれと照合して、不整合があればマルウェアとして検出する。インテグリティチェック法ともいう。
イマシルちゃんの解説
お菓子の箱に、「中身は全部で12個、重さは300g」っていうシールを貼っておくとするね。
あとで箱を開けて数えたときに、数や重さが合わなかったら、
「誰かが中身をすり替えたかも!」ってわかるよね。
チェックサム法は、ファイルにこんな「確認用のシール」を貼っておくやり方なんだよ!
より深い解説
定義
チェックサム法(インテグリティチェック法)は、感染していない時点で、検査対象のファイルからチェックサムやハッシュ値などの検証用の値を計算し、検査対象に付けて(または対応付けて)おく。検査時に改めて計算した値と照合し、一致しなければ、ファイルが改変された(マルウェアに感染した可能性がある)と判断する。
チェックサムとは
チェックサムは、データを一定の規則で計算して得られる短い値で、データが変化していないかを確かめるために使う。
| 種類 | 特徴 |
|---|---|
| 単純なチェックサム | データの値を足し合わせたもの。計算が簡単だが、意図的な改ざんは見抜けない |
| CRC | 伝送路の誤りの検出に強い。イーサネットのFCSなどで使われる |
| 暗号学的ハッシュ関数(SHA-256など) | 同じ値になる別のデータを作ることが極めて難しい。改ざんの検出に向く |
マルウェアは、検証用の値まで計算し直して書き換えることがあるため、単純なチェックサムでは不十分である。さらに、検証用の値が改ざんされないように、デジタル署名を付けたり、安全な場所に保管したりする必要がある。
コンペア法との違い
| チェックサム法 | コンペア法 | |
|---|---|---|
| 比較の基準 | 検査対象に付加した検証用の値 | 安全な場所に保管した原本やそのハッシュ値 |
| 弱点 | 検証用の値ごと書き換えられる恐れ | 原本の保管と更新の手間 |
コード署名
チェックサム法の考え方を発展させたものに、コード署名がある。ソフトウェアの開発者が、プログラムのハッシュ値にデジタル署名を付けて配布し、OSや利用者は、署名を検証して、プログラムが改変されていないことと、開発者が本物であることを確かめる。検証用の値を秘密鍵で署名しているため、マルウェアがプログラムを改変すると、署名の検証に失敗する。
マルウェアの検出手法の比較
| 手法 | 検出の手がかり | 未知のマルウェア |
|---|---|---|
| パターンマッチング法 | 定義ファイルのパターン | 検出できない |
| ビヘイビア法 | 実行時の振る舞い | 検出できる |
| コンペア法 | 原本との比較 | 改変は検出できる |
| チェックサム法 | 付加しておいた検証用の値 | 改変は検出できる |
コンペア法とチェックサム法は、「何のマルウェアか」ではなく「改変されたかどうか」を調べる手法である。