SHA-3 【Secure Hash Algorithm 3】 Keccak
概要
SHA-3(Secure Hash Algorithm 3)とは、任意の長さの原文から特徴的な固定長の値(ハッシュ値)を算出するハッシュ関数(要約関数)の標準規格の一つで、SHA-1およびSHA-2の後継。データの同一性の確認に用いられる。SHA-3はハッシュ関数の計算手順(アルゴリズム)を定義しており、どんな長さのデータからも常に同じ長さのハッシュ値を生成する。同じ原文からは必ず同じ値が得られる一方、少しでも原文が異なると規則性なく全く異なる値となる。ハッシュ値から原文を求めることはできず、同じハッシュ値になる別の原文の作成も困難なように設計されている。
データの伝送や複製を行なう際に、入力側と出力側でハッシュ値を求め一致すれば、途中で改竄や欠落などが起こっていないことを確認することができる。また、暗号や認証、デジタル署名などの要素技術として様々な場面で利用される。
SHA-3はSHA-2の後継規格を定めるべくNIST(米国標準技術局)が暗号学者らに公募したもので、応募された方式の中から「Keccak」(キャチャックあるいはケチャックと読む)が選ばれ、2015年に連邦情報処理標準「FIPS 202」として公式に発表された。
ハッシュ値の長さはSHA-2と同じ224ビット(SHA3-224)、256ビット(SHA3-256)、384ビット(SHA3-384)、512ビット(SHA3-512)が用意されているが、新たに出力値を可変長として生成時に任意の長さを指定できる「SHAKE128」「SHAKE256」という2つのモードが用意された。これらは算出過程は同じだがハッシュ値が長いほど安全性が高い。
SHA-1およびSHA-2は計算方式の基礎が共通していたが、Keccakはこれらとは全く異なる方式で計算を行っている。SHA-2で256~512ビットだった計算時の内部状態長は1600ビットで、SHA-2で2128-1ビットまでだったメッセージ長の上限はなくなり、計算時のラウンド数(同じ操作の繰り返し回数)は80回から24回に減るなど、いくつかの特徴が大きく異なっている。
2020年代初頭の状況ではSHA-1に対する現実的な攻撃手法が考案され、SHA-1の廃止とSHA-2への移行が急がれている。SHA-2に対する効率的な攻撃手法は未だ報告されておらず、SHA-3への移行を急ぐ必要は無いが、主要な暗号通信ソフトウェアや通信プロトコル規格などがSHA-3対応仕様の追加などを進めており、使用可能な環境が整いつつある。