This disclosure relates to systems, methods, and computer-readable media for shortening of digital signatures in comparison to other signatures (e.g., Elliptic Curve Digital Signature Algorithm (EC-DSA) digital signatures).
Digital signatures provide the ability to secure communications by ascertaining that a message comes from a specific signer. Digital signatures ascertain that no tampering of the message has occurred after the message has been signed. To do so, a digital signature should be producible only by the signer while being verifiable by all without the knowledge of any secret information of the sender. Digital signature protocols can be divided in two phases: the signature phase and the verification phase, during which a signature can be publicly verified. Progress in technologies related to non-volatile storage capacity of information, security, and circuit technology (for example the advent of cryptographic coprocessors) has resulted in the rapid emergence of the new American Digital Signature Standard (DSS) using one or more digital signature algorithms (DSAs).
The Digital Signature Standard was proposed by the U.S. National Institute of Standards and Technology to provide an appropriate basis for applications requiring digital signatures. A standard digital signature is a pair of large numbers represented in a computer by strings of binary digits. The digital signature is computed with the aid of a series of computational rules (the DSA) and a set of parameters in such a way as to make it possible to certify both the identity of the signatory and the integrity of the data. The standard makes it possible to generate and verify signatures using a framework of public-key cryptosystems to improve the security of generated digital signatures.
In the past there has been attempts to shorten digital signatures by truncation. Those techniques, different from the ones described herein are cited for reference hereafter:
The present embodiments relate to systems, methods, and computer-readable media for shortening of digital signatures in comparison to other signatures (e.g., Elliptic Curve Digital Signature Algorithm (EC-DSA) digital signatures). The compression of the signature can be generated using computational operations performed by either of a signing node (e.g., a computing device producing the digital signature) and/or a verifying node (e.g., a computing device verifying the digital signature). The present embodiment can reduce the length of a digital signature and significantly enhance the identification of devices (e.g., IoT devices) within a network. The present embodiments provide methods that can significantly shorten EC-DSA signatures. The compression comes at a computational cost by the signer and the verifier. The present embodiment can also seek to minimize the space required to store a unique serial number and its signature.
In a first example embodiment, a method for generating a digital signature with a reduced number of bits is provided. The digital signature can be generated with a number of bits (or bytes) less than that of an initial bit length of another digital signature (e.g., a bit length of standard on EC-DSA signatures).
The embodiments can also include sharing, between a signing node (SIG) and a verifying node (VER), a message (M) in which the SIG is to issue a digital signature(S). The method can also include performing, by the SIG, a first number of operations to generate the digital signature S featuring a redundancy (P).
The embodiments can also include generating, by the SIG, a shortened digital signature of S: (S′). Transforming S to S′ can include omitting the redundancy. The embodiments can also include transmitting, by the SIG to the VER, the shortened digital signature S′. The verifying node VER can be configured to perform a second number of operations to recover the redundancy P and generate the digital signature S from the shortened digital signature S′. The embodiments can also include verifying, by the verifying node VER, the digital signature S with respect to the message M.
In some instances, the redundancy P is a bit-string of the form P=X|X where X represents any L-bit pattern and X|X stands for the concatenation of X to itself.
In some instances, performing the first number of operations to generate the digital signature further includes searching, by the SIG, a digital signature featuring said redundancy P by re-signing the message M using a randomized digital signature algorithm until a redundancy P appears in the digital signature S.
In some instances, performing the first number of operations to generate the digital signature further includes solving, by the SIG, a mathematical equation involving at least M and the private signature key of SIG to generate the S featuring the redundancy P.
In some instances, the VER is configured to recover the redundancy P to complete S′ and subsequently generate S by searching through (e.g. exhaustively searching through all possible) bit values until the S value complying with the redundancy P is found. The S value can be confirmed by a successful cryptographic verification of S.
In some instances, VER is configured to recover the redundancy P to complete S′ and subsequently generate S by solving a mathematical equation involving the message M and a public verification key of the SIG.
In some instances, the mathematical equation includes a modified version of an elliptic curve digital signature algorithm (EC-DSA) algorithm. Public parameters of the SIG can include an elliptic curve E and a prime p, as well as a generator G chosen randomly in E of some order q. A private key of the SIG can include a number x chosen randomly between 1 and q−1 and the public verification key of the SIG is Y=x·G.
In some instances, the modified EC-DSA algorithm is characterized by a signature generation and verification process comprising forming, by the SIG, a signature {s,R} where R=k·G and s−(M+(x+a)r)/k mod q, where r is any public bijective encoding of R, wherein a is a number of size 2L bits generated so that s has a size (log2(q))−2L bits for the SIG to sign the message M. Verification of the signature {s,R} can include the VER recomputing r from R using said bijective encoding and checking that there exists an a of a relatively moderate size such that a·G=(s/r)·R−(m/r)·G−Y.
In some instances, the forming of the signature in the modified version of the EC-DSA algorithm further includes generating a and s by using a Lenstra-Lenstra-Lovasz (LLL) algorithm to solve an equation sk=M+(x+a)r mod q for the unknowns s and a, imposing to the LLL algorithm that the relative sizes of s and a are respectively (log2(q))−2L and 2L.
In some instances, the forming of the signature in the modified version of the EC-DSA algorithm further includes computing a discrete logarithm of a quantity (s/r) R−(m/r)·G−Y with respect to G over the elliptic curve E.
In some instances, the parameter L is comprised between 8 and 80.
In another example embodiment, a system is provided. The system can include a signing node comprising one or more processors and a memory comprising instructions which, when executed by the one or more processors, cause the one or more processors to perform operations. The embodiments can also include performing several operations to generate a random number resulting in a digital signature S of a message M. The digital signature S can include a redundancy P. The embodiments can also include omitting the redundancy P from S to generate a shortened signature S′. The embodiments can also include transmitting M and S′ from the signing node to a verifying node.
In some instances, redundancy P is any bit pattern X of size L repeated twice at an end of S, with the digital signature comprising S=S′|X|X where S′ is of any form.
In some instances, redundancy P is any bit pattern X of size L repeated twice at a beginning of S, with the digital signature comprising S=X|X|S′ where S′ is of any form.
In some instances, redundancy P is any bit pattern X of size L repeated once at a beginning of S and one at an end of S, with the digital signature comprising S=X|S′|X where S′ is of any form.
In some instances, the redundancy on the X values appearing in S is replaced by f(X), where f is any bijective function.
In some instances, performing several operations to generate the digital signature S of a message M includes using a modified version of an elliptic curve digital signature algorithm (EC-DSA) algorithm. Public parameters of the signing node can include an elliptic curve E and a prime p, as well as a generator G chosen randomly in E of some order q. A private key of the signing node can include a number x chosen randomly between 1 and q−1 and a public key of the signing node is Y=x·G.
In some instances, the modified version of the EC-DSA algorithm is characterized by the following signature generation and signature verification processes that can include forming, by the signing node, signature {s,R} where R=k·G and s=(M+(x+a)r)/k mod q, where r is any public bijective encoding of R, and wherein a is a number of size 2L bits generated so that s has a size (log2(q))−2L bits. A verifying node can be configured to verify the signature {s,R} by recomputing r from R using bijective encoding and checking that there exists an a of a relatively moderate size such that a·G=(s/r)·R−(M/r)·G−Y.
In some instances, generating a and s is achieved by using a Lenstra-Lenstra-Lovasz (LLL) algorithm to solve equation sk=M+(x+a)r mod q for unknowns s and a, imposing to the LLL algorithm that relative sizes of s and a are respectively (log2(q))−2L and 2L.
In some instances, verifying the signature is achieved by computing a discrete logarithm of the quantity (s/r) R−(M/r)·G−Y with respect to the G over the elliptic curve E.
In some instances, the digital signature is used as authenticated identity numbers to uniquely identify digital or physical objects by the signing node, wherein M is set to a public constant which is signed multiple times to produce multiple authenticated identity numbers.
In some instances, the digital objects are Internet of Things serial numbers used to pair objects within a network.
In some instances, the digital objects are transaction vouchers allowing users to benefit from an on-line service or digital coins having any given value.
In some instances, the physical objects are banknotes, identity documents, and/or keys allowing access to premises.
In some instances, the message M is replaced by a hash value m of the message being signed.
This Summary is provided to summarize some example embodiments, so as to provide a basic understanding of some aspects of the subject matter described in this document. Accordingly, it will be appreciated that the features described in this Summary are merely examples and should not be construed to narrow the scope or spirit of the subject matter described herein in any way. Unless otherwise stated, features described in the context of one example may be combined or used with features described in the context of one or more other examples. Other features, aspects, and advantages of the subject matter described herein will become apparent from the following Detailed Description, Figures, and Claims.
The above and other aspects of the disclosure, its nature, and various features will become more apparent upon consideration of the following detailed description, taken in conjunction with the accompanying drawings, in which like reference characters may refer to like parts throughout, and in which:
The present disclosure generally relates to systems and methods allowing to significantly shorten digital signatures in comparison to other signatures (e.g., Elliptic Curve Digital Signature Algorithm (EC-DSA) digital signatures). While the techniques described herein can be applied to EC-DSA, the present disclosure is not limited to such techniques.
The compressed digital signature can be generated using computational operations performed by any of a signing node (e.g., a computing device producing the digital signature) and/or a verifying node (e.g., a computing device verifying the digital signature). As an illustrative example, the signing node and the verifying node can perform a workload of 2L operations (either one time or two times in a session), where L can include a parameter governing the shortening of the digital signatures as described herein.
The present example embodiments can reduce the length of a digital signature and significantly enhance the identification of devices (e.g., IoT devices) within a network. The present example embodiments can also provide methods allowing the shortening of EC-DSA signatures, where the compression comes at a computational cost by the signing node and/or the verifying node. The present example embodiments can also seek to minimize the space required to store a unique serial number and its signature. For example, the embodiments can allow pairing of IoT devices by typing a minimal length sequence of digits when doing so.
A digital signature can be generated to uniquely identify the signer of the message. The process for generating signatures makes use of a private key to produce a digital signature. The verification process uses a public key corresponding to the secret key. Each user possesses a pair of keys (public, secret). The public keys can be known to everyone, and the secret keys are kept secret. Any entity can have the capacity to verify the signature using the public key of the sender, but signatures cannot be generated other than by using the secret key of the sender. The parameters of the DSA algorithm are:
The integers p, q, and g can include parameters of the system which may be published and/or shared by a group of users/devices. The secret and public keys of a signatory are x and y, respectively. The parameters x and k are used for the generation of the signature and are kept secret. The parameter k can be regenerated for each signature.
In order to sign a message m (hash value of an initial file M), the signatory computes the signature {r, s} by:
The division by k can include modulo q (i.e. 1/k is the number k′ such that k k′=1 mod q).
For example, if q=5 and k=3 then 1/k=2, since 3×2=6−1 mod 5.
After having tested that r≠0≠s, as explained in the description of the DSA, the signature {r,s} is sent to the verifier which computes:
While some examples relate to an integrated-circuit card, it can be understood that the example could relate to any portable apparatus possessing a microprocessor, a communication interface and storage.
The flash memory 15 contains the parameters p, q, g, and x. The CPU 11 controls, via the address and data buses 16, the communication interface 10, the memory read and write operations 13, 14 and 15. Each integrated circuit card is protected from the outside world by physical protections 17. These protections can be sufficient to prevent any unauthorized entity from obtaining the secret key x.
As described above, a digital signature can allow for secure communications by allowing verification that a message was originated from a specific signer. Digital signatures ascertain that no tampering of the message has occurred after the message has been signed. To do so, a digital signature may be producible only by the signer while being verifiable by all without the knowledge of any secret information of the sender.
Digital signature protocols can be divided into two phases: the signature phase and the verification phase, during which a signature can be publicly verified. For instance, the signature phase can include generating a digital signature by a signing node. Further, the verification phase can include a verifying node verifying the digital signature after transmission of the signature by the signing node.
The digital signatures as described herein can include any of a digital signature algorithm (DSA) signature or an Elliptic Curve Digital Signature Algorithm (EC-DSA) signature. An EC-DSA signature can include public parameters elliptic curve E and prime p. EC-DSA uses a generator G∈E of order q as a system parameter. The private key of the signing node can be x ∈R Zq and the public key is Y=xG. The signature {s, R} is composed of two parts: R←kG and s←(m+xr)/k mod q.
The value k is a random number, renewed at each signature and x can include the secret key of the signer. The value M can include the Secure Hash Algorithm (SHA) digest of the message to be signed. Here, r can include a digest of R. In many cases, in EC-DSA (unlike DSA) the order of a curve modulo p can be bounded by Hasse's theorem, namely if q is the number of points on E over Zp, then: |q−(p+1)|≤2√p
In such examples, a value p can be selected such that q>p. In this example, the value r may not need to be the digest of R but actually encodes all the information contained in R.
To verify the signature, a verifying node performs a number of operations to check that:
Further, an algorithm for solving a discrete logarithm problem (e.g., Pollard's Kangaroo Algorithm described in Pollard, John “Kangaroos, Monopoly and Discrete Logarithms”, Journal of Cryptology, volume 12, pages 437-447, 2000), which also can be called the λ algorithm, can be utilized. Given y=βα mod p and β, the algorithm can find a in a complexity of O(√α). This algorithm can hereby be denoted by a←λ(y, β, p).
Further, lattice basis reduction algorithm (e.g., Lenstra-Lenstra-a Lovász (LLL) lattice basis reduction algorithm as described in the publication Lenstra, Arjen K. and Lenstra Jr., Hendrik W. and Lovász, László, “Factoring Polynomials with Rational Coefficients”, Mathematische Annalen, volume 261, number 4, pages 515-534, 1982, Springer) can be used to distribute modular information.
Let x1, . . . , xK∈N* be k unknowns. Let p∈N be a modulus and a0, . . . , ak∈N such that a0=a1 x1+a2 x2+ . . . +ak xk mod p.
The LLL algorithm can find x1, . . . , xk if x1×x2× . . . ×xk<p
In particular, the LLL algorithm can be adapted to provide any uneven split of sizes between the xi as long as p does not exceed the sum of those sizes. For instance, it is possible to spread the information in the modular equation y+Ax+B=0 mod n by finding a solution x, y where one of the knowns can be of size (log2 n)−Δ bits and the other is Δ bits long and information can be, as an example, spread according to an 80%-20% ratio.
Such digital signature generation and verification can be deployed in various contexts (e.g., an IoT context) and can be beneficial to keep the signature sizes small (as those can be printed on QR codes). Further, internet of things (IoT) networks commonly include a central entity where most of the computational capabilities reside, and end devices which are resource-constrained in memory, processing power, and battery capacity. Although the central entity of an IoT network may bear heavier computation costs, it may not be the case for end devices. Thus, it is beneficial to develop lightweight security solutions which can still ensure a sufficient level of protection.
In the case of digital signatures in an IoT context, it can be desirable to shorten the size of digital signatures to efficiently use data processing and data transmission resources when communicating between IoT devices. Further, it can be desirable to generate secured serial numbers for devices that are as short as possible. The present example embodiments set out to solve the above-mentioned objectives.
In the present example embodiments, a first component can be provided as part of the digital signature to shorten a digital signature by 2L bits. Further, a combination of the first components with a second component can reduce the saved length to L bits but can allow shortening by a further 2L, resulting in a total final saving of 2L−L+2L=3L using the second component. For example, L can be around 40 bits.
The signer can generate 2L elements r and can stop when a specific r is found. The form of the r value can be r′|X|X where X is any L bit string and r′ has any form. Because there can be 2L possible X values, in 2L operations, an r value meeting such a form can be found. In some cases, if only the r′ value is transmitted to the verifier, the verifier can, using 2L operations, retrieve X and verify the signature. Such steps can give the possibility to shorten a signature by 2L bits at the cost of 2L operations performed by both a signing node and a verifying node.
The signing node 202 can include a digital signature generation system 206. The digital signature generation system 206 can generate a digital signature as described herein. For instance, the digital signature generation system 206 can generate a digital signature with an r shortened by 2L bits using a search (e.g. an exhaustive search). Further, the digital signature generation system 206 can find an r in the form of a value r=r′|X|X. In another example, the digital signature generation system 206 can shorten r by L bits using a search (e.g. an exhaustive search) and shorten s by 2L bits using an LLL algorithm. In another example, the digital signature generation system 206 can generate self-authenticated serial numbers for the signing device 202.
The verifying node 204 can include a digital signature verification system 208 for verifying the digital signature as described herein. For example, the digital signature verification system 208 can perform a number of operations to exhaust X where the verifying node 204 understands r of the digital signature in the form of a value r=r′|X|X. The digital signature verification system 208 can further verify the signature using techniques as described herein. In another example, the digital signature verification system 208 can find a part “a” using Pollard's algorithm and verify the signature using a modified equation.
The signing node 202 and verifying node 204 can also include a storage system 210A-B and communication system 212A-B. The storage systems 210A-B can store various sources of data, such as private keys, public keys, message content, etc. The communication systems 212A-B can facilitate wired and/or wireless communication between devices (e.g., signing node 202 and verifying node 204) using one or more communication techniques.
With a first example embodiment, it can be assumed that the signer and the verifier can perform a workload of 2L operations (once or twice in a session), and L can be the parameter governing the shortening of the signatures obtained as described herein.
A DSA signature can have two parts in it: r and s. The part r may not depend on the signed message but includes a random k generated by the signer. On the other hand, s uses the signed message M. The idea can be to shorten r by changing k (by the signer) until r has the form r′|X|X, where X can be some L-bit pattern. This can require 2L operations. Instead of transmitting r, the device can transmit r′ which can be 2L bits shorter.
Upon reception, the verifier can retrieve X by trying all 2L possible values of X. Hence all in all by performing 2L operations at both ends, around 2L storage bits can be saved.
At 306, the signing node 302 can shorten r by 2L bits by a search (e.g. exhaustive search). L can include a parameter governing the shortening of signatures. For example, an initial length of a digital signature can include a specific bit length, and the r part of the digital signature can be shortened by 2L bits, or 2L bits less than the original length of the digital signature.
At 308, the signing node 302 can find r in the form of r′|X|X. The part of the signature r can be shortened by the signing node 302 by changing a value (e.g., k) until r has the form of r′|X|X, wherein X is an L-bit pattern.
At 310, the signing node 302 can generate a digital signature that includes the shortened part r′. The digital signature 312 (along with a message body) can be sent from the signing node 302 to the verifying node 304. At 314, the verifying node 304 can obtain the digital signature with the modified digital signature.
At 316, the verifying node 404 can perform a number of operations to find X. This can include performing operations to try 2L possible values of X. At 318, the verifying node 304 can verify the digital signature using X.
In some instances, as part of linearization, the digital signature's definition can be modified to the following: R←k·G and s←(m+(x+α)r)/k mod q. To check such a signature the verification equation becomes:
In some instances, α is not given and may need to be determined in order to check the signature. To that end the λ algorithm can be used to solve:
The purpose of α is to shorten s, a short s can be generated using LLL. To do so, when computing:
The LLL algorithm can be used to generate an α of size 2L and an s of size |q|−2L. When the signature is received, the verifier can run the λ algorithm and check that an α of a relatively moderate size indeed exists. If the signer spends 2L effort on generating a short r and the prover spends an effort of 2L on the λ algorithm, then 3L bits can be saved.
Another example embodiment can be to shorten r by changing k (by the signer) until r has the form r′|0. This can require 2L operations. Instead of transmitting r, r′ can be transmitted, which can be L bits shorter.
With signature part s, the idea can be to modify the signature generation formula for s from sk=m+xr to sk=m+(x+a)r. With all parameters fixed except for a and s, an equation of the type sk=C+ar can be used.
The LLL algorithm can be used to find an (s, a) couple that satisfies the above equation with s that can be 2L bits shorter and a part a of size of 2L bits. In sum, the result can be to get an r shortened by L bits and an s shortened by 2L bits. The signature can therefore be globally reduced by 3L bits.
To verify the signature, the verifier may need to know part a. This can be done using an algorithm called Pollard's Kangaroo algorithm, as mentioned above. For example, if L=32 bits (i.e. 4 bytes), a global reduction of 12 bytes can be obtained, which can be significant for a signature whose overall size is around 40 bytes (or 30% of the overall size).
At 408, the part s can be shortened by 2L bits using an LLL algorithm. As noted above, the LLL algorithm can be used to find an (s, a) couple that includes an s part that is 2L bits shorter than that of an initial digital signature and a part a size of 2L bits.
At 410, the signing node 402 can generate a digital signature using the r, s, and a parts generated as described herein. The digital signature 412 can be sent from the signing node 402 to the verifying node 404. At 414, the verifying node 404 can obtain the digital signature.
At 416, the verifying node 404 can find part a of the digital signature using an algorithm such as Pollard's Kangaroo algorithm. Such an algorithm can be used to solve a discrete logarithm problem in determining part a. At 418, verifying node 404 can verify the signature using the determined part a.
In another example embodiment, serial numbers can be generated with shortened bit lengths that can also be used to authenticate themselves. For instance, DSA can be used, but a constant message can be signed, such as m=“sometext” for instance. Because the signatures are randomized, the signature can be used as numbers that can be assigned to a device. In some instances, a validation can be done using a login (device number) and a password. Here the signature can serve both purposes as it can be both a serial number and a signature. Hence this can give particularly short identifiers. The example embodiments as described herein can be used to generate such shorter self-authenticated serial numbers. Those can be much shorter than other solutions, such as those consisting of signing a counter, as there is no message.
An authenticated serial number may be an integer with a length as short as possible, and in which verification is public. A way to achieve such a function can be to pick the serial number u and provide a digital signature σ on u.
In a first example, the process can include m being taken to be the hash value of r. The global size of the resulting signature can be (2 log2(q))−3L, for typical parameter choices can suffice to provide enough resistance against the birthday paradox and the resulting numbers can be safely used as short authenticated unique numbers.
In a second example, there can be settings in which the numbers may not be unique but serial. In such a case, the same algorithm can be run v times, each time considering that (for instance) the most significant bits (MSBs) of r represent the serial number. Namely, the expectation of the time T to collect signatures on all n serial numbers can be:
where γ≈0.5772156649 (the Euler-Mascheroni constant) and Hn is the Harmonic number.
In any of the example embodiments as described herein, an example EC-DSA signature is 56 bytes long. An example L can be 40 bits (5 bytes). The present example embodiments can allow to reduce a size of the digital signature by about 15/56=26.8%. As a note, some EC-DSA can use 40 byte signatures, in which case the economy is larger, namely 15/40=37.5%.
In a first example embodiment, a method for generating a digital signature with a reduced number of bits is provided. The digital signature can be generated with a number of bits (or bytes) less than that of an initial bit length of another digital signature (e.g., a bit length of standard EC-DSA signatures).
At 504, the method can also include performing, by the SIG, a first number of operations to generate the digital signature S featuring at least one redundancy (P). The operations can be performed by the signing node to generate a digital signature with a redundancy of a particular form that can be omitted prior to transmission to the verifying node.
In some instances, the redundancy P is a bit-string of the form P=X|X where X represents any L-bit pattern and X|X stands for the concatenation of X to itself.
In some instances, performing the first number of operations to generate the digital signature further includes searching, by the SIG, a digital signature featuring said redundancy P by re-signing the message M using a randomized digital signature algorithm until a redundancy P appears in the digital signature S.
In some instances, performing the first number of operations to generate the digital signature further includes solving, by the SIG, a mathematical equation involving at least M and the private signature key of SIG to generate the S featuring the redundancy P.
In some instances, the forming of the signature in the modified version of the EC-DSA algorithm further includes generating a and s by using a Lenstra-Lenstra-Lovasz (LLL) algorithm to solve an equation sk=M+(x+a)r mod q for the unknowns s and a, imposing to the LLL algorithm that the relative sizes of s and a are respectively (log2(q))−2L and 2L.
In some instances, the forming of the signature in the modified version of the EC-DSA algorithm further includes computing a discrete logarithm of a quantity (s/r) R−(m/r)·G−Y with respect to G over the elliptic curve E.
In some instances, the parameter L can be a value between 8 and 80.
At 506, the method can also include generating, by the SIG, a shortened digital signature (S′). Transforming the digital signature to the shortened digital signature can include omitting the redundancy.
At 508, the method can also include transmitting, by the SIG to the VER, the shortened digital signature S′. The verifying node VER can be configured to perform a second number of operations to recover the redundancy P and generate the digital signature S from the shortened digital signature S′.
In some instances, the VER is configured to recover the redundancy P to complete S′ and subsequently generate S by searching (e.g. an exhaustively searching) through all possible bit values until the S value complying with the redundancy P is found. The S value can be confirmed by a successful cryptographic verification of S.
In some instances, VER is configured to recover the redundancy P to complete S′ and subsequently generate S by solving a mathematical equation involving the message M and a public verification key of the SIG.
In some instances, the mathematical equation includes a modified version of an elliptic curve digital signature algorithm (EC-DSA) algorithm. Public parameters of the SIG can include an elliptic curve E and a prime p, as well as a generator G chosen randomly in E of some order q. A private key of the SIG can include a number x chosen randomly between 1 and q−1 and the public verification key of the SIG is Y=x·G.
In some instances, the modified EC-DSA algorithm is characterized by a signature generation and verification process comprising forming, by the SIG, a signature {s,R} where R=k·G and s=(M+(x+a)r)/k mod q, where r is any public bijective encoding of R, wherein a is a number of size 2L bits generated so that s has a size (log2(q))−2L bits for the SIG to sign the message M. Verification of the signature {s,R} can include the VER recomputing r from R using said bijective encoding and checking that there exists an a of a relatively moderate size such that a·G=(s/r)·R−(m/r)·G−Y.
At 510, the method can also include verifying, by the verifying node VER, the digital signature S with respect to the message M.
In another example embodiment, a system is provided. The system can include a signing node comprising one or more processors and a memory comprising instructions which, when executed by the one or more processors, cause the one or more processors to perform operations. The operations can include performing several operations to generate a random number k resulting in a digital signature S of a message M. The digital signature S can include a redundancy P. The operations can also include omitting a redundancy P from S to generate a shortened signature S′. The operations can also include transmitting M and S′ from the signing node to a verifying node.
In some instances, redundancy P is any bit pattern X of size L repeated twice at an end of S, with the digital signature comprising S=S′|X|X where S′ is of any form.
In some instances, redundancy P is any bit pattern X of size L repeated twice at a beginning of S, with the digital signature comprising S=X|X|S′ where S′ is of any form.
In some instances, redundancy P is any bit pattern X of size L repeated once at a beginning of S and one at an end of S, with the digital signature comprising S=X|S′|X where S′ is of any form.
In some instances, the redundancy on the X values appearing in S is replaced by f(X), where f is any bijective function.
In some instances, performing several operations to generate the digital signature S of a message M includes using a modified version of an elliptic curve digital signature algorithm (EC-DSA) algorithm. Public parameters of the signing node can include an elliptic curve E and a prime p, as well as a generator G chosen randomly in E of some order q. A private key of the signing node can include a number x chosen randomly between 1 and q−1 and a public key of the signing node is Y=x·G.
In some instances, wherein the modified version of the EC-DSA algorithm is characterized by the following signature generation and signature verification processes that includes forming, by the signing node, signature {s,R} where R=k·G and s=(M+(x+a)r)/k mod q, where r is any public bijective encoding of R, and wherein a is a number of size 2L bits generated so that s has a size (log2(q))−2L bits. A verifying node can be configured to verify the signature {s,R} by recomputing r from R using bijective encoding and checking that there exists an a of a relatively moderate size such that a·G=(s/r)·R−(M/r)·G−Y.
In some instances, generating a and s is achieved by using a Lenstra-Lenstra-Lovasz (LLL) algorithm to solve equation sk=M+(x+a)r mod q for unknowns s and a, imposing to the LLL algorithm that relative sizes of s and a are respectively (log2(q))−2L and 2L.
In some instances, verifying the signature is achieved by computing a discrete logarithm of the quantity (s/r)·R−(M/r)·G−Y with respect to the G over the elliptic curve E.
In some instances, the digital signature is used as authenticated identity numbers to uniquely identify digital or physical objects by the signing node, wherein M is set to a public constant which is signed multiple times to produce multiple authenticated identity numbers.
In some instances, the digital objects are Internet of Things serial numbers used to pair objects within a network.
In some instances, the digital objects are transaction vouchers allowing users to benefit of an on-line service or digital coins having any given value.
In some instances, the physical objects are banknotes, identity documents, and/or keys allowing access to premises.
In some instances, the message M is replaced by a hash value m of the message being signed.
In some instances, the digital object is a URL or part of the URL.
In some instances, the digital object is a domain name or part of the domain name.
In some instances, the digital object is a top level domain name (TLD) or part of the TLD.
In some instances, the digital object is an email address or part of the email address.
In some instances, the digital object is a cryptographic key.
In some instances, the digital object is a number used as a source of randomness for generating keys in a cryptographic protocol.
In some instances, the digital object is a number used as a source of randomness for nonces in a cryptographic protocol.
In some instances, the message M is replaced by a hash value m of the message M being signed.
Special-purpose computer system 600 comprises a computer 602, a monitor 604 coupled to computer 602, one or more additional user output devices 606 (optional) coupled to computer 602, one or more user input devices 608 (e.g., keyboard, mouse, track ball, touch screen) coupled to computer 602, an optional communications interface 610 coupled to computer 602, and a computer-program product including a tangible computer-readable storage medium 612 in or accessible to computer 602. Instructions stored on computer-readable storage medium 612 may direct system 600 to perform the methods and processes described herein. Computer 602 may include one or more processors 614 that communicate with a number of peripheral devices via a bus subsystem 616. These peripheral devices may include user output device(s) 606, user input device(s) 608, communications interface 610, and a storage subsystem, such as random-access memory (RAM) 618 and non-volatile storage drive 620 (e.g., disk drive, optical drive, solid state drive), which are forms of tangible computer-readable memory.
Computer-readable medium 612 may be loaded into random access memory 618, stored in non-volatile storage drive 620, or otherwise accessible to one or more components of computer 602. Each processor 614 may comprise a microprocessor, such as a microprocessor from Intel® or Advanced Micro Devices, Inc.®, or the like. To support computer-readable medium 612, the computer 602 runs an operating system that handles the communications between computer-readable medium 612 and the above-noted components, as well as the communications between the above-noted components in support of the computer-readable medium 612. Exemplary operating systems include Windows® or the like from Microsoft Corporation, Solaris® from Sun Microsystems, LINUX, UNIX, and the like. In many example embodiments and as described herein, the computer-program product may be an apparatus (e.g., a hard drive including case, read/write head, etc., a computer disc including case, a memory card including connector, case, etc.) that includes a computer-readable medium (e.g., a disk, a memory chip, etc.). In other example embodiments, a computer-program product may comprise the instruction sets, or code modules, themselves, and be embodied on a computer-readable medium.
User input devices 608 include all possible types of devices and mechanisms to input information to computer system 602. These may include a keyboard, a keypad, a mouse, a scanner, a digital drawing pad, a touch screen incorporated into the display, audio input devices such as voice recognition systems, microphones, and other types of input devices. In various example embodiments, user input devices 608 are typically embodied as a computer mouse, a trackball, a track pad, a joystick, wireless remote, a drawing tablet, a voice command system. User input devices 608 typically allow a user to select objects, icons, text and the like that appear on the monitor 604 via a command such as a click of a button or the like. User output devices 606 include all possible types of devices and mechanisms to output information from computer 602. These may include a display (e.g., monitor 604), printers, non-visual displays such as audio output devices, etc.
Communications interface 610 provides an interface to other communication networks and devices and may serve as an interface to receive data from and transmit data to other systems, WANs and/or the Internet, via a wired or wireless communication network 622. In addition, communications interface 610 can include an underwater radio for transmitting and receiving data in an underwater network. Example embodiments of communications interface 610 typically include an Ethernet card, a modem (telephone, satellite, cable, ISDN), a (asynchronous) digital subscriber line (DSL) unit, a Fire Wire® interface, a USB® interface, a wireless network adapter, and the like. For example, communications interface 610 may be coupled to a computer network, to a FireWire® bus, or the like. In other example embodiments, communications interface 610 may be physically integrated on the motherboard of computer 602, and/or may be a software program, or the like.
RAM 618 and non-volatile storage drive 620 are examples of tangible computer-readable media configured to store data such as computer-program product embodiments of the present disclosure, including executable computer code, human-readable code, or the like. Other types of tangible computer-readable media include floppy disks, removable hard disks, optical storage media such as CD-ROMs, DVDs, bar codes, semiconductor memories such as flash memories, read-only-memories (ROMs), battery-backed volatile memories, networked storage devices, and the like. RAM 618 and non-volatile storage drive 620 may be configured to store the basic programming and data constructs that provide the functionality of various example embodiments of the present disclosure, as described above.
Software instruction sets that provide the functionality of the present disclosure may be stored in computer-readable medium 612, RAM 618, and/or non-volatile storage drive 620. These instruction sets or code may be executed by the processor(s) 614. Computer-readable medium 612, RAM 618, and/or non-volatile storage drive 620 may also provide a repository to store data and data structures used in accordance with the present disclosure. RAM 618 and non-volatile storage drive 620 may include a number of memories including a main random-access memory (RAM) to store instructions and data during program execution and a read-only memory (ROM) in which fixed instructions are stored. RAM 618 and non-volatile storage drive 620 may include a file storage subsystem providing persistent (non-volatile) storage of program and/or data files. RAM 618 and non-volatile storage drive 620 may also include removable storage systems, such as removable flash memory.
Bus subsystem 616 provides a mechanism to allow the various components and subsystems of computer 602 to communicate with each other as intended. Although bus subsystem 616 is shown schematically as a single bus, alternative embodiments of the bus subsystem may utilize multiple busses or communication paths within the computer 602.
For a firmware and/or software implementation, the methodologies may be implemented with modules (e.g., procedures, functions, and so on) that perform the functions described herein. Any machine-readable medium tangibly embodying instructions may be used in implementing the methodologies described herein. For example, software codes may be stored in a memory. Memory may be implemented within the processor or external to the processor. As used herein the term “memory” refers to any type of long term, short term, volatile, nonvolatile, or other storage medium and is not to be limited to any particular type of memory or number of memories, or type of media upon which memory is stored.
Moreover, as disclosed herein, the term “storage medium” may represent one or more memories for storing data, including read only memory (ROM), random access memory (RAM), magnetic RAM, core memory, magnetic disk storage mediums, optical storage mediums, flash memory devices and/or other machine-readable mediums for storing information. The term “machine-readable medium” includes but is not limited to portable or fixed storage devices, optical storage devices, wireless channels, and/or various other storage mediums capable of storing that contain or carry instruction(s) and/or data.
Whereas many alterations and modifications of the present disclosure will no doubt become apparent to a person of ordinary skill in the art after having read the foregoing description, it is to be understood that the particular example embodiments shown and described by way of illustration are in no way intended to be considered limiting.
Moreover, the processes described above, as well as any other aspects of the disclosure, may each be implemented by software, but may also be implemented in hardware, firmware, or any combination of software, hardware, and firmware. Instructions for performing these processes may also be embodied as machine or computer-readable code recorded on a machine or computer-readable medium. In some example embodiments, the computer-readable medium may be a non-transitory computer-readable medium. Examples of such a non-transitory computer-readable medium include but are not limited to a read-only memory, a random-access memory, a flash memory, a CDROM, a DVD, a magnetic tape, a removable memory card, and optical data storage devices. In other example embodiments, the computer-readable medium may be a transitory computer-readable medium. In such example embodiments, the transitory computer-readable medium can be distributed over network-coupled computer systems so that the computer-readable code is stored and executed in a distributed fashion. For example, such a transitory computer-readable medium may be communicated from one electronic device to another electronic device using any suitable communications protocol. Such a transitory computer-readable medium may embody computer-readable code, instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and may include any information delivery media. A modulated data signal may be a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
It is to be understood that any or each module of any one or more of any system, device, or server may be provided as a software construct, firmware construct, one or more hardware components, or a combination thereof, and may be described in the general context of computer-executable instructions, such as program modules, that may be executed by one or more computers or other devices. Generally, a program module may include one or more routines, programs, objects, components, and/or data structures that may perform one or more particular tasks or that may implement one or more particular abstract data types. It is also to be understood that the number, configuration, functionality, and interconnection of the modules of any one or more of any system, device, or server are merely illustrative, and that the number, configuration, functionality, and interconnection of existing modules may be modified or omitted, additional modules may be added, and the interconnection of modules may be altered.
While there have been described systems, methods, and computer-readable media for enabling efficient control of a media application at a media electronic device by a user electronic device, it is to be understood that many changes may be made therein without departing from the spirit and scope of the disclosure. Insubstantial changes from the claimed subject matter as viewed by a person with ordinary skill in the art, now known or later devised, are expressly contemplated as being equivalently within the scope of the claims. Therefore, obvious substitutions now or later known to one with ordinary skill in the art are defined to be within the scope of the defined elements.
Therefore, those skilled in the art will appreciate that the disclosure can be practiced by other than the described example embodiments, which are presented for purposes of illustration rather than of limitation.
This application claims priority to U.S. Provisional Application No. 63/593,328, filed Oct. 26, 2023, which is incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
63593328 | Oct 2023 | US |