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

無料レッスン

パスワードとハッシュの仕組み

このレッスンのあとで: パスワードをハッシュで保存する理由を、説明することができる。

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

パスワードは保存されていない

ちゃんとしたサービスは、あなたのパスワードをそのままの形では保存しません。代わりに、ハッシュという、元に戻せない値を保存します。

データが流出しても、ハッシュなら被害を小さくできます。今日は、その理由と、破られ方を学びます。ラボでは、自分のマシンの中だけを使います。

このレッスンのゴール

メモ

パスワードをハッシュで保存する理由を、説明することができる。

キーワード

ことばいみ
ハッシュ文字列から作る、元に戻せない決まった長さの値
ソルトハッシュを作る前に足す、ランダムな文字列
総当たり攻撃パスワードを片っ端から試す手口
辞書攻撃よく使われる単語の一覧で試す手口
二要素認証パスワードのほかに、もう1つの確認を使う方法

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

守るべき約束はひとつ

注意

ここで試すのは、自分専用のラボのマシンの中だけです。他人のパスワードや他人のアカウントに、何かを試してはいけません。上のバーの Start the lab を押してください。

ハッシュとは何か

ハッシュは、どんな長さの文字列からも、決まった長さの値を作る計算です。同じ文字列からは、いつも同じ値ができます。

一文字でも違うと、値はまるで別物になります。そして、値から元の文字列へは、戻せません。

ログインはハッシュどうしを比べる

サービスは、登録のときに、パスワードのハッシュだけを保存します。ログインのときは、入力されたパスワードからハッシュを作ります。

保存してある値と同じなら、正しいパスワードです。パスワードそのものは、どこにも残りません。

「password」のハッシュを作る

コマンド
printf 'password' | sha256sum

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

大文字にして、もう一度作る

コマンド
printf 'Password' | sha256sum

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

例: 一文字違うだけで別物

もとの文字列ハッシュの最初の16文字
password5e884898da280471
Passworde7cf3ef4f17c3999
password10b14d501a594442a

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

総当たりと辞書で破られる

ハッシュは戻せなくても、攻撃者は推測した文字列のハッシュを作り、盗んだ値と比べられます。辞書攻撃は、よく使われる単語から順に試します。

短く、ありふれたパスワードほど、早く当たります。長いほど、試す数が急に増えます。

例: 長さで試す数がふえる

使う文字長さすべての組み合わせ
数字だけ(10種類)4けた10,000
数字だけ(10種類)8けた100,000,000
小文字だけ(26種類)8文字約2000億
小文字と数字(36種類)12文字約4.7京

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

よくある間違い

注意

「ハッシュにしたから、パスワードは絶対に安全だ」と考える人がいます。ハッシュは戻せなくても、短いパスワードは推測で当てられます。長さと、ありふれていないことが、どちらも必要です。

ソルトで同じ値をなくす

同じパスワードの人は、同じハッシュになってしまいます。攻撃者は、よくあるパスワードのハッシュの一覧を前もって用意できます。

ソルトは、人ごとに違うランダムな文字列です。パスワードの前に足してからハッシュを作ると、同じパスワードでも、値が人ごとに変わります。

ソルトを前に足して作る

コマンド
printf 'k9xpassword' | sha256sum

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

例: ソルトでハッシュが変わる

ソルトパスワードハッシュの最初の16文字
なしpassword5e884898da280471
k9xpassword5ba7a068553bcb6b
abhunter2451a4d805351e7d7

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

さらに挑戦: 二要素認証

パスワードが盗まれても、もう1つの確認があれば、入られません。スマホに届く番号や、指紋が、その例です。

自分がよく使うサービスのうち、二要素認証を使えるものを3つ探してください。ただし、設定を変えるのは自分のアカウントだけです。

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

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