Method and system for a public key cryptosystem having proactive, robust, and recoverable distributed threshold secret sharing
Abstract
A proactive threshold secret sharing cryptosystem using a set of servers. The cryptosystem is a threshold cryptosystem, in the sense that service is maintained if at least (k + 1) out of n servers are active and honest. The secret signature key is compromised only if the adversary breaks into at least (k + 1) servers. It is robust in the sense that the honest servers detect faulty ones and the service is not disrupted. It is recoverable, because if the adversary erases all the local information on the server it compromised, the information can be restored as soon as the server comes back to performing the correct protocol. The method and system has proactiveness, which means that in order to learn the secret, the adversary has to break into (k + 1) servers during the same round of the algorithm because the shares of the secret are periodically redistributed and rerandomized. The present invention uses a verifiable secret sharing mechanism to get the security requirements during the update between two rounds. The security of the scheme depends on the assumption of intractability of computing logarithms in a field of a big prime order and the ElGamal signature scheme.

Term
Term ended
Projected expiry passed 15 December 2015, 10.8 years ago.
- Priority
- Filed
- Published
- Projected expiry
- Today
18 claims: 2 independent, 16 dependent
- 1A method of public key cryptography having proactive, robust and recoverable distributed threshold secret sharing, comprising the steps of:initializing servers linked by a communications network to form keys;synchronizing said servers to operate in discrete rounds having ends;calculating updated keys at said ends of said rounds from messages broadcast on said communications network;verifying said updated keys to form a set of compromised servers;and recovering said set of compromised servers.
- 10A data processing system for processing a public key cryptography scheme having proactive, robust and recoverable distributed threshold secret sharing, comprising:servers linked by a communications network;initialization means for initializing said servers to form keys associated with said servers;timing means for synchronizing operation of said servers into discrete rounds having ends;updating means for updating said keys at the end of each round of said discrete rounds to produce updated keys;verification means for verifying said updated keys to form a set of compromised servers;and recovery means for recovering said set of compromised servers.
Independent claims2
124 paragraphs in 5 sections, as filed
TECHNICAL FIELD OF THE INVENTION
0001The present invention relates to data processing systems and more particularly to data processing systems including cryptographic mechanisms for information security.
BACKGROUND OF THE INVENTION
0002Public key encryption systems are used to send and receive encrypted messages. Public key encryption systems are those in which a message is encrypted by performing a mathematical algorithm using a publicly available value, called the public key. Then, the recipient decrypts the message by performing an algorithm using a private value, called the private key. Public key encryption depends on choosing an encryption algorithm, E, and a decryption algorithm, D, such that deriving D, even given a complete description of E, would be effectively impossible. The three requirements of public key encryption are: <ol id="ol0001" ol-style=""><li>1. D(E(P)) = P , wherein P is the message;</li><li>2. It is exceedingly difficult to deduce D from E; and</li><li>3. E cannot be broken by attacking P.</li></ol>
0003Thus, the public key can be distributed freely. The private key, however, must be kept private by the entity that uses it. If an intruder accesses the memory content of the entity, the system security is broken. This holds true for all the original public key patents. In Key escrow systems and Micali's fair cryptosystems, the private key is split into many portions and each portion is held by a different entity. However, if with passing time an intruder is able to read each entity's memory, system security is broken.
Proactive Secret Sharing
0004To explain the concept of proactive secret sharing, the terminology of secret sharing schemes and their security characteristics must be explained.
Threshold, Robustness and Recoverability in Secret Sharing
0005Secret sharing was first introduced by <nplcit id="ncit0001" npl-type="s"><text>G.R. Blakley, Safeguarding Cryptographic Keys, AFIPS Con. Proc. (v. 48), 1979, pp. 313-317</text></nplcit> and <nplcit id="ncit0002" npl-type="s"><text>A. Shamir, How to Share a Secret, Commun. ACM, 22, 1979, pp. 612-613</text></nplcit>, which are both hereby incorporated by reference. In its most basic form, secret sharing is a way to divide a secret piece of information <u>M</u> among <u>n</u> participants, called share holders, so that together they will be able to reconstruct it. However, no group of (<u>n</u> - 1) share holders can learn anything about <u>M</u>. This mechanism is used to increase security whenever there is a need to safeguard a piece of information. The increase in security corresponds to being able to guard the secret from an adversary who can break into some servers, but not all of them.
0006Every secret sharing scheme has these conceptual phases: <ol id="ol0002" ol-style=""><li>(1) a <u>dealing</u> phase, when a dealer who knows the secret creates its shares and distributes them among the share holders;</li><li>(2) a <u>storage</u> phase, when the shares are maintained by the share holders; and</li><li>(3) a <u>reconstruction</u> phase, when the share holders reconstruct the secret from their shares.</li></ol>
0007The basic secret sharing described above is not very practical because if an adversary compromises a share holder and erases or modifies the secret share held by that holder, the secret <u>M</u> can never be reconstructed. Hence, the above scheme is secure against an adversary who can break into (<u>n</u> - 1) servers and learn their shares, but cannot erase or modify servers' memories or storage, cannot cause any server to crash and does not interfere either with the dealing of the shares or with the reconstruction of the secret.
0008Before the properties of secret sharing that make the basic scheme more secure, are defined or the different types of adversary's attacks on servers must be defined: <ul id="ul0001" list-style="bullet"><li>A server is <u>compromised</u> to the adversary if she breaks into it and learns all the secret information stored at this server: its secret share and keys used for communication.</li><li>The adversary <u>freezes</u> a server if she causes it to stop working. It is assumed, however, that as soon as the adversary is purged, the server can return to performing the correct protocol (<u>i.e.</u>, no data is lost). Cutting the server's access to the network is an example of freezing a server. Shutting off the power or killing all the processes on the server also constitute freezing, if all the necessary data (variables and the algorithm code) is not erased or modified. A frozen server does not send or receive any messages; it is idle until human intervention brings it up again.</li><li>The adversary <u>controls</u> a server if she can change the protocol it performs and cause it to send messages that are incorrect with respect to the original protocol. From the other server's point of view, such a server is <u>cheating</u> or <u>dishonest</u>. Freezing is a trivial case of controlling.</li><li>The adversary <u>disables</u> a server when she manages to erase or modify the secret data that the server stores. Erasing the protocol code or erasing public keys of other servers makes it harder for the system management to bring this server back to life, but since this information is public, it can be reinstalled into the server without exposing any secret information to the system operators. It is the destruction of server's secret share that makes a qualitative difference between freezing and disabling.</li></ul>
0009The desirable properties of secret sharing schemes, which offer security against the above types of adversaries, are described below. The concern is with security during the storage and reconstruction phases while leaving the dealing phase as insecure as in the basic secret-sharing scheme described above. This concern can be contrasted with verifiable secret sharing schemes, which aim at increasing security during the dealing phase.
0010A secret sharing scheme is called a <u>threshold</u> scheme if only (<u>k</u> + 1) out of <u>n</u> servers need to cooperate to reconstruct the secret. This property makes the system secure against attackers who: <ul id="ul0002" list-style="bullet"><li>During the reconstruction phase freeze or disable up to <u>k</u> out of <u>n</u> servers. During the storage phase, the adversary can freeze more servers, and the threshold scheme will still be secure, provided that these servers are brought up before the reconstruction phase starts.</li><li>During the lifetime of the algorithm compromise <u>k</u> out of <u>n</u> servers. Compromising (<u>k</u> + 1) out of <u>n</u> servers allows the adversary to reconstruct the secret by herself.</li></ul>
0011The above two requirements can be met only if the threshold <u>k</u> is a strict minority, <u>i.e.</u>, when 2<u>k</u> + 1 ≦ <u>n</u>.
0012A secret sharing scheme is called <u>robust</u> if the reconstruction phase is secure in the presence of up to <u>k</u> cheating servers. The threshold scheme by itself relies on the fact that when the attacker can disable or freeze, but cannot control the compromised servers, then there is no problem in picking the group of (<u>k</u> + 1) non-faulty servers to reconstruct the secret, because faulty means non-active. In short, robustness makes the threshold scheme secure against adversaries who during the reconstruction phase can disable or control no more than <u>k</u> servers in total.
0013A threshold secret sharing scheme is <u>recoverable</u> if the proper secret share can be restored to the server that lost it. This scheme assumes that a loss can happen during the storage phase only. Thus, the recovery mechanism will be carried out during the storage phase. The property of recovery in secret sharing is the object of the present invention. It makes the robust threshold scheme secure against adversaries who can disable or control no more than <u>k</u> out of <u>n</u> servers at any time during the storage phase. Whenever the system notices that some servers are disabled, the recovery phase starts and it will be successful assuming that it is so short that the adversary will not jump other servers during this phase.
0014Recovery is needed whenever the secret share is lost. But that can happen with or without the adversary learning this secret share. The share might be lost because an adversary with compromising and disabling capabilities broke into a server, learned its secret share and erased or modified it. But the share might be lost due to a power outage. One could argue that in the first case, the secret could just as well be restored publicly since the adversary knows it anyway. However, there might be more than one adversary, in which case, public recovery of a share spares the other adversaries some work. Also, since a mechanism to deal with the case of disability due to the power outage exists, it can be used in the case when one of the adversaries knows the secret. It is hard to know which case the security scheme is dealing with, so it is better to use one secure recovery mechanism whenever a secret share is lost.
Secret Recovery and Server Authentication
0015If the adversary has capability of erasing or modifying the local storage and memory of the compromised server, and she can also inject messages to the communication channels between the servers, a fully automatic recovery is impossible. A human being must reboot the server, start up the process performing the secret-sharing algorithm and reinstall some means of mutual authentication between this server and the others.
0016The issue of server authentication is rarely discussed in connection to secret sharing. However, server authentication is necessary to preserve the security of the recovery protocol in the presence of an adversary who can send messages to the servers from outside the group of servers that participate in secret sharing. The recovering server <u>A</u> must have some means of authenticating the servers <u>B</u> that try to reinstall its share. Also, the servers <u>B</u> must be sure that it is indeed <u>A</u> to whom they are giving the proper share. These goals can be reached with either secure links between <u>A</u> and <u>B</u>'s or with pairs of secret/public decryption and signature keys between <u>A</u> and servers in <u>B</u>. However, if the server A lost its secret share, it could also lose all its other secret keys used for securing and authenticating its links with the other servers B. This means that human intervention in reinstalling means of authentication to a disabled server is necessary for recovery. This intervention will either consist of installing new server to server link security between <u>A</u> and servers <u>B</u>, or in reinstalling B's public authentication/encryption keys on <u>A</u>, letting <u>A</u> compute its new private keys and securely installing them on servers B. In the example of a proactive system, private/public keys are used for server to server communication, and hence the human intervention in the recovery mechanism will be of the second type.
Proactiveness
0017A new property of secret sharing schemes must be defined: <u>proactiveness</u>. Proactiveness increases security by restricting the <u>rate</u> with which the adversary can compromise servers. The storage phase of the proactive secret sharing scheme is composed of <u>rounds</u> divided by short <u>update phases</u>. The scheme is secure against the adversary who can compromise no more than <u>k</u> servers during the same round. Without proactiveness, the scheme is secure against the adversary who can compromise up to <u>k</u> during the whole storage phase, <u>i.e.</u>, effectively during the <u>lifetime</u> of the algorithm. A proactive scheme is secure against the adversary who compromises all of the servers, provided she does not do it too quickly This property is achieved by a re-randomization of the secret shares held by the servers during the update phases. The update protocol is equivalent to re-dealing the secret without revealing it in the process. Formally, the update must achieve the following: <ol id="ol0003" ol-style=""><li>1. No group of <u>k</u> or fewer servers participating in the update protocol can learn anything about the new shares of other servers.</li><li>2. Knowing <u>k</u> out of n previous shares and <u>k</u> out of <u>n</u> new shares does not reveal any information about the secret share.</li></ol>
Proactiveness Versus Threshold, Robustness and Recovery
0018An adversary during the update phase protocol should be no stronger than during the reconstruction phase. Therefore, to proactivize a robust, recoverable threshold secret sharing scheme, the update phase must be secure against the adversary who can disable or control up to <u>k</u> servers.
0019Proactiveness and recoverability in secret sharing make the most sense when they are used together. Notice that without a recovery mechanism, the proactive secret sharing increases security against some types of attack but decreases it against others. Non-proactive secret sharing schemes are secure against adversaries who can control servers during the storage phase, simply because the servers do not do anything during that phase. During the storage phase in a proactive scheme, servers periodically update their shares. Therefore, if a server is frozen or controlled during an update phase it will not have a proper share in the next round, which is equivalent to the case of the adversary with disabling capabilities. Hence, a proactive scheme is secure against an attacker who can control up to <u>k</u> servers in one round only if it has a recovery mechanism. Also it is secure against an attacker who can control or disable up to <u>k</u> servers in one round.
SUMMARY OF THE INVENTION
0020It is an object of the present invention to provide a method of and system having a proactive, robust and recoverable distributed threshold secret sharing scheme.
0021It is another object of the present invention to provide a proactively secure key certification authority using the above scheme.
0022The foregoing and other objects are achieved by a method and system which provides a proactive threshold secret sharing cryptosystem using a set of servers. The proactive secret sharing cryptosystem is a distributed <u>threshold</u> cryptosystem, in the sense that service is maintained if at least (<u>k</u> + 1) out of <u>n</u> servers are active and honest. The secret signature key is compromised only if the adversary breaks into at least (<u>k</u> + 1) servers. It is <u>robust</u> in the sense that the honest servers detect faulty ones and the service is not disrupted, even when the servers infiltrated by the adversary are cheating. It is <u>recoverable</u>, because if the adversary erases all the local information on the server it compromised, the information can be restored as soon as the server comes back to performing the correct protocol. The method and system has proactiveness, which means that in order to learn the secret, the adversary has to break to (<u>k</u> + 1) servers during the same <u>round</u> of the algorithm because the shares of the secret are periodically redistributed and rerandomized. The present invention uses a verifiable secret sharing mechanism to get the security requirements during the update between two rounds. The present invention assumes that the servers are communicating through a broadcast medium, that they have fully synchronized, unbreakable local clocks and that they have local sources of true randomness. The security of the scheme depends on the assumption of intractability of computing logarithms in a field of a big prime order. It also depends on the security of the ElGamal signature scheme, which is used for server-to-server authentication.
0023The foregoing has outlined rather broadly the features and technical advantages of the present invention in order that the detailed description of the invention that follows may be better understood. Additional features and advantages of the invention will be described hereinafter which form the subject of the claims of the invention.
BRIEF DESCRIPTION OF THE DRAWINGS
0024For a more complete understanding of the present invention, and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which: <ul id="ul0003" list-style="none"><li><figref idref="f0001">FIGURE 1</figref> is a diagram of a server console;</li><li><figref idref="f0002">FIGURE 2</figref> is a block diagram showing servers connecting to a communications channel;</li><li><figref idref="f0002">FIGURE 3</figref> is a flow chart showing a high-level view of the sequence of steps of a preferred embodiment of the present invention;</li><li><figref idref="f0003">FIGURE 4</figref> is a flow chart showing the sequence of steps of a preferred embodiment of the share update protocol of the present invention;</li><li><figref idref="f0004">FIGURE 5</figref> is a flow chart showing the sequence of steps in step 410 of <figref idref="f0003">FIGURE 4</figref>; and</li><li><figref idref="f0005 f0006">FIGURE 6</figref> is a flow chart showing the sequence of steps of a preferred embodiment of the share recovery protocol of the present invention.</li></ul>
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT OF THE INVENTION
0025The present invention is a proactive threshold secret sharing scheme with properties of robustness and recoverability. Disclosed are the model and goals of this scheme and the tools that it uses. Also disclosed is a Key Certification Authority system using the present invention. The security of the scheme depends on the assumption of intractability of computing logarithms in a field of a big prime order. It also depends on the security of the ElGamal signature scheme, which is used for server-to-server authentication. The EIGamal signature scheme is disclosed in <nplcit id="ncit0003" npl-type="s"><text>T EIGamal, A Public Key Cryptosystem and a Signature Scheme Based on Discrete Logarithm, IEEE Trans. on Informational Theory 31, p. 465, 1985</text></nplcit>, which is hereby incorporated by reference.
Model of the System and Assumptions About the Adversary
0026Assume a system of <u>n</u> servers <u>A</u> = {<u>P</u><sub>1</sub>, <u>P</u><sub>2</sub>, ... , <u>P</u><sub><u>n</u></sub>} that will proactively secret-share value <u>x</u>. Also, assume that the system is securely and properly initialized. The goal of the scheme is to prevent an adversary from learning <u>x</u>. At the same time, the adversary cannot prevent servers <u>A</u> from reconstructing <u>x</u> themselves when they need to. Given are specifications about servers <u>A</u> and the communication network they communicate with. Also specified are the interaction mechanisms between the servers <u>A</u> and the human management as well as the trust held by the management.
Model of Proactive Servers
0027A representative hardware configure of a server for practicing the present invention is depicted in <figref idref="f0001">Figure 1</figref>, which illustrates a typical hardware configuration of a workstation in accordance with the subject invention having central processing unit 10, such as a conventional microprocessor, and a number of other units interconnected via system bus 12. The workstation shown in <figref idref="f0001">Figure 1</figref> includes random access memory (RAM) 14, read only memory (ROM) 16, and input/output (I/O) adapter 18 for connecting peripheral devices such as disk units 20 and tape drives 40 to bus 12, user interface adapter 22 for connecting keyboard 24, mouse 26, speaker 28, microphone 32, and/or other user interface devices such as a touch screen device (not shown) to bus 12, communication adapter 34 for connecting the workstation to a communications network, and display adapter 36 for connecting bus 12 to display device 38.
0028<figref idref="f0002">Figure 2</figref> shows how servers <u>A</u> are connected via private links L to a common broadcast medium <u>C</u>, called the communication channel or communication network, which also connects them to the outside world. The broadcast medium has the property that whenever a message is sent to it from a link connecting it to some server, it instantly reaches all the other links connected to this medium. The present invention assumes the servers in <u>A</u> are equipped with secure and synchronized clocks (not shown), which do not change or fail even when the adversary controls or disables a server. These clocks divide the time between <u>rounds</u> and <u>update phases</u>. Because of synchronization, every server in <u>A</u> gets the signal to start the update phase at the same time. Also assumed is that every server in <u>A</u> has a source of true randomness (not shown). If the adversary compromises a server, she cannot predict the future random numbers generated on that server. Every server also has a figurative unbreakable box that contains a code with the algorithm described below for every server (not shown).
Adversary
0029The adversary's model of attacks on the servers <u>A</u> is an extension of a "mobile fault" model. <nplcit id="ncit0004" npl-type="s"><text>R. Ostrovsky & M. Yung, How to Withstand Mobile Virus Attacks, Proc. of the 10th ACM Symposium on the Principles in Distributed Computing, 1991, pp. 51-61</text></nplcit> and <nplcit id="ncit0005" npl-type="s"><text>R. Canetti & A. Herzberg, Crypto 94</text></nplcit>, both of which are hereby incorporated by reference. Let <maths id="math0001" num=""><math display="block"><msubsup><mi>k</mi><mn>1</mn><mrow><mo>(</mo><mo>′</mo></mrow></msubsup></math><img file="EP0723348A2_D0001.tif" /></maths> be the number of servers in <u>A</u> the adversary <u>corrupts</u> at any point during round <u>t</u>, and let <maths id="math0002" num=""><math display="block"><msubsup><mi>k</mi><mn>2</mn><mrow><mo>(</mo><mo>′</mo></mrow></msubsup></math><img file="EP0723348A2_D0002.tif" /></maths> be the number of additional servers whose links to the communication channel are under active attack by the adversary at any point during the round <u>t</u>. Then, our proactive secret-sharing scheme is secure against the adversary for whom (<i>k</i><sub>1</sub><sup>(<i>t</i>)</sup> + (<i>k</i><sub>2</sub><sup>(<i>t</i>)</sup> ≦ for every round <u>t</u>. To achieve this bound we need <u>n</u> ≧ 2<u>k</u> + 2 servers in <u>A</u>.
0030The scheme can easily be made secure against stronger adversaries. First, it is possible to achieve the same bound <u>k</u> on adversaries in the round with one less server, <u>i.e.</u>, 2<u>k</u> + 1 ≦ <u>n</u>. Second, with changes to the synchronization mechanism, more attacks on the links can be allowed, because all such attacks are always detected by the system and the servers could halt the protocol until the management removes the adversary from the link.
0031Corrupting a server means any of the following: <ul id="ul0004" list-style="bullet"><li><u>Compromising</u> it: Learning all the data it stores.</li><li><u>Controlling</u> it: Making it faulty with respect to the specified protocol. This includes freezing the machine.</li><li><u>Disabling</u> it: Modifying (or erasing) its data.</li></ul>
0032Additionally, the adversary always knows the data classified as public and it knows the algorithm <u>M</u> that each machine performs. For simplicity, the present invention treats "natural" power outages, data loss and other hardware failures as actions of the adversary. Therefore, every time a machine is faulty, assume that it is the adversary that corrupted it.
0033When a server is corrupted at any point during the update phase between two rounds, the server is corrupted for both of these rounds. The reason behind this way of counting corrupted servers is that it is impossible or at least very hard to differentiate between an adversary who moves from one server to another during the update phase and the adversary who just stays in both all throughout. This differentiation is not a realistic concern in this setting, where update phase is negligibly short when compared to the length of one round. Furthermore, the present invention treats the adversary who jumps from one server to another in the same way as if both of them are corrupted throughout the round.
0034Apart from attacking servers in <u>A</u>, the adversary can attack the communication network between them. Assume the adversary has its own server <u>E</u> that is connected via its link to the same communication channel <u>C</u> that connects servers <u>A</u>. Therefore, it can both listen to messages broadcasted on <u>C</u> and broadcast messages to <u>C</u>. However, when a message reaches the communication channel, the adversary cannot prevent it from reaching all the links connected to it. The adversary can also make an <u>attack on the link</u> connecting some server in <u>A</u> with the communication channel. If a link to server <u>P ∈ A</u> is under such attack, the adversary can block it both ways: it can Prevent <u>P</u> from hearing the messages that are broadcasted on <u>C</u> as well as it can stop the messages sent by <u>P</u> broadcasted on <u>C</u>. Formally, the adversary can see all the tapes of both links <u>L</u> and the communication channel <u>C</u>. Replacing the algorithm of some link <u>L</u> with adversary's algorithm constitutes an active attack on that link while tampering with the algorithm of <u>C</u> is forbidden in this model.
0035The present invention assumes that the adversary attacking the servers <u>A</u> and the links <u>L</u> is "removable", <u>i.e.</u>, it can be removed when it is detected. However, server <u>E</u> is not "removable", it cannot be traced or cut from <u>C</u>.
Assumptions About the Human Management of the System
0036Every server in <u>A</u> has console 38 through which it can display information to the human management. Through console 38 the managers can reboot the server and perform a procedure for renewal of the authentication keys. The console program allows for entering data to the server. The management is trusted in the following ways: they will not tamper with the servers and they won't cheat in the protocol specified for them. In other words, the management is trusted to follow instructions on when and how to reboot a server and perform the reinstallation of authentication keys.
0037The human management is responsible for tracing down the adversary attacking on the links. Assume that whenever the management is instructed to check whether the link is under attack and remove the potential attacker, the procedure is always successful. Also assume that all the procedures of rebooting servers, reinstalling public authentication keys and removing adversaries from the links take less time then the length of a round.
The Secret Sharing Scheme
0038A preferred method of the proactive verifiable secret sharing scheme of the present invention is shown by the flow chart of <figref idref="f0002">Figure 3</figref>. <figref idref="f0003">Figure 4</figref> is a detailed flow chart of step 314 in <figref idref="f0002">Figure 3</figref>. Similarly, <figref idref="f0004">Figure 5</figref> is a detailed flow chart of step 410 in <figref idref="f0003">Figure 4</figref>.
Initialization
0039Step 310 is to initialize the servers. Let <u>p</u> be a prime number such that <u>p</u> = <u>mq</u> + 1, where <u>q</u> is also prime and <u>m</u> is a small integer like 2, 3 or 4. Let g be an element of <u>Z</u><sub><u>p</u></sub> of order q, <u>i.e.</u>, <u>g</u><sup><u>q</u></sup> = 1 (<u>mod p</u>). The prime p is chosen to be secure for the EIGamal encryption and signature schemes. The secret value <u>x</u> belongs to <u>Z</u><sub><u>q</u></sub>. Use a modification of Shamir's secret sharing over a finite field <u>Z</u><sub><u>q</u></sub> as the threshold secret sharing scheme: There exists a (<u>k</u> + 1) degree polynomial <u>f</u> in <u>Z</u><sub><u>q</u></sub>, such that <u>f</u>(0) = x (<u>mod q</u>) and every server <u>P</u><sub><u>i</u></sub><u>, i</u> ∈ {1, <u>n</u>} has its secret share <i>x<sub>i</sub></i><sup>(1)</sup> = <i>f</i>(<i>i</i>) (mc. The index (1) denotes that these will be the values used in the first round.
0040Additionally, each server <u>P</u><sub><u>i</u></sub> has its private authentication and encryption key <u>w</u><sub><u>i</u></sub>, a random number in <u>Z</u><sub><u>q</u></sub>. The set of public counterparts to these keys {<i>r<sub>i</sub></i><sup>(1)</sup>}<sub><i>i</i>∈ {1,<i>n</i>}</sub> where <maths id="math0003" num=""><math display="block"><msup><msub><mi>r</mi><mi>i</mi></msub><mfenced><mn>1</mn></mfenced></msup><mo>=</mo><msup><mi>g</mi><msup><msub><mi>w</mi><mi>i</mi></msub><mfenced><mn>1</mn></mfenced></msup></msup><mfenced><munder><mi>mod p</mi><mo>̲</mo></munder></mfenced></math><img file="EP0723348A2_D0003.tif" /></maths> is public and stored by every server in <u>A</u>. Additionally, every server needs a set of one-way hashes of all <u>x</u><sub><u>i</u></sub>'s for robustness in reconstruction of the secret. The present invention uses exponentiation as a one-way hash, and so every server stores a set {<i>y<sub>i</sub></i><sup>(1)</sup>}<sub><i>i</i>∈{1,<i>n</i>}</sub>, where <maths id="math0004" num=""><math display="block"><msup><msub><mi>y</mi><mi>i</mi></msub><mfenced><mn>1</mn></mfenced></msup><mo>=</mo><msup><mi>g</mi><msup><msub><mi>x</mi><mi>i</mi></msub><mfenced><mn>1</mn></mfenced></msup></msup><mfenced separators=""><mi>mod</mi><mspace width="1em" /><mi>p</mi></mfenced></math><img file="EP0723348A2_D0004.tif" /></maths>
0041As mentioned in the description of the model, the present invention assumes that the adversary is not present in any way (passively or actively) during the initialization stage. Consequently, this initialization can be done openly.
0042After the initialization, local clocks of servers in <u>A</u> start ticking. At this point, the operation of the servers is synchronized into discrete time periods or rounds (step 312). At the end of each round, an <u>update phase</u> is triggered (step 314). In the update phase servers <u>A</u> perform an update protocol and then there is a reserved time for management to perform optional (up to <u>k</u> of them) <u>key reinstallation</u> procedures followed by <u>share reconstruction</u> protocols. The update phase is long enough to encompass all of these, but it is assumed to be short in comparison to a round.
Update Protocol
0043To update the shares, as shown by step 314 and <figref idref="f0003">Figure 4</figref>, the present invention adapts a simplified version of the update protocol presented in R. Ostrovsky & M. Yung. When the secret <u>x</u> is stored as a value <u>f</u> (0) = <u>x</u> of a <u>k</u> degree polynomial <u>f</u> in <u>Z</u><sub><u>q</u></sub>, it can be updated by adding it to a <u>k</u> degree random polynomial <u>δ</u> (•), where <u>δ</u> (0) = 0, so that <u>f</u><sup><u>t+1</u></sup>(0) = f <sup><u>(t)</u></sup>(0) + <u>δ</u> (0) = <u>x</u> + 0 = <u>x</u>. Ostrovsky and Yung noticed that the linerarity of the operation of computing a polynomial at a point allows for a very simple update of the shares <u>x</u><sub><u>i</u></sub> = <u>f(i)</u>, namely: <maths id="math0005" num=""><math display="block"><msup><munder><mi mathvariant="normal">f</mi><mo>̲</mo></munder><munder><mfenced separators=""><mi mathvariant="normal">t</mi><mo>+</mo><mn mathvariant="normal">1</mn></mfenced><mo>̲</mo></munder></msup><mo></mo><mi mathvariant="normal">δ</mi><mfenced><mo>•</mo></mfenced><mo>←</mo><msup><munder><mi mathvariant="normal">f</mi><mo>̲</mo></munder><munder><mfenced><mi mathvariant="normal">t</mi></mfenced><mo>̲</mo></munder></msup><mfenced><mo>•</mo></mfenced><mo>+</mo><munder><mi mathvariant="normal">δ</mi><mo>̲</mo></munder><mfenced><mo>•</mo></mfenced><mo></mo><mfenced><munder><mi>mod q</mi><mo>̲</mo></munder></mfenced><mo>⇐</mo><mo>=</mo><mo>⇒</mo><msub><munder><mo>∀</mo><mo>̲</mo></munder><munder><mi mathvariant="normal">i</mi><mo>̲</mo></munder></msub><mo></mo><msup><munder><mi mathvariant="normal">f</mi><mo>̲</mo></munder><mrow><munder><mrow><mo>(</mo><mi mathvariant="normal">t</mi><mo>+</mo><mn mathvariant="normal">1</mn></mrow><mo>̲</mo></munder><mo>)</mo></mrow></msup><mo></mo><munder><mfenced><mi mathvariant="normal">i</mi></mfenced><mo>̲</mo></munder><mo>=</mo><msup><mi mathvariant="normal">f</mi><mfenced><munder><mi mathvariant="normal">t</mi><mo>̲</mo></munder></mfenced></msup><mfenced><mi mathvariant="normal">i</mi></mfenced><mo>+</mo><munder><mrow><mi mathvariant="normal">δ</mi><mfenced><mi mathvariant="normal">i</mi></mfenced><mo></mo><mfenced><mi>mod q</mi></mfenced></mrow><mo>̲</mo></munder></math><img file="EP0723348A2_D0005.tif" /></maths> In the present system, <u>δ</u>(•) = (<u>f</u><sub>1</sub>(•) + <u>f</u><sub>2</sub>(•) + ... + <u>f</u><sub>n</sub>(•)) (<u>mod q</u>), each polynomial <u>f</u><sub><u>i</u></sub> (•), <u>f</u><sub><u>i</u></sub> (0) = 0, <u>i</u> ∈ {1,<u>n</u>} of degree (<u>k</u> + 1) is picked independently and at random by the <u>ith</u> server. The update protocol for each server <u>P</u><sub><u>i</u></sub>, <u>i</u> ∈ {1,<u>n</u>} is as follows: <ol id="ol0004" compact="compact" ol-style=""><li>1. <u>P</u><sub><u>i</u></sub> picks (<u>k</u> + 1)<sub>2</sub> random numbers {<u>f</u><sub><u>i j</u></sub>}j∈{1, (<u>k+1</u>)} from <u>Z</u><sub><u>q</u></sub>. These numbers define a polynomial <u>f</u><sub><u>i</u></sub> (<u>z</u>) = <u>f</u><sub><u>i</u> 1</sub><u>z</u><sup>1</sup> + <u>f</u><sub><u>i</u> 2</sub><u>z</u><sup>2</sup> + ... + <u>f</u><sub><u>i</u></sub> (<sub><u>k</u>+1)</sub><u>z</u><sup><u>k</u></sup> in <u>Z</u><sub><u>q</u></sub>, whose free coefficient is zero and hence, <u>f</u><sub><u>i</u></sub> (0) = 0.</li><li>2. For all other servers, <u>P</u><sub><u>j</u></sub>, <u>P</u><sub><u>i</u></sub> sends <u>f</u><sub><u>i</u></sub> (<u>j</u>) (<u>mod q</u>) to <u>P</u><sub><u>j</u></sub>.</li><li>3. <u>P</u><sub><u>i</u></sub> computes its new share <u>x</u><sub><u>i</u></sub><sup>(<u>t</u>+1)</sup> ← <u>x</u><sub><u>i</u></sub><sup><u>(t)</u></sup> + (<u>f</u><sub>1</sub>(<u>i</u>) + <u>f</u><sub>2</sub>(<u>i</u>) + ... + <u>f</u><sub><u>n</u></sub>(<u>i</u>)) (<u>mod q</u>) and erases all the variables it used except its current secret key <u>x</u><sub><u>i</u></sub><sup><u>(t+1)</u></sup>.</li></ol>
0044To make this protocol secure against the adversary with controlling capabilities, the present invention uses the mechanism of verifiable secret sharing using one-way functions presented by <nplcit id="ncit0006" npl-type="s"><text>P. Feldman, A Practical Scheme for Non-Interactive Verifiable Secret Sharing, Proc. of the 28th IEEE Symposium on the Foundations of Computer Science, pp. 427-37, 1987</text></nplcit> and then discussed by <nplcit id="ncit0007" npl-type="s"><text>T P. Pedersen, Distributed Provers with Applications to Undeniable Signature, Eurocrypto '91, 1991</text></nplcit>, which are both hereby incorporated by reference. This particular verifiable secret sharing scheme is used because it is non-interactive, and its side effect is that it allows for update of the secret's exponents <u>y</u><sub><u>i</u></sub> together with updating <u>x</u><sub><u>i</u></sub>'s.
0045The honest servers should unanimously mark their shares of updating polynomial <u>f</u><sub><u>j</u></sub> produced by server <u>P</u><sub><u>i</u></sub> as "bad" in the following two cases: <ol id="ol0005" compact="compact" ol-style=""><li>1. If the shares <u>f</u><sub><u>i</u></sub>(<u>j</u>) that <u>P</u><sub><u>j</u></sub>'s receive are not values of any polynomial of degree (<u>k</u> + 1), or they are, but this polynomial <u>f</u><sub><u>i</u></sub> is not a correct update polynomial because <u>f</u><sub><u>i</u></sub> (0) ≠ 0.</li><li>2. If shares <maths id="math0006" num=""><math display="block"><msub><mfenced open="{" close="}"><msup><mi>g</mi><mrow><msub><mi>f</mi><mi>i</mi></msub><mfenced><mi>j</mi></mfenced></mrow></msup></mfenced><mrow><mi>j</mi><mo>∈</mo><mfenced open="{" close="}" separators=""><mn>1</mn><mo></mo><mi>n</mi></mfenced></mrow></msub><mo>,</mo></math><img file="EP0723348A2_D0006.tif" /></maths> used for updating public values <u>y</u><sub><u>j</u></sub> do not correspond to the secret update shares {<i>f<sub>i</sub></i>(<i>j</i>}<sub><i>j</i>∈ {1,<i>n</i>}</sub> of <u>f</u><sub><u>j</u></sub>.</li></ol>
0046The values <u>w</u><sub><u>i</u></sub><u>/</u>r<sub><u>i</u></sub> as private / public key counterparts are used for authentication of messages coming from <u>P</u><sub><u>i</u></sub> and encryption of messages destined for <u>P</u><sub><u>i</u></sub> with EIGamal encryption. When <u>P</u><sub><u>i</u></sub> encrypts <u>m ∈ Z</u><sub><u>q</u></sub> for <u>P</u><sub><u>j</u></sub>, it sends <i>E<sub>j</sub><sup>k</sup></i>[<i>m</i>] = (<i>m</i>(<i>r<sub>j</sub></i>)<i><sup>k</sup></i>, <i>g<sup>k</sup></i>) where <u>k</u> ∈ <u>Z</u><sub><u>q</u></sub> is a random number and the exponents are computed in <u>Z</u><sub><u>p</u></sub>. The receiver decrypts by using <maths id="math0007" num=""><math display="block"><munder><mrow><mi mathvariant="normal">m</mi><mo>=</mo><mi mathvariant="normal">m</mi></mrow><mo>̲</mo></munder><mo></mo><msup><mfenced><msub><munder><mi mathvariant="normal">r</mi><mo>̲</mo></munder><munder><mi mathvariant="normal">j</mi><mo>̲</mo></munder></msub></mfenced><munder><mi mathvariant="normal">k</mi><mo>̲</mo></munder></msup><mo>*</mo><msup><mfenced><msup><munder><mi mathvariant="normal">g</mi><mo>̲</mo></munder><munder><mi mathvariant="normal">k</mi><mo>̲</mo></munder></msup></mfenced><mfenced><msub><munder><mrow><mo>-</mo><mi mathvariant="normal">w</mi></mrow><mo>̲</mo></munder><munder><mi mathvariant="normal">i</mi><mo>̲</mo></munder></msub></mfenced></msup><mfenced><munder><mi>mod p</mi><mo>̲</mo></munder></mfenced><mn mathvariant="normal">.</mn></math><img file="EP0723348A2_D0007.tif" /></maths>
0047The signature operation uses a collision-free hash function <u>h</u> : <u>N</u> ↦ <u>Z</u><sub><u>q</u></sub>. The signature of message <u>m</u> with key <u>w</u><sub><u>i</u></sub> where <u>S</u><sub><u>i</u></sub> [<u>h</u>(<u>m</u>)] = (<u>r, s</u>) is <u>r = g</u><sup><u>k</u></sup> (<u>mod p</u>), <u>s</u> = <u>k</u><sup>(-1)</sup>(<u>h(m</u>) - <u>rw</u><sub><u>i</u></sub>) (<u>mod q</u>). This signature can be verified with the public counterpart <maths id="math0008" num=""><math display="block"><msub><munder><mi mathvariant="normal">r</mi><mo>̲</mo></munder><munder><mi mathvariant="normal">i</mi><mo>̲</mo></munder></msub><mo>=</mo><msup><munder><mi mathvariant="normal">g</mi><mo>̲</mo></munder><msub><munder><mi mathvariant="normal">w</mi><mo>̲</mo></munder><munder><mi mathvariant="normal">i</mi><mo>̲</mo></munder></msub></msup><mfenced><munder><mi>mod p</mi><mo>̲</mo></munder></mfenced></math><img file="EP0723348A2_D0008.tif" /></maths> of <u>w</u><sub><u>i</u></sub> by checking the equation <maths id="math0009" num=""><math display="block"><msup><mi>g</mi><mrow><mi>h</mi><mfenced><mi>m</mi></mfenced></mrow></msup><mo></mo><mover><mo>=</mo><mo>?</mo></mover><mo></mo><msup><mi>r</mi><mi>s</mi></msup><mo></mo><msubsup><mi>r</mi><mi>i</mi><mi>r</mi></msubsup><mfenced><munder><mi>mod p</mi><mo>̲</mo></munder></mfenced><mn>.</mn></math><img file="EP0723348A2_D0009.tif" /></maths>
0048The hash function <u>h</u> must have a property that knowing <u>m</u>, <u>S</u><sub><u>i</u></sub> [<u>h</u>(<u>m</u>)] one cannot produce any pair <u>m'</u>, <u>S</u><sub><u>i</u></sub> [<u>h</u>(<u>m'</u>)] where <u>m'</u> ≠ <u>m</u>.
0049All through the update phase, the encryption and authentication is performed with values <i>w<sub>i</sub></i><sup>(<i>t</i>)</sup>,<i><sub>j</sub></i>, where <u>t</u> is the round that has just ended. The adversary who comprised a server during this round will know the secret key this server uses to sign and decrypt during the update protocol.
The Full Update Protocol
0050The following steps detail the update protocol used by the servers in step 314: <ul id="ul0005" list-style="none" compact="compact"><li>At step 410, each server <u>P</u><sub><u>i</u></sub> picks (k+ 1) random numbers <u>f</u><sub><u>i</u> 1</sub>, <u>f</u><sub><u>i</u> 2</sub>, ... , <u>f</u><sub><u>i</u> (<u>k</u>+1)</sub> in <u>Z</u><sub><u>q</u></sub> which define an updating polynomial <u>f</u><sub><u>i</u></sub><u>(z)</u>=<u>f</u><sub><u>i 1</u></sub><u>z</u><sup>1</sup> + <u>f</u><sub><u>i</u> 2</sub><u>z</u><sup>2</sup> + ... + <u>f</u><sub><u>i</u> (<u>k+</u>1)</sub><u>z</u><sup><u>k+1</u></sup> in <u>Z</u><sub><u>q</u></sub> (step 510).</li></ul>
0051It forms (<u>n</u> - 1) shares <u>u</u><sub><u>ij</u></sub> = <u>f</u><sub><u>i</u></sub> (<u>j</u>) (<u>mod q</u>), <u>j</u> ≠ <u>i</u> of this polynomial (step 512), and creates its message <u>msg</u><sub><u>i</u></sub> : <maths id="math0010" num=""><math display="block"><mrow><mo>(</mo><msup><mi>g</mi><msub><mi>t</mi><mrow><mi mathvariant="italic">i</mi><mo></mo><mn mathvariant="italic">1</mn></mrow></msub></msup><mo>,</mo><msup><mi>g</mi><msub><mi>t</mi><mrow><mi mathvariant="italic">i</mi><mo></mo><mn mathvariant="italic">2</mn></mrow></msub></msup><mo>,</mo><mo>…</mo><mo>,</mo><msup><mi>g</mi><msub><mi>t</mi><mrow><mi mathvariant="italic">i</mi><mo></mo><mfenced separators=""><mi>k</mi><mo>+</mo><mn>1</mn></mfenced></mrow></msub></msup><mo>,</mo><msup><msub><mi>E</mi><mn>1</mn></msub><msub><mi>k</mi><mrow><mi mathvariant="italic">i</mi><mo></mo><mn mathvariant="italic">1</mn></mrow></msub></msup><mfenced open="[" close="]" separators=""><msub><mi mathvariant="italic">u</mi><mrow><mi>i</mi><mo></mo><mn mathvariant="italic">1</mn></mrow></msub><mo></mo><msup><msub><mi mathvariant="italic">E</mi><mn mathvariant="italic">2</mn></msub><msub><mi mathvariant="italic">k</mi><mrow><mi mathvariant="italic">i</mi><mo></mo><mn mathvariant="italic">2</mn></mrow></msub></msup></mfenced><mo></mo><mfenced open="[" close="]" separators=""><msub><mi mathvariant="italic">u</mi><mrow><mi>i</mi><mo></mo><mn mathvariant="italic">2</mn></mrow></msub><mo>…</mo><msup><msub><mi mathvariant="italic">E</mi><mfenced separators=""><mi>i</mi><mo>-</mo><mn>1</mn></mfenced></msub><msub><mi mathvariant="italic">k</mi><mrow><mi mathvariant="italic">i</mi><mo></mo><mfenced separators=""><mi>i</mi><mo>-</mo><mn>1</mn></mfenced></mrow></msub></msup></mfenced><mo>,</mo><mfenced open="[" close="]" separators=""><msub><mi mathvariant="italic">u</mi><mrow><mi mathvariant="italic">i</mi><mo></mo><mfenced separators=""><mi>i</mi><mo>-</mo><mn>1</mn></mfenced></mrow></msub><mo></mo><msup><msub><mi mathvariant="italic">E</mi><mfenced separators=""><mi>i</mi><mo>+</mo><mn>1</mn></mfenced></msub><msub><mi mathvariant="italic">k</mi><mrow><mi mathvariant="italic">i</mi><mo></mo><mfenced separators=""><mi>i</mi><mo>+</mo><mn>1</mn></mfenced></mrow></msub></msup></mfenced><mo></mo><mfenced open="[" close="]" separators=""><msub><mi mathvariant="italic">u</mi><mrow><mi mathvariant="italic">i</mi><mo></mo><mfenced separators=""><mi>i</mi><mo>+</mo><mn>1</mn></mfenced></mrow></msub><mo>…</mo><msup><msub><mi mathvariant="italic">E</mi><mi>n</mi></msub><msub><mi mathvariant="italic">k</mi><mi mathvariant="italic">in</mi></msub></msup></mfenced><mo></mo><mfenced open="[" close="]"><msub><mi>u</mi><mi mathvariant="italic">in</mi></msub></mfenced></mrow></math><img file="EP0723348A2_D0010.tif" /></maths> where all exponentials are computed in <u>Z</u><sub><u>p</u></sub> (step 514). Additionally, each server <u>P</u><sub><u>i</u></sub> picks its new private key <i>w<sub>i</sub></i><sup>(<i>t</i>+1)</sup> as a random number in <u>Z</u><sub><u>q</u></sub> (step 516), and computes its corresponding new public key: <maths id="math0011" num=""><math display="block"><msup><msub><mi>r</mi><mi>i</mi></msub><mfenced separators=""><mi>t</mi><mo>+</mo><mn>1</mn></mfenced></msup><mo>=</mo><msup><mi>g</mi><msup><msub><mi>w</mi><mi>i</mi></msub><mfenced separators=""><mi>t</mi><mo>+</mo><mn>1</mn></mfenced></msup></msup><mfenced><munder><mi>mod p</mi><mo>̲</mo></munder></mfenced></math><img file="EP0723348A2_D0011.tif" /></maths> (step 518). <u>P</u><sub><u>i</u></sub> then broadcasts a pair (<i>msg<sub>i</sub></i>, <i>r<sub>i</sub></i><sup>(<i>t</i>+1)</sup>) signed with its old key <i>w<sub>i</sub></i><sup>(<i>t</i>)</sup> (steps 412 and 520).
0052At step 414, each server <u>P</u><sub><u>i</u></sub> considers the messages it received in the previous step. If for some <u>j</u>, it received no or more than one authenticated message of the form (<i>msg<sub>j</sub></i>, <i>r<sub>j</sub></i><sup>(<i>t</i>+1)</sup>), it marks <u>P</u><sub><u>j</u></sub> as "bad". Let <u>B</u><sub><u>i</u></sub> be the set of indexes of servers not marked as "bad". <u>P</u><sub><u>i</u></sub> then decrypts the <maths id="math0012" num=""><math display="block"><msubsup><mi>E</mi><mi>i</mi><msub><mi>k</mi><mi mathvariant="italic">ji</mi></msub></msubsup><mfenced open="[" close="]"><msub><mi>u</mi><mi mathvariant="italic">ji</mi></msub></mfenced></math><img file="EP0723348A2_D0012.tif" /></maths> parts of messages <u>msg</u><sub><u>j</u></sub>, <u>j</u> ∈ <u>B</u><sub><u>i</u></sub>. Then, for every <u>j</u> ≠ <u>i</u>, it verifies whether <u>u</u><sub><u>ji</u></sub> agrees with the coefficients given in the <maths id="math0013" num=""><math display="block"><mfenced separators=""><msup><mi>g</mi><msub><mi>f</mi><mrow><mi mathvariant="italic">j</mi><mo></mo><mn mathvariant="italic">1</mn></mrow></msub></msup><mo></mo><msup><mi>g</mi><msub><mi>f</mi><mrow><mi mathvariant="italic">j</mi><mo></mo><mn mathvariant="italic">2</mn></mrow></msub></msup><mo>…</mo><msup><mi>g</mi><msub><mi>f</mi><mrow><mi mathvariant="italic">j</mi><mo></mo><mfenced separators=""><mi>k</mi><mo>+</mo><mn>1</mn></mfenced></mrow></msub></msup></mfenced></math><img file="EP0723348A2_D0013.tif" /></maths> part of the message <u>msg</u><sub><u>j</u></sub>: <maths id="math0014" num=""><math display="block"><msup><mi>g</mi><msub><mi>u</mi><mi mathvariant="italic">ji</mi></msub></msup><mo></mo><mover><mo>=</mo><mo>?</mo></mover><mo></mo><msup><mfenced><msup><mi>g</mi><msub><mi>f</mi><mi mathvariant="italic">ji</mi></msub></msup></mfenced><mi>i</mi></msup><mo></mo><msup><mfenced><msup><mi>g</mi><msub><mi>f</mi><mrow><mi mathvariant="italic">j</mi><mo></mo><mn mathvariant="italic">2</mn></mrow></msub></msup></mfenced><msup><mi>i</mi><mn>2</mn></msup></msup><mo>…</mo><msup><mfenced><msup><mi>g</mi><msub><mi>f</mi><mrow><mi>j</mi><mo></mo><mfenced separators=""><mi>k</mi><mo>+</mo><mn>1</mn></mfenced></mrow></msub></msup></mfenced><mrow><mi>i</mi><mo></mo><mfenced separators=""><mi>k</mi><mo>+</mo><mn>1</mn></mfenced></mrow></msup><mspace width="1em" /><mfenced separators=""><mi>mod</mi><mspace width="1em" /><mi>p</mi></mfenced></math><img file="EP0723348A2_D0014.tif" /></maths>
0053If this equation does not hold, <u>P</u><sub><u>i</u></sub> marks <u>P</u><sub><u>j</u></sub> as "bad", removes <u>j</u> from <u>B</u><sub><u>i</u></sub> and creates an accusation that it was cheated by <u>P</u><sub><u>j</u></sub>, <u>acc</u><sub><u>ij</u></sub> = (<u>i</u>, <u>j</u>). For each server marked "bad", <u>P</u><sub><u>i</u></sub> displays corresponding messages to the management on its display showing why it thinks something is wrong with <u>P</u><sub><u>i</u></sub>. Then, at step 416, the server broadcasts a signed set of all its accusations concatenated with the set of all new public keys <maths id="math0015" num=""><math display="block"><msub><mfenced open="{" close="}"><msub><mi>r</mi><mi>j</mi></msub></mfenced><mrow><mi>j</mi><mo>∈</mo><msub><mi>B</mi><mi>i</mi></msub></mrow></msub></math><img file="EP0723348A2_D0015.tif" /></maths> it received in the previous step. The signature is made with the old private key <i>w<sub>i</sub></i><sup>(<i>t</i>)</sup>.
0054At step 418, each server <u>P</u><sub><u>i</u></sub> verifies signatures on the messages broadcasted in the previous step. If more than one message is broadcasted with the same signature, the corresponding server is marked "bad", set <u>B</u><sub><u>i</u></sub> is reduced and the proper messages for the management are displayed on <u>P</u><sub><u>i</u></sub> 's console. Servers display the set of pairs (<u>j,l</u>) on their consoles such that a new public key <i>r<sub>l</sub></i><sup>(<i>t</i>+1)</sup> was not acknowledged by <u>P</u><sub><u>j</u></sub>. This lets the management trace where the active link attacks are. However, the lack of acknowledgements for new public keys does not influence <u>B</u><sub><u>i</u></sub>. For each accusation <u>acc</u><sub><u>ji</u></sub> by some server <u>P</u><sub><u>j</u></sub><u>, j ∈ B</u><sub><u>i</u></sub>, server <u>P</u><sub><u>i</u></sub> broadcasts a signed response containing the share and the random vector used in communication with <u>P</u><sub><u>j</u></sub> : <u>resp</u><sub><u>i j</u></sub> = (<u>i, j, k</u><sub>i <u>j</u></sub><u>, u</u><sub><u>i j</u></sub>), so that to allow for a public trial to determine who was cheating. These responses should be concatenated and broadcasted with one signature.
0055At step 420, if more than one response was broadcasted with the signature of the same server, every server <u>P</u> marks it as "bad", reduces its set <u>B</u><sub><u>i</u></sub> and displays messages for the management. Each server P makes its own decision for every pair of (<u>acc</u><sub><u>j i,</u></sub><u>resp</u><sub><u>i j</u></sub>) that were properly broadcasted by <u>P</u><sub><u>i</u></sub> in step (1). The values sent in <u>resp</u><sub><u>i j</u></sub> are treated with suspicion, so they are denoted with "primes": <i>k'<sub>ij</sub></i>, <i>u'<sub>ij</sub></i>. Every server <u>P</u> decides according to the following algorithm: <ol id="ol0006" compact="compact" ol-style=""><li>(a) If <maths id="math0016" num=""><math display="block"><msup><msub><mi>E</mi><mi>j</mi></msub><msup><mi>k</mi><mi mathvariant="italic">ij</mi></msup></msup><mfenced open="[" close="]"><msub><mi>u</mi><mi mathvariant="italic">ij</mi></msub></mfenced><mo>≠</mo><mfenced separators=""><msub><mi mathvariant="italic">uʹ</mi><mi mathvariant="italic">ij</mi></msub><mo></mo><msup><mfenced><msup><msub><mi>r</mi><mi>j</mi></msub><mfenced><mi>t</mi></mfenced></msup></mfenced><mrow><msub><mi>k</mi><mi mathvariant="italic">ij</mi></msub><mo></mo><mi>ʹ</mi></mrow></msup><mfenced separators=""><mi>mod</mi><mspace width="1em" /><mi>p</mi></mfenced><mo>,</mo><msup><mi>g</mi><mrow><msub><mi>k</mi><mi mathvariant="italic">ij</mi></msub><mo></mo><mi>ʹ</mi></mrow></msup><mfenced separators=""><mi>mod</mi><mspace width="1em" /><mi>p</mi></mfenced></mfenced><mo>,</mo></math><img file="EP0723348A2_D0016.tif" /></maths> or when <u>P</u><sub><u>i</u></sub> did not respond to <u>P</u><sub><u>j</u></sub>'s accusation at all, then <u>P</u><sub><u>i</u></sub> is cheating and so it must be marked as "bad". Otherwise:</li><li>(b) If (<u>u</u><sub><u>i j</u></sub><u>, k</u><sub><u>i j</u></sub>) are indeed the values that were used in <u>msg</u><sub><u>i</u></sub>, then check whether <i>u</i>'<i><sub>ij</sub></i> = <i>u<sub>ij</sub></i> is the proper share of polynomial <u>f</u><sub><u>i</u></sub>, by evaluating the same equation (2) as should be used by <u>P</u><sub><u>j</u></sub> in step (2). If the equation does not agree, then it is a proof that <u>P</u><sub><u>i</u></sub> sent a bad share to <u>P</u><sub><u>j</u></sub> and so it must be marked as "bad". If the equation is correct, then <u>P</u> marks <u>P</u><sub><u>j</u></sub>, as "bad".</li></ol>
0056For each server marked "bad", set <u>B</u><sub><u>i</u></sub> is reduced and corresponding messages on <u>P</u><sub><u>i</u></sub>'s console are displayed. At step 422, each server <u>P</u><sub><u>i</u></sub> computes: <maths id="math0017" num=""><math display="block"><mtable><mtr><mtd><mspace width="4em" /></mtd><mtd><msubsup><mi>x</mi><mi>i</mi><mfenced separators=""><mi>t</mi><mo>+</mo><mn>1</mn></mfenced></msubsup><mo>↼</mo><msubsup><mi>x</mi><mi>i</mi><mfenced><mi>t</mi></mfenced></msubsup><mo>+</mo><mstyle displaystyle="false"><mstyle displaystyle="true"><munder><mo>∑</mo><mrow><mi>k</mi><mo>∈</mo><msub><mi>B</mi><mi>i</mi></msub></mrow></munder></mstyle><msub><mi>f</mi><mi>k</mi></msub><mfenced><mi>i</mi></mfenced></mstyle><mspace width="1em" /><mrow><mo>(</mo></mrow></mtd></mtr><mtr><mtd><msubsup><mrow><msub><mo>∀</mo><mrow><mi>j</mi><mo>≠</mo><mi>i</mi></mrow></msub><mo></mo><msubsup><mi>y</mi><mi>j</mi><mfenced separators=""><mi>t</mi><mo>+</mo><mn>1</mn></mfenced></msubsup><mo>←</mo><msubsup><mi>y</mi><mi>j</mi><mfenced><mi>t</mi></mfenced></msubsup><mo>*</mo></mrow><mover><mi>k</mi><mo>‾</mo></mover><mo>-</mo></msubsup></mtd><mtd><mspace width="1em" /></mtd></mtr></mtable></math><img file="EP0723348A2_D0017.tif" /></maths> Also, each server deletes all the variables used in this protocol, except of new share <i>x<sub>i</sub></i><sup>(<i>t</i>+1)</sup>, new key <i>w<sub>i</sub></i><sup>(<i>t</i>+1)</sup>, set {<i>y<sub>j</sub></i><sup>(<i>t</i>+1)</sup>}<sub><i>j</i>∈{1</sub>,<sub><i>n</i>}</sub> and set {<i>r<sub>j</sub></i><sup>(<i>t</i>+1)</sup>}<sub><i>j</i>∈{1,<i>n</i>}</sub> of new public keys.
0057The proper update polynomial δ(•) is equal to the sum <maths id="math0018" num=""><math display="block"><mstyle displaystyle="false"><mstyle displaystyle="true"><munder><mo>∑</mo><mrow><mi>k</mi><mo>∈</mo><mi>B</mi></mrow></munder></mstyle><msub><mi>f</mi><mi>k</mi></msub><mfenced><mo>•</mo></mfenced><mo></mo><mfenced separators=""><mi>mod</mi><mspace width="1em" /><mi>q</mi></mfenced></mstyle><mo>,</mo></math><img file="EP0723348A2_D0018.tif" /></maths> where <u>B</u> = <u>B</u><sub><u>i</u></sub> (in step 420) for at least (<u>k</u> + 2) servers <u>P</u><sub><u>i</u></sub>, <u>i</u> ∈ {1, <u>n</u>}.
0058Whenever a server <u>P</u> is expecting to receive a signed broadcast of a message of a known format and it receives two such messages, both seemingly coming from the same server <u>P</u><sub><u>i</u></sub>, then <u>P</u> marks <u>P</u><sub><u>i</u></sub> as faulty. Of course, the attacker could always send the same message that <u>P</u><sub><u>i</u></sub> did. In this protocol, every server sends up to three messages. Therefore, whenever <u>P</u> gets a set <u>C</u><sub><u>i</u></sub> of messages seemingly signed by <u>P</u><sub><u>i</u></sub>, it should throw away those elements of <u>C</u><sub><u>i</u></sub> that were broadcasted by <u>P</u><sub><u>i</u></sub> in some previous step of the protocol, and then if all other elements of <u>C</u><sub><u>i</u></sub> are the same, take this element as <u>P</u><sub><u>i</u></sub>'s message. Otherwise, mark <u>P</u><sub><u>i</u></sub> as "bad", because it is either cheating or it is duplicated by the adversary who compromised its authentication key. Another fine point is that if <u>P</u><sub><u>i</u></sub> sees some messages signed seemingly by itself, it also marks itself as "bad" and computes <u>B</u><sub><u>i</u></sub> accordingly. This way, even though it is duplicated, it will compute its new share <i>x<sub>i</sub></i><sup>(<i>t</i>+1)</sup> and all {<i>y<sub>j</sub></i><sup>(<i>t</i>+1)</sup>}<sub><i>j</i>∈{1,<i>n</i>}</sub> correctly. Its new public authentication and encryption key <i>r<sub>i</sub></i><sup>(<i>t</i>+1)</sup> is not acknowledged through, and must still be taken care of.
Analysis of the Update Protocol
0059The adversary can interfere with the above protocol in three ways: <ul id="ul0006" list-style="bullet"><li>It can make the server it controls cheat in this protocol. A disabled server will look like it is cheating or like it is sending random messages (if it encrypts and signs messages with the wrong keys).</li><li>It can send messages signed with the keys of the server it compromised during the round before this update phase. For the other servers, this case is indistinguishable from the case when the server is still controlled by the adversary.</li><li>It can attack a link between a server and a communication channel.</li></ul>
0060Since at every update round there are (<u>k</u> + 2) servers who are honest, who were not compromised in the previous round and whose link to the communication channel is not under active attack, these servers' sets <u>B</u><sub><u>i</u></sub> will all be the same and will have at least (<u>k</u> + 2) elements. Therefore, the secret-sharing polynomial <u>f</u> will be updated with at least (<u>k</u> + 2) polynomials <u>f</u><sub><u>i</u></sub>, none of which can be reconstructed by the adversary. In the worst case, the adversary can learn <u>k</u> shares of each of these polynomials, but since they are all of the degree (<u>k</u> + 1) and <u>f</u><sub><u>i</u></sub> (0) = 0 for each of them, one needs (<u>k</u> + 1) shares to reconstruct them.
Recovery After Update
0061From the messages displayed on the servers' consoles, the management can decide which machines are controlled, compromised or disabled and which links were under active attack by the adversary. In particular, the consoles will display information on two (often intersecting) sets of servers: <ul id="ul0007" list-style="bullet"><li>Those who didn't receive some acknowledgements of their new public keys.</li><li>Those whose new public keys are not acknowledged by at least (<u>k</u> + 2) servers, whose secret shares <i>x<sub>i</sub></i><sup>(<i>t</i>+1)</sup> are badly computed and inconsistent with the new polynomial <i>f</i><sup>(<i>t</i>+2)</sup>. Also, their view of the current set {<i>y<sub>j</sub></i><sup>(<i>t</i>+1)</sup><i>}j</i>∈<sub>{1,<i>n</i>}</sub> is not correct.</li></ul>
0062The first set gives the management information about the active link attacks. The managers then promptly remove the adversary from the deduced links. With regard to the second set, the managers first perform a <u>key reinstallation</u> procedure (step 316) and then trigger an automatic <u>share recovery</u> protocol (step 318). Let <u>C</u> be the set of servers in <u>A</u> whose public keys {<u>r</u><sub><u>j</u></sub>} are well-distributed and acknowledged by other servers. Then |<u>C</u>| ≧ <u>k</u> + 2.
0063The reinstallation of <u>P</u><sub><u>i</u></sub>'s key (step 316) is as follows: Through <u>P</u><sub><u>i</u></sub>'s console, the managers install the set {<i>r<sub>j</sub></i>}<sub><i>j</i>∈ <i>C</i></sub> and then ask <u>P</u><sub><u>i</u></sub> to pick its new random private key <u>w</u><sub><u>i</u></sub> ∈ <u>Z</u><sub><u>q</u></sub>. <u>P</u><sub><u>i</u></sub> picks such a number and displays the corresponding public key <maths id="math0019" num=""><math display="block"><msub><mi>r</mi><mi>i</mi></msub><mo>=</mo><msup><mi>g</mi><msub><mi>w</mi><mi>i</mi></msub></msup><mfenced><mi mathvariant="italic">mod p</mi></mfenced><mn>.</mn></math><img file="EP0723348A2_D0019.tif" /></maths>
0064The managers then install this number in all other servers. Set <u>C</u> is augmented by <u>P</u><sub><u>i</u></sub>. When this reinstallation is finished, the managers trigger the recovery protocol on servers <u>C</u>. Alternatively, the servers themselves are programmed so that whenever some public key is reinstalled in them they start an agreement protocol to trigger the recovery protocol automatically, when all the servers in the <u>C</u> are ready.
Share Recovery Protocol
0065Let <u>P</u><sub><u>u</u></sub> denote the server who's share <u>x</u><sub><u>u</u></sub> = <u>f</u>(<u>u</u>) needs to be reinstalled. At first, step 610, the servers choose an initial set <u>B⊂C</u> \ {<u>P</u><sub><u>u</u></sub>} of (<u>k</u> + 2) servers. They are picked from <u>C</u> because they must be able to authenticate q themselves to <u>P</u><sub><u>u</u></sub> and vice-versa. This is easy since servers are ordered by indexes and they know the current state of <u>C</u>, <u>i.e.</u>, servers who have working authentication and encryption keys. The protocol must have the following properties in the presence of the adversary: <ul id="ul0008" list-style="bullet"><li><u>P</u><sub><u>u</u></sub> learns only <u>x</u><sub><u>u</u></sub>, <u>i.e.</u>, it can't learn any other share <u>x</u><sub><u>i</u></sub> where <u>i</u> ∈ <u>B</u>.</li><li>No (<u>k</u> - 1) group <u>F</u> ⊂ <u>A</u> \ {<u>P</u><sub><u>u</u></sub>} of servers can learn <u>x</u><sub><u>u</u></sub> or any <u>x</u><sub><u>i</u></sub>, where <u>i</u> ∈ <u>A</u> \ <u>F</u>.</li><li>Server <u>P</u><sub><u>u</u></sub> learns the proper set {<u>y</u><sub><u>i</u></sub>}<sub><u>i∈</u>{1,<u>n</u>}</sub>.</li></ul>
0066The basic set of (<u>k</u> + 2) servers with valid shares of <u>f</u>, can recover not only <u>x</u> = <u>f</u> (0) (<u>mod q</u>) but any other value of <u>f</u>, in particular the share <u>x</u><sub><u>u</u></sub> = <u>f</u> (uv) (<u>mod q</u>) that <u>P</u><sub><u>u</u></sub> needs. This can be done with the Lagrange interpolation formula. After set <u>B</u> of (<u>k</u> + 2) servers that are supposed to cooperate is established, each <u>P</u><sub><u>i</u></sub>, <u>i</u> ∈ <u>B</u> sends <maths id="math0020" num=""><math display="block"><msub><mi>a</mi><mi>i</mi></msub><mo>=</mo><msub><mi>x</mi><mi>i</mi></msub><mstyle displaystyle="true"><munder><mo>∏</mo><mrow><mi>j</mi><mo>∈</mo><mi>B</mi><mo>,</mo><mi>j</mi><mo>≠</mo><mi>i</mi></mrow></munder></mstyle><mfrac><mrow><mi>u</mi><mo>-</mo><mi>j</mi></mrow><mrow><mi>i</mi><mo>-</mo><mi>j</mi></mrow></mfrac><mfenced><mi mathvariant="italic">mod q</mi></mfenced></math><img file="EP0723348A2_D0020.tif" /></maths> to <u>P</u><sub><u>u</u></sub>. Then <u>P</u><sub><u>u</u></sub> adds them together to get <maths id="math0021" num=""><math display="block"><msub><mi>x</mi><mi>u</mi></msub><mo>=</mo><mi>f</mi><mfenced><mi>u</mi></mfenced><mo>=</mo><mstyle displaystyle="false"><mstyle displaystyle="true"><munder><mo>∑</mo><mrow><mi>i</mi><mo>∈</mo><mi>B</mi></mrow></munder></mstyle><msub><mi>a</mi><mi>i</mi></msub></mstyle><mn>.</mn></math><img file="EP0723348A2_D0021.tif" /></maths> However, if the present invention only did that, <u>P</u><sub><u>u</u></sub> would also learn all <u>x</u><sub><u>i</u></sub> 's from <u>a</u><sub><u>i</u></sub> 's. But the present invention can treat <u>a</u><sub><u>i</u></sub>s as trivial secret shares of <u>x</u><sub><u>v</u></sub>. So the present invention requires servers in <u>B</u> to rerandomize these shares before sending them to <u>P</u><sub><u>u</u></sub>: Each server <u>P</u><sub><u>i</u></sub> in <u>B</u> picks (<u>k</u> + 2) random numbers {c<i><sub>ij</sub></i>}<sub><i>j</i>∈<i>B</i></sub> in <u>Z</u><sub><u>q</u></sub>. Then they exchange these values pairwise: <u>P</u><sub><u>i</u></sub> gives <u>C</u><sub><u>i j</u></sub> to <u>P</u><sub><u>j</u></sub> and gets <u>C</u><sub><u>j i</u></sub>. And then each sends <i>a</i>'<i><sub>i</sub></i> = <i>a <sub>i</sub></i> + Σ<sub><i>j</i>∈</sub><i><sub>B</sub>c<sub>ji</sub> -</i> Σ<sub><i>j</i>∈</sub><i><sub>B</sub>c<sub>ji</sub></i> (<i>mod q</i>) to <u>P</u><sub><u>u</u></sub> . Notice that Σ<sub><i>i</i>∈ <i>B</i></sub>a'<i><sub>i</sub></i> = <i>x<sub>u</sub> (mod q</i>), so this is another secret sharing of <u>x</u><sub><u>u</u></sub> .Now the basic scheme must be made verifiable using the same tools used in the update phase protocol.
0067Given below is the full protocol for making the scheme verifiable. Notice that all broadcasts involve servers in <u>C</u> including the ones that are not currently in set <u>B</u> and the server <u>P</u><sub><u>u</u></sub>. For clarity, the below does not mention that for every authenticated broadcast, the recipients check the signature on the message and when there is a duplication attack (because the sender is cheating or its keys are compromised and duplicated), they mark this server as "bad" and display adequate messages on their consoles for the management. This is the same procedure as in the update protocol. The protocol for making the scheme verifiable is: <ul id="ul0009" list-style="none" compact="compact"><li>all <u>P</u><sub><u>i</u></sub> 's in <u>B</u> compute <u>k</u> + 2 random values {<u>c</u><sub><u>i j</u></sub>}<sub><u>j</u>∈ <u>B</u></sub> in <u>Z</u><sub><u>q</u></sub> each, and broadcast: <maths id="math0022" num="(3)"><math display="block"><mfenced separators=""><msub><mfenced open="{" close="}" separators=""><msup><mi>g</mi><msub><mi>c</mi><mi mathvariant="italic">ij</mi></msub></msup><mfenced><mi mathvariant="italic">mod p</mi></mfenced></mfenced><mrow><mi>j</mi><mo>∈</mo><mi>B</mi></mrow></msub><mo></mo><msub><mfenced open="{" close="}" separators=""><msup><msub><mi>E</mi><mi>j</mi></msub><msub><mi>k</mi><mi mathvariant="italic">ij</mi></msub></msup><mfenced open="[" close="]"><msub><mi>c</mi><mi mathvariant="italic">ij</mi></msub></mfenced></mfenced><mrow><mi>j</mi><mo>∈</mo><mi>B</mi></mrow></msub></mfenced></math><img file="EP0723348A2_D0022.tif" /></maths> and a signature of this message (step 612).</li></ul>
0068At step 614, all <u>P</u><sub><u>i</u></sub> 's in <u>B</u> decrypt values {<u>c</u><sub><u>j i</u></sub>}<sub><u>j∈B</u></sub> from the above broadcasts and verify whether they were given right shares from every server <u>P</u><sub><u>j</u></sub>, by taking the exponent <maths id="math0023" num=""><math display="block"><msup><mi>g</mi><msub><mi>c</mi><mi mathvariant="italic">ji</mi></msub></msup></math><img file="EP0723348A2_D0023.tif" /></maths> broadcast by <u>P</u><sub><u>j</u></sub> in the same message. If this value does not agree, <u>P</u><sub><u>i</u></sub> broadcasts an accusation <u>acc</u><sub><u>i j</u></sub> = (<u>i, j, S</u><sub><u>i</u></sub><u>[i, j]</u>) of <u>P</u><sub><u>j</u></sub> to all servers (step 616). It also marks <u>P</u><sub><u>j</u></sub> as a "bad" server.
0069At step 618, just like in the update protocol, for each accusation <u>acc</u><sub><u>j i</u></sub> by some server <u>P</u><sub><u>j</u></sub> , server <u>P</u><sub><u>i</u></sub> verifies the signature <u>S</u><sub><u>j</u></sub> [<u>j, i</u>], and if this proves that the originator of the accusation knows <u>x</u>, then <u>P</u><sub><u>i</u></sub> responds by broadcasting <u>c</u><sub><u>i j</u></sub> and the random vector used in communication with <u>P</u><sub><u>j</u></sub> : <u>resp</u><sub><u>i j</u></sub> = (<u>i, j, k</u><sub><u>i j</u></sub><u>, c</u><sub><u>i j</u></sub>), so as to allow for a public trial to determine who was cheating (step 620).
0070At step 622, every server <u>P</u> (not only the ones in <u>B</u>), for all pairs <u>acc</u><sub><u>j i</u></sub><u>, resp</u><sub><u>i j</u></sub> broadcasted in the two previous steps, verifies whether these are the true values used in the communication between <u>P</u><sub><u>i</u></sub> and <u>P</u><sub><u>j</u></sub>, and if they are, checks whether the exponent <maths id="math0024" num=""><math display="block"><msup><mi>g</mi><msub><mi>c</mi><mi mathvariant="italic">ji</mi></msub></msup><mfenced><munder><mi>mod p</mi><mo>̲</mo></munder></mfenced></math><img file="EP0723348A2_D0024.tif" /></maths> of the sent value agrees with the exponent broadcasted by <u>P</u><sub><u>i</u></sub> in the set <maths id="math0025" num=""><math display="block"><mrow><mo>(</mo><msub><mfenced open="{" close="}" separators=""><msup><mi>g</mi><msub><mi>c</mi><mi mathvariant="italic">ij</mi></msub></msup><mfenced><mi mathvariant="italic">mod p</mi></mfenced></mfenced><mrow><mi>j</mi><mo>∈</mo><mi>B</mi></mrow></msub><mn>.</mn></mrow></math><img file="EP0723348A2_D0025.tif" /></maths> This step is equivalent to the verification in step 420 of the update protocol. Either <u>P</u><sub><u>i</u></sub> or <u>P</u><sub><u>j</u></sub> will turn out to be cheaters and will be adequately marked as "bad" by <u>P</u>.
0071At step 624, every server considers its local set <u>F</u><sub><u>i</u></sub> of servers it marked as "bad" in the previous step. If | <u>F</u><sub>i</sub> | = <u>m</u> ≠ 0, they compute new <u>B: B</u> ← (<u>B</u> \ <u>F</u>) ∪ {max(<u>B</u>) + 1, ..., max(<u>B</u>) + <u>m</u>}. Due to broadcasts, all honest and active servers will have the same view of <u>F</u> and hence the same view of the new <u>B</u>. After they recompute the <u>B</u>, they start the protocol again from step 610.
0072At step 626, if nobody cheated in the previous step, every server <u>P</u><sub><u>i</u></sub> computes its subshare: <maths id="math0026" num="(4)"><math display="block"><msub><mi mathvariant="italic">aʹ</mi><mi>i</mi></msub><mo>=</mo><msub><mi>a</mi><mi>i</mi></msub><mo>+</mo><mstyle displaystyle="false"><mstyle displaystyle="true"><munder><mo>∑</mo><mrow><mi>j</mi><mo>∈</mo><mi>B</mi></mrow></munder></mstyle><msub><mi>c</mi><mi mathvariant="italic">ij</mi></msub></mstyle><mo>-</mo><mstyle displaystyle="false"><mstyle displaystyle="true"><munder><mo>∑</mo><mrow><mi>j</mi><mo>∈</mo><mi>B</mi></mrow></munder></mstyle><msub><mi>c</mi><mi mathvariant="italic">ji</mi></msub></mstyle><mfenced><mi mathvariant="italic">mod q</mi></mfenced></math><img file="EP0723348A2_D0026.tif" /></maths> At step 628, each server <u>P</u><sub><u>i</u></sub> in <u>B</u> broadcasts <maths id="math0027" num=""><math display="block"><msubsup><mi>E</mi><msub><mi>r</mi><mi>u</mi></msub><msub><mi>k</mi><mi>i</mi></msub></msubsup><mfenced open="[" close="]"><msubsup><mi>a</mi><mi>i</mi><mi>ʹ</mi></msubsup></mfenced></math><img file="EP0723348A2_D0027.tif" /></maths> to all servers where <u>k</u><sub><u>i</u></sub> is a random number in <u>Z</u><sub><u>q</u></sub>.
0073At step 630, <u>P</u><sub><u>u</u></sub> decrypts all {<i>a</i>'<i><sub>i</sub></i>}<sub><i>i</i>∈ <i>B</i></sub> from these broadcasts and computes <i>x<sub>u</sub></i> = Σ<sub><i>i</i>∈ <i>B</i></sub>a'<i><sub>i</sub></i> (<i>mod q</i>). Then it checks whether the exponent <maths id="math0028" num=""><math display="block"><msup><mi>g</mi><msub><mi>x</mi><mi mathvariant="italic">u</mi></msub></msup><mfenced><munder><mi>mod p</mi><mo>̲</mo></munder></mfenced></math><img file="EP0723348A2_D0028.tif" /></maths> of this value is the same as the public key <u>y</u><sub><u>u</u></sub> that was installed at <u>P</u><sub><u>u</u></sub> initially If it is, the reconstruction ends at step 632. If not, some server from <u>B</u> must have cheated. <u>P</u> finds the cheaters by evaluating for every <u>i</u> ∈ <u>B</u>: <maths id="math0029" num=""><math display="block"><msup><mi>g</mi><msub><mi>a</mi><mi>i</mi></msub></msup><mo>←</mo><mfenced><msub><mi>y</mi><mi>i</mi></msub></mfenced><mstyle displaystyle="false"><munder><mo>∏</mo><mrow><mi>j</mi><mo>∈</mo><mi>B</mi><mo>,</mo><mi>j</mi><mo>≠</mo><mi>i</mi></mrow></munder></mstyle><mfrac><mrow><mi>v</mi><mo>-</mo><mi>j</mi></mrow><mrow><mi>i</mi><mo>-</mo><mi>j</mi></mrow></mfrac><mfenced><mi mathvariant="italic">mod p</mi></mfenced></math><img file="EP0723348A2_D0029.tif" /></maths><maths id="math0030" num=""><math display="block"><msup><mi>g</mi><msub><mi>a</mi><mi>i</mi></msub></msup><mo></mo><mover><mo>=</mo><mo>?</mo></mover><mo></mo><msup><mi>g</mi><msub><mi>a</mi><mi>i</mi></msub></msup><mo>*</mo><mstyle displaystyle="true"><munder><mo>∏</mo><mrow><mi>j</mi><mo>∈</mo><mi>B</mi></mrow></munder></mstyle><msup><mi>g</mi><msub><mi>c</mi><mi mathvariant="italic">ij</mi></msub></msup><mo>*</mo><msup><mfenced separators=""><mstyle displaystyle="true"><munder><mo>∏</mo><mrow><mi>j</mi><mo>∈</mo><mi>B</mi></mrow></munder></mstyle><msup><mi>g</mi><msub><mi>c</mi><mi mathvariant="italic">ji</mi></msub></msup></mfenced><mfenced separators=""><mo>-</mo><mn>1</mn></mfenced></msup><mfenced><mi mathvariant="italic">mod p</mi></mfenced></math><img file="EP0723348A2_D0030.tif" /></maths> where the values <maths id="math0031" num=""><math display="block"><msub><mfenced open="{" close="}"><msup><mi>g</mi><msub><mi>c</mi><mi mathvariant="italic">ij</mi></msub></msup></mfenced><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>∈</mo><mi>B</mi></mrow></msub></math><img file="EP0723348A2_D0031.tif" /></maths> are taken from broadcasts in step 612. If the second formula does not hold, it means that <u>P</u><sub><u>j</u></sub> did not send the proper <i>a</i>'<i><sub>i</sub></i> to <u>P</u><sub><u>u</u></sub>. To prove it to others, <u>P</u><sub><u>u</u></sub> broadcasts its accusation <u>acc</u><sub><u>i</u></sub> = (<u>i</u>, <u>S</u><sub><u>temp</u></sub> [<u>i</u>]) to all other servers (step 634). Also, it itself marks all the cheaters as a "bad" set <u>F.</u>
0074At step 636, like in step 618 of this protocol, every accused server <u>P</u><sub><u>i</u></sub> verifies the signature on the accusation <u>acc</u><sub><u>i</u></sub> and if it is valid, it broadcasts response <i>resp<sub>i</sub></i> = (<i>i</i>, <i>k<sub>i</sub></i>, <i>a</i>'<i><sub>i</sub></i>).
0075At step 638, every server <u>P</u> checks all these accusations by first checking that these are the values used in the communication and then checking the same verification equations as <u>P</u><sub><u>u</u></sub> performed above. Again, they will all arrive at the same set <u>F</u> of servers they detected to be faulty. If it turns out that it is <u>P</u><sub><u>u</u></sub> who is cheating, then they will all send adequate messages to the system managers and the recovery procedure will be stopped (step 640). This event would mean that <u>P</u><sub><u>u</u></sub> is again controlled by the adversary. This is just like any other adversary detection: The system managers will read the warnings displayed by the servers and restart the whole recovery process. If however, <u>P</u><sub><u>u</u></sub> 's accusations are correct then, as usual, the servers display proper warnings for the system management and continue the recovery by recomputing the set <u>B</u>: <u>B</u> ← (<u>B</u> \ <u>F</u>) ∪ {<u>max</u>(<u>B</u>) + 1, ..., <u>max</u> (<u>B</u>) + <u>m</u>}, where |<u>F</u>| = <u>m</u>, and restarting the whole protocol from step 610.
Security of the Update Protocol in the Presence of Controlled Servers
0076Securing the above protocol in the presence of <u>k</u> cheating servers and no attacks on the links can be reduced to verifiable secret sharing. Namely, the solution is a mechanism with which the honest servers <u>P</u><sub><u>i</u></sub> will be able to detect if any particular server <u>P</u><sub><u>i</u></sub> was cheating in the protocol. In this case, they will unanimously mark its shares of updating polynomial <u>f</u><sub><u>i</u></sub> as "bad". <u>P</u><sub><u>i</u></sub> cheats in the above protocol if and only if the values that it sends to other servers in step 612 are not proper values of any <u>k</u> degree polynomial <u>f</u> over <u>Z</u><sub><u>q</u></sub> such that f(0) = 0 (<u>mod q</u>). This is a somewhat simplified case of verifiable secret sharing, which is called <u>verified sharing of a value</u>, because every server <u>P</u> distributes a known value zero among (<u>n</u> - 1) other servers (it also gives one share to itself). Just like in verifiable secret sharing, honest servers should unanimously agree whether the "secret" value zero was properly shared by <u>P</u>. Also, just like in verifiable secret sharing, it should be achieved in such a way that each server learns only its own secret share.
0077The modified steps 618-620 of the update protocol from above would be: <maths id="math0032" num=""><math display="block"><msup><msub><mi>x</mi><mi>i</mi></msub><mfenced separators=""><mi>t</mi><mo>+</mo><mn>1</mn></mfenced></msup><mo>←</mo><msup><msub><mi>x</mi><mi>i</mi></msub><mfenced><mi>t</mi></mfenced></msup><mo>+</mo><mstyle displaystyle="false"><mstyle displaystyle="true"><munder><mo>∑</mo><mrow><mi>k</mi><mo>∈</mo><msub><mi>B</mi><mi>i</mi></msub></mrow></munder></mstyle><msub><mi>f</mi><mi>k</mi></msub><mfenced><mi>i</mi></mfenced><mo></mo><mfenced><mi mathvariant="italic">mod q</mi></mfenced></mstyle><mo>,</mo></math><img file="EP0723348A2_D0032.tif" /></maths> where <u>B</u><sub><u>i</u></sub> is the set of indexes of all servers whose update polynomials were not marked as "bad" by <u>P</u><sub><u>i</u></sub>. With verifiable secret sharing mechanism, if <u>P</u><sub><u>i</u></sub> and <u>P</u><sub><u>j</u></sub> are both honest during the update phase, then <u>B</u><sub><u>i</u></sub> = <u>B</u><sub><u>j</u></sub>, <u>i.e.</u>, they will have the same judgment about the honesty of other servers.
0078Existing protocols for verifiable secret sharing all require a broadcast channel. Therefore, from this point, assume that each of the <u>n</u> secret-sharing servers has a link that connects it to a common broadcast channel like ethernet. Every message that gets onto this broadcast channel gets to all links connecting this channel to the servers.
0079If verifiable secret sharing in the presence of up to <u>k</u> cheating, disabled or frozen servers during the update is achieved, there will be at least <u>n</u> - <u>k</u> updating polynomials <u>f</u><sub><u>i</u></sub> with which every honest server will update its shares.
0080This degree of re-randomization of shares is enough to ensure the second property of the proactive scheme, namely that knowing <u>k</u> shares before the update and <u>k</u> shares after does not let the adversary reconstruct the secret. The fine point is when k servers are controlled during the update: The adversary will then know <u>k</u> shares of each updating polynomial <u>f</u><sub><u>i</u></sub>, and this will allow her to reconstruct all of them, because the free coefficient of them all is known to be zero. Hence, she can compute the total updating value δ(<u>i</u>) = (<u>f</u><sub>1</sub>(<u>i</u>)+ <u>f</u><sub>2</sub>(<u>i</u>)+ ... + <u>f</u><sub><u>n</u></sub>(<u>i</u>)) (<u>modq</u>) of every server <u>P</u><sub><u>i</u></sub> . However, if the adversary compromises a set <u>F</u> of <u>k</u> servers during the update phase, she can not compromise any other servers in either the round before or after this update. Hence she knows all {<i>x<sub>i</sub></i><sup>(t)</sup>}<sub><i>i</i>∈<i>F</i></sub> and {δ(<i>l</i>)}<sub><i>i</i>∈{1,<i>n</i>}</sub> which in particular allows her to compute {<i>x<sub>i</sub></i><sup>(<i>t</i>+1)</sup>}<sub><i>i</i>∈</sub><i><sub>F</sub> which</i> she knows anyway. But she still cannot learn any additional share <i>x<sub>i</sub></i><sup>(<i>t</i>)</sup>, <i>j</i> ∉ <i>F</i> or <i>x<sub>i</sub></i><sup>(<i>t</i>+1)</sup>, <i>j</i> ∉ <i>F</i>, which would allow her to reconstruct the secret.
Security of the Update Protocol in the Presence of "Duplication" Attacks and Link Attacks
0081If the adversary compromises server <u>A</u> in round <u>t</u> and leaves it in the same round, then during the update phase between rounds <u>t</u> and (<u>t</u> + 1) this server will not be faulty, but the adversary will know all its secrets. Assume an adversary who has only compromise servers (no active disruption of the protocol). Let <u>F</u> be the set of servers compromised by the adversary during round <u>t</u> and during the update <u>t</u>/(<u>t</u>+1). In the worst case, |<u>F</u>|= (<u>k</u> -1). Let <u>G</u> be a set of "good" servers, who are absolutely secure against the adversary both in the round and during the update. Obviously, each <u>f</u><sub><u>i</u></sub>, <u>i</u> ∈ <u>G</u> that they will send to servers <u>F</u>. Now, depending on the protocol, it may or may not learn the shares of <u>f</u><sub><u>i</u></sub>, <u>i</u> ∈ <u>G</u> that <u>A</u> gets. If servers send the shares of their updating polynomials just encrypted under the key known to <u>A</u>, then the adversary can learn them.
Proactively Secure Public Key Certification Authority
0082Presented is a complete solution showing how to apply proactive secret sharing to implement a proactively secure Key Certification Authority center. Described is a system that performs an ElGamal signature operation of messages and maintains its signature key proactively. Such a system can be effectively used as a key certification authority, because the messages it signs could be in public keys and identification tags of other users.
Distributed Version of ElGamal Signature
0083At first, assume a distributed version of the ElGamal signature algorithm, in which a signature operation is performed by a group of participating servers, who form a <u>signature center</u> together. The signature is composed of the partial signatures of these servers. It can be checked with a single public verification key. This means that, conceptually, there is also a single signature key, only that it is shared among the servers forming the signature center. The algorithm allows a change in the distribution of this secret key among the servers that share it, <u>i.e.</u>, it allows proactive update of shares.
Initialization
0084Let <u>p</u> be a large prime number and g a random number smaller than <u>p</u>. Both <u>p</u> and <u>g</u> are known by all the parties in the network. Each server <u>P</u><sub><u>i</u></sub> takes as its private key a random number <u>x</u><sub>i</sub>, where <u>i</u> ∈ {0,<u>n</u>} and <u>x</u><sub><u>i</u></sub> < <u>p</u> - 1. After the private keys of all the servers are initialized, it is required that in every consequent round, the sum <i>x</i><sub>1</sub><sup>(<i>t</i>)</sup>+<i>x</i><sub>2</sub><sup>(<i>t</i>)</sup>+...+<i>x<sub>n</sub></i><sup>(<i>t</i>)</sup>=<i>x</i>(<i>mod q</i>), where <i>x<sub>i</sub></i><sup>(<i>t</i>)</sup> stands for a private key of the server <u>P</u><sub><u>i</u></sub> at round <u>t</u> and <u>x</u> stand for a conceptual constant secret key of the signature center. Initially, each server computes the public counterpart of its private key: <maths id="math0033" num=""><math display="block"><msub><mi>y</mi><mi>i</mi></msub><mo>=</mo><msup><mi>g</mi><msub><mi>x</mi><mi>i</mi></msub></msup><mfenced><mi mathvariant="italic">mod p</mi></mfenced><mn>.</mn></math><img file="EP0723348A2_D0033.tif" /></maths>
0085Then they send out their parts of a public key to one another, so that the public verification counterpart of <u>x</u> can be computed: <maths id="math0034" num="(5)"><math display="block"><mi>y</mi><mo>←</mo><msub><mi>y</mi><mn>1</mn></msub><mo></mo><msub><mi>y</mi><mn>2</mn></msub><mo>…</mo><msub><mi>y</mi><mi>n</mi></msub><mo>=</mo><msup><mi>g</mi><msub><mi>x</mi><mn>1</mn></msub></msup><mo></mo><msup><mi>g</mi><msub><mi>x</mi><mn>1</mn></msub></msup><mo>…</mo><msup><mi>g</mi><msub><mi>x</mi><mi>n</mi></msub></msup><mo>=</mo><msup><mi>g</mi><mrow><msub><mi>x</mi><mn>1</mn></msub><mo>+</mo><msub><mi>x</mi><mn>2</mn></msub><mo>+</mo><mo>…</mo><mo>+</mo><msub><mi>x</mi><mi>n</mi></msub></mrow></msup><mfenced><mi mathvariant="italic">mod p</mi></mfenced></math><img file="EP0723348A2_D0034.tif" /></maths> The sequence (<u>p, g, y, n</u>) is a public key used for verification of the signatures produced by this signature center.
Issuing of a Signature
0086To sign message <u>m</u>, each server picks its own secret random number <u>k</u><sub><u>i</u></sub>, relative prime to (<u>p</u> - 1). Then each server <u>P</u><sub><u>i</u></sub> computes the first part of its signature: <maths id="math0035" num=""><math display="block"><msub><mi>r</mi><mi>i</mi></msub><mo>=</mo><msup><mi>g</mi><msub><mi>k</mi><mi>i</mi></msub></msup><mfenced><mi mathvariant="italic">mod p</mi></mfenced><mn>.</mn></math><img file="EP0723348A2_D0035.tif" /></maths> Each server broadcasts its <u>r</u><sub><u>i</u></sub> to other servers, so that each of them can compute a second part of its signature: <maths id="math0036" num="(6)"><math display="block"><msub><mi>s</mi><mi>i</mi></msub><mo>=</mo><msup><msub><mi>k</mi><mi>i</mi></msub><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo></mo><mfenced separators=""><mi>m</mi><mo>-</mo><msub><mi>x</mi><mi>i</mi></msub><mo></mo><msub><mi>r</mi><mn>1</mn></msub><mo></mo><msub><mi>r</mi><mn>2</mn></msub><mo>…</mo><msub><mi>r</mi><mi>n</mi></msub></mfenced><mo></mo><mfenced separators=""><mi mathvariant="italic">mod p</mi><mo>-</mo><mn>1</mn></mfenced></math><img file="EP0723348A2_D0036.tif" /></maths>
0087The value of <i>k<sub>i</sub></i><sup>-1</sup>(<i>mod p</i>-1) can be found by the Euclidean algorithm, just like in the original ElGamal signature scheme. The signed message is a following sequence: <maths id="math0037" num="(7)"><math display="block"><mi>S</mi><mfenced><mi>m</mi></mfenced><mo>=</mo><mfenced separators=""><mi>m</mi><mo>,</mo><msub><mi>s</mi><mn>1</mn></msub><mo>,</mo><msub><mi>s</mi><mn>2</mn></msub><mo>,</mo><mo>…</mo><mo>,</mo><msub><mi>s</mi><mi>n</mi></msub><mo>,</mo><msub><mi>r</mi><mn>1</mn></msub><mo>,</mo><msub><mi>r</mi><mn>2</mn></msub><mo>…</mo><mo>,</mo><msub><mi>r</mi><mi>n</mi></msub></mfenced></math><img file="EP0723348A2_D0037.tif" /></maths>
Verification of a Signature
0088The party that needs to verify the signature checks whether the following is true: <maths id="math0038" num="(8)"><math display="block"><msup><mi>g</mi><mi mathvariant="italic">nm</mi></msup><mo>=</mo><msup><mi>y</mi><mrow><msub><mi>r</mi><mn>1</mn></msub><mo></mo><msub><mi>r</mi><mn>2</mn></msub><mo>…</mo><msub><mi>r</mi><mi>n</mi></msub></mrow></msup><mo></mo><msup><msub><mi>r</mi><mn>1</mn></msub><msub><mi>s</mi><mn>1</mn></msub></msup><mo></mo><msup><msub><mi>r</mi><mn>2</mn></msub><msub><mi>s</mi><mn>2</mn></msub></msup><mo>…</mo><msup><msub><mi>r</mi><mi>n</mi></msub><msub><mi>s</mi><mi>n</mi></msub></msup><mfenced><mi mathvariant="italic">mod p</mi></mfenced></math><img file="EP0723348A2_D0038.tif" /></maths> We can show that this is true by the following transformations: <maths id="math0039" num=""><math display="block"><mtable columnalign="left"><mtr><mtd><msup><mi>y</mi><mrow><msub><mi>r</mi><mn>1</mn></msub><mo>…</mo><msub><mi>r</mi><mi>n</mi></msub></mrow></msup><mo></mo><msup><msub><mi>r</mi><mn>1</mn></msub><msub><mi>s</mi><mn>1</mn></msub></msup><mo>…</mo><msup><msub><mi>r</mi><mi>n</mi></msub><msub><mi>s</mi><mi>n</mi></msub></msup><mo>=</mo><msup><mfenced><msup><mi>g</mi><mrow><msub><mi>x</mi><mn>1</mn></msub><mo>+</mo><mo>…</mo><mo>+</mo><msub><mi>x</mi><mi>n</mi></msub></mrow></msup></mfenced><mrow><msub><mi>r</mi><mn>1</mn></msub><mo>…</mo><msub><mi>r</mi><mi>n</mi></msub></mrow></msup><mo></mo><msup><mfenced><msup><mi>g</mi><msub><mi>k</mi><mn>1</mn></msub></msup></mfenced><mrow><msup><msub><mi>k</mi><mn>1</mn></msub><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo></mo><mfenced separators=""><mi>m</mi><mo>-</mo><msub><mi>x</mi><mn>1</mn></msub><mo></mo><msub><mi>r</mi><mn>1</mn></msub><mo>…</mo><msub><mi>r</mi><mi>n</mi></msub></mfenced></mrow></msup><mo>…</mo><msup><mfenced><msup><mi>g</mi><msub><mi>k</mi><mi>n</mi></msub></msup></mfenced><mrow><msup><msub><mi>k</mi><mi>n</mi></msub><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo></mo><mfenced separators=""><mi>m</mi><mo>-</mo><msub><mi>x</mi><mi>n</mi></msub><mo></mo><msub><mi>r</mi><mn>1</mn></msub><mo>…</mo><msub><mi>r</mi><mi>n</mi></msub></mfenced></mrow></msup><mo>=</mo></mtd></mtr><mtr><mtd><mo>=</mo><msup><mi>g</mi><mrow><msub><mi>x</mi><mn>1</mn></msub><mo></mo><msub><mi>r</mi><mn>1</mn></msub><mo>…</mo><msub><mi>r</mi><mi>n</mi></msub><mo>+</mo><mo>…</mo><mo>+</mo><msub><mi>x</mi><mi>n</mi></msub><mo></mo><msub><mi>r</mi><mn>1</mn></msub><mo>…</mo><msub><mi>r</mi><mi>n</mi></msub></mrow></msup><mo></mo><msup><mi>g</mi><mrow><mi>m</mi><mo>-</mo><msub><mi>x</mi><mn>1</mn></msub><mo></mo><msub><mi>r</mi><mn>1</mn></msub><mo></mo><msub><mi>r</mi><mn>2</mn></msub><mo>…</mo><msub><mi>r</mi><mi>n</mi></msub></mrow></msup><mo></mo><msup><mi>g</mi><mrow><mi>m</mi><mo>-</mo><msub><mi>x</mi><mi>n</mi></msub><mo></mo><msub><mi>r</mi><mn>1</mn></msub><mo>…</mo><msub><mi>r</mi><mi>n</mi></msub></mrow></msup><mo>=</mo><msup><mi>g</mi><mrow><mi>n</mi><mo>*</mo><mi>m</mi></mrow></msup><mfenced><mi mathvariant="italic">mod p</mi></mfenced></mtd></mtr></mtable></math><img file="EP0723348A2_D0039.tif" /></maths>
Security Analysis
0089The security of the above basic distributed ElGamal algorithm, as well as the rest of the present protocol, relies on the assumption that computing logarithms in the final field of big prime order is computationally infeasible in probabilistic polynomial time. This is the fundamental security assumption of the ElGamal and DSA encryption and signature schemes. The above distributed version of ElGamal public key algorithm is just as secure as the original version. If the attacker can break the present invention's algorithm, she would be able to break the regular ElGamal as well. Assume that the attacker knows <u>m, S</u>(<u>m</u>) and <u>x</u><sub>1</sub>, <u>x</u><sub>2</sub>,...,<u>X</u><sub><u>n</u>-1</sub>. What she still needs is <u>x</u><sub><u>n</u></sub>. She can compute <maths id="math0040" num=""><math display="block"><msup><mi>g</mi><msub><mi>x</mi><mi>n</mi></msub></msup><mo>=</mo><mi>y</mi><mo>*</mo><msup><mi>g</mi><mrow><mo>-</mo><mfenced separators=""><msub><mi>x</mi><mn>1</mn></msub><mo>+</mo><msub><mi>x</mi><mn>2</mn></msub><mo>+</mo><mo>…</mo><mo>+</mo><msub><mi>x</mi><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub></mfenced></mrow></msup><mo>,</mo></math><img file="EP0723348A2_D0040.tif" /></maths> where negative exponent is computed modulo (<u>p</u> - 1). We substitute <i>x</i> = <i>x<sub>n</sub>s<sub>n</sub></i>, <i>k</i> = <i>k<sub>n</sub>r</i><sub>1</sub><i>r</i><sub>2</sub>...<i>r<sub>n</sub>.</i> Then the attacker knows: <maths id="math0041" num=""><math display="block"><msup><mi>g</mi><mi>x</mi></msup><mo>=</mo><msup><mfenced><msup><mi>g</mi><msub><mi>x</mi><mi>n</mi></msub></msup></mfenced><msub><mi>s</mi><mi>n</mi></msub></msup><mfenced><mi mathvariant="italic">mod p</mi></mfenced><mo>,</mo><msup><mi>g</mi><mi>k</mi></msup><mo>=</mo><msup><mfenced><msup><mi>g</mi><msub><mi>k</mi><mi>n</mi></msub></msup></mfenced><mrow><msub><mi>r</mi><mn>1</mn></msub><mo></mo><msub><mi>r</mi><mn>2</mn></msub><mo>…</mo><msub><mi>r</mi><mi>n</mi></msub></mrow></msup><mfenced><mi mathvariant="italic">mod p</mi></mfenced></math><img file="EP0723348A2_D0041.tif" /></maths> and <i>x</i>+1 = <i>s<sub>n</sub>k<sub>n</sub></i> + <i>x<sub>n</sub>r</i><sub>1</sub><i>r</i><sub>2</sub>...,<sub>(<i>2</i></sub> = <i>m</i> (mod p-1). In this set of three equations, one of the first two can be derived from the rest. For example, <i>g<sup>k</sup></i> = g<sup><i>x</i>+<i>k</i></sup>(<i>g<sup>x</sup></i>) (<u>mod p</u>-1). So, left are the following two equations, where <u>a, b</u> are known and <u>x, k</u> are unknown: <maths id="math0042" num=""><math display="block"><msup><mi>g</mi><mi>x</mi></msup><mo>=</mo><mi>a</mi><mfenced><mi mathvariant="italic">mod p</mi></mfenced><mspace width="4em" /><mi>x</mi><mo>+</mo><mi>k</mi><mo>=</mo><mi>b</mi><mo></mo><mfenced separators=""><mi mathvariant="italic">mod p</mi><mo>-</mo><mn>1</mn></mfenced></math><img file="EP0723348A2_D0042.tif" /></maths>
0090The security of the original ElGamal algorithm is based on the fact that the second equation does not give out any information about <u>x</u>, if <u>k</u> is unknown, and hence, ElGamal is as secure as it is computationally infeasible to compute a logarithm <u>x =</u> log<sub>g</sub><u>a</u> (<u>mod p</u>) in probabilistic polynomial time.
Adapting the Distributed ElGamal to Proactive Threshold Secret Sharing Scheme
0091The present invention incorporates Shamir polynomial secret-sharing to the above distributed ElGamal. This incorporation creates a threshold proactive scheme, but the threshold is only during the round. As noted before, threshold during the update phase requires recovery mechanism. This scheme does not achieve robustness. Hence, this preliminary scheme is secure against an adversary who: <ul id="ul0010" list-style="bullet" compact="compact"><li>Can compromise up to <u>k</u> servers in each round.</li><li>Can freeze up to <u>k</u> servers during the round, but not during an update phase.</li></ul>
0092The present invention is related to the Desmedt and Frankel solution of threshold secret-sharing in the exponent, described in <nplcit id="ncit0008" npl-type="s"><text>Threshold Cryptosystems, Crypto 89, pp. 307-15</text></nplcit>, which is hereby incorporated by reference. Their idea was to use Shamir threshold secret-sharing by polynomial of degree <u>k</u> and then compute the exponent of the secret with a group of (<u>k</u> + 2) honest servers by computing components of Lagrange interpolation formula locally at each server. The similarity between their scheme and the present invention is that both use Lagrange reconstruction of a secret shared with a polynomial, but nobody can learn the reconstruction secret in the process. The secret is only <u>used</u> to either exponentiate a message (in the case of Desmedt and Frankel) or issue an ElGamal-derived signature (in the present invention). The present invention uses <u>k</u> degree polynomial function <u>f</u> to secret-share f (0) = <u>x</u> among n servers. It picks <u>p</u> and the element <u>g ∈ Z</u><sub><u>p</u></sub> so that g is of prime order <u>q</u>, <u>i.e.</u>, <u>g</u><sup><u>q</u></sup> = 1 (mod p). <u>Q</u> Should be as big as possible, so that <u>p</u> = <u>mq</u> + 1 , <u>m</u> ∈ {2,3,4}. The public key becomes now a sequence (<u>p, q, g, y, k</u>).
0093The present invention assumes that during a safe initialization stage, each server gets its secret share of <u>x, x</u><sub>i</sub> = <u>f</u>(<u>i</u>), where <u>f</u> is computed in <u>Z</u><sub><u>q</u></sub>. To issue a signature, the servers agree on a group <u>B</u> of any (<u>k</u> + 2) active servers that will participate in signing. The other servers are idle. Knowing set <u>B</u>, each server <u>P</u><sub><u>i</u></sub>, <u>i</u> ∈ <u>B</u> computes: <maths id="math0043" num="(9)"><math display="block"><msub><mi>a</mi><mi>i</mi></msub><mo>=</mo><msup><msub><mi>x</mi><mi>i</mi></msub><mo>*</mo></msup><mstyle displaystyle="true"><munder><mo>∏</mo><mrow><mi>j</mi><mo>∈</mo><mi>B</mi><mo>,</mo><mi>j</mi><mo>≠</mo><mi>i</mi></mrow></munder></mstyle><mfrac><mrow><mn>0</mn><mo>-</mo><mi>j</mi></mrow><mrow><mi>i</mi><mo>-</mo><mi>j</mi></mrow></mfrac><mfenced><mi mathvariant="italic">mod q</mi></mfenced></math><img file="EP0723348A2_D0043.tif" /></maths> From the Lagrange interpolation formula, this ensures that <maths id="math0044" num="(10)"><math display="block"><mstyle displaystyle="false"><mstyle displaystyle="true"><munder><mo>∑</mo><mrow><mi>i</mi><mo>∈</mo><mi>B</mi></mrow></munder></mstyle><msub><mi>a</mi><mi>i</mi></msub></mstyle><mo>=</mo><mi>x</mi><mfenced><mi mathvariant="italic">mod q</mi></mfenced></math><img file="EP0723348A2_D0044.tif" /></maths> because ∀<sub><u>i</u></sub>, <u>x</u><sub>i</sub> = <u>f</u>(<u>i</u>), <u>x</u> = <u>f</u>(0) and <u>f</u> is a <u>k</u> degree polynomial in <u>Zq</u>. The existence of inverses of (<u>i</u> - <u>j</u>), i ≠ <u>j</u> is ensured by the fact that <u>q</u> is prime. Using <u>a</u><sub><u>i</u></sub> 's as their partial secrets, servers in <u>B</u> issue their partial signatures (<u>r</u><sub><u>i</u></sub> ,<u>s</u><sub><u>i</u></sub>), <u>i ∈ B</u> following the basic proactive protocol from above: <maths id="math0045" num=""><math display="block"><msub><mi>r</mi><mi>i</mi></msub><mo>=</mo><msup><mi>g</mi><msub><mi>k</mi><mi>i</mi></msub></msup><mfenced><mi mathvariant="italic">mod p</mi></mfenced></math><img file="EP0723348A2_D0045.tif" /></maths><maths id="math0046" num=""><math display="block"><mtable><mtr><mtd><msub><mi>s</mi><mi>i</mi></msub><mo>=</mo><msup><msub><mi>k</mi><mi>i</mi></msub><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo>*</mo><mfenced separators=""><mi>m</mi><mo>-</mo><msub><mi>a</mi><mi>i</mi></msub><mstyle displaystyle="true"><munder><mo>∏</mo><mrow><mi>j</mi><mo>∈</mo><mi>B</mi></mrow></munder></mstyle><msub><mi>r</mi><mi>j</mi></msub></mfenced><mo></mo><mfenced><mi mathvariant="italic">mod q</mi></mfenced></mtd></mtr><mtr><mtd><mi>S</mi><mfenced><mi>m</mi></mfenced><mo>=</mo><mfenced separators=""><mi>m</mi><mo></mo><msub><mfenced open="{" close="}"><mfenced separators=""><msub><mi>r</mi><mi>i</mi></msub><mo></mo><msub><mi>s</mi><mi>i</mi></msub></mfenced></mfenced><mrow><mi>i</mi><mo>∈</mo><mi>B</mi></mrow></msub></mfenced></mtd></mtr></mtable></math><img file="EP0723348A2_D0046.tif" /></maths> The verification formula becomes: <maths id="math0047" num="(11)"><math display="block"><msup><mi>g</mi><mrow><mfenced separators=""><mi>k</mi><mo>+</mo><mn>2</mn></mfenced><mo>*</mo><mi>m</mi></mrow></msup><mo>=</mo><mi>y</mi><mstyle displaystyle="false"><munder><mo>∏</mo><mrow><mfenced separators=""><msub><mi>r</mi><mi>i</mi></msub><mo></mo><msub><mi>s</mi><mi>i</mi></msub></mfenced><mo>∈</mo><msub><mi>S</mi><mfenced><mi>m</mi></mfenced></msub><mo></mo><msub><mi>r</mi><mi>i</mi></msub></mrow></munder></mstyle><mstyle displaystyle="true"><munder><mo>∏</mo><mrow><mfenced separators=""><msub><mi>r</mi><mi>i</mi></msub><mo></mo><msub><mi>s</mi><mi>i</mi></msub></mfenced><mo>∈</mo><mi>s</mi><mfenced><mi>m</mi></mfenced></mrow></munder></mstyle><msubsup><mi>r</mi><mi>i</mi><msub><mi>s</mi><mi>i</mi></msub></msubsup><mfenced><mi mathvariant="italic">mod p</mi></mfenced></math><img file="EP0723348A2_D0047.tif" /></maths>
Verification and Robustness in Signing Protocol
0094The first property that must be added to the above preliminary threshold scheme is robustness during the round. This will make it secure against an adversary who can control up to <u>k</u> servers, but still only during the round, not during an update phase. The above threshold scheme is <u>signers-dependent</u>, because it is essential that before issuing the signature, honest servers agree on the (<u>k</u> + 2) element set <u>B</u> of servers that will cooperate to sign the message. To be able to pick set <u>B</u> of some currently active, honest servers, a mechanism with which honest servers can filter out cheaters is needed. Formally, each server, knowing <u>B, m</u> and <u>S</u>(<u>m</u>), should be able to verify for every server <u>P</u><sub><u>i</u></sub>, <u>i</u> ∈ <u>B</u>, whether its partial signature (<u>r</u><sub><u>i</u></sub>, <u>s</u><sub><u>i</u></sub>) ∈ <u>S</u>(<u>m</u>) is <u>correct</u>, in the sense of being computed according to the protocol with the same <u>m</u>, <u>g, p, q</u> and the proper secret key <u>a</u><sub><u>i</u></sub> computed according to equation (5).
0095To enable this mutual partial verification between the servers, the present invention treats secret shares <i>x<sub>i</sub></i><sup>(<i>t</i>)</sup> of each server as their private signature keys and gives all other servers the public verification counterpart to these keys: <maths id="math0048" num=""><math display="block"><msup><msub><mi>y</mi><mi>i</mi></msub><mfenced><mi>t</mi></mfenced></msup><mo>=</mo><msup><mi>g</mi><msup><msub><mi>x</mi><mi>i</mi></msub><mfenced><mi>t</mi></mfenced></msup></msup><mfenced><munder><mi>mod p</mi><mo>̲</mo></munder></mfenced><mn>.</mn></math><img file="EP0723348A2_D0048.tif" /></maths> Every honest processor <u>P</u> (not only those that are currently in <u>B</u>) verifies a partial signature (<u>r</u><sub><u>i</u></sub><u>, s</u><sub><u>i</u></sub>) ∈ <u>S(m)</u> of every server <u>P</u><sub><u>i</u></sub> in <u>B</u> in the following two steps: <ol id="ol0007" compact="compact" ol-style=""><li>1. Knowing current <u>B</u> and <maths id="math0049" num=""><math display="block"><msub><mi>y</mi><mi>i</mi></msub><mo>=</mo><msup><mi>g</mi><msub><mi>x</mi><mi>i</mi></msub></msup><mfenced><munder><mi>mod p</mi><mo>̲</mo></munder></mfenced><mo>,</mo></math><img file="EP0723348A2_D0049.tif" /></maths><u>P</u> computes <maths id="math0050" num=""><math display="block"><msup><mi>g</mi><msub><mi>a</mi><mi>i</mi></msub></msup><mo>=</mo><msup><mfenced><msub><mi>y</mi><mi>i</mi></msub></mfenced><mstyle displaystyle="false"><munder><mo>∏</mo><mrow><mi>j</mi><mo>∈</mo><mi>B</mi><mo>,</mo><mi>j</mi><mo>≠</mo><mi>i</mi><mo></mo><mfrac><mrow><mn>0</mn><mo>-</mo><mi>j</mi></mrow><mrow><mi>i</mi><mo>-</mo><mi>j</mi></mrow></mfrac><mfenced><mi mathvariant="italic">mod q</mi></mfenced></mrow></munder></mstyle></msup><mfenced><mi mathvariant="italic">mod q</mi></mfenced><mn>.</mn></math><img file="EP0723348A2_D0050.tif" /></maths></li><li>2. Having computed <maths id="math0051" num=""><math display="block"><msup><mi>g</mi><msub><mi>a</mi><mi>i</mi></msub></msup></math><img file="EP0723348A2_D0051.tif" /></maths> as above, <u>P</u> takes <u>S(m)</u> and verifies <u>P</u><sub><u>i</u></sub> 's signature by the equation: <maths id="math0052" num=""><img file="EP0723348A2_D0052.tif" /></maths></li></ol>
0096In this way, all honest servers can determine set F ⊏<u>B</u> of faulty servers that cheated while issuing the signature <u>S(m</u>). * Since the servers are ordered by their indices <u>i</u> ∈ {1, <u>n</u>}, it is trivial for honest servers to update set <u>B</u> to filter out the detected cheaters and try a new set of active servers. For example, at the beginning of every round they start with <u>B</u> = 1, 2,..., <u>k</u> + 2 and every time they sign and detect a set of <u>m</u> > 0 cheaters <u>F</u> = {<u>i</u><sub>1</sub>, <u>i</u><sub>2</sub>,...<u>i</u><sub><u>m</u></sub>}, they take <maths id="math0053" num="(13)"><math display="block"><mi>B</mi><mo>←</mo><mfenced separators=""><mi>B</mi><mo>∖</mo><mi>F</mi></mfenced><mo>∪</mo><mfenced open="{" close="}" separators=""><mi>max</mi><mfenced><mi>B</mi></mfenced><mo>+</mo><mn>1</mn><mo>,</mo><mo>…</mo><mo>,</mo><mi>max</mi><mfenced><mi>B</mi></mfenced><mo>+</mo><mi>m</mi></mfenced></math><img file="EP0723348A2_D0053.tif" /></maths> Since the present invention assumes that at every round, up to <u>k</u> servers can be taken over by the adversary and thus can be cheating, the following update will be performed no more than <u>k</u> times (in the case when the cheaters come out "one by one"). This is equivalent to issuing up to <u>k</u> extra signatures every round. This is a negligible overhead.
0097The update protocol from above can be extended to ensure maintenance of public counterparts <i>y<sub>i</sub></i><sup>(<i>t</i>)</sup>, of secret shares <i>x<sub>i</sub></i><sup>(<i>t</i>)</sup> for every round <u>t</u>. In step (2), when server <u>P</u><sub><u>i</u></sub> sends <u>f</u><sub><u>i</u></sub> (<u>j</u>) to <u>P</u><sub><u>j</u></sub>, it also sends <maths id="math0054" num=""><math display="block"><msup><mi>g</mi><mrow><msub><mi>f</mi><mi>i</mi></msub><mfenced><mi>j</mi></mfenced></mrow></msup></math><img file="EP0723348A2_D0054.tif" /></maths> to all other servers. This will allow all the servers to compute the public key for all i: <maths id="math0055" num="(14)"><math display="block"><msup><msub><mi>y</mi><mi>i</mi></msub><mfenced separators=""><mi>t</mi><mo>+</mo><mn>1</mn></mfenced></msup><mo>←</mo><msup><msub><mi>y</mi><mi>i</mi></msub><mfenced><mi>t</mi></mfenced></msup><mo>*</mo><mfenced separators=""><msup><mi>g</mi><mrow><msub><mi>f</mi><mn>1</mn></msub><mfenced><mi>i</mi></mfenced></mrow></msup><mo></mo><msup><mi>g</mi><mrow><msub><mi>f</mi><mn>2</mn></msub><mfenced><mi>i</mi></mfenced></mrow></msup><mo>…</mo><msup><mi>g</mi><mrow><msub><mi>f</mi><mi>n</mi></msub><mfenced><mi>i</mi></mfenced></mrow></msup></mfenced><mo></mo><mfenced><mi mathvariant="italic">mod p</mi></mfenced></math><img file="EP0723348A2_D0055.tif" /></maths> Assuming "hardness" of computing logarithms in <u>Z</u><sub><u>p</u></sub>, broadcasting <maths id="math0056" num=""><math display="block"><msup><mi>g</mi><mrow><msub><mi>f</mi><mi>i</mi></msub><mfenced><mi>j</mi></mfenced></mrow></msup></math><img file="EP0723348A2_D0056.tif" /></maths> does not help the adversary.
0098Although the present invention and its advantages have been described in detail, it should be understood that various changes, substitutions and alterations can be made herein without departing from the spirit and scope of the invention as defined by the appended claims.
Contents5
63 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19 Sheet 20 Sheet 21 Sheet 22 Sheet 23 Sheet 24 Sheet 25 Sheet 26 Sheet 27 Sheet 28 Sheet 29 Sheet 30 Sheet 31 Sheet 32 Sheet 33 Sheet 34 Sheet 35 Sheet 36 Sheet 37 Sheet 38 Sheet 39 Sheet 40 Sheet 41 Sheet 42 Sheet 43 Sheet 44 Sheet 45 Sheet 46 Sheet 47 Sheet 48 Sheet 49 Sheet 50 Sheet 51 Sheet 52 Sheet 53 Sheet 54 Sheet 55 Sheet 56 Sheet 57 Sheet 58 Sheet 59 Sheet 60 Sheet 61 Sheet 62 Sheet 63
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US8085938B2 | Cited by | United States of America | Applicant |
| EP3330880A4 | Cited by | European Patent Office (EPO) | Search report |
| WO02088912A3 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| EP1676396A4 | Cited by | European Patent Office (EPO) | Search report |
| US10867018B2 | Cited by | United States of America | Applicant |
| DE19847944A1 | Cited by | Germany | Search report |
| WO02088912A2 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| CN112183566A | Cited by | China | Search report |
| WO02088912A3 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| EP1676396A1 | Cited by | European Patent Office (EPO) | Search report |
| US8718283B2 | Cited by | United States of America | Applicant |
| US7330969B2 | Cited by | United States of America | Applicant |
| CN110999206A | Cited by | China | Search report |
| US7263191B2 | Cited by | United States of America | Applicant |
| WO2005076518A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US7035405B1 | Cited by | United States of America | Applicant |
| US7219226B2 | Cited by | United States of America | Applicant |
4 members in 3 offices; this record represents the family
Priority claims4
| Document | Office | Kind | Date |
|---|---|---|---|
| 37658095 | United States of America | A | |
| 19950376580 | United States of America | – | |
| US19950376580 | – | – | – |
| 376580 | – | – | – |
Members4
| Document | Office | Kind | |
|---|---|---|---|
| EP0723348A2This record | European Patent Office (EPO) | A2 | |
| JPH08251157A | Japan | A | |
| US5625692A | United States of America | A | |
| JP3256427B2 | Japan | B2 |
4 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Application withdrawnWithdrawn18W | 18W | |
| Information on the status of an ep patent application or granted ep patentGrantedSTATUS: THE APPLICATION HAS BEEN WITHDRAWNSTAA | STAA | |
| Designated contracting statesAK | AK | |
| Public reference made under article 153(3) epc to a published international application that has entered the european phaseORIGINAL CODE: 0009012PUAI | PUAI |
Numbers
- Publication
- 0723348
- Publication, DOCDB
- 0723348
- Publication, EPODOC
- EP0723348
- Application
- 95119792
- Application, DOCDB
- 95119792
- Application, EPODOC
- EP19950119792
Titles3
- German
- Verfahren und Einrichtung für Kryptosystem mit öffentlichem Schlüssel und mit gemeinsamer, proaktiver sicher rückgewinnbarer verteilter Schwellwertnutzung einer geheimen Information
- English
- Method and system for a public key cryptosystem having proactive, robust, and recoverable distributed threshold secret sharing
- French
- Procédé et système cryptographique productif et robuste à clé publique et à partage distribué de secret récupérable à seuil
Classification
- CPC, 3
- H04L9/0891
- H04L9/085
- H04L9/3252
- IPC, 4
- C04B28 06
- G09C1 00
- H04L9 08
- H04L9 30
Designated states3
- Contracting states, 3
- Germany
- France
- United Kingdom