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?

What it does

Turns the old school authentication concept of a "secret handshake" into a modern and legitimate authentication process using modern techniques. It makes casual transactions much more entertaining and is already inline 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 locally stored) which would then only 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: