MDC-2

暗号学において、MDC-2Modification Detection Code 2、マイヤー・シリングとも呼ばれ、ISO 10118-2で標準化)は暗号ハッシュ関数の一種である。MDC-2は、理想暗号モデルにおける安全性の証明を備えたブロック暗号に基づくハッシュ関数である。 [ 1 ]出力ハッシュの長さは、基礎となるブロック暗号によって異なる。

アルゴリズム

を、それぞれ長さ の(平文) と(鍵) を入力として、長さ の暗号文を計算するブロック暗号関数とします。与えられたメッセージをハッシュする場合、MDC-2 アルゴリズムは以下のように進行します。 を2 つの異なるサイズ の定数とします。をそれぞれサイズとすると、メッセージの ハッシュは次のように表されます。Ep{\displaystyle E(p,k)}p{\displaystyle p}{\displaystyle k}n{\displaystyle n}n{\displaystyle n}M{\displaystyle M}1B1{\displaystyle A_{1},B_{1}}n{\displaystyle n}M||パッドM1||||Mメートル{\displaystyle M\,||\,{\text{pad}}=M_{1}\,||..||\,M_{m}}M{\displaystyle M_{i}}n{\displaystyle n}Vメートル||Wメートル{\displaystyle V_{m}\,||\,W_{m}}

  • 〜のために: 1{\displaystyle i=1}メートル{\displaystyle m}
    • VMEM{\displaystyle V_{i}=M_{i}\oplus E(M_{i},A_{i})}
    • WMEMB{\displaystyle W_{i}=M_{i}\oplus E(M_{i},B_{i})}
    • VL||VRV{\displaystyle V_{i}^{L}\,||\,V_{i}^{R}=V_{i}}
    • WL||WRW{\displaystyle W_{i}^{L}\,||\,W_{i}^{R}=W_{i}}
    • +1VL||WR{\displaystyle A_{i+1}=V_{i}^{L}\,||\,W_{i}^{R}}
    • B+1WL||VR{\displaystyle B_{i+1}=W_{i}^{L}\,||\,V_{i}^{R}}
  • 戻る。メートル+1||Bメートル+1{\displaystyle A_{m+1}\,||\,B_{m+1}}

ここで はの長さを持つ半分などに分割されます。 VW{\displaystyle V_{i},W_{i}}VL{\displaystyle V_{i}^{L}}n/2{\displaystyle n/2}

MDC-2DESハッシュ

MDC-2がDESブロック暗号を使用する場合、128ビット(16バイト)のMDC-2ハッシュは通常、32桁の16数で表されます。は8バイトの文字列5252525252525252として選択され、は8バイトの文字列2525252525252525(16進数で表記)として選択されます。さらに、各反復処理の前に、の最初のバイトA[0]は(A[0] & 0x9f) ^ 0x40として再計算され、の最初のバイトB[0]は(B[0] & 0x9f) ^ 0x20として再計算されます。 1{\displaystyle A_{1}}B1{\displaystyle B_{1}}{\displaystyle A}B{\displaystyle B}

以下は、43 バイトのASCII入力 (長さが DES ブロック サイズの 8 バイトの倍数になるように 5 つのゼロ バイトが埋め込まれている) と、対応する MDC-2 ハッシュを示しています。

MDC2(「素早い茶色のキツネが怠け者のを飛び越える」) = 000ed54e093d61679aefbeae05bfe33a 

メッセージに小さな変更を加えただけでも(確率的に)完全に異なるハッシュが生成されます。たとえば、d次のように変更されますc

MDC2(「素早い茶色のキツネは怠け者の歯車を飛び越える」) = 775f59f8e51aec29c57ac6ab850d58e8 

長さゼロの文字列のハッシュは次のとおりです。

MDC2("") = 5252525252525252525252525252525 

特許問題

MDC-2は、1990年3月13日に発行された米国特許4,908,861号で保護されていましたが、 IBMによって1987年8月28日に出願されました。特許上の懸念から、ほとんどのLinuxディストリビューションのOpenSSLではMDC-2のサポートが無効化されており、他の多くの暗号ライブラリでも実装されていません。GPGlibgcryptでは実装されています。

特許は出願日から20年後の2007年8月28日に失効する予定でしたが、IBMが更新料を支払わなかったため、実際には2002年に失効しました[ 2 ]。カナダ特許は更新されず、欧州特許も取得されなかったため、MDC-2は現在自由に使用できます。

参照

注記

  1. ^ Steinberger, John (2007年6月23日). 「理想暗号モデルにおけるMDC-2の衝突回避性」 . Advances in Cryptology – EUROCRYPT 2007. Springer-Verlag. pp.  34– 51. doi : 10.1007/978-3-540-72540-4_3 . 2008年1月31日閲覧.
  2. ^ 「特許4,908,861の維持費」 USPTO維持費サイト.米国特許庁.2002年3月13日. 2025年9月16日閲覧