Skip to content

kartikgulia/Sparkles

Repository files navigation

Lava Lamp Secure Key Password Project

Password generated by computers, i.e. rand() aren't actually random, but psuedorandom algorithms generating theoretically predictable values. Our product is an innovate and cheap solution to generate truely random passwords, using our custom algorithm paired with the movements of a lava lamp. Lava Lamps have colorful blobs, high entropy, and unpredictable movements. By capturing its movements and converting it into a alpha-numeric password, our project ensures a truely random password is generated for any user that cannot be compromised

Our core design principle was the concept of a Entropy Pool, which commbines many sources of entropy to ensure randomness and protect aganist compromised entropy sources.

Screenshot 2024-03-05 at 1 15 37 PM

Presentation Slides: https://docs.google.com/presentation/d/1EIy8LIbipyi1lDbUQc2crH4B44QuDY-TR8yPyWPd7V0/edit?usp=sharing

Algorithim Pipeline:

Psuedocode Input: 1 x (int) length of password, 4 x (int[][][]) RGB pictures

Psuedocode Output: 1 x (string) password

1) Capture and Encode Movements

  • Purpose: Efficently capture and encode movements of material in lava lamps.
  • Psuedocode: Take 4 pictures spaced over X seconds —> Grey scale images(opencv) —> Compute transition change frames(1->2, 3->4) between pictures(opencv absdiff()) —> stack transition frames
  • Output: 3D matrix

2) Signal Processing (Dimensionality Reduction)

  • Purpose: Processing data to a lower dimension, low-rank matrix, and ensure high variance in output.
  • Psuedocode: Perform SVD (approximate matrix) on 3D matrix from previous step. Use vT from output from now on.
  • Psuedocode Output: 2D matrix

3) Uniform Sampling

  • Purpose: Funneling processed data, into a single array, in an unpredictable way.
  • Psuedocode: Utilize the Reservior Sampling Algorithm to uniformly sample data from previous step.
  • Psuedocode Output: 1D matrix (Length of Password)

4) Crafting Password Characters

  • Purpose: Converting each element(double data type) in the 1D matrix(from above) into characters .
  • Psuedocode: Convert doubles to ints -> select all_characters[int % (array size)] for each value in array. all_characters has a-z, A-Z, 0-9, !@#$%^&()+){}<>?|=[];/ and/or 85 characters to chose from.
  • Psuedocode Output: Password

About

Lava Lamp Secure Key Password

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published