Skip to content

Commit e85fb70

Browse files
committed
Website rewriting and reorganization
1 parent 8803bc7 commit e85fb70

16 files changed

Lines changed: 983 additions & 237 deletions

assets/screenshot-web.png

451 KB
Loading

caps-2025.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: CAPS 2025 Tutorial
33
layout: default
4-
nav_order: 7
4+
nav_order: 9
55
---
66

77
# CAPS 2025 Tutorial

functionality.md renamed to design.md

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,23 @@
11
---
2-
title: Engine Functionality
2+
title: Design
33
layout: default
44
nav_order: 3
55
---
66

7-
# Engine Functionality
7+
# Design
8+
9+
## Philosophy
10+
11+
ProofFrog takes a novel approach in that it focuses purely on high-level manipulations of games as abstract syntax trees (ASTs) instead of working at the level of logical formulae.
12+
Treating games as ASTs allows us to leverage techniques from compiler design
13+
and static analysis to prove output equivalence of games; thereby allowing us to demonstrate the validity of hops in a game sequence.
14+
The main technique used in our engine is to take pairs of game ASTs and perform a variety of transformations in an attempt to coerce each AST into a canonical form.
15+
If each pair of ASTs in a game hop can be made equivalent, then our proof engine can assert the validity of the hop.
16+
ProofFrog also targets ease of use: although it implements a domain-specific language that a user must learn, the language has an imperative C-like syntax that should be comfortable for the average cryptographer.
17+
Furthermore, it performs transformations to the ASTs with little user guidance which makes writing a proof in many cases as simple as just specifying the hops.
18+
Finally, the proof syntax attempts to closely mimic that of a typical pen-and-paper proof.
19+
20+
## Engine Functionality
821

922
A diagram for ProofFrog's engine functionality in full is presented below.
1023

@@ -20,7 +33,7 @@ A diagram for ProofFrog's engine functionality in full is presented below.
2033
- The "Remove Duplicated Fields" transformation searches each pair of fields in a game with the same type and unifies the values if it can be statically determined they share the same value throughout the game's entire lifetime
2134
- The "Apply User Assumptions" transformation utilizes assumptions about variables that a user can specify between pair of games to simplify conditions
2235
- "Apply Branch Elimination" takes branches where the conditions are `true` or `false` and simplifies them
23-
- "Remove Unnecessary Fields" deletes any fields that do not effect the return value of any oracle
36+
- "Remove Unnecessary Fields" deletes any fields that do not affect the return value of any oracle
2437
- "Canonicalize Returns" takes return statements that return variables and (when the value of the variable can be statically determined) rewrite them to return that variable
2538
- "Collapse Branches" takes adjacent if/else-if branches with identical blocks of code and rewrites them into one branch where the condition is the OR of the previous two conditions
2639
- "Simplify Not Operations" just takes `!(a == b)` and rewrites it to `a != b`

examples.md

Lines changed: 64 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
11
---
22
title: Examples
33
layout: default
4-
nav_order: 4
4+
nav_order: 6
55
---
66

77
# Examples
88

99
Below are a list of examples that ProofFrog can currently verify.
1010
Many are adapted from [The Joy of Cryptography](https://joyofcryptography.com/).
11-
In such cases, we will indicate which claim in the textbook is being proved.
11+
In such cases, we will indicate which claim in the textbook is being proved. References and examples are from the old PDF preview version, and need to be updated to the final print edition.
1212

1313
## One-Time Uniform Ciphertexts implies One-Time Secrecy
1414

1515
This proves [Theorem 2.15](https://joyofcryptography.com/pdf/book.pdf#page=49).
1616

17-
The proof file can be found [here](https://github.com/ProofFrog/examples/blob/main/Proofs/SymEnc/OTUC%3D%3EOTS.proof).
17+
The proof file can be found [here](https://github.com/ProofFrog/examples/blob/main/Proofs/SymEnc/OTUCimpliesOTS.proof).
1818

1919
## CPA$ Security implies CPA Security
2020

21-
This proves [Claim 7.3](https://joyofcryptography.com/pdf/book.pdf#page=145)
21+
This proves [Claim 7.3](https://joyofcryptography.com/pdf/book.pdf#page=145).
2222

23-
The proof file can be found [here](https://github.com/ProofFrog/examples/blob/main/Proofs/SymEnc/CPA%24%3D%3ECPA.proof).
23+
The proof file can be found [here](https://github.com/ProofFrog/examples/blob/main/Proofs/SymEnc/CPA%24impliesCPA.proof).
2424

2525
## Composing Two Symmetric Encryption Schemes for One-Time Uniform Ciphertexts
2626

@@ -35,13 +35,16 @@ This proof analyzes a symmetric encryption scheme {% katex %}\Sigma{% endkatex %
3535
\Sigma.\mathrm{Dec}((k_S, k_T), c) = S.\mathrm{Dec}(k_S, T.\mathrm{Dec}(k_T, c))
3636
{% endkatex %}
3737

38-
If {% katex %}T{% endkatex %} has one-time uniform ciphertexts, then so does {% katex %}\Sigma{% endkatex %}. The proof file can be found [here](https://github.com/ProofFrog/examples/blob/main/Proofs/SymEnc/GeneralDoubleOTUC.proof)
38+
If {% katex %}T{% endkatex %} has one-time uniform ciphertexts, then so does {% katex %}\Sigma{% endkatex %}. The proof file can be found [here](https://github.com/ProofFrog/examples/blob/main/Proofs/SymEnc/GeneralDoubleOTUC.proof).
39+
40+
## OTUC implies Double OTUC
41+
42+
If a symmetric encryption scheme has one-time uniform ciphertexts, then the double encryption scheme (composing two copies of it) also has one-time uniform ciphertexts. The proof file can be found [here](https://github.com/ProofFrog/examples/blob/main/Proofs/SymEnc/OTUCimpliesDoubleOTUC.proof).
3943

4044
## Composing Two Symmetric Encryption Schemes for CPA$ security
4145

4246
This proof analyzes the same encryption scheme {% katex %}\Sigma{% endkatex %} as in the prior heading. If {% katex %}T{% endkatex %} is CPA$ secure, then so is {% katex %}\Sigma{% endkatex %}. The proof file can be found [here](https://github.com/ProofFrog/examples/blob/main/Proofs/SymEnc/DoubleCPA%24.proof).
4347

44-
4548
## Double One-Time Pad has One-Time Uniform Ciphertexts
4649

4750
This proves [Claim 2.13](https://joyofcryptography.com/pdf/book.pdf#page=45).
@@ -50,30 +53,79 @@ The proof file can be found [here](https://github.com/ProofFrog/examples/blob/ma
5053

5154
## Pseudo One-Time Pad has One-Time Uniform Ciphertexts
5255

53-
This proves [Claim 5.4](https://joyofcryptography.com/pdf/book.pdf#page=102)
56+
This proves [Claim 5.4](https://joyofcryptography.com/pdf/book.pdf#page=102).
5457

5558
The proof file can be found [here](https://github.com/ProofFrog/examples/blob/main/Book/5/5_3.proof).
5659

5760
## Pseudorandomness of a length-tripling PRG
5861

59-
This proves [Claim 5.5](https://joyofcryptography.com/pdf/book.pdf#page=105)
62+
This proves [Claim 5.5](https://joyofcryptography.com/pdf/book.pdf#page=105).
6063

6164
The proof file can be found [here](https://github.com/ProofFrog/examples/blob/main/Proofs/PRG/TriplingPRGSecure.proof).
6265

6366
## One-Time Secrecy implies CPA Security for Public Key Encryption Schemes
6467

65-
This proves [Claim 15.5](https://joyofcryptography.com/pdf/book.pdf#page=273)
68+
This proves [Claim 15.5](https://joyofcryptography.com/pdf/book.pdf#page=273).
6669

6770
The proof file can be found [here](https://github.com/ProofFrog/examples/blob/main/Proofs/PubEnc/OTSimpliesCPA.proof).
6871

72+
## KEM-DEM Hybrid Encryption is CPA secure
73+
74+
This proves CPA security of the hybrid public key encryption scheme constructed via the KEM-DEM paradigm, assuming CPA security of the KEM and one-time secrecy of the symmetric encryption scheme.
75+
76+
The proof file can be found [here](https://github.com/ProofFrog/examples/blob/main/Proofs/PubEnc/KEMDEMCPA.proof).
77+
6978
## Hybrid Encryption is CPA secure
7079

71-
This proves [Claim 15.9](https://joyofcryptography.com/pdf/book.pdf#page=279)
80+
This proves [Claim 15.9](https://joyofcryptography.com/pdf/book.pdf#page=279).
7281

7382
The proof file can be found [here](https://github.com/ProofFrog/examples/blob/main/Proofs/PubEnc/Hybrid.proof).
7483

7584
## Encrypt-then-MAC is CCA secure
7685

77-
This proves [Claim 10.10](https://joyofcryptography.com/pdf/book.pdf#page=205)
86+
This proves [Claim 10.10](https://joyofcryptography.com/pdf/book.pdf#page=205).
7887

7988
The proof file can be found [here](https://github.com/ProofFrog/examples/blob/main/Proofs/SymEnc/EncryptThenMACCCA.proof).
89+
90+
## Textbook Exercises
91+
92+
The following are ProofFrog proofs of exercises from [The Joy of Cryptography](https://joyofcryptography.com/).
93+
94+
### Exercise 2.13
95+
96+
One-time secrecy of the double symmetric encryption scheme. The proof file can be found [here](https://github.com/ProofFrog/examples/blob/main/Book/2_Exercises/2_13.proof).
97+
98+
### Exercise 2.14
99+
100+
An alternative characterization of one-time secrecy. Proved in both directions:
101+
[forward](https://github.com/ProofFrog/examples/blob/main/Book/2_Exercises/2_14_Forward.proof) and
102+
[backward](https://github.com/ProofFrog/examples/blob/main/Book/2_Exercises/2_14_Backward.proof).
103+
104+
### Exercise 2.15
105+
106+
Another alternative characterization of one-time secrecy. Proved in both directions:
107+
[forward](https://github.com/ProofFrog/examples/blob/main/Book/2_Exercises/2_15_Forward.proof) and
108+
[backward](https://github.com/ProofFrog/examples/blob/main/Book/2_Exercises/2_15_Backward.proof).
109+
110+
### Exercise 5.8
111+
112+
Security of various PRG constructions. Parts:
113+
[a](https://github.com/ProofFrog/examples/blob/main/Book/5_Exercises/5_8_a.proof),
114+
[b](https://github.com/ProofFrog/examples/blob/main/Book/5_Exercises/5_8_b.proof),
115+
[e](https://github.com/ProofFrog/examples/blob/main/Book/5_Exercises/5_8_e.proof),
116+
[f](https://github.com/ProofFrog/examples/blob/main/Book/5_Exercises/5_8_f.proof).
117+
Also, [Pseudo-OTP has OTUC](https://github.com/ProofFrog/examples/blob/main/Book/5_Exercises/5_8_PseudoOTP_OTUC.proof) (used in part e).
118+
119+
### Exercise 5.10
120+
121+
Security of a PRG construction. The proof file can be found [here](https://github.com/ProofFrog/examples/blob/main/Book/5_Exercises/5_10.proof).
122+
123+
### Exercise 7.13
124+
125+
An alternative characterization of CPA security. Proved in both directions:
126+
[forward](https://github.com/ProofFrog/examples/blob/main/Book/7_Exercises/7_13_Forward.proof) and
127+
[backward](https://github.com/ProofFrog/examples/blob/main/Book/7_Exercises/7_13_Backward.proof).
128+
129+
### Exercise 9.6
130+
131+
CCA$ security implies CCA security. The proof file can be found [here](https://github.com/ProofFrog/examples/blob/main/Book/9_Exercises/9_6_CCA%24impliesCCA.proof).

files/game.md

Lines changed: 0 additions & 42 deletions
This file was deleted.

files/index.md

Lines changed: 0 additions & 15 deletions
This file was deleted.

files/primitive.md

Lines changed: 0 additions & 27 deletions
This file was deleted.

files/proof.md

Lines changed: 0 additions & 57 deletions
This file was deleted.

files/scheme.md

Lines changed: 0 additions & 47 deletions
This file was deleted.

0 commit comments

Comments
 (0)