平成21年秋期 午後問4について質問です。

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
受験者さん  
(No.1)
上記の問題の設問2について質問があります。
空欄Cには方法2が当てはまらず、空欄Dには方法2が当てはまる理由がわかりません。

空欄Cについて
「通信経路上の通信内容が盗聴」
設問内の図2を見ると、経路上のやり取りは①ID②チャレンジ値③レスポンス④ログイン可否の4つであり、①②③④全てを盗聴されたと捉えました(ここの解説では①③のみとありましたが、その理由がよくわかりませんでした)。①~④を盗聴できるのならば、②と③と公知のハッシュ関数からパスワードが逆算できるのではないのでしょうか?

空欄Dについて
「キーボード入力を読み取る」
設問内の図2を見て、端末側が入力するものは①ID②レスポンスだと捉えました(ここの解説ではIDとパスワードを直接読み取っているとありましたが、その理由がよくわかりませんでした。)。①②だけを把握できてもチャレンジ値が分からないのでパスワードを逆算できないのではないのでしょうか?

よろしくお願いします。
2015.09.15 11:54
かぼちゃさん 
(No.2)
空欄Cについて
【②と③と公知のハッシュ関数からパスワードが逆算できるのではないのでしょうか?】
実は、①~④すべて盗聴されても大丈夫なんです。↓を読んでね。
ハッシュ値は
「ハッシュ値は元のデータの長さによらず一定の長さとなっており、同じデータからは必ず同じハッシュ値が得られる一方、少しでも異なるデータからはまったく異なるハッシュ値が得られる。不可逆で情報量の欠損を含む計算過程を経るため、ハッシュ値から元のデータを復元することはできない。」  IT用語辞典  引用

例えば、情報処理試験でよく使われるmod(a,b)で試してみましょう。
(aを入力したパスワード、bをチャレンジとする)
mod ( 10 , 3 ) = 1
mod ( 13 , 3 ) = 1
どうでしょうか?
公知のハッシュ関数「mod関数」を使って、チャレンジは「3」で、レスポンスは「1」です。パスワードの逆算はできるでしょうか?…出来そうな感じがしてできないようになっているんです。

空欄Dについて
「端末側が入力するものは①ID②レスポンスだと捉えました」とあり、図2でも矢印がサーバに伸びていますが、②はキーボード入力ではありません。
まず、チャレンジレスポンス方式をわかりやすくしましょうかね↓
ユーザ:「ID」と「パスワード」を入力する・・・以上
ユーザPC:「ID」を送って、返信されてきた「チャレンジ」を使って「レスポンスを計算」し、「レスポンス」をサーバに送信
サーバ:「ID」が送られてきたら、「チャレンジ」を送信、「ID」からサーバ内に登録されているユーザのパスワードと送った「チャレンジ」から正解の「レスポンス」を計算、帰ってきた「レスポンス」とあらかじめ計算した「レスポンス」を比べる

さて、キーボードで入力したのは、「ID」と「パスワード」のみです。
あとは、PCとサーバが勝手にやり取りして、計算して、「OK」や「NG」を通達してくるのを待つだけなんです。
「ID」と「パスワード」がキーロガーだと揃ってしまうので、サーバへの不正ログインがいつでも可能になるのです。

長くなってしまいました…参考になればと思います。
2015.09.15 17:17
平成25年秋期 午後さん 
(No.3)
問1の設問4についてです。
解説をみてもさっぱりわからないのですが、どのように考えればよいのでしょうか?
教えてください。
2015.09.16 11:30
平成25年秋期 午後さん 
(No.4)
問1の設問4についてです。
解説をみてもさっぱりわからないのですが、どのように考えればよいのでしょうか?
教えてください。
2015.09.16 11:30
かぼちゃさん 
(No.5)
2の補数表現による4ビットの符号付き2進整数を加算する時、
例えば桁上がりがない場合は、
0101(5)
0010(2)
-------
0111(7)
ですが、桁上がりがある場合は、
0101(5)
1100(-4)
-------
10001(-1)  ⇒  0001(1)桁あふれを無視

1.正の数(最上位ビットが0)同士の加算の結果が負の数(最上位ビットが1)になる
⇒表3のβの部分は、A4とB4が共に「0」の時は、正の値の結果が出力されるはず(上記例の桁上がりなしのパターン)ですが、C3が「1」であった場合、S4に「1」が格納され負の値を示す結果が、出力されてしまいます。
※0110(6) + 0100(4) = 01010(10) ⇒ 1010(-2)

2.負の数(最上位ビットが1)同士の加算の結果が正の数(最上位ビットが0)になる
⇒表3のβの部分は、A4とB4が共に「1」なのでC3が「0」の場合、桁あふれを無視した結果、最上位ビットが「0」になってしまう。
※1010(-2) + 1100(-4) = 10110(-6) ⇒ 0110(6)桁あふれを無視
となります。

実際に表3のβの部分に照らし合わせると、Cin=C3,X=A4,Y=B4,C=C4,Z=S4ですね。
1.のパターンは、Cin=1 , X=0 , Y=0 , C=0 , Z=1
2.のパターンは、Cin=0 , X=1 , Y=1 , C=1 , Z=0
と、一致します。
まずは、表3のβの部分から、解説にあるようなパターンが導かなければ解けないかもしれません。また、上記例の下段のように、桁あふれを無視することで正しい解になるパターンもありますので、この手の問題は必然的に1.2.のようなパターンが問題として問われます。


次です。なぜS1~S4 が全て0となる場合を検出すると桁あふれが生じたと言えるのかというのは、考えなくていいと思います。
問題にあるように、S1~S4までの4つの入力が「0」の時、ZFが「1」を出力する回路を考えれば大丈夫です。そう考えると、午前問題レベルだとわかると思います。
回路の構成から、S1,S2が共に「0」の時"だけ"、出力が「1」になる演算子は、「NOR」しかありませんので、それが答えとなります。
2015.09.16 13:51
受験者さん  
(No.6)
>>かぼちゃさん
ありがとうございます。分からなかったところや勘違いしていたところをすべて解消できました。

・Cについて
ハッシュ値の計算が逆算不可なのを失念してました・・・たしかにそれなら盗聴されても大丈夫ですね。
ハッシュ値の計算が逆算不可なのを暗記的に覚えていたので(忘れてましたが)、こういった具体例はとてもありがたいです。

・Dについて
チャレンジ&レスポンス方式を正しく理解できてませんでした・・・。
打ち込むのは普通にIDとPWなんですね、確かによく考えてみればPWにハッシュ関数を用いた値をユーザーに入力させることはないですよね。


両方とも納得できました。説明がとても分かりやすくて助かりました。
2015.09.18 00:19

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop