ランポート署名
( i = 2 {\displaystyle i=2} ) m 2 = 0 {\displaystyle m_{2}=0} より、 s 2 = y 2 , 0 {\displaystyle s_{2}=y_{2,0}}
( i = 3 {\displaystyle i=3} ) m 3 = 1 {\displaystyle m_{3}=1} より、 s 3 = y 3 , 1 {\displaystyle s_{3}=y_{3,1}}
⋮ {\displaystyle \vdots }
( i = 255 {\displaystyle i=255} ) m 256 = 1 {\displaystyle m_{256}=1} より、 s 256 = y 256 , 1 {\displaystyle s_{256}=y_{256,1}}
とおき、署名を ( s 1 , s 2 , s 3 , ... , s 256 ) {\displaystyle (s_{1},s_{2},s_{3},\ldots ,s_{256})} とする。署名は 256×256 bits = 64 Kibitである。
k {\displaystyle k} ビットのメッセージを m = m 1 ... m k ∈ { 0 , 1 } k {\displaystyle m=m_{1}\ldots m_{k}\in \{0,1\}^{k}} とする。 署名は
sig  ( m 1 ... m k ) = ( y 1 , m 1 , ... , y k , m k ) = ( s 1 , ... , s k ) {\displaystyle \operatorname {sig} (m_{1}\ldots m_{k})=(y_{1,m_{1}},\ldots ,y_{k,m_{k}})=(s_{1},\ldots ,s_{k})}
である。
ランポート署名では、一つの( 2 k {\displaystyle 2k} 個の値からなる)鍵は、一つのメッセージの署名にしか利用できない。もし、多くのメッセージに署名をしたいならば、多くの公開鍵を公開しておかなければならない。しかし、これら多くの公開鍵にハッシュ木を適用することで、ただ一つのトップハッシュのみを公開しておくことができる。このとき、署名には検証に必要はハッシュ木の一部の情報を含める必要があり、署名長は少し長くなるが、トップハッシュを公開鍵として多くのメッセージの検証をすることができる。
よって、バランスの取れたシステム設計においては、ハッシュ関数への入力と出力は、同程度の長さとする。
グローバーのアルゴリズムの存在により、耐量子計算機安全性のためには、公開鍵の各要素 z i , j {\displaystyle z_{i,j}} 、秘密鍵の各要素 y i , j {\displaystyle y_{i,j}} および署名の各要素 s i {\displaystyle s_{i}} は、システムのセキュリティパラメータの 2 倍以上でなければならない。つまり、
80 ビットセキュリティのシステムでは、160 ビット以上の長さを持つ要素を利用する。
128 ビットセキュリティのシステムでは、256 ビット以上の長さを持つ要素を利用するである。
ただし、上記の攻撃コストの見積もりは、理想的なハッシュ関数を前提とし、1つのハッシュ値をターゲットとして原像を求めようとする攻撃に限定しているため、注意が必要である。従来の計算機モデルにおいて 2 3 n / 5 {\displaystyle 2^{3n/5}} 個の原像を同時に求める場合、1つの原像あたりのコストが 2 n / 2 {\displaystyle 2^{n/2}} から 2 2 n / 5 {\displaystyle 2^{2n/5}} に減少することが知られている 。 複数の原像を同時に計算する攻撃を考慮して最適な要素サイズを選択することは、未解決の問題である。 512 ビット要素や SHA-512 など、より大きな要素サイズと強力なハッシュ関数を利用すれば、これらの未知の問題に対して、より大きなセキュリティマージンが保証される。