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