13
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ハッシュ関数は暗号技術の根幹であり、ブロックチェーン、パスワード保存、デジタル署名、改ざん検知などあらゆる分野で使われている。
その中でも最も有名なのがSHA-256である。一方でSHA3-256という名前も見かけるようになったが、その違いを正確に説明できる人は意外と少ない。

本記事では、SHA3-256の正体と設計思想をSHA-256と比較しながら解説し、なぜSHA3が登場したのか、どのような場面で使い分けるべきかを整理する。

SHA-256とは何か

SHA-256はNISTが標準化したSHA-2ファミリーの一種で、256ビットの固定長ハッシュ値を生成する。
内部構造はMerkle-Damgård構造を基にした圧縮関数の反復によって構成されている。

特徴として以下が挙げられる。

高速に計算できる
実装が簡単
CPUに最適化されている
長年の実績と検証がある

一方で構造的な弱点も理論的に知られている。

長さ拡張攻撃が成立する
構造が単純なため設計的余地が少ない

これらは現時点で実用的な破壊は起きていないが、設計上の限界があることは事実である。

SHA3-256とは何か

SHA3-256はSHA-3ファミリーの一つで、Keccakと呼ばれる全く異なる設計のアルゴリズムを採用している。

最大の特徴はスポンジ構造と呼ばれる方式である。
入力を吸収フェーズで内部状態に取り込み、スクイーズフェーズで出力を取り出す。

これにより以下の性質を持つ。

長さ拡張攻撃が原理的に成立しない
可変長出力が可能
構造的に柔軟で拡張しやすい
内部状態が大きく衝突耐性が高い

SHA3は「SHA-2が破られたから」作られたのではなく、「別系統の安全な設計を用意するため」に作られたという点が重要である。

構造の比較

項目 SHA-256 SHA3-256
標準 SHA-2 SHA-3
内部構造 Merkle-Damgård スポンジ構造
長さ拡張攻撃 可能 不可能
内部状態サイズ 256ビット 1600ビット
設計哲学 伝統的 新構造
拡張性 低い 高い

セキュリティの観点

SHA-256は現在も安全であり、破られてはいない。
しかし構造的に古いこと、暗号研究が進んでいることを考えると、長期利用ではSHA3の方が理論的安全余地が大きい。

SHA3は将来の耐性を考慮した保険的存在であり、暗号基盤の多様性確保という意味も持つ。

性能の観点

一般的なCPUではSHA-256の方が高速である。
これは多くのCPUがSHA-256用の命令拡張を持つためである。

一方でハードウェア実装やFPGAではSHA3の方が効率的な場合もある。

どちらを使うべきか

高速性が重要ならSHA-256
理論安全性や将来耐性を重視するならSHA3-256
長さ拡張を避けたいならSHA3

用途によって選択するのが現実的である。

まとめ

SHA3-256はSHA-256の後継ではない。
別系統の設計による代替であり、安全性の多様化のために存在する。

どちらも現時点では安全であり、用途に応じた選択が重要である。

13
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?