Inspiration

Sending money and other transactions, especially amongst close friends, is cumbersome and not intuitive for people. You have to create accounts and find usernames/codes and remember complicated passwords. What if there was a way to capitalize on the trust that exists between close friends? This project takes inspiration from the practice of "dapping", a gesture-based greeting introduced by black American soldiers during the Vietnam War to express solidarity with one another. Dapping sequences can be quite complex and nuanced, facilitating discernment between those who know the gestures and those who don't.

What it does

Turns the old school authentication concept of a "secret handshake" into a legitimate authentication process using modern techniques. It makes casual transactions much more entertaining and is already aligned with human behavior. It also adds an additional layer of security (think like another form of Captcha). Dapmo requires a knowledge-based key (the gesture sequence) and a physical key (your phone as information is stored locally) which would then permit transactions with only one of your verified partners. All the while, the process is simpler for people.

How I built it

Used C for Pebble smart watch to log accelerometer data of a gesture sequence (secret handshake). The data was relayed to an Android phone which stored the training data. A new gesture sequence could then be recorded, and the Android phone could perform a fast dynamic time warping algorithm (with help of JavaML) to measure the similarity between the current gesture and the training gestures. If the match meets a threshold, the gesture is authenticated.

Challenges I ran into

Getting pebble and Android to communicate properly. Accelerometer data is quite noisy.

Accomplishments that I'm proud of

Built it by myself. Coded in C which I don't know.

What I learned

What dynamic time warping is and how it could used.

What's next for Dapmo

Integrated authentication with current transaction APIs (e.g. Square payments) or gaming/betting to make payments easier and fun. Add gyroscope data to perform sensor fusion and refine training/testing results.

Share this project:

Updates