diff --git a/README.md b/README.md index 9480497..fdf3433 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/frontend/README.md b/frontend/README.md index 3054e48..6c2e472 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -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 @@ -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.