System for secure and private communication in a triple-connected network5161186Abstract An apparatus and method for secure and private communications in a triple-connected processor network. Communication of a message over at least three data paths is achieved by transmitting the message in coded form over the data paths, determining whether the message is correctly received, and if the message is not correctly received, identifying a non-faulty data path, testing remaining data paths to identify a faulty data path, and transmitting the message in coded form over remaining non-faulty data paths. Claims We claim: Description BACKGROUND OF THE INVENTION
______________________________________
Wire 1 Wire 2 Wire 3 Value
______________________________________
0 0 0 v
1 0 0 v'
0 1 1 v'
1 1 1 v
______________________________________
In CODE1, the values "1" and "0" indicate, in commonly-understood binary form, signalling states of the wires. Hereinafter, the signalling state of a wire is referred to as the wire's "bit," which may have a binary value of 1 or 0. Now, with reference to CODE1, it will be shown in the protocol that if exactly one wire of Wire 2 and Wire 3 is faulty, such that a bit transmitted over the faulty wire inverts, then R can detect the fault by testing to determine whether the received sequence is found in the code. For example, if the sequence 000 is transmitted over wires 1-3, and 001 is received, the bit inversion caused by a fault in Wire 3 results in a sequence that does not exist in CODE1. The same result occurs if Wire 2 inverts. If Wire 1 is faulty and flips its bit, R will not detect the fault because the resultant sequence is still within the code and will be interpreted as the value v or its inverse NOT v(v'). Wire 1 is thus referred to as the "flipper" for CODE1. By a cyclic right shift of the rows of the table defining CODE1, CODE2 is obtained with flipper Wire 2. By a second cyclic right shift, CODE3 is obtained with flipper Wire 3, as shown below.
______________________________________
Wire 1 Wire 2 Wire 3 Value
______________________________________
CODE 2
0 0 0 v
0 1 0 v'
1 0 1 v'
1 1 1 v
______________________________________
CODE 3
0 0 0 v
0 0 1 v'
1 1 0 v'
1 1 1 v
______________________________________
Consider now the following protocol which is presented in pseudocode form to illustrate and describe a procedure for sending a message having a value w from one to another of the processors 20 and 30 using the three vertex-disjoint data paths illustrated in FIG. 1. In the protocol, the designations S and R are not intended to effect a unidirectional signal path. Instead, all processors would be programmed to execute the entire protocol as both sender and receiver. As indicated, the protocol may be incorporated in a program including a series of executable instructions prepared using any of a number of conventional programming languages. In the protocol, the message w may be any value. However, in the following discussion, w is understood to represent a single bit of information whose value may be 1 or 0. The single-bit value w may be part of a series of bits representing information to be transferred between S and R. As used below, a "codeword" represents a three-bit sequence or encoded representation of the single bit message w, each codeword bit being carried by one of the wires for parallel transmission of all three bits. The values Fault and NewFault are flags indicating the presence of a faulty wire. A fault exists when a wire changes or "flips" its bit during transmission of the message. Any given wire may exhibit four possible behavior patterns during transmission from S to R, two of which represent a fault situation. In addition, if no message is received, the missing bit is treated as a "0." The protocol assumes that at most one wire is faulty. If more than one wire is faulty, the three path network will be incapable of sending a message and an error will result. The term "p.sub.1 p.sub.2 p.sub.3 " represents a random three-bit codeword transmitted over the wires. The term "p" represents a single bit value corresponding to the codeword p.sub.1 p.sub.2 p.sub.3. The term q.sub.1 q.sub.2 q.sub.3 is the codeword received by R when S transmits p.sub.1 p.sub.2 p.sub.3. Randomness is achieved using the pseudo random number generator 160 as shown in FIG. 1. Each processor 20 and 30 is shown as including a pseudo random number generator 160 because it is assumed that each processor is programmed to function as both a Sender and a Receiver. It will be understood, however, that random number generation is necessary only during the Send mode.
______________________________________
PROTOCOL TO SEND VALUE W
______________________________________
PHASE 1
S: Randomly choose x = x.sub.1 x.sub.2 x.sub.3, one of the two
CODE1 codewords corresponding to the value
w, and y = y.sub.1 y.sub.2 y.sub.3, one of the two CODE2
codewords corresponding to w.
Send x.sub.i y.sub.i over Wirei, 1 < = i < = 3
R: Set a flag, Fault := false;
For 1 < = i < = 3, let a.sub.i b.sub.i denote the two
bits received over Wire i (missing bits are
treated as 0's)
IF a.sub.1 a.sub.2 a.sub.3 is a codeword of CODE1 correspond-
ing to a value A AND
b.sub.1 b.sub.2 b.sub.3 is a codeword of CODE2 correspond-
ing to a value B AND
A = B, THEN set w:=A;
ELSE IF
a.sub.1 a.sub.2 a.sub. 3 is a codeword of CODE1 corres-
ponding to a value A AND
b.sub.1 b.sub.2 b.sub.3 is a codeword of CODE2 corres-
ponding to a value B AND
A not equal B,
THEN set Fault :=true; Send "Wire 3 is good"
over the public channel
ELSE IF
b.sub.1 b.sub.2 b.sub.3 is NOT a codeword of CODE2,
THEN set Fault :=true; Send "Wire 2 is good"
over the public channel
ELSE IF
a.sub.1 a.sub.2 a.sub.3 is NOT a codeword of CODE1
THEN set Fault :=true; Send "Wire 1 is good"
over the public channel
FI
PHASE 2
S: IF no message received over the public channel in
previous phase
THEN set Fault :=false;
ELSE let Wire i be the good wire found by R in
previous phase.
Choose a random value p in v, v', and choose
a random encoding p.sub.1 p.sub.2 p.sub.3 of p in CODEi,
the code with Wire i as flipper and send p.sub.j
on wire j, 1 < = j < = 3;
FI
R: Set NewFault :=false;
IF Fault = false, THEN do nothing;
ELSE let q.sub.1 q.sub.2 q.sub.3 be received over wires 1-3
respectively and let Wire i be the good wire
found in previous phase.
IF q.sub.1 q.sub.2 q.sub.3 is a codeword in CODEi, THEN
let p be the corresponding value;
ELSE send the 3-bit vector (q.sub.1 q.sub.2 q.sub.3) over
the public channel and set NewFault :=true;
FI
PHASE 3
S: IF Fault = false THEN do nothing;
ELSE IF no message received from R in PHASE 2,
THEN send XOR(p,w) over the public channel;
ELSE find the unique j such that p.sub.j not
equal q.sub.j and send "Wire j faulty" over the
public channel;
Choose random w.sub.1 w.sub.2 such that
w = XOR(w.sub.1 w.sub.2) and send w.sub.i over Wire
((j - 1 + i)(mod3) + 1), i = 1, 2.
FI
R: IF NewFault = false THEN let x be the value
received over the public channel; set
w = XOR(p,x);
ELSE set w = XOR(w.sub.1 w.sub.2), where w.sub.i is the
value received on Wire ((j - 1 + i)(mod3) + 1),
i = 1, 2 and j is the wire announced faulty by
S in the current phase.
FI
End of Protocol
______________________________________
In accordance with the above protocol, a single-bit message w is transmitted in secrecy (as a codeword) and the integrity of the wires is tested to determine that the message w has been received correctly. It will be noted that the processors S and R may be synchronized for communications over the network using a conventional handshaking arrangement to control data transfer therebetween. Alternatively, in a preferred implementation, a transmission-response delay would follow each communication to await an appropriate response. Assuming an initial transmission time of To, and a predetermined upper time limit D required for a message to be transmitted and received between S and R, the maximum time to transfer a message under ideal conditions will be To +D. Thus, R waits in the worst case until To +2D before taking action following a secret message from S. That is because of the possibility that in sending a secret message, one of the paths is delayed in transferring its message bit. More precisely, R waits a maximum D time from the moment it receives two bits of information on the second of two paths to see if anything is coming on the third path. If the original transmission was at To, then since two paths are non-faulty, R will hear on two distinct paths no later than at time To +D. However, R does not know To, thus when it hears on two paths it does not know if the time is very close to To or very far (To +D), so it waits an additional D time to be sure it has heard on all non-faulty paths. Because the response of R is always a public message, S need only wait an additional time interval D before taking action after R has processed and responded to the secret message from S. The maximum processing time required by R is known by S to be T.sub.R. Thus, if a secret message is sent by S at time To, S will not take further action until To + 3D +T.sub.R. If S sends a public message, the time delay until further action is To +2D +T.sub.R. The flow diagrams of FIGS. 2, 3 and 4 illustrate the sequence of steps undertaken to send and receive, respectively, the message w between processors S and R in accordance with the protocol. As shown in FIG. 2, the processor S first executes a conventional power-up and initialization sequence. Thereafter, it is assumed that S is ready to send a message to processor R, the message having one or more message bits w. Starting with the first message bit w, S encodes w as a three-bit codeword x.sub.1 x.sub.2 x.sub.3 in CODE1. S then encodes w as a three-bit codeword y.sub.1 y.sub.2 y.sub.3 in CODE2. For each wire i, S sends sequential bits x.sub.i y.sub.i of the codewords previously encoded at time To. PHASE 1 processing by S terminates at time To +2D and S waits until time To +3D +T.sub.R before commencing PHASE 2. In PHASE 2, processor S tests to determine whether a public message was received from processor R over the public channel during PHASE 1. If no public message was received, S sets the Fault flag to false, indicating that the secret message w was received correctly. Thereafter, processor S commences PHASE 3 execution. If S did receive a public message from R in PHASE 1, the secret message w was received incorrectly, and the public message represents the identification of a non-faulty wire i. Using that information, processor S selects a random value p in v, v' and randomly encodes the value p to form a three-bit codeword p.sub.1 p.sub.2 p.sub.3 in Code i. S sends that codeword over wires 1-3 to processor R. S waits a further time interval 3D +T.sub.R before commencing PHASE 3. PHASE 2 execution terminates. In PHASE 3, processor S tests to determine whether the Fault flag is false. If so, indicating that the secret message w was correctly received by R in PHASE 1 and that no faulty wires were detected, S returns to PHASE 1 for transmission of the next message w. If the Fault flag is true, indicating the detection of a bad wire in PHASE 1, S tests to determine whether a message was received from processor R in PHASE 2. If no mesesage was received, S sends the result of an Exclusive-OR comparison of the value p and the message w over the public channel. Thereafter, processor S returns to PHASE 1 execution for transmission of the next message bit w. If a message was received from R in PHASE 2, that message will be a three-bit vector q.sub.1 q.sub.2 q.sub.3 resulting from a faulty transmission of p.sub.1 p.sub.2 p.sub.3 by S. Processor S compares the codeword p.sub.1 p.sub.2 p.sub.3 with the received codeword q.sub.1 q.sub.2 q.sub.3 sent by R and finds a unique wire j such that p.sub.j is not equal to q.sub.j. S sends a message over the public channel stating that the identified wire j is faulty. S then chooses random one-bit values w.sub.1 w.sub.2 such that the message w equals the result of an Exclusive-Or comparison of w.sub.1 w.sub.2. S sends the values w.sub.1 w.sub.2 over the remaining non-faulty wires. S then returns to PHASE 1 execution for transmission of the next message bit w. As shown in FIGS. 2, 3, and 4, the receiving processor R operates in accordance with the following sequence. In PHASE 1 execution, R executes a conventional start-up initialization procedure. It sets the Fault flag to false and awaits receipt of the two codewords corresponding to the message w transmitted by S in PHASE 1. Upon receipt of two message bits each on two wires R waits a maximum time interval of D for the last pair of message bits (on the third wire). The received codewords are designated a.sub.1 a.sub.2 a.sub.3, equal to the value A, and b.sub.1 b.sub.2 b.sub.3, equal to the value B. R first tests the received codewords to determine whether they are codewords in CODE1 and CODE2. If they are, R tests to determine whether the values A and B are equal. If so, R equates the message w with the value A and commences PHASE 2 execution. If the values A and B are not equal, R sets the Fault flag to true and sends a message indicating that wire 3 is good over the public channel to processor S. PHASE 2 execution then commences. If R determines that the received code word a.sub.1 a.sub.2 a.sub.3 is not in CODE1 or the codeword b.sub.1 b.sub.2 b.sub.3 is not in CODE2, the processor tests whether the codeword b.sub.1 b.sub.2 b.sub.3 is NOT in CODE2. If so, the Fault flag is set to true and a message indicating that Wire 2 is good is sent over the public channel to processor S. PHASE 2 execution then commences. If processor R determines that a.sub.1 a.sub.2 a.sub.3 is not in CODE1 or b.sub.1 b.sub.2 b.sub.3 is not in CODE2, R tests to determine whether the codeword a.sub.1 a.sub.2 a.sub.3 is not in CODE1. If so, the Fault flag is set to true and a message indicating that wire 1 is good is sent over the public channel to processor S. PHASE 2 execution then commences. In PHASE 2 execution, R sets the NewFault flag to false. It then tests to determine whether the Fault flag is false. If so, R returns to PHASE 1 execution to receive a new message w. If the Fault flag is true, R waits for and then tests the codeword q.sub.1 q.sub.2 q.sub.3 from S to determine whether the codeword is in CODEi, where i is the wire determined to be good in PHASE 1. If q.sub.1 q.sub.2 q.sub.3 is in CODEi, indicating that there are no identified faulty wires, R determines the value p corresponding to q.sub.1 q.sub.2 q.sub.3 in CODEi. PHASE 3 execution then commences. If q.sub.1 q.sub.2 q.sub.3 is not in CODEi, indicating the presence of a faulty wire other than WIRE i, R sends the three-bit vector q.sub.1 q.sub.2 q.sub.3 to S over the public channel. It then sets the NewFault flag to true and commences PHASE 3 execution. In PHASE 3, R tests to determine whether the NewFault flag is false. If it is, indicating that no faulty wires were identified in PHASE 2, R equates the message w with the result of an Exclusive-OR comparison of the value p and the value x received from processor S over the public channel. The value x is the result of the Exclusive-Or comparison of p and w sent by S in PHASE 3. Execution then returns to PHASE 1 for receipt of the next message w. If the NewFault flag is true, indicating the presence of a faulty wire, processor R equates the message w with the result of an Exclusive-OR comparison of the values w.sub.1 w.sub.2 received from the processor S in PHASE 3 over the non-faulty wires identified by S. Execution then returns to PHASE 1 for receipt of the next message w. An advantage of the above-described protocol is the minimal number of communication bits required to transmit a single bit of data w. It will be appreciated that in the failure-free case, only six bits of communication are necessary to send a.sub.1 a.sub.2 a.sub.3 and b.sub.1 b.sub.2 b.sub.3 in PHASE 1. In the worst case, thirty-two bits of communication are necessary. Six bits are required to send a.sub.1 a.sub.2 a.sub.3 and b.sub.1 b.sub.2 b.sub.3 in PHASE 1. Six bits are required to send "Wire j is good" in PHASE 1 by sending j (which takes two bits) over each of the three wires. Three bits are required to send p.sub.1 p.sub.2 p.sub.3 and nine bits are required to send q.sub.1 q.sub.2 q.sub.3 (over the public channel) in PHASE 2. Six bits are used to send "Wire j is faulty" in PHASE 3. Two bits are required to send w.sub.1 w.sub.2 in PHASE 3. Note that two bits can be eliminated for a total of thirty bits, by optimizing the transmission of "Wire j is faulty" by not sending that message over the faulty wire j. The maximum number of bits sent over any wire is two in the failure-free case and nine in the worst case. PROOF OF CORRECTNESS There are two assertions to be proved: that secrecy is maintained with respect to any single wire, and that the message is correctly transferred from S to R, both under the assumption that at most one wire is faulty. 1. Assertion (a) No faulty wire ever learns the secret message w. (b) If faults occur independent of the bits transmitted on the faulty wire, then no non-faulty wire ever learns the secret message w. Proof (a) First, examining the codes, Codei is the code in which Wire i is the flipper. There are exactly two codewords corresponding to each value in the message space. For each value v and each Wire i the probability that in transmitting a codeword corresponding to v a 1 is sent over Wire i is exactly 1/2, so there is no information in the bit sent over Wire i in a single transmission. Moreover, every time a new codeword is chosen, it is chosen independently of previous codewords. Thus, each of the four possible pairs of bits vv' sent in PHASE 1 over Wire i appears with probability 1/4, regardless of the value of w, the secret S wishes to transmit. A faulty wire has four basic behavior patterns in which it can engage in PHASE 1, according to whether or not it interferes with the transmission of each of its two bits. In each case, it completely determines the public message sent by R at the end of PHASE 1, so there is no additional information about w gained by any wire by studying R's response. In PHASE 2, by the properties of Codei, the faulty wire learns nothing about w from the random pad p sent to R. This time the faulty wire is not a flipper so the faulty wire completely determines whether or not R detects a failure. If R detects a failure, the information it sends over the public channel is information about p, which is random and independent of w. Thus, again the faulty wire learns nothing about w. In PHASE 3, if the pad p was destroyed in PHASE 2, then the faulty wire is not used at all. If p was successfully transmitted, then the Exclusive-Or value p .sym. w is sent over the public channel. In this case, the security of w follows from the security of p. This completes the proof of Assertion 1(a). (b) Fix a non-faulty wire z. The argument that z learns nothing about the secret w from the initial transmissions of w according to Code i, i =1, 2, is the same as the corresponding argument for the faulty wire. Since by assumption the faulty wire disrupts independent of the bits transmitted over it in PHASE 1, each non-faulty wire z learns nothing from the existence or absence of an error about the bits sent over any other wire. Thus in PHASE 1, wire z learns nothing about the secret w. A similar argument applies to PHASE 2. In particular, the absence of disruption in PHASE 2 yields no information to non-faulty wire z about the bit in the encoding of p sent over any wire other than z itself. Finally, in PHASE 3 if the transmission of p was not disrupted in PHASE 2 then the secrecy of p guarantees the secrecy of w when p .sym. w is transmitted over the public channel. If transmission of p was disrupted in PHASE 2, then the information sent over wire z in PHASE 3 is distributed uniformly at random from {0,1}, so again wire z learns nothing about the secret w. This completes the proof of Assertion 1(b). 2. Assertion w is correctly transferred in the presence of a single faulty wire. Proof If a faulty wire is a flipper, its misbehavior will not be detected. If it is not a flipper, misbehavior will be detected, although R may not know which of the two non-flippers is faulty. Thus, if codewords corresponding to the same value are sent using two different flippers, and decoding yields the same value in both cases. This must be the actual value sent. Thus, if R finishes PHASE 1 with fault =false, R has correctly received w. If CODE1 and CODE2 codewords corresponding to two different values are received then the fault must be one of the flippers, Wires 1 and 2, so Wire 3 is not faulty. If a non-codeword is received in CODEi then Wire i, the flipper in Code i, is correct. Thus in any of the three cases in which fault is set to true, a good wire is correctly found. Assuming R finished PHASE 1 with fault =true, if in PHASE 2 NewFault remains false, then since the flipper is good in the code used in PHASE 2, the pad p is correctly received. However, if NewFault becomes true, then S can correctly identify the faulty wire by the information it receives from R over the public channel. Assuming R finishes PHASE 2 with NewFault =true, S informs R of which wire is faulty, so R only takes further information from the two correct wires. In that case, it receives over those wires precisely what was sent: two bits that sum(mod2) to w. Accordingly, there has been described a preferred embodiment of a system for secure and private communication in a triple-connected network. While embodiments have been shown and described, it should be understood that modifications and adaptations thereof will occur to persons skilled in the art. Therefore, the protection afforded the invention should not be limited except in accordance with the spirit of the following claims and their equivalents.
|
Same subclass Same class Consider this |
||||||||||
