pulpul 日本の試験

基本情報技術者 概念書 · セキュリティ

セキュリティ実装技術

要点と定義

セキュリティ実装技術では、通信やデータの性質に応じて、盗聴・改ざん・不正接続・パスワード漏えいなどへの対策を組み合わせます。暗号化は内容を読めないようにする技術、ハッシュ化はデータから固定長の値を計算する技術、認証は相手や利用者を確かめる仕組みです。それぞれの目的を区別することが対策選びの出発点です。

ハッシュ関数は、入力の長さにかかわらず固定長の値を出力し、同じ入力なら同じ値を得られます。出力から元の入力を求めるのは非常に困難ですが、固定長への変換なので異なる入力が同じ値になる可能性(衝突)はあります。パスワード保存では、登録時にパスワードのハッシュ値を保存し、ログイン時に入力されたパスワードを同じ手順でハッシュ化して照合します。平文保存と比べ、ファイルが漏れてもパスワードそのものを直ちに読まれにくくできます。SHA-256はハッシュ関数の例で、暗号化方式や鍵共有方式とは用途が異なります。

ソルトは、パスワードに連結してからハッシュ化するランダムな文字列です。保存のたびに異なるソルトを用いると、同じパスワードでも通常は異なるハッシュ値になります。ハッシュ値は固定長のままです。ソルトとハッシュ値は照合に必要なため、パスワードファイルに一緒に保存します。ソルトを公開しても、同じパスワード候補に対する事前計算済み一覧を使い回しにくくなります。攻撃者がファイルを入手できないようにする仕組みではありません。

ストレッチングは、ソルトとパスワードを使うハッシュ計算を指定回数繰り返し、候補一つ当たりの計算時間を増やす方法です。攻撃者が漏えいファイルを使って候補を試す際にも計算量が増えます。候補の数やハッシュ値の長さ、保存値との比較回数が増えるのではなく、一候補の値を求める処理が重くなります。

メッセージ認証符号(MAC)は、共有鍵を使ってメッセージの完全性を確認し、改ざんを検出するための値です。受信側も鍵を用いて検証します。MACだけでは内容を隠せないため、秘匿が必要なら暗号化を別に用います。ハッシュ値は内容の意味を要約した文章ではありません。

認証では、知識・所持物・生体など、何を根拠に本人を確認するかを区別します。生体認証装置のしきい値を厳しくすると、他人を誤って許可する割合を抑えられる一方、本人を誤って拒否する割合が上がり得ます。導入時は両方の誤りを考慮して調整します。

通信の制御では、静的なパケットフィルタリング型ファイアウォールが通信の状態を記憶しない場合、要求と応答の両方向を通す規則を考えます。SMTPの既定ポートを使う例では、クライアントは一時的な送信元ポートからサーバの宛先ポート二十五番へ接続し、応答はサーバの二十五番からクライアントの一時ポートへ戻ります。

CAPTCHAは、Webサイトへのアクセスが人間によるものか自動プログラムによるものかを判別する仕組みです。人間だと確認できても、利用者本人の身元を証明するものではありません。

楕円曲線暗号は公開鍵暗号の一種です。過去問で確認された特徴は、RSAと比べて短い鍵長で同程度の安全性を実現できることです。これは暗号化・復号を行う方式の特徴であり、ハッシュ関数の特徴ではありません。安全性を絶対に破れないという意味でもありません。

適用条件と例

パスワードファイルの漏えいを想定すると、単純なハッシュ化は平文を直接保存するより被害を抑えますが、よく使われるパスワードのハッシュ値を事前に計算した一覧との照合には弱点が残ります。利用者ごとにソルトを変えれば、同じ候補を各利用者向けに再計算する必要が生じ、事前計算の使い回しが難しくなります。さらにストレッチングを行えば、候補ごとの計算に時間がかかります。ソルトは秘密鍵のように隠すものではなく、照合できるよう保存値とともに管理します。

この節の続き

ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。

アプリでこの節を読む