削除された内容 追加された内容
Claw of Slime (会話 | 投稿記録)
m編集の要約なし
伸長攻撃の説明が間違っていたので訂正
18行目:
}}
 
'''SHA-1'''は、[[アメリカ国家安全保障局]] (NSA) によって設計され、[[アメリカ国立標準技術研究所]] (NIST) によって[[連邦情報処理標準|FIPS]] PUB 180-4として標準化された[[暗号学的ハッシュ関数]]である。
 
SHA-1は、160ビット(20バイト)のハッシュ値を生成する。そのハッシュは、[[十六進法]]40桁で表現されることが多い。
69行目:
暗号研究者によって、SHA-0については衝突ペアが発見され、SHA-1についても当初想定されていた 2<sup>80</sup> の試行よりもずっと少ない試行で衝突を発生させうるアルゴリズムが発見された。
 
そのブロック構造、繰り返し構造と、追加的な最終ステップの欠如により、SHAシリーズは[[伸長攻撃]]およびpartial-message collision attacksに対して脆弱である<ref>[http://www.schneier.com/book-ce.html Niels Ferguson, Bruce Schneier, and Tadayoshi Kohno, Cryptography Engineering], John Wiley & Sons, 2010. ISBN 978-0-470-47424-2</ref>。これらの攻撃では法により攻撃者はハッシュ <math>SHA(message || key)</math> orまたは <math>SHA(key || message )</math> &ndash のような鍵伸長するつけたハッシュだけでメッセージが署名されている場合攻撃者は、そのメッセージを伸長しハッシュを再計算する(鍵を知ることなしにできる)ことでメッセージを改竄することが可能る。この攻撃に対するもっとも単純な対処法は、ハッシュ計算を2回行うことである。<math>SHA_d(message) = SHA(SHA(0^b || message))</math>(ゼロのみからなるブロック <math>0^b</math> の長さはハッシュ関数のブロック長と等しい)。
 
=== 攻撃 ===
114行目:
 
=== 公式認定 ===
FIPSに認定されたすべての関数の実装は、NISTとCommunications Security Establishment Canada (CSEC) によるCryptographic Module Validation Programの認定を申請することが可能である。2013年現在、SHA-1については2000以上の実装が認定されている<ref>[http://csrc.nist.gov/groups/STM/cavp/documents/shs/shaval.htm SHS Validation List]</ref>。
 
== ハッシュ値の例 ==
208行目:
hh = (h0 '''leftshift''' 128) '''or''' (h1 '''leftshift''' 96) '''or''' (h2 '''leftshift''' 64) '''or''' (h3 '''leftshift''' 32) '''or''' h4
 
hh はメッセージダイジェストであり、十六進法 (base 16) あるいは[[Base64]]エンコードで表現される。
 
定数は "nothing up my sleeve number" として選択される。4つのラウンド定数 <code>k</code> はそれぞれ 2、3、5、10の平方根の 2<sup>30</sup> 倍の値である。状態値のうち <code>h0</code> から <code>h3</code> まではMD5と同じであり、<code>h4</code> は類似したものである。