SHA-1
(SHA-0 から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/08/13 14:46 UTC 版)
一般 | |
---|---|
設計者 | アメリカ国家安全保障局 |
初版発行日 | 1993 (SHA-0), 1995 (SHA-1) |
シリーズ | (SHA-0), SHA-1, SHA-2, SHA-3 |
認証 | FIPS PUB 180-4, CRYPTREC(運用監視) |
詳細 | |
ダイジェスト長 | 160 bits |
構造 | Merkle-Damgård construction |
ラウンド数 | 80 |
最良の暗号解読法 | |
2011年にMarc Stevensによって261回の試行で理論上、強衝突耐性を突破[1][2]。 |
SHA-1(シャーワン[3][4])は、Secure Hash Algorithmシリーズの暗号学的ハッシュ関数で、SHAの最初のバージョンであるSHA-0の弱点を修正したものである。National Security Agency(NSA)によって設計され、National Institute of Standards and Technology(NIST)によってFederal Information Processing Standard(FIPS) PUB 180-4として標準化されている。NISTは2030年12月31日に仕様を廃止予定[5]。
概要
SHAシリーズ全体の俯瞰についてはSecure Hash Algorithmの記事を参照のこと。
SHA-1は、160ビット(20バイト)のハッシュ値を生成する。SHA-1はSHA-0にきわめて類似しており、SHA-0において脆弱性の原因となっていた仕様のエラーを修正したものがSHA-1であるため、SHA-0は基本的に全く用いられない。
廃止
以前は、SHA-1はSHAシリーズの中で最も広く用いられていたものであり、多くのアプリケーションやプロトコルに採用されていたが、2017年2月には衝突攻撃(強衝突耐性の突破)の成功が現実に示されている。そのため、下記の通りセキュリティの懸念から利用が控えられつつある状況にある。
2005年、SHA-1に対する攻撃法が発見され、将来的な利用に十分な安全性を有していないことが示唆された[6]。NISTは、合衆国の政府組織に対して、2010年までにSHA-1からSHA-2へ移行するよう要請した[7]。SHA-2に対する有効な攻撃法はいまだ報告されていないが、その構造はSHA-1に類似したものである。2012年、公募を経て、KeccakがSHA-3として選定された[7]。2013年11月にはマイクロソフトが、2017年までにMicrosoft WindowsのTLS/SSLにおいてSHA-1を利用した証明書を受け入れないようにすることを表明した[8]。2014年9月にはGoogleも2017年までにGoogle ChromeにおいてSHA-1による証明書を受け入れないようにすることを表明した[9]。Mozillaでも同様に2017年までにSHA-1による証明書を受け入れないようにすることを検討している[10][11][12]。
日本においても、CRYPTRECが2003年の初版では推奨リストに掲載されていたSHA-1を2013年の改訂において互換性維持のための利用に限定した運用監視リストに移行し[13]、総務省および法務省では、政府認証基盤および電子認証登記所(商業登記認証局)においてSHA-1を用いた電子証明書の検証を2015年度まで(特別の事情がある場合は2019年度まで)に終了することとしている[14]。 これらを受けて、SHA-1を使っているウェブサイトはSHA-2への移行が予定されており、SHA-2に対応できないソフトや機器によるアクセスは不能になる[15]。特に2009年以前の携帯電話機は一部を除き内蔵ソフト更新が行われないため、ハードウェアの買い替えを余儀なくされる[16][17][18]。
NISTは2030年12月31日に仕様を廃止する予定で、それ以降は米国政府はSHA-1を使用している商品を購入しない予定[5]。
SHA-1 ハッシュ関数

A, B, C, D, E:32ビットの状態ワード
F:非線形関数

n:操作ごとに変化
Wt:ラウンドtにおける拡張メッセージワード
Kt:ラウンドtにおける定数

SHA-1は、マサチューセッツ工科大学のロナルド・リベストがMD4やMD5の設計で用いたものと同様の原理に基づいているが、より保守的な設計となっている。
オリジナルの仕様は、1993年にNISTによってFIPS 180 "Secure Hash Standard" として発表された。このバージョンは現在ではしばしば SHA-0 と呼ばれる。このバージョンは発表からしばらくしてNSAによって撤回され、1995年に改訂版がFIPS PUB 180-1として発表された。これがSHA-1と呼ばれるものであり、SHA-0とは圧縮関数におけるビット演算のローテートが1つ異なるのみである。NSAによれば、これによってSHA-0においてセキュリティを低下させていたフローが修正されたとしているが、NSAはそれ以上の説明や証拠の提示を行わなかった。その後も、SHA-0、SHA-1の双方についてセキュリティ脆弱性の報告がなされている。
用途
暗号
SHA-1は暗号に関する多くのアプリケーションやプロトコルに用いられている。例としては、TLS/SSL、OpenPGP、SSH、S/MIME、IPsecなどが挙げられる。これらではMD5もよく用いられる(SHA-1とMD5はともにMD4の後継である)。
SHA-1とSHA-2は、アメリカ合衆国において機密情報を扱う際に法律によって要求されるハッシュアルゴリズムの一つである。FIPS 180-1では、SHA-1を私的にあるいは商業で用いることも推奨している。SHA-1は合衆国政府での利用はほぼ終了しており、NISTでは「連邦組織は、電子署名、タイムスタンプ、衝突への耐性を必要とするアプリケーションでのSHA-1の利用を可及的速やかに中止すべきである。2010年以降はSHA-2を利用すべきである」としている[19]。
SHA制定の重要な動機はDigital Signature Standardであった。DSAの仕様には、SHA-1を利用する過程が含まれている。
SHAハッシュ関数はブロック暗号であるSHACALの基礎となっている。
データ完全性
SHA-1ハッシュはGit、Mercurial、Monotoneといった分散型バージョン管理システムにおいても、バージョンの管理やデータの破損、改竄の検出に用いられている。任天堂のWiiにおいては、起動時にSHA-1による署名を検証しているが、これを回避する手法も開発されている[20]。
攻撃と認証
ハッシュ長が L ビットであるハッシュ関数において、与えられた特定のハッシュに対応する元のメッセージを見つけることは、総当たり攻撃では 2L の試行で可能である。これは原像攻撃と呼ばれる。一方、同じハッシュを与える2つの異なるメッセージを見つけることは衝突攻撃と呼ばれ、およそ 1.2 * 2L / 2 の試行で可能である。後者の理由により、ハッシュ関数の強度はハッシュ長の半分の鍵長の共通鍵暗号と比較される。これより、SHA-1の強度は80ビットであると考えられてきた。
暗号研究者によって、SHA-0については衝突ペアが発見され、SHA-1についても当初想定されていた 280 の試行よりもずっと少ない試行で衝突を発生させうる手法が発見された。
そのブロック構造、繰り返し構造と、追加的な最終ステップの欠如により、SHAシリーズは伸長攻撃およびpartial-message collision attacksに対して脆弱である[21]。これらの攻撃法により、 カテゴリ:ハッシュ関数・メッセージ認証コード・認証付き暗号
|
|
---|---|

SHA-0
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/02/11 03:54 UTC 版)
「Secure Hash Algorithm」の記事における「SHA-0」の解説
詳細は「SHA-1#SHA-0」を参照 SHA-0はSHAシリーズの最初の規格である。発表から間もなくして欠点が発見された。ハッシュ値の長さは、160ビット。
※この「SHA-0」の解説は、「Secure Hash Algorithm」の解説の一部です。
「SHA-0」を含む「Secure Hash Algorithm」の記事については、「Secure Hash Algorithm」の概要を参照ください。
- SHA-0のページへのリンク