<p>style_prompt</p>
<p>本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">令和4年度 情報処理安全確保支援士 午前Ⅱ 問1 パスワードのハッシュ化</h1>
<p>パスワードのハッシュ化におけるソルトの役割を問う問題です。同一パスワードから異なるハッシュ値を生成し、解析を困難にする仕組みを理解します。</p>
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>【問題】
パスワードをハッシュ化して保存するとき、ソルト(Salt)を用いる目的はどれか。</p>
<p>ア 同じパスワードに対して、生成されるハッシュ値が異なるようにする。
イ ハッシュ関数のアルゴリズムを推測されないようにする。
ウ ハッシュ値から元のパスワードを復号できるようにする。
エ パスワードの文字数を増やして、ハッシュ関数の計算負荷を軽減する。</p>
</blockquote>
<p>【解説】
ソルト(Salt)とは、パスワードをハッシュ化する直前に、元のパスワードに付加するランダムなデータのことです。</p>
<ol class="wp-block-list">
<li><p><strong>同一パスワードの保護</strong>:
複数の利用者が同じパスワードを設定していても、利用者ごとに異なるソルトを付加することで、最終的にデータベースに保存されるハッシュ値が異なります。</p></li>
<li><p><strong>攻撃への耐性</strong>:
あらかじめ「パスワード」と「ハッシュ値」の対応表を用意しておく「レインボーテーブル攻撃」などのオフライン攻撃を困難にします。</p></li>
</ol>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph LR
A[Password] --> D[Concatenate]
B["Salt / Random Data"] --> D
D --> E["Hash Function"]
E --> F["Stored Hash Value"]
</pre></div>
<p>【選択肢の吟味】</p>
<figure class="wp-block-table"><table>
<thead>
<tr>
<th style="text-align:left;">選択肢</th>
<th style="text-align:left;">判定</th>
<th style="text-align:left;">解説</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;">ア</td>
<td style="text-align:left;"><strong>正解</strong></td>
<td style="text-align:left;">ソルトは利用者ごとに異なる値を付加するため、同じパスワードでもハッシュ値が変わります。</td>
</tr>
<tr>
<td style="text-align:left;">イ</td>
<td style="text-align:left;">誤り</td>
<td style="text-align:left;">ハッシュアルゴリズム(SHA-256等)自体は公開されていることが前提であり、隠蔽を目的としません。</td>
</tr>
<tr>
<td style="text-align:left;">ウ</td>
<td style="text-align:left;">誤り</td>
<td style="text-align:left;">ハッシュ関数は不可逆(一方向性)であるため、復号はできません。</td>
</tr>
<tr>
<td style="text-align:left;">エ</td>
<td style="text-align:left;">誤り</td>
<td style="text-align:left;">文字数が増えると計算量はむしろ増加し、計算負荷を軽減する効果はありません。</td>
</tr>
</tbody>
</table></figure>
<p>【ポイント】</p>
<ul class="wp-block-list">
<li><p><strong>ソルト</strong>:レインボーテーブル攻撃(辞書攻撃の高速版)への有効な対策。</p></li>
<li><p><strong>ストレッチング</strong>:ハッシュ化を数千〜数万回繰り返すことで、試行時間を稼ぐ手法。</p></li>
<li><p><strong>一方向性</strong>:ハッシュ値から元のデータを算出することが極めて困難である性質。</p></li>
</ul>
style_prompt
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
令和4年度 情報処理安全確保支援士 午前Ⅱ 問1 パスワードのハッシュ化
パスワードのハッシュ化におけるソルトの役割を問う問題です。同一パスワードから異なるハッシュ値を生成し、解析を困難にする仕組みを理解します。
【問題】
パスワードをハッシュ化して保存するとき、ソルト(Salt)を用いる目的はどれか。
ア 同じパスワードに対して、生成されるハッシュ値が異なるようにする。
イ ハッシュ関数のアルゴリズムを推測されないようにする。
ウ ハッシュ値から元のパスワードを復号できるようにする。
エ パスワードの文字数を増やして、ハッシュ関数の計算負荷を軽減する。
【解説】
ソルト(Salt)とは、パスワードをハッシュ化する直前に、元のパスワードに付加するランダムなデータのことです。
同一パスワードの保護:
複数の利用者が同じパスワードを設定していても、利用者ごとに異なるソルトを付加することで、最終的にデータベースに保存されるハッシュ値が異なります。
攻撃への耐性:
あらかじめ「パスワード」と「ハッシュ値」の対応表を用意しておく「レインボーテーブル攻撃」などのオフライン攻撃を困難にします。
graph LR
A[Password] --> D[Concatenate]
B["Salt / Random Data"] --> D
D --> E["Hash Function"]
E --> F["Stored Hash Value"]
【選択肢の吟味】
| 選択肢 |
判定 |
解説 |
| ア |
正解 |
ソルトは利用者ごとに異なる値を付加するため、同じパスワードでもハッシュ値が変わります。 |
| イ |
誤り |
ハッシュアルゴリズム(SHA-256等)自体は公開されていることが前提であり、隠蔽を目的としません。 |
| ウ |
誤り |
ハッシュ関数は不可逆(一方向性)であるため、復号はできません。 |
| エ |
誤り |
文字数が増えると計算量はむしろ増加し、計算負荷を軽減する効果はありません。 |
【ポイント】
ソルト:レインボーテーブル攻撃(辞書攻撃の高速版)への有効な対策。
ストレッチング:ハッシュ化を数千〜数万回繰り返すことで、試行時間を稼ぐ手法。
一方向性:ハッシュ値から元のデータを算出することが極めて困難である性質。
ライセンス:本記事のテキスト/コードは特記なき限り
CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。
コメント