diff --git a/diagrams/convert_all.sh b/diagrams/convert_all.sh
index 5bbe1d0..b59c153 100755
--- a/diagrams/convert_all.sh
+++ b/diagrams/convert_all.sh
@@ -1,8 +1,10 @@
#!/bin/bash
+FORMAT="svg"
+
# 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/")
+TARGET_DIR=$(realpath "$(dirname "$0")/../src/diagrams/")
OS=$(uname)
case "$OS" in
@@ -21,6 +23,13 @@ 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"
+ SOURCE="$file"
+ TARGET="${TARGET_DIR}/${file%.drawio}.${FORMAT}"
+ # Only convert if the source is more recent than the target
+ if [[ "$SOURCE" -nt "${TARGET}" ]]; then
+ "$DRAW_IO" --export --format ${FORMAT} --scale 2.5 -o "${TARGET}" "$SOURCE"
+ # add styling for dark mode (https://github.com/jgraph/drawio-github/blob/master/DARK-MODE.md)
+ sed -i -e "s$$$" "${TARGET}"
+ fi
done
popd >/dev/null
diff --git a/diagrams/overview3.drawio b/diagrams/overview3.drawio
index 5bb99a9..d381b36 100644
--- a/diagrams/overview3.drawio
+++ b/diagrams/overview3.drawio
@@ -51,10 +51,10 @@
-
+
-
+
@@ -69,7 +69,7 @@
-
+
diff --git a/src/diagrams/README.md b/src/diagrams/README.md
new file mode 100644
index 0000000..f62a008
--- /dev/null
+++ b/src/diagrams/README.md
@@ -0,0 +1 @@
+The files in this folders are generated. See `../../diagrams/convert_all.sh`
\ No newline at end of file
diff --git a/src/diagrams/client-state-diagram.svg b/src/diagrams/client-state-diagram.svg
new file mode 100644
index 0000000..1fd6d00
--- /dev/null
+++ b/src/diagrams/client-state-diagram.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/src/diagrams/crate_structure.svg b/src/diagrams/crate_structure.svg
new file mode 100644
index 0000000..eb971d5
--- /dev/null
+++ b/src/diagrams/crate_structure.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/src/diagrams/data_provenance.svg b/src/diagrams/data_provenance.svg
new file mode 100644
index 0000000..68be7ce
--- /dev/null
+++ b/src/diagrams/data_provenance.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/src/diagrams/data_provenance_none.svg b/src/diagrams/data_provenance_none.svg
new file mode 100644
index 0000000..737ca75
--- /dev/null
+++ b/src/diagrams/data_provenance_none.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/src/diagrams/data_provenance_oauth.svg b/src/diagrams/data_provenance_oauth.svg
new file mode 100644
index 0000000..ae9b511
--- /dev/null
+++ b/src/diagrams/data_provenance_oauth.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/src/diagrams/data_provenance_tlsn.svg b/src/diagrams/data_provenance_tlsn.svg
new file mode 100644
index 0000000..ab708b4
--- /dev/null
+++ b/src/diagrams/data_provenance_tlsn.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/src/diagrams/data_provenance_ultimate.svg b/src/diagrams/data_provenance_ultimate.svg
new file mode 100644
index 0000000..908bfe4
--- /dev/null
+++ b/src/diagrams/data_provenance_ultimate.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/src/diagrams/gc-types.svg b/src/diagrams/gc-types.svg
new file mode 100644
index 0000000..3d8561a
--- /dev/null
+++ b/src/diagrams/gc-types.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/src/diagrams/intro-diagram.svg b/src/diagrams/intro-diagram.svg
new file mode 100644
index 0000000..14d2e9d
--- /dev/null
+++ b/src/diagrams/intro-diagram.svg
@@ -0,0 +1,3 @@
+
+
+
TLSNotary Protocol Overview
TLSNotary Protocol Overview
Web Server
Web Server
User
User
Notary
Notary
Notary Public Key Share
Notary Public Key Sha...
Combined PK =
User Public Key Share +
Notary Public Key Share
Combined PK =...
Web Server Public Key
Web Server Public Key
Web Server Public Key
Web Server Public Key
Key Exchange
Key Exchange
Point Addition
Point Addition
PMSLabel
Computation
PMSLabel...
Session Key Derivation
Session Key Derivation
Master Key
Master Key
Session Key
Session Key
Encrypt Request
Encrypt Request
Encrypt
Encrypt
Compute MAC
Compute MAC
PMS EC Additive Share
PMS EC Additive Share
Decrypt Response
Decrypt Response
Decrypt
Decrypt
Verify MAC
Verify MAC
PMS EC Additive Share
PMS EC Additive Share
Encoded PMS
Encoded PMS
Encoded PMS
Encoded PMS
Encoded PMS
Encoded PMS
Encoded PMS
Encoded PMS
Encoded Session Keys
Encoded Session Keys
Encoded Session Keys
Encoded Session Keys
Encoded Session Keys
Encoded Session Keys
Encoded Session Keys
Encoded Session Keys
Encrypted Request
Encrypted Request
Request
Request
Encrypted Request
Encrypted Request
Encoded Session Keys
Encoded Session Keys
Response
Response
Encrypted Response
Encrypted Response
Encrypted Response
Encrypted Response
Encoded Session Keys
Encoded Session Keys
Encrypted Request
Encrypted Request
Encrypted Response
Encrypted Response
Sign Transcript
Sign TranscriptText is not SVG - cannot display
\ No newline at end of file
diff --git a/src/diagrams/key_exchange.svg b/src/diagrams/key_exchange.svg
new file mode 100644
index 0000000..49f9e7a
--- /dev/null
+++ b/src/diagrams/key_exchange.svg
@@ -0,0 +1,3 @@
+
+
+
Requester
Requester
Server
Server
Notary
Notary
Server Public Key
Serv...
Server Public Key
Serv...
Notary Public Key
Nota...
Notary Public Key
Nota...
Requester Public Key
Requ...
Secure 2PC
Secure 2PC
PMS Key Share
PMS...
PMS Key Share
PMS...
Requester Private Key
Requ...
Notary Private Key
Nota...
PMS Key
PMS...Text is not SVG - cannot display
\ No newline at end of file
diff --git a/src/diagrams/overview.svg b/src/diagrams/overview.svg
new file mode 100644
index 0000000..cd794e6
--- /dev/null
+++ b/src/diagrams/overview.svg
@@ -0,0 +1,3 @@
+
+
+
Selective Disclosure Phase
Selective Disclosure Phase
ZK Proof
ZK Proof
Verifier
Verifier
User
User
Notarized Transcript
Notarized Transcript
Transcript
Transcript
1010101010101 0101010101010 1010101110101
1010101010101...
Encrypted Data
Encrypted Data
Signature
Signature
Metadata
Metadata
0
0
Server
Server
User
User
Notary
Notary
Notarization Phase
Notarization Phase
Notarized Transcript
Notarized Transcript
Transcript
Transcript
1010101010101 0101010101010 1010101110101
1010101010101...
Encrypted Data
Encrypted Data
Signature
Signature
Metadata
Metadata
Transcript
Transcript
1010101010101 0101010101010 1010101110101
1010101010101...
Encrypted Data
Encrypted Data
Notarize
Notarize
Multi-party request
Multi-party r...Text is not SVG - cannot display
\ No newline at end of file
diff --git a/src/diagrams/overview2.svg b/src/diagrams/overview2.svg
new file mode 100644
index 0000000..2ed9092
--- /dev/null
+++ b/src/diagrams/overview2.svg
@@ -0,0 +1,3 @@
+
+
+
Server
Server
encrypted data
encrypted...
Notary
Notary
User
User
signed data
signed data
Verifier
VerifierText is not SVG - cannot display
\ No newline at end of file
diff --git a/src/diagrams/overview3.svg b/src/diagrams/overview3.svg
new file mode 100644
index 0000000..412997b
--- /dev/null
+++ b/src/diagrams/overview3.svg
@@ -0,0 +1,3 @@
+
+
+
User
User
Server
Server
Notary
Notary
blindly signed transcript
blindly...
Verifier
Verifier
request
request
notarize
notarize
redacted signed transcript
redacted...
selective disclosure
selectiv...
Multi party computation
Multi party computati...
1
1
2
2
3
3
4
4
verify
verifyText is not SVG - cannot display
\ No newline at end of file
diff --git a/src/diagrams/overview_notarization.svg b/src/diagrams/overview_notarization.svg
new file mode 100644
index 0000000..3f8f3a1
--- /dev/null
+++ b/src/diagrams/overview_notarization.svg
@@ -0,0 +1,3 @@
+
+
+
User
User
Server
Server
Notary
Notary
public key
public key
public key
public key
public key
public key
Multi-party request
Multi-party...
Multi-party key exchange
Multi-party...
encrypted request
encrypted request
encrypted response
encrypted response
Notarize
Notarize
combined public key
combined public key
Session Key
Se...
Session Key Share
Se...
Session Key Share
Se...
encrypted response
encrypted...
notarized transcript
notarized...
request
request
Request
Reque...
Notarize
Notar...Text is not SVG - cannot display
\ No newline at end of file
diff --git a/src/diagrams/protocol.svg b/src/diagrams/protocol.svg
new file mode 100644
index 0000000..088083a
--- /dev/null
+++ b/src/diagrams/protocol.svg
@@ -0,0 +1,3 @@
+
+
+
Server
Server
Requester
Requester
Notary
Notary
Private Key
Private Key
Private Key
Private Key
PMS Share
PMS Share
PMS Share
PMS Share
Secret Share PMS
Secret Share PMS
ClientHello
ClientHello
ServerHello
ServerHello
CF verify_data
CF verify_data
TLS 1.2 - Single-round
TLS 1.2 - Single-round
ClientFinished
ClientFinished
ServerFinished
ServerFinished
ServerCertificate
ServerCertificate
ServerKeyExchange
ServerKeyExchange
ServerHelloDone
ServerHelloDone
Notary Public Key
Notary Public Key
Server Public Key
Server Public Key
ClientKeyExchange
ClientKeyExchange
PMS Share
PMS Share
PMS Share
PMS Share
Key Shares
Key Shares
Key Shares
Key Shares
Secret Share Session Keys (PRF)
Secret Share...
Handshake Hash
Handshake Hash
Key Shares
Key Shares
CF verify_data
CF verify_data
Key Shares
Key Shares
Compute
ClientFinished
verify_data
Compute...
Key Shares
Key Shares
Key Shares
Key Shares
ClientFinished
ClientFinished
Encrypt
ClientFinished
Encrypt...
ClientCCS
ClientCCS
ServerCCS
ServerCCS
Key Shares
Key Shares
EncryptedRequest
EncryptedRequest
Requ
Requ
Request
Request
Key Shares
Key Shares
EncryptedRequest
EncryptedRequest
Encrypt
Encrypt
EncryptedRequest
EncryptedRequest
Response
Response
Commitment
Commitment
Generate
Commitment
Generate...
EncryptedResponse
EncryptedResponse
EncryptedResponse
EncryptedResponse
MAC Key share
MAC Key share
Verify MACs
Verify...
Key Shares
Key Shares
Decrypt Encrypted Response
Decrypt...
Commitment
Commitment
ClientCloseNotify
ClientCloseNotify
Verify ServerFinished
Verify...
Key Shares
Key Shares
Key Shares
Key Shares
SF verify_data
SF verify_data
Handshake Hash
Handshake Hash
Compute
ServerFinished
verify_data
Compute...Text is not SVG - cannot display
\ No newline at end of file
diff --git a/src/diagrams/transcript.svg b/src/diagrams/transcript.svg
new file mode 100644
index 0000000..58b5ef9
--- /dev/null
+++ b/src/diagrams/transcript.svg
@@ -0,0 +1,3 @@
+
+
+
Transcript
Transc...
Commitments
Commitments
0
0
1
1
2
2
3
3
ServerRandom
ServerRandom
HandshakeData
HandshakeData
ProtocolVersion
ProtocolVersion
CipherSuite
CipherSuite
CommitmentScheme
CommitmentScheme
Header
Header
Timestamp
Timestamp
SessionSecrets
Sessio...
ServerCertificate
ServerCertificate
ApplicationData
ApplicationData
Email
Email
Password
Password
Request: Login
Request: Login
AccessToken
AccessToken
RefreshToken
RefreshToken
Response: Success
Response: Success
UserId
UserId
Request: Get Profile
Request: Get Profile
AccessToken
AccessToken
UserId
UserId
LegalName
LegalName
Address
Address
Response: Profile
Response: Profile
UserId
UserId
ClientRandom
ClientRandom
ServerEphemeralKey
ServerEphemeralKey
NotarizedTranscript
NotarizedTranscript
NotarySignature
NotarySignature
NotaryId
NotaryId
NotaryCertificate
NotaryCertificateText is not SVG - cannot display
\ No newline at end of file
diff --git a/src/intro.md b/src/intro.md
index 4efc5b2..40a6628 100644
--- a/src/intro.md
+++ b/src/intro.md
@@ -16,7 +16,7 @@ The TLSNotary protocol consists of 4 steps:
3. The `User` **selectively discloses** the data to the `Verifier`.
4. The `Verifier` **verifies** the data.
-
+
### ① Multi-party TLS Request
diff --git a/src/motivation.md b/src/motivation.md
index ce531bb..5a6cf6a 100644
--- a/src/motivation.md
+++ b/src/motivation.md
@@ -8,7 +8,7 @@ Data provenance will make data truly portable, empowering users to share it with
## Non-repudiation: TLS is not enough
-
+
Transport Layer Security (TLS) plays a crucial role in digital security. TLS protects communication against eavesdropping and tampering. It ensures that the data received by the `User` indeed originated from the `Server` and was not changed. The `Server`'s identity is verified by the `User` through trusted Certificate Authorities (CAs). Data integrity is maintained by transmitting a cryptographic hash (called Message Authentication Code or MAC in TLS) alongside the data, which safeguards against deliberate alterations.
@@ -20,7 +20,7 @@ While the concept seems straightforward, enabling servers to sign data is not a
## Status Quo: delegate access
-
+
Currently, when a `User` wants to share data from a `Server` with another party, OAuth can be used to facilitate this if the application supports it. In this way, the other party receives the data directly from the `Server`, ensuring authentic and unchanged data. However, applications often do not provide fine-grained control over which data to share, leading to the other party gaining access to more information than strictly necessary.
@@ -30,7 +30,7 @@ It's worth noting that in many instances, OAuth is not even presented as an opti
## TLSNotary: data provenance and privacy with secure multi-party computation
-
+
TLSNotary operates by introducing a third party, the `Notary`, into the usual TLS connection between the `User` and a `Server`. This `Notary` is **not an intermediary**. Instead, the `Notary` participates in a **secure multi-party computation** (MPC) to jointly manage the TLS connection without ever viewing the data in plain text; the `Notary` only has access to encrypted data. Furthermore, as the `Notary` only possesses the ephemeral keys of the `Server`, it remains unaware of which `Server` the `User` is communicating with.
diff --git a/src/mpc/key_exchange.md b/src/mpc/key_exchange.md
index 5712a5e..2f03f34 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/overview.md b/src/overview.md
index b8b3c5d..50042cf 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.
-
+
diff --git a/src/png-diagrams/client-state-diagram.png b/src/png-diagrams/client-state-diagram.png
deleted file mode 100644
index dfe5ee1..0000000
Binary files a/src/png-diagrams/client-state-diagram.png and /dev/null differ
diff --git a/src/png-diagrams/crate_structure.png b/src/png-diagrams/crate_structure.png
deleted file mode 100644
index 51f0525..0000000
Binary files a/src/png-diagrams/crate_structure.png and /dev/null differ
diff --git a/src/png-diagrams/data_provenance.png b/src/png-diagrams/data_provenance.png
deleted file mode 100644
index db8e6ad..0000000
Binary files a/src/png-diagrams/data_provenance.png and /dev/null differ
diff --git a/src/png-diagrams/data_provenance_none.png b/src/png-diagrams/data_provenance_none.png
deleted file mode 100644
index 1e99506..0000000
Binary files a/src/png-diagrams/data_provenance_none.png and /dev/null differ
diff --git a/src/png-diagrams/data_provenance_oauth.png b/src/png-diagrams/data_provenance_oauth.png
deleted file mode 100644
index 1b98a10..0000000
Binary files a/src/png-diagrams/data_provenance_oauth.png and /dev/null differ
diff --git a/src/png-diagrams/data_provenance_tlsn.png b/src/png-diagrams/data_provenance_tlsn.png
deleted file mode 100644
index 725f8d5..0000000
Binary files a/src/png-diagrams/data_provenance_tlsn.png and /dev/null differ
diff --git a/src/png-diagrams/data_provenance_ultimate.png b/src/png-diagrams/data_provenance_ultimate.png
deleted file mode 100644
index 87f3fb9..0000000
Binary files a/src/png-diagrams/data_provenance_ultimate.png and /dev/null differ
diff --git a/src/png-diagrams/gc-types.png b/src/png-diagrams/gc-types.png
deleted file mode 100644
index b3d0bcc..0000000
Binary files a/src/png-diagrams/gc-types.png and /dev/null differ
diff --git a/src/png-diagrams/intro-diagram.png b/src/png-diagrams/intro-diagram.png
deleted file mode 100644
index 2121b4c..0000000
Binary files a/src/png-diagrams/intro-diagram.png and /dev/null differ
diff --git a/src/png-diagrams/key_exchange.png b/src/png-diagrams/key_exchange.png
deleted file mode 100644
index 48db956..0000000
Binary files a/src/png-diagrams/key_exchange.png and /dev/null differ
diff --git a/src/png-diagrams/overview.png b/src/png-diagrams/overview.png
deleted file mode 100644
index 53da54b..0000000
Binary files a/src/png-diagrams/overview.png and /dev/null differ
diff --git a/src/png-diagrams/overview2.png b/src/png-diagrams/overview2.png
deleted file mode 100644
index 5e8ebb7..0000000
Binary files a/src/png-diagrams/overview2.png and /dev/null differ
diff --git a/src/png-diagrams/overview3.png b/src/png-diagrams/overview3.png
deleted file mode 100644
index d2e6f46..0000000
Binary files a/src/png-diagrams/overview3.png and /dev/null differ
diff --git a/src/png-diagrams/overview_notarization.png b/src/png-diagrams/overview_notarization.png
deleted file mode 100644
index f1ab879..0000000
Binary files a/src/png-diagrams/overview_notarization.png and /dev/null differ
diff --git a/src/png-diagrams/protocol.png b/src/png-diagrams/protocol.png
deleted file mode 100644
index f6bfd4f..0000000
Binary files a/src/png-diagrams/protocol.png and /dev/null differ
diff --git a/src/png-diagrams/tls12-multiround.png b/src/png-diagrams/tls12-multiround.png
deleted file mode 100644
index 5bd0457..0000000
Binary files a/src/png-diagrams/tls12-multiround.png and /dev/null differ
diff --git a/src/png-diagrams/transcript.png b/src/png-diagrams/transcript.png
deleted file mode 100644
index df738b2..0000000
Binary files a/src/png-diagrams/transcript.png and /dev/null differ