SHA-3

提供: セキュリティ
移動: 案内検索
スポンサーリンク

SHA-3 とは、暗号学的ハッシュ関数 Keccak を元にしています。SHA-2の次世代なハッシュ関数として公募されました。

読み方

SHA-3
しゃ すりー
Keccak
けちゃっく

概要

SHA-3は、SHA-2(SHA-224,SHA-256, SHA-384, SHA-512)の次世代のアルゴリズムとして公募されました。

Keccak は、スポンジ構造に基づくハッシュ関数(スポンジ関数)です。 SHA-3では、Keccak-f[1600]の撹拌関数を使用します。

SHA-3は、64ビットのワード長を用います。

スポンジ関数

古い設計のハッシュ関数は、以下の要素で構成されています。

  • 入力圧縮関数
  • 内部状態バッファ
  • 撹拌関数(かくはんかんすう)

入力圧縮関数の役割は以下の通りです。

  • 撹拌関数の呼び出し回数を減らす
  • 前処理を行う。大きな入力ブロックを内部状態サイズ以下に不可逆にまとめる。

スポンジ関数では、「大きな内部状態 = スポンジ」を用いることで、複雑な圧縮関数を不要にします。

使い方

Python での使用例

FreeBSDにpkgコマンドでインストールする場合は、以下の通りです。

sudo pkg install py27-pysha3

pip コマンドでインストールする場合は、以下の通りです。

sudo pip install pysha3
  • SHA3-n と Keccak-n では、 n = 224, 256, 384, 512 が出力ハッシュ長です。
  • SHA-3は、パディングの前に2ビット列01がメッセージに追加されます。
  • 出力は、16進数法です。
$ python
Python 2.7.8 (default, Oct  2 2014, 23:44:28)
[GCC 4.2.1 Compatible FreeBSD Clang 3.3 (tags/RELEASE_33/final 183502)] on freebsd10
Type "help", "copyright", "credits" or "license" for more information.
>>> import hashlib
>>> import sha3
>>> hashlib.sha3_256('Hello, sha3').hexdigest()
'5be6f964fa568b10d11a96ac71db61147f9feff53660d5a4bdc25ccd9236f74b'
>>> hashlib.sha3_384('Hello, sha3').hexdigest()
'0f83cd7c6621c0c93e93e2297c6ecb32313456558c01b4610e324c8b21fd4979
235eda042e95d31b9a4da15aab137eb3'
>>> hashlib.sha3_512('Hello, sha3').hexdigest()
'7ffe017ccf8c75d4255ae3e1513f6c718edd51c0dcaaf908a1c3799b433801b9
bd0a110cc6bb58062e8f47428d3f9133fad8c15b30c51d016d1832664db2930d'

関連項目




スポンサーリンク