Skip to content

More cryptographically secure hash #116

@joeskeen

Description

@joeskeen

Is your feature request related to a problem? Please describe.

The built-in backdoor for libki-client to exit without authenticating with the server uses md5 hashing with no salt. Any user of the system that can get to the Libki Client config file can see the hash and the explanation. As md5 has been around a long time, it has become trivial to defeat any security using this hashing algorithm. For example:

image

Here is the official OWASP report on this subject: https://owasp.org/www-project-mobile-top-10/2016-risks/m5-insufficient-cryptography.

Describe the solution you'd like

Methods for securely storing hashed passwords are described in the OWASP cheat sheets: https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html#methods-for-enhancing-password-storage. In summary:

  • Use salt and/or pepper in addition to hashing
  • Use a secure password hashing algorithm, such as Argon2id, scrypt, bcrypt, or PBKDF2.

When implementing a hash change, you also need to consider upgrading the existing hashes. OWASP has some guidance on this as well: https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html#upgrading-legacy-hashes.

Describe alternatives you've considered

In the short amount of time I've evaluated Libki for use in my computer lab, I have searched for ways to make it impossible for the user to discover the contents of the Libki configuration file; however, it seems that the user ends up with at least as much privilege as the Libki client executable, which means that there wouldn't be a way to make it readable from the Libki client, but restrict access from the user. But perhaps I'm wrong about that. I'd be thrilled to have that better explained to me.

Additional context

I'm excited to use Libki, but I want to make sure that my users (which so far will end up being my children and their friends) are unable to circumvent the restrictions I intend to put into place. If my kids turn out anything like me, these security measures will be insufficient to prevent abuse of the system. I can only assume that other use cases in libraries, internet cafes, etc. would suffer the same vulnerabilities, and the system could be compromised to for example run key loggers without anyone knowing.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions