web-dev-qa-db-ja.com

sha1sumはダウンロード可能なソフトウェアパッケージの署名に対して引き続き安全ですか?

sha1sumを使用して、パッケージのSHA-1ハッシュ値を計算します。

使用方法の説明:一部のソフトウェアパッケージを配布しています。ユーザーがダウンロードしたものが正しいパッケージであることを、最後まで確認できるようにしてください。

SHA-1はかなり弱いことが知られているため、SHA-1暗号化ハッシュアルゴリズムはSHA-2に置き換えられました。

それでもsha1sumを使用できますか?

それとも、sha256sumまたはsha512sumに置き換えますか?

27
Michael

次のコンテキストで「use sha1sum」を使用するとします。いくつかのソフトウェアパッケージを配布し、ユーザーがダウンロードしたものが正しいパッケージであることを最後まで確認できるようにしたいとします。これは、(SHA-1で計算された)ハッシュ値を「変更できない」方法で(たとえば、HTTPS経由で提供されるWebページの一部として)伝える方法があることを前提としています。

また、ここでは攻撃について話していると思います。つまり、ダウンロードされたパッケージを何らかの方法で変更し、検出されない変更を挿入したい悪意のある個人です。

使用されるハッシュ関数がここで提供するセキュリティプロパティは、second-preimagesに対する耐性です。最も重要なことは、これは衝突への抵抗と同じではないことです。衝突とは、攻撃者が同じ値にハッシュする2つの異なるメッセージmm 'を作成できる場合です。 2番目のプリイメージは、攻撃者に固定mが与えられ、同じにハッシュする明確なm 'を見つけることを要求されたときです値。

2番目のプリイメージは、衝突よりも取得がはるかに困難です。出力サイズnビットの「完全な」ハッシュ関数の場合、衝突を見つけるための計算量は約2です。n/ 2 ハッシュ関数の呼び出し。 2番目のプリイメージの場合、これは2です。n。さらに、より高速な衝突攻撃を可能にする構造上の弱点は、2番目のプリイメージ攻撃に必ずしも当てはまりません。これは特に、SHA-1の既知の弱点に当てはまります。現在(2015年9月)、理想的な2未満の衝突の計算を可能にするSHA-1の既知の理論的な弱点がいくつかあります。80 努力(これはまだ大きな努力であり、約261、そのため実際にはまだ実証されていません);しかし、これらの弱点は、攻撃者がmm 'の両方を作成することを本質的に必要とする差分パスであるため、2番目に持ち越されません-preimages。

当面、SHA-1に対する2番目のプリイメージ攻撃は、一般的な攻撃よりも理論的または学術的に高速であり、2160ロングショット によって、技術的な実現可能性をはるかに超えるコスト。

ボトムライン:あなたがやろうとしていることのコンテキスト内では、SHA-1は安全であり、しばらく安全であり続ける可能性があります(MD5まだ適切でしょう)。

sha1sumを使用するもう1つの理由は、クライアント側のツールが利用できることです。特に、Microsoft for Windowsが提供するコマンドラインハッシュツール( [〜#〜] fciv [〜#〜]と呼ばれます )はMD5とSHA-1を認識していますが、SHA-256は認識していません(少なくともドキュメントにはそう書かれています)(*)。

Windows 7以降には、「-hashfile」サブコマンドでSHA-256ハッシュを計算できる「certutil」と呼ばれるコマンドラインツールも含まれています。これはあまり知られていませんが、便利な場合もあります。


そうは言っても、SHA-1を使用するに対して強力な理由は、imageのそれです:現在SHA-1の使用をブーイングおよびモックする非常にトレンディです。群衆は、その撤去、アナテマ、逮捕、公の処刑を強く要求している。 SHA-1を使用することで、あなたは間違いなくヒップスターではないことを世界に伝えています。ビジネスの観点からは、ファッションdu jourに負けないことはほとんどありません。そのため、SHA-2関数の1つを使用する必要があります。 SHA-256またはSHA-512。

SHA-512またはSHA-512よりもSHA-256を優先する強い理由はありません。一部の小さな32ビットのみのアーキテクチャはSHA-256の方が快適ですが、これが実際に問題になることはめったにありません(SHA-512の32ビット実装でも、貧血時に1秒あたり数十メガバイトのデータをハッシュできます)ラップトップ、および32ビットモードであっても、古すぎないx86 CPUはSSE2を使用した64ビット計算でいくつかの機能を備えており、SHA-512に優れたブーストを提供します。マーケティングの専門家なら、512は256よりも大きいという唯一の基準でSHA-512を使用するように指示するので、何らかの(魔法の)方法で「より優れている必要があります」。

57
Tom Leek

SHA-256またはSHA-512を使用する必要があります。

自分で作成したパッケージにのみ署名する場合、技術的にはSHA-1はその目的のためにまだ安全です。現在弱められている特性は、厳密には依存していない「衝突抵抗」です。ただし、SHA-1のセキュリティは時間の経過とともに悪化するだけなので、次に進むことは理にかなっています。

7
paj28

トムリークには 美しい答え があります(これが受け入れられる理由です)。これは、SHA-1の使用の背後にある数学的に証明可能な事実に関係しています。事実に基づくものではありませんが、貴重なヒューリスティック情報を提供する可能性がある2番目のアプローチがあります。私はブルース・シュナイアーの意見を読んでこのアプローチを学びましたが、手元にあるリンクを見つけることができないので、ブルースは私の名前落としに対処する必要があります。

理論的には、アルゴリズムは壊れるまで壊れません。誰かがXを実行する方法を見つけるまで、Xは計算上実行不可能であるべきものであり、「壊れている」とは見なされません。1 ただし、暗号化における実際のアプリケーションでは、その価値は限られています。暗号技術者は、製品がバラバラになる前ではなく、その後に本当に通知を受け取ります。

歴史的に発見されたことは、アルゴリズムが1つの大きなステップでめったに壊れないことです。はい、それは起こる可能性があり、暗号学者はそれを計画する必要がありますが、経験的に発見されたのは、それらは通常、時間の経過とともに、紙ごとに削り取られるということです。衝突を生成する難しさを監視することは、アルゴリズムが実際に壊れる時期を推測するためのかなり良い指標であることがわかっています。トムが衝突に2時間がかかると指摘したとき80 操作し、今2を取ります61、彼がしたように、261 オペレーションは理論的に過ぎません。それでも、試行を正当化するには大きすぎるからです。ただし、「アルゴリズムが19ビットの電力の減少を経験した」と考えて、それを前向きに予測し、それが問題になる時期を推定するための貧しい人の経験則として使用することも有効です。

理論的にはSHA-1はまだ完全には壊れていませんが、このような考え方がSHA-3が存在する理由です。 SHA-3の開発とテストに関わる暗号技術者は、SHA-3の信頼を築くのにかなりの時間がかかることを知っており、SHA-1が破綻する前ではなく、破綻する前に信頼性を確実に確保したいと考えています。

1。 「壊れた」ハッシュの最も技術的に厳密な定義は、実際に計算可能になるときとは対照的に、攻撃者がブルートフォースよりも上手くできるものにすぎないことを知っています。ただし、この後者の定義は、ハッシュの実際的な側面について説明するときに、より一般的に使用されます。

3
Cort Ammon

連邦政府のために仕事をしていない場合でも、以下のドキュメントへのリンクは、署名の認証などの特定のタスクの将来の日付までにハッシュキーの長さを使用する必要がある期間への良い参照です。パッケージ認証の場合は、衝突(同じハッシュに一致する変更されたパッケージ)を作成することをはるかに困難にするサイズも含めます。なぜSHA1とSHA512の両方を使用しないのですか(計算時間がそれほど負担にならない場合)?また、与えられたハッシュに署名するために使用される非対称キーの長さを考慮に入れてください。これについて考えているのは素晴らしいことですが、比較のために改ざんされたハッシュを受信しないようにする方法や、含まれているすべてのライブラリのソースのソースを確実にする方法など、より差し迫った他の整合性の問題があると思われます。リスク。

追伸ブラウザの証明書を検討している場合、ChromeとIEは、SHA1の使用を終了することについてUIを設定するか、または設定しました。パスワードを保存している場合、PBKDF2でソルト処理された(場合によってはペッパー処理された)ハッシュを確認します。

http://csrc.nist.gov/publications/nistpubs/800-131A/sp800-131A.pdfhttp://googleonlinesecurity.blogspot.com/2014/09/gradually- sunsetting-sha-1.htmlhttps://en.wikipedia.org/wiki/PBKDF2

2
user219861

意図された目的では、実用的な答えは「はい、もちろんです」ですが、名声の理由から、より新しいハッシュ(SHA-3など)も公開する必要があります。
あまり「悪臭」がなければ、原則として引き続きMD5を使用できます(怒鳴る人は別として、このアプリケーションではMD5でも問題なく動作します)。

SHA-1を使用したダウンロードの検証は、これまで「安全」であったことはなく、主に安全であることが意図されていません。 (あらゆる種類の)ハッシュを提供する主な目的は、ビットエラー、部分的なダウンロード、または誤って間違った実行可能ファイルをダウンロードすることを検出することです(リストの上下の行をクリックして、気づかない)。

悪意のある変更はハッシュで十分に対処されない問題です。バイナリを置き換えるためにサーバーに十分なアクセス権を持つ攻撃者は通常、ハッシュも置き換えることができるためです。
間違いなくdo CDNを使用すると、ある程度のセキュリティが得られます。これは、CDN内のノードにアクセスしたユーザーが、ユーザー(ダウンロードするあなただけが制御していることに気づくサーバーからのハッシュ。

ただし、「安全」で悪意のある変更からの回復力が必要なものが必要な場合は、実行可能ファイルに最も確実にデジタル署名し、たとえばGPG署名を含める必要があります。ハッシュはしません。

2
Damon

まだ使用できますか?..はい、使用できますが、sha-1は衝突攻撃に対して脆弱であり、多くのブラウザーで非推奨になっています。

問題がまだ使用する必要がある場合は、使用しないでください。sha-2およびsha256sumタイプのプログラムに移動する必要があります。

0
TheJulyPlot

SHA2よりも優れた選択肢があります。たとえば、Blake2はSHA3競争のファイナリストであり、blake2-256はSHA1と同じくらい高速で、SHA2と比べてはるかに高速です。 Winrar 5のチェックサムアルゴリズムとして使用できます。MD5やSHA1と同様に、SHA2はMerkle-Damgard構造に基づいており、同様の脆弱性を持っている可能性があります。 SHA3​​は脆弱ではありませんが、SHA3-224は約です。 SHA1より8倍遅い。

0
Smit Johnth