P

PassWorlds

Blockhchain based Passwords Manager

P

PassWorlds

Blockhchain based Passwords Manager

The problem PassWorlds solves

In the digital age, people tend to have multiple credentials on multiple platforms and to automate the process there are centralized password managers available. But with the power of immutability and decentralization of blockchain, we provide a trustless service to handle your credentials.
We provide a trustless service as there is no 3rd party agent involved. It is safe as all the credentials are encrypted using symmetric encryption. It is reliable as all the data is stored in a decentralized way using IPFS. It is accessible as there is not seperate platform but a chrome extension to use the service.It is efficient considering the scalability factor, data gets stored off chain without compromising security.
Our extension workflow is as follows -

  1. User creates a new account, by generating mnemonic which are mapped to a pair of public and private key.
  2. An exisiting user, enters their mnemonic to enter.
  3. Once the keys are generated, user can add website, username, password, which they want to manage. The 3 parameters are encrypted and stored on the blockchain.
  4. The password selected by user, is symettrically encrypted using their private key, which is only visible to them. This encrypted file is stored on the IPFS, which in itself is decentralised as well. This IPFS hash for the file, is mapped against their public key.
  5. Next time, user is on a page and activates the extension, it detects the url, and the public key which is queried on the blockchain, and fetches an IPFS hash. Which inturn fetches an encrypted file.
  6. This encrypted file is decrypted using the private key of the user, which is visible only to the user. The final url, username and password are automatically filled in the appropriate pages.
    The above flow, assures that there is no middleman required, the process cannot be tampered with and is decentralised.

Challenges we ran into

The biggest problem we faced was, coding the whole thing using client side, vanilla javascript, which is normally not the way to go. Added to that the added complexity of coding a Dapp on the clientside, no npm, no require, no imports, the problem was grave ! Initially we started looking for CDN's to include in our JS, and almost found each one of the needed, but couldn't find any which built truffle-hdwallet-provider correctly. Finally, what helped was Browserify, which basically converts and links all of the required and import files.
Another issue we ran into was, Chrome Extension, it was our first time working with them, so we didn't really have an idea where and how the scripts work. There are separate scripts for the extension control and separate for the page control (content scripts), Communicating between the extension and page, also where to include the scripts, was a problem initially, we accomplised it by reading about it online, and experimenting with it.
Apart from the above two, there were quite a few issues, such as deploying smart contract, working with IPFS, among others.

Discussion