diff --git a/.gitignore b/.gitignore index 7585238..bd3a7c8 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ book +.DS_Store diff --git a/README.md b/README.md index d47d97c..e0a01db 100644 --- a/README.md +++ b/README.md @@ -14,4 +14,9 @@ Then build and serve ```bash mdbook serve -``` \ No newline at end of file +``` + +## Diagrams + +All diagrams are made with [draw.io](https://app.diagrams.net/). The diagram source files are stored in the `diagrams` folder. +The diagram sources can be converted to `png` with the `convert_all.sh` script in the diagrams folder. \ No newline at end of file diff --git a/diagrams/client-state-diagram.drawio b/diagrams/client-state-diagram.drawio new file mode 100644 index 0000000..79194e3 --- /dev/null +++ b/diagrams/client-state-diagram.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/diagrams/convert_all.sh b/diagrams/convert_all.sh new file mode 100755 index 0000000..5bbe1d0 --- /dev/null +++ b/diagrams/convert_all.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Convert all diagrams in the diagrams folder to pngs in the mdbook src/png-diagrams folder +SOURCE_DIR=$(dirname "$0") +TARGET_DIR=$(realpath "$(dirname "$0")/../src/png-diagrams/") + +OS=$(uname) +case "$OS" in +"Darwin") # Mac + DRAW_IO="/Applications/draw.io.app/Contents/MacOS/draw.io" + ;; +"Linux") # Linux + DRAW_IO="drawio" + ;; +esac + +if ! command -v "$DRAW_IO" &>/dev/null; then + echo "Error: draw.io executable not found. Please install draw.io and make sure it's in your PATH." + exit 1 +fi + +pushd "$SOURCE_DIR" >/dev/null +for file in *.drawio; do + "$DRAW_IO" -x -f png --scale 2.5 -o "${TARGET_DIR}/${file%.drawio}.png" "$file" +done +popd >/dev/null diff --git a/diagrams/crate_structure.drawio b/diagrams/crate_structure.drawio new file mode 100644 index 0000000..16c244e --- /dev/null +++ b/diagrams/crate_structure.drawio @@ -0,0 +1 @@ +5VrbcpswEP0aP6YDAmL7Mc2lmbaZtpN0EvelI4MKuAIxQvjSr68I4mqMscEWaZ+MVgtIZ4/OroRH2rW3/kBh4DwQC+ERUKz1SLsZAaAqU8B/YssmsRjTcWKwqWsJp9zw6P5B6Z3CGrkWCkuOjBDM3KBsNInvI5OVbJBSsiq7/SK4/NYA2mjL8GhCvG19di3mJNaJoeT2e+TaTvpmVRE9c2j+timJfPE+n/go6fFg+hjhGjrQIqvC+7TbkXZNCWHJlbe+RjiGNUUsue9uR282ZIp81uYG/BHP7qMZtZ7vpvZirtpPTLnQJmJwbJNigSwOjWgSyhxiEx/i29z6/nW+KH6swluLyAtSf0hNbsnv+kxIwM1q7IYY24jIw4gRbnKYh0UvnwPdvBQbs/jx74y0ebMWr0tam6yVsknjrWQu8QR2YiRMIYmoKbx+mJ8mT+Him7fCj+76ylj+fFhdpCyE1EasyS8PJV8diHiID4/fSBGGzF2WBwIFTe3ML48XvxAhqw9f0yiXEEfiTV5gXpiEoq2w5kGLIV45LkOPAXzFYMUXdTkcO3FbIsrQukri0sxFr57yXkiCni6mVWGBCZNTWFu60h2reqrrjVRHeE5Wp2b52mUvKXP5dYHjvJVTPG7kDB/YytDbrgztTCujPtqG/GinkSsEa1aK1VAjJ1PS9FpJgy4ZnKJpk/MpWn2cmhWtTfLuImKZcM0KPXtErIelcAzzjYM0a2u5SROx8UCqsyzkYzkx70X+2pJA7xjy11uvKIWbgkNAXJ+FhSd/jQ25uGRikorLpVGu5iv++mWjP79IRpCTL5tKBz5Oh8ZHcBQfx4MlZC3swJDCSP0wRoJmBh/KyO8hol/mi3i3DxQM5wgnj2U4zKsBcUhQ09OYOIt4Ct5LrCu0al2hnqyu4M0CroeUGjt2mi41Izdh0aAwPOdus7GSKAAWMbfI0AGhJb2SBc27tRNXsmohh7TejiulFHLUdvyoc6lxyyoG6LWZSlYpC4DMCB9buIJhFAqtgy6lUKgmfjBtLhSqhUXF/zSlq6525t+/eShUx61aBNXpmfSjcZiFfBpQwlNet2RqwdDJfHvIrKCSWbOUKS2zXkrVXUkH3UcthMkbzaya3Mz6prfgrYMuJbPqulFWk0nlE+8+/32ZuDlzd87EjZAXlNwnHP/NsJS8etovX8m3v4x0/9DbN2rVneU5UatXRznfSHrcJR6qcw3F2xl0rlOwUhb8z0V66/Cd5qh4R/yaTmNN7MYTAu0OZPfvLXo5kd2SrBrgW1fx5z2RbcQ6U/wjkQa9n333i/TpTiJrkOam/P93SX2T/79Ru/0L \ No newline at end of file diff --git a/diagrams/data_provenance.drawio b/diagrams/data_provenance.drawio new file mode 100644 index 0000000..57f2480 --- /dev/null +++ b/diagrams/data_provenance.drawio @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/diagrams/gc-types.drawio b/diagrams/gc-types.drawio new file mode 100644 index 0000000..13219a7 --- /dev/null +++ b/diagrams/gc-types.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/diagrams/intro-diagram.drawio b/diagrams/intro-diagram.drawio new file mode 100644 index 0000000..58558be --- /dev/null +++ b/diagrams/intro-diagram.drawio @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/diagrams/key_exchange.drawio b/diagrams/key_exchange.drawio new file mode 100644 index 0000000..ba55fdf --- /dev/null +++ b/diagrams/key_exchange.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/diagrams/overview.drawio b/diagrams/overview.drawio new file mode 100644 index 0000000..9af3a0b --- /dev/null +++ b/diagrams/overview.drawio @@ -0,0 +1,198 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/diagrams/overview2.drawio b/diagrams/overview2.drawio new file mode 100644 index 0000000..fb4597f --- /dev/null +++ b/diagrams/overview2.drawio @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/diagrams/overview3.drawio b/diagrams/overview3.drawio new file mode 100644 index 0000000..cb4f0aa --- /dev/null +++ b/diagrams/overview3.drawio @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/diagrams/overview_notarization.drawio b/diagrams/overview_notarization.drawio new file mode 100644 index 0000000..ed0dbbc --- /dev/null +++ b/diagrams/overview_notarization.drawio @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/diagrams/protocol.drawio b/diagrams/protocol.drawio new file mode 100644 index 0000000..f947461 --- /dev/null +++ b/diagrams/protocol.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/diagrams/transcript.drawio b/diagrams/transcript.drawio new file mode 100644 index 0000000..d8b4452 --- /dev/null +++ b/diagrams/transcript.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/src/mpc/deap.md b/src/mpc/deap.md index aea197f..4d1449f 100644 --- a/src/mpc/deap.md +++ b/src/mpc/deap.md @@ -9,7 +9,7 @@ Since during the `Equality Check` all of the Notary's secrets are revealed to Us ## Introduction -Malicious secure 2-party computation with garbled circuits typically comes at the expense of dramatically lower efficiency compared to execution in the semi-honest model. One technique, called Dual Execution [[MF06]](https://www.iacr.org/archive/pkc2006/39580468/39580468.pdf) [[HKE12]](https://www.cs.umd.edu/~jkatz/papers/SP12.pdf), achieves malicious security with a minimal 2x overhead. However, it comes with the concession that a malicious adversary may learn $k$ bits of the other's input with probability $2^{-k}$. +Malicious secure 2-party computation with garbled circuits typically comes at the expense of dramatically lower efficiency compared to execution in the semi-honest model. One technique, called Dual Execution [\[MF06\]](https://www.iacr.org/archive/pkc2006/39580468/39580468.pdf) [\[HKE12\]](https://www.cs.umd.edu/~jkatz/papers/SP12.pdf), achieves malicious security with a minimal 2x overhead. However, it comes with the concession that a malicious adversary may learn $k$ bits of the other's input with probability $2^{-k}$. We present a variant of Dual Execution which provides different trade-offs. Our variant ensures complete privacy _for one party_, by sacrificing privacy entirely for the other. Hence the name, Dual Execution with Asymmetric Privacy (DEAP). During the execution phase of the protocol both parties have private inputs. The party with complete privacy learns the authentic output prior to the final stage of the protocol. In the final stage, prior to the equality check, one party reveals their private input. This allows a series of consistency checks to be performed which guarantees that the equality check can not cause leakage. @@ -31,7 +31,7 @@ We assume that it is acceptable for either party to cause the protocol to abort ### Committed Oblivious Transfer -In the last phase of our protocol Bob must open all oblivious transfers he sent to Alice. To achieve this, we require a very relaxed flavor of committed oblivious transfer. For more detail on these relaxations see section 2 of [Zero-Knowledge Using Garbled Circuits [JKO13]](https://eprint.iacr.org/2013/073.pdf). +In the last phase of our protocol Bob must open all oblivious transfers he sent to Alice. To achieve this, we require a very relaxed flavor of committed oblivious transfer. For more detail on these relaxations see section 2 of [Zero-Knowledge Using Garbled Circuits \[JKO13\]](https://eprint.iacr.org/2013/073.pdf). ### Notation @@ -86,7 +86,7 @@ Bob, even if malicious, has learned nothing except the purported output $v^A$ an Alice, if honest, has learned the correct output $v$ thanks to the authenticity property of garbled circuits. Alice, if malicious, has potentially learned Bob's entire input $y$. -[^1]: This is a significant deviation from standard DualEx protocols such as [[HKE12]](https://www.cs.umd.edu/~jkatz/papers/SP12.pdf). Typically the output labels are _not_ returned to the Generator, instead, output authenticity is established during a secure equality check at the end. See the [section below](#malicious-alice) for more detail. +[^1]: This is a significant deviation from standard DualEx protocols such as [\[HKE12\]](https://www.cs.umd.edu/~jkatz/papers/SP12.pdf). Typically the output labels are _not_ returned to the Generator, instead, output authenticity is established during a secure equality check at the end. See the [section below](#malicious-alice) for more detail. ### Equality Check @@ -103,13 +103,13 @@ Bob is now convinced that $v^A$ is correct, ie $f(x, y) = v^A$. Bob is also assu ### Malicious Alice -[On the Leakage of Corrupted Garbled Circuits [DPB18]](https://eprint.iacr.org/2018/743.pdf) is recommended reading on this topic. +[On the Leakage of Corrupted Garbled Circuits \[DPB18\]](https://eprint.iacr.org/2018/743.pdf) is recommended reading on this topic. -During the first execution, Alice has some degrees of freedom in how she garbles $G_A$. According to [DPB18], when using a modern garbling scheme such as [ZRE15], these corruptions can be analyzed as two distinct classes: detectable and undetectable. +During the first execution, Alice has some degrees of freedom in how she garbles $G_A$. According to \[DPB18\], when using a modern garbling scheme such as \[ZRE15\], these corruptions can be analyzed as two distinct classes: detectable and undetectable. Recall that our scheme assumes Bob's input is an ephemeral secret which can be revealed at the end. For this reason, we are entirely unconcerned about the detectable variety. Simply providing Bob with the output labels commitment $\mathsf{com}_{[V]_A}$ is sufficient to detect these types of corruptions. In this context, our primary concern is regarding the _correctness_ of the output of $G_A$. -[DPB18] shows that any undetectable corruption made to $G_A$ is constrained to the arbitrary insertion or removal of NOT gates in the circuit, such that $G_A$ computes $f_A$ instead of $f$. Note that any corruption of $d_A$ has an equivalent effect. [DPB18] also shows that Alice's ability to exploit this is constrained by the topology of the circuit. +\[DPB18\] shows that any undetectable corruption made to $G_A$ is constrained to the arbitrary insertion or removal of NOT gates in the circuit, such that $G_A$ computes $f_A$ instead of $f$. Note that any corruption of $d_A$ has an equivalent effect. \[DPB18\] also shows that Alice's ability to exploit this is constrained by the topology of the circuit. Recall that in the final stage of our protocol Bob checks that the output of $G_A$ matches the output of $G_B$, or more specifically: @@ -125,9 +125,9 @@ To address this, Alice is forced to choose $f_A$, $x_1$ and $x_2$ prior to Bob r ### Malicious Bob -[Zero-Knowledge Using Garbled Circuits [JKO13]](https://eprint.iacr.org/2013/073.pdf) is recommended reading on this topic. +[Zero-Knowledge Using Garbled Circuits \[JKO13\]](https://eprint.iacr.org/2013/073.pdf) is recommended reading on this topic. -The last stage of our variant is functionally equivalent to the protocol described in [JKO13]. After Alice evaluates $G_B$ and commits to $[v]_B$, Bob opens his garbled circuit and all OTs entirely. Following this, Alice performs a series of consistency checks to detect any malicious behavior. These consistency checks do _not_ depend on any of Alice's inputs, so any attempted selective failure attack by Bob would be futile. +The last stage of our variant is functionally equivalent to the protocol described in \[JKO13\]. After Alice evaluates $G_B$ and commits to $[v]_B$, Bob opens his garbled circuit and all OTs entirely. Following this, Alice performs a series of consistency checks to detect any malicious behavior. These consistency checks do _not_ depend on any of Alice's inputs, so any attempted selective failure attack by Bob would be futile. Bob's only options are to behave honestly, or cause Alice to abort without leaking any information. diff --git a/src/mpc/key_exchange.md b/src/mpc/key_exchange.md index d34e636..5712a5e 100644 --- a/src/mpc/key_exchange.md +++ b/src/mpc/key_exchange.md @@ -2,7 +2,7 @@ In TLS, the first step towards obtaining TLS session keys is to compute a shared secret between the client and the server by running the [ECDH protocol](https://en.wikipedia.org/wiki/Elliptic-curve_Diffie–Hellman). The resulting shared secret in TLS terms is called the pre-master secret `PMS`. - + Using the notation from Wikipedia, below is the 3-party ECDH protocol between the `Server` the `Requester` and the `Notary`, enabling the `Requester` and the `Notary` to arrive at shares of `PMS`. diff --git a/src/outdated/dual_execution_with_privacy_only_for_the_user.md b/src/outdated/dual_execution_with_privacy_only_for_the_user.md index 6383132..c5087a5 100644 --- a/src/outdated/dual_execution_with_privacy_only_for_the_user.md +++ b/src/outdated/dual_execution_with_privacy_only_for_the_user.md @@ -43,7 +43,7 @@ Ideal functionality for ONESHOTENC: We now describe the protocol at a high level. It is based on Figure 1 of the [Dual-Execution (DualEx) technique](https://www.cs.virginia.edu/~evans/pubs/oakland2012/quidproquotocols.pdf) with a relaxation (see Step 3 below). We overcome DualEx's inherent leakage by introducing a consistency check which the User performs on the Notary, thus removing the ability to leak the User's input. It is still possible for a malicious User to leak the Notary's input (i.e. the AES key share), but it gives her no meaningful advantage as per the first observation above. ### Part 1 -To set up for dual-execution, the parties set up the OTs. Because we have a privacy-free step later, the Notary's OT needs to be opened up later, so we have the notary do a "committed OT" (see section 2 of [JKO13](https://eprint.iacr.org/2013/073)), so that he can be forced to open the labels later on. +To set up for dual-execution, the parties set up the OTs. Because we have a privacy-free step later, the Notary's OT needs to be opened up later, so we have the notary do a "committed OT" (see section 2 of \[JKO13\](https://eprint.iacr.org/2013/073)), so that he can be forced to open the labels later on. In the first step of the protocol, the User has to get her AES ciphertext from the Notary. The User does not trust the Notary (for privacy or integrity), and the User's data is far more sensitive to leakage than the Notary's. So the parties do an ordinary DualEx: diff --git a/src/overview.md b/src/overview.md index 8956338..b8b3c5d 100644 --- a/src/overview.md +++ b/src/overview.md @@ -3,4 +3,4 @@ The following diagram is a high-level protocol overview introducing the main components of TLSNotary. -![TLSNotary Overview](tlsnotary_overview.png) +![TLSNotary Overview](./png-diagrams/intro-diagram.png) diff --git a/src/png-diagrams/client-state-diagram.png b/src/png-diagrams/client-state-diagram.png new file mode 100644 index 0000000..dfe5ee1 Binary files /dev/null and b/src/png-diagrams/client-state-diagram.png differ diff --git a/src/png-diagrams/crate_structure.png b/src/png-diagrams/crate_structure.png new file mode 100644 index 0000000..51f0525 Binary files /dev/null and b/src/png-diagrams/crate_structure.png differ diff --git a/src/png-diagrams/data_provenance.png b/src/png-diagrams/data_provenance.png new file mode 100644 index 0000000..af7903d Binary files /dev/null and b/src/png-diagrams/data_provenance.png differ diff --git a/src/png-diagrams/gc-types.png b/src/png-diagrams/gc-types.png new file mode 100644 index 0000000..b3d0bcc Binary files /dev/null and b/src/png-diagrams/gc-types.png differ diff --git a/src/png-diagrams/intro-diagram.png b/src/png-diagrams/intro-diagram.png new file mode 100644 index 0000000..2121b4c Binary files /dev/null and b/src/png-diagrams/intro-diagram.png differ diff --git a/src/png-diagrams/key_exchange.png b/src/png-diagrams/key_exchange.png new file mode 100644 index 0000000..48db956 Binary files /dev/null and b/src/png-diagrams/key_exchange.png differ diff --git a/src/png-diagrams/overview.png b/src/png-diagrams/overview.png new file mode 100644 index 0000000..6cec5a8 Binary files /dev/null and b/src/png-diagrams/overview.png differ diff --git a/src/png-diagrams/overview2.png b/src/png-diagrams/overview2.png new file mode 100644 index 0000000..5e8ebb7 Binary files /dev/null and b/src/png-diagrams/overview2.png differ diff --git a/src/png-diagrams/overview3.png b/src/png-diagrams/overview3.png new file mode 100644 index 0000000..780521b Binary files /dev/null and b/src/png-diagrams/overview3.png differ diff --git a/src/png-diagrams/overview_notarization.png b/src/png-diagrams/overview_notarization.png new file mode 100644 index 0000000..f1ab879 Binary files /dev/null and b/src/png-diagrams/overview_notarization.png differ diff --git a/src/png-diagrams/protocol.png b/src/png-diagrams/protocol.png new file mode 100644 index 0000000..f6bfd4f Binary files /dev/null and b/src/png-diagrams/protocol.png differ diff --git a/src/png-diagrams/tls12-multiround.png b/src/png-diagrams/tls12-multiround.png new file mode 100644 index 0000000..5bd0457 Binary files /dev/null and b/src/png-diagrams/tls12-multiround.png differ diff --git a/src/png-diagrams/transcript.png b/src/png-diagrams/transcript.png new file mode 100644 index 0000000..df738b2 Binary files /dev/null and b/src/png-diagrams/transcript.png differ diff --git a/src/protocol/notarization/README.md b/src/protocol/notarization/README.md index 286b068..c8acb0c 100644 --- a/src/protocol/notarization/README.md +++ b/src/protocol/notarization/README.md @@ -20,7 +20,7 @@ The `Notary` is the party of which the authenticity of the `Transcript` relies o The `Server` can be any server which supports TLS. The TLSNotary protocol is entirely transparent to the `Server`, thus it can not be censored nor does it have to support any additional functionality. - + ## Transcript @@ -29,4 +29,4 @@ The primary artifact generated from this phase is called the `Transcript`. It co > Note that the server ephemeral key does not reveal the identity of the server to the `Notary`. - \ No newline at end of file + \ No newline at end of file diff --git a/src/tlsnotary_overview.png b/src/tlsnotary_overview.png deleted file mode 100644 index 8b12fd1..0000000 Binary files a/src/tlsnotary_overview.png and /dev/null differ