論文翻訳: A DIGITAL SIGNATURE BASED ON A CONVENTIONAL ENCRYPTION FUNCTION
by Ralph C. Merkle
Elxsi
2334 Lundy Place
San Jose, CA 95131
ABSTRACT
従来型暗号化関数 (conventional encryption function) (DESなど) のみに基づいた新しいデジタル署名が記述されている。これは基盤となる暗号化関数と同等のセキュリティを持ち、セキュリティは素因数分解の困難性に依存せず、モジュラー算術の高い計算コストも回避される。この署名システムは無制限のメッセージに署名でき、署名サイズは署名されたメッセージの数の関数として対数的に増加する。「典型的な」システムにおける署名サイズは数百バイトから数キロバイトの範囲で、署名の生成には基盤となる従来型暗号化関数の計算が数百から数千回必要となる場合がある。
Table of Contents
INTRODUCTION
従来の暗号化関数 (または一方向関数) のみに依存するデジタル署名システムが提案されてきたが [1, 3, 5, 10]、素因数分解 [2, 4] などのより複雑な数学的問題に基づくシステムのような利便性を提供するには至っていない。セキュリティが一方向関数のみに基づいているシステムに関心が寄せられる重要な理由は、そのような関数の存在が確実であるように思われるのに対し、素因数分解の複雑さや最も効率的な素因数分解アルゴリズムが依然として大きな関心事である未解決の問題だからである。これは純粋に学術的な関心事にとどまらず、その後破られた「破られない」暗号システムの数の多さを鑑みても特に重要である。
第二の利点は、モジュラー算術を必要とするシステムと比較して計算コストが削減されることである。DES (データ暗号化標準; the Data Encryption Standard) のソフトウェア実装は、
本稿を自己完結型にするため、まず一方向関数とワンタイム署名に関する既知の結果を簡単にレビューし、次いで、このアプローチの受け入れと使用を妨げてきた制限と欠点を克服するデジタル署名システムを、ワンタイム署名システムを新しい方法で使用することでどのように提供できるかを示す。
一方向関数
一方向関数
一方向関数は、平文と暗号文が与えられた場合に鍵を推測することが非常に困難であるという観察に基づいて、従来の暗号化関数に基づかせることができる。従来の暗号化関数を
一方向ハッシュ関数、例えば任意に大きな入力 (数キロバイトなど) を受け取り、小さな固定サイズの出力 (64 ビットなど) を生成する一方向関数では、同様の方法で従来の暗号化関数の繰り返し適用に基づいて構築できる。一方向ハッシュ関数の設計には注意が必要である。最も明白なアプローチは、「平方根」攻撃 (square root attack) に対して脆弱な可能性がある。例えば DES を使用して 112 ビットを 64 ビットに削減したい場合、明白な手法は 112 ビットを 2 つの 56 ビットブロックに分割し、固定定数を二重暗号化することである。つまり 2 つの 56 ビットブロックを
セキュアな一方向ハッシュ関数が利用可能であり、おそらく何らかの従来の暗号化関数に基づいていると仮定する。この関数を
1 ビットメッセージの署名
このセクションと次のセクションでは、ワンタイム署名に不慣れな読者向けにワンタイム署名について簡単に説明する。これらの 2 つのセクションは連続性を損なうことなくスキップできる。
人物 A は次のプロトコルを使用して B に対して 1 ビットメッセージに署名できる: まず、事前計算において、A は
1 ビットメッセージが '1' であった場合、B は
数ビットメッセージの署名
A が多くの
Merkle [5] はこの方法の改良を提案し、署名サイズをほぼ 2 倍に削減した。メッセージの各ビットに対して 2 つの
例えば 8 ビットメッセージ '0100 1110' に署名したい場合、まず '0' ビットの数を数え (4 つ存在する)、次に 3 ビットのカウントフィールド (値 4) を元の 8 ビットメッセージに追加して 11 ビットメッセージ '0100 1110 100' を生成する。これに
Winternitz [6] は署名サイズを数倍に削減する改良を提案しました。A は
この例は 4 つのメッセージのうちの 1 つに署名する方法を示しているが、このシステムは
Merkle によって提案された 1 ビットワンタイム署名に対するほぼ 2 倍の改善は、Winternitz ワンタイム署名に一般化される。
したがって、Lamport と Diffie によって提案され Winternitz と Merkle によって改良された元のワンタイム署名システムは、任意のメッセージに署名するために使用でき、優れたセキュリティを持っている。単一メッセージに署名するためのストレージと計算要件は非常に合理的である。残念ながら、より多くのメッセージに署名するにはより多くの
ワンタイム署名の無限ツリー
新しいシステムの一般的な考え方は、ワンタイム署名の無限ツリーを用いることである。簡略化のためツリーは二分木であると仮定する。無限ツリーの根は公開ファイルに置くことで簡潔に認証される。ツリーの各ノードは三つの機能を果たす。すなわち、(1) 左サブノードの認証、(2) 右サブノードの認証、(3) 単一メッセージへの署名である。ツリーには無限のノードが存在するため、無限のメッセージに署名が可能となる。これら三つの機能を遂行するために、各ノードは三つの署名、すなわち「左」署名、「右」署名、「メッセージ」署名を有さねばならない。「左」署名は左サブノードへの「署名」に用いられ、「右」署名は右サブノードへの「署名」に用いられる一方、「メッセージ」署名はユーザーメッセージへの署名に利用される。
表記上、ツリー内のノードに以下の方法で番号を付けると便利である。
- ルートノードを '1' で指定する。
- ノード
の左サブノードを で指定する。 - ノード
の右サブノードを で指定する。
この番号付けの割り当てには多くの便利な特性がある。無限ツリー内のすべてのノードを一意に番号付けし、左サブノードと右サブノードは親ノードから容易に計算でき、また親ノードはサブノードから単純な整数除算 2 によって計算できる。ノード 1 から開始し、各ノードで左サブノードを辿ると、ノード番号は 1, 2, 4, 8, 16, 32, 64, ... となる点に注意。
ツリーの異なるノードにおいて異なるメッセージに署名するために用いられる
-
-
-
ノード
特定の署名のすべての
したがって、我々の基本的なデータ構造は
特定のノードにおけるすべての
これはノード
署名プロトコルに先立ち A は
これで、A が署名
新しい署名アルゴリズム
A と B は署名するメッセージ
A は
と を B に送信する。 A は
の適切な のサブセットを B に送信することでメッセージ に署名する。 B は、公開された
のサブセットが と照合されたときに、メッセージ に正しく署名されているかを確認する。 A は
, 、および を B に送信する。 A は
を計算する。定義によりこれは次のようになる:
の値が 1 の場合、B は A が送信した値から計算された の値が公開ファイルのエントリ と一致するかを確認し、アルゴリズムは終了する。
が偶数の場合、 - A は B に
を送信する。 - A は
の正しいサブセットを送信することで に署名する。 - B は
を計算し、 を と照合して適切に署名されていることを検証する。
- A は B に
が奇数の場合、 - A は
を B に送信する。 - A は
の正しいサブセットを送信することで に署名する。 - B は
を計算し、 を の と照合して適切に署名されていることを検証する。
- A は
A と B の両方は
を に置き換えてステップ 4 に進む。
アルゴリズムが終了すると、B は
この「メタシステム」があらゆるワンタイム署名システムを利用できること、そしてワンタイム署名システムの改善がメタシステムの性能に相応の改善をもたらすことは明らかである。現在のワンタイム署名システムが完成の域に達したと信じる特別な理由はなく、したがってワンタイム署名システムに関するさらなる研究は、価値ある性能向上をもたらす可能性が十分にある。
二分木の使用が任意であることもまた明らかである。これは容易に
各ノードでの計算は、
最後に、一部の読者は無限の 3 次元配列
実用上、A が記憶しておく必要があるのは単一の秘密鍵 (おそらく56ビット) と最後にメッセージに署名するために使用されたツリー内のノードを追跡するための単純な整数カウンタ (おそらく 20 または 30 ビット) のみである。計算が正しく順序付けされていれば、署名の生成は非常に少ないメモリで行うことができる (128バイトのRAMで十分)。このような少ないメモリ (さらに少ないメモリも) は「スマートカード」(コンピュータ内蔵のクレジットカード) のような低コストで大量生産されるアプリケーションでよく見られる。
結論
従来の暗号化関数のみに基づいたデジタル署名システムが提示された。署名および署名チェックのアルゴリズムは高速であり、ごく少量のメモリしか必要としない。署名のサイズは、署名されたメッセージの数の対数として増加する。署名サイズとメモリ要件は、計算要件とトレードオフ可能である。
REFERENCES
- 'New Directions in Cryptography', IEEE Trans. on Information Theory, IT-22, 6(Nov. 1976), 644-654
- 'A method for obtaining digital signatures and public-key cryptosystems.' CACM 21,2, Feb. 1978 120-126
- 'Secrecy, Authentication, and Public Key Systems', Ralph C. Merkle, UMI Research Press 1982.
- 'How to Prove Yourself: Practical Solutions to Identification and Signature Problems', Amos Fiat and Adi Shamir, 1986.
- 'Making the Digital Signature Legal -- and Safeguarded', S.M. Lipton, S.M. Matyas, Data Communications, Feb. 1978 41-52.
- Private Communication, Robert Winternitz, 1980.
- 'Cryptography and Data Security', by Dorothy E.R. Denning, Addison Wesley 1982.
- 'A "Paradoxical" solution to the Signature Problem', by Shafi Goldwasser, Silvio Micali and Ronald L. Rivest, from the Symposium on the Foundations of Computer Science, 1984, page 441-448.
- 'A Digital Signature Scheme Secure Against Adaptive Chosen Message Attack', by Shafi Goldwasser, Silvio Micali and Ronald L. Rivest, extended abstract, 1986.
- 'Cryptography: a New Dimension in Computer Data Security', by Carl H. Meyer and Stephen M. Matyas, Wiley 1982.
翻訳抄
従来型暗号化関数のみに基づき、素因数分解の困難性やモジュラー算術の高い計算コストに依存しないデジタル署名システムについて論じた 1987 年の論文。R.C.Merkle が以前に提唱したツリー構造に基づく認証 (後の Merkle Tree の基礎) を、従来型暗号化関数を用いたデジタル署名システムへ応用し、その実用性を高めている。
- Merkle, R.C. (1987) A Digital Signature Based on a Conventional Encryption Function. Conference on the Theory and Application of Cryptographic Techniques, Santa Barbara, 16-20 August 1987, 369-378. https://doi.org/10.1007/3-540-48184-2_32