情報処理安全確保支援士(情報セキュリティスペシャリスト)試験に合格するためのサイトです。
過去問を多数引用しながら、基礎知識をしっかり学んでもらうように作ってあります。
また、情報処理安全確保支援士(情報セキュリティスペシャリスト)を楽しく学べるように工夫したいと思います。
カテゴリ:

3.暗号 > 3.4 ハッシュ関数

プロ野球ダイジェスト(プロ野球ニース)の特徴を言え
 ※ハッシュ関数を意識して
ダイジェストの放送時間は決まっている
試合がどんなに長くても、短くても、ダイジェストの放送時間は(だいたい)決まっている。
放送時間の枠があるので、たとえば、1試合あたり1分とか2分とか。

同じ試合のダイジェストは同じ
プロ野球ファンの人は、好みの球団が勝つと、プロ野球ニースをハシゴする人がいる。しかし、その内容は各局でほとんど同じだ。同じ試合からできるダイジェスト版は(ほぼ)同じである。

ダイジェストから本当の試合は見れない
ダイジェストで放送されなかったシーンなどを知りたい人もいるだろう。でも、それは絶対に不可能だ。本当の試合からダイジェスト版は作れるが、ダイジェスト版から本当の試合を作ることはできない。
ハッシュ関数_情報セキュリティスペシャリスト試験
ハッシュ関数は、ハッシュ値(メッセージダイジェスト)を作成するもので、プロ野球のダイジェスト版が短時間での内容であるのと同様に、メッセージダイジェストは文書の短編版です。ハッシュ関数にはMD5やSHA-1がありますが、これらの危殆化の問題があり、SHA-2などが利用されるようになっています。
※hashとは、「細切れにする」などの意味があります。

特徴は以下だ。上記のプロ野球のダイジェスト版と特徴が似ているのが分かる。
 どんな長さのデータも必ず固定長になる
 同じメッセージからは同じハッシュ値が出力される
 ハッシュ値から元のメッセージを求めることはほぼ不可能
この3つ目の特徴から、暗号としての機能を持つ。

過去問(H24春AP午前)を見ましょう。
問38 ディジタル署名などに用いるハッシュ関数の特徴はどれか。
ア 同じメッセージダイジェストを出力する異なる二つのメッセージが,容易に求められる。
イ メッセージが異なっていても,メッセージダイジェストは同じである。
ウ メッセージダイジェストからメッセージを復元することは困難である。
エ メッセージダイジェストの長さはメッセージの長さによって異なる。
先ほどの特徴を理解していれば、簡単だったことでしょう。正解はウです。アは、メッセージダイジェストからメッセージを求めるのはほぼ不可能です。イはメッセージが異なれば、メッセージダイジェストも異なります。エは、メッセージダイジェストの長さは、常に同じです。

もう一問、以下の問題を解こう。
セキュアハッシュ関数SHA-256を用いて、32ビット、256ビット、2048ビットの三つの長さのメッセージからハッシュ値を求めたとき、それぞれのメッセージのハッシュ値の長さはどれか(H22SC春午前Ⅱ問1)
答えは当然ながら全て256ビットである。

ハッシュ関数の機能は、暗号だけでしょうか。それだけではありません。改ざん検知としても利用されます。その手順の理解を含めて、以下の過去問(H24秋AP午前)を解きましょう。 
問38 手順に示すハッシュ関数とメッセージダイジェストの処理を行うことで得られるセキュリテイ上の効果はどれか。ここで,メッセージダイジェストは安全な方法で保護され,改ざんや破壊がされていないものとする。
〔手順〕
(1)送信者Aは,電子メールの本文からハッシュ関数を用いて,メッセージダイジェストを作成する。電子メールの本文とメッセージダイジェストを別々に受信者Bに送信する。
(2)受信者Bは受信した電子メールの本文からハッシュ関数を用いて,メッセージダイジェストを作成する。その作成したメッセージダイジェストと,受信したメッセージダイジェストを比較する。
ア 電子メールの改ざんの有無の確認
イ 電子メールの誤送信の防止
ウ 電子メールの送達確認
エ 電子メールの盗聴の防止
答えはアです。

以下の問題を考えよう。
「160ビットの出力データを生成し、改ざんの検出に利用するアルゴリズム(H21春SC午前2問6)」は何か。
この問題の正解はSHA-1である。

過去問を参考に、シノニムについて整理したい。
ハッシュ関数Hash(key)は,  keyを基にデータの格納位置を算出して,戻り値として戻す。格納位置は1~Nの整数となる。関数Hash(key)が,異なるkeyから同じ格納位置を算出することを,シノニムの発生という。(H23春AP午後)
シノニムは、衝突(collision)という言葉でも使われる。Synonymとは「同意語」という意味であり、ハッシュ関数の結果が同じことからこう呼ばれるのだろう。
次の問題を見てみよう。
衝突(collision)とはどのような現象か。“キー”と“ハッシュ関数”という単語を用いて,35宇以内で述べよ。(H21春AP午後問2設問1より)
試験センターの解答例は「違うキーの値でも,ハッシュ関数を適用した結果が同じ値になること」

違う問題を見てみよう。
問2 4,999を除数とする剰余を用いるハッシュ関数で,キー値が12,500のレコードに対するシノニムレコードのキー値はどれか。
ア 2
イ 1,250
ウ 2,501
エ 17,499 (H17秋共通午前)
シノニムレコードなので、剰余が同じものを探せばよい。
12500 ÷ 4999 = 2 あまり2502
2 ÷ 4999 = 0 あまり2
1250 ÷ 4999 = 0 あまり1250
2501 ÷ 4999 = 0 あまり2501
17499 ÷ 4999 = 3 あまり2502
よってエ

パスワードを暗号化するために利用されているハッシュ関数。ハッシュ値から元のパスワードデータを復元することができないというのが、ハッシュ関数の特徴である。
2
しかし、パスワードなんてしょせん10文字以内。
今のコンピュータ性能であれば、できるのでは?
この疑問に関して、ズバリ過去問(H20SV午後Ⅰ問4)で解説されている。
M君 :しかし,部門サーバのOSでは,パスワードはハッシュ化されています。ハッシュ値からパスワードを復元することは,困難なのではないでしょうか。
H主任:パスワード候補のハッシュ値をあらかじめ計算し蓄えておいたテーブルを利用して,ハッシュ値からパスワードを特定する方法もある。例えば,小文字のアルファベットと数字で作成される7文字のパスワードの候補数は,[ d ]で表されるから,約780億通りになる。1秒間にパスワードを1万回試すことができるとすると,すべてのパスワードを試すには,約91日必要だ。ところが,テーブルがソート済みで2分探索法を利用できるとすると,テーブルのデータ数をNとして,最大比較回数は[ e ]を超えない整数値になる。1回の比較に100ミリ秒かかるとしても,最大3.7秒で探索できることになる。
M君 :なるほど。ただし,約780億通りだとすると,テーブルのサイズはかなり大きくなりそうですね。
H主任:そのとおりだ。パスワードとハッシュ値の一組当たりのサイズを30バイトとすると,全体で約2.4 T (W)バイトのテーブルになる。しかし,レインボーテーブルというテーブルを用いた攻撃では,ハッジュ値の計算を併用することによって,テーブルのサイズを抑えつつ,数秒から数分でほとんどのパスワードを解読できたという報告がある。
M君 :それは危険ですね。では,どうしたらいいのでしょうか。
H主任:パスワードの情報だけでなく,ソルトという情報を付加してハッシュ値を計算することによって,ハッシュ値からパスワードを特定しにくくする方法を採用したOSを導入するのがいいだろう。

設問4 サーバに対する不正ログインについて, (1)~(3)に答えよ。
(1)本文中の[ d ],[ e ]に入れる適切な数式を解答群の中から選び,記号で答えよ。
解答群
ア 736 イ 36^ ウ 36^7 工 36^7
オ log2N カ log10N キ N log2N ク Nlog10N
(3)ソルトを使用するとハッジュ値からパスワードを特定しにくくなるのはなぜか。その理由を, 40字以内で具体的に述べよ。
この、問題(3)を考えましょう。
難しい問題ですが、順を追って説明します。

パスワードの保存方法
ユーザ認証用のパスワードは、認証サーバにて、そのままの平文で保存されているわけではない。ハッシュ値によって暗号化されている。
SE娘の剣)ソルトその1
929c854c

最近は不正アクセスによって、OCNのIDパスワードが最大400万件流出の可能性というニュースを聞きました。でも、確かにこのようにハッシュ化されていれば、元のパスワードは分からないですね。
そうなんだ。でも、最近は攻撃者もあの手この手で攻めてくる。
以下のように、パスワードとハッシュ値をデータベース化しておくのだ(レインボーテーブル)。そして、不正入手したパスワードのハッシュ値から元のパスワードを見つければよい。
SE娘の剣)ソルトその2
そこで、ソルトの登場だ。パスワードをハッシュするときに、ランダムな値(ソルト)を付加する。これにより、同じパスワードでも、ソルトが違うので、ハッシュ値も違う。攻撃者はレインボーテーブルを用意できなくなるのだ。
SE娘の剣)ソルトその3
解答
・同じパスワードでもソルトが異なるとハッシュ値が変わるから
・攻撃者がソルトの値ごとにテーブルを用意する必要があるから

ちなみに、ソルト(salt)とは、塩コショーの「塩」で、ハッシュのセキュリティを強化するために、塩を振りかけるという意味である。

フィンガープリントを直訳すると「指の印刷」なので、指紋と考えればよく、その実体はハッシュ値である。たとえば、公開鍵であれば、そのフィンガープリントは公開鍵のハッシュ。
fin












政府認証基盤(GPKI)のフィンガープリントは以下で公開されており、ブラウザの拇印を確認することで、検証することが可能だ。
https://www.gpki.go.jp/selfcert/finger_print.html

過去問を見てみよう。
設問1 (3) PGPでは,通常,証明書のフィンガプリントを確認するが,正しいフィンガプリントの入手方法として安全と考えられるものを一つ挙げ, 30字以内で述べよ。(H22春SC午後I問3)
試験センターの解答例:紙媒体でフィンガプリントを入手する。

フィンガープリントの例1:メールの署名
メールの署名に以下のように付けている場合もあるだろう。
♪♪------------♪♪------------
Shihoo Samon <samon@4hoo.net>
Fingerprint:9c07 e4a4 3567 0c3d 23f3 42c2 83f1 62b6 c0bc 932d
 
フィンガープリントの例2:ブラウザ
ブラウザに証明書が入れられているのであれば、ブラウザから確認できる。
「インターネットオプション」「コンテンツ」「証明書」で該当の証明書を開く。「詳細」タブの「拇印」で確認できる。
finger


このページのトップヘ