# Can someone explain very simplified how the Winternitz OTS/Lamport OTS works?

I read the Wiki example, but I am still confused to be honest. Could someone provide a really simple example?

• That's a very good question. I do not understand the reason for negative vote. Who voted negative. Could you give more details of your vote? Dec 10, 2017 at 18:09
• Good explanation: youtube.com/watch?v=EohFxzWLh1U Dec 14, 2017 at 9:52
• Here you can find another good explanation not only of Lamport OTS but also of Winternitz OTS. Jan 10, 2018 at 18:58

## 1 Answer

Simplified, Lamport One-Time-Signatures (OTS) work as follows. For illustration purposes I am using Bits and not Trits.

Assume you have a private key `PRIV` that consists of 100 (random) pairs of numbers, so a total of 200. To create your public key `PUB` you hash each of these 200 numbers, giving you a new sequence of 100 pairs.

Now if you want to sign any message `MSG` you hash it and you get back a checksum `CHECK` of (for argument sake) 100 bits. Then you create a sequence `SIG` consisting of 100 numbers where each element is picked from the 100 pairs of `PRIV` based on what the bit in `CHECK` was. For example, if a given bit of `CHECK` is 0 you take the first number from the pair, if it was 1 you take the second number. Now you publish `PUB`, `MSG` and `SIG`.

If anyone wants to verify your message `MSG`, they hash it, and depending on the bits in the hash then pick the corresponding number from each of the 100 pairs in your public key `PUB`. After hashing the 100 numbers that were picked that way, one should arrive at the same signature `SIG` you provided, thus verifying the message.

This also explains why you shouldn't re-use a One-Time-Signature private key, because every time you use it your signature `SIG` reveals 50% of your private key.