SipHash(しっぱしゅ)
最終更新:2026/4/28
SipHashは、擬似乱数関数であり、ハッシュテーブルにおけるDoS攻撃を防ぐことを目的として設計された。
ポイント
SipHashは、鍵付きハッシュ関数の一種であり、比較的単純な構造で高いセキュリティを提供する。主にハッシュテーブルのハッシュ関数として利用される。
SipHashとは
SipHashは、2012年にJean-Philippe Aumassonによって提案された鍵付きハッシュ関数です。ハッシュテーブルの実装において、悪意のある入力によってハッシュ衝突が多発し、パフォーマンスが著しく低下するDoS攻撃(Denial of Service attack)を防ぐことを主な目的として設計されました。
SipHashの特長
- DoS耐性: 悪意のある入力に対する耐性が高く、ハッシュテーブルのパフォーマンスを維持しやすい。
- 高速性: 比較的単純な構造であり、高速な計算が可能です。
- 鍵付きハッシュ関数: 秘密鍵を使用することで、ハッシュ値の予測を困難にし、セキュリティを高めます。
- パラメータ: SipHashには、ハッシュ値の長さと鍵の長さを調整するためのパラメータが存在します。一般的な設定としては、SipHash-2-4(2ビットのハッシュ値、4バイトの鍵)やSipHash-1-3(1ビットのハッシュ値、3バイトの鍵)などが用いられます。
SipHashの利用例
- ハッシュテーブル: ハッシュテーブルのハッシュ関数として、DoS攻撃対策として利用されます。
- データ構造: データの整合性チェックや、キャッシュのキー生成などに利用されます。
- セキュリティ: 比較的単純な構造ながら、一定のセキュリティレベルを提供します。
SipHashの安全性
SipHashは、設計当初からハッシュテーブルのDoS耐性を重視しており、その目的においては十分に機能します。しかし、暗号学的ハッシュ関数としてのセキュリティは、SHA-256やBLAKE2bなどのより高度な関数に劣ります。そのため、セキュリティが重要なアプリケーションにおいては、より強固なハッシュ関数を選択することが推奨されます。