暗号化ハッシュ関数

ハッシュ関数は非常に便利で、ほとんどすべての情報セキュリティアプリケーションに表示されます。

ハッシュ関数は、数値入力値を別の圧縮された数値に変換する数学関数です。ハッシュ関数への入力は任意の長さですが、出力は常に固定長です。

ハッシュ関数によって返される値は呼び出されます message digest または単に hash values。次の図はハッシュ関数を示しています-

ハッシュ関数の特徴

ハッシュ関数の典型的な機能は次のとおりです。

  • Fixed Length Output (Hash Value)

    • ハッシュ関数は、任意の長さのデータを固定長に変換します。このプロセスは、しばしばhashing the data

    • 一般に、ハッシュは入力データよりもはるかに小さいため、ハッシュ関数が呼び出されることがあります compression functions

    • ハッシュは大きなデータの小さな表現であるため、ハッシュとも呼ばれます。 digest

    • nビット出力のハッシュ関数は n-bit hash function。一般的なハッシュ関数は、160〜512ビットの値を生成します。

  • Efficiency of Operation

    • 一般に、入力xを持つハッシュ関数hの場合、h(x)の計算は高速な演算です。

    • 計算上のハッシュ関数は、対称暗号化よりもはるかに高速です。

ハッシュ関数のプロパティ

効果的な暗号化ツールであるためには、ハッシュ関数は次の特性を備えていることが望まれます。

  • Pre-Image Resistance

    • このプロパティは、ハッシュ関数を逆にすることが計算上難しいことを意味します。

    • 言い換えると、ハッシュ関数hがハッシュ値zを生成した場合、zにハッシュする入力値xを見つけるのは難しいプロセスになるはずです。

    • このプロパティは、ハッシュ値しか持たず、入力を見つけようとしている攻撃者から保護します。

  • Second Pre-Image Resistance

    • このプロパティは、入力とそのハッシュが与えられた場合、同じハッシュで別の入力を見つけるのは難しいはずであることを意味します。

    • 言い換えると、入力xのハッシュ関数hがハッシュ値h(x)を生成する場合、h(y)= h(x)となるような他の入力値yを見つけることは困難です。

    • ハッシュ関数のこのプロパティは、入力値とそのハッシュを持ち、元の入力値の代わりに別の値を正当な値として置き換えたい攻撃者から保護します。

  • Collision Resistance

    • このプロパティは、同じハッシュになる任意の長さの2つの異なる入力を見つけるのが難しいことを意味します。このプロパティは、衝突のないハッシュ関数とも呼ばれます。

    • 言い換えると、ハッシュ関数hの場合、h(x)= h(y)となるような2つの異なる入力xとyを見つけるのは困難です。

    • ハッシュ関数はハッシュ長が固定された圧縮関数であるため、ハッシュ関数が衝突しないようにすることはできません。衝突のないこの特性は、これらの衝突を見つけるのが難しいことを確認するだけです。

    • このプロパティにより、攻撃者が同じハッシュを持つ2つの入力値を見つけることが非常に困難になります。

    • また、ハッシュ関数が衝突耐性がある場合 then it is second pre-image resistant.

ハッシュアルゴリズムの設計

ハッシュの中心となるのは、2つの固定サイズのデータ​​ブロックを操作してハッシュコードを作成する数学関数です。このハッシュ関数は、ハッシュアルゴリズムの一部を形成します。

各データブロックのサイズは、アルゴリズムによって異なります。通常、ブロックサイズは128ビットから512ビットです。次の図は、ハッシュ関数を示しています-

ハッシュアルゴリズムには、ブロック暗号のような上記のハッシュ関数のラウンドが含まれます。各ラウンドは、固定サイズの入力を受け取ります。通常は、最新のメッセージブロックと最後のラウンドの出力の組み合わせです。

このプロセスは、メッセージ全体をハッシュするために必要な回数だけ繰り返されます。ハッシュアルゴリズムの概略図を次の図に示します-

以来、最初のメッセージブロックのハッシュ値は2番目のハッシュ操作への入力になり、その出力は3番目の操作の結果を変更します。この効果は、avalanche ハッシュの効果。

アバランシェ効果により、2つのメッセージのハッシュ値が大幅に異なり、1ビットのデータでも異なります。

ハッシュ関数とアルゴリズムの違いを正しく理解してください。ハッシュ関数は、固定長のバイナリデータの2つのブロックを操作することによってハッシュコードを生成します。

ハッシュアルゴリズムは、ハッシュ関数を使用するプロセスであり、メッセージを分割する方法と、前のメッセージブロックの結果を連鎖させる方法を指定します。

人気のハッシュ関数

いくつかの人気のあるハッシュ関数を簡単に見てみましょう-

メッセージダイジェスト(MD)

MD5は、かなりの数年間、最も人気があり、広く使用されているハッシュ関数でした。

  • MDファミリは、ハッシュ関数MD2、MD4、MD5、およびMD6で構成されています。インターネット標準RFC1321として採用されました。128ビットのハッシュ関数です。

  • MD5ダイジェストは、転送されたファイルの整合性に関する保証を提供するために、ソフトウェアの世界で広く使用されています。たとえば、ファイルサーバーは、ファイルに対して事前に計算されたMD5チェックサムを提供することが多いため、ユーザーはダウンロードしたファイルのチェックサムをファイルと比較できます。

  • 2004年、MD5で衝突が発見されました。分析攻撃は、コンピュータークラスターを使用して1時間で成功することが報告されました。この衝突攻撃によりMD5が危険にさらされたため、使用は推奨されなくなりました。

セキュアハッシュ機能(SHA)

SHAファミリは、4つのSHAアルゴリズムで構成されています。SHA-0、SHA-1、SHA-2、およびSHA-3。同じ家族ですが、構造的に異なります。

  • 元のバージョンは、160ビットのハッシュ関数であるSHA-0で、1993年に米国国立標準技術研究所(NIST)によって公開されました。弱点はほとんどなく、あまり人気がありませんでした。1995年後半、SHA-1は、SHA-0の弱点とされるものを修正するように設計されました。

  • SHA-1は、既存のSHAハッシュ関数の中で最も広く使用されています。これは、Secure Socket Layer(SSL)セキュリティを含むいくつかの広く使用されているアプリケーションやプロトコルで採用されています。

  • 2005年に、SHA-1の長期的な使用可能性を疑わしいものにする、実用的な時間枠内でのSHA-1の衝突を明らかにする方法が見つかりました。

  • SHA-2ファミリには、ハッシュ値のビット数に応じて、さらに4つのSHAバリアント、SHA-224、SHA-256、SHA-384、およびSHA-512があります。SHA-2ハッシュ関数に関する攻撃の成功はまだ報告されていません。

  • SHA-2は強力なハッシュ関数ですが。大幅に異なりますが、基本的な設計はSHA-1の設計に従います。したがって、NISTは新しい競争力のあるハッシュ関数の設計を求めました。

  • 2012年10月、NISTは新しいSHA-3標準としてKeccakアルゴリズムを選択しました。Keccakには、効率的なパフォーマンスや攻撃に対する優れた耐性など、多くの利点があります。

RIPEMD

RIPEMDは、RACE整合性プリミティブ評価メッセージダイジェストの頭字語です。このハッシュ関数のセットは、オープンな研究コミュニティによって設計され、一般にヨーロッパのハッシュ関数のファミリーとして知られています。

  • セットには、RIPEMD、RIPEMD-128、およびRIPEMD-160が含まれています。このアルゴリズムには、256ビットバージョンと320ビットバージョンもあります。

  • オリジナルのRIPEMD(128ビット)は、MD4で使用されている設計原則に基づいており、疑わしいセキュリティを提供することがわかっています。RIPEMD 128ビットバージョンは、元のRIPEMDの脆弱性を克服するための迅速な修正の代替品として提供されました。

  • RIPEMD-160は改良版であり、ファミリで最も広く使用されているバージョンです。256ビットバージョンと320ビットバージョンは、偶発的な衝突の可能性を減らしますが、それぞれRIPEMD-128とRIPEMD-160と比較して高いレベルのセキュリティはありません。

ワールプール

これは512ビットのハッシュ関数です。

  • これは、Advanced Encryption Standard(AES)の修正バージョンから派生しています。設計者の1人は、AESの共同作成者であるVincentRijmenでした。

  • Whirlpoolの3つのバージョンがリリースされました。つまり、WHIRLPOOL-0、WHIRLPOOL-T、およびWHIRLPOOLです。

ハッシュ関数の応用

暗号化プロパティに基づいて、ハッシュ関数を直接適用する方法は2つあります。

パスワードストレージ

ハッシュ関数は、パスワードストレージを保護します。

  • パスワードをクリアで保存する代わりに、ほとんどすべてのログオンプロセスはパスワードのハッシュ値をファイルに保存します。

  • パスワードファイルは、(ユーザーID、h(P))の形式のペアのテーブルで構成されます。

  • ログオンのプロセスを次の図に示します-

  • 侵入者は、パスワードにアクセスした場合でも、パスワードのハッシュしか見ることができません。ハッシュ関数には原像耐性の特性があるため、ハッシュを使用してログオンすることも、ハッシュ値からパスワードを取得することもできません。

データ整合性チェック

データ整合性チェックは、ハッシュ関数の最も一般的なアプリケーションです。これは、データファイルのチェックサムを生成するために使用されます。このアプリケーションは、データの正確性についてユーザーに保証を提供します。

このプロセスを次の図に示します-

整合性チェックは、ユーザーが元のファイルに加えられた変更を検出するのに役立ちます。ただし、独創性についての保証はありません。攻撃者は、ファイルデータを変更する代わりに、ファイル全体を変更し、新しいハッシュをまとめて計算して、受信者に送信することができます。この整合性チェックアプリケーションは、ユーザーがファイルの独創性に確信を持っている場合にのみ役立ちます。