web-dev-qa-db-ja.com

SHA1 VS RSA:それらの違いは何ですか?

SHA1とRSAの違いは何ですか?それらは単に異なるアルゴリズムなのか、それとも根本的に(つまり、さまざまな用途に使用される)何らかのレベルで異なるのですか?.

44
Ted Smith

根本的に異なります。

SHA1は、任意のサイズの入力を固定長出力(この場合は160ビット)に変換する一方向関数であるハッシュアルゴリズムです。暗号化ハッシュ関数は、ブルートフォースによる場合を除き、同じ出力を与える2つの入力を見つけることができないものです(たとえば、128ビット関数では、平均2 ^ 64メッセージを試してそのようなものを見つける必要があります)誕生日のパラドックスと呼ばれるものが原因の「衝突」-グーグル、それ以上。

実際、SHA1の場合、これは当てはまりません。アルゴリズムは(少なくとも暗号用語では)壊れており、Xiaoyun Wangらによる古典的な誕生日攻撃に勝る衝突攻撃が説明されています。 SHA2ファミリは壊れておらず、SHA3アルゴリズムまたはアルゴリズムファミリに同意するプロセスがNISTによって進行中です。

編集-Googleは実際のSHA1コリジョンを生成して公開しました。

[〜#〜] rsa [〜#〜]は非対称暗号化アルゴリズムであり、入力を暗号化してから出力を復号化できます(逆にできないハッシュアルゴリズムとは対照的です)。暗号化(公開キー)と復号化(秘密キー)で異なるキーを使用します。したがって、これは他から暗号化されたメッセージを受信するために使用できます。公開鍵を公開できますが、秘密鍵を持つユーザーのみが暗号化されたメッセージを復号化できます。

RSAのキーを逆にすると、デジタル署名の生成に使用できます。秘密キーで何かを暗号化することで、誰でも公開キーで暗号化を解除でき、公開キーが自分のものであることが確実な場合、あなたがオリジナルを暗号化した人であるという自信。これは通常、ハッシュ関数と組み合わせて行われます-入力をハッシュし、それを秘密キーで暗号化し、入力メッセージに固定長のデジタル署名を与えます。

86
David M

以前の回答はすでに十分な説明です。しかし、SHAとRSAがしばしば一緒に出てくるという理由だけで、この質問をすると思います。だから、理由を説明しましょう。

まず、心に留めておいてください

RSAは効率的ではありませんが、SHAです。

Windows 7をダウンロードし、MicrosoftのオリジナルのWindows 7かどうかを確認したいとします。 MicrosoftがWindows 7をRSAで暗号化するだけの場合、それを我慢することはできません。そのため、MicrosoftはWindows 7でSHA1を使用し、128ビット長のデータを生成します。そして、Microsoftはこの128ビット長のデータをRSAで暗号化します(秘密キーを使用します)。

それから、あなたがする必要があるのはあなたの公開鍵がMicrosoftからのものであることを確認することです。そして、SHA1を使用して、128ビット長のデータも生成します。そして、RSAの公開鍵を使用して、Microsoftの署名を解読します。次に、2つの128ビット長のデータを比較して、一致するかどうかを確認します。

9
demonguy

SHA1はハッシュアルゴリズム(ドキュメントおよび証明書の署名)であり、RSAは暗号化/復号化アルゴリズム(安全な通信)です。

7
Spencer Ruport

SHA1は暗号化ハッシュ関数ですが、RSAは暗号化のアルゴリズムです。

ハッシュ関数はデータの一部を受け取り、固定長の文字列を返します。暗号化ハッシュ関数では、すべての戻り文字列は同じ確率を持ちます。ハッシュ番号のみを考えると、入力を決定することも、同じハッシュを与える別の入力を見つけることもできません(非常に小さな確率での例外)。 Sha1にはいくつかのセキュリティ上の欠陥があります。

暗号化のアルゴリズムはデータの一部を受け取りますが、出力は固定長ではなく、暗号化です。出力(暗号化)があれば、(正しいキーがあれば)入力を決定できます。

5
AnnaR

他の人がコメントしたように、それらは異なる機能を提供する根本的に異なるものです。 RSAを使用して情報を一見ランダムな形式にスクランブルし、SHA1を使用してメッセージの整合性を確保します(つまり、どのビットも変更されていません)。セキュリティアプリケーションでは、必要な機能に応じて、一方または両方を使用します。

5
sybreon