180-1として発表された。これがSHA-1と呼ばれるものであり、SHA-0とは圧縮関数におけるビット演算のローテートが1つ異なるのみである。NSAによれば、これによってSHA-0においてセキュリティを低下させていたフローが修正されたとしているが、NSAはそれ以上の説明や証拠の提示を行わなかった。「暗号学的ハッシュ関数#用途」を参照SHA-1は暗号に関する多くのアプリケーションやプロトコルに用いられている。例としては、TLS/SSL、OpenPGP、SSH、S/MIME、IPsecなどが挙げられる。これらではMD5もよく用いられる(SHA-1とMD5はともにMD4の後継である)。SHA-1とSHA-2は、アメリカ合衆国において機密情報を扱う際に法律によって要求されるハッシュアリゴリズムの一つである。180-1では、SHA-1を私的にあるいは商業で用いることも推奨している。SHA-1は合衆国政府での利用はほぼ終了しており、NISTでは「連邦組織は、電子署名、タイムスタンプ、衝突への耐性を必要とするアプリケーションでのSHA-1の利用を可及的速やかに中止すべきである。2010以降はSHA-2を利用すべきである」としている[16]。Standardであった。DSAの仕様には、SHA-1を利用する過程が含まれている。SHAハッシュ関数はブロック暗号であるSHACALの基礎となっている。データ完全性編集SHA-1ハッシュはGit、Mercurial、Monotoneといった分散型バージョン管理システムにおいても、バージョンの管理やデータの破損、改竄の検出に用いられている。任天堂のWiiにおいては、起動時にSHA-1による署名を検証しているが、これを回避する手法も開発されている[17]。これは原像攻撃と呼ばれる。後者の理由により、ハッシュ関数の強度はハッシュ長の半分の鍵長の共通鍵暗号と比較される。これより、SHA-1の強度は80ビットであると考えられてきた。試行よりもずっと少ない試行で衝突を発生させうる手法が発見された。attacksに対して脆弱である[18]。{message}})}のような鍵をつけたハッシュだけでメッセージが署名されている場合、攻撃者は、そのメッセージを伸長しハッシュを再計算する(鍵を知ることなしにできる)ことでメッセージを改竄することができる。この攻撃に対するもっとも単純な対処法は、ハッシュ計算を2回行うことである。0^{b}}の長さはハッシュ関数のブロック長と等しい)。少ない試行において衝突を発見する攻撃を報告した[19]。少ない試行で衝突を発見できる攻撃が報告された[20]。まで削減された[21]。Cochranによってこの結果の詳細が説明、検証された[22]。Awardを受賞した。圧縮関数の試行で2ブロックの衝突が発見された。試行しか要しないことから、理論的に破られたものとみなされている[24]。2010年にはGrechnikovがこの攻撃を73ラウンドのSHA-1に対応するよう拡張している[25]。80ラウンドのSHA-1で実際に衝突を発見するには、膨大な計算機資源が必要とされる。そのため、グラーツ工科大学によってSHA-1での衝突発見のためのBOINCプロジェクトが開始されたが、進展がなかったことから2009年に中止された[26]。Cannièreは、攻撃者が少なくともメッセージの一部を選ぶことができるSHA-1での衝突を発見したと主張した[27][28]。試行で衝突を発見しうる攻撃法が報告された[29]。ローカル衝突パスが独立でなく、最も効率の良い衝突ベクトルが既知であったことが明らかとなり、この報告は撤回された[30]。著者によって推定が誤りであることが発見され撤回された[32]。Stevensによる攻撃法が報告されている[33]。この攻撃では1つのハッシュを破るためにクラウドサーバからCPUリソースを借り受けるためのコストは277万ドルと見積もられている[34]。Stevensは、差分経路攻撃を実装し、この手法をHashClashと呼ばれるプロジェクト[35]で開発した。試行で可能だと見積もっている。試行で可能なSHA-1の圧縮関数に対する衝突攻撃が報告された。この攻撃では攻撃者が初期状態を自由に決定できる必要があるため、内部状態の初期状態を選択することができない完全なSHA-1そのものにおける衝突攻撃の成功を直接に意味するものではないが、SHA-1の安全性に対する懸念となる。これまでに報告されている攻撃法が膨大な計算機資源と資金を必要としていたことに対して、今回の報告は完全なSHA-1に対する実用的な攻撃が可能であることを示したものである。この攻撃法は報告者による既知の攻撃法に基づいており、高性能かつコストパフォーマンスに優れたNVIDIAのGPUカードを用いたものである。衝突は計64枚のグラフィックカードからなる16ノードのクラスタによって発見された。EC2で2000米ドル分のGPU時間を購入すれば可能であると見積もられている[36]。完全なSHA-1において衝突を発見するためには、EC2において7万5000から12万米ドル程度のGPU時間で可能であると報告者は見積もっている。これは、国家規模の情報機関などにとどまらず、一般的な犯罪組織でさえ用意できるレベルと言える。このため、報告者は一刻も早くSHA-1の使用を中止するよう推奨している[36]。衝突例の発表編集2017年2月23日、Googleは「SHAttered」と題して[37]、2つのPDFファイルのSHA-1ハッシュを一致させることに成功したと発表した[38]。衝突するハッシュの算出には、922京回のハッシュ計算(110台のGPUで1年かかる計算)が必要であるとしている[38]。Firefoxでも発表翌日の2月24日に、既存のバージョンについてもSHA-1証明書を無効化している[39]。JouxによってSHA-0への攻撃が報告された[40]。BihamとChenはほぼ同じSHA-0ハッシュを持つ2つのメッセージを発見した。160ビットのハッシュのうち142ビットが一致していた。彼らは80ラウンドから62サウンドに削減したSHA-0における完全な衝突も発見した。2004年8月12日、Joux、Carribault、Lemuet、Jalbyによって、フルバージョンのSHA-0における衝突が報告された。試行で衝突を発見した。sessionにおいて、Wang、Feng、Lai、YuによってMD5、SHA-1他いくつかのハッシュ関数に対する攻撃の初期的な結果が報告された。試行が必要であり、これはJouxらによるものより優れたものである[41]。試行でSHA-0の衝突を発見可能であることが報告された[20][42]。2004における報告の後、NISTは2010年までにSHA-1の使用を終了し、SHA-2に移行するプランを発表した[43]。Programの認定を申請することが可能である。2013年現在、SHA-1については2000以上の実装が認定されている[44]。ハッシュ値の例編集SHA-1のハッシュの例を、十六進法およびBase64エンコードにて示す。L9ThxnotKPzthJ7hu3bnORuT6xI=メッセージをわずかでも変更すれば、得られるハッシュ値は大きく変化する。変えると、160ビットのハッシュのうち81ビットが変化する。3p8sf9JeGzr60+haC9F9mxANtLM=空の入力に対するハッシュ値は以下の通りである。2jmj7l5rSw0yVb/vlWAYkK/YBwk=疑似コード編集SHA-1の疑似コードは以下の通りである。Base64エンコードで表現される。