Methods of proving validity and determining validity, electronic device, server and computer programs
10511440 ยท 2019-12-17
Assignee
Inventors
Cpc classification
H04L2209/76
ELECTRICITY
H04L9/3239
ELECTRICITY
H04L9/3297
ELECTRICITY
H04L9/3242
ELECTRICITY
H04L9/006
ELECTRICITY
H04L9/3218
ELECTRICITY
H04L9/3263
ELECTRICITY
International classification
H04L9/32
ELECTRICITY
Abstract
A device provides a one-time proof of knowledge about a one-time signing key to a server without revealing the one-time signing key by computing a hash as a hash function from the one-time signing key, and transmitting, to the server, the computed hash, an identity associated with the electronic device and a hash path of the hash. The server receives the message from the device and checks whether the hash corresponds to a one-time signing key for a root hash included in a public certificate associated with the identity, checks whether an index corresponding to the hash path from the one-time signing key to the root hash corresponds to a correct time slot, and determines it to be proven that the device is in possession of the correct one-time signing key when the checks are fulfilled.
Claims
1. A method of an electronic device that has a public one-time signing key and a private one-time signing key, the method being for obtaining, from a server that requires a one-time proof of knowledge about the private one-time signing key without revealing the private one-time signing key, a time stamp signature for a piece of data, the method comprising: computing a hash as a hash function from the private one-time signing key; forming a signing request for the piece of data, wherein the signing request includes the computed hash, an identity associated with the electronic device, and a hash path of the hash, and wherein the signing request does not include the private one-time signing key; and transmitting, to the server, the signing request; and receiving, from the server, the time stamp signature only when the server validated from the signing request that the electronic device has knowledge of the private one-time signing key, wherein: the private one-time signing key is one of a plurality of one-time signing keys; the private one-time signing key comprises a value of a hash chain that comprises a plurality of values bound by a public root hash of a hash tree on top of a sequence formed by the plurality of one-time signing keys; the hash path is a path from the computed hash to the public root hash of the hash tree; and the server is a server that uses the computed hash, the hash path, and the public root hash of the hash tree to verify that the electronic device has knowledge of the private one-time signing key by confirming that a hash value calculated using the computed hash of the private one-time signing key and the hash path corresponds to the public root hash of the hash tree on top of the sequence formed by the plurality of one-time signing keys.
2. The method of claim 1, wherein the identity associated with the electronic device is a user identity of a user of the electronic device.
3. The method of claim 1, wherein: the computing of the hash function is from a piece of data and the private one-time signing key; the transmitting comprises a message to the server comprising an index of the private one-time signing key, the computed hash, an identity associated with the electronic device and the hash path of the computed hash to the public root hash of the hash tree, and the method further comprising receiving a time stamp from the server, wherein the signer is enabled to reveal a signature of the piece of data including the identity, the index of the private one-time signing key, the signing key and the time stamp for enabling verification of the time stamp for the piece of data.
4. The method of claim 1, comprising deriving one-time signing keys of signer's one-time signing key hash chain by a one-way function of a secret key of the signer and a function of an index of the one-time signing key, wherein the computing of the hash uses the one-time signing key associated with and index corresponding to an actual time slot.
5. The method of claim 1, comprising sending a signing request to the signing authority for a plurality of pieces of data, wherein each piece of data is assigned a respective index consecutively by using one-time signing keys with time-forwarded one-time signing key indexes.
6. The method of claim 1, comprising applying a time fraction hash tree splitting a time slot corresponding to the index into time fractions such that the time slot is divided into fractions according to the number of leafs of the time fraction hash tree.
7. A method of a server of a signing authority for issuing a time stamp signature, the method comprising: receiving a message from an electronic device, the message including a hash value of a private one-time signing key, an identity associated with the electronic device and a hash path of the hash value to a public root hash of a hash tree on top of a sequence formed by a plurality of one-time signing keys including the private one-time signing key; determining that a first check is fulfilled when the hash value corresponds to the private one-time signing key for the public root hash of a hash tree included in a public certificate associated with the identity; determining that a second check is fulfilled when an index corresponding to the hash path from the private one-time signing key to the public root hash corresponds to a correct time slot; determining that the electronic device is proven to be in possession of the correct one-time signing key when the first and second checks are fulfilled; and providing a service to the electronic device only when the electronic device is proven to be in possession of the correct one-time signing key, wherein: determining that the first check is fulfilled when the hash value corresponds to the private one-time signing key for the public root hash of the hash tree included in the public certificate associated with the identity comprises checking whether the received hash path is a hash path from the received hash value to the public root hash of the hash tree included in the public certificate associated with the identity; and the private one-time signing key comprises a value of a hash chain comprising values bound by a root of a hash tree on top of a sequence formed by a plurality of one-time signing keys, wherein the root of the hash tree corresponds to the public root hash.
8. The method of claim 7, including provision of a time stamp for a piece of data to the electronic device, wherein the provision comprises: receiving a message from an electronic device, the message including a first hash, the identity associated with the electronic device and a hash path of the first hash; accessing a certificate matching the identity and a root hash for the first hash; checking validity of the certificate; verifying whether the hash path for the first hash is correct; and if the certificate is not valid or the hash path cannot be verified to be correct, the server omits further actions, and if the certificate is valid and the hash path can be verified to be correct, the server performs: transmitting a second hash formed from at least the first hash and the identity to a server of a time stamp service infrastructure entity; receiving, from the server of a time stamp service infrastructure entity, a time stamp comprising an aggregate hash path and a calendar hash path; and transmitting the time stamp to the electronic device.
9. The method of claim 8, including verification of the time stamp for the piece of data by: determining whether a hash of the message is a leaf of the time stamp hash tree; determining whether the aggregate hash path corresponds to the correct identifier of the server to the server of the time stamp service infrastructure entity; and determining whether the aggregate hash path and calendar hash path correspond to a correct calendar root hash for a time corresponding to the index.
10. An electronic device that has a public one-time signing key and a private one-time signing key, the electronic device further comprising processing circuitry arranged to obtain, from a server that requires a one-time proof of knowledge about the private one-time signing key without revealing the private one-time signing key, a time stamp signature for a piece of data, wherein the processing circuitry is arranged to perform: computing a hash as a hash function from the private one-time signing key; forming a signing request for a piece of data, wherein the signing request includes the computed hash, an identity associated with the electronic device, and a hash path of the hash, and wherein the signing request does not include the private one-time signing key; and transmitting, to the server, the signing request; and receiving, from the server, the time stamp signature only when the server validated from the signing request that the electronic device has knowledge of the private one-time signing key, wherein: the private one-time signing key is one of a plurality of one-time signing keys; the private one-time signing key comprises a value of a hash chain that comprises a plurality of values bound by a public root hash of a hash tree on top of a sequence formed by the plurality of one-time signing keys; the hash path is a path from the computed hash to the public root hash of the hash tree; and the server is a server that uses the computed hash, the hash path, and the public root hash of the hash tree to verify that the electronic device has knowledge of the private one-time signing key by confirming that a hash value calculated using the computed hash of the private one-time signing key and the hash path corresponds to the public root hash of the hash tree on top of the sequence formed by the plurality of one-time signing keys.
11. The electronic device of claim 10, wherein the electronic device is a wireless device.
12. The electronic device of claim 10, wherein the electronic device is a network node.
13. A server comprising processing circuitry arranged to issue a time stamp signature, wherein the processing circuitry is arranged to perform: receiving a message from an electronic device, the message including a hash value of a private one-time signing key, an identity associated with the electronic device and a hash path of the hash value to a public root hash of a hash tree on top of a sequence formed by a plurality of one-time signing keys including the private one-time signing key; determining that a first check is fulfilled when the hash value corresponds to the private one-time signing key for the public root hash of a hash tree included in a public certificate associated with the identity; determining that a second check is fulfilled when an index corresponding to the hash path from the private one-time signing key to the public root hash corresponds to a correct time slot; determining that the electronic device is proven to be in possession of the correct one-time signing key when the first and second checks are fulfilled; and providing a service to the electronic device only when the electronic device is proven to be in possession of the correct one-time signing key, wherein: determining that the first check is fulfilled when the hash value corresponds to the private one-time signing key for the public root hash of the hash tree included in the public certificate associated with the identity comprises checking whether the received hash path is a hash path from the received hash value to the public root hash of the hash tree included in the public certificate associated with the identity; and the private one-time signing key comprises a value of a hash chain comprising values bound by a root of a hash tree on top of a sequence formed by a plurality of one-time signing keys, wherein the root of the hash tree corresponds to the public root hash.
14. A nontransitory computer readable storage medium comprising a computer program comprising instructions which, when executed on a processor of an electronic device that has a public one-time signing key and a private one-time signing key, causes the electronic device to perform a method for obtaining, from a server that requires a one-time proof of knowledge about the private one-time signing key without revealing the private one-time signing key, a time stamp signature for a piece of data, the method comprising: computing a hash as a hash function from the private one-time signing key; forming a signing request for a piece of data, wherein the signing request includes the computed hash, an identity associated with the electronic device, and a hash path of the hash, and wherein the signing request does not include the private one-time signing key; and transmitting, to the server, signing request; and receiving, from the server, the time stamp signature only when the server validated from the signing request that the electronic device has knowledge of the private one-time signing key, wherein: the private one-time signing key is one of a plurality of one-time signing keys; the private one-time signing key comprises a value of a hash chain that comprises a plurality of values bound by a public root hash of a hash tree on top of a sequence formed by the plurality of one-time signing keys; the hash path is a path from the computed hash to the public root hash of the hash tree; and the server is a server that uses the computed hash, the hash path, and the public root hash of the hash tree to verify that the electronic device has knowledge of the public one-time signing key by confirming that a hash value calculated using the computed hash of the private one-time signing key and the hash path corresponds to the public root hash of the hash tree on top of the sequence formed by the plurality of one-time signing keys.
15. A nontransitory computer readable storage medium comprising a computer program comprising instructions which, when executed on a processor of a server, causes the server to perform a method for issuing a time stamp signature, the method comprising: receiving a message from an electronic device, the message including a hash value of a private one-time signing key, an identity associated with the electronic device and a hash path of the hash value to a public root hash of a hash tree on top of a sequence formed by a plurality of one-time signing keys including the private one-time signing key; determining that a first check is fulfilled when the hash value corresponds to the private one-time signing key for the public root hash of a hash tree included in a public certificate associated with the identity; determining that a second check is fulfilled when an index corresponding to the hash path from the private one-time signing key to the public root hash corresponds to a correct time slot; determining that the electronic device is proven to be in possession of the correct one-time signing key when the first and second checks are fulfilled; and providing a service to the electronic device only when the electronic device is proven to be in possession of the correct one-time signing key, wherein: determining that the first check is fulfilled when the hash value corresponds to the private one-time signing key for the public root hash of the hash tree included in the public certificate associated with the identity comprises checking whether the received hash path is a hash path from the received hash value to the public root hash of the hash tree included in the public certificate associated with the identity; and the private one-time signing key comprises a value of a hash chain comprising values bound by a root of a hash tree on top of a sequence formed by a plurality of one-time signing keys, wherein the root of the hash tree corresponds to the public root hash.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) The above, as well as additional objects, features and advantages of the present invention, will be better understood through the following illustrative and non-limiting detailed description of preferred embodiments of the present invention, with reference to the appended drawings.
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
DETAILED DESCRIPTION
(17) Certain embodiments disclosed herein relate generally to the technical field of security, and more particularly to the field of hash functions. For the easier understanding of the contribution by the invention, an introduction to mechanisms for providing hash functions used for time stamping is demonstrated below. For further facilitating the reading of this disclosure, commonly used abbreviations are listed below.
(18) Abbreviations
(19) Abbreviation Explanation BLT Extension of KSI CRH Calendar root hash GW Gateway KSI Keyless Signature Infrastructure HMAC specific message authentication code algorithm construction MAC message authentication code algorithm (generic) PKI Public Key Infrastructure TSA Time-Stamp Authority PKI Public Key Infrastructure QI-KSI Quantum-Immune KSI, e.g. BLT RH Root hash of a Merkle type of tree HP Hash path of a Merkle type of tree LRS Left-Right Sequence of a hash path AHP Aggregation hash path ARM Aggregation root hash CHP Calendar hash path CRH Calendar root hash TTP Trusted third party TTP-SA Trusted third party signing authority CA Certificate Authority SK Secret key PK Public key HC Hash chain OTSK One time signing key OTAK One time authentication key
Introduction to KSI
(20) KSI stands for the Keyless Signature Infrastructure. This section is based on open sources, such as publications of papers [1-5] mainly on the cryptographic e-print web-based database where the authors describe different aspects of the KSI. The term keyless signature that is used in references [1-5] could be seen as slightly misleading. Another term, in the field of cryptography, that could be used instead is a time stamp of a given hash value, from the client's perspective. For consistent terminology with earlier work, we will nevertheless stick with the term KSI in the text below.
(21) Merkle Trees and Hash Paths
(22)
(23) Another notion that we will use is the Hash Path (HP), which is an ordered sequence of hash values that helps to derive the root hash, starting from a chosen leaf value.
(24) Thus, the path can be written as the sequence of 4 hash values {h.sub.3;h.sub.2(L);h.sub.01(L);h.sub.4567(R)}, and having the sequence of L-R marks one can compute the root hash explicitly.
(25) It is also worth to note that an LRS is 1-to-1 mapped to the index of the leaf, if the LRS is translated into the binary representation with the following rules: L-R marks closer to the root represent the most significant bits of the index, and closer to the leafs represent the least significant bits of the index; L is translated to the bit value 1 and R is translated to the bit value 0.
(26) Indeed, in the example illustrated in
(27) As a final comment we note that we actually can change the hash function as we move through the tree. In that case an identifier of the hash function used in each merging node has to be encoded into the path.
(28) KSI Architecture
(29) A basic drawing of the KSI architecture is shown in
(30) The KSI system architecture includes several layers of aggregators, the functionality of each is basically to accept multiple hash values from the children connections, produce the local root hash, and push it to the upper layer for further aggregation. There are physically many aggregators on each layer that are distributed world-wide, but in the
(31) A client or a device may push its own hash value using the entry point called the Gateway. The Core Network (CN) is the last station of accumulating hash values into the large Merkle tree, and CN thus computes the aggregation root hash (ARH).
(32) Additionally, CN has an extra modified Merkle tree to add the time stamping to ARH at a given time. The Calendar tree is organized such a way that it includes both the current ARH and the history of all previous ARHs in the past. The result of the Calendar tree is the Calendar Root Hash (CRH).
(33) As the result of aggregation, the client receives back the aggregation hash path (AHP) from the client's hash value to the aggregation root hash, and also the calendar hash path (CHP) from the ARH to the global time stamp hash value that is actually the CRH.
(34) The Core Network beats at regular intervals, for example, say once per second, which means that the CRH and the calendar tree are updated every second. CN also keeps the history of the global time-stamps for each second slotthe combination of ARHs and all historical CRHs in the past.
(35) This way, the client or anyone else can later verify that the combination of a saved aggregation hash path and the calendar hash path at a certain time t lead to the correct value. I.e., LRS of AHP could be served as a static identifier of the Gateway (if the connection of the Gateway to the KSI infrastructure is static), and LRS of CHP is used to verify the time when the hash paths were created.
(36) The global time stamp value CRH can be periodically published in a newspaper so that the Core Network cannot itself to modify the global time stamp back in time.
(37) For verification purposes, the CRH can be received either off-line, or on-line. For off-line use cases one could take the CRH through the printed publications (that may be periodically once per month). For on-line verification use cases, the CRH can be signed by a trusted entity (perhaps, including a certificate), and then it can be downloaded by clients and/or applications at any time for verification purposes.
(38) In the general architecture of KSI the entry point for clients (and/or applications) is the Gateway (GW) that itself can be an aggregation layer, but additionally provides the client's front-end for various services based on KSI's time-stamping infrastructure. This way, the Gateway can be seen as a server-based service engine that should be located close to the customer, or actually be on the customer's side.
(39) The list of possible services that the Gateway may assist with includes: time-stamping of a given hash value, assistance in signing a document, etc. All those services are not really a part of KSI, but some of them are a part of QI-KSI.
(40)
(41) Identifier vs Identity
(42) KSI returns the aggregation hash path and the calendar hash path. The AHP may be considered as the identifier of the Gateway, since the L-R sequence in the global Merkle tree determines the way the Gateway was connected to the KSI. However, this identifier may be valid if certain conditions are valid: (a) The logical connection of the Gateway to KSI's leaf is static (b) A certificate that binds the Gateway's identity with the identifier is issued.
(43) Later we will see how the identifier is used in the QI-KSI signing model.
(44) Introduction to QI-KSI
(45) QI-KSI stands for Quantum-Immune KSI. This section is mainly based on the papers [2] and [4] identified in the introductory part of this disclosure.
(46) QI-KSI is an extension for KSI and provides two hash-based techniques. Hash-based cryptography is, as of today, believed to be quantum immune, so this is the reason for the name quantum-immune. QI-KSI proposes the technique for a hash-based authentication, and a hash-based digital signature architecture with the help of KSI's time-stamping service.
(47) Hash Chains For Authentication
(48) This is based on one-time passwords techniques. The client (and/or application) selects a random secret value z.sub.n (of size of the hash digest), and generates the hash chain (HC) z.sub.0z.sub.1 . . . z.sub.n as follows:
z.sub.i=H(z.sub.i+1), for i=0 . . . , n1, and H is a chosen hash function.
(49) The value z.sub.0 is then shared with the server side (via some channel) to which the client is intended to authenticate himself.
(50) At any given time, the server holds a value z.sub.k (in the beginning, the server holds the value z.sub.0). When the client wants to authenticate himself, he uses and sends to the server the value z.sub.k+1. The server verifies that H(z.sub.+1)=z.sub.k and if the values coincide then the authentication is successful. In the latter case, the server throws away z.sub.k and holds z.sub.k+1, instead, for future authentications.
(51) This way, one secret key z.sub.n can be served for n authentications.
(52) Hash Sequence Traversal Technique
(53) In this scheme, every time the client wants to authenticate himself, the value z.sub.k needs to be recomputed from z.sub.n. This may be a problem if n is large and there is no capacity to store or re-compute the whole hash chain. The solution to this problem is the technique called hash sequence traversal. Such a technique was proposed in [6] by D. Coppersmith and M. Jakobsson. In order to derive z.sub.k faster than just sequential hashing from z.sub.n to z.sub.k, the reversed order of hash chain z.sub.0z.sub.1 . . . z.sub.k . . . can be derived in average log(n) time if one could keep log(n) of intermediate hash values of the hash sequence. A short description of the M. Jakobsson and D. Coppersmith technique on the intuitive level can be given as follows. Assume the client can keep the value z.sub.n/2, then the derivation of any value z.sub.k would require at most n/2 hashes, instead of n. Now let us assume that the client keeps two intermediate values z.sub.n/2 and z.sub.n1/4. Thus, the elements of the first half of the hash chain z.sub.k, for kn/2, would require re-computation of at most n/4 hashes. When k becomes larger than n/2, the intermediate value z.sub.n1/4 can be removed and a new value z.sub.n3/4 is derived linearly in time n1/4 hash operations, so that the elements of the second half of the hash chain z.sub.k, for k>n/2, can be calculated in at most n/4 hashes as well. It has been shown that having log(n) intermediate hash values, the total time to derive the reverse-order hash chain is log(n), in average.
(54) QI-KSI Signing Model
(55) The model of signing documents in QI-KSI is showed in
(56) In QI-KSI, the signer first creates his own pair of the secret key and the public key. The signer chooses a random secret key z.sub.n. Then, the sequence of values (hash chain) z.sub.0 . . . z.sub.n is computed as
z.sub.i=H(z.sub.i+1), for i=0 . . . , n1, and H is a chosen hash function.
(57) The value z.sub.0 is the public key and a relevant certificate for the public key z.sub.0 is generated by an external certificate authority (CA). The value z.sub.0 is bound with the user's identity in the validity time t.sub.0 seconds from a well-known date (number of seconds from the date 1970-01-01 and time 00:00:00) that determines the time after which the certificate is valid. To be more precise, a certificate should include at least the following fields: Cert:={Client's identity records; z.sub.0, t.sub.0, TTP-SA's identity and identifier}, where the TTP-SA's identifier can be the index of the leaf in the global KSI Merkle tree to which the TTP-SA is statically attached.
(58) QI-KSI signing key looks similar to the hash chain in the QI-KSI authentication method, but the difference comes from the meaning of the index k in the notation z.sub.k. The values z.sub.k, k=1 . . . n, are used as one-time signing keys (OTSK) each of which can be used only at a certain KSI's time frame that is exactly (t.sub.0+k)th second from the global starting time (recall, the Core Network beats and produces global time stamp values with the speed once per second).
(59) QI-KSI Signing Protocol
(60) QI-KSI signing protocol, see e.g. paper [2], is shown in
(61) The verifier may check that z.sub.i is actually pre-image of z.sub.0, and the time stamp corresponds to t.sub.0+i.
(62) QI-KSI Improved OTSKs For Verification
(63)
(64) The problem comes for the verifier who wants to check the signature, as he only knows z.sub.i but needs to verify it against the public key z.sub.0. The verifier does not have those intermediate hash values and thus has to perform i hashes starting from z.sub.i and going all the way to z.sub.0.
(65) In order to reduce the time and/or complexity of the verification process, the following modification to OTSKs was proposed. This includes building yet another modified Merkle tree on top of OTSKs as shown in
(66) The client's certificate additionally includes the root hash r, and the signature additionally includes the hash path from the OTSK z.sub.i to the root r. Thus, the verifier only needs to check that z.sub.i participated in the hash root generation, and the L-R sequence of the hash path is translated to the correct index i.
(67) For efficiency reasons, the signer needs to keep the relevant part of the hash-tree, and in the signing process the part of the hash tree that leads to the root hash r may be partly recomputed in log(n) time with log(n) intermediate hash values. That computation also requires the knowledge of other values z.sub.i in an efficient way, but then this part may be done with a hash chain traversal technique as demonstrated in U.S. provisional patent application No. 62/118,808.
(68) Synchronization with KSI
(69) It is important that S.sub.i returned by TTP-SA corresponds to the OTSK z.sub.i that has been used by the client. QI-KSI proposes the idea that the client actually needs to use 3 (or more) keys z.sub.i, z.sub.i+1 and z.sub.i+2 and send a parallel request to TTP-SA for time-stamping. The signer will get 3 time stamps S's, but the stamp's time will correspond to only one of z.sub.i . . . z.sub.i+2.
(70) All this also means that the signer can only produce one signature per 3 time slots, i.e., one signature per 3 seconds. However, as will be demonstrated below under the headline Further Options, efficiency may be improved also in this sense.
(71) The gist of this disclosure will now be presented, followed by some optional features, and thereafter further disclosure about methods and their implementations. It is readily understood from this disclosure that any combination with the demonstrated features of the KSI concept are applicable.
(72) One-Time Proof of Knowledge For One-Time Signing Keys in Hash Based Signing Schemes
(73)
(74) A problem may be that TTP-SA does not know the content of the value xone part of the signing request, in the way that x (the value that the client derives and sends to TTP-SA; see section QI-KSI Signing Protocol above) can be anything and be generated by anyone.
(75) While issuing a signature, TTP-SA also does not know if the signing request comes from a legitimate user or from someone else. Hence, the TTP-SA may start to work and later when almost everything is ready find out that the user was not legitimate.
(76) It may thus be desirable to have a solution where the TTP-SA could verify that it is the authorized client who sends the signing request on his name, which would build a better trust in the signature.
(77) By using the hash path of a hash image of the actual OTSK as the proof that the user actually knows the not yet public secret OTSK, the TTP-SA may be better protected from doing work for non-legitimate requesters. The signer's signature may be shorter, and verification faster. The user sends this proof to the TTP-SA along with the signing request, so that the signing authority can verify the legitimacy of the signer before actually producing a signature fingerprint.
(78) The way to generate OTSKs by a user and the usage of such a proof-of-knowledge is not limited by the described use case, and the approach demonstrated here may be combined with any of the other approaches demonstrated in this disclosure. However, the benefit of deriving the OTSK by a one-way function as demonstrated above is evident when used together with this approach of providing one-time proof of knowledge to a signing authority.
(79)
(80) By including the path from z.sub.i to the root r in the signature, the verifier is enabled to
(81) (a) check in O(log(n)) time that z.sub.i has participated in the computation of the root value r and, by this way, to prove that z.sub.i is valid; and
(82) (b) the LRS of the hash path from z.sub.i to the root hash r also encodes the index i of the OTSK z.sub.i and, thus, the verifier can compare the time t.sub.0+i against the KSI's time-stamp's time slot, and that z.sub.i was used in the correct time slot.
(83) The hash path from r.sub.i's (where r.sub.i=H(z.sub.i)) to the public root hash r is actually one-time proof of knowledge (OTPoK) of the secret OTSK z.sub.i, without revealing z.sub.i.
(84) By the client sending the OTPoK of the secret key to the TTP-SA along with the request, the TTP-SA may (additionally) verify that the OTPoK corresponds to the client's public key r that is stored in the client's certificate. The TTP-SA may add the value of r.sub.i into the time-stamping process.
(85) Thus, in the pair z.sub.i.fwdarw.r.sub.i the value r.sub.i authenticates to the TTP-SA the value of the OTSK z.sub.i.
(86) As a positive side effect, the signer's signature does not need to include the hash path from z.sub.i.fwdarw.r, but only the OTSK z.sub.i, if TTP-SA includes r.sub.i as the part of the time-stamping computation. The verifier sort of exports the need to check of the hash path z.sub.i.fwdarw.r by letting the TTP-SA verify the hash path r.sub.i.fwdarw.r before issuing the time-stamp S.sub.i. The connection between z.sub.i and r.sub.i (and, thus, to r.sub.i.fwdarw.r) can be verified later on if the TTP-SA pushes the hash of the modified vector {x; usedID; r.sub.i} into KSI for time-stamping.
(87) After a key generation, the signer has the sequence of OTSKs {z.sub.1 . . . z.sub.n}, that are valid for signing at times t.sub.0+i time slot of KSI. The root hash r of a Merkle tree with the leafs values r.sub.is, i=1 . . . n, where r.sub.i=H(z.sub.i) for some one-way function H, as demonstrated above. The client's certificate may include the vector: {user ID; r; t.sub.0; TTP-SA's KSI identifier}
(88) Signing of a message M at some time t=t.sub.0+i, where t.sub.0<tt.sub.0+n, may then comprise the following protocol:
(89) 1. Signer computes x=H(H(M); z.sub.i) and sends to TTP-SA the vector {i; x; userID; HP r.sub.i.fwdarw.r}, where HP indicates hash path.
(90) 2. TTP-SA picks the right certificate that matches the pair {userID; r} and checks that it has not been revoked.
(91) 3. TTP-SA checks that HP r.sub.i.fwdarw.r is correct, and that LRS of that HP is mapping to the index i.
(92) 4. TTP-SA sends the hash of {x; userID; r.sub.i} to KSI in time t=t.sub.0+i, and receives the time-stamping S.sub.i, that is AHP (aggregate HP) and CHP (calendar HP).
(93) 5. TTP-SA sends S.sub.i back to the signer.
(94) 6. The signer reveals the signature of the message M as <userID;i;z.sub.i;S.sub.i>
(95) The verification process is considered successful if:
(96) 1. H(x=H(H(M;z.sub.i); userID; r.sub.i=H(z.sub.i)) is the leaf of S.sub.i;
(97) 2. LRS of S.sub.i's AHP leads to the correct TTP-SA's KSI identifier that is bound in the signer's certificate;
(98) 3. S.sub.i's AHP and CHP lead to the correct CRH fur the time t.sub.0+i.
(99) Thus, the approach may include that the signing authority receives a proof-of-possession before starting to process the request in the hash tree, computation and issuing of signature. The proof of possession may comprise sending the OTPoK of the secret key to the TTP-SA along with the request. The TTP-SA may verify that OTPoK corresponds to the client's public key that is stored in the client's certificate. The TTP-SA may add the value of r.sub.i into the time-stamping process.
(100) A device, application or session of a client may thus be arranged to transmit a proof-of-possession to a signing authority TTP-SA before the TTP-SA starts to process a request in the hash tree, compute and issue of signature. The transmission of the proof of possession may comprise sending the OTPoK of the secret key to the TTP-SA along with the request.
(101) A server operating a signing authority function may be arranged to receive a proof-of-possession from a client, to verify whether the OTPoK corresponds to the client's public key that is stored in the client's certificate, and omit computation and issuing of a signature when the OTPoK does not correspond to the client's public key and compute and issue signature when the OTPoK corresponds to the client's public key. The TTP-SA may add the value of r.sub.i into the time-stamping process.
(102) Further Options
(103) The approach of providing one-time proof of knowledge for one-time signing keys in hash based signing schemes may benefit from further options related to the KSI context. Below, the applicability for further developments of the KSI approach and novel features thereof will be demonstrated.
(104) Deriving the OTSKs Directly Via a One-way Function
(105)
(106) We propose that instead of the hash chain z.sub.0 . . . z.sub.n, as discussed above, where z.sub.n is the secret key and z.sub.0 is the public key, the signer derives any of the OTSKs directly via a one-way function, given that all z.sub.is are bound by the root of a Merkle tree on top of the OTSKs sequence {z.sub.i}.
(107) Instead of the hash chain z.sub.0 . . . z.sub.n, the signer may derive any of the OTSKs as follows:
z.sub.i=H(z.sub.sk;f.sub.i), for i=1 . . . , n, and H is a chosen hash function.
(108) where z.sub.sk is a secret key of the signer, and f.sub.i is a function on the index i that generates different values for each i=1 . . . n. For example, this function can be as simple as fi=i, but it may be a more complex one. As an alternative, the z.sub.i:s may be generated as z.sub.i=HMAC(z.sub.sk;f.sub.i). The new scheme is shown in
(109) The signer's certificate then does not need to have z.sub.0, but it may comprise: the user's identity records, the root hash value r that combines all OTSKs, the value n that indicates the expiration time for the secret key z.sub.sk as well as determines the height of the tree, and the validation time t.sub.0, after which the certificate is valid. Since the LRS of the hash path encodes the index of z.sub.i uniquely, then this is the way to verify that z.sub.i is actually the OTSK that corresponds to the time t.sub.0+i.
(110) The root hash thus still can prove that the hash path of OTSK z.sub.i was originated from the same secret source. The LRS of the hash path from z.sub.i to r determines the time slot when the OTSK z.sub.i can be used and be verified against the returned time-stamp.
(111) The use of z.sub.sk makes it faster and/or requires less processing memory resources for the signer to derive the values z.sub.i for any i at any time without having to keep O(log(n)) intermediate hash values and spend O(log(n)) of time to derive or calculate all hash values in the hash chain from z.sub.n, z.sub.n1, . . . , etc.
(112) Since in this modification the certificate now includes the expiration time (that is equal to t.sub.0+n), and the TTP-SA also checks for the validity of the signer's certificate, then this scheme will be as secure as the one proposed in QI-KSI above, and it is more efficient.
(113) After the expiration of the key usage time, the secret key z.sub.sk can be thrown away, whereas all created signatures remain valid in time and verifiable.
(114) By this, the signing process is faster and/or requires less storage resources (Cf. M. Jakobsson and D. Coppersmith technique) for the intermediate state, or requires less processing resources (Cf. traditional approach without M. Jacobsson and D. Coppersmith technique).
(115) The above mentioned approach is also applicable for deriving other OTSK values, as will be described below.
(116) Thus, for the QI-KSI signal model, there is provided a method to process for a hash tree infrastructure at predetermined intervals presented derived values of data to obtain a root hash value referred to as time-stamps that may be published such that the presented hash values to be processed depend on previously published root hash values, and a processes to compute and deliver a signature for the data after checking by a trusted signing authority wherein the derived values are the hash or mac of the data using an one-time signing key that is computed by a message authentication function. As demonstrated above, the one-time signing key may be computed as z.sub.i=H(z.sub.sk;f.sub.i), for i=1 . . . n, where H is a one-way function, where z.sub.sk is a secret key of the signer, and f.sub.i is a function on the index i that generates different values for each i=1 . . . n. The function may be f.sub.i=i.
(117) A device, application or session of a client may thus be arranged to derive a one-time signing key z.sub.i as z.sub.i=H(z.sub.sk;f.sub.i), for i=1 . . . n, where H is a one-way function, where z.sub.sk is a secret key of the signer, and f.sub.i is a function on the index i that generates different values for each i=1 . . . n. The function may be f.sub.i=i.
(118) Sending Sequence of Signing Requests to TTP-SA Using OTSKs With Time-forwarded OTSKs Indexes
(119) This part of the disclosure relates to Time Fraction Sub-Trees in Hash Based Time Stamping Services for Faster Streaming of Requests of Services. Consider that KSI RH (root hash) is computed for each interval. Further, assume the intervals to be 1 second (but of course other interval settings are possible).
(120) An issue may be how QI-KSI, as demonstrated above, proposes to synchronize the OTSK z.sub.i with the KSI's time. In the QI-KSI solution demonstrated above, when the signer sends a signing request to the TTP-SA, the client may take a group of OTSKs, for example three consecutive signing keys z.sub.i , z.sub.i+1 and z.sub.i+2, and send 3 signing requests to the TTP-SA simultaneously. The TTP-SA then can choose one out of the given three whose i corresponds to the current KSI's time, and push it to the KSI for time-stamping in the proper time slot. Since the client may reveal OTSK z.sub.i+2 only at time t>t.sub.0+i+2, this means that the client can produce a stream of signatures with the speed of 1 signature per 3 KSI's time slots (that is 1 signature per 3 seconds, with the above discussed design of the KSI's Core Network).
(121) For the use case where the client needs to sign a stream of data messages, the QI-KSI's way to synchronize the time between the signer and KSI is not optimal. It is a desire to provide a better synchronization solution so that the client does not waste OTSK keys and can perform signatures for a stream of data, e.g. with the speed in average of 1 signing per KSI's time slot (a second).
(122) Consider that the signer is enabled to send the sequence of signing requests to the TTP-SA. using OTSKs with time-forwarded OTSKs indexes, and by this the client proposes the delay time before the actual time-stamping procedure, so that there is enough time for TIP-SA to receive the requests, prepare them and synchronize the time with KSI. In the use case where one needs to produce a stream of signatures, this synchronization scheme, as will be demonstrated in further detail below, utilizes the KSI resources (in particular, KSI's time slots) efficiently, which makes the signing speed to converge to 1 signature per one KSI time slot, in average.
(123) Assume that the possible resynchronization time between the signer's and KSI's clocks can be at most seconds (for instance, let be 5 seconds), including possible delays in communication between the signer and the TTP-SA. When the signer sends a signing request at his local time t.sub.sig, he actually may use the time-forwarded OTSK with the index t.sub.sigt.sub.0+, prepare and send a signing request to the TTP-SA.
(124) The TTP-SA may have a local queue with incoming signing requests that are already checked for the client's certificate and are waiting for being entered to KSI at the right time for time-stamping. When the KSI time becomes aligned with the time of the first request in the queue, i.e., when the KSI's time becomes t.sub.sig+1, the TTP-SA pushes the corresponding hash value to the KSI infrastructure and receives the right time stamping.
(125) Thus, the client reveals the stream of signatures with the delay of seconds. In the use case of a stream of signatures, the performance may then converge to the speed 1 signature per KSI time slot.
(126) Note that in the above the clocking is described as being 1 second. However it is readily understood that it is equally applicable to other clocking interval settings.
(127) A trusted signing authority applying a hash tree signing system may have a local queue that comprises signing requests that use a time-forward OTSK that are already verified and which start further processing when the time with the hash tree system gets aligned. The OTSK may be determined by having the index t.sub.sigt.sub.0+.
(128) The sending of the sequence of signing requests to TTP-SA using OTSKs with time-forwarded OTSKs indexes benefits from being combined with the approach for deriving the OTSKs directly via a one-way function, and may also benefit from the approach for one-time proof of knowledge for one-time signing keys in hash based signing schemes, as well as with an approach comprising a combination of them.
(129) A device, application or session of a client may thus be arranged to transmit signing requests to a signing authority with time-forwarded OTSKs indexes.
(130) A server operating a signing authority function may be arranged to receive signing requests with time-forwarded OTSKs indexes, store them in a queue, and when the KSI time becomes aligned with the time of a request in the queue to push the corresponding hash value to a KSI infrastructure and receive the right time stamping. Any calculations may be pre-calculated for the requests of the queue.
(131) Time Fraction Sub-Trees in Hash Based Time Stamping Services for a Faster Streaming of Requests of Services
(132) Consider that KSI RH (root hash) is computed for each interval. Further, assume the intervals to be 1 second (but of course other interval settings are possible). As it was also mentioned in the section discussing synchronization with KSI above, the synchronization that is proposed in QI-KSI makes it possible to the client to make 1 signing per 3 seconds (3 KSI's time slots). However, in a use case when the client needs to sign a stream of data, this might be a performance bottleneck.
(133) The solution demonstrated above has mainly been discussed in view of a general case where an external service (KSI's time stamping, TTP SA service, other external modules that can, but not necessarily, be hash-based) is available once per a time slot (like in KSI, the service is available once per second). However, in the solution demonstrated below, the technique is demonstrated based on the example of the QI-KSI signing scheme for the sake of easier understanding for the reader.
(134) By extending the global KSI tree with a time fraction Merkle sub-tree on the TTP-SA node it is possible for one or more clients/gateways to perform signing for a stream of data items with the average speed faster than the speed of producing time stamps with KSI, i.e. faster than demonstrated with reference to the disclosure of sending sequence of signing requests to TTP-SA using OTSKs with time-forwarded OTSKs indexes above. It is to be noted that the approach demonstrated below may be combined with time-forwarded OTSKs indexes as demonstrated above for efficient provision of OTSK keys, e.g. for performing signatures for a stream of data.
(135) The approach makes it possible for the client to have only one hash chain of OTSKs, where each one-time signing key corresponds to its own fraction of a second. That sub-tree will serve as a KSI's time slot splitter of a time slot into smaller time fractions.
(136)
(137) OTSKs of clients thus may be modified in such a way that now the client may create K sets of OTSKs. One set corresponds to and is used within one certain fraction of a second.
(138) For example, if the TTP-SA's time-splitting sub-tree has 4 leafs, then TTP-SA is capable to perform 4 signatures per second, instead of 1 as of the original QI-KSI. The client generates 4 hash chains from 4 secret keys z.sub.n.sup.(0) . . . z.sub.n.sup.(3) and uses the OTSKs produced by z.sub.n.sup.(k) in the signing times t=t.sub.0+i+k/4 seconds, for i=1 . . . n, k=0 . . . 3 (for the example of K=4; K may be selected arbitrarily to achieve desired granularity).
(139) For each fraction of a second the TTP-SA returns, as the result of signing request, the same S.sub.i, but adds the hash path of the TTP-SA's time fraction sub-tree that is also included by the signer into the final signature.
(140) The verifier may apply: the LRS of AHP as the identifier for TTP-SA; the LRS of CHP to identify the time in seconds when the time-stamp was created; the LRS of the HP of the TTP-SA's time fraction sub-tree to identify the fraction of the second when the time stamp was created.
(141) Note that AHP and CHP parts of S.sub.i will be the same for all K signing requests within the same time slot. However, the HP of the time fraction tree will be different. Also note that since TTP-SA enters K hash values to the leafs of the time-fraction tree's HP, the signer or anyone else cannot ignore that HP since then the signature becomes invalid and non-verifiable.
(142) For synchronization purposes, the signer may still use the idea from the QI-KSI design demonstrated above, where for every fraction slot k=0 . . . K1, the signer uses 3 consecutive OTSKs z.sub.i.sup.(k), z.sub.i+1.sup.(k), z.sub.i+2.sup.(k). In this case, the average signing speed is 1 signature per 3/K seconds.
(143) A device, application or session of a client may thus be arranged to sign for a stream of data items by a time fraction tree splitting a time slot of a time stamping infrastructure into time fractions.
(144) A server operating a signing authority function may be arranged to receive multiple signing requests of a time slot of a time stamping infrastructure by a time fraction tree splitting the time slot of the time stamping infrastructure into time fractions.
(145) As indicated above, the approach of the fraction tree may be combined with the approach of delayed requests.
(146) The TTP-SA server collects signing requests, verifies the client's certificate, and allocates the prepared hashes for the delayed collective time-stamping (with KSI) into a sorted (by time) queue. TTP-SA will push the top of the time fraction sub-tree to KSI infrastructure for time-stamping at a proper time. The hash root of the fraction tree can also be prepared by TTP-SA during the given delay . Thus, the queue of TTP-SA may be just a queue of hash values waiting for their turns to be time stamped.
(147) This way, TTP-SA has some time delay during which it can check the request itself (and the certificate), prepare the time fraction sub tree, calculate the root hash of that sub tree, and wait for the correct KSI's time to occur, in order to push the pre-computed hash into KSI for time stamping.
(148) Another solution could be that the possibility for a signer to add a signing request at a fraction of a KSI's time slot t closes shortly before the time t, such that TTP-SA would still have enough time to prepare the root hash of the time fraction tree before its root hash is to be pushed for KSI time-stamping at time t.
(149) The server returns S.sub.is together with the hash paths of its own sub-tree when the signing job for the group of requests is done, and continues to proceed with the next group of signing requests, taken from the local queue, checked and prepared in advance for the next second of the KSI's time slot.
(150) Thus, the client can publish the received stream of signatures with the time delay , and the average speed 1 signature per 1/K second utilizing OTSKs efficiently.
(151) A time stamp service provider applying a hash tree signing system of a hash-tree time-stamping part and a trusted signing authority (TTP-SA) may operate on given intervals for the TTP-SA, and there may be provided a time fraction sub-tree for splitting each interval into K fractions. The signer may create only one OTSK hash chain, where z.sub.k corresponds to the time (t.sub.0+(k div K)).sup.th time interval, e.g. second, and (k mod K).sup.th fraction of the interval.
(152) A device, application or session of a client may thus be arranged to sign for a stream of data items by a time fraction tree splitting a time slot of a time stamping infrastructure into time fractions, and be arranged to transmit signing requests to a signing authority with time-forwarded OTSKs indexes.
(153) A server operating a signing authority function may be arranged to receive multiple signing requests of a time slot of a time stamping infrastructure by a time fraction tree splitting the time slot of the time stamping infrastructure into time fractions, wherein the signing requests comprises time-forwarded OTSKs indexes, and the server is arranged to store them in a queue, and when the KSI time becomes aligned with the time of a request in the queue to push the corresponding hash value to a KSI infrastructure and receive the right time stamping. Any calculations may be pre-calculated for the requests of the queue.
(154) A server operating a signing authority function may be arranged to receive signing requests to a signing authority with time-forwarded OTSKs indexes, store them in a queue, and when the KSI time becomes aligned with the time of a request in the queue to push the corresponding hash value to a KSI infrastructure and receive the right time stamping. Any calculations may be pre-calculated for the requests of the queue.
(155) Methods and Implementations
(156)
(157) The method comprises computing 102 a hash as a hash function from the one-time signing key, which may be obtained according to any of the ways demonstrated above. For example, the deriving 101 of one-time signing keys of signer's one-time signing key hash chain may be made by a one-way function of a secret key of the signer and a function of an index of the one-time signing key, wherein the computing 102 of the hash uses the one-time signing key associated with and index corresponding to an actual time slot. As also demonstrated above, there may be applied a time fraction hash tree splitting a time slot corresponding to the index into time fractions such that the time slot is divided into fractions according to the number of leafs of the time fraction hash tree. The method further comprises transmitting 104 the computed hash, an identity associated with the electronic device and a hash path of the hash to a server. The corresponding method applied at the server will be demonstrated below with reference to
(158) The computing 102 of the hash function may be made from a piece of data and the one-time signing key, and the transmitting 104 may then comprise a message to the server comprising an index of the one-time signing key, the computed hash, an identity associated with the electronic device and a hash path of the hash to a root hash. The method optionally comprises receiving 105 a time stamp from the server, wherein the signer is enabled to reveal a signature of the piece of data including the identity, the index of the one-time signing key, the signing key and the time stamp for enabling verification of the time stamp for the piece of data.
(159) The method optionally comprises sending 107 a signing request to the signing authority for a plurality of pieces of data, wherein each piece of data is assigned a respective index consecutively by using one-time signing keys with time-forwarded one-time signing key indexes, as demonstrated above.
(160)
(161) The method comprises receiving 200 a message from an electronic device. The message includes a hash, an identity associated with the electronic device and a hash path of the hash. The server checks 202 whether the hash corresponds to a one-time signing key for a root hash included in a public certificate associated with the identity. If there is no correspondence, e.g. due to a fraudulent attempt, the procedure ends 208. The server further, if there is correspondence, checks 204 whether an index corresponding to the hash path from the one-time signing key to the root hash corresponds to a correct time slot. If there is no correspondence, the procedure ends 208. The server determines 206, if there is correspondence, it to be proven that the electronic device is in possession of the correct one-time signing key. That is, when the checks are fulfilled, the server has ascertained that the one-time signing key was in possession of the electronic device and may accomplish one or more actions based on that.
(162) For example, the server may provide 207 a time stamp for a piece of data to the electronic device. This provision 207 may for example include receiving a message from an electronic device, the message including a first hash, the identity associated with the electronic device and a hash path of the first hash, accessing a certificate matching the identity and a root hash for the first hash, checking validity of the certificate and verifying whether the hash path for the first hash is correct. If the certificate is not valid or the hash path cannot be verified to be correct, the server omits further actions. If the certificate is valid and the hash path can be verified to be correct, the server may perform transmission of a second hash formed from at least the first hash and the identity to a server of a time stamp service infrastructure entity, receive, from the server of a time stamp service infrastructure entity, a time stamp comprising an aggregate hash path and a calendar hash path, and transmit the time stamp to the electronic device. Such a time stamp may be verified 209, e.g. later on when the presence of the data at a specific time may be of interest or is challenged. The verification 209 of the time stamp for the piece of data may be made by determining whether a hash of the message is a leaf of the time stamp hash tree, determining whether the aggregate hash path corresponds to the correct identifier of the server to the server of the time stamp service infrastructure entity, and determining whether the aggregate hash path and calendar hash path correspond to a correct calendar root hash for a time corresponding to the index.
(163)
(164) Network 320 may comprise one or more of IP networks, public switched telephone networks (PSTNs), packet data networks, optical networks, wide area networks (WANs), local area networks (LANs), wireless local area networks (WLANs), wired networks, wireless networks, metropolitan area networks, and other networks to enable communication between devices.
(165) Network node 300 comprises processor 302, storage 303, interface 301, and antenna 301a. These components are depicted as single boxes located within a single larger box. In practice however, a network node may comprises multiple different physical components that make up a single illustrated component (e.g., interface 301 may comprise terminals for coupling wires for a wired connection and a radio transceiver for a wireless connection). Similarly, network node 300 may be composed of multiple physically separate components (e.g., a NodeB component and a RNC component, a BTS component and a BSC component, etc.), which may each have their own respective processor, storage, and interface components. In certain scenarios in which network node 300 comprises multiple separate components (e.g., BTS and BSC components), one or more of the separate components may be shared among several network nodes. For example, a single RNC may control multiple NodeB's. In such a scenario, each unique NodeB and BSC pair, may be a separate network node. In some embodiments, network node 300 may be configured to support multiple radio access technologies (RATs). In such embodiments, some components may be duplicated (e.g., separate storage 303 for the different RATs) and some components may be reused (e.g., the same antenna 301a may be shared by the RATs).
(166) Processor 302 may be a combination of one or more of a microprocessor, controller, microcontroller, central processing unit, digital signal processor, application specific integrated circuit, field programmable gate array, or any other suitable computing device, resource, or combination of hardware, software and/or encoded logic operable to provide, either alone or in conjunction with other network node 300 components, such as storage 303, network node 300 functionality. For example, processor 302 may execute instructions stored in storage 303. Such functionality may include providing various wireless features discussed herein to a wireless devices, such as WD 310, including any of the features or benefits disclosed herein.
(167) Storage 303 may comprise any form of volatile or non-volatile computer readable memory including, without limitation, persistent storage, solid state memory, remotely mounted memory, magnetic media, optical media, random access memory (RAM), read-only memory (ROPvI), removable media, or any other suitable local or remote memory component. Storage 303 may store any suitable instructions, data or information, including software and encoded logic, utilized by network node 300. Storage 303 may be used to store any calculations made by processor 302 and/or any data received via interface 301.
(168) Network node 300 also comprises interface 301 which may be used in the wired or wireless communication of signalling and/or data between network node 300, network 320, and/or WD 310. For example, interface 301 may perform any formatting, coding, or translating that may be needed to allow network node 300 to send and receive data from network 320 over a wired connection. Interface 301 may also include a radio transmitter and/or receiver that may be coupled to or a part of antenna 301a. The radio may receive digital data that is to be sent out to other network nodes or WDs via a wireless connection. The radio may convert the digital data into a radio signal having the appropriate channel and bandwidth parameters. The radio signal may then be transmitted via antenna 301a to the appropriate recipient (e.g., WD 310).
(169) Antenna 301a may be any type of antenna capable of transmitting and receiving data and/or signals wirelessly. In some embodiments, antenna 301a may comprise one or more omni-directional, sector or panel antennas operable to transmit/receive radio signals between, for example, 2 GHz and 66 GHz. An omni-directional antenna may be used to transmit/receive radio signals in any direction, a sector antenna may be used to transmit/receive radio signals from devices within a particular area, and a panel antenna may be a line of sight antenna used to transmit/receive radio signals in a relatively straight line.
(170) WD 310 may be any type of wireless endpoint, mobile station, mobile phone, wireless local loop phone, smartphone, user equipment, desktop computer, PDA, cell phone, tablet, laptop, VoIP phone or handset, which is able to wirelessly send and receive data and/or signals to and from a network node, such as network node 300 and/or other WDs. WD 310 comprises processor 312, storage 313, interface 311, and antenna 311a. Like network node 300, the components of WD 310 are depicted as single boxes located within a single larger box, however in practice a wireless device may comprises multiple different physical components that make up a single illustrated component (e.g., storage 313 may comprise multiple discrete microchips, each microchip representing a portion of the total storage capacity).
(171) Processor 312 may be a combination of one or more of a microprocessor, controller, microcontroller, central processing unit, digital signal processor, application specific integrated circuit, field programmable gate array, or any other suitable computing device, resource, or combination of hardware, software and/or encoded logic operable to provide, either alone or in combination with other WD 310 components, such as storage 313, WD 310 functionality. Such functionality may include providing various wireless features discussed herein, including any of the features or benefits disclosed herein.
(172) Storage 313 may be any form of volatile or non-volatile memory including, without limitation, persistent storage, solid state memory, remotely mounted memory, magnetic media, optical media, random access memory (RAM), read-only memory (ROM), removable media, or any other suitable local or remote memory component. Storage 313 may store any suitable data, instructions, or information, including software and encoded logic, utilized by WD 310. Storage 313 may be used to store any calculations made by processor 312 and/or any data received via interface 311.
(173) Interface 311 may be used in the wireless communication of signalling and/or data between WD 310 and network node 300. For example, interface 311 may perform any formatting, coding, or translating that may be needed to allow WD 310 to send and receive data from network node 300 over a wireless connection. Interface 311 may also include a radio transmitter and/or receiver that may be coupled to or a part of antenna 311a. The radio may receive digital data that is to be sent out to network node 301 via a wireless connection. The radio may convert the digital data into a radio signal having the appropriate channel and bandwidth parameters. The radio signal may then be transmitted via antenna 311a to network node 300.
(174) Antenna 311a may be any type of antenna capable of transmitting and receiving data and/or signals wirelessly. In some embodiments, antenna 311a may comprise one or more omni-directional, sector or panel antennas operable to transmit/receive radio signals between 2 GHz and 66 GHz. For simplicity, antenna 311a may be considered a part of interface 311 to the extent that a wireless signal is being used.
(175) In some embodiments, the components described above may be used to implement one or more functional modules used in a collision-blocking method for hash tree based time stamping. The functional modules may comprise software, computer programs, sub-routines, libraries, source code, or any other form of executable instructions that are run by, for example, a processor. In general terms, each functional module may be implemented in hardware and/or in software. Preferably, one or more or all functional modules may be implemented by processors 312 and/or 302, possibly in cooperation with storage 313 and/or 303. Processors 312 and/or 302 and storage 313 and/or 303 may thus be arranged to allow processors 312 and/or 302 to fetch instructions from storage 313 and/or 303 and execute the fetched instructions to allow the respective functional module to perform any features or functions disclosed herein. The modules may further be configured to perform other functions or steps not explicitly described herein but which would be within the knowledge of a person skilled in the art.
(176) The methods according to the present invention is suitable for implementation with aid of processing means, such as computers and/or processors, especially for the case where the processing element 302, 312 demonstrated above comprises a processor handling security functions. Therefore, there is provided computer programs, comprising instructions arranged to cause the processing means, processor, or computer to perform the steps of any of the methods according to any of the embodiments described above and those roughly summarized with reference to