sg cryptography hash_function authentication security_measures
まず結論
SHA-1は、入力データから固定長のハッシュ値を作るハッシュ関数です。
SG試験では、暗号化ではなく、改ざん検知や電子署名などで使われる要約処理として押さえるのがポイントです。
大事なのは、SHA-1はデータを元に戻すための技術ではない、という点です。
暗号化は「復号して元に戻す」ことを前提にしますが、ハッシュ関数は基本的に元に戻せません。
直感的な説明
SHA-1は、データの「指紋」を作るイメージです。
同じデータをSHA-1にかけると、同じハッシュ値が出ます。
一方で、データが少しでも変わると、ハッシュ値も大きく変わります。
たとえば、文書ファイルの中身が改ざんされたかを確認したい場合、
- 変更前のハッシュ値
- 受け取った後のハッシュ値
を比べることで、内容が変わっていないかを確認できます。
ここで重要なのは、中身を隠すことが目的ではないことです。
SHA-1は「読めないようにする技術」ではなく、「同じ内容かどうかを確認しやすくする技術」です。
定義・仕組み
SHA-1は、Secure Hash Algorithm 1の略で、入力データを160ビットのメッセージダイジェストに変換するハッシュ関数です。
ハッシュ関数には、次のような特徴があります。
| 観点 | 内容 |
|---|---|
| 入力 | 文字列、ファイル、メッセージなど |
| 出力 | 固定長のハッシュ値 |
| 目的 | 改ざん検知、電子署名、データ確認など |
| 元に戻せるか | 原則として戻せない |
| 注意点 | SHA-1は脆弱性が知られている |
SHA-1は過去に、TLS、SSL、PGP、SSH、S/MIME、IPsecなど、さまざまなセキュリティ技術で使われてきました。
ただし、現在は衝突に関する脆弱性が知られているため、より安全なSHA-2やSHA-3への移行が進められています。
衝突とは?
衝突とは、異なるデータから同じハッシュ値が作られてしまうことです。
ハッシュ値は固定長なので、理論上、衝突の可能性はあります。
問題は、攻撃者が意図的に衝突を作れるようになると、改ざん検知や電子署名の信頼性が下がることです。
そのため、SG試験では、SHA-1が出てきたら
「ハッシュ関数。ただし、現在は安全性に注意が必要」
と整理しておくと判断しやすくなります。
どんな場面で使う?
SHA-1のようなハッシュ関数は、主に次のような場面で使われます。
| 場面 | 目的 |
|---|---|
| 改ざん検知 | データが変わっていないか確認する |
| 電子署名 | 署名対象データの要約値を作る |
| ファイル確認 | ダウンロードしたファイルが正しいか確認する |
| 認証関連 | パスワードなどを直接保存しない工夫に使うことがある |
ただし、パスワード保存に単純なSHA-1だけを使うのは安全とはいえません。
実務では、ソルトやストレッチング、より専用のパスワードハッシュ方式を組み合わせる必要があります。
SG試験では、SHA-1を「暗号化方式」として選ぶ選択肢には注意します。
SHA-1は、共通鍵暗号や公開鍵暗号のようにデータを暗号文にする技術ではありません。
よくある誤解・混同
誤解1:SHA-1は暗号化方式である
これは特に引っかかりやすいポイントです。
暗号化は、データを読めない形に変換し、鍵を使って元に戻す技術です。
一方、SHA-1はハッシュ値を作るだけで、元のデータには戻せません。
| 用語 | 目的 | 元に戻せるか |
|---|---|---|
| 暗号化 | 内容を隠す | 復号できる |
| ハッシュ関数 | 内容の一致・改ざんを確認する | 原則戻せない |
試験では、「秘匿」なら暗号化、「改ざん検知」ならハッシュと考えると切り分けやすいです。
誤解2:SHA-1なら現在も安全である
SHA-1は有名なハッシュ関数ですが、現在は安全性に注意が必要です。
特に、電子署名や証明書のように、衝突耐性が重要な用途では、SHA-1ではなくSHA-2やSHA-3を使う方向で考えます。
誤解3:ハッシュ値があれば元データを復元できる
ハッシュ値は要約値であり、元データそのものではありません。
そのため、ハッシュ値から元の文章やファイルを復元するものではありません。
SG試験では、
- 復元する
- 復号する
- 鍵で戻す
といった表現が出たら、SHA-1の説明としては不自然です。
試験での切り分けポイント
SHA-1で迷ったら、次の順に確認すると判断しやすいです。
| 判断ポイント | 見るところ |
|---|---|
| 目的は何か | 改ざん検知・要約ならハッシュ |
| 元に戻す話か | 復号するなら暗号化の話 |
| 安全性の話か | SHA-1は脆弱性がありSHA-2/SHA-3へ移行 |
特に今回のように「暗号化」と迷った場合は、
SHA-1は暗号化ではなく、ハッシュ値を作る関数
と一度言い切ると整理しやすくなります。
確認問題
SHA-1の説明として、最も適切なものはどれか。
ア. 入力データから固定長のメッセージダイジェストを作るハッシュ関数である。
イ. 共通鍵を使ってデータを暗号化し、同じ鍵で復号する方式である。
ウ. 公開鍵と秘密鍵を使って、安全に鍵交換を行う方式である。
エ. 通信経路上のデータを暗号化して盗聴を防ぐプロトコルである。
回答と解説
正解は、**ア**です。 SHA-1は、入力データを160ビットのメッセージダイジェストに変換するハッシュ関数です。 暗号化方式ではないため、イのように「暗号化して復号する」という説明は当てはまりません。 ウは鍵交換や公開鍵暗号の話、エはTLSやIPsecなどの通信保護の話に近い説明です。まとめ(試験直前用)
SHA-1は、固定長のハッシュ値を作るハッシュ関数です。
試験直前は、次の3点だけ押さえましょう。
- SHA-1は暗号化ではなくハッシュ関数
- 目的は改ざん検知や電子署名で使う要約値の作成
- 脆弱性があるためSHA-2やSHA-3への移行が重要
「内容を隠す」なら暗号化。
「同じ内容か確認する」ならハッシュ。
この切り分けで、選択肢をかなり絞りやすくなります。