クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

ハッシュ値とメタデータ

このレッスンのあとで: ファイルが変わっていないことをハッシュ値で示し、メタデータを読むことができる。

55分のレッスンコマンド11件インシデント対応とフォレンジックのラボ:侵入されたサーバーをブラウザーで調べる

ハッシュ値でファイルの同一性を示す

ハッシュ値とは、ファイルの中身から計算する、短い文字列です。同じ内容なら必ず同じ値になり、1文字でも違えば、まったく違う値になります。

この性質を使うと、証拠のファイルが集めたあとも変わっていないことを、誰でも確かめられます。

このレッスンのゴール

メモ

ファイルが変わっていないことをハッシュ値で示し、メタデータを読むことができる。

キーワード

ことばいみれい
ハッシュ値ファイルの中身から計算した、短い文字列。指紋のようなもの
SHA-256証拠に使われる、ハッシュ値の計算方法の1つsha256sum
メタデータファイルについてのデータ。大きさ、時刻、持ち主など
更新時刻ファイルの中身が最後に書き換えられた時刻
所有者そのファイルを持つアカウント
改ざん中身をこっそり書き換えること

学生が入力するセルは、このプレビューでは空白です。

ハッシュ値は何を表すのか

文字列を入れると、決まった長さの値が出てくる計算を、ハッシュ関数と呼びます。SHA-256 なら、出る値は、いつも16進数の64文字です。

値から、元の内容を取り出すことはできません。でも、内容が同じかどうかは、値を比べるだけで分かります。

hello のハッシュ値

コマンド
printf 'hello' | sha256sum

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

Hello のハッシュ値

コマンド
printf 'Hello' | sha256sum

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

例: 1文字違うと全部が変わる

入れた文字列ハッシュ値の最初の8文字
hello2cf24dba
Hello185f8db3

学生が入力するセルは、このプレビューでは空白です。

集めたときの値と、あとの値を比べる

集めたその場で、ハッシュ値を計算して記録します。あとで調べるとき、もう一度計算します。2つが同じなら、その間、変わっていません。

記録した値は、ファイルとは別の場所に保管します。同じ場所だと、一緒に書き換えられるかもしれません。

小さな記録ファイルを作る

コマンド
printf 'order 100 yen\n' > memo.txt

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

集めたときの値を記録する

コマンド
sha256sum memo.txt > memo.sha256

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

記録した値と比べる

コマンド
sha256sum -c memo.sha256

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

こっそり1文字足す

コマンド
printf 'x' >> memo.txt

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

もう一度比べる

コマンド
sha256sum -c memo.sha256

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

例: 記録した値と、あとの値

時点memo.txt の値の最初の8文字結果
集めたとき19a0852c記録した
比べたとき(変更なし)19a0852c同じ。変わっていない
1文字足したあとea179c30違う。変わった

学生が入力するセルは、このプレビューでは空白です。

メタデータは、ファイルのまわりの情報

ファイルには、中身のほかに、大きさ、持ち主、権限、時刻の記録がついています。これをメタデータと呼びます。

時刻は3種類あります。更新時刻、アクセス時刻、変更時刻です。変更時刻は、持ち主や権限を変えたときも動きます。

ファイルの3つの時刻

名前動くときtouch で書き換えられるか
更新時刻(mtime)中身を書き換えたときはい
アクセス時刻(atime)中身を読んだときはい
変更時刻(ctime)中身、持ち主、権限を変えたときいいえ

学生が入力するセルは、このプレビューでは空白です。

更新時刻を自分で決める

コマンド
touch -d '2026-03-01 09:30:00 UTC' memo.txt

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

更新時刻を読む

コマンド
date -u -r memo.txt '+%F %T'

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

権限を決める

コマンド
chmod 640 memo.txt

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

権限を数字で読む

コマンド
stat -c '%a' memo.txt

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

よくある間違い

注意

「更新時刻が古いから、最近は触られていない」と考える人がいます。touch で、時刻は簡単に変えられます。時刻は手がかりで、証明ではありません。同じかどうかは、集めたときに記録したハッシュ値で確かめます。

このラボとソースについて: インシデント対応とフォレンジックのラボ:侵入されたサーバーをブラウザーで調べる

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。