web-dev-qa-db-ja.com

SHA-1暗号化ですか?

私は、SHA-1が暗号化ハッシュ関数であることを読みました。試験では、可能な一方向暗号化アルゴリズムとしてSHA-1が与えられました。 SHA-1は入力としてキーを必要としますか? 「暗号化」の資格を得るにはキーが必要ですか?

3
T. Webster

これは簡単に googled または wikipedia'd になりますが、次のようになります。

SHA-1は暗号化ハッシュ関数ですが、暗号化関数ではありません。 SHA-1機能を使用するすべての操作は元に戻せません。

SHA-1 couldはキーを使用して実行されますが、これによりメッセージ認証コードになります(MAC、参照 [〜#〜] hmac [〜#〜] )。

私はあなたの最後の文に同意します。何かを暗号化するには、いくつかの鍵、またはそれに対応する鍵が必要です。入力のビットを反転する(かなりお粗末な)暗号化機能があるとすると、キーは「各ビットを反転」します。別の関数は、ラウンド関数Fを使用する feistel network であり、その関数への入力としてキーK = 281474976710656があります。

7
Henning Klevjer

定義により、ハッシュ関数暗号化ではありません。

暗号化は、盗聴者がメッセージを読み取ることができないようにメッセージ(または情報)をエンコードするプロセスですが、許可された当事者はそれを行うことができます。

そして

ハッシュ関数は、データの任意のブロックを取り、固定サイズのビット文字列である暗号化ハッシュ値を返すアルゴリズムであり、データに変更を加えると(非常に高い確率で)ハッシュが変更されます。値。

暗号化はconfidentialityを提供し、ハッシュ関数はintegrityを提供します。

ハッシュ関数は、整合性機能のために暗号化と一緒に使用されます。

9
Cristian Dobre

「暗号化」という用語は、暗号化ではなく、たとえばハッシングなどに誤って使用されていますが、広く使用されています。

encryptionの厳密な定義は、一部のデータが次のような方法で変換されることを前提としています。

  • 変換後は、データを読み取ることができなくなります。
  • decryptionと呼ばれる逆のプロセスがあり、暗号化された出力から元のデータを復元できます。知られている。

暗号化には、暗号化プロセスが、復号化に使用される秘密データにリンクされているパラメーターを使用することが何らかの方法で必要です。そのパラメーターをkeyと呼びます。暗号化のキーが復号化に使用される秘密データと同一である場合、これは対称暗号化です。暗号化キーが秘密データと数学的にリンクされているが、暗号化キーが安全に公開できるように区別されている場合、これは非対称暗号化です。

したがって、「一方向暗号化」などはあり得ず、SHA-1は暗号化ではありません。 SHA-1はハッシュ:キーなし、固定サイズ出力(SHA-1の場合は160ビット)、逆処理なし(特に、入力は160出力ビットよりもかなり大きくなる可能性があります)。

残念ながら、あなたの試験問題を書いた人々は明らかに間違った用語を使用していました。最善の方法は、試験の期間中、彼らの専門用語に従うことです。これは、一部の人々が実際にハッシュされるパスワードの「暗号化されたパスワード」について語るのと同じ混乱です。

6
Thomas Pornin

SHA-1は暗号化アルゴリズムではなく、ハッシュ関数です。違いをお話します。暗号化機能がテキストとキーを入力として取得しています。キーを使用します。平文に対して何らかのアルゴリズムを実行し、暗号化されたテキストとして出力します。入力として「abcdef」を、キーとして「123」を指定すると、DES、AESなどのアルゴリズムを使用して「abc」の暗号化されたテキストが返されます。これにはキーが必要です。これは、テキストをボックスに入れて、キーを使用してボックスをロックするようなものです。出力サイズは、入力サイズによって異なります。つまり、暗号化に1000文字を指定すると、同様のサイズの暗号化されたテキストが得られます。一部のアルゴリズムではサイズが異なる場合があります。

ハッシュ関数は値を暗号化しません。ハッシュ関数は値のインデックスのようなものです。簡単なシナリオを考えてみましょう。私には番号Nがあり、その番号のハッシュはN%100と定義されています。たとえば、Nを123と指定した場合、Nのハッシュは123%100、つまり23であり、Nが1245621345の場合、そのハッシュは1245621345%100、つまり45になります。入力が小さい場合でも大きい場合でも、ハッシュは長さが固定されています。ここでは2桁です。同様に、SHA-1は入力値を取得し、そのハッシュを計算します。すべてのSHA-1ハッシュ値は160ビットになります。つまり、1文字または100000文字を指定しても、出力サイズは160ビットのみになります。したがって、SHA-1にはキーは必要ありません。認証の目的で使用されます。ハッシュ関数の使用をグーグルできます。

2
sujeesh

SHA-1はハッシュ関数です。ハッシュ関数は「一方向変換」を実行することを目的としています。元のメッセージはダイジェストから復元できません。したがって、SHA-1が「一方向暗号化」を構成するかどうかは、その用語の定義クラスからに依存します。セマンティクスに応じて、いくつかの論理的な定義が可能です。

  • 「暗号化」が「難読化」と同義であることが意図され、「一方向」が「不可逆性any手段」を意味する場合、ハッシュとしてのSHA-1はこれに適合します(非常に緩い) )用語の定義。

    暗黙的に必要な「キー」は「ソルト」と見なすことができます。これは、生成されたハッシュを確定的ではあるが予測不可能な方法で変更するほとんどの暗号化ハッシュのコンポーネントであり、したがって同じハッシュを再現するために正しいことが必要です同じメッセージから。ただし、技術的には、ハッシュに使用されるソルトは、通常のキーのように秘密ではありません。

  • 「一方向暗号化」==「キー付きハッシュ」の場合、SHA-1はプリミティブ形式では定義に適合しません。ただし、SHA-1はHMACのハッシュ関数として使用できます。これはメッセージ認証用に設計された「キー付きハッシュ」です(正しいキーを持つ正しいメッセージだけが同じHMACを生成します)。 HMACは、認証済み暗号ブロックモードやゼロ知識証明など、さまざまなセキュリティスキームで使用されます。 SHA-1ベースのHMACは、適切にHMAC-SHA1という名前です。

  • 「暗号化」が「キーベースの可逆的な難読化方法」として定義されている場合、「一方向暗号化」==「トラップドア暗号化」または「非対称暗号化」とも呼ばれ、SHA-1はどのような形式でもありません。 2つのキーが使用されます。いずれかが暗号化アルゴリズムで使用されると、他のキーの知識がなければ元に戻せないメッセージの変換が生成されます。 RSAと楕円曲線アルゴリズムは例であり、SHA-1ではありません。

2
KeithS