Giter Club home page Giter Club logo

nfvault's Introduction

NFVault

A Near-Field Communication (NFC) based authenticator

Table of Contents
  1. Prerequisites
  2. ## Usage

State of this Project

Goal

I set out to create a small portable device which, upon recognising an NFC, could login to devices or sites in a rapid and secure manner. Most such Arduino-based solutions stored passowrds in plaintext, allowing for easy reading of the authentication data from the microcontroller, not to mention the overall inflexibility of most of these solutions with regards to password management.

Current Functionality

At present, it is possible to use any number of different tag UIDs to type out any one of multiple passwords (albeit assuming the same general behaviour for log in/out). Most importantly however, the passwords are sored encrypted with AES 128-bit encryption and as such are unreadable from the microcontroller code.

To Implement

Need to allow for multiple log IN/OUT behaviour, permitting for use to authenticate both devices, websites, apps, etc.

Usage

Theory

The theory behid the NFVault is quite simple: the arduino uses the tags' UIDs to decrypt the corresponding password cyphertexts stored on the Arduino and then types those passwords out acting as a pseudo-keyboard on the computer it is plugged into.

Practice

First, to create the cyphertext which the NFVault will store one runs AES_config.ino on the hardware, after inserting one's password in the code, observing the serial output while reading different tags will output HEX cyphertext to be stored on the final device program (nfvault.ino).

Then, you can add these newly generated cyphertextsto to the password 3-D array in the nfvault.ino script, each row (X) corresponding to a passowrd and each column (Y) to a (Z) 16-byte cyphertext of said password encrypted with a given tag's UID. When reading a tag the Arduino will loop through every password and attempt to decrypt every encryted variation thereof, if a decrypted text is all-ASCII, the corresponding plaintext is typed out! If the tag in question is tapped again, the prescibed log out script is then run. A sleep timeout is implemented but commented out, uncommeting said code will automatically assume a logout after the sleep_timeout in seconds (customisable).

Demo

demo.mov

nfvault's People

Contributors

ftondolo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.