Giter VIP home page Giter VIP logo

sqrlclient's People

Contributors

barnabycolby avatar

Watchers

 avatar  avatar  avatar

Forkers

lohanspies

sqrlclient's Issues

Secondary buttons do not look like buttons

The secondary buttons are designed simply as black text on a transparent background. In practice, although this looks nice, it confuses users who do not know that it is a button.

Add travis-ci integration

Assuming this is possible, it would be nice to have travis double check that the long running tests actually pass.

Add support for other devices

Currently the app has only been tested on a nexus 5. Other devices with different screen sizes, and different versions of Android should be tested.

Incorrect password lockout

For a local SQRL password lockout to occur on a user's smartphone, someone—presumably not the user—would have to fail several times to properly enter the correct password to unlock their identity. This might mean, for example, five failures, configurable by the user, and might also incorporate a “wrong guess” response delay during which the user-interface would be non-responsive. Since impersonation is considered a serious breach of security, once the count of successively incorrect passwords entered has hit its limit, the SQRL application will erase the user's master key by overwriting its entire 512-bits with all 1's. This special case can only occur in response to local password guessing. Subsequently, whenever the SQRL application sees that is has a master key of all 1's, the user interface will display a notice that the master key has been erased to protect the owner's identity due to excessive password guessing. Since this is a large inconvenience to the phone's owner, the mischievous guessing party will be notified when two, and one, guesses remain before the user's secure identity is erased from the device. The hope is that someone who is merely playing around (for example an innocent child) will cease guessing not wishing to cause the phone's owner undue trouble.
At the point of password lockout and secure deletion, the only recourse will be to allow the smartphone to re-scan a copy of the identity QR code and reenter the identity password. Since exported SQRL master key QR codes are securely encrypted, it would be safe to keep a copy in a wallet or purse if it seems likely that others might be tripping the security lockout frequently and/or being locked out until the identity could be reloaded would be a problem.

Investigate whether IMK is written into non-volatile memory

The SQRL protocol declares that the identity master key must never be written, even briefly, into non-volatile memory, only existing in RAM. Although the application never explicitly breaks this rule, some investigation needs to be carried out into whether Android breaks it. In particular, the unencrypted master key is passed between several Activities when the identity is first created, using the Parcelable interface to achieve this. It is possible that the master key could be written to disk as a side-effect. Better care could also be taken in regards to how long the decrypted key remains in RAM, as it currently exists until the garbage collector destroys it. Implementing a reference counter and forced delete of the key would be a much better and more secure solution.

Confirm site name activity not explained

Users were confused as to the purpose of the confirm site name activity, and in particular, what they were being asked to do and why. This could be solved with the addition of some explanation text.

Improve exception strategy

Currently, almost all of the exceptions used are checked exceptions, meaning that if an exception is thrown, the caller is forced to handle it before the code will successfully compile. This regularly results in a large list of exceptions that callers must handle, some of which should never occur, unless as a result of programmer error. This leads to developer frustration and lazy exception handling, lowering the overall code quality. It would be far better to throw unchecked exceptions in these situations. Some thought should also be given as to whether the caller can actually do anything to recover from the exception. In some cases, recovery is impossible and therefore the code should throw a runtime exception. At the highest possible level in the code, a try catch clause should be added to handle these unchecked exceptions, and display friendly error message to the user.

Add hint text to new identity name textview

On the create new identity activity, users were confused as to what the text box on this page was for. Adding some hint text to explain that their new identity name should go there would be useful.

Create new identity explanation text is wrong

The explanation text on the create new identity activity tells the user to shake and wave the phone until the progress bar turns green. The new colour scheme means that the progress bar no longer turns green. Either the explanation text should be updated to reflect reality or the bar should be updated to turn green.

Create new identity progress bar disappears too fast

The progress bar on the create new identity activity is replaced by a button once enough entropy has been collected. In practice, this happened so fast that users were confused by the explanation text as they couldn't see a progress bar. It would perhaps be better to show the progress bar in all green once it has finished and leave it on screen.

Confusing password strength meter

Almost all users experienced confusion in regards to the password strength meter. Its purpose was not obvious, and there was no textual content to inform the user that they needed the strength meter to completely fill before the application would allow them to proceed.

Improve entropy harvesting

Listen to security now episodes for guidance, for example, wifi, gps and other data should be harvested as well as not relying on the user to input good camera data.

Add README

Add a readme, describing the current state of the application as well as how to build and install it.

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.