Badger は ユニバーサルハッシュ のアイデアに基づいた メッセージ認証コード (MAC)であり、 Boesgaard、Scavenius、Pedersen、Christensen、Zenner によって 開発されました [ いつ? ] 。 [1] これは、ENH (下記参照) を適用した後、ϵ ほぼ強くユニバーサル (ASU) ハッシュ関数族を使用して ∆-ユニバーサルハッシュ族 MMH を強化することによって構築されます。ここで、ϵ の値は です 。 [2] Badger は ユニバーサルハッシュ 関数アプローチに基づく MAC 関数であるため、Badger のセキュリティに必要な条件は 、UMAC などの他のユニバーサルハッシュ関数の条件と同じです 。
1
/
(
2
32
−
5
)
{\displaystyle 1/(2^{32}-5)}
導入
Badger MAC は、最大 ビットの長さのメッセージを処理し、長さ ビット の 認証タグを返します。ここで、 です。 セキュリティの ニーズに応じて 、ユーザーは の値、つまり Badger の並列 ハッシュツリー の数を選択できます。 u にさらに大きな値を選択することもできますが、それらの値は MAC のセキュリティにそれ以上影響を与えません。 アルゴリズムは 128 ビットのキーを使用し、このキーで処理されるメッセージの長さは に制限されています 。 [3]
2
64
−
1
{\displaystyle 2^{64}-1}
あなた
⋅
32
{\displaystyle u\cdot 32}
1
≤
あなた
≤
5
{\displaystyle 1\leq u\leq 5}
あなた
{\displaystyle u}
2
64
{\displaystyle 2^{64}}
特定のキーで Badgerアルゴリズムを 実行するには、キー設定をキーごとに 1 回だけ実行する必要があります 。これは、結果として得られる MAC の内部状態を保存して、後で処理される他のメッセージで使用できるためです。
エンハイ
ハッシュ ファミリを組み合わせることで、新しいハッシュ ファミリを作成できます。ϵ-AU、ϵ-A∆U、および ϵ-ASU ファミリの場合、後者は前者に含まれます。たとえば、A∆U ファミリは AU ファミリでもあり、ASU は A∆U ファミリでもあります。一方、パフォーマンスの向上が達成できる限り、より強力なファミリをより弱いファミリに縮小できます。∆-ユニバーサル ハッシュ関数を ユニバーサル ハッシュ 関数に縮小する方法については、以下で説明します。
定理2 [1]
集合 A から集合 B への ϵ-AΔU ハッシュ族を とします 。メッセージ を考えます。すると 関数から成る 族 H は ϵ-AU です。
H
△
{\displaystyle H^{\triangle }}
(
メートル
、
メートル
b
)
∈
あ
×
B
{\displaystyle (m,m_{b})\in A\times B}
h
(
メートル
、
メートル
b
)
=
H
△
(
メートル
)
+
メートル
b
{\displaystyle h(m,m_{b})=H^{\triangle }(m)+m_{b}}
ならば 、 は ϵ-A∆U 族な ので、 が最大 ϵ である 確率 は である
。 だが ならば 、の 確率 は自明に 0 である。定理 2 の証明は [1]で説明されている。
メートル
≠
メートル
′
{\displaystyle m\neq m'}
h
(
メートル
、
メートル
b
)
=
h
(
メートル
′
、
メートル
b
′
)
{\displaystyle h(m,m_{b})=h(m',m'_{b})}
H
△
{\displaystyle H^{\triangle }}
メートル
=
メートル
′
{\displaystyle m=m'}
メートル
b
≠
メートル
b
′
{\displaystyle m_{b}\neq m_{b}'}
ENH ファミリは、 ユニバーサル ハッシュファミリ NH ( UMAC でも使用される ) に基づいて構築されます。
いいえ
H
け
(
ま
)
=
∑
私
=
1
ℓ
2
(
け
(
2
私
−
1
)
+
わ
メートル
(
2
私
−
1
)
)
×
(
け
2
私
+
わ
メートル
2
私
)
モッド
2
2
わ
{\displaystyle NH_{K}(M)=\sum _{i=1}^{\frac {\ell }{2}}(k_{(2i-1)}+_{w}m_{(2i-1)})\times (k_{2i}+_{w}m_{2i})\mod 2^{2w}}
ここで、 は ' を法とする加算 ' を意味し、 です 。これは -A∆U ハッシュ ファミリです。
+
わ
{\displaystyle +_{w}}
2
わ
{\displaystyle 2^{w}}
メートル
私
、
け
私
∈
{
0
、
…
、
2
わ
−
1
}
{\displaystyle m_{i},k_{i}\in {\big \{}0,\ldots ,2^{w}-1{\big \}}}
2
−
わ
{\displaystyle 2^{-w}}
補題1 [1]
NH の次のバージョンは -A∆U です。
2
−
わ
{\displaystyle 2^{-w}}
いいえ
H
け
(
ま
)
=
(
け
1
+
わ
メートル
1
)
×
(
け
2
+
わ
メートル
2
)
モッド
2
2
わ
{\displaystyle NH_{K}(M)=(k_{1}+_{w}m_{1})\times (k_{2}+_{w}m_{2})\mod 2^{2w}}
w=32 を選択し、定理 1 を適用すると、アナグマ MAC の基本的な構成要素となる -AU 関数ファミリ ENH が
得られます。
2
−
32
{\displaystyle 2^{-32}}
え
いいえ
H
け
1
、
け
2
(
メートル
1
、
メートル
2
、
メートル
3
、
メートル
4
)
=
(
メートル
1
+
32
け
1
)
(
メートル
2
+
32
け
2
)
+
64
メートル
3
+
64
2
32
メートル
4
{\displaystyle ENH_{k_{1},k_{2}}(m_{1},m_{2},m_{3},m_{4})=(m_{1}+_{32}k_{1})(m_{2}+_{32}k_{2})+_{64}m_{3}+_{64}2^{32}m_{4}}
ここで、すべての引数は 32 ビット長で、出力は 64 ビットになります。
工事
Badgerは強力な普遍性ハッシュファミリーを使用して構築されており、次のように記述できます。
H
=
H
∗
×
ふ
、
{\displaystyle {\mathcal {H}}=H^{*}\times F,}
[1]
ここで、 -AU ユニバーサル関数ファミリ H* は、任意のサイズのメッセージを固定サイズにハッシュするために使用され、 -ASU 関数ファミリ F は 、全体の構築の強いユニバーサル性を保証するために使用されます。NH と ENH は、 H* の 構築に使用されます 。関数ファミリ H* の最大入力サイズ は で 、 出力サイズは 128 ビットで、メッセージとハッシュごとに 64 ビットに分割されます。H * 関数の衝突確率はから の範囲です 。強いユニバーサル関数ファミリ F を構築するには、∆ ユニバーサル ハッシュ ファミリ MMH* に別のキーを追加して、強いユニバーサル ハッシュ ファミリに変換します。
ϵ
H
∗
{\displaystyle \epsilon _{H^{*}}}
ϵ
ふ
{\displaystyle \epsilon_{F}}
2
64
−
1
{\displaystyle 2^{64}-1}
2
−
32
{\displaystyle 2^{-32}}
2
−
26.14
{\displaystyle 2^{-26.14}}
バジャーの2歩
すべてのメッセージに対して、処理フェーズと最終処理フェーズという2つのステップを実行する必要があります。 [3]
処理段階
このフェーズでは、データは 64 ビットの文字列にハッシュされます。この処理フェーズでは、コア関数 h : が使用され、次のように 128 ビットの文字列が 64 ビットの文字列にハッシュされます 。
{
0
、
1
}
64
×
{
0
、
1
}
128
→
{
0
、
1
}
64
{\displaystyle \left\{0,1\right\}^{64}\times \left\{0,1\right\}^{128}\to \left\{0,1\right\}^{64}}
メートル
2
∠
メートル
1
{\displaystyle m_{2}\parallel m_{1}}
h
(
k
,
m
2
,
m
1
)
{\displaystyle h(k,m_{2},m_{1})}
h
(
k
,
m
2
,
m
1
)
=
(
L
(
m
1
)
+
32
L
(
k
)
)
⋅
(
U
(
m
1
)
+
32
U
(
k
)
)
+
64
m
2
{\displaystyle h(k,m_{2},m_{1})=(L(m_{1})+_{32}L(k))\cdot (U(m_{1})+_{32}U(k))+_{64}m_{2}\,}
任意のn について 、 は を法とする加算を意味します 。 ビット文字列 x が与えられた場合、 は 最下位 n ビットを意味し、 は 最上位 n ビットを意味します。
+
n
{\displaystyle +_{n}}
2
n
{\displaystyle 2^{n}}
2
n
{\displaystyle 2n}
L
(
x
)
{\displaystyle L(x)}
U
(
x
)
{\displaystyle U(x)}
この関数を使用してメッセージを処理できます。 level_key[j][i]で示します 。
k
j
i
{\displaystyle k_{j}^{i}}
処理フェーズの疑似コードは次のとおりです。
L = | M |
L = 0
の場合
M
1
=
⋯
=
M
u
=
0
{\displaystyle M^{1}=\cdots =M^{u}=0}
最終決定へ進む
r = L mod 64
r ≠ 0 の場合 :
i = 1 から uの 場合 :
j = 1 から v ′ の場合:
M
=
0
64
−
r
∥
M
{\displaystyle M=0^{64-r}\parallel M}
M
i
=
M
{\displaystyle M^{i}=M}
v
′
=
max
{
1
,
⌈
log
2
L
⌉
−
6
}
{\displaystyle v'=\max\{1,\lceil \log _{2}L\rceil -6\}}
を
M
i
{\displaystyle M^{i}}
64 ビットのブロックに
分割します。
M
i
=
m
t
i
∥
⋯
∥
m
1
i
{\displaystyle M^{i}=m_{t}^{i}\parallel \cdots \parallel m_{1}^{i}}
t が偶数の 場合 :
そうでない場合
M
i
=
h
(
k
j
i
,
m
t
i
,
m
t
−
1
i
)
∥
⋯
∥
h
(
k
j
i
,
m
2
i
,
m
1
i
)
{\displaystyle M^{i}=h(k_{j}^{i},m_{t}^{i},m_{t-1}^{i})\parallel \cdots \parallel h(k_{j}^{i},m_{2}^{i},m_{1}^{i})}
M
i
=
m
t
i
∥
h
(
k
j
i
,
m
t
−
1
i
,
m
t
−
2
i
)
∥
⋯
∥
h
(
k
j
i
,
m
2
i
,
m
1
i
)
{\displaystyle M^{i}=m_{t}^{i}\parallel h(k_{j}^{i},m_{t-1}^{i},m_{t-2}^{i})\parallel \cdots \parallel h(k_{j}^{i},m_{2}^{i},m_{1}^{i})}
最終段階
このフェーズでは、処理フェーズから得られた 64 文字列が目的の MAC タグに変換されます。このファイナライズ フェーズでは、 Rabbit ストリーム暗号 final_key[j][i]が使用され、ファイナライズ キーを としてキー セットアップと IV セットアップの両方が使用されます 。
k
j
i
{\displaystyle k_{j}^{i}}
ファイナライズフェーズの疑似コード
ラビットキーセットアップ(K)
RabbitIVセットアップ(N)
i = 1 から u まで :
27 ビットのブロックに分割し、 S =
S ⨁ RabbitNextbit ( u ∙ 32)
S
を返す
Q
i
=
0
7
∥
L
∥
M
i
{\displaystyle Q^{i}=0^{7}\parallel L\parallel M^{i}}
Q
i
{\displaystyle Q^{i}}
Q
i
=
q
5
i
∥
⋯
∥
q
1
i
{\displaystyle Q^{i}=q_{5}^{i}\parallel \cdots \parallel q_{1}^{i}}
S
i
=
(
∑
j
=
1
5
(
q
j
i
K
j
i
)
)
+
K
6
i
mod
p
{\displaystyle S^{i}=(\sum _{j=1}^{5}(q_{j}^{i}K_{j}^{i}))+K_{6}^{i}{\bmod {p}}}
S
=
S
u
∥
⋯
∥
S
1
{\displaystyle S=S^{u}\parallel \cdots \parallel S^{1}}
表記
上記の疑似コードでは、 k は Rabbit Key Setup(K) のキーを表し、これは 128 ビットのキー k で Rabbit を初期化します。 M は ハッシュされるメッセージを表し、 | M | はメッセージの長さをビット単位で表します。 は
q
i
{\displaystyle q_{i}}
i ブロック に分割された メッセージ Mを表します。 ビット文字列 x の場合、 L ( x ) と U ( x ) はそれぞれ最下位 n ビットと最上位 n ビットを表します。
2
n
{\displaystyle 2n}
Boesgard、Christensen、Zennerは、1.0GHz Pentium III と1.7GHz Pentium 4 プロセッサで測定されたBadgerのパフォーマンスを報告しています。 [1] 速度最適化バージョンは、Cでインライン化されたアセンブリ言語でプログラムされ、Intel C++ 7.1コンパイラを使用してコンパイルされました。
次の表は、さまざまな制限されたメッセージ長に対する Badger のプロパティを示しています。「Memory req.」は、キー マテリアルと Rabbit ストリーム暗号 の内部状態を含む内部状態を格納するために必要なメモリの量を示します。「Setup」はキーのセットアップを示し、「Fin.」は IV セットアップによる終了を示します。
MMH (マルチリニア モジュラー ハッシング)
MMH という名前は、Multilinear-Modular-Hashing の略です。 マルチメディア での応用としては、オンライン マルチメディア タイトルの整合性 の 検証などが挙げられます。MMH のパフォーマンスは、最新のマイクロプロセッサにおける整数 スカラー積 のサポートの向上に基づいています。
MMH は、最も基本的な演算として単精度スカラー積を使用します。これは、 メッセージとキーの(修正された) 内積 ( 素数 を 法 とする) で構成されます。MMH の構築は、 ある素数整数 の 有限体 で機能します。
p
{\displaystyle p}
F
p
{\displaystyle F_{p}}
p
{\displaystyle p}
MMH*
MMH* は、ある正の整数 kに対する 多重線型 関数 からなる ハッシュ関数 の族の構築を伴います。 から までの関数の族 MMH* は 次のように定義されます。
F
p
k
{\displaystyle F_{p}^{k}}
F
p
k
{\displaystyle F_{p}^{k}}
F
p
{\displaystyle F_{p}}
M
M
H
∗
=
{
g
x
:
F
p
k
→
F
p
|
x
∈
F
p
k
}
{\displaystyle \mathrm {MMH} ^{*}=\{g_{x}:F_{p}^{k}\rightarrow F_{p}|x\in F_{p}^{k}\}}
ここで、 x、m は ベクトルであり、関数は 次のように定義されます。
g
x
{\displaystyle g_{x}}
g
x
(
m
)
=
m
x
mod
p
=
∑
i
=
1
n
m
i
x
i
mod
p
{\displaystyle g_{x}(m)=mx{\bmod {p}}=\sum _{i=1}^{n}m_{i}\,x_{i}{\bmod {p}}}
MAC の場合、 m はメッセージ、 x
は キーです 。
m
=
(
m
1
,
…
,
m
k
)
{\displaystyle m=(m_{1},\ldots ,m_{k})}
x
=
(
x
1
,
…
,
x
k
)
,
x
i
,
m
i
∈
F
p
{\displaystyle x=(x_{1},\ldots ,x_{k}),x_{i},m_{i}\in \!F_{p}}
MMH* は MAC のセキュリティ要件を満たし、Ana と Bob が認証された方法で通信できるようにします。彼らは秘密鍵 x を 持っています。Charles が Ana と Bob の会話を聞いて、そのメッセージを Bob への自分のメッセージに変更し、Ana からのメッセージとして渡したいとします。そのため、Charles のメッセージ m' と Ana のメッセージ m は 少なくとも 1 ビット異なります (例 )。
m
1
≠
m
1
′
{\displaystyle m_{1}\neq m'_{1}}
チャールズは関数が形式であることを知っており 、アナのメッセージ m を知っているが、キー x は知らないと仮定すると 、チャールズがメッセージを変更したり、独自のメッセージを送信したりできる確率は、次の定理によって説明できます。
g
x
(
m
)
{\displaystyle g_{x}(m)}
定理1 [4] :MMH*族は∆普遍的である。
証拠:
を と取り 、 を 2 つの異なるメッセージとします。 一般性を失うことなく と 仮定します 。すると、 の任意の選択に対して 、
a
∈
F
p
{\displaystyle a\in F_{p}}
m
,
m
′
{\displaystyle m,m'}
m
1
≠
m
1
′
{\displaystyle m_{1}\neq m'_{1}}
x
2
,
x
3
,
…
,
x
s
{\displaystyle x_{2},x_{3},\ldots ,x_{s}}
Pr
x
1
[
g
x
(
m
)
−
g
x
(
m
′
)
≡
a
mod
p
]
=
Pr
x
1
[
(
m
1
x
1
+
m
2
x
2
+
⋯
+
m
k
x
k
)
−
(
m
1
′
x
1
+
m
2
′
x
2
+
⋯
+
m
k
′
x
k
)
≡
a
mod
p
]
=
Pr
x
1
[
(
m
1
−
m
1
′
)
x
1
+
(
m
2
−
m
2
′
)
x
2
+
⋯
+
(
m
k
−
m
k
′
)
x
k
]
≡
a
mod
p
]
=
Pr
x
1
[
(
m
1
−
m
1
′
)
x
1
+
∑
k
=
2
s
(
m
k
−
m
k
′
)
x
k
≡
a
mod
p
]
=
Pr
x
1
[
(
m
1
−
m
1
′
)
x
1
≡
a
−
∑
k
=
2
s
(
m
k
−
m
k
′
)
x
k
mod
p
]
=
1
p
{\displaystyle {\begin{aligned}{\Pr }_{x_{1}}[g_{x}(m)-g_{x}(m')\equiv a\mod p]&={\Pr }_{x_{1}}[(m_{1}x_{1}+m_{2}x_{2}+\cdots +m_{k}x_{k})-(m'_{1}x_{1}+m'_{2}x_{2}+\cdots +m'_{k}x_{k})\equiv a\mod p]\\&={\Pr }_{x_{1}}[(m_{1}-m'_{1})x_{1}+(m_{2}-m'_{2})x_{2}+\cdots +(m_{k}-m'_{k})x_{k}]\equiv a\mod p]\\&={\Pr }_{x_{1}}[(m_{1}-m'_{1})x_{1}+\textstyle \sum _{k=2}^{s}(m_{k}-m'_{k})x_{k}\equiv a\mod p]\\&={\Pr }_{x_{1}}[(m_{1}-m'_{1})x_{1}\equiv a-\textstyle \sum _{k=2}^{s}(m_{k}-m'_{k})x_{k}\mod p]\\&={\frac {1}{p}}\end{aligned}}}
上記の定理を説明するために、 素数を として体を表す 。 の元を とすると 、 の 確率
は
F
p
{\displaystyle F_{p}}
p
{\displaystyle p}
F
p
=
{
0
,
1
,
…
,
p
−
1
}
⏟
p
{\displaystyle F_{p}=\underbrace {{\big \{}0,1,\ldots ,p-1{\big \}}} _{p}}
F
p
{\displaystyle F_{p}}
0
∈
F
p
{\displaystyle 0\in F_{p}}
x
1
=
0
{\displaystyle x_{1}=0}
Pr
x
1
∈
F
p
(
x
1
=
0
)
=
1
p
{\displaystyle {\Pr }_{x_{1}\in \!{F_{p}}}(x_{1}=0)={\frac {1}{p}}}
実際に計算する必要があるのは
Pr
(
x
1
,
…
,
x
k
)
∈
F
p
k
(
g
x
(
m
)
≡
g
x
(
m
′
)
mod
p
)
{\displaystyle {\Pr }_{(x_{1},\ldots ,x_{k})\in \!{F_{p}^{k}}}(g_{x}(m)\equiv g_{x}(m')\mod p)}
しかし、
Pr
(
x
1
,
…
,
x
k
)
∈
F
p
k
(
g
x
(
m
)
≡
g
x
(
m
′
)
mod
p
)
=
∑
(
x
2
,
…
,
x
k
)
∈
F
p
k
−
1
Pr
(
x
2
′
⋯
,
x
k
′
)
∈
F
p
k
−
1
(
x
2
=
x
2
′
,
…
,
x
k
=
x
k
′
)
⋅
Pr
x
1
∈
F
p
(
g
x
(
m
)
≡
g
x
(
m
′
)
mod
p
)
=
∑
(
x
2
,
…
,
x
k
)
∈
F
p
k
−
1
1
p
k
−
1
⋅
1
p
=
p
k
−
1
⋅
1
p
k
−
1
⋅
1
p
=
1
p
{\displaystyle {\begin{aligned}{\Pr }_{(x_{1},\ldots ,x_{k})\in \!{F_{p}^{k}}}(g_{x}(m)\equiv g_{x}(m')\mod p)&=\sum _{(x_{2},\ldots ,x_{k})\in \!{F_{p}^{k-1}}}{\Pr }_{(x_{2}^{'}\cdots ,x_{k}^{'})\in \!{F_{p}^{k-1}}}({x_{2}=x_{2}^{'}},\ldots ,{x_{k}=x_{k}^{'}})\cdot {\Pr }_{x_{1}\in \!F_{p}}(g_{x}(m)\equiv g_{x}(m')\mod p)\\&=\sum _{(x_{2},\ldots ,x_{k})\in \!{F_{p}^{k-1}}}{\frac {1}{p^{k-1}}}\cdot {\frac {1}{p}}\\&=p^{k-1}\cdot {\frac {1}{p^{k-1}}}\cdot {\frac {1}{p}}\\&={\frac {1}{p}}\end{aligned}}}
上記の証明から、は 1 ラウンドの攻撃者の 衝突 確率 であるため、平均して p 回の 検証クエリで 1 つのメッセージが受け入れられることになります。衝突確率を下げるには、大きな p を選択するか、 n 個の独立したキーを使用して n 個の MAC を 連結して 衝突確率] が になるようにする必要があります。この場合、キーの数は n 倍に増加し 、出力も n 倍に増加します。
1
p
{\displaystyle {\frac {1}{p}}}
1
p
n
{\displaystyle {\frac {1}{p^{n}}}}
MMH*32
HaleviとKrawczyk [4] は、と呼ばれる変種を構築します 。この構築は、32ビット 整数 と 素数 整数で機能します 。実際には、素数 pは 、 を満たす任意の素数に選択できます 。このアイデアは、素数 またはを使用するというCarterとWegmanの提案から採用されました 。
M
M
H
32
∗
{\displaystyle \mathrm {MMH} _{32}^{*}}
p
=
2
32
+
15
{\displaystyle p=2^{32}+15}
2
32
<
p
<
2
32
+
2
16
{\displaystyle 2^{32}<p<2^{32}+2^{16}}
2
16
+
1
{\displaystyle 2^{16}+1}
2
31
−
1
{\displaystyle 2^{31}-1}
M
M
H
32
∗
{\displaystyle \mathrm {MMH} _{32}^{*}}
は次のように定義されます。
M
M
H
32
∗
=
{
g
x
(
{
0
,
1
}
32
)
k
}
→
F
p
,
{\displaystyle \mathrm {MMH} _{32}^{*}=\left\{g_{x}(\left\{0,1\right\}^{32})^{k}\right\}\to F_{p},}
ここで、は (つまり、バイナリ表現)
を意味します。
{
0
,
1
}
32
{\displaystyle \left\{0,1\right\}^{32}}
{
0
,
1
,
…
,
2
32
−
1
}
{\displaystyle \left\{0,1,\ldots ,2^{32}-1\right\}}
関数は 以下のように定義されます。
g
x
{\displaystyle g_{x}}
g
x
(
m
)
=
d
e
f
m
⋅
x
mod
(
2
32
+
15
)
=
∑
i
=
1
k
m
i
⋅
x
i
mod
(
2
32
+
15
)
{\displaystyle {\begin{aligned}g_{x}(m)&\ {\overset {\underset {\mathrm {def} }{}}{=}}\ m\cdot x{\bmod {(}}2^{32}+15)\\&=\textstyle \sum _{i=1}^{k}m_{i}\cdot x_{i}{\bmod {(}}2^{32}+15)\end{aligned}}}
どこ
x
=
(
x
1
,
…
,
x
k
)
,
m
=
(
m
,
…
,
m
k
)
{\displaystyle x=(x_{1},\ldots ,x_{k}),\ m=(m,\ldots ,m_{k})}
定理1により、 衝突 確率は 約 であり 、 の族は ϵ -ほぼ ∆ として定義でき、 で普遍的です 。
ϵ
=
2
−
32
{\displaystyle \epsilon =2^{-32}}
M
M
H
32
∗
{\displaystyle \mathrm {MMH} _{32}^{*}}
ϵ
=
2
−
32
{\displaystyle \epsilon =2^{-32}}
の価値 け
メッセージとキー ベクトルの長さを表す k の値には、 いくつかの効果があります。
k を 超えるコストのかかるモジュラー削減は 乗算と加算の演算であるため、 k が 増加すると速度が低下するはずです。
キー x は k 個 の32 ビット整数 で構成されているため、 k を増やすとキーが長くなります。
システムを破壊する確率は k であり 、 k を 増やすと システムを破壊しにくくなります。
1
/
p
{\displaystyle 1/p}
p
≈
2
k
{\displaystyle p\approx 2^{k}}
以下は、1997年にHaleviとKrawczykによって設計されたMMH [4] のさまざまな実装のタイミング結果です 。
AIX が動作する150 MHz PowerPC 604 RISC マシン
Linux が動作する 200 MHz Pentium-Pro マシン
参照
参考文献
^ abcdef マーティン・ボスゴー;スカヴェニウス、オヴェ。ペダーセン、トーマス。クリステンセン、トーマス。エリック・ゼナー (2005)。 「Badger- 高速かつ確実に安全な MAC」 (PDF) 。
^ 幸運を祈ります、ステファン; ライメン、ヴィンセント (2005)。 「アナグマの評価」 (PDF) 。
^ ab 「Badger メッセージ認証コード、アルゴリズム仕様」 (PDF) 。2005 年。
^ abc Halevi, Shai ; Krawczyk, Hugo (1997)。「MMH: Gbit/秒レートでのソフトウェア メッセージ認証」。MMH : Gbit/秒レートでのソフトウェア メッセージ認証 。 コンピュータ サイエンスの講義ノート。第 1267 巻。pp. 172–189。doi :10.1007/ BFb0052345。ISBN 978-3-540-63247-4 。