Programming and reading.

  • 0 Posts
  • 19 Comments
Joined 2 years ago
cake
Cake day: June 26th, 2023

help-circle


  • I would be very interested in that book. My university did not provide explicit book sources, so I can’t tell you what that is based on, but here are the relevant slides (from page 9). Server-side hashing is so ubiquitous as the standard that e.g. OWASP cheat sheet doesn’t even explicitly say it, but their recommendations hint at it.

    A quick google search on the topic revealed others with the same opinion: stackoverflow stackoverflow. The second link (accepted answer in the same thread) argues that with a protocol around it, it can make sense, but never in the situation described here. There needs to be a meaningful computation on the server’s side, otherwise the described scenario can happen.

    It’s a bit difficult to find papers on that because server-side hashing is standard, but here, for example, is a paper that explores client-side hashing (see the introduction with a reference to server-side hashing and section 2): Client Password Hashing paper. Very interesting is also section 3.4. Similar paper: Client-side hashing for efficient typo-tolerant password checkers. Essentially, both suggest that to avoid the described attack, both server-side and client-side hashing is necessary (but the server-side hash can be weaker), see “Authentication attacks after leaks”. Neither paper describes how the client-side hashing is done on the Chinese websites they mention.

    You’ll also find that many frameworks (e.g. ASP.NET, Laravel) implement server-side hashing.

    My conclusion from the little research I did after your prompt is that client-side hashing can work, but it’s dangerous if done incorrectly (e.g. when done as suggested above), due to the scenario I described.



  • No, it is not. If the server accepts the hash from an untrusted source (the client), then that’s equivalent to not using hashes at all. The reason why we hash is so a database leak does not allow malicious actors to login directly. If the server accepts a hash, that means it only does hash_from_client == hash_from_db, meaning that’s the same as doing password_from_client == password_from_db in terms of security. This is because the client can just send the hash from the DB, the user does not actually need to know the password, hence your proposal is equivalent to not using hashes at all in terms of security.

    The point of sending hashes info from the client is that each site uses a different key, even if publicly available. This means that leaked login data cannot be compared or matched across different leaks.

    That is for keyed hash functions, which is not typically done for passwords (but peppers are sometimes used, which helps similarly). This does not prevent the above scenario, though, because the leaked hash can still be used on that site. Sending hashes is a bad idea, the hash should always be computed in a trusted environment to ensure the user actually knows the password.










  • From what I can tell, OnlyOffice has the best compatibility and the nicest UI (similar to MS office), same as with the regular applications. NextCloud Office is based on LibreOffice (officially Collabora, which is their name for the web product), so again same as the regular applications you’ll have some compatibility issues. That said, if you don’t need compatibility with existing documents or only documents made with LibreOffice, either is fine.

    One concern many have is that OnlyOffice is closed source (edit: my bad, it’s been open-source for a long time) and russian based (edit: partially russian, see Wikipedia), while LibreOffice is open source.