ハッシュ値とは?必要性や仕組みを詳しく解説
電子契約サービス
2023.03.28
2023.03.28
電子契約サービスなどのセキュリティに使われているのが、ハッシュ値と呼ばれている数値です。ハッシュ値は、元となるデータを特定のアルゴリズムで変換し、固定の長さの数値で表したもののことです。なぜハッシュ値が電子署名やタイムスタンプに使われているのでしょうか。この記事では、ハッシュ値の基本や種類、電子契約サービスなどに使われている理由をわかりやすく解説します。
1. ハッシュ値とは?
ハッシュ値(hash value)は、元になるデータをハッシュ関数という計算方法で変換し、固定の桁数(固定長)の数値で表したものを指します。日本語でダイジェスト値や要約値、ハッシュコードと呼ばれることもあります。例えば、“example”というテキストをMD5(Message Digest5)というハッシュ関数で変換すると、“1a79a4d60de6718e8e5b326e338ae533”という32桁のハッシュ値で表現できます。
元になるテキスト | ハッシュ関数 | ハッシュ値 | 文字数 |
example | md2 | fd7a532a863c3394b89b38d18cf12073 | 32文字 |
md4 | e1821c366558728f70e054fbf9db7b64 | ||
md5 | 1a79a4d60de6718e8e5b326e338ae533 |
1-1. ハッシュ値が使われる目的
ハッシュ値が使われる目的は、データの偽造や改ざんを検知するためです。元になるデータが1文字でも変われば、生成されるハッシュ値も変わります。また、生成されたハッシュ値から逆算し、元になるデータを復元するのは極めて困難です。
そのため、データを複製したり送受信したりするとき、それぞれのデータのハッシュ値を比較することで偽造や改ざんを検知できます。 ハッシュ値を生成すれば、パスワードを安全に保管したり、データを安全に送受信したりすることが可能です。ハッシュ値やハッシュ関数は、近年導入率が増加している電子契約サービスにも使われています。
1-2. ハッシュ関数の種類
ハッシュ値を生成するために使われる関数は、大きく分けて3つあります。
- MD5(Message Digest Algorithm 5)
元になるデータを変換し、128ビット(32桁)のハッシュ値を出力する代表的なアルゴリズムです。1991年に開発されたハッシュ関数で、古くから使われてきました。現在は脆弱性が指摘されていることから、重要なデータの暗号化には使われていません。ハッシュ値のセキュリティは、「強衝突耐性」と「弱衝突耐性」の2種類に分けられます。
強衝突耐性 | 同じハッシュ値を生成する元データ(ペア)の見つけにくさ |
弱衝突耐性 | 特定のハッシュ値を生成する元データの探しにくさ |
MD5があまり使われていないのは、他のアルゴリズムよりも強衝突耐性が低く、生成されたハッシュ値のペアとなる元データを特定する方法が見つかっているためです。
- SHA-1(Secure Hash Algorithm1)
SHA-1も同様に、現在ではあまり使われていないハッシュ関数です。SHA-1を使用すると、160ビット(40桁)のハッシュ値を出力できます。2005年にSHA-1の脆弱性が指摘されたことから改良され、SHA-2(Secure Hash Algorighm2)に移行しました。
- SHA-2(Secure Hash Algorighm2)
SHA-2はさまざまな分野で使われているハッシュ関数です。SHA-224、SHA-256、SHA-384、SHA-512など、さまざまなバリエーションがありますが、基本となるのはSHA-256とSHA-512の2種類です。SHA-256は256ビット(64桁)のハッシュ値、SHA-512は512ビット(128桁)のハッシュ値を出力します。
また、SHA-256は32ビットCPUを搭載したOSに最適化され、SHA-512は64ビットCPUを搭載したOSに最適化されています。一般的に、ハッシュ値の桁数が多いほうがセキュリティ強度が高くなるとされています。
2. ハッシュ値の必要性
ハッシュ値はなぜ必要とされているのでしょうか。ここでは、ハッシュ値が使われている電子署名とタイムスタンプの例を上げ、ハッシュ値の役割を解説します。
2-1. 電子署名におけるハッシュ値の役割
電子契約に欠かせない電子署名にもハッシュ値が使われています。電子署名を施すとき、契約書の電子データがハッシュ関数によって変換され、ハッシュ値が生成されます。
契約書を相手方に送るとき、受信した電子データのハッシュ値が生成されます。双方のハッシュ値を比較することで、契約書が改ざんされていないかチェックできる仕組みです。このハッシュ値の照合と、公開鍵暗号方式と呼ばれる暗号技術を組み合わせることで、電子契約のセキュリティが保たれています。
2-2. タイムスタンプにおけるハッシュ値の役割
タイムスタンプとは、電子データに付与された時刻データのことを指します。タイムスタンプを契約書の電子データに付与することで、タイムスタンプの時刻より後に電子データが改ざんされていないことを証明できます。タイムスタンプを発行しているのは、時刻認証局と呼ばれる第三者機関です。タイムスタンプが付与されるまでの流れは以下の通りです。
- 電子データのハッシュ値を生成する
- 時刻認証局にタイムスタンプを申請する
- 時刻認証局が電子データのハッシュ値にタイムスタンプを付与する
契約書を受け取った人は、電子データのハッシュ値を再度生成し、タイムスタンプが付与されたハッシュ値と比較します。これにより、「電子データが改ざんされていないこと」「タイムスタンプの時刻に電子データが作成されたこと」を客観的に証明できます。
3. ハッシュ値の仕組み
ハッシュ値には、「どんな大きさのファイルも固定の長さの数値に変換される」「同一のデータからは必ず同一のハッシュ値が生成される」という仕組みがあります。
- どんな大きさのファイルも固定の長さの数値に変換される
- 同一のデータからは必ず同一のハッシュ値が生成される
同じハッシュ関数を使う限り、どのような大きさのファイルであっても固定の長さのハッシュ値が生成されます。例えば、MD5の場合は128ビット(32桁)、SHA-256の場合は256ビット(64桁)のハッシュ値が生成されます。電子データそのものを比較すると時間がかかりますが、ハッシュ値を比較すればすばやくデータを照合できます。また、同一のデータからは必ず同一のハッシュ値が生成されます。そのため、第三者がデータに変更を加えた場合、ハッシュ値を比較することですばやく偽造や改ざんを検知できます。
4. ハッシュ値の必要性や仕組みを知ろう
ハッシュ値とは、元となるデータをハッシュ関数と呼ばれるアルゴリズムで圧縮し、特定の長さの文字列で表したものです。例えば、SHA-256というハッシュ関数を使う場合、256ビット(64桁)のハッシュ値に生成します。
ハッシュ値には、「元となるデータが1文字でも変われば、生成されるハッシュ値も変わる」という仕組みがあります。そのため、ハッシュ値を活用すれば、データの偽造や改ざんを検知することが可能です。急速に普及しつつある電子契約サービスのセキュリティにもハッシュ値が使われています。電子契約の導入を検討している人は、ハッシュ値の必要性や仕組みを知っておきましょう。
企業のみなさまへ
あなたもDXログにサービスを掲載しませんか?
あなたもDXログに
サービスを掲載しませんか?