Final Documentation

Twitter:

Exploration into chess as a password alternative.

Concept:

For the final project I tried to explore the opportunities in tangible interfaces as a password alternative. I have chosen to use chess for this purpose because of several reasons:

  • It is something I know quite well and would therefore not be an obstacle in the project
  • My assumption was that chess would provide enough options to be a feasible password (the assumption was that the combinatory would be in my favor)
  • Worst case scenario I could quite easily move everything into a total virtual interface.

Prototype:

The final prototype is a chess GUI that acts as a password alternative for a bitcoin wallet. The prototype is fully working with the exception of some bugs (with regard to invalid moves in case of check). After a certain amount of moves the website will open and the person has the chance to paste the password from the clipboard when prompted. When done the correct moves the password is accepted, otherwise not.

The prototype consists out of three main parts:

  • Movement detection
    1. In case of the tangible interface I would have used a raspberry pi with the piCamera and openCV. I have gotten the openCV working in python but the road to there was too long and hard to have enough time to further develop this concept. There were quite some problems I ran into with using a raspberryPi, which were mainly due in my ignorance of using the raspberryPi. Though I could not continue with this till the stage I wanted to, I definitely will use the raspberryPi in the future and will be able to set it up far quicker now. The problem I ran into were:
      1. Connecting to the internet (computer services was not very helpful with registering my raspberryPi)
      2. I had bought a 4GB SD card, this proofed too small to install everything I needed
  • The piCamera does not work with processing as I initially had intended.
  1. In my final prototype (GUI-based) I used the computer mouse as an input device. The user would click on the square he/she wants to move from and click again on the square where the user want to move the piece to.
  • Visualization/Final unlockable/Password generation
    1. There must be something to unlock in order to use a password. In the final deliverable this was a bitcoin wallet. Each move generated a character. When the move was correct the correct character for the password would be generated, when the move was false a wrong character would be generated. This password would be copied to the clipboard so one could paste it on the bitcoin wallet site.

 

There are several improvements to be made here:

  1. I am quite sure there is a more interesting and effective way to generate a password. I just do not know how yet.
  2. I should make some kind of nice background visualization that shows the progress which is quite unclear now.
  • Chess engine
    1. The final part was the chess engine, instead of making my own (which would have been a far too hard challenge) I used to open source Sunfish engine by Thomas Ahle. Sunfish is written in python and generally regarded as the easiest engine to understand. It was written to be as few lines as possible. Since my final prototype was written in the processing IDE I created a localhost to communicate between the python and processing sketches.

 

Conclusion:

My conclusion for the complete assignment was that was a nice exercise for me and I certainly have learned a lot, yet it is nowhere near what I was hoping to deliver. I think this could have been solved by not underestimating the amount of time it takes to learn a new technology.

It is a shame that I could not get to exploring tangible interfaces as a password alternative, but only chess as a password alternative. This, at least for me, looked promising.

Github: https://github.com/tlangerak/Chess_Encryption

Video: