Keccak

上級者

Keccak(「ケチャック」)は、Guido Bertoni、Joan Daemen、Michaël Peeters、Gilles Van Asscheによって設計された多目的暗号化関数です。Keccakは他の目的にも使用できるものの、SHA-1やSHA-2などの古いハッシュアルゴリズムと比べセキュリティレベルを向上させたハッシュ関数として、最もよく知られています。

SHAはSecure Hash Algorithmの略で、米国標準技術研究所(NIST)が公開した暗号ハッシュ関数のセットを指します。SHA-1、SHA-2ともに、米国家安全保障局(NSA)によって設計されたもので、構造は似ています。KeccakはSHA-2と同じ出力サイズ(ハッシュ長)を採用しておりその動作メカニズムは全く異なります。それでも、KeccakはSHAファミリーに属する関数であり、しばしばSHA-3と呼ばれています。

2004年、SHA-1の脆弱性に対する攻撃耐性の理論的確立が行われた後、2005年に公開されました。数年が経った2011年、NISTから新しい標準ハッシュ関数としてSHA-2が公開されました。しかし、SHA-1からSHA-2への移行は遅々として進まず、開発者やコンピュータ科学者の多くがSHA-2に移行したのは2017年初頭になってからとなります。その直後、2017年2月にGoogleがSHA-1のコリジョン(衝突)攻撃に成功したと発表し、以来SHA-1はもはや安全とはみなされず使用は推奨されなくなりました。
2007年頃、NISTが従来のSHA-1やSHA-2の潜在的な欠点を克服できる新しい暗号ハッシュ関数を求め、公開コンペティションと審査手続きが発表され、Keccak関数(SHA-3)の開発が始まることとなりました。

SHA-2に対する重大な攻撃はまだ見られていないものの、ハッシュ関数は時間の経過とともにクラックされることが予想され、新しい標準関数が開発されるまでには数年単位の時間がかかります。2004年と2005年にSHA-1に対する攻撃が成功したことを考慮し、NISTは新しい暗号ハッシュアルゴリズムを作成する必要性を認識しました。2012年、NISTはKeccakをコンペティションの最優秀アルゴリズムとして発表し、SHAファミリーの最新版として標準化されました(そのため、SHA-3と呼ばれます)。

KeccakがNISTに選ばれた理由の1つに、その構造が革新的で他のアルゴリズムよりも安全かつ効率的だったことが挙げられます。技術的に言えば、SHA-3アルゴリズムはいわゆるスポンジ関数(またはスポンジ構造)に依存しており、SHA-1やSHA-2で使用されているマークル構造とは異なります。

現時点では、SHA-2はまだ安全だと考えられており、広く普及しています。例えば、SHA-256はBitcoinやその他の暗号資産で使用され、マイニングの過程で重要な役割を果たしています。SHA-3の攻撃が成立するまでにはまだまだ時間がかかることが予想されるため、今後SHA-3の採用が増える可能性があります。とはいえ、暗号理論が進歩し、新たな脆弱性が発見されるにつれて、数々の暗号ハッシュアルゴリズムが今後も開発され続けることになります。