(Translated by https://www.hiragana.jp/)
BLAKE - Wikipedia コンテンツにスキップ

BLAKE

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』
BLAKE
一般いっぱん
設計せっけいしゃ Jean-Philippe Aumasson, Luca Henzen, Willi Meier, Raphael C.-W. Phan
後継こうけい BLAKE2
認証にんしょう SHA-3最終さいしゅう候補こうほ
詳細しょうさい
ダイジェストちょう 224, 256, 384 or 512 bits
ラウンドすう 14 or 16
速度そくど 8.4 cpb on Core 2 for BLAKE-256; 7.8 cpb for BLAKE-512

BLAKEは、Jean-Philippe Aumasson, Luca Henzen, Willi Meier, and Raphael C.-W. Phanによってアメリカ国立こくりつ標準ひょうじゅん技術ぎじゅつ研究所けんきゅうじょ (NIST)によるSHA-3公募こうぼ提出ていしゅつされた暗号あんごうがくてきハッシュ関数かんすうである。ダニエル・バーンスタインによって設計せっけいされたストリーム暗号あんごうであるChaChaをベースとしたものであり、ChaChaのラウンドのまえにラウンド定数ていすうとの排他はいたてき論理ろんりった入力にゅうりょくブロックの置換ちかんコピーがくわえられている。BLAKEはSHA-3公募こうぼにおいて5つの最終さいしゅう候補こうほのうちの1つにのこった。

SHA-2同様どうように、BLAKEには4つのバリエーションが存在そんざいする。32ビットのワードちょうち256ビットのハッシュを出力しゅつりょくするBLAKE-256およびそれをめ224ビットの出力しゅつりょくとしたBLAKE-224、64ビットのワードちょうち512ビットのハッシュを出力しゅつりょくするBLAKE-512およびそれをめ384ビットの出力しゅつりょくとしたBLAKE-384の4つである。

アルゴリズム

[編集へんしゅう]

ChaChaでは4×4アレイのワードを操作そうさし、BLAKEでは16のメッセージワードと8ワードのハッシュ連結れんけつすることで、ChaChaの出力しゅつりょくめてつぎのハッシュ計算けいさんもちいる。

中核ちゅうかくとなる変換へんかんでは入力にゅうりょくの16ワードと16の変数へんすうわせるが、ブロックあいだでは8ワード(256あるいは512ビット)しか保持ほじされない。

BLAKEでは、16の固定こていワード(πぱいのフラクタル先頭せんとうの512あるいは1024ビット)と、16要素ようそあいだでの置換ちかんテーブル10もちいる。

σしぐま[0] =  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
σしぐま[1] = 14 10  4  8  9 15 13  6  1 12  0  2 11  7  5  3
σしぐま[2] = 11  8 12  0  5  2 15 13 10 14  3  6  7  1  9  4
σしぐま[3] =  7  9  3  1 13 12 11 14  2  6  5 10  4  0 15  8
σしぐま[4] =  9  0  5  7  2  4 10 15 14  1 11 12  6  8  3 13
σしぐま[5] =  2 12  6 10  0 11  8  3  4 13  7  5 15 14  1  9
σしぐま[6] = 12  5  1 15 14 13  4 10  0  7  6  3  9  2  8 11
σしぐま[7] = 13 11  7 14 12  1  3  9  5  0 15  4  8  6  2 10
σしぐま[8] =  6 15 14  9 11  3  0  8 12  2 13  7  1  4 10  5
σしぐま[9] = 10  2  8  4  7  6  1  5 15 11  9 14  3 12 13  0

BLAKE-224, BLAKE-256では、固定こていワードnに下記かき定数ていすうもちいる。

n = 0x243f6a88  0x85a308d3  0x13198a2e  0x03707344 
    0xa4093822  0x299f31d0  0x082efa98  0xec4e6c89 
    0x452821e6  0x38d01377  0xbe5466cf  0x34e90c6c 
    0xc0ac29b7  0xc97c50dd  0x3f84d5b5  0xb5470917

BLAKE-384, BLAKE-512では、固定こていワードnに下記かき定数ていすうもちいる。

n = 0x243f6a8885a308d3  0x13198a2e03707344  0xa4093822299f31d0  0x082efa98ec4e6c89
    0x452821e638d01377  0xbe5466cf34e90c6c  0xc0ac29b7c97c50dd  0x3f84d5b5b5470917
    0x9216d5d98979fb1b  0xd1310ba698dfb5ac  0x2ffd72dbd01adfb7  0xb8e1afed6a267e96
    0xba7c9045f12c7f99  0x24a19947b3916cf7  0x0801f2e2858efc16  0x636920d871574e69

中核ちゅうかく操作そうさはChaChaの1/4ラウンドと同等どうとう操作そうさであり、4ワードのカラムあるいは対角線たいかくせんじょうにおいて2ワードのメッセージ m[] と2つの固定こていワード n[]結合けつごうする。1ラウンドごとに8かいこの操作そうさおこなわれる。

j ← σしぐま[r%10][2×i]            // Index computations
k ← σしぐま[r%10][2×i+1]
a ← a + b + (m[j] ⊕ n[k])   // Step 1 (with input)
d ← (d ⊕ a) >>> 16
c ← c + d                   // Step 2 (no input)
b ← (b ⊕ c) >>> 12
a ← a + b + (m[k] ⊕ n[j])   // Step 3 (with input)
d ← (d ⊕ a) >>> 8
c ← c + d                   // Step 4 (no input)
b ← (b ⊕ c) >>> 7

うえ計算けいさんは32ビットバージョンであるBLAKE-256, -224のものである。r はラウンドすう(0から13)、iかえ回数かいすう(0から7)である。

ChaChaの1/4ラウンドの関数かんすうとは以下いかちがいがある。

  • メッセージワードの追加ついかされた。
  • ローテートの方向ほうこうぎゃくとなった。

64ビットバージョン(ChaChaには存在そんざいしない)であるBLAKE-512, -384も32ビットバージョンであるBLAKE-256, -224と本質ほんしつてきにはおなじであるが、ローテートのりょうが32, 25, 16, 11に変更へんこうされ、ラウンドすうが14から16にやされている。

修正しゅうせい

[編集へんしゅう]

NISTによる公募こうぼ期間きかんちゅう発見はっけんされた問題もんだいへの対処たいしょとして応募おうぼしゃがアルゴリズムを修正しゅうせいすることがゆるされていた。BLAKEにくわえられた修正しゅうせい以下いかとおりである

  • ラウンドすうがBLAKE-256, -224では10から14に、BLAKE-512, -384では14から16にやされた。速度そくど維持いじしたままセキュリティマージンをおおきくするためである。

ハッシュれい

[編集へんしゅう]
BLAKE-512("")
 = A8CFBBD73726062DF0C6864DDA65DEFE58EF0CC52A5625090FA17601E1EECD1B628E94F396AE402A00ACC9EAB77B4D4C2E852AAAA25A636D80AF3FC7913EF5B8

BLAKE-512("The quick brown fox jumps over the lazy dog")
 = 1F7E26F63B6AD25A0896FD978FD050A1766391D2FD0471A77AFB975E5034B7AD2D9CCF8DFB47ABBBE656E1B82FBC634BA42CE186E8DC5E1CE09A885D41F43451
BLAKE2
一般いっぱん
設計せっけいしゃ Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn, Christian Winnerlein
派生はせいもと BLAKE
詳細しょうさい
ダイジェストちょう 可変長かへんちょう
ラウンドすう 10 or 12

2012ねん12月21にち、BLAKEの改良かいりょうばんとしてBLAKE2が発表はっぴょうされた。これはJean-Philippe Aumasson、Samuel Neves、Zooko Wilcox-O'Hearn、Christian Winnerleinにより設計せっけいされたものであり、実際じっさいやぶられた、あるいは理論りろんてきやぶられたハッシュ関数かんすうであるMD5SHA-1えを目指めざしたものである[1]。512ビットのハッシュを出力しゅつりょくする64ビットバージョンであるBLAKE2b、256ビットのハッシュを出力しゅつりょくする32ビットバージョンであるBLAKE2sの2つのバリエーションが存在そんざいする。BLAKE2bでは1から64バイト(512ビット)、BLAKE2sでは1から32バイト(256ビット)のあいだ任意にんいながさのハッシュを出力しゅつりょく可能かのうである。

マルチコアプロセッサでの並列へいれつ処理しょりによる高速こうそくはかった BLAKE2bp および BLAKE2spばれるバージョンも存在そんざいする。

BLAKE2では、BLAKEから以下いか修正しゅうせいがなされている。

  • BLAKEのラウンド関数かんすうにあった固定こていワードのメッセージワードへの追加ついか除去じょきょされた。
  • 2つのローテートりょう変更へんこうされた。
  • パディングが簡素かんそされた。
  • 初期しょきベクトルとの排他はいたてき論理ろんりったパラメータブロックが追加ついかされた。
  • ラウンドすうが14 (BLAKE-256)あるいは16 (BLAKE-512)から、10 (BLAKE2s)あるいは12 (BLAKE2b)に削減さくげんされた。

BLAKE2 のハッシュれい

[編集へんしゅう]
BLAKE2b-512("")
 = 786A02F742015903C6C6FD852552D272912F4740E15847618A86E217F71F5419D25E1031AFEE585313896444934EB04B903A685B1448B755D56F701AFE9BE2CE

BLAKE2b-512("The quick brown fox jumps over the lazy dog")
 = A8ADD4BDDDFD93E4877D2746E62817B116364A1FA7BC148D95090BC7333B3673F82401CF7AA2E4CB1ECD90296E3F14CB5413F8ED77BE73045B13914CDCD6A918

2021ねん7がつ25にち、BLAKE3が発表はっぴょうされた[2]

  • MD5、SHA-1、SHA-2、SHA-3、そしてBLAKE2よりも高速こうそくである。
  • MD5およびSHA-1よりも堅牢けんろうで、さらになが拡張かくちょう攻撃こうげきたいしてSHA-2よりも堅牢けんろうである。
  • マークル利用りようしているため、並列へいれつやストリーミングデータ・差分さぶん更新こうしんされるデータのハッシュ計算けいさん可能かのうである。
  • 通常つうじょうのハッシュ以外いがいにも、 疑似ぎじ乱数らんすう生成せいせい関数かんすう(PRF: PseudoRandom Function )、メッセージ認証にんしょうコード(MAC: Message Authentication Code)、かぎ導出どうしゅつ関数かんすう(KDF: Key Derivation Function)、可変長かへんちょう出力しゅつりょく関数かんすう (XOF: eXtendable-Output Function)を利用りよう可能かのうである。
  • 変種へんしゅのないいち種類しゅるいのアルゴリズムを提供ていきょうしており、x86-64のマイクロアーキテクチャにおいて高速こうそくである。

実装じっそうライブラリ

[編集へんしゅう]

BLAKEをサポートしているライブラリは以下いかとおり。

脚注きゃくちゅう

[編集へんしゅう]

外部がいぶリンク

[編集へんしゅう]