A method for digitally securing data comprising: from at least one signing entity via a respective device, receiving at a signing server a query (y t) for a signature of a message (m), said request comprising a randomizing function of the message and a current key (z t), said key being one of a plurality of keys (z 1;...; z N) pre-generated within the signing entity as a set of unpredictable digital values; maintaining a counter value (i; 210) of keys of the pre-generated keys previously used by the signing entity; maintaining a hash tree data structure having a plurality of input leaves and a root value (r); computing mathematical key bindings of each pre-generated key (z i) to a respective sequence number; computing a public key (p) by aggregating the key bindings into a public key hash tree (Tree); and associating respective second hash chains (c i) with the pre-generated keys, each said second hash chain defining a computation path from the respective pre-generated key to the public key (p); during each of a series of rounds: including a current round (t), associating with the signing entity a respective one of the input leaves (l i) of the hash tree, each round corresponding to an aggregation interval (r), wherein a hash tree leaf for the current round includes a current counter value (i t) and the current query from the signing server; returning to the signing entity parameters of a first hash chain (at) corresponding to a path through the hash tree from a hash of the query (y t) and the current counter value (i t) up to the root value (i t) of the hash tree for the round during which the request is received; submitting the root value (r t) for registration in a repository; incrementing the counter value associated with the signing entity, whereby the current key is made unusable for signing in subsequent rounds; generating a signature of the message (m), said signature comprising the current counter value (i t), the current key (z t), the respective second hash chain (ci), an identifier of the respective round, and the respective first hash chain; and incrementing a spent key counter within the signing entity. from at least one signing entity via a respective device, receiving at a signing server a query (y t) for a signature of a message (m), said request comprising a randomizing function of the message and a current key (z t), said key being one of a plurality of keys (z 1;...; z N) pre-generated within the signing entity as a set of unpredictable digital values; maintaining a counter value (i; 210) of keys of the pre-generated keys previously used by the signing entity; maintaining a hash tree data structure having a plurality of input leaves and a root value (r); computing mathematical key bindings of each pre-generated key (z i) to a respective sequence number; computing a public key (p) by aggregating the key bindings into a public key hash tree (Tree); and associating respective second hash chains (c i) with the pre-generated keys, each said second hash chain defining a computation path from the respective pre-generated key to the public key (p); during each of a series of rounds: including a current round (t), associating with the signing entity a respective one of the input leaves (l i) of the hash tree, each round corresponding to an aggregation interval (r), wherein a hash tree leaf for the current round includes a current counter value (i t) and the current query from the signing server; returning to the signing entity parameters of a first hash chain (at) corresponding to a path through the hash tree from a hash of the query (y t) and the current counter value (i t) up to the root value (i t) of the hash tree for the round during which the request is received; submitting the root value (r t) for registration in a repository; incrementing the counter value associated with the signing entity, whereby the current key is made unusable for signing in subsequent rounds; including a current round (t), associating with the signing entity a respective one of the input leaves (l i) of the hash tree, each round corresponding to an aggregation interval (r), wherein a hash tree leaf for the current round includes a current counter value (i t) and the current query from the signing server; returning to the signing entity parameters of a first hash chain (at) corresponding to a path through the hash tree from a hash of the query (y t) and the current counter value (i t) up to the root value (i t) of the hash tree for the round during which the request is received; submitting the root value (r t) for registration in a repository; incrementing the counter value associated with the signing entity, whereby the current key is made unusable for signing in subsequent rounds; generating a signature of the message (m), said signature comprising the current counter value (i t), the current key (z t), the respective second hash chain (ci), an identifier of the respective round, and the respective first hash chain; and incrementing a spent key counter within the signing entity.