ハッシュアルゴリズム

私が信じているように、多くの人々は2007年以来、米国国立標準技術研究所(NIST)がSHA-1およびSHA-2ファミリーのアルゴリズムに代わるハッシュアルゴリズムを開発する競争を行っていることを知っています。 ただし、このトピックは、何らかの理由で、サイトで注意を奪われています。 実際、これは私をあなたに導いた。 ハッシュアルゴリズムに関する一連の記事に注目してください。 このサイクルでは、ハッシュ関数の基本を一緒に研究し、最も有名なハッシュアルゴリズムを検討し、SHA-3コンテストの雰囲気に飛び込み、それに勝つと主張するアルゴリズムを検討し、それらを確実にテストします。 また、可能であれば、ロシアのハッシュ標準が考慮されます。

私自身について


情報セキュリティ学部の学生。

ハッシュについて


現在、ハッシュなしでは暗号化アプリケーションでできることはほとんどありません。
ハッシュ関数は、通常はバイナリアルファベットで記述された任意のメッセージまたはデータセットを、畳み込みと呼ばれる固定長ビットの組み合わせに「圧縮」するように設計された関数です。 ハッシュ関数には、統計実験を行うとき、論理デバイスをテストするとき、データベース内のレコードの整合性をすばやく検索してチェックするためのアルゴリズムを構築するときに、さまざまな用途があります。 ハッシュ関数の主な要件は、引数値のランダムな選択による値の均一な分布です。
暗号化ハッシュ関数は、暗号化されたハッシュ関数と呼ばれます。つまり、暗号化アプリケーションに固有の多くの要件を満たします。 暗号化では、ハッシュ関数を使用して次の問題を解決します。
-データの送信または保存中にデータの整合性を監視するシステムの構築、
-データソース認証。

任意の関数h:X-> Yはハッシュ関数と呼ばれ、簡単に計算でき、メッセージMのh(M)= H(畳み込み)は固定ビット長を持ちます。 Xはすべてのメッセージのセット、 Yは固定長のバイナリベクトルのセットです。

原則として、ハッシュ関数は 2つの変数のいわゆるワンステップ圧縮関数y = f(x 1 、x 2 )に基づいて構築されます。ここで、 x 1x 2yそれぞれ長さmnnのバイナリベクトルでありnは畳み込み長です、 mはメッセージブロックの長さです。
h(M)の値を取得するために、メッセージは最初に長さmのブロックに分割され(この場合、メッセージの長さがmの倍数でない場合、最後のブロックは特別な方法で完全なブロックに追加されます)、次に受信ブロックM 1 、M 2 、..、M Nは、次の逐次畳み込み計算手順を適用します。

H o = v、
H i = f(M i 、H i-1 )、i = 1、..、N、
h(M)= H N

ここでvは定数であり、多くの場合初期化ベクトルと呼ばれます。 彼女が出る
さまざまな理由により、秘密の定数またはランダムデータのセット(日付と時刻のサンプルなど)になります。
このアプローチでは、ハッシュ関数のプロパティは、ワンステップ圧縮関数のプロパティによって完全に決定されます。

暗号化ハッシュ関数には、キーとキーレスの2つの重要なタイプがあります。 キーハッシュ関数は、メッセージ認証コードと呼ばれます。 追加の手段なしで、相互に信頼するユーザーがいるシステムでデータソースの正確さとデータの整合性の両方を保証することができます。
キーレスハッシュ関数は、エラー検出コードと呼ばれます。 追加の手段(暗号化など)により、データの整合性を保証します。 これらのハッシュ関数は、信頼するユーザーと信頼しないユーザーの両方がいるシステムで使用できます。

統計プロパティと要件について



既に述べたように、ハッシュ関数の主な要件は、引数値のランダムな選択による値の均一な分布です。 暗号化ハッシュ関数の場合、引数のわずかな変化でも関数の値が大きく変化することも重要です。 これは雪崩効果と呼ばれます。

ハッシュの重要な要件は次のとおりです。
-製造の不可能性、
-変更は不可能です。

最初の要件は、正しい畳み込み値を持つメッセージを選択する複雑さが高いことを意味します。 2つ目は、正しい畳み込み値を持つ別のメッセージの既知の畳み込み値を持つ特定のメッセージの選択の複雑さが高いことです。

キーレス機能が必要です:
-単方向性、
-衝突に対する抵抗、
-2番目のプロトタイプの発見に対する抵抗。

単方向性により、特定の畳み込み値でメッセージを見つけることの複雑さが理解されます。 現時点では、単一方向性が実証されている使用済みハッシュ関数はないことに注意してください。
耐衝突性は、同じ畳み込み値を持つメッセージのペアを見つけるのが難しいことと理解されています。 通常、アルゴリズムの陳腐化とその早期交換の必要性の最初の信号として機能するのは、暗号解読者による衝突を構築する方法の発見です。
2番目のプロトタイプを見つけることに抵抗があるため、既知の畳み込み値を持つ特定のメッセージに対して同じ畳み込み値を持つ2番目のメッセージを見つけることの難しさが理解されます。

これは理論的な部分であり、将来的に私たちにとって役立つでしょう...

一般的なハッシュアルゴリズムについて



CRC16 / 32アルゴリズム-チェックサム(暗号変換ではない)。

アルゴリズムMD2 / 4/5/6 これらは、RSAアルゴリズムの作成者の1人であるRon Ryvestの研究です。
MD5アルゴリズムはかつて非常に人気がありましたが、ハッキングの最初の前提条件は90年代後半に現れ、現在ではその人気は急速に低下しています。
MD6アルゴリズムは、構造的な観点から非常に興味深いアルゴリズムです。 彼はSHA-3コンテストにノミネートされましたが、残念なことに、著者はそれを条件付ける時間を持っていなかったため、このアルゴリズムは第2ラウンドで合格した候補者のリストには含まれていません。

SHAラインのアルゴリズム現在広く使用されているアルゴリズム。 SHA-1からSHA-2バージョン標準への積極的な移行。 SHA-2は、SHA224、SHA256、SHA384、およびSHA512アルゴリズムの総称です。 SHA224およびSHA384は、本質的にそれぞれSHA256およびSHA512の類似物であり、その中の情報の畳み込み部分を計算した後にのみ破棄されます。 古い機器との互換性を確保するためにのみ使用してください。

ロシアの標準はGOST 34.11-94です。

次の記事で



MDアルゴリズムの概要(MD4、MD5、MD6)。

文学



A.P.アルフェロフ、暗号の基礎。

ブルース・シュナイアー、応用暗号。

Source: https://habr.com/ru/post/J93226/


All Articles