Skip to content

Commit 06fff36

Browse files
committed
More website updates
1 parent e85fb70 commit 06fff36

File tree

7 files changed

+30
-18
lines changed

7 files changed

+30
-18
lines changed

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: 9
4+
nav_order: 7
55
---
66

77
# CAPS 2025 Tutorial

design.md

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,37 @@
11
---
22
title: Design
33
layout: default
4-
nav_order: 3
4+
nav_order: 5
55
---
66

7-
# Design
7+
# Design of ProofFrog
88

99
## Philosophy
1010

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.
11+
Cryptographic proofs provide theoretical guarantees on the security of constructions, but human fallibility means that even expert-reviewed proofs may hide flaws or errors.
12+
Proof assistants are software tools built for formally verifying each step in a proof, and have the potential to prevent erroneous proofs from being published and insecure constructions from being implemented.
13+
Unfortunately, existing tooling for verifying cryptographic proofs has found limited adoption in the cryptographic community, in part due to concerns with ease of use.
14+
15+
ProofFrog is a tool for verifying transitions in cryptographic game-hopping proofs.
16+
It focuses on stating and justifying the validity of a sequence of games: verifying that the starting and ending games correctly match the security definition, and checking each hop as either an *interchangeability-based hop* (where the two adjacent games have zero distinguishing advantage, demonstrated by code equivalence) or a *reduction-based hop* (where the two adjacent games have bounded distinguishing advantage, justified by exhibiting a reduction to an assumed security property).
17+
The accumulation of bounded advantages and the assessment of the final security bound remain tasks for the proof's author.
18+
19+
To check interchangeability of two games, ProofFrog manipulates abstract syntax trees (ASTs) of games to arrive at a canonical form, instead of working at the level of logical formulae.
20+
Treating games as ASTs allows us to leverage techniques from compiler design and static analysis to prove output equivalence of games, thereby demonstrating the validity of hops in a game sequence.
21+
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 the two ASTs into canonical forms, which can then be compared.
22+
These transformations are performed on the AST with little user guidance, which makes writing a proof in many cases as simple as just specifying which reductions are being leveraged.
23+
24+
ProofFrog also targets ease of use: although it implements a domain-specific language that a user must learn, the language has an imperative C or Java-like syntax that should be comfortable for the average cryptographer.
25+
The proof syntax is intentionally designed for improved readability by closely mimicking that of a typical pen-and-paper proof.
26+
ProofFrog is aimed at an introductory audience: while its expressivity and scope are smaller than existing tools such as EasyCrypt and CryptoVerif, it prioritizes ease of use and has been able to verify game hop sequences from a wide swath of textbook-level proofs.
27+
28+
It is important to note that ProofFrog's engine does not have any formal guarantees: the soundness of its transformations has not been verified.
1929

2030
## Engine Functionality
2131

22-
A diagram for ProofFrog's engine functionality in full is presented below.
32+
Information about ProofFrog's engine can be found in [Ross Evans' master's thesis](https://uwspace.uwaterloo.ca/bitstream/handle/10012/20441/Evans_Ross.pdf) and [eprint 2025/418](https://eprint.iacr.org/2025/418).
33+
34+
A diagram summarizing ProofFrog's engine functionality is presented below.
2335

2436
![ProofFrog Functionality Diagram](/assets/diagram.png)
2537

examples.md

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

77
# Examples

guide.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Guide to Writing a Proof
33
layout: default
4-
nav_order: 4
4+
nav_order: 3
55
---
66

77
# Guide to Writing and Testing Proofs in ProofFrog

hacs-2024.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: HACS 2024 Exercise
33
layout: default
4-
nav_order: 8
4+
nav_order: 6
55
---
66

77
# HACS 2024 Exercises

hacs-2026/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: HACS 2026 Updates
33
layout: default
4-
nav_order: 10
4+
nav_order: 8
55
has_children: true
66
has_toc: false
77
---

index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: ProofFrog
2+
title: Home
33
layout: home
44
nav_order: 1
55
---
@@ -12,7 +12,7 @@ nav_order: 1
1212

1313
**A tool for checking transitions in cryptographic game-hopping proofs.**
1414

15-
ProofFrog checks the validity of transitions in cryptographic game-hopping proofs. Proofs are written in FrogLang, a domain-specific language for defining primitives, schemes, security games, and proof scripts. The engine checks each hop by manipulating abstract syntax trees into a canonical form, with some help from Z3 and SymPy.
15+
ProofFrog checks the validity of transitions in game-hopping proofs — the standard technique in provable security for showing that a cryptographic scheme satisfies a security property. Proofs are written in FrogLang, a domain-specific language for defining primitives, schemes, security games, and proofs. ProofFrog is [designed]({% link design.md %}) to handle introductory-level proofs, trading expressivity and power for ease of use. The ProofFrog engine checks each hop by manipulating abstract syntax trees into a canonical form, with some help from Z3 and SymPy. ProofFrog's engine does not have any formal guarantees: the soundness of its transformations has not been verified.
1616

1717
ProofFrog can be used via a command-line interface, a browser-based editor, or an MCP server for integration with AI coding assistants.
1818

0 commit comments

Comments
 (0)