Skip to content

Commit

Permalink
docs: add About section to frontend README
Browse files Browse the repository at this point in the history
  • Loading branch information
csirianni committed Dec 24, 2023
1 parent 143deb1 commit f7c50a7
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 8 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ If the set intersection is non-empty, the user's password is compromised and sho

### Performance Optimization

The initial PSI implementation unreasonably increases critical path latency due to the size of the breached password dataset. To address this challenge, [k-anonymity](https://en.wikipedia.org/wiki/K-anonymity) is used. Passwords are partitioned in $k$ buckets based on one or more leaked bytes. Given $n$ leaked bytes, there are $\left[0, (2^8)^n - 1\right]$ buckets. The client generates a partition index using $n$ leaked bytes, and then the server returns a smaller subset of dataset. The result is a decrease in the number of serialized passwords per request and faster processing times.
The initial PSI implementation unreasonably increases critical path latency due to the size of the breached password dataset. To address this challenge, [k-anonymity](https://en.wikipedia.org/wiki/K-anonymity) is used. Passwords are partitioned in $k$ buckets based on one or more leaked bytes. Given $n$ leaked bytes, there are $\left[0, (2^8)^n - 1\right]$ buckets. The client generates a partition index using $n$ leaked bytes, and then the server returns a smaller subset of the dataset. The result is a decrease in the number of serialized passwords per request and faster processing times.

This feature involves a tradeoff between user privacy and application performance. The key assumption is that the number of breached passwords is sufficiently large to not reveal identifiable information about individual users. Since real breached password datasets contain billions of passwords [[1](https://www.wired.com/story/collection-leak-usernames-passwords-billions/)], each bucket contains millions of passwords. Thus, the assumption holds and the increased leakage involves neglible privacy risk.

Expand Down
16 changes: 9 additions & 7 deletions frontend/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
# Frontend

Made with [Next.js](https://nextjs.org/).
## About

The frontend renders the client web application and computes the private set intersection. It is made with [Next.js](https://nextjs.org/), [Tailwind](https://tailwindcss.com/), and [MaterialUI](https://mui.com/material-ui/).

![Sign up page](https://private-user-images.githubusercontent.com/54677998/292690961-d57e9890-6ab3-423f-a7d5-cdf97a930296.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDM0NTY0ODUsIm5iZiI6MTcwMzQ1NjE4NSwicGF0aCI6Ii81NDY3Nzk5OC8yOTI2OTA5NjEtZDU3ZTk4OTAtNmFiMy00MjNmLWE3ZDUtY2RmOTdhOTMwMjk2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzEyMjQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMjI0VDIyMTYyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ1MGVjYjYyZDI2YzBjZDViNDA2NDA4ZmVlYmZmOGYxZGUzNGJkNGQ1MzA3YWU4MWU1NWE1MDVkNGMzMjkzM2MmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.eKUqj75wRCM9ojMaOJ-8D6NiPxvvlyZGCuswqyeDRpQ)

Note that a password must satisfy the listed requirements before the user can click "Sign Up."

## Configuration

Make sure you have [Yarn](https://yarnpkg.com/) and [Node](https://nodejs.org/en) installed.

To run the frontend server, use your preferred terminal to `cd` into `/frontend` and then install the required packages by running

```bash
Expand All @@ -17,9 +25,3 @@ yarn dev
```

Open [http://localhost:3000](http://localhost:3000) to view it in the browser. The page will reload if you make edits.

## Deploy on Vercel

The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.

Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.

0 comments on commit f7c50a7

Please sign in to comment.