Implementation and Empirical Measurements Clause Samples

Implementation and Empirical Measurements. We have implemented a prototype of our DCGKA algorithm in around 3500 lines of Java. The im- plementation is available as an open-source project on GitHub.3 We use a Java implementation of Curve25519 [7];4 all other cryptographic primitives use the built-in cryptography providers of the JVM. We ran the evaluation using OpenJDK 8 on a single machine with 16 GiB memory and an 8-core Intel i7 processor. Our implementation demonstrates that the performance of DCGKA is good enough for practical use in medium-sized groups of up to 128 members, even with an implementation that is not highly optimized. In our experiments we execute multiple test scenarios consisting of an initial group setup followed by a 3▇▇▇▇▇://▇▇▇▇▇▇.▇▇▇/trvedata/key-agreement 4▇▇▇▇▇://▇▇▇▇▇▇.▇▇▇/trevorbernard/curve25519-java‌ single group membership, PCS update, or message send operation. We measure the network traffic and CPU time resulting from that operation (including the processing of messages at all group members, and including any acknowledgments). We run all clients as separate threads in a single process and pass messages as serialized byte arrays. Hash functions and symmetric encryption use a 128-bit security level. create add remove message update 105 Total data sent [bytes] 104 103 Figure 5: The total data volume sent by all clients while executing each type of operation, for groups ranging from 8 to 128 members. Broadcast messages are counted as a single outgoing message. 102 create add remove message update Sender: CPU time [ms] Recipients: CPU time [ms] 101 100 10 1 Figure 6: The CPU time (on a single core) to execute an operation, per sender or recipient, for groups ranging from 8 to 128 members. The error bars show the standard deviation over 25 independent executions. Figure 5 shows that the total traffic for creating a group, adding a group member, or removing a group member grows linearly with the group size, as expected. Creating a new group of 128 members results in 43.4 kB being sent, and PCS updates (39.6 kB) and the group membership operations add (75.5 kB) and remove (39.3 kB) are in the same order of magnitude. Sending an application message incurs a constant overhead of 139 bytes regardless of group size. For our evaluation we send a 32 byte payload. Figure 6 shows that the average computational effort on the sender or recipient side does not exceed 150 ms for group creation, PCS update, and membership operations on groups up to 128 members. For groups up to 64 memb...