HOME»基本情報技術者平成30年春期問題»午後問1
基本情報技術者過去問題 平成30年春期 午後問1
⇄問題文と設問を画面2分割で開く⇱問題PDF問1 情報セキュリティ
Webサービスを利用するためのパスワードを安全に保存する方法に関する次の記述を読んで,設問1~3に答えよ。
A社が提供するWebサービスを利用するには,利用者が決めた利用者IDとパスワードを,Webアプリケーションが動作するサーバに登録しておく必要がある。A社のWebアプリケーションでは,利用者がWebアプリケーションにログインするときに,Webブラウザから利用者IDとパスワードがサーバに送信される。サーバは,受信した利用者IDとパスワードを,照合することによって認証する。利用者が決めたパスワードは,パスワードファイルに平文で保存されている。
近年,パスワードファイルが漏えいし,不正ログインが発生したと考えられる事件が多数報道されている。そこで,A社に勤めるCさんは,自社のWebアプリケーションにおけるパスワードファイルが漏えいした際の不正ログインを防止するための対策について,上司から検討を命じられた。
Cさんは対策として,パスワードを平文で保存するのではなく,ハッシュ関数で,パスワードのハッシュ値を計算(以下,ハッシュ化という)し,そのハッシュ値を保存する方式を提案することにした。この方式におけるログイン時の認証では,受信したパスワードから求めたハッシュ値を,パスワードファイルに保存されているハッシュ値と照合する。パスワードの保存の流れと,照合の流れを図1に示す。
Cさんは,パスワードのハッシュ化には,ハッシュ関数の一つであるaを用いることにした。ハッシュ化に用いるハッシュ関数は,一般的に次のような特徴を備えているので,パスワードが一致していることの確認に用いることができる。また,利用者のパスワードを平文で保存する場合と比べて,パスワードファイルが漏えいしても,より安全だと考えたからである。
〔ハッシュ化に用いるハッシュ関数の特徴〕
A社が提供するWebサービスを利用するには,利用者が決めた利用者IDとパスワードを,Webアプリケーションが動作するサーバに登録しておく必要がある。A社のWebアプリケーションでは,利用者がWebアプリケーションにログインするときに,Webブラウザから利用者IDとパスワードがサーバに送信される。サーバは,受信した利用者IDとパスワードを,照合することによって認証する。利用者が決めたパスワードは,パスワードファイルに平文で保存されている。
近年,パスワードファイルが漏えいし,不正ログインが発生したと考えられる事件が多数報道されている。そこで,A社に勤めるCさんは,自社のWebアプリケーションにおけるパスワードファイルが漏えいした際の不正ログインを防止するための対策について,上司から検討を命じられた。
Cさんは対策として,パスワードを平文で保存するのではなく,ハッシュ関数で,パスワードのハッシュ値を計算(以下,ハッシュ化という)し,そのハッシュ値を保存する方式を提案することにした。この方式におけるログイン時の認証では,受信したパスワードから求めたハッシュ値を,パスワードファイルに保存されているハッシュ値と照合する。パスワードの保存の流れと,照合の流れを図1に示す。
Cさんは,パスワードのハッシュ化には,ハッシュ関数の一つであるaを用いることにした。ハッシュ化に用いるハッシュ関数は,一般的に次のような特徴を備えているので,パスワードが一致していることの確認に用いることができる。また,利用者のパスワードを平文で保存する場合と比べて,パスワードファイルが漏えいしても,より安全だと考えたからである。
〔ハッシュ化に用いるハッシュ関数の特徴〕
- パスワードの長さに関係なく,ハッシュ値は固定長になる。
- b
- ハッシュ値からパスワードを推測することが非常に困難である。
- パスワードが1文字でも異なれば,ハッシュ値は大きく異なる。
設問1
本文中の に入れる適切な答えを,解答群の中から選べ。
a に関する解答群
- AES
- Diffie-Hellman
- RSA
- SHA-256
- TLS
b に関する解答群
- 異なるパスワードをハッシュ化したとき,同じハッシュ値になる可能性が高い。
- 同一のパスワードをハッシュ化すると,同じハッシュ値になる。
- パスワードをハッシュ化した結果のハッシュ値を再度ハッシュ化すると,元のパスワードになる。
- 秘密鍵を使用してハッシュ値から元のパスワードを復元できる。
解答選択欄
- a:
- b:
解答
- a=エ
- b=イ
解説
〔aについて〕
〔bについて〕
ハッシュ関数は、任意の長さのデータを入力すると固定長のビット列(ハッシュ値,メッセージダイジェスト)を返す関数で、次のような特徴を持っています。
- AES(Advanced Encryption Standard)は、危殆化したDESに代わり、アメリカ合衆国の標準暗号方式として規格化された共通鍵暗号方式です。
- Diffie-Hellman(ディフィー・ヘルマン)は、事前のやり取りなしに、2つのノード間で共通鍵を安全に共有できる鍵交換アルゴリズムです。
- RSAは、桁数が大きい合成数の素因数分解が困難であることを安全性の根拠とした公開鍵暗号方式です。
- 正しい。SHA-256(Secure Hash Algorithm 256)は、256ビットのハッシュ値を出力するハッシュ関数です。
- TLS(Transport Layer Security)は、ノード認証、暗号化通信、改ざん検知などのセキュリティ機能をOSI基本参照モデルのトランスポート層レベルで提供するプロトコルです。
〔bについて〕
ハッシュ関数は、任意の長さのデータを入力すると固定長のビット列(ハッシュ値,メッセージダイジェスト)を返す関数で、次のような特徴を持っています。
- 入力データが同じであれば、常に同じハッシュ値が生成される。
- 入力データが少しでも異なっていれば生成されるハッシュ値は大きく異なったものになる。
- ハッシュ値から元の入力データを再現することが困難である。
- 異なる入力データから同じハッシュ値が生成される可能性が非常に低い。
- 入力値が1文字でも異なれば、出力されるハッシュ値は大きく異なったものになります。
- 正しい。ハッシュ関数に入力する値が同じであれば、出力されるハッシュ値は毎回同じになります。この特徴があるのでハッシュ化したパスワードとの照合を行えます。
- ハッシュ関数は一方向性の関数なので、ハッシュ値を再度ハッシュ化しても元の値には戻りません。
- 暗号化処理とは異なりハッシュ化には暗号化鍵が要りません。ハッシュ関数は一方向性の関数なので、元の入力値の再現は困難です。
設問2
次の記述中の に入れる適切な答えを,解答群の中から選べ。
Cさんは,自身が提案する方式について,社内の情報セキュリティ責任者にレビューを依頼したところ,この方式は漏えいしたパスワードファイルを攻撃者に入手された場合,事前計算による辞書攻撃に弱いという指摘を受けた。この攻撃では,あらかじめ攻撃者はパスワードとしてよく使われる文字列を,よく使われているハッシュ関数でハッシュ化し,ハッシュ値から元のパスワードが検索可能な一覧表を作成しておく。その後,攻撃者が漏えいしたパスワードファイルを入手したとき,この作成した一覧表からハッシュ値を検索する。ハッシュ値が一覧表に載っている場合は,元のパスワードを容易に知ることができる。
Cさんは,事前計算による辞書攻撃を難しくする方式を調査し,ソルトを用いる方式を提案することにした。ソルトとは,十分な長さをもつランダムな文字列である。
この方式におけるパスワードの保存では,まず,サーバは新しいパスワードの保存の都度,新しいソルトを生成し,ソルトとパスワードを連結した文字列をハッシュ化する。このとき得られるハッシュ値は,パスワードだけをハッシュ化した場合のハッシュ値c。次に,ハッシュ化に使用したソルトと得られたハッシュ値をパスワードファイルに保存する。
この方式におけるパスワードの照合では,まず,サーバはパスワードファイルからソルトとハッシュ値を読み出す。次に,読み出したソルトと受信したパスワードを連結した文字列をハッシュ化し,得られたハッシュ値を,読み出したハッシュ値と照合する。ソルトを用いたパスワードの保存の流れと,照合の流れを図2に示す。 ソルトを用いる方式が,事前計算による辞書攻撃の対策として効果があるのは,dからである。
Cさんは,自身が提案する方式について,社内の情報セキュリティ責任者にレビューを依頼したところ,この方式は漏えいしたパスワードファイルを攻撃者に入手された場合,事前計算による辞書攻撃に弱いという指摘を受けた。この攻撃では,あらかじめ攻撃者はパスワードとしてよく使われる文字列を,よく使われているハッシュ関数でハッシュ化し,ハッシュ値から元のパスワードが検索可能な一覧表を作成しておく。その後,攻撃者が漏えいしたパスワードファイルを入手したとき,この作成した一覧表からハッシュ値を検索する。ハッシュ値が一覧表に載っている場合は,元のパスワードを容易に知ることができる。
Cさんは,事前計算による辞書攻撃を難しくする方式を調査し,ソルトを用いる方式を提案することにした。ソルトとは,十分な長さをもつランダムな文字列である。
この方式におけるパスワードの保存では,まず,サーバは新しいパスワードの保存の都度,新しいソルトを生成し,ソルトとパスワードを連結した文字列をハッシュ化する。このとき得られるハッシュ値は,パスワードだけをハッシュ化した場合のハッシュ値c。次に,ハッシュ化に使用したソルトと得られたハッシュ値をパスワードファイルに保存する。
この方式におけるパスワードの照合では,まず,サーバはパスワードファイルからソルトとハッシュ値を読み出す。次に,読み出したソルトと受信したパスワードを連結した文字列をハッシュ化し,得られたハッシュ値を,読み出したハッシュ値と照合する。ソルトを用いたパスワードの保存の流れと,照合の流れを図2に示す。 ソルトを用いる方式が,事前計算による辞書攻撃の対策として効果があるのは,dからである。
c に関する解答群
- と同じ値になる
- とは異なる値になる
- よりも長さが長い
- よりも長さが短い
d に関する解答群
- 攻撃者が,ハッシュ値からではなくソルトから元のパスワードを検索するための一覧表を事前に作成しておく必要がある
- 攻撃者がパスワードファイルからソルトを入手できない
- 攻撃者がパスワードファイルを入手するのが困難になる
- 攻撃者が一つのパスワードに対して事前に求めるハッシュ値の数が膨大になる
解答選択欄
- c:
- d:
解答
- c=イ
- d=エ
解説
ソルト(salt)は、ハッシュ化対象の元データに付加する文字列のことです。ソルトを連結したパスワードをハッシュ化することで、辞書攻撃への耐性が高まります。また利用者毎に異なるソルトを用意することで、同じパスワードでも異なるハッシュ値が生成されることになります。
〔cについて〕
ハッシュ関数の特徴の1つに以下があります。
「入力データが少しでも異なっていれば、生成されるハッシュ値は大きく異なったものになる」
ソルトを用いた方式では、入力値が「ソルトとパスワードを連結した文字列」になるので、「パスワードだけ」を入力値とするハッシュ値とは大きく異なったものになります。
∴c=イ:とは異なる値になる
〔dについて〕
辞書攻撃は、辞書に載っている単語やパスワードによく使われる文字列を変換して得られるハッシュ値の一覧表を用いて、一致するハッシュ値を探すことで、元のパスワードを特定するパスワードクラック手法です。
この問題で説明されている「事前計算による辞書攻撃」では、攻撃者はあらかじめハッシュ値の一覧表を作成し、その後、パスワードファイルを入手した後に、その一覧表内を検索することになっています。つまり一覧表の作成時点では、攻撃者に当該パスワードのソルトを知る術はありません。
ソルトは「十分な長さを持つランダムな文字列」であり、利用者ごとに異なるので、攻撃者は1つのパスワードに対してソルトの組合せ数と同じだけのハッシュ値を用意しなければならなくなります。例えば、ソルトが英数字20文字ならば 3620 種類の組合せが考えられるので、1つのパスワードに対応するハッシュ値は 3620 個にも及びます。この数のハッシュ値をパスワードごと用意しておかなくてはならないので、事前計算による辞書攻撃は非常に難しくなります。
〔cについて〕
ハッシュ関数の特徴の1つに以下があります。
「入力データが少しでも異なっていれば、生成されるハッシュ値は大きく異なったものになる」
ソルトを用いた方式では、入力値が「ソルトとパスワードを連結した文字列」になるので、「パスワードだけ」を入力値とするハッシュ値とは大きく異なったものになります。
∴c=イ:とは異なる値になる
〔dについて〕
辞書攻撃は、辞書に載っている単語やパスワードによく使われる文字列を変換して得られるハッシュ値の一覧表を用いて、一致するハッシュ値を探すことで、元のパスワードを特定するパスワードクラック手法です。
この問題で説明されている「事前計算による辞書攻撃」では、攻撃者はあらかじめハッシュ値の一覧表を作成し、その後、パスワードファイルを入手した後に、その一覧表内を検索することになっています。つまり一覧表の作成時点では、攻撃者に当該パスワードのソルトを知る術はありません。
ソルトは「十分な長さを持つランダムな文字列」であり、利用者ごとに異なるので、攻撃者は1つのパスワードに対してソルトの組合せ数と同じだけのハッシュ値を用意しなければならなくなります。例えば、ソルトが英数字20文字ならば 3620 種類の組合せが考えられるので、1つのパスワードに対応するハッシュ値は 3620 個にも及びます。この数のハッシュ値をパスワードごと用意しておかなくてはならないので、事前計算による辞書攻撃は非常に難しくなります。
- ソルトは「十分な長さを持つランダムな文字列」であり、元のパスワードとの関連はありません。このため、ソルトの値から元のパスワードを検索することは不可能です。
- ソルトはパスワードファイルに保存されているので、パスワードファイルを入手した攻撃者にはソルトを知られてしまいます。
- パスワードファイルの入手難度は変わりません。
- 正しい。
設問3
次の記述中の に入れる適切な答えを,解答群の中から選べ。
Cさんは,オフライン総当たり攻撃についても,対策を検討することにした。
漏えいしたパスワードファイルに対するオフライン総当たり攻撃とは,攻撃者が,パスワードファイルを入手した後,全てのパスワードの候補を逐次生成してはハッシュ化し,得られたハッシュ値がパスワードファイルに保存されているハッシュ値と一致するかどうか,しらみつぶしに確認することによって,ハッシュ値の元のパスワードを見つける攻撃方法である。
Cさんは,オフライン総当たり攻撃を難しくする方式として,ストレッチングという方式があることを知った。
この方式では,まず,ソルトとパスワードを連結した文字列をハッシュ化してハッシュ値を得る。次に,得られたハッシュ値の後にソルトとパスワードを連結し,その連結結果をハッシュ化する。この操作を指定した回数だけ繰り返すことによって,パスワードの照合に用いるハッシュ値を得る。パスワードファイルには,ソルト及びパスワードの照合に用いるハッシュ値に加えて,繰返し回数も保存する。この方式では,ハッシュ化の操作を1回だけ行う方式と比べると,攻撃者が,オフライン総当たり攻撃を行う際, 。
Cさんは,オフライン総当たり攻撃についても,対策を検討することにした。
漏えいしたパスワードファイルに対するオフライン総当たり攻撃とは,攻撃者が,パスワードファイルを入手した後,全てのパスワードの候補を逐次生成してはハッシュ化し,得られたハッシュ値がパスワードファイルに保存されているハッシュ値と一致するかどうか,しらみつぶしに確認することによって,ハッシュ値の元のパスワードを見つける攻撃方法である。
Cさんは,オフライン総当たり攻撃を難しくする方式として,ストレッチングという方式があることを知った。
この方式では,まず,ソルトとパスワードを連結した文字列をハッシュ化してハッシュ値を得る。次に,得られたハッシュ値の後にソルトとパスワードを連結し,その連結結果をハッシュ化する。この操作を指定した回数だけ繰り返すことによって,パスワードの照合に用いるハッシュ値を得る。パスワードファイルには,ソルト及びパスワードの照合に用いるハッシュ値に加えて,繰返し回数も保存する。この方式では,ハッシュ化の操作を1回だけ行う方式と比べると,攻撃者が,オフライン総当たり攻撃を行う際, 。
解答群
- 生成すべきパスワードの候補の最大文字列長が長くなる
- 一つのパスワードの候補から求めたハッシュ値の長さが長くなる
- 一つのパスワードの候補から求めたハッシュ値を,パスワードファイルのハッシュ値と比較する回数が増える
- 一つのパスワードの候補からハッシュ値を求める時間が増加する
解答選択欄
解答
- エ
解説
ストレッチングは、元データに対してハッシュ化の計算を数千回から数万回繰り返して、その結果をパスワードファイル等に記録しておく手法です。ハッシュ関数には一方向性がありますから、あるハッシュ値が示すパスワードを特定するためには、攻撃者側でも1つのパスワード候補に対して同じ数だけのハッシュ化操作を行わなくてはならなくなります。
オフライン攻撃では、単位時間当たりに膨大な数の試行を行えます。ストレッチングなしの場合には、1つのパスワード候補に対して行われるハッシュ計算は1回なので短時間でパスワードを特定されてしまう恐れがあります。ストレッチングの実施により、1つのパスワード候補の検証に要する計算量を多くすることで、攻撃が成立するまでにかかる時間を長くすることができます。
∴エ:一つのパスワードの候補からハッシュ値を求める時間が増加する
オフライン攻撃では、単位時間当たりに膨大な数の試行を行えます。ストレッチングなしの場合には、1つのパスワード候補に対して行われるハッシュ計算は1回なので短時間でパスワードを特定されてしまう恐れがあります。ストレッチングの実施により、1つのパスワード候補の検証に要する計算量を多くすることで、攻撃が成立するまでにかかる時間を長くすることができます。
∴エ:一つのパスワードの候補からハッシュ値を求める時間が増加する