SHA(シャー、Secure Hash Algorithm)は、一群の関連した
ハッシュ関数であり、アメリカ国立標準技術研究所(
NIST)によってアメリカ政府標準の
ハッシュ関数 Secure Hash Standard (SHS) として採用されている。
アルゴリズムは
MD4を元にしており、
MD5よりも攻撃に対して強いと考えられている。
2007年現在、SHAは生成する
ビット長が異なる
SHA-1 (160
ビット)、SHA-224、SHA-256、SHA-384、SHA-512の5種類が存在している。このうちSHA-224以外は2002年8月のFIPS Publication 180-2の初版に含まれている。SHA-224はChange Notice 1として、2004年2月に同規格に追加された。
もっともよく使われる
関数は
SHA-1で
TLS、
SSL、
PGP、SSH、
S/MIME、IPSecなど、さまざまな
セキュリティのアプリケーションや
プロトコルに採用されている。
SHA-1は、以前から広範囲に使われている
ハッシュ関数である
MD5に代わるものであると考えられている。SHA
アルゴリズムは国家安全保障局(NSA)によって開発され、アメリカ政府の標準として発表された。
グループのメンバーで1993年にはじめに発表されたものは、公式にはSHAと呼ばれている。しかしその後のものと区別するためにしばしばSHA-0と呼ばれている。2年後、SHAに初めての後継となる
SHA-1が発表された。さらにSHA-224、SHA-256、SHA-384、SHA-512と4つの変形が、増加する出力の範囲とわずかなデザインの違いで発
行されている。それらはしばしばまとめてSHA-2といわれている。
SHA-0、
SHA-1ともに、対象とした攻撃(
ハッシュ値の強衝突耐性突破)が見つかっているが、SHA-2には攻撃された記事はまだない。「
MD5」の「ハッシュの衝突耐性について」の項も参照。
GNU/
Linux上ではmd5sumとほぼ同じインターフェイスを持つsha1sumという
コマンドがあり、
SHA-1メッセージダイジェストの生成と検証が可能である。SHA-2を求めるには、例えば、
gpg --print-md SHA256 <var>filename</var>
などとすることもできる。
現在、SHA-3となるべき
ハッシュ関数を公募中である。選定の結果にもよるが、SHA-3は
SHA-1やSHA-2とは大きく異なった構造となる可能性がある。