round counter d := 2δ. This modification is indistinguishable, since it only stores information and does not alter the communication.
2. If G is corrupted, accept a message (set, m1, m2, m3) from S. Check if there are i 6= j such that mi = mj. If so, set mL1, mL2, mL3 to mi. Else set mL1 = m1, mL2 = m2, mL3 = m3. This modification again only stores information.
3. When S attempts to pass output m from an uncorrupted party p in the simulation back to the dummy party, only allow it to pass through Fbyz-ideal if either
a) m has been stored as mp in Fbyz-ideal, or b) the message is retreat.
We have to argue the indistinguishability of this modification. A real protocol party will only output a message other than retreat when it has received two identical messages. This will only happen if
a) G is honest—then, m will have been provided by Z through dummy party G and thus saved for every party in the ideal functionality, or
b) G is corrupted and sent two identical messages. In this case, S will have used the set-message to provide these messages and they will also have been saved for every party.
4. Introduce Fwrap as a wrapper around Fbyz-ideal. For each notification that a round is complete from Fwrap decrease the delay value d and notify S that the round is complete. Fwrap will not notify S about activations in phase 4 (“output”), but Fbyz-ideal instead. The simulator is thus not able to accurately simulate the exact order of outputs. However, the simulator is still able to determine the set of messages to output for each party in each round: he still is notified about the input to the protocol, when a party sends a message, and when a round is complete. We alter the strategy of S to make the modification indistinguishable: in each round, observe which parties will output a message and notify the ideal functionality that these parties are ready for output. Now, when Z activates a party and expects output, the ideal functionality will output possible messages for that specific party.
This allows for all messages other than retreat to be output correctly. So, if d = 0 after the fourth activation of a party, Fbyz-ideal just outputs retreat, mimicking the behaviour in the real model. Fbyz-ideal and S now behave as specified in the ideal model, perfectly emulating the real model.
This concludes the proof.
3.8 Firewalls Revisited
In this section, we improve upon our previous results. We already showed that a quorum of three firewalls realises a secure firewall under the condition that at most one firewall is
corrupted. Our previous analysis lacks an availability guarantee though. We prove this guarantee for the construction in the now-improved model. First, we briefly restate the construction.
hw1
fw1
fw2
fw3
hw2
Figure 3.19: The three-firewall network. The graph directly serves as the network model for FnetG : G = (V, E) with V = {hw1, hw2, f w1, f w2, f w3} and E0 = {(hw1, f w1), (hw1, f w2), (hw1, f w3), (hw2, f w1), (hw2, f w2), (hw2, f w3)}, E = E0∪ {(v, u) | (u, v) ∈ E0}.
Definition 5 (The functionality of an ideal firewall Ffwj).
Ffwj : P × V × S → (P ∪ ⊥) × (V ∪ ⊥) × S
Ffwj(p, v, s) =
((p0, v0, s0) if output is generated, (⊥, ⊥, s0) else.
Definition 5 provides a modified definition of the firewall function from Section 3.6, adapted to work with our graph based network model (Figure 3.13), using the network graph presented in Figure 3.19. The function accepts a packet p, a node from the network graph v and a state s and outputs another packet, another node (the receiver of that packet) and a new state.
Protocol πfw (Definition 6) realises the three firewall solution as expressed using our tools. Figure 3.20 shows the corresponding ideal functionality.
Definition 6 (Protocol πfw).
• party hwk:
1. “Input”: Upon the first activation by message (input, m) from Z, save m.
2. “Fetch”: Upon the second activation by message (output) from Z,
3.8 Firewalls Revisited – call Ffw-net(fetch, {fw1, fw2, fw3}), save the message m corresponding to
fwi as (m, i);
– if there are two entries (m, i) and (−m, i) on the tape, delete both.
3. “Send”: Upon the third activation by message (output) from Z, call
Ffw-net(send, (fw1, m), (fw2, m), (fw3, m)) if m was saved previously. Delete m.
4. “Output”: Upon the fourth activation by message (output) from Z, if there are two saved entries (m, i) and (m0, i0) with m ≡ m0 and i 6= i0: delete both messages and output m. If i, i0 6= 1, save (−m, 1), else if i, i0 6= 2, save (−m, 2), else if i, i06= 3, save (−m, 3).
5. “RoundOK”: Upon the fifth activation by message (output) from Z, send (RoundOK) to Fclock.
• party fwk:
2. “Fetch”: Upon the second activation by message (output) from Z,
– call Ffw-net(fetch, hw1, hw2) and save the message m corresponding to hwi as (m, i);
– for all saved messages (m, i): compute Ffwk(m, i, s) = (m0, i0, s0) and replace that (m, i) with (m0, i0).
4. “Output”: Upon the fourth activation by message (output) from Z, if there are two messages (m, i) and (m0, i0), call Ffw-net(send, (hwi, m), (hwi0, m0)).
5. “RoundOK”: Upon the fifth activation, send (RoundOK) to Fclock. Theorem 7. πparallel realises Ffw-ideal in the Fnetfw,δ-hybrid model.
Proof. We prove the lemma via a series of transformations, starting from the real model.
In each step we will modify the ideal functionality and argue that the modification is indistinguishable. We will w.l.o.g. assume that fw3 is corrupted. Encapsulate the network in a new machine S, introduce dummies for all fwi and hwi, and construct a new machine Ffw-ideal which connects the dummy machines with their counterparts in the (now simulated) real network. Modify Ffw-ideal step-wise:
1. Introduce variables to keep state for the firewalls. When receiving (input, m) through hwk, evaluate the firewall functionalities Ffw1 and Ffw2, update the respective firewall states and save the output packets p1 and p2 in a list Qk as (in, 1, p1, 2δ) and (in, 2, p2, 2δ). This modification stores additional information but does not alter the communication and is thus indistinguishable.
2. When being advised to output a message p for a party hwk by the simulator, only do so if there is an entry (in, i, p, d) in Qk and delete that entry. Every message scheduled by the simulator in this manner was output by one of the firewalls in its simulation. Consequently, this message is also stored in Qk. The real protocol party fwk will internally delete all messages it outputs. Thus, this modification is indistinguishable.
The ideal functionality of the firewall architecture Ffw-idealδ
Maintain a list of scheduled packets for each direction: Q1, Q2. Let w.l.o.g. fw3 be the corrupted party. In each case, if there are multiple entries to choose from, pick the first.
• Upon receiving (input, m, hwk) from Fwrap: Compute the firewall functions and update the internal states. Let the outputs of Ffw1 and Ffw2 be p0 and p00. Store (in, 1, p0, 2δ) and (in, 2, p00, 2δ) in Qk if there is no entry (missing, 1, p0, 0) or (missing, 2, p00, 0) respectively. Send (input, m, hwk) to the adversary.
• Upon receiving (output, hwk) from Fwrap:
– If there are two entries (in, 1, p0, 0) and (in, 2, p0, 0) in Qk, erase the corre-sponding entries from the queue and output p0 to hwk.
– Else: if there is an entry (deliver, i, p, d) in Qk remove it. Check if there is another entry (in, i0, p, d0) in Qk with i 6= i0. If so, remove that entry too, if not, add an entry (missing, |i − 3|, p, 0) to Qk.
• Upon receiving (RoundComplete) from Fwrap: Replace each entry (in, i, p, d) (or deliver, i, p, d) with d > 0 in Q with (in, i, p, d − 1) (or (deliver, i, p, d) and send (RoundComplete) to the adversary.
• Upon receiving (output, p, hwk) from the adversary: if there is an entry (in, i, p, d) in Qk, replace it by (deliver, i, p, d).
Figure 3.20: The parallel firewall network expressed using the newly-introduced tools.
Parties hw are responsible for distributing incoming and merging outgoing packets. They will output a packet to the environment not more than once per round.
3. When a packet p is output based on any entry (. . . , i, p, d) in Qk, check if there is another entry (. . . , j, p, d) with i 6= j. If so, delete that entry as well. If not, add an entry (missing, |i − 3|, p, d) to Qk. Further, when receiving (input, m) through hwk
and evaluating the firewall functionalities, before saving the resulting packets p1 and p2, check if there is an entry (missing, 1, p1, 2δ) or (missing, 2, p2, 2δ) in Qk. If there is, remove that entry and do not save the resulting packet. This modification is indistinguishable as Ffw-ideal now implements the exact behaviour of hw1 and hw2.
4. Add Fwrap as a wrapper around Ffw-ideal. When receiving (RoundComplete) from Fwrap, decrease the delay value d of each entry in Q1and Q2by 1. Send (RoundComplete) to the simulator. When being advised to output a packet p for party hwk by the
3.9 Implementing the Setup Assumption